Documentation
¶
Index ¶
- Constants
- type AuthStep
- func (s *AuthStep) Apply(ctx *tui.WizardContext)
- func (s *AuthStep) Complete() bool
- func (s *AuthStep) Icon() string
- func (s *AuthStep) Init() tea.Cmd
- func (s *AuthStep) Summary() string
- func (s *AuthStep) Title() string
- func (s *AuthStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)
- func (s *AuthStep) View(width int) string
- type ChannelStep
- func (s *ChannelStep) Apply(ctx *tui.WizardContext)
- func (s *ChannelStep) Complete() bool
- func (s *ChannelStep) Icon() string
- func (s *ChannelStep) Init() tea.Cmd
- func (s *ChannelStep) Summary() string
- func (s *ChannelStep) Title() string
- func (s *ChannelStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)
- func (s *ChannelStep) View(width int) string
- type CompressionStep
- func (s *CompressionStep) Apply(ctx *tui.WizardContext)
- func (s *CompressionStep) Complete() bool
- func (s *CompressionStep) Icon() string
- func (s *CompressionStep) Init() tea.Cmd
- func (s *CompressionStep) Summary() string
- func (s *CompressionStep) Title() string
- func (s *CompressionStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)
- func (s *CompressionStep) View(width int) string
- type DeriveEgressFunc
- type EgressStep
- func (s *EgressStep) Apply(ctx *tui.WizardContext)
- func (s *EgressStep) Complete() bool
- func (s *EgressStep) Icon() string
- func (s *EgressStep) Init() tea.Cmd
- func (s *EgressStep) Prepare(ctx *tui.WizardContext)
- func (s *EgressStep) Summary() string
- func (s *EgressStep) Title() string
- func (s *EgressStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)
- func (s *EgressStep) View(width int) string
- type FallbackStep
- func (s *FallbackStep) Apply(ctx *tui.WizardContext)
- func (s *FallbackStep) Complete() bool
- func (s *FallbackStep) Icon() string
- func (s *FallbackStep) Init() tea.Cmd
- func (s *FallbackStep) Prepare(ctx *tui.WizardContext)
- func (s *FallbackStep) Summary() string
- func (s *FallbackStep) Title() string
- func (s *FallbackStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)
- func (s *FallbackStep) View(width int) string
- type NameStep
- func (s *NameStep) Apply(ctx *tui.WizardContext)
- func (s *NameStep) Complete() bool
- func (s *NameStep) Icon() string
- func (s *NameStep) Init() tea.Cmd
- func (s *NameStep) Summary() string
- func (s *NameStep) Title() string
- func (s *NameStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)
- func (s *NameStep) View(width int) string
- type OAuthFlowFunc
- type ProviderStep
- func (s *ProviderStep) Apply(ctx *tui.WizardContext)
- func (s *ProviderStep) Complete() bool
- func (s *ProviderStep) Icon() string
- func (s *ProviderStep) Init() tea.Cmd
- func (s *ProviderStep) Summary() string
- func (s *ProviderStep) Title() string
- func (s *ProviderStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)
- func (s *ProviderStep) View(width int) string
- type ReviewStep
- func (s *ReviewStep) Apply(ctx *tui.WizardContext)
- func (s *ReviewStep) Complete() bool
- func (s *ReviewStep) Icon() string
- func (s *ReviewStep) Init() tea.Cmd
- func (s *ReviewStep) Prepare(ctx *tui.WizardContext)
- func (s *ReviewStep) Summary() string
- func (s *ReviewStep) Title() string
- func (s *ReviewStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)
- func (s *ReviewStep) View(width int) string
- type SkillInfo
- type SkillsStep
- func (s *SkillsStep) Apply(ctx *tui.WizardContext)
- func (s *SkillsStep) Complete() bool
- func (s *SkillsStep) Icon() string
- func (s *SkillsStep) Init() tea.Cmd
- func (s *SkillsStep) Prepare(ctx *tui.WizardContext)
- func (s *SkillsStep) Summary() string
- func (s *SkillsStep) Title() string
- func (s *SkillsStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)
- func (s *SkillsStep) View(width int) string
- type ValidateKeyFunc
- type ValidateWebSearchKeyFunc
- type WebSearchStep
- func (s *WebSearchStep) Apply(ctx *tui.WizardContext)
- func (s *WebSearchStep) Complete() bool
- func (s *WebSearchStep) Icon() string
- func (s *WebSearchStep) Init() tea.Cmd
- func (s *WebSearchStep) Summary() string
- func (s *WebSearchStep) Title() string
- func (s *WebSearchStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)
- func (s *WebSearchStep) View(width int) string
Constants ¶
const ( AuthModeNone = "none" AuthModeOIDC = "oidc" AuthModeHTTPVerifier = "http_verifier" AuthModeAWSSigv4 = "aws_sigv4" AuthModeGCPIAP = "gcp_iap" AuthModeAzureAD = "azure_ad" AuthModeCustom = "custom" )
Auth mode constants — stored in WizardContext.AuthMode and read by the init scaffold to decide what to render in forge.yaml.
const WhatsappSessionTokenKey = "__whatsapp_session"
WhatsappSessionTokenKey is the synthetic key the channel step uses to hand the paired session's temp path to scaffold, which moves the file into the project and strips the key before .env is written. Mirrors the existing __egress_domains / __custom_shape convention in cmd/init.go.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AuthStep ¶
type AuthStep struct {
// contains filtered or unexported fields
}
AuthStep is the wizard step that configures the A2A server's auth chain.
UX shape:
┌─ select provider type
│ ○ None (default)
│ ○ OIDC
│ ○ HTTP Verifier
│ ○ Custom (edit forge.yaml manually)
└─ on choice:
OIDC → issuer → audience → groups claim → done
HTTP Verifier → url → default org → done
None / Custom → done immediately
Per-phase: backspace on empty input returns to the picker (Esc-like).
func NewAuthStep ¶
NewAuthStep constructs the auth step.
func (*AuthStep) Apply ¶
func (s *AuthStep) Apply(ctx *tui.WizardContext)
Apply writes the auth selection back to the wizard context.
- AuthMode is always set (defaults to "none").
- AuthSettings is the typed settings block ready to copy into forge.yaml.
- AuthEgressHosts captures the outbound hosts the runner will need reachable; the init scaffold merges these into egress.allowed_domains.
type ChannelStep ¶
type ChannelStep struct {
// contains filtered or unexported fields
}
ChannelStep handles channel connector selection.
func NewChannelStep ¶
func NewChannelStep(styles *tui.StyleSet, enabled []string) *ChannelStep
NewChannelStep creates a new channel step. enabled is the settings channels.enabled allowlist (#454): when non-empty, only those adapters (plus "none") are offered. Empty = every catalog channel offered.
func (*ChannelStep) Apply ¶
func (s *ChannelStep) Apply(ctx *tui.WizardContext)
func (*ChannelStep) Complete ¶
func (s *ChannelStep) Complete() bool
func (*ChannelStep) Icon ¶
func (s *ChannelStep) Icon() string
func (*ChannelStep) Init ¶
func (s *ChannelStep) Init() tea.Cmd
func (*ChannelStep) Summary ¶
func (s *ChannelStep) Summary() string
func (*ChannelStep) Title ¶
func (s *ChannelStep) Title() string
func (*ChannelStep) View ¶
func (s *ChannelStep) View(width int) string
type CompressionStep ¶
type CompressionStep struct {
// contains filtered or unexported fields
}
CompressionStep asks whether to enable reversible context compression (ctxzip). When enabled, bulky tool outputs are compressed before reaching the LLM and everything dropped stays retrievable via the context_expand tool — the wizard writes `compression.enabled: true` into forge.yaml.
func NewCompressionStep ¶
func NewCompressionStep(styles *tui.StyleSet) *CompressionStep
NewCompressionStep creates the compression on/off step.
func (*CompressionStep) Apply ¶
func (s *CompressionStep) Apply(ctx *tui.WizardContext)
func (*CompressionStep) Complete ¶
func (s *CompressionStep) Complete() bool
func (*CompressionStep) Icon ¶
func (s *CompressionStep) Icon() string
func (*CompressionStep) Init ¶
func (s *CompressionStep) Init() tea.Cmd
func (*CompressionStep) Summary ¶
func (s *CompressionStep) Summary() string
func (*CompressionStep) Title ¶
func (s *CompressionStep) Title() string
func (*CompressionStep) View ¶
func (s *CompressionStep) View(width int) string
type DeriveEgressFunc ¶
type DeriveEgressFunc func( provider string, channels, tools, skills []string, envVars map[string]string, authMode string, authSettings map[string]any, ) []string
DeriveEgressFunc computes egress domains from wizard context.
authMode + authSettings are the user's choice from the preceding Auth step. Auth-derived hosts (e.g. sts.<region>.amazonaws.com for aws_sigv4, login.microsoftonline.com for azure_ad) are merged into the egress list so the Egress review displays the FULL outbound surface — operators see and confirm the auth hosts alongside provider/channel/tool/skill hosts.
type EgressStep ¶
type EgressStep struct {
// contains filtered or unexported fields
}
EgressStep handles egress domain review.
func NewEgressStep ¶
func NewEgressStep(styles *tui.StyleSet, deriveFn DeriveEgressFunc) *EgressStep
NewEgressStep creates a new egress review step.
func (*EgressStep) Apply ¶
func (s *EgressStep) Apply(ctx *tui.WizardContext)
func (*EgressStep) Complete ¶
func (s *EgressStep) Complete() bool
func (*EgressStep) Icon ¶
func (s *EgressStep) Icon() string
func (*EgressStep) Init ¶
func (s *EgressStep) Init() tea.Cmd
func (*EgressStep) Prepare ¶
func (s *EgressStep) Prepare(ctx *tui.WizardContext)
Prepare computes egress domains using the accumulated wizard context.
The Auth step runs BEFORE Egress in the wizard order (see init.go), so by the time Prepare runs, ctx.AuthMode and ctx.AuthSettings reflect the operator's choice and we can compute auth-derived hosts.
func (*EgressStep) Summary ¶
func (s *EgressStep) Summary() string
func (*EgressStep) Title ¶
func (s *EgressStep) Title() string
func (*EgressStep) View ¶
func (s *EgressStep) View(width int) string
type FallbackStep ¶
type FallbackStep struct {
// contains filtered or unexported fields
}
FallbackStep handles fallback provider selection and API key collection.
func NewFallbackStep ¶
func NewFallbackStep(styles *tui.StyleSet, validateFn ValidateKeyFunc) *FallbackStep
NewFallbackStep creates a new fallback provider wizard step.
func (*FallbackStep) Apply ¶
func (s *FallbackStep) Apply(ctx *tui.WizardContext)
func (*FallbackStep) Complete ¶
func (s *FallbackStep) Complete() bool
func (*FallbackStep) Icon ¶
func (s *FallbackStep) Icon() string
func (*FallbackStep) Init ¶
func (s *FallbackStep) Init() tea.Cmd
func (*FallbackStep) Prepare ¶
func (s *FallbackStep) Prepare(ctx *tui.WizardContext)
Prepare is called by the wizard to provide the primary provider context.
func (*FallbackStep) Summary ¶
func (s *FallbackStep) Summary() string
func (*FallbackStep) Title ¶
func (s *FallbackStep) Title() string
func (*FallbackStep) View ¶
func (s *FallbackStep) View(width int) string
type NameStep ¶
type NameStep struct {
// contains filtered or unexported fields
}
NameStep collects the agent name.
func NewNameStep ¶
NewNameStep creates a new name step.
func (*NameStep) Apply ¶
func (s *NameStep) Apply(ctx *tui.WizardContext)
type OAuthFlowFunc ¶
OAuthFlowFunc is a function that runs the OAuth flow and returns the access token.
type ProviderStep ¶
type ProviderStep struct {
// contains filtered or unexported fields
}
ProviderStep handles model provider selection and API key entry.
func NewProviderStep ¶
func NewProviderStep(styles *tui.StyleSet, validateFn ValidateKeyFunc, defaultProvider, defaultModel string, oauthFn ...OAuthFlowFunc) *ProviderStep
NewProviderStep creates a new provider selection step. defaultProvider / defaultModel are the settings models.default (#454): the provider is pre-highlighted in the selector (the user still confirms), and defaultModel preselects the model where a model-selector phase applies (OpenAI). Empty values leave the built-in defaults. oauthFn is optional — pass nil to disable OAuth login.
func (*ProviderStep) Apply ¶
func (s *ProviderStep) Apply(ctx *tui.WizardContext)
func (*ProviderStep) Complete ¶
func (s *ProviderStep) Complete() bool
func (*ProviderStep) Icon ¶
func (s *ProviderStep) Icon() string
func (*ProviderStep) Init ¶
func (s *ProviderStep) Init() tea.Cmd
func (*ProviderStep) Summary ¶
func (s *ProviderStep) Summary() string
func (*ProviderStep) Title ¶
func (s *ProviderStep) Title() string
func (*ProviderStep) View ¶
func (s *ProviderStep) View(width int) string
type ReviewStep ¶
type ReviewStep struct {
// contains filtered or unexported fields
}
ReviewStep handles the final summary and confirmation. Actual scaffolding is handled by the caller after the wizard exits.
func NewReviewStep ¶
func NewReviewStep(styles *tui.StyleSet) *ReviewStep
NewReviewStep creates a new review step.
func (*ReviewStep) Apply ¶
func (s *ReviewStep) Apply(ctx *tui.WizardContext)
func (*ReviewStep) Complete ¶
func (s *ReviewStep) Complete() bool
func (*ReviewStep) Icon ¶
func (s *ReviewStep) Icon() string
func (*ReviewStep) Init ¶
func (s *ReviewStep) Init() tea.Cmd
func (*ReviewStep) Prepare ¶
func (s *ReviewStep) Prepare(ctx *tui.WizardContext)
Prepare builds the summary from wizard context.
func (*ReviewStep) Summary ¶
func (s *ReviewStep) Summary() string
func (*ReviewStep) Title ¶
func (s *ReviewStep) Title() string
func (*ReviewStep) View ¶
func (s *ReviewStep) View(width int) string
type SkillInfo ¶
type SkillInfo struct {
Name string
DisplayName string
Description string
Icon string
RequiredEnv []string
OneOfEnv []string
OptionalEnv []string
RequiredBins []string
EgressDomains []string
}
SkillInfo represents a registry skill for the skills step.
type SkillsStep ¶
type SkillsStep struct {
// contains filtered or unexported fields
}
SkillsStep handles external skill selection.
func NewSkillsStep ¶
func NewSkillsStep(styles *tui.StyleSet, skills []SkillInfo) *SkillsStep
NewSkillsStep creates a new skills selection step.
func (*SkillsStep) Apply ¶
func (s *SkillsStep) Apply(ctx *tui.WizardContext)
func (*SkillsStep) Complete ¶
func (s *SkillsStep) Complete() bool
func (*SkillsStep) Icon ¶
func (s *SkillsStep) Icon() string
func (*SkillsStep) Init ¶
func (s *SkillsStep) Init() tea.Cmd
func (*SkillsStep) Prepare ¶
func (s *SkillsStep) Prepare(ctx *tui.WizardContext)
Prepare captures env vars already collected by earlier wizard steps.
func (*SkillsStep) Summary ¶
func (s *SkillsStep) Summary() string
func (*SkillsStep) Title ¶
func (s *SkillsStep) Title() string
func (*SkillsStep) View ¶
func (s *SkillsStep) View(width int) string
type ValidateKeyFunc ¶
ValidateKeyFunc validates an API key for a provider.
type ValidateWebSearchKeyFunc ¶
ValidateWebSearchKeyFunc validates a web search API key for a given provider.
type WebSearchStep ¶
type WebSearchStep struct {
// contains filtered or unexported fields
}
WebSearchStep configures the built-in web_search tool: pick a provider (Tavily / Perplexity) or skip, and capture + validate its API key. Every builtin tool is auto-registered at runtime; web_search is the only one that needs operator input, so it gets a focused step of its own rather than being buried in a bulk tool checklist.
func NewWebSearchStep ¶
func NewWebSearchStep(styles *tui.StyleSet, validateFn ValidateWebSearchKeyFunc) *WebSearchStep
NewWebSearchStep creates a new web search configuration step.
func (*WebSearchStep) Apply ¶
func (s *WebSearchStep) Apply(ctx *tui.WizardContext)
func (*WebSearchStep) Complete ¶
func (s *WebSearchStep) Complete() bool
func (*WebSearchStep) Icon ¶
func (s *WebSearchStep) Icon() string
func (*WebSearchStep) Init ¶
func (s *WebSearchStep) Init() tea.Cmd
func (*WebSearchStep) Summary ¶
func (s *WebSearchStep) Summary() string
func (*WebSearchStep) Title ¶
func (s *WebSearchStep) Title() string
func (*WebSearchStep) View ¶
func (s *WebSearchStep) View(width int) string