steps

package
v0.0.0-...-a981527 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 17, 2026 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
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.

View Source
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

func NewAuthStep(styles *tui.StyleSet) *AuthStep

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.

func (*AuthStep) Complete

func (s *AuthStep) Complete() bool

func (*AuthStep) Icon

func (s *AuthStep) Icon() string

func (*AuthStep) Init

func (s *AuthStep) Init() tea.Cmd

func (*AuthStep) Summary

func (s *AuthStep) Summary() string

func (*AuthStep) Title

func (s *AuthStep) Title() string

func (*AuthStep) Update

func (s *AuthStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)

func (*AuthStep) View

func (s *AuthStep) View(width int) string

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) Update

func (s *ChannelStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)

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) Update

func (s *CompressionStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)

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) Update

func (s *EgressStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)

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) Update

func (s *FallbackStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)

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

func NewNameStep(styles *tui.StyleSet, prefill string) *NameStep

NewNameStep creates a new name step.

func (*NameStep) Apply

func (s *NameStep) Apply(ctx *tui.WizardContext)

func (*NameStep) Complete

func (s *NameStep) Complete() bool

func (*NameStep) Icon

func (s *NameStep) Icon() string

func (*NameStep) Init

func (s *NameStep) Init() tea.Cmd

func (*NameStep) Summary

func (s *NameStep) Summary() string

func (*NameStep) Title

func (s *NameStep) Title() string

func (*NameStep) Update

func (s *NameStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)

func (*NameStep) View

func (s *NameStep) View(width int) string

type OAuthFlowFunc

type OAuthFlowFunc func(provider string) (accessToken string, err error)

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) Update

func (s *ProviderStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)

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) Update

func (s *ReviewStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)

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) Update

func (s *SkillsStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)

func (*SkillsStep) View

func (s *SkillsStep) View(width int) string

type ValidateKeyFunc

type ValidateKeyFunc func(provider, key string) error

ValidateKeyFunc validates an API key for a provider.

type ValidateWebSearchKeyFunc

type ValidateWebSearchKeyFunc func(provider, key string) error

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) Update

func (s *WebSearchStep) Update(msg tea.Msg) (tui.Step, tea.Cmd)

func (*WebSearchStep) View

func (s *WebSearchStep) View(width int) string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL