Documentation
¶
Index ¶
- Constants
- Variables
- func EncodeHeadlessGoalSessionState(messages []llm.Message, model, agentProfile string, modelPinned bool, ...) (string, error)
- func EncodeHeadlessGoalSessionStateWithContextFloor(messages []llm.Message, model, agentProfile string, modelPinned bool, ...) (string, error)
- func EncodeHeadlessGoalSessionStateWithProvider(messages []llm.Message, model, agentProfile string, modelPinned bool, ...) (string, error)
- func EncodeHeadlessSessionState(messages []llm.Message, model, agentProfile string, modelPinned bool, ...) (string, error)
- func EncodeHeadlessSessionStateWithContextFloor(messages []llm.Message, model, agentProfile string, modelPinned bool, ...) (string, error)
- func EncodeHeadlessSessionStateWithProvider(messages []llm.Message, model, agentProfile string, modelPinned bool, ...) (string, error)
- func RenderGoalStatusLine(summary GoalSummary, width int, isDark bool, themeID string, ...) string
- func SetProseCap(columns int)
- func ValidateTranscriptBlocks(blocks []TranscriptBlock) error
- type Adapter
- func (a *Adapter) BobWorkspaceContext(state agent.BobWorkspaceContextState)
- func (a *Adapter) CapabilityRoute(route agent.CapabilityRoute)
- func (a *Adapter) ContextCompacted()
- func (a *Adapter) ContextCompactionFinished()
- func (a *Adapter) ContextCompactionStarted()
- func (a *Adapter) ContinuationSuggestion(turnID string, sequence uint64, suggestion *agent.ContinuationSuggestion)
- func (a *Adapter) Error(msg string)
- func (a *Adapter) ExpertProgress(callID string, event expertteam.ProgressEvent)
- func (a *Adapter) StreamDone(evalCount, promptTokens int)
- func (a *Adapter) StreamReasoning(text string)
- func (a *Adapter) StreamText(text string)
- func (a *Adapter) SystemMessage(msg string)
- func (a *Adapter) ToolCallResult(callID, name string, result string, isError bool, duration time.Duration)
- func (a *Adapter) ToolCallSemanticResult(callID, name string, result string, isError bool, duration time.Duration, ...)
- func (a *Adapter) ToolCallSemanticResultWithDetail(callID, name string, result string, isError bool, duration time.Duration, ...)
- func (a *Adapter) ToolCallStart(callID, name string, args map[string]any)
- type AgentDoneMsg
- type AgentGroupProjection
- type AgentHubState
- func (state *AgentHubState) Back() bool
- func (state *AgentHubState) SetProjection(surface AgentSurfaceProjection, unavailable bool) tea.Cmd
- func (state *AgentHubState) SetSize(terminalWidth, terminalHeight int)
- func (state *AgentHubState) SetTheme(isDark bool, reducedMotion bool, themeID string)
- func (state *AgentHubState) Update(msg tea.Msg) tea.Cmd
- func (state *AgentHubState) UpdateKey(msg tea.KeyPressMsg, keys KeyMap) tea.Cmd
- type AgentPickerState
- type AgentSurfaceProjection
- type AnchorBias
- type AnchorResolutionReason
- type ApprovalPosture
- type ApprovalState
- type BlockID
- type BlockKind
- type BlockLifecycle
- type BlockPayload
- type BobWorkspaceContextMsg
- type CapabilityRouteMsg
- type CellRect
- func Inset(rect CellRect, insets Insets) CellRect
- func NewCellRect(minX, minY, maxX, maxY int) CellRect
- func TakeBottom(rect CellRect, n int) (taken, remain CellRect)
- func TakeLeft(rect CellRect, n int) (taken, remain CellRect)
- func TakeRight(rect CellRect, n int) (taken, remain CellRect)
- func TakeTop(rect CellRect, n int) (taken, remain CellRect)
- type ChatEntry
- type ClipboardImagePasteMsg
- type CloudConsentState
- type CommandResultMsg
- type CommitResultMsg
- type Completer
- func (c *Completer) Complete(input string) []Completion
- func (c *Completer) CompleteFilePath(relPath string) []Completion
- func (c *Completer) CompleteStatic(input string) []Completion
- func (c *Completer) SearchFiles(ctx context.Context, query string) []Completion
- func (c *Completer) SetIgnorePatterns(patterns *config.IgnorePatterns)
- func (c *Completer) UpdateAgents(agents []string)
- func (c *Completer) UpdateModels(models []string)
- func (c *Completer) UpdateProviders(providers []string)
- func (c *Completer) UpdateSkills(skills []string)
- func (c *Completer) WorkspaceCompletions(ctx context.Context, query, currentPath string) []Completion
- type Completion
- type CompletionDebounceTickMsg
- type CompletionSearchResultMsg
- type CompletionState
- type ContentGrid
- type ContextCompactedMsg
- type ContextCompactionFinishedMsg
- type ContextCompactionStartedMsg
- type ContextDoctorMsg
- type ContextDoctorState
- type ContextLoadResultMsg
- type ContinuationActionMsg
- type ContinuationActionPresentation
- type CoreReadyMsg
- type DiffFileProjection
- type DiffHunk
- type DiffLine
- type DiffLineKind
- type DiffViewer
- func (viewer *DiffViewer) Back() bool
- func (viewer *DiffViewer) CurrentAnchor() DiffViewerAnchor
- func (viewer *DiffViewer) CurrentFileIndex() int
- func (viewer *DiffViewer) EffectiveMode() DiffViewerMode
- func (viewer *DiffViewer) Layout() DiffViewerLayout
- func (viewer *DiffViewer) PreferredMode() DiffViewerMode
- func (viewer *DiffViewer) SetFiles(files []DiffFileProjection)
- func (viewer *DiffViewer) SetReducedMotion(reduced bool)
- func (viewer *DiffViewer) SetScreenRect(rect CellRect)
- func (viewer *DiffViewer) SetSize(width, height int)
- func (viewer *DiffViewer) SetTheme(isDark bool, themeID string)
- func (viewer *DiffViewer) Update(msg tea.Msg) (DiffViewerEvent, tea.Cmd)
- func (viewer *DiffViewer) View() string
- func (viewer *DiffViewer) ViewWithCursor() (string, *tea.Cursor)
- type DiffViewerAction
- type DiffViewerAnchor
- type DiffViewerEvent
- type DiffViewerEventKind
- type DiffViewerLayout
- type DiffViewerMode
- type DiffViewerOptions
- type DiffViewerSide
- type EntityKind
- type EntityRef
- type ErrorMsg
- type ExpertProgressItem
- type ExpertProgressMsg
- type ExpertProgressState
- type ExportResultMsg
- type FailedServer
- type FocusOwner
- type FocusToken
- type FrameProjection
- type FrameSurfaceProjection
- type FrameVerticalFit
- type GlyphProfile
- type GlyphSet
- type GoalAction
- type GoalAdvisor
- type GoalDecisionAdvisor
- type GoalForm
- func (f *GoalForm) ActiveField() GoalFormField
- func (f *GoalForm) BudgetOnly() bool
- func (f *GoalForm) Error() string
- func (f *GoalForm) SetActiveField(field GoalFormField) tea.Cmd
- func (f *GoalForm) SetBudgetOnly(budgetOnly bool) tea.Cmd
- func (f *GoalForm) SetChoices(choices ...GoalFormChoice)
- func (f *GoalForm) SetError(message string)
- func (f *GoalForm) SetReducedMotion(reduced bool)
- func (f *GoalForm) SetSize(width, height int)
- func (f *GoalForm) SetTheme(isDark bool, themeID string)
- func (f *GoalForm) Update(msg tea.Msg) (GoalFormEvent, tea.Cmd)
- func (f *GoalForm) Values() (GoalFormValues, error)
- func (f *GoalForm) View() string
- func (f *GoalForm) ViewWithCursor() (string, *tea.Cursor)
- type GoalFormChoice
- type GoalFormEvent
- type GoalFormField
- type GoalFormOptions
- type GoalFormValues
- type GoalInspector
- func (i *GoalInspector) CancelConfirmation() bool
- func (i *GoalInspector) SetReducedMotion(reduced bool)
- func (i *GoalInspector) SetSize(width, height int)
- func (i *GoalInspector) SetTheme(isDark bool, themeID string)
- func (i *GoalInspector) Update(msg tea.KeyPressMsg) (GoalInspectorEvent, tea.Cmd)
- func (i *GoalInspector) View() string
- type GoalInspectorEvent
- type GoalInspectorOptions
- type GoalPhase
- type GoalRecovery
- func (r *GoalRecovery) ActionableCount() int
- func (r *GoalRecovery) Draft() GoalRecoveryDraft
- func (r *GoalRecovery) SelectedItem() (GoalRecoveryItem, bool)
- func (r *GoalRecovery) SetBusy(message string)
- func (r *GoalRecovery) SetError(message string)
- func (r *GoalRecovery) SetItems(items []GoalRecoveryItem) tea.Cmd
- func (r *GoalRecovery) SetReducedMotion(reduced bool)
- func (r *GoalRecovery) SetSize(width, height int)
- func (r *GoalRecovery) SetTheme(isDark bool, themeID string)
- func (r *GoalRecovery) ShowRecordedReceipt(items []GoalRecoveryItem, notice string) tea.Cmd
- func (r *GoalRecovery) Stage() GoalRecoveryStage
- func (r *GoalRecovery) Update(msg tea.Msg) (GoalRecoveryEvent, tea.Cmd)
- func (r *GoalRecovery) View() string
- func (r *GoalRecovery) ViewWithCursor() (string, *tea.Cursor)
- type GoalRecoveryAction
- type GoalRecoveryDraft
- type GoalRecoveryEvent
- type GoalRecoveryItem
- type GoalRecoveryItemKind
- type GoalRecoveryObservation
- type GoalRecoveryOptions
- type GoalRecoverySource
- type GoalRecoveryStage
- type GoalSummary
- type HeightClass
- type HitRegion
- type HitRegionSet
- type ImageAttachmentResultMsg
- type ImportResultMsg
- type InitCompleteMsg
- type Insets
- type KeyHelpSection
- type KeyMap
- type LayoutCapabilities
- type LayoutCapabilityOptions
- type LayoutDensity
- type LineMap
- type MCPServerStatus
- type MCPStatusSnapshotMsg
- type MarkdownRenderer
- type ModalInstance
- type ModalKind
- type ModalStack
- func (stack *ModalStack) Clear(fallback FocusToken) ([]ModalInstance, FocusToken)
- func (stack *ModalStack) Empty() bool
- func (stack *ModalStack) Len() int
- func (stack *ModalStack) Pop(fallback FocusToken) (ModalInstance, FocusToken, bool)
- func (stack *ModalStack) Projection() OverlayProjection
- func (stack *ModalStack) Push(modal ModalInstance, currentFocus FocusToken) error
- func (stack *ModalStack) Replace(modal ModalInstance) (ModalInstance, error)
- func (stack *ModalStack) Top() (ModalInstance, bool)
- type Mode
- type ModeConfig
- type ModePickerState
- type Model
- func (m *Model) AnchorActive() bool
- func (m *Model) Init() tea.Cmd
- func (m *Model) Ready() bool
- func (m *Model) ReleaseExecutionSessionLease() error
- func (m *Model) SessionResumeInfo() (SessionResumeInfo, bool)
- func (m *Model) SetAgentProfileSource(agentsDir *config.AgentsDir, baseLoadedContext, activeProfile string)
- func (m *Model) SetApprovalPosture(posture ApprovalPosture)
- func (m *Model) SetConfigSourcePath(path string)
- func (m *Model) SetExpertRuntimeSetupFailed()
- func (m *Model) SetGoalAdvisor(advisor GoalAdvisor)
- func (m *Model) SetImageStore(store *imageasset.Store)
- func (m *Model) SetInitCancel(cancel context.CancelFunc)
- func (m *Model) SetModelPinned(pinned bool)
- func (m *Model) SetModelPreferenceStore(store ModelPreferenceStore)
- func (m *Model) SetModelRoutingCatalog(models []config.Model)
- func (m *Model) SetProgram(p *tea.Program)
- func (m *Model) SetSessionStore(store *db.Store)
- func (m *Model) SetStartupSessionResume(selector SessionResumeSelector) error
- func (m *Model) SetTheme(id string) bool
- func (m *Model) ThemeID() string
- func (m *Model) Update(msg tea.Msg) (retModel tea.Model, retCmd tea.Cmd)
- func (m *Model) View() tea.View
- type ModelPickerState
- type ModelPreferenceStore
- type ModelPullPhase
- type ModelPullState
- func (s *ModelPullState) Apply(msg OllamaModelPullProgressMsg) tea.Cmd
- func (s *ModelPullState) ProgressText() string
- func (s *ModelPullState) SetTheme(isDark bool, themeID string)
- func (s *ModelPullState) Update(msg tea.Msg) tea.Cmd
- func (s *ModelPullState) View(width int) string
- func (s *ModelPullState) ViewWithCursor(width int, compact bool) (string, *tea.Cursor)
- type OllamaModelDescriptor
- type OllamaModelDetailsRequestedMsg
- type OllamaModelDetailsResultMsg
- type OllamaModelInventoryMsg
- type OllamaModelPullCancelRequestedMsg
- type OllamaModelPullProgressMsg
- type OllamaModelPullRequestedMsg
- type OllamaModelSource
- type OutputDetailCursor
- type OutputDetailDigest
- type OutputDetailPage
- type OutputDetailPageRequest
- type OutputDetailReceipt
- type OutputDetailRef
- type OutputDetailRow
- type OutputDetailStore
- func (store *OutputDetailStore) Admit(raw string) (OutputDetailReceipt, error)
- func (store *OutputDetailStore) Available(ref OutputDetailRef) bool
- func (store *OutputDetailStore) Drop(ref OutputDetailRef) bool
- func (store *OutputDetailStore) Len() int
- func (store *OutputDetailStore) Page(ctx context.Context, request OutputDetailPageRequest) (OutputDetailPage, error)
- func (store *OutputDetailStore) RetainedBytes() uint64
- type OutputViewer
- func (viewer *OutputViewer) Anchor() OutputViewerAnchor
- func (viewer *OutputViewer) ApplyPage(token OutputViewerPageToken, page OutputDetailPage) bool
- func (viewer *OutputViewer) ApplyPageError(token OutputViewerPageToken, err error) bool
- func (viewer *OutputViewer) ApplyPageResult(token OutputViewerPageToken, page OutputDetailPage, err error) bool
- func (viewer *OutputViewer) CachedRowCount() int
- func (viewer *OutputViewer) InitialPageRequest() OutputViewerEvent
- func (viewer *OutputViewer) Layout() OutputViewerLayout
- func (viewer *OutputViewer) ReplaceReceipt(receipt OutputDetailReceipt) OutputViewerEvent
- func (viewer *OutputViewer) SetReducedMotion(reduced bool)
- func (viewer *OutputViewer) SetSize(width, height int)
- func (viewer *OutputViewer) SetTheme(isDark bool, themeID string)
- func (viewer *OutputViewer) Status() OutputViewerStatus
- func (viewer *OutputViewer) Update(msg tea.Msg) (OutputViewerEvent, tea.Cmd)
- func (viewer *OutputViewer) View() string
- func (viewer *OutputViewer) ViewWithCursor() (string, *tea.Cursor)
- type OutputViewerAnchor
- type OutputViewerEvent
- type OutputViewerEventKind
- type OutputViewerLayout
- type OutputViewerPageToken
- type OutputViewerStatus
- type OverlayID
- type OverlayKind
- type OverlayProjection
- type PermissionsPanelState
- type PlanFormCompletedMsg
- type PlanFormField
- type PlanFormState
- type PromptPathPreflightResultMsg
- type ProviderCredentialState
- type ProviderLocality
- type ProviderOptionPresentation
- type ProviderPickerState
- type ProviderProfileID
- type ReadScopePreviewResultMsg
- type ReadScopePrompt
- type ReadScopeResultMsg
- type RuntimeStatusState
- type ScrambleModel
- type ScrambleTickMsg
- type SemanticAnchor
- type SessionListItem
- type SessionListMsg
- type SessionLoadedMsg
- type SessionProviderIdentity
- type SessionResumeInfo
- type SessionResumeSelector
- type SessionsPickerState
- type SettingsPickerState
- type ShutdownMsg
- type StartupStatusMsg
- type State
- type StreamDoneMsg
- type StreamTextMsg
- type StreamThinkingMsg
- type Styles
- type SystemMessageMsg
- type Theme
- type ThemePickerState
- type ToolApprovalMsg
- type ToolCallResultMsg
- type ToolCallStartMsg
- type ToolCard
- type ToolCardKind
- type ToolCardState
- type ToolCardStyles
- type ToolEntry
- type ToolKind
- type ToolLifecycle
- type ToolPreview
- type ToolPreviewMode
- type ToolRenderModel
- type ToolStatus
- type ToolType
- type ToolViewModel
- type TranscriptAnchor
- type TranscriptAnchorMode
- type TranscriptAnchorResolution
- type TranscriptBlock
- type TranscriptLayoutRecord
- type TranscriptLayoutSnapshot
- type TranscriptLinePoint
- type TranscriptSearchState
- type TurnID
- type UIAction
- type UIActionRegistry
- type UIActionRequest
- type UIActionSource
- type UIActionSpec
- type WidthClass
- type WorkNode
- type WorkNodeActivity
- type WorkNodeKind
- type WorkNodeLocation
- type WorkNodeStatus
Constants ¶
const ( // ProseTargetCandidate is the minimum comfortable measure for chat prose. // On wide terminals chatProseWidth grows toward WorkWidth so the column // uses available space (Grok-style) instead of leaving a dead right margin. // Code fences, tables, diffs, and inspectors still use full WorkWidth. ProseTargetCandidate = 96 // ProseTargetWide is the soft cap for conversational prose on very wide // terminals. Beyond this, long lines become harder to scan. ProseTargetWide = 140 )
const ( ModeAsk = ModeNormal ModeBuild = ModeAuto )
Legacy source aliases keep embeddings and older tests compiling while saved ASK/BUILD values migrate through the session-version boundary below.
const ModalStackCapacity = 8
ModalStackCapacity bounds nested viewer state and prevents an accidental input loop from retaining an unbounded overlay chain.
const ProviderFailureCopy = "Provider unavailable. Check the provider profile and credential environment."
ProviderFailureCopy is host-owned presentation for provider failures. Raw provider/configuration errors can contain endpoints or backend prose and must never be sent to the transcript boundary.
Variables ¶
var ( ErrModalInvalid = errors.New("invalid modal") ErrModalDuplicate = errors.New("duplicate modal identity") ErrModalStackFull = errors.New("modal stack is full") ErrModalStackEmpty = errors.New("modal stack is empty") )
var ( // evicted references. Callers must not infer whether a full result ever // existed from this transient viewer boundary. ErrOutputDetailUnavailable = errors.New("output detail is unavailable") // ErrOutputDetailCursor rejects cursors that do not identify a retained // row boundary. It never returns source content alongside the error. ErrOutputDetailCursor = errors.New("output detail cursor is invalid") // ErrOutputDetailPageBudget reports that the requested byte budget cannot // contain even the next complete UTF-8 rune. Returning an error avoids an // unchanged cursor loop and never emits malformed or missing source bytes. ErrOutputDetailPageBudget = errors.New("output detail page byte budget is too small") // ErrOutputDetailAdmissionLimit declines an ephemeral viewer capability // before sanitization when a source exceeds the bounded admission working // set. It does not affect the already-capped transcript receipt. ErrOutputDetailAdmissionLimit = errors.New("output detail exceeds the admission limit") )
var ErrSessionStateRevisionUnknown = errors.New("session state revision is unknown; reload the durable session before saving")
Functions ¶
func EncodeHeadlessGoalSessionState ¶ added in v0.9.0
func EncodeHeadlessGoalSessionState(messages []llm.Message, model, agentProfile string, modelPinned bool, executionCursor int64, snapshot goal.Snapshot) (string, error)
EncodeHeadlessGoalSessionState persists one headless turn together with the exact Goal Runtime snapshot that admitted and settled it.
func EncodeHeadlessGoalSessionStateWithContextFloor ¶ added in v0.14.0
func EncodeHeadlessGoalSessionStateWithContextFloor(messages []llm.Message, model, agentProfile string, modelPinned bool, executionCursor int64, snapshot goal.Snapshot, floor agent.ContextPromptFloor) (string, error)
EncodeHeadlessGoalSessionStateWithContextFloor persists a goal turn and its exact bounded provider-receipt floor as one session CAS payload.
func EncodeHeadlessGoalSessionStateWithProvider ¶ added in v0.18.0
func EncodeHeadlessGoalSessionStateWithProvider( messages []llm.Message, model, agentProfile string, modelPinned bool, executionCursor int64, snapshot goal.Snapshot, floor agent.ContextPromptFloor, provider SessionProviderIdentity, ) (string, error)
EncodeHeadlessGoalSessionStateWithProvider is the provider-bound Goal Runtime variant of EncodeHeadlessSessionStateWithProvider.
func EncodeHeadlessSessionState ¶ added in v0.5.0
func EncodeHeadlessSessionState(messages []llm.Message, model, agentProfile string, modelPinned bool, executionCursor int64) (string, error)
EncodeHeadlessSessionState creates a current-version snapshot that the interactive session picker can restore after a non-interactive run. Tool messages remain in model history, while the visible transcript stays focused on user and assistant text because headless mode has no persisted ToolCard state.
func EncodeHeadlessSessionStateWithContextFloor ¶ added in v0.14.0
func EncodeHeadlessSessionStateWithContextFloor(messages []llm.Message, model, agentProfile string, modelPinned bool, executionCursor int64, floor agent.ContextPromptFloor) (string, error)
EncodeHeadlessSessionStateWithContextFloor preserves the exact bounded provider-receipt floor when a headless session may later be resumed.
func EncodeHeadlessSessionStateWithProvider ¶ added in v0.18.0
func EncodeHeadlessSessionStateWithProvider( messages []llm.Message, model, agentProfile string, modelPinned bool, executionCursor int64, floor agent.ContextPromptFloor, provider SessionProviderIdentity, ) (string, error)
EncodeHeadlessSessionStateWithProvider preserves provider provenance for a session created outside the interactive Model.
func RenderGoalStatusLine ¶ added in v0.5.0
func RenderGoalStatusLine(summary GoalSummary, width int, isDark bool, themeID string, profiles ...GlyphProfile) string
RenderGoalStatusLine renders a single adaptive, width-safe status row for headers, composer chrome, or transient receipts. State is always conveyed by a glyph and text, never color alone.
func SetProseCap ¶ added in v0.30.0
func SetProseCap(columns int)
SetProseCap installs a fixed prose measure. Zero or negative restores the dynamic default. Call once at startup.
func ValidateTranscriptBlocks ¶ added in v0.17.0
func ValidateTranscriptBlocks(blocks []TranscriptBlock) error
ValidateTranscriptBlocks checks block-local invariants plus collection identity and parent-reference integrity. It expects a complete block set; parent order is intentionally not constrained, so forward references work.
Types ¶
type Adapter ¶
type Adapter struct {
// contains filtered or unexported fields
}
Adapter bridges the agent.Output interface to BubbleTea messages.
func NewAdapter ¶
NewAdapter creates an Adapter that sends messages to the given program.
func NewAdapterWithOutputDetails ¶ added in v0.18.0
func NewAdapterWithOutputDetails(p *tea.Program, store *OutputDetailStore, workDir ...string) *Adapter
NewAdapterWithOutputDetails creates an Adapter that can retain a bounded, terminal-safe, post-redaction prefix of ordinary unstructured tool output for the process-local viewer. Expert reports and parser-private semantic payloads deliberately never cross this boundary.
func (*Adapter) BobWorkspaceContext ¶ added in v0.14.0
func (a *Adapter) BobWorkspaceContext(state agent.BobWorkspaceContextState)
BobWorkspaceContext forwards only the bounded semantic workspace digest. The adapter detaches the value so an agent-side cache update cannot mutate a message that Bubble Tea has not processed yet.
func (*Adapter) CapabilityRoute ¶ added in v0.8.0
func (a *Adapter) CapabilityRoute(route agent.CapabilityRoute)
func (*Adapter) ContextCompacted ¶ added in v0.6.0
func (a *Adapter) ContextCompacted()
func (*Adapter) ContextCompactionFinished ¶ added in v0.8.0
func (a *Adapter) ContextCompactionFinished()
func (*Adapter) ContextCompactionStarted ¶ added in v0.8.0
func (a *Adapter) ContextCompactionStarted()
func (*Adapter) ContinuationSuggestion ¶ added in v0.14.0
func (a *Adapter) ContinuationSuggestion(turnID string, sequence uint64, suggestion *agent.ContinuationSuggestion)
ContinuationSuggestion forwards only the already bounded presentation. Tool arguments, workspace references, command strings, and raw receipt content never cross into Bubble Tea state.
func (*Adapter) ExpertProgress ¶ added in v0.15.0
func (a *Adapter) ExpertProgress(callID string, event expertteam.ProgressEvent)
ExpertProgress forwards only the host-owned bounded scheduler event. The expert runtime deliberately keeps objectives, reports, reasoning, and raw provider errors on its transient side of this boundary.
func (*Adapter) StreamDone ¶
func (*Adapter) StreamReasoning ¶
func (*Adapter) StreamText ¶
func (*Adapter) SystemMessage ¶
func (*Adapter) ToolCallResult ¶
func (*Adapter) ToolCallSemanticResult ¶ added in v0.6.0
func (a *Adapter) ToolCallSemanticResult(callID, name string, result string, isError bool, duration time.Duration, projection ecosystem.ToolProjection)
ToolCallSemanticResult carries only the bounded host projection into the UI; raw StructuredContent remains inside the agent parser boundary.
func (*Adapter) ToolCallSemanticResultWithDetail ¶ added in v0.18.0
func (a *Adapter) ToolCallSemanticResultWithDetail( callID, name string, result string, isError bool, duration time.Duration, projection ecosystem.ToolProjection, detail *agent.ToolOutputDetail, )
ToolCallSemanticResultWithDetail admits only an explicit complete, post-redaction unstructured payload. The payload is consumed synchronously by the bounded process-local store; Bubble Tea receives only an opaque capability and scalar digest.
type AgentDoneMsg ¶
type AgentDoneMsg struct {
// TurnID is the logical user/Goal turn identity. SegmentTurnID is the
// execution-ledger identity used by the just-finished AUTO segment. They are
// equal for ordinary turns; a productive AUTO checkpoint keeps TurnID stable
// while continuing under a fresh SegmentTurnID.
TurnID string
SegmentTurnID string
Err error
}
AgentDoneMsg signals the agent loop has completed.
type AgentGroupProjection ¶ added in v0.17.0
type AgentGroupProjection struct {
ID BlockID `json:"id"`
TurnID TurnID `json:"turn_id"`
Revision uint64 `json:"revision"`
Lifecycle BlockLifecycle `json:"lifecycle"`
Elapsed time.Duration `json:"elapsed,omitempty"`
Strategy expertselector.Strategy `json:"strategy,omitempty"`
Total int `json:"total,omitempty"`
Queued int `json:"queued,omitempty"`
Running int `json:"running,omitempty"`
Waiting int `json:"waiting,omitempty"`
Completed int `json:"completed,omitempty"`
Attention int `json:"attention,omitempty"`
Failed int `json:"failed,omitempty"`
Cancelled int `json:"cancelled,omitempty"`
ProgressAvailable bool `json:"progress_available"`
Interrupted bool `json:"interrupted,omitempty"`
Nodes []WorkNode `json:"nodes,omitempty"`
ToolIndex int `json:"-"`
}
AgentGroupProjection binds one expert consultation to its causal transcript identity. ToolIndex is an ephemeral UI correlation only and is intentionally excluded from persistence; ID is the durable host-admitted identity.
Lifecycle says whether the group is live or terminal. It does not claim domain success: per-node host-authored status counts remain separate, and a missing progress projection never becomes success.
type AgentHubState ¶ added in v0.17.0
type AgentHubState struct {
List list.Model
Viewer viewport.Model
Mode agentHubMode
Surface AgentSurfaceProjection
ViewerGroupID BlockID
ItemHeight int
ItemSpacing int
// contains filtered or unexported fields
}
AgentHubState is a presentation-only Bubbles surface. The parent Model owns every message, projection refresh, focus transition, and transcript jump.
func (*AgentHubState) Back ¶ added in v0.17.0
func (state *AgentHubState) Back() bool
Back consumes Escape when it first needs to clear a filter or return from the Viewer. False means the parent should close the modal.
func (*AgentHubState) SetProjection ¶ added in v0.17.0
func (state *AgentHubState) SetProjection(surface AgentSurfaceProjection, unavailable bool) tea.Cmd
func (*AgentHubState) SetSize ¶ added in v0.17.0
func (state *AgentHubState) SetSize(terminalWidth, terminalHeight int)
func (*AgentHubState) SetTheme ¶ added in v0.17.0
func (state *AgentHubState) SetTheme(isDark bool, reducedMotion bool, themeID string)
func (*AgentHubState) Update ¶ added in v0.17.0
func (state *AgentHubState) Update(msg tea.Msg) tea.Cmd
func (*AgentHubState) UpdateKey ¶ added in v0.17.0
func (state *AgentHubState) UpdateKey(msg tea.KeyPressMsg, keys KeyMap) tea.Cmd
type AgentPickerState ¶
type AgentSurfaceProjection ¶ added in v0.17.0
type AgentSurfaceProjection struct {
Groups []AgentGroupProjection `json:"groups,omitempty"`
OmittedGroups int `json:"omitted_groups,omitempty"`
}
AgentSurfaceProjection is the complete bounded, presentation-safe view of agent work derivable from the semantic transcript. It deliberately carries no tool arguments/results, provider payloads, child prompts, reasoning, reports, paths, or arbitrary metadata.
type AnchorBias ¶ added in v0.17.0
type AnchorBias uint8
AnchorBias controls which neighboring block is preferred when the anchored block no longer survives in the current transcript.
const ( AnchorBiasNext AnchorBias = iota AnchorBiasPrevious )
type AnchorResolutionReason ¶ added in v0.17.0
type AnchorResolutionReason uint8
AnchorResolutionReason records whether the requested semantic point survived or which deterministic fallback selected the resolved block.
const ( AnchorResolutionFollowLatest AnchorResolutionReason = iota AnchorResolutionExactBlock AnchorResolutionNextBlock AnchorResolutionPreviousBlock AnchorResolutionTurnStart AnchorResolutionDocumentTop )
type ApprovalPosture ¶ added in v0.8.0
type ApprovalPosture string
ApprovalPosture is the process-wide approval contract selected by the host. It is presentation state only: the permission checker remains the execution authority, while the TUI makes that authority visible without inferring it from conversational mode.
const ( ApprovalPosturePrompted ApprovalPosture = "prompted" ApprovalPostureSkipApprovals ApprovalPosture = "skip_approvals" ApprovalPostureAcceptWorkspaceEdits ApprovalPosture = "accept_workspace_edits" // ApprovalPostureYolo is retained for source compatibility. // Deprecated: use ApprovalPostureSkipApprovals. ApprovalPostureYolo = ApprovalPostureSkipApprovals )
type ApprovalState ¶ added in v0.6.0
ApprovalState owns presentation-only state for an approval request. The root Model remains responsible for every decision and side effect.
type BlockID ¶ added in v0.17.0
type BlockID string
BlockID is the durable identity of one semantic transcript block. It must remain stable across streaming updates, reflow, persistence, and restore.
func NewBlockID ¶ added in v0.17.0
NewBlockID returns a process-independent 128-bit block identity.
type BlockKind ¶ added in v0.17.0
type BlockKind uint8
BlockKind describes a block's semantic role. Rendering, width, theme, focus, and expansion state are deliberately absent from this enum.
const ( BlockKindUnknown BlockKind = iota BlockKindUserMessage BlockKindAssistantMessage BlockKindReasoningSummary BlockKindToolGroup BlockKindToolCall BlockKindAgentGroup BlockKindAgentEvent BlockKindPermissionReceipt BlockKindQuestionReceipt BlockKindPlanEvent BlockKindSystemNotice BlockKindErrorNotice BlockKindCompactionEvent BlockKindSessionBoundary )
type BlockLifecycle ¶ added in v0.17.0
type BlockLifecycle uint8
BlockLifecycle is the monotonic semantic lifecycle of a transcript block.
const ( BlockPending BlockLifecycle = iota BlockLive BlockSettling BlockSettled BlockFailed BlockCancelled )
func (BlockLifecycle) CanTransitionTo ¶ added in v0.17.0
func (lifecycle BlockLifecycle) CanTransitionTo(next BlockLifecycle) bool
CanTransitionTo enforces the lifecycle partial order. It accepts an idempotent transition and rejects every transition out of a terminal state.
func (BlockLifecycle) Terminal ¶ added in v0.17.0
func (lifecycle BlockLifecycle) Terminal() bool
Terminal reports whether the block can no longer make a semantic transition. Re-applying the same terminal state remains idempotent.
func (BlockLifecycle) Valid ¶ added in v0.17.0
func (lifecycle BlockLifecycle) Valid() bool
Valid reports whether lifecycle is a known lifecycle value.
type BlockPayload ¶ added in v0.17.0
type BlockPayload struct {
// contains filtered or unexported fields
}
BlockPayload is the deliberately narrow, provider-neutral content admitted to the transcript model. Every field must already be terminal-safe and host-approved before construction. In particular, callers must not place raw MCP StructuredContent, provider reasoning, internal prompts, credentials, or unredacted private paths in these strings.
Tool transport/domain/evidence projections remain separate typed models; they must not be smuggled into this payload as arbitrary maps.
func NewHostProjectedBlockPayload ¶ added in v0.17.0
func NewHostProjectedBlockPayload(label, safeSummary string) (BlockPayload, error)
NewHostProjectedBlockPayload admits bounded host-authored chrome and a summary explicitly approved for display. It is the only constructor for labels/summaries and must never receive private provider reasoning.
func NewVisibleTextBlockPayload ¶ added in v0.17.0
func NewVisibleTextBlockPayload(visibleText string) (BlockPayload, error)
NewVisibleTextBlockPayload admits already projected user/assistant text. It does not accept tool envelopes; MCP results must first cross the bounded parser/ecosystem projection boundary.
func (BlockPayload) Label ¶ added in v0.17.0
func (payload BlockPayload) Label() string
Label returns canonical single-line host chrome.
func (BlockPayload) MarshalJSON ¶ added in v0.17.0
func (BlockPayload) MarshalJSON() ([]byte, error)
MarshalJSON fails closed. Durable transcript envelopes need an explicit projection so adding a field here cannot silently persist private content.
func (BlockPayload) SafeSummary ¶ added in v0.17.0
func (payload BlockPayload) SafeSummary() string
SafeSummary returns a canonical single-line, host-approved summary.
func (*BlockPayload) UnmarshalJSON ¶ added in v0.17.0
func (*BlockPayload) UnmarshalJSON([]byte) error
UnmarshalJSON fails closed for the same reason as MarshalJSON. Restore must validate an explicit, versioned durable DTO before constructing this type.
func (BlockPayload) VisibleText ¶ added in v0.17.0
func (payload BlockPayload) VisibleText() string
VisibleText returns terminal-safe projected message text.
type BobWorkspaceContextMsg ¶ added in v0.14.0
type BobWorkspaceContextMsg struct {
Generation uint64
Digest *ecosystem.ReceiptDigest
}
BobWorkspaceContextMsg replaces the ephemeral bounded Bob workspace status. Generation is monotonic for one Agent lifetime; a nil digest is an authoritative clear. Raw Bob output never crosses into Bubble Tea state.
type CapabilityRouteMsg ¶ added in v0.8.0
type CapabilityRouteMsg struct {
Route agent.CapabilityRoute
}
CapabilityRouteMsg is an ephemeral host advisory. It must never be appended to ChatEntry, ToolEntry, session state, or evidence receipts.
type CellRect ¶ added in v0.17.0
CellRect describes a half-open rectangle of terminal cells: [MinX, MaxX) x [MinY, MaxY). The zero value is an empty rectangle.
func Inset ¶ added in v0.17.0
Inset applies insets without allowing either axis to cross. If opposing insets exceed the available extent, the top or left inset is satisfied first and the result collapses to an empty axis.
func NewCellRect ¶ added in v0.17.0
NewCellRect creates a canonical half-open rectangle from its bounds. Inverted axes collapse at their minimum coordinate instead of producing a negative extent.
func TakeBottom ¶ added in v0.17.0
TakeBottom removes up to n rows from the bottom of rect. It returns the removed rectangle first and the remaining rectangle second.
func TakeLeft ¶ added in v0.17.0
TakeLeft removes up to n columns from the left of rect. It returns the removed rectangle first and the remaining rectangle second.
func TakeRight ¶ added in v0.17.0
TakeRight removes up to n columns from the right of rect. It returns the removed rectangle first and the remaining rectangle second.
func TakeTop ¶ added in v0.17.0
TakeTop removes up to n rows from the top of rect. It returns the removed rectangle first and the remaining rectangle second.
func (CellRect) Contains ¶ added in v0.17.0
Contains reports whether the terminal cell at (x, y) is inside the rectangle. Cells on MaxX or MaxY are outside by the half-open contract.
func (CellRect) Empty ¶ added in v0.17.0
Empty reports whether the rectangle contains no terminal cells.
type ChatEntry ¶
type ChatEntry struct {
BlockID BlockID // stable semantic identity across reflow and restore
TurnID TurnID // causal turn identity; independent of slice position
Revision uint64 // semantic/lifecycle revision, never a layout revision
Lifecycle BlockLifecycle // monotonic semantic lifecycle
Kind string // "user", "assistant", "tool_group", "error", "system"
Content string // raw content
RenderedContent string // cached Glamour output (set once on completion)
Name string // tool name for tool entries
IsError bool // for tool_result
ToolIndex int // index into toolEntries for "tool_group" kind
ThinkingContent string // extracted <think> content
ThinkingCollapsed bool // default: true
Attachments []imageasset.Ref // validated, path-free image metadata
// contains filtered or unexported fields
}
ChatEntry is a single item in the chat log.
type ClipboardImagePasteMsg ¶ added in v0.12.0
ClipboardImagePasteMsg carries one explicitly requested clipboard image only until the parent can admit it to the private content-addressed store. Raw bytes never enter Model state, transcript entries, or session persistence.
type CloudConsentState ¶ added in v0.6.0
type CloudConsentState struct {
ModelName string
DisplayName string
List list.Model
Error string
Compact bool
PendingLoad *SessionLoadedMsg
PriorGrant bool
}
CloudConsentState owns only the transient confirmation presentation. The parent retains policy authority and commits or rejects the exact grant.
type CommandResultMsg ¶
type CommandResultMsg struct {
Text string
}
CommandResultMsg carries the result of a slash command for display.
type CommitResultMsg ¶
CommitResultMsg carries the result of an async /commit operation.
type Completer ¶
type Completer struct {
// contains filtered or unexported fields
}
func NewCompleter ¶
func (*Completer) Complete ¶
func (c *Completer) Complete(input string) []Completion
func (*Completer) CompleteFilePath ¶
func (c *Completer) CompleteFilePath(relPath string) []Completion
CompleteFilePath lists directory contents at a given relative path. Used for folder drill-down in the completion modal.
func (*Completer) CompleteStatic ¶ added in v0.8.0
func (c *Completer) CompleteStatic(input string) []Completion
CompleteStatic returns only in-memory completion sources. The UI uses this from Update so filesystem listing and walking are always deferred to a cancellable tea.Cmd.
func (*Completer) SearchFiles ¶
func (c *Completer) SearchFiles(ctx context.Context, query string) []Completion
SearchFiles performs a bounded, cancellation-aware filename search inside the workspace. Completion must never invoke MCP behind the permission and profile-scope broker; semantic search remains an explicit Cortex/MCP action.
func (*Completer) SetIgnorePatterns ¶
func (c *Completer) SetIgnorePatterns(patterns *config.IgnorePatterns)
SetIgnorePatterns sets the ignore patterns used to filter file completions.
func (*Completer) UpdateAgents ¶
func (*Completer) UpdateModels ¶
func (*Completer) UpdateProviders ¶ added in v0.17.0
func (*Completer) UpdateSkills ¶
func (*Completer) WorkspaceCompletions ¶ added in v0.8.0
func (c *Completer) WorkspaceCompletions(ctx context.Context, query, currentPath string) []Completion
WorkspaceCompletions performs every filesystem-backed completion operation. Callers must run it inside a tea.Cmd; context cancellation stops directory iteration and the bounded recursive search as soon as control returns from the underlying filesystem call.
type Completion ¶
type Completion struct {
Label string
Insert string
Category string
Description string
SearchTerms string
Index int
}
func FilterCompletions ¶
func FilterCompletions(items []Completion, query string) []Completion
FilterCompletions searches visible labels, useful descriptions, and hidden metadata such as command aliases without turning aliases into duplicate rows.
type CompletionDebounceTickMsg ¶
CompletionDebounceTickMsg fires after the debounce interval to trigger a search.
type CompletionSearchResultMsg ¶
type CompletionSearchResultMsg struct {
Generation uint64
Tag int
Results []Completion
}
CompletionSearchResultMsg delivers async vecgrep search results.
type CompletionState ¶
type CompletionState struct {
Kind string // "command", "attachments", "skills"
Filter textinput.Model // inline filter field
Anchor completionAnchor
CommandPrefix string // exact `/command ` prefix for registry action completion
BaseItems []Completion // non-workspace items retained across async searches
AllItems []Completion // full unfiltered list
FilteredItems []Completion // items matching current filter
Index int // cursor in FilteredItems
Selected map[int]bool // multi-select (keys = AllItems indices)
CurrentPath string // for @ file browsing: relative dir path
Searching bool // true while vecgrep is in flight
Generation uint64 // guards results across close/reopen cycles
DebounceTag int // cancel stale searches
SearchCancel context.CancelFunc
Preview completionPreview
PreviewToken uint64
PreviewCancel context.CancelFunc
}
CompletionState holds all state for the composer-owned completion popup.
type ContentGrid ¶ added in v0.25.0
type ContentGrid struct {
PaneWidth int
Profile GlyphProfile
}
ContentGrid is the single owner of transcript content-column geometry for a pane width and glyph profile. It does not own density or truncation budgets.
func (ContentGrid) ContentWidth ¶ added in v0.25.0
func (g ContentGrid) ContentWidth() int
ContentWidth is the flex column budget for semantic text. It matches chatContentWidth numerically: pane minus left and right chrome, floored at transcriptMinimumWorkColumns so caches stay stable on very narrow panes.
func (ContentGrid) IndentBlock ¶ added in v0.25.0
func (g ContentGrid) IndentBlock(accent, block string) string
IndentBlock prefixes every non-empty line with Prefix(accent). Empty lines stay empty so vertical rhythm is preserved.
func (ContentGrid) Line ¶ added in v0.25.0
func (g ContentGrid) Line(accent, content string) string
Line paints one grid row: Prefix(accent) plus content truncated to ContentWidth.
func (ContentGrid) LineWidth ¶ added in v0.25.0
func (g ContentGrid) LineWidth() int
LineWidth is accent + pad + content (= pane − right chrome when not floored).
func (ContentGrid) OriginX ¶ added in v0.25.0
func (g ContentGrid) OriginX() int
OriginX is the pane-relative column where semantic content begins. It is always contentLeftColumns and never density-dependent.
func (ContentGrid) Prefix ¶ added in v0.25.0
func (g ContentGrid) Prefix(accent string) string
Prefix forces accent to one display cell and appends the two-cell left pad. Empty accents become a single space so OriginX stays aligned.
type ContextCompactedMsg ¶ added in v0.6.0
type ContextCompactedMsg struct{}
ContextCompactedMsg invalidates the previous provider occupancy snapshot. The retained history is smaller, but its next exact prompt size is not known until Ollama reports the following request.
type ContextCompactionFinishedMsg ¶ added in v0.8.0
type ContextCompactionFinishedMsg struct{}
type ContextCompactionStartedMsg ¶ added in v0.8.0
type ContextCompactionStartedMsg struct{}
ContextCompactionStartedMsg and ContextCompactionFinishedMsg expose the hidden summarization request as one explicit UI phase. They carry no model text or transcript data.
type ContextDoctorMsg ¶ added in v0.29.0
type ContextDoctorMsg struct {
RequestID uint64
Breakdown agent.ContextBreakdown
}
ContextDoctorMsg carries one measured breakdown back to the open overlay.
type ContextDoctorState ¶ added in v0.29.0
type ContextDoctorState struct {
Breakdown agent.ContextBreakdown
Loaded bool
// contains filtered or unexported fields
}
ContextDoctorState is the transient context-usage viewer. It holds presentation state only; measurements come from the agent snapshot.
type ContextLoadResultMsg ¶
ContextLoadResultMsg completes a bounded asynchronous /load operation.
type ContinuationActionMsg ¶ added in v0.14.0
type ContinuationActionMsg struct {
TurnID string
Sequence uint64
Action *ContinuationActionPresentation
}
ContinuationActionMsg atomically replaces the ephemeral suggestion for one active turn. Sequence is monotonic within TurnID; a nil Action is an authoritative clear. Neither the message nor its presentation is persisted.
type ContinuationActionPresentation ¶ added in v0.14.0
type ContinuationActionPresentation struct {
Tool string
Inputs []string
BlockedBy []string
ReasonCode string
}
ContinuationActionPresentation is the UI-facing projection of one validated continuation suggestion. It deliberately excludes arguments, command text, workspace references, and arbitrary downstream prose. The agent adapter may populate it only after the exact continuation interpreter has accepted the source contract.
type CoreReadyMsg ¶ added in v0.28.0
type CoreReadyMsg struct {
Model string
ModelList []string
OllamaModels []OllamaModelDescriptor
LocalOnly bool
OllamaInventoryAttempted bool
AgentProfile string
NumCtx int
}
CoreReadyMsg signals that the host has committed the startup model and agent profile, so ordinary turns may run even while optional MCP/ICE work continues in the background.
type DiffFileProjection ¶ added in v0.18.0
type DiffFileProjection struct {
ID string
DisplayPath string
Lines []DiffLine
Truncated bool
Revision uint64
}
DiffFileProjection is the immutable, presentation-safe input for one file. DisplayPath is re-sanitized and confined to a workspace-relative label by NewDiffViewer. Revision zero represents a producer that has not published a complete first projection yet.
type DiffHunk ¶ added in v0.8.0
type DiffHunk struct {
OldStart int `json:"OldStart,omitempty"`
OldCount int `json:"OldCount,omitempty"`
NewStart int `json:"NewStart,omitempty"`
NewCount int `json:"NewCount,omitempty"`
}
DiffHunk is the structural range represented by one unified-diff hunk. Keeping the range typed means rendering and session restore never need to reverse-engineer coordinates from already-styled text.
type DiffLine ¶
type DiffLine struct {
Kind DiffLineKind
Content string
OldLine int `json:"OldLine,omitempty"`
NewLine int `json:"NewLine,omitempty"`
Hunk *DiffHunk `json:"Hunk,omitempty"`
}
DiffLine is a single line in a unified diff.
type DiffLineKind ¶
type DiffLineKind int
DiffLineKind represents the type of a diff line.
const ( DiffContext DiffLineKind = iota DiffAdded DiffRemoved DiffHunkHeader DiffEllipsis DiffOmitted DiffNoNewline )
type DiffViewer ¶ added in v0.18.0
type DiffViewer struct {
// contains filtered or unexported fields
}
DiffViewer is a presentation-only Charm component. Its files are cloned on admission; Bubbles owns scrolling and search editing while the parent owns every side effect described by DiffViewerEvent.
func NewDiffViewer ¶ added in v0.18.0
func NewDiffViewer( origin BlockID, files []DiffFileProjection, options DiffViewerOptions, ) *DiffViewer
NewDiffViewer constructs a viewer in unified mode. Invalid or absolute display paths are reduced to a safe relative basename before entering state.
func (*DiffViewer) Back ¶ added in v0.18.0
func (viewer *DiffViewer) Back() bool
Back consumes Escape while search owns focus. False means the parent may close the modal.
func (*DiffViewer) CurrentAnchor ¶ added in v0.18.0
func (viewer *DiffViewer) CurrentAnchor() DiffViewerAnchor
func (*DiffViewer) CurrentFileIndex ¶ added in v0.18.0
func (viewer *DiffViewer) CurrentFileIndex() int
func (*DiffViewer) EffectiveMode ¶ added in v0.18.0
func (viewer *DiffViewer) EffectiveMode() DiffViewerMode
func (*DiffViewer) Layout ¶ added in v0.18.0
func (viewer *DiffViewer) Layout() DiffViewerLayout
Layout returns the exact geometry and resolved mode consumed by View.
func (*DiffViewer) PreferredMode ¶ added in v0.18.0
func (viewer *DiffViewer) PreferredMode() DiffViewerMode
func (*DiffViewer) SetFiles ¶ added in v0.18.0
func (viewer *DiffViewer) SetFiles(files []DiffFileProjection)
SetFiles replaces an immutable producer projection without resetting the user's mode preference or semantic cursor. A live pending diff can therefore become complete in place; stale per-file cursors are discarded.
func (*DiffViewer) SetReducedMotion ¶ added in v0.18.0
func (viewer *DiffViewer) SetReducedMotion(reduced bool)
SetReducedMotion disables the search cursor blink without conflating motion, glyph capability, or color. The semantic anchor and frame allocation do not change.
func (*DiffViewer) SetScreenRect ¶ added in v0.18.0
func (viewer *DiffViewer) SetScreenRect(rect CellRect)
SetScreenRect is the non-zero-origin counterpart used by a parent that has already allocated a screen sub-rectangle.
func (*DiffViewer) SetSize ¶ added in v0.18.0
func (viewer *DiffViewer) SetSize(width, height int)
SetSize recomputes modal, BodyRect, capability, and wrapped-row geometry. Preferred split survives a narrow fallback and is restored when it fits.
func (*DiffViewer) SetTheme ¶ added in v0.18.0
func (viewer *DiffViewer) SetTheme(isDark bool, themeID string)
SetTheme refreshes every adaptive style while preserving mode, semantic selection, search state, and geometry.
func (*DiffViewer) Update ¶ added in v0.18.0
func (viewer *DiffViewer) Update(msg tea.Msg) (DiffViewerEvent, tea.Cmd)
Update handles presentation input and returns a bounded parent intent.
func (*DiffViewer) View ¶ added in v0.18.0
func (viewer *DiffViewer) View() string
View renders a frame-local modal. Its exact placement is described by Layout().OuterRect; the parent may center/overlay this frame without asking the child to infer the base transcript geometry.
func (*DiffViewer) ViewWithCursor ¶ added in v0.18.0
func (viewer *DiffViewer) ViewWithCursor() (string, *tea.Cursor)
ViewWithCursor renders the modal and a cursor local to the returned frame.
type DiffViewerAction ¶ added in v0.18.0
type DiffViewerAction uint8
DiffViewerAction identifies which user request was unavailable.
const ( DiffViewerActionNone DiffViewerAction = iota DiffViewerActionCopyLine DiffViewerActionCopyHunk DiffViewerActionCopyPath )
type DiffViewerAnchor ¶ added in v0.18.0
type DiffViewerAnchor struct {
FileID string
LineIndex int
PeerLineIndex int
Continuation int
Side DiffViewerSide
}
DiffViewerAnchor binds a physical wrapped row to stable source identity. Continuation zero is the first painted row of a logical DiffLine. Split rows retain both source indices because removed and added lines may share a row.
type DiffViewerEvent ¶ added in v0.18.0
type DiffViewerEvent struct {
Kind DiffViewerEventKind
Action DiffViewerAction
BlockID BlockID
FileID string
FileIndex int
HunkIndex int
LineIndex int
Text string
Truncated bool
DisabledReason string
}
DiffViewerEvent is a bounded scalar request for the smart parent. BlockID remains the original transcript authority across file, hunk, and line navigation. Text contains terminal-safe plain text only.
type DiffViewerEventKind ¶ added in v0.18.0
type DiffViewerEventKind uint8
DiffViewerEventKind names a parent-owned side effect request. The component never calls a clipboard implementation and never appends a transcript row.
const ( DiffViewerEventNone DiffViewerEventKind = iota DiffViewerEventCopyLine DiffViewerEventCopyHunk DiffViewerEventCopyPath )
type DiffViewerLayout ¶ added in v0.18.0
type DiffViewerLayout struct {
ScreenRect CellRect
OuterRect CellRect
InnerRect CellRect
HeaderRect CellRect
SearchRect CellRect
BodyRect CellRect
PreferredMode DiffViewerMode
EffectiveMode DiffViewerMode
ShowNumbers bool
UnifiedCodeWidth int
OldCodeWidth int
NewCodeWidth int
OldDigits int
NewDigits int
SplitAvailable bool
UnifiedAvailable bool
DisabledReason string
}
DiffViewerLayout is the exact half-open geometry used for both capability decisions and paint. Rectangles are expressed in screen coordinates.
type DiffViewerMode ¶ added in v0.18.0
type DiffViewerMode uint8
DiffViewerMode separates the user's durable presentation preference from the mode that fits the current BodyRect.
const ( DiffViewerUnified DiffViewerMode = iota DiffViewerSplit )
func (DiffViewerMode) String ¶ added in v0.18.0
func (mode DiffViewerMode) String() string
type DiffViewerOptions ¶ added in v0.18.0
type DiffViewerOptions struct {
Width int
Height int
IsDark bool
ThemeID string
ReducedMotion bool
GlyphProfile GlyphProfile
}
DiffViewerOptions supplies presentation-only host state.
type DiffViewerSide ¶ added in v0.18.0
type DiffViewerSide uint8
DiffViewerSide identifies the logical side selected within a split row. Unified rows use DiffViewerSideUnified.
const ( DiffViewerSideUnified DiffViewerSide = iota DiffViewerSideOld DiffViewerSideNew )
type EntityKind ¶ added in v0.18.0
type EntityKind uint8
EntityKind identifies the scalar domain identity carried by a UI action. The reference deliberately excludes presentation models, raw tool payloads, and provider objects.
const ( EntityKindNone EntityKind = iota EntityKindTranscriptBlock EntityKindToolInvocation EntityKindAgentInvocation EntityKindOverlay EntityKindDiffLocation )
func (EntityKind) Valid ¶ added in v0.18.0
func (kind EntityKind) Valid() bool
Valid reports whether kind is a supported action target category.
type EntityRef ¶ added in v0.18.0
type EntityRef struct {
Kind EntityKind
BlockID BlockID
InvocationID string
OverlayID OverlayID
FileIndex int
HunkIndex int
LineIndex int
}
EntityRef is the complete target admitted across the UI action boundary. Every field is scalar so keyboard and pointer input produce the same inspectable request without closures or raw domain payloads.
type ExpertProgressItem ¶ added in v0.15.0
type ExpertProgressItem struct {
Index int `json:"index"`
Expert string `json:"expert"`
Model string `json:"model"`
Location llm.OllamaModelLocation `json:"location"`
Phase expertteam.ProgressPhase `json:"phase"`
Status expertteam.ExpertStatus `json:"status,omitempty"`
FailureCode string `json:"failure_code,omitempty"`
EvalTokens int `json:"eval_tokens,omitempty"`
}
ExpertProgressItem is the bounded, host-owned UI projection for one expert. It deliberately has no prompt, objective, report, provider error, reasoning, path, or arbitrary metadata field.
type ExpertProgressMsg ¶ added in v0.15.0
type ExpertProgressMsg struct {
CallID string
Event expertteam.ProgressEvent
}
ExpertProgressMsg carries one already bounded scheduler event for the exact consult_experts call identified by CallID. It contains no prompt, objective, report, reasoning, provider error prose, or arbitrary metadata.
type ExpertProgressState ¶ added in v0.15.0
type ExpertProgressState struct {
Sequence uint64 `json:"sequence"`
Strategy expertselector.Strategy `json:"strategy"`
Total int `json:"total"`
Parallelism int `json:"parallelism"`
Running int `json:"running"`
Queued int `json:"queued"`
Completed int `json:"completed"`
Failed int `json:"failed"`
Experts []ExpertProgressItem `json:"experts"`
}
ExpertProgressState is the complete bounded consultation projection. The slice is fixed to Total (at most sixteen) and replaces an unbounded map.
type ExportResultMsg ¶
ExportResultMsg reports the outcome of an atomic asynchronous /export.
type FailedServer ¶
FailedServer records an MCP server that failed to connect.
type FocusOwner ¶ added in v0.18.0
type FocusOwner uint8
FocusOwner identifies a stable, scalar focus destination.
const ( FocusOwnerUnknown FocusOwner = iota FocusOwnerComposer FocusOwnerTranscript FocusOwnerModal )
func (FocusOwner) Valid ¶ added in v0.18.0
func (owner FocusOwner) Valid() bool
Valid reports whether owner can receive restored focus.
type FocusToken ¶ added in v0.18.0
type FocusToken struct {
Owner FocusOwner
OverlayID OverlayID
ControlID string
}
FocusToken identifies a focus destination without retaining a Bubbles model or callback. ControlID optionally identifies a child control within a modal.
func DefaultFocusToken ¶ added in v0.18.0
func DefaultFocusToken() FocusToken
DefaultFocusToken is the final focus fallback after a modal chain closes.
func (FocusToken) Valid ¶ added in v0.18.0
func (token FocusToken) Valid() bool
Valid reports whether token is internally consistent and terminal-safe.
type FrameProjection ¶ added in v0.17.0
type FrameProjection struct {
Screen CellRect
SafeScreen CellRect
WidthClass WidthClass
HeightClass HeightClass
TranscriptFloorRows int
VerticalFit FrameVerticalFit
Header FrameSurfaceProjection
Transcript FrameSurfaceProjection
Cursor *tea.Cursor
}
FrameProjection is the single geometry snapshot consumed by View and by viewport sizing. Header (session chrome), transcript, and footer stack vertically; overlays remain a z-layer over these stable base rectangles.
type FrameSurfaceProjection ¶ added in v0.17.0
FrameSurfaceProjection binds painted content to the exact half-open cell rectangle owned by that surface.
type FrameVerticalFit ¶ added in v0.18.0
type FrameVerticalFit uint8
FrameVerticalFit records which vertical policy produced the frame. It keeps cramped layouts observable without making View infer intent from rectangle sizes.
const ( // FrameVerticalComfortable means the complete footer, including ordinary // separation chrome, fit alongside the transcript floor. FrameVerticalComfortable FrameVerticalFit = iota // FrameVerticalCondensed means only redundant divider/spacing rows were // removed to preserve the transcript floor. No control or authored footer // content was hidden. FrameVerticalCondensed // FrameVerticalOwnerPriority means the footer's critical controls alone // exceeded the remaining rows. The controls remain complete and the // transcript receives the physical remainder, which can be below its floor. FrameVerticalOwnerPriority // FrameVerticalRecovery means the terminal-size recovery surface replaces // the base transcript/footer entirely. Its geometry remains canonical, but // neither base surface is painted. FrameVerticalRecovery )
type GlyphProfile ¶ added in v0.18.0
type GlyphProfile uint8
GlyphProfile selects terminal-safe symbols independently from color and motion preferences. NO_COLOR must never silently imply ASCII: a terminal may support Unicode while intentionally disabling color.
const ( GlyphUnicode GlyphProfile = iota GlyphASCII )
func (GlyphProfile) Valid ¶ added in v0.18.0
func (profile GlyphProfile) Valid() bool
type GlyphSet ¶ added in v0.18.0
type GlyphSet struct {
UserRail string
Collapsed string
Expanded string
Success string
Error string
Running string
Queued string
Waiting string
Cancelled string
Continuation string
Selected string
Unselected string
Vertical string
Horizontal string
Left string
Right string
}
GlyphSet is the semantic vocabulary shared by transcript, tools, agents, and controls. Every token below is one terminal cell in both profiles so swapping profiles cannot change layout geometry.
type GoalAction ¶ added in v0.5.0
type GoalAction string
GoalAction is emitted to the parent when a user selects a form action. The parent owns persistence and the goal lifecycle; GoalForm only collects and validates presentation state.
const ( GoalActionNone GoalAction = "" GoalActionSave GoalAction = "save" GoalActionPause GoalAction = "pause" GoalActionResume GoalAction = "resume" GoalActionClear GoalAction = "clear" GoalActionCancel GoalAction = "cancel" )
type GoalAdvisor ¶ added in v0.5.0
type GoalAdvisor interface {
Open(context.Context, goaladvisor.OpenRequest) (goaladvisor.Advice, error)
Status(context.Context, string) (goaladvisor.Advice, error)
}
GoalAdvisor is the semantic Cortex seam. Implementations may discover it directly or through MCPHub. Typed continuation suggestions are owned by the agent's exact registry/schema/policy interpreter, never this UI adapter.
type GoalDecisionAdvisor ¶ added in v0.8.0
type GoalDecisionAdvisor interface {
AnswerDecision(context.Context, goaladvisor.AnswerDecisionRequest) (goaladvisor.Advice, error)
}
GoalDecisionAdvisor is optional so existing GoalAdvisor implementations and test fakes retain source compatibility. Answering is discovered only at the explicit confirmation boundary.
type GoalForm ¶ added in v0.5.0
type GoalForm struct {
// contains filtered or unexported fields
}
GoalForm is a parent-routed, persistence-free inline component. It does not implement tea.Model: the application Model receives messages first and may forward them through Update, then decide what to do with GoalFormEvent.
func NewGoalForm ¶ added in v0.5.0
func NewGoalForm(initial GoalFormValues, options GoalFormOptions) *GoalForm
NewGoalForm creates a focused, responsive goal form. The zero options value defaults to an 80x24 canvas and Save/Cancel actions.
func (*GoalForm) ActiveField ¶ added in v0.5.0
func (f *GoalForm) ActiveField() GoalFormField
ActiveField returns the currently focused form step.
func (*GoalForm) BudgetOnly ¶ added in v0.5.0
BudgetOnly reports whether the immutable goal definition is locked.
func (*GoalForm) Error ¶ added in v0.5.0
Error returns the most recent inline validation or parent-owned semantic message.
func (*GoalForm) SetActiveField ¶ added in v0.5.0
func (f *GoalForm) SetActiveField(field GoalFormField) tea.Cmd
SetActiveField moves focus without changing any values.
func (*GoalForm) SetBudgetOnly ¶ added in v0.5.0
SetBudgetOnly switches between new-goal editing and immutable-definition budget amendment. Locked definition fields remain visible but are skipped by focus and never receive input messages.
func (*GoalForm) SetChoices ¶ added in v0.5.0
func (f *GoalForm) SetChoices(choices ...GoalFormChoice)
SetChoices replaces the final action row. Blank choices are discarded and an empty result restores the safe Save/Cancel defaults.
func (*GoalForm) SetError ¶ added in v0.6.0
SetError presents a parent-owned semantic error without changing the user's values, focus, or selected action. The parent remains responsible for deciding whether an action is authorized; GoalForm only renders the feedback beside the action that was rejected.
func (*GoalForm) SetReducedMotion ¶ added in v0.5.0
SetReducedMotion replaces blinking cursors with static cursors. GoalForm never schedules decorative animation ticks of its own.
func (*GoalForm) SetSize ¶ added in v0.5.0
SetSize adapts the cached form and its Bubbles inputs to the current canvas.
func (*GoalForm) SetTheme ¶ added in v0.5.0
SetTheme reapplies the project's LightDark-derived semantic palette.
func (*GoalForm) Update ¶ added in v0.5.0
Update applies one parent-routed Bubble Tea message and emits a semantic action when appropriate. The returned command belongs in the parent's normal command batch so Bubbles cursor behavior remains cancellable.
func (*GoalForm) Values ¶ added in v0.5.0
func (f *GoalForm) Values() (GoalFormValues, error)
Values validates and returns the typed form payload.
type GoalFormChoice ¶ added in v0.5.0
type GoalFormChoice struct {
Action GoalAction
Label string
Description string
RequiresValidGoal bool
Destructive bool
}
GoalFormChoice configures one action in the form's final focus step. RequiresValidGoal should be true for actions that create or update a goal.
type GoalFormEvent ¶ added in v0.5.0
type GoalFormEvent struct {
Action GoalAction
Values GoalFormValues
}
GoalFormEvent describes a user decision. GoalActionNone means the form only changed local presentation state.
type GoalFormField ¶ added in v0.5.0
type GoalFormField int
GoalFormField identifies one keyboard-focusable step in GoalForm.
const ( GoalFieldObjective GoalFormField = iota GoalFieldAcceptance GoalFieldTurns GoalFieldTokens GoalFieldTime GoalFieldActions )
type GoalFormOptions ¶ added in v0.5.0
type GoalFormOptions struct {
Width int
Height int
IsDark bool
ThemeID string
ReducedMotion bool
GlyphProfile GlyphProfile
// DraftFromPrompt tells the form that the initial definition was inferred
// from the user's composer text. The draft remains fully editable.
DraftFromPrompt bool
// FollowUpPrompt replaces generic review copy when the inferred draft is
// missing one concrete detail. It is guidance, not a validation error.
FollowUpPrompt string
// BudgetOnly locks the immutable objective and acceptance criteria while
// preserving them as context for a budget amendment.
BudgetOnly bool
Choices []GoalFormChoice
}
GoalFormOptions contains display preferences owned by the parent Model.
type GoalFormValues ¶ added in v0.5.0
type GoalFormValues struct {
Objective string
AcceptanceCriteria string
TurnBudget int64
TokenBudget int64
TimeBudget time.Duration
}
GoalFormValues is the typed payload collected by GoalForm. A zero budget means no limit.
func (GoalFormValues) CriterionDescriptions ¶ added in v0.5.0
func (v GoalFormValues) CriterionDescriptions() []string
CriterionDescriptions returns the normalized, nonblank line items the parent can map to durable acceptance-criterion IDs.
type GoalInspector ¶ added in v0.5.0
type GoalInspector struct {
// contains filtered or unexported fields
}
GoalInspector is a read-only goal document plus a small action rail. A Bubbles viewport keeps the same information reachable at 30x12 without letting the modal grow beyond the terminal.
func NewGoalInspector ¶ added in v0.5.0
func NewGoalInspector(snapshot goal.Snapshot, actions []command.ActionState, options GoalInspectorOptions) *GoalInspector
NewGoalInspector creates a focused, persistence-free inspector.
func (*GoalInspector) CancelConfirmation ¶ added in v0.5.0
func (i *GoalInspector) CancelConfirmation() bool
CancelConfirmation consumes Escape only while a destructive action is armed. A second Escape is then owned by the parent and closes the modal.
func (*GoalInspector) SetReducedMotion ¶ added in v0.5.0
func (i *GoalInspector) SetReducedMotion(reduced bool)
SetReducedMotion records the shared accessibility preference. The inspector intentionally has no autonomous ticker, so selection remains deterministic.
func (*GoalInspector) SetSize ¶ added in v0.5.0
func (i *GoalInspector) SetSize(width, height int)
SetSize adapts both the document viewport and compact action grammar.
func (*GoalInspector) SetTheme ¶ added in v0.5.0
func (i *GoalInspector) SetTheme(isDark bool, themeID string)
SetTheme reapplies the project LightDark-derived semantic palette.
func (*GoalInspector) Update ¶ added in v0.5.0
func (i *GoalInspector) Update(msg tea.KeyPressMsg) (GoalInspectorEvent, tea.Cmd)
Update handles presentation navigation only and returns intent to the smart parent. Destructive actions require a second explicit Enter receipt.
func (*GoalInspector) View ¶ added in v0.5.0
func (i *GoalInspector) View() string
View renders a cached modal frame. The viewport is only rebuilt when data, size, theme, or navigation changes.
type GoalInspectorEvent ¶ added in v0.5.0
GoalInspectorEvent asks the parent to execute one already-resolved command action. The child never mutates the goal runtime or persists session state.
type GoalInspectorOptions ¶ added in v0.5.0
type GoalInspectorOptions struct {
Width int
Height int
IsDark bool
ThemeID string
ReducedMotion bool
GlyphProfile GlyphProfile
Now time.Time
PersistenceDirty bool
RecoveryStatus string
}
GoalInspectorOptions contains presentation-only host state. The durable snapshot and resolved actions remain immutable for the lifetime of a modal; the smart parent opens a fresh inspector after every lifecycle transition.
type GoalPhase ¶ added in v0.5.0
type GoalPhase string
GoalPhase is the lifecycle state displayed by RenderGoalStatusLine.
type GoalRecovery ¶ added in v0.5.0
type GoalRecovery struct {
// contains filtered or unexported fields
}
GoalRecovery is a Charm-native, persistence-free recovery wizard. The child owns focus and draft presentation only; it cannot inspect storage, mutate a goal, resume execution, or claim completion.
func NewGoalRecovery ¶ added in v0.5.0
func NewGoalRecovery(items []GoalRecoveryItem, options GoalRecoveryOptions) *GoalRecovery
NewGoalRecovery creates a focused recovery list. Zero dimensions default to an 80x24 canvas; SetSize keeps it responsive after construction.
func (*GoalRecovery) ActionableCount ¶ added in v0.5.0
func (r *GoalRecovery) ActionableCount() int
ActionableCount reports how many immutable items the parent explicitly marked safe to submit to its reconciliation service.
func (*GoalRecovery) Draft ¶ added in v0.5.0
func (r *GoalRecovery) Draft() GoalRecoveryDraft
Draft returns a copy of the current, unvalidated presentation draft.
func (*GoalRecovery) SelectedItem ¶ added in v0.5.0
func (r *GoalRecovery) SelectedItem() (GoalRecoveryItem, bool)
SelectedItem returns a copy of the selected immutable item.
func (*GoalRecovery) SetBusy ¶ added in v0.5.0
func (r *GoalRecovery) SetBusy(message string)
SetBusy marks a coordinator operation as in flight. Escape navigation stays available, but the wizard emits no second Apply event until the parent clears the state with an empty message.
func (*GoalRecovery) SetError ¶ added in v0.5.0
func (r *GoalRecovery) SetError(message string)
SetError attaches a bounded parent/coordinator failure to the active step. It never advances, closes, or clears the operator's draft.
func (*GoalRecovery) SetItems ¶ added in v0.5.0
func (r *GoalRecovery) SetItems(items []GoalRecoveryItem) tea.Cmd
SetItems replaces the parent's immutable projection while preserving the selected item identity when possible. A draft whose item disappeared is discarded and returned to the list rather than being retargeted.
func (*GoalRecovery) SetReducedMotion ¶ added in v0.5.0
func (r *GoalRecovery) SetReducedMotion(reduced bool)
SetReducedMotion replaces blinking Bubbles cursors with static cursors.
func (*GoalRecovery) SetSize ¶ added in v0.5.0
func (r *GoalRecovery) SetSize(width, height int)
SetSize adapts every Bubbles child to the current terminal canvas.
func (*GoalRecovery) SetTheme ¶ added in v0.5.0
func (r *GoalRecovery) SetTheme(isDark bool, themeID string)
SetTheme reapplies the existing LightDark-derived semantic palette.
func (*GoalRecovery) ShowRecordedReceipt ¶ added in v0.5.0
func (r *GoalRecovery) ShowRecordedReceipt(items []GoalRecoveryItem, notice string) tea.Cmd
ShowRecordedReceipt refreshes the immutable projection after a partial coordinator receipt, clears the now-consumed draft, and returns focus to the list. Persistence remains entirely parent-owned.
func (*GoalRecovery) Stage ¶ added in v0.5.0
func (r *GoalRecovery) Stage() GoalRecoveryStage
Stage reports the visible presentation step.
func (*GoalRecovery) Update ¶ added in v0.5.0
func (r *GoalRecovery) Update(msg tea.Msg) (GoalRecoveryEvent, tea.Cmd)
Update handles presentation messages routed by the smart parent and emits only Close or Apply intent. It never performs asynchronous work itself.
func (*GoalRecovery) View ¶ added in v0.5.0
func (r *GoalRecovery) View() string
View renders the cached modal without a hardware cursor.
func (*GoalRecovery) ViewWithCursor ¶ added in v0.5.0
func (r *GoalRecovery) ViewWithCursor() (string, *tea.Cursor)
ViewWithCursor renders the modal and a frame-local Bubble Tea cursor.
type GoalRecoveryAction ¶ added in v0.5.0
type GoalRecoveryAction string
GoalRecoveryAction is a presentation intent, never a lifecycle mutation.
const ( GoalRecoveryActionNone GoalRecoveryAction = "" GoalRecoveryActionClose GoalRecoveryAction = "close" GoalRecoveryActionApply GoalRecoveryAction = "apply" )
type GoalRecoveryDraft ¶ added in v0.5.0
type GoalRecoveryDraft struct {
Observation GoalRecoveryObservation
Source GoalRecoverySource
Summary string
Reference string
}
GoalRecoveryDraft is the bounded presentation payload emitted to the smart parent. The parent remains responsible for scope checks, evidence encoding, persistence, and every Goal Runtime transition.
type GoalRecoveryEvent ¶ added in v0.5.0
type GoalRecoveryEvent struct {
Action GoalRecoveryAction
ItemID string
Draft GoalRecoveryDraft
}
GoalRecoveryEvent asks the parent either to close the overlay or apply one validated draft to the exact immutable item. An empty Action is a local-only presentation update.
type GoalRecoveryItem ¶ added in v0.5.0
type GoalRecoveryItem struct {
ItemID string
Kind GoalRecoveryItemKind
Subject string
Summary string
Tool string
ExecutionID string
TurnID string
EventType string
EffectClass string
Age string
Actionable bool
// DisabledReason is shown when the coordinator supplied an observational
// parent/group item that cannot yet produce a reconciliation request.
DisabledReason string
}
GoalRecoveryItem is a sanitized, immutable presentation projection supplied by the smart parent. It deliberately contains no payload or raw tool arguments. GoalRecovery copies every item and never mutates one.
type GoalRecoveryItemKind ¶ added in v0.5.0
type GoalRecoveryItemKind string
GoalRecoveryItemKind keeps turn-level authority distinct from exact execution-effect evidence. The coordinator, not the UI, assigns this kind.
const ( GoalRecoveryExecutionEffect GoalRecoveryItemKind = "execution_effect" GoalRecoveryTurnBoundary GoalRecoveryItemKind = "turn_boundary" )
type GoalRecoveryObservation ¶ added in v0.5.0
type GoalRecoveryObservation string
GoalRecoveryObservation records what the operator observed. Still unknown is a safe navigation choice, not evidence and never reaches an apply event.
const ( GoalRecoveryEffectApplied GoalRecoveryObservation = "effect_applied" GoalRecoveryEffectNotApplied GoalRecoveryObservation = "effect_not_applied" GoalRecoveryEffectCompensated GoalRecoveryObservation = "effect_compensated" GoalRecoveryTurnAbandonedAfterInspection GoalRecoveryObservation = "turn_abandoned_after_inspection" GoalRecoveryStillUnknown GoalRecoveryObservation = "still_unknown" )
type GoalRecoveryOptions ¶ added in v0.5.0
type GoalRecoveryOptions struct {
Width int
Height int
IsDark bool
ThemeID string
ReducedMotion bool
GlyphProfile GlyphProfile
// Standalone adapts the already-designed evidence review for an ordinary
// goal-less session. Persistence and authority remain parent-owned.
Standalone bool
}
GoalRecoveryOptions contains presentation-only host preferences.
type GoalRecoverySource ¶ added in v0.5.0
type GoalRecoverySource string
GoalRecoverySource describes the evidence locator without carrying backend authority or claiming that the execution ledger completed.
const ( GoalRecoveryExternalReceipt GoalRecoverySource = "external_receipt" GoalRecoveryWorkspaceArtifact GoalRecoverySource = "workspace_artifact" GoalRecoveryVerificationCheck GoalRecoverySource = "verification_check" GoalRecoveryOperatorObservation GoalRecoverySource = "operator_observation" )
type GoalRecoveryStage ¶ added in v0.5.0
type GoalRecoveryStage int
GoalRecoveryStage identifies the currently visible step. Stages are exposed so the parent can describe focus without inspecting child internals.
const ( GoalRecoveryStageList GoalRecoveryStage = iota GoalRecoveryStageObservation GoalRecoveryStageSource GoalRecoveryStageSummary GoalRecoveryStageReference GoalRecoveryStageConfirmation )
type GoalSummary ¶ added in v0.5.0
type GoalSummary struct {
Objective string
Phase GoalPhase
TurnsUsed int64
TurnBudget int64
TokensUsed int64
TokenBudget int64
Elapsed time.Duration
TimeBudget time.Duration
}
GoalSummary contains only the presentation data needed by the compact goal line. Zero budgets are omitted rather than presented as misleading limits.
type HeightClass ¶ added in v0.17.0
type HeightClass uint8
HeightClass is the vertical density tier for a terminal frame. Recovery is the zero value so an unmeasured terminal fails safe.
const ( HeightRecovery HeightClass = iota HeightCompact HeightShort HeightRegular HeightTall )
func ClassifyHeight ¶ added in v0.17.0
func ClassifyHeight(height int) HeightClass
ClassifyHeight maps a terminal height to its vertical density tier.
type HitRegion ¶ added in v0.18.0
type HitRegion struct {
Rect CellRect
Z int
ActionID command.ActionID
Target EntityRef
// contains filtered or unexported fields
}
HitRegion is one exact half-open cell rectangle in a rendered action projection. order is assigned by HitRegionSet and models paint order.
func (HitRegion) Order ¶ added in v0.18.0
Order returns the deterministic insertion order used to break equal-Z hits.
func (HitRegion) Request ¶ added in v0.18.0
func (region HitRegion) Request() UIActionRequest
Request returns the same typed request used by keyboard activation.
type HitRegionSet ¶ added in v0.18.0
type HitRegionSet struct {
// contains filtered or unexported fields
}
HitRegionSet owns the pointer projection for one rendered frame. The zero value is ready to use; callers should rebuild it whenever layout changes.
func (*HitRegionSet) Add ¶ added in v0.18.0
func (set *HitRegionSet) Add(rect CellRect, z int, actionID command.ActionID, target EntityRef) bool
Add appends an exact hit rectangle. Empty or malformed regions fail closed.
func (*HitRegionSet) Hit ¶ added in v0.18.0
func (set *HitRegionSet) Hit(x, y int) (UIActionRequest, bool)
Hit resolves one terminal cell to the visually top-most request. Higher Z wins; within the same Z the most recently painted region wins.
func (*HitRegionSet) Regions ¶ added in v0.18.0
func (set *HitRegionSet) Regions() []HitRegion
Regions returns a copy in paint order.
func (*HitRegionSet) Reset ¶ added in v0.18.0
func (set *HitRegionSet) Reset()
Reset removes all regions and restarts paint order for a fresh frame.
type ImageAttachmentResultMsg ¶ added in v0.12.0
type ImageAttachmentResultMsg struct {
Token uint64
Preflight bool
Name string
Ref imageasset.Ref
Image llm.ImageData
Fallback string
Err error
}
ImageAttachmentResultMsg completes one tokened asynchronous image admission. Fallback is reserved for explicit single-file callers; terminal PasteMsg image lists deliberately leave it empty so source paths never become prompt or session text after an admission failure.
type ImportResultMsg ¶
type ImportResultMsg struct {
Token uint64
Path string
Entries []ChatEntry
Messages []llm.Message
UIOnlySections int
ToolSections int
Err error
}
ImportResultMsg completes a bounded asynchronous /import operation. Parsing is done off the BubbleTea update loop so a large valid transcript cannot freeze rendering.
type InitCompleteMsg ¶
type InitCompleteMsg struct {
Model string
ModelList []string
OllamaModels []OllamaModelDescriptor
OllamaVersion string
LocalOnly bool
OllamaInventoryAttempted bool
AgentProfile string
AgentList []string
ToolCount int
ServerCount int
NumCtx int
FailedServers []FailedServer
MCPServers []MCPServerStatus
ICEEnabled bool
ICEConversations int
ICESessionID string
}
InitCompleteMsg signals startup is done.
type Insets ¶ added in v0.17.0
Insets reserves terminal cells along the four edges of a CellRect. Negative values are treated as zero.
type KeyHelpSection ¶ added in v0.27.0
KeyHelpSection is a titled group of bindings.
The title lives here rather than in the help renderer because this is where the grouping decision belongs: a binding added to a section is documented under that heading automatically, and a renderer cannot invent a category the keymap disagrees with.
type KeyMap ¶
type KeyMap struct {
Send key.Binding
NewLine key.Binding
Cancel key.Binding
Quit key.Binding
ClearView key.Binding
NewConvo key.Binding
Help key.Binding
ToggleTools key.Binding
PageUp key.Binding
PageDown key.Binding
HalfPageUp key.Binding
HalfPageDn key.Binding
JumpLatest key.Binding
Complete key.Binding
CompleteUp key.Binding
CompleteDown key.Binding
CompleteToggle key.Binding
CompleteSelect key.Binding
CopyLast key.Binding
ToggleMouse key.Binding
Paste key.Binding
InspectOutput key.Binding
InspectDiff key.Binding
CycleMode key.Binding
ModelPicker key.Binding
SettingsPicker key.Binding
AgentHub key.Binding
TranscriptSearch key.Binding
HistoryUp key.Binding
HistoryDown key.Binding
ToggleFocusedTool key.Binding
ToggleThinking key.Binding
CompactToggle key.Binding
ExternalEditor key.Binding
}
KeyMap defines all keyboard shortcuts for the application.
func (KeyMap) FullHelp ¶
FullHelp satisfies the Bubbles help.KeyMap interface. It is derived from HelpSections so the two cannot describe different key surfaces.
func (KeyMap) HelpSections ¶ added in v0.27.0
func (k KeyMap) HelpSections() []KeyHelpSection
HelpSections groups every binding by the task a reader is trying to do.
The help overlay used to print all twenty-six as one undifferentiated list, which meant finding "how do I search the transcript" was a linear scan past every editing and paging key. Sections are ordered by how often a reader needs them, not alphabetically or by keystroke.
type LayoutCapabilities ¶ added in v0.18.0
type LayoutCapabilities struct {
WorkRect CellRect
WorkWidth int
WorkHeight int
ProseWidth int
WidthClass WidthClass
HeightClass HeightClass
Density LayoutDensity
CanDockContext bool
CanShowRichHeader bool
CanShowDiffGutters bool
CanShowDualGutters bool
CanUseSplitDiff bool
CanStackAuxiliary bool
CanShowAgentPreview bool
}
LayoutCapabilities is the immutable geometry contract for one component. WorkRect must be the component's final allocated rectangle, after parent splits and insets. Every width capability is calculated from residual work cells rather than from the outer terminal width.
func DeriveLayoutCapabilities ¶ added in v0.18.0
func DeriveLayoutCapabilities(workRect CellRect, options LayoutCapabilityOptions) LayoutCapabilities
DeriveLayoutCapabilities measures the final work rectangle for a component. The fixed numbers below are named design tokens. In particular, diff and split decisions require the minimum readable code width to remain after gutters and gaps have been subtracted.
type LayoutCapabilityOptions ¶ added in v0.18.0
type LayoutCapabilityOptions struct {
ForceCompact bool
}
LayoutCapabilityOptions contains explicit user presentation preferences. ForceCompact changes density, but not the component's measured capacity.
type LayoutDensity ¶ added in v0.18.0
type LayoutDensity uint8
LayoutDensity is a presentation choice made after measuring a component. It must not be used as a substitute for a physical capability check.
const ( LayoutDensityCompact LayoutDensity = iota LayoutDensityRegular LayoutDensitySpacious )
type LineMap ¶ added in v0.17.0
type LineMap []TranscriptLinePoint
LineMap is ordered lexicographically by LogicalOffset then Grapheme, with non-decreasing rendered rows.
type MCPServerStatus ¶ added in v0.8.0
MCPServerStatus is a bounded presentation snapshot. Detail is transient UI context only and is sanitized again when it enters Model state; it must never be copied into persisted transcript or session state.
type MCPStatusSnapshotMsg ¶ added in v0.8.0
type MCPStatusSnapshotMsg struct {
Servers []MCPServerStatus
}
MCPStatusSnapshotMsg replaces the previous cached MCP presentation state. The registry health monitor emits it after connection-state transitions.
type MarkdownRenderer ¶
type MarkdownRenderer struct {
// contains filtered or unexported fields
}
MarkdownRenderer handles markdown rendering with caching support.
func NewMarkdownRenderer ¶
func NewMarkdownRenderer(width int, isDark bool, themeID string) *MarkdownRenderer
NewMarkdownRenderer creates a renderer for the given terminal width and theme.
func (*MarkdownRenderer) RenderFull ¶
func (mr *MarkdownRenderer) RenderFull(content string) string
RenderFull renders a complete markdown document (for finished messages). This is the "format-on-complete" path used when streaming ends.
func (*MarkdownRenderer) RenderStreaming ¶
func (mr *MarkdownRenderer) RenderStreaming(content string) string
RenderStreaming renders content during streaming (plain text, no Glamour). This avoids jitter from re-rendering incomplete markdown.
func (*MarkdownRenderer) RenderStreamingFormatted ¶
func (mr *MarkdownRenderer) RenderStreamingFormatted(content string) (formatted, tail string)
RenderStreamingFormatted renders in-progress content using the stable-prefix technique: the portion of the document up to the last safe markdown boundary (a blank line not inside an open code fence) is rendered with Glamour and cached; the trailing partial paragraph is returned separately to be shown as plain text. This makes streaming look formatted instead of "popping" into shape on completion, without the jitter of re-rendering incomplete markdown.
func (*MarkdownRenderer) SetWidth ¶
func (mr *MarkdownRenderer) SetWidth(width int)
SetWidth updates the renderer for a new terminal width.
type ModalInstance ¶ added in v0.18.0
ModalInstance is the payload-free identity of one stacked viewer.
func (ModalInstance) FocusToken ¶ added in v0.18.0
func (modal ModalInstance) FocusToken() FocusToken
FocusToken returns the root focus identity for modal.
func (ModalInstance) Valid ¶ added in v0.18.0
func (modal ModalInstance) Valid() bool
Valid reports whether modal can safely enter the stack.
type ModalKind ¶ added in v0.18.0
type ModalKind uint8
ModalKind identifies the new viewer family hosted by ModalStack.
type ModalStack ¶ added in v0.18.0
type ModalStack struct {
// contains filtered or unexported fields
}
ModalStack manages nested viewer identity and focus restoration. Bubble Tea's smart parent remains responsible for child Update and View calls.
func (*ModalStack) Clear ¶ added in v0.18.0
func (stack *ModalStack) Clear(fallback FocusToken) ([]ModalInstance, FocusToken)
Clear removes the entire chain in visual dismissal order (top first) and restores the focus captured before the bottom modal opened.
func (*ModalStack) Empty ¶ added in v0.18.0
func (stack *ModalStack) Empty() bool
Empty reports whether the stack has no active viewer.
func (*ModalStack) Len ¶ added in v0.18.0
func (stack *ModalStack) Len() int
Len returns the number of stacked modal viewers.
func (*ModalStack) Pop ¶ added in v0.18.0
func (stack *ModalStack) Pop(fallback FocusToken) (ModalInstance, FocusToken, bool)
Pop removes the active modal and returns the live focus destination. When a parent modal remains it always owns focus; after the last modal closes, a stale restoration token falls back to fallback and finally the composer.
func (*ModalStack) Projection ¶ added in v0.18.0
func (stack *ModalStack) Projection() OverlayProjection
Projection returns the active top modal and current stack depth.
func (*ModalStack) Push ¶ added in v0.18.0
func (stack *ModalStack) Push(modal ModalInstance, currentFocus FocusToken) error
Push adds modal and records the focus destination active before it opened. Invalid or stale modal focus falls back to the current top modal, then the composer.
func (*ModalStack) Replace ¶ added in v0.18.0
func (stack *ModalStack) Replace(modal ModalInstance) (ModalInstance, error)
Replace swaps the active modal at the same depth and preserves the original restoration chain. An identity already used lower in the stack is rejected.
func (*ModalStack) Top ¶ added in v0.18.0
func (stack *ModalStack) Top() (ModalInstance, bool)
Top returns the active modal without exposing stack storage.
type Mode ¶
type Mode int
Mode represents the conversational preset selected in the TUI. Durable goal execution is an explicit, separate lifecycle entered through /goal.
type ModeConfig ¶
type ModeConfig struct {
Label string
SystemPromptPrefix string
ToolPolicy agent.ToolPolicy
PreferredCapability config.ModelCapability
RouterMode config.ModeContext
}
ModeConfig holds the configuration for a single mode.
func DefaultModeConfigs ¶
func DefaultModeConfigs() [3]ModeConfig
DefaultModeConfigs returns the configuration for each mode.
type ModePickerState ¶
type Model ¶
type Model struct {
// contains filtered or unexported fields
}
Model is the BubbleTea model for the chat interface.
func New ¶
func New(ag *agent.Agent, cmdReg *command.Registry, skillMgr *skill.Manager, completer *Completer, modelManager *llm.ModelManager, router config.ModelRouter, logger *log.Logger) *Model
New creates a new TUI Model.
func (*Model) AnchorActive ¶
AnchorActive returns true if scroll anchor is active. Exported for testing.
func (*Model) ReleaseExecutionSessionLease ¶ added in v0.5.0
ReleaseExecutionSessionLease releases the cross-process ownership held by the active interactive session. The main program calls it after Bubble Tea has joined the current turn and before SQLite closes.
func (*Model) SessionResumeInfo ¶ added in v0.14.0
func (m *Model) SessionResumeInfo() (SessionResumeInfo, bool)
SessionResumeInfo returns the active session's canonical short handle when the model owns a session backed by the durable store. It is read-only and is intended for the successful interactive-exit message.
func (*Model) SetAgentProfileSource ¶
func (*Model) SetApprovalPosture ¶ added in v0.8.0
func (m *Model) SetApprovalPosture(posture ApprovalPosture)
SetApprovalPosture projects the host's actual permission posture into the TUI. Invalid values fail closed to the ordinary prompted posture. When an agent is attached, AcceptWorkspaceEdits is mirrored onto the agent so NORMAL write/edit/mkdir auto-approval stays process-local and consistent.
func (*Model) SetConfigSourcePath ¶ added in v0.24.2
SetConfigSourcePath records the resolved host config path so /context save can rewrite ollama.num_ctx without scanning for config files again.
func (*Model) SetExpertRuntimeSetupFailed ¶ added in v0.8.0
func (m *Model) SetExpertRuntimeSetupFailed()
SetExpertRuntimeSetupFailed keeps a startup validation failure visible after the alternate-screen TUI opens. The detailed diagnostic remains on stderr; Runtime shows only a fixed host-authored recovery label.
func (*Model) SetGoalAdvisor ¶ added in v0.5.0
func (m *Model) SetGoalAdvisor(advisor GoalAdvisor)
SetGoalAdvisor wires Cortex after the parent has built the MCP registry. It is safe to call before MCP startup; tool discovery happens per operation.
func (*Model) SetImageStore ¶ added in v0.12.0
func (m *Model) SetImageStore(store *imageasset.Store)
SetImageStore installs the private attachment store and the Agent resolver used to rehydrate path-free image references after session/checkpoint restore. It must be called before the Bubble Tea program starts.
func (*Model) SetInitCancel ¶
func (m *Model) SetInitCancel(cancel context.CancelFunc)
SetInitCancel stores the cancel function for the background init goroutine.
func (*Model) SetModelPinned ¶
SetModelPinned preserves an explicit CLI or agent-profile model selection. Automatic routing remains available after the user runs /model auto.
func (*Model) SetModelPreferenceStore ¶ added in v0.12.0
func (m *Model) SetModelPreferenceStore(store ModelPreferenceStore)
SetModelPreferenceStore enables restart persistence for explicit /model, /provider, and picker selections. Startup flags and agent profiles remain separate runtime authorities and are never written through this store.
func (*Model) SetModelRoutingCatalog ¶ added in v0.19.0
SetModelRoutingCatalog installs the host-owned manual-only model policy used by later asynchronous Ollama inventory refreshes. Availability still comes exclusively from Ollama; this catalog can only remove automatic-routing authority from a discovered local model.
func (*Model) SetProgram ¶
SetProgram sets the tea.Program reference (must be called before Run).
func (*Model) SetSessionStore ¶
SetSessionStore enables private SQLite-backed, lossless session resume.
func (*Model) SetStartupSessionResume ¶ added in v0.8.0
func (m *Model) SetStartupSessionResume(selector SessionResumeSelector) error
SetStartupSessionResume schedules one validated restore after InitComplete. It never starts provider work and shares the interactive picker's tokened restore authority.
func (*Model) SetTheme ¶ added in v0.27.0
SetTheme selects the color scheme and rebuilds every cached style. It returns false for an unregistered id so a caller can report the typo instead of silently repainting in the default.
type ModelPickerState ¶
type ModelPickerState struct {
List list.Model
Models []config.Model // compatibility projection for existing callers
Inventory []OllamaModelDescriptor
CurrentModel string
RequestID uint64
Notice string
Compact bool
ItemHeight int
}
func (*ModelPickerState) SelectedDescriptor ¶ added in v0.6.0
func (s *ModelPickerState) SelectedDescriptor() (OllamaModelDescriptor, bool)
func (*ModelPickerState) SelectedReason ¶ added in v0.6.0
func (s *ModelPickerState) SelectedReason() string
type ModelPreferenceStore ¶ added in v0.12.0
type ModelPreferenceStore interface {
SetManualModel(string) error
ClearManualModel() error
SetManualProvider(string) error
ClearManualProvider() error
SetTheme(string) error
}
ModelPreferenceStore is the narrow user-runtime persistence boundary for a manually selected model and optional provider profile. It is intentionally independent from session state.
type ModelPullPhase ¶ added in v0.6.0
type ModelPullPhase uint8
const ( ModelPullEntry ModelPullPhase = iota ModelPullRunning ModelPullComplete ModelPullFailed )
type ModelPullState ¶ added in v0.6.0
type ModelPullState struct {
Input textinput.Model
Progress progress.Model
Spinner spinner.Model
Phase ModelPullPhase
Name string
Status string
Completed int64
Total int64
Err error
// contains filtered or unexported fields
}
func NewModelPullState ¶ added in v0.6.0
func NewModelPullState(isDark, reducedMotion bool, themeID string) *ModelPullState
func (*ModelPullState) Apply ¶ added in v0.6.0
func (s *ModelPullState) Apply(msg OllamaModelPullProgressMsg) tea.Cmd
func (*ModelPullState) ProgressText ¶ added in v0.6.0
func (s *ModelPullState) ProgressText() string
func (*ModelPullState) SetTheme ¶ added in v0.6.0
func (s *ModelPullState) SetTheme(isDark bool, themeID string)
func (*ModelPullState) Update ¶ added in v0.6.0
func (s *ModelPullState) Update(msg tea.Msg) tea.Cmd
Update follows the smart-parent/dumb-child boundary: it only emits a typed request. The parent owns cancellation, transport, and inventory refresh.
func (*ModelPullState) View ¶ added in v0.6.0
func (s *ModelPullState) View(width int) string
View retains the standalone Bubbles virtual cursor for compatibility with focused component tests. The parent uses ViewWithCursor so the application owns one translated hardware cursor.
func (*ModelPullState) ViewWithCursor ¶ added in v0.6.0
ViewWithCursor renders a pure, sized copy of each Bubbles child. Compact mode bounds daemon-controlled status/error text so modal actions stay on the supported 30x12 canvas.
type OllamaModelDescriptor ¶ added in v0.6.0
type OllamaModelDescriptor struct {
Name string
DisplayName string
Source OllamaModelSource
SizeBytes int64
ParameterSize string
Quantization string
ContextLength int
EffectiveContext int
AllocatedContext int
SizeVRAM int64
Capabilities []string
Current bool
Running bool
Selectable bool
Fit bool
AutoRoutable bool
ManualOnly bool
RequiresConsent bool
ConsentGranted bool
Reason string
}
OllamaModelDescriptor is the UI-facing inventory contract. The Ollama adapter owns discovery and enrichment; the picker only projects that state.
func BuildOllamaModelDescriptors ¶ added in v0.6.0
func BuildOllamaModelDescriptors(inventory []llm.OllamaModel, running []llm.OllamaRunningModel, current string, localOnly bool) []OllamaModelDescriptor
BuildOllamaModelDescriptors projects Ollama's authoritative inventory into presentation state. Static configuration may rank models, but never invents availability or capabilities here.
type OllamaModelDetailsRequestedMsg ¶ added in v0.6.0
type OllamaModelDetailsRequestedMsg struct{ Model OllamaModelDescriptor }
OllamaModelDetailsRequestedMsg asks the parent to enrich/show one model. Cached descriptors may be rendered immediately while /api/show completes.
type OllamaModelDetailsResultMsg ¶ added in v0.6.0
type OllamaModelDetailsResultMsg struct {
Model OllamaModelDescriptor
Err error
}
type OllamaModelInventoryMsg ¶ added in v0.6.0
type OllamaModelInventoryMsg struct {
RequestID uint64
Models []OllamaModelDescriptor
Err error
}
OllamaModelInventoryMsg replaces the picker's cached inventory. RequestID lets the parent discard stale asynchronous refreshes.
type OllamaModelPullCancelRequestedMsg ¶ added in v0.6.0
type OllamaModelPullCancelRequestedMsg struct{ Name string }
OllamaModelPullCancelRequestedMsg asks the parent to cancel the active pull.
type OllamaModelPullProgressMsg ¶ added in v0.6.0
type OllamaModelPullProgressMsg struct {
RequestID uint64
Name string
Status string
Completed int64
Total int64
Done bool
Err error
}
OllamaModelPullProgressMsg is the stable projection of Ollama's NDJSON pull stream. Completed/Total may be zero for status-only cloud stub operations.
type OllamaModelPullRequestedMsg ¶ added in v0.6.0
type OllamaModelPullRequestedMsg struct{ Name string }
OllamaModelPullRequestedMsg asks the parent to start a cancellable Ollama pull. No network work is performed by this presentation component.
type OllamaModelSource ¶ added in v0.6.0
type OllamaModelSource uint8
OllamaModelSource is the execution boundary reported by Ollama. It is kept in the UI package so the picker does not depend on a particular wire client.
const ( OllamaModelLocal OllamaModelSource = iota OllamaModelCloud OllamaModelRemote )
type OutputDetailCursor ¶ added in v0.18.0
OutputDetailCursor addresses a byte offset within one retained logical row. ByteOffset is needed because a single row may exceed the 64 KiB page budget.
type OutputDetailDigest ¶ added in v0.18.0
type OutputDetailDigest struct {
TotalRows uint64 `json:"total_rows"`
RetainedRows uint64 `json:"retained_rows"`
TotalBytes uint64 `json:"total_bytes"`
RetainedBytes uint64 `json:"retained_bytes"`
Truncated bool `json:"truncated"`
}
OutputDetailDigest is the only durable shape associated with full output. Counts describe terminal-safe UTF-8 after control-sequence sanitization. Total counts cover the complete sanitized source; retained counts cover the bounded prefix that may be paged during this process.
func (OutputDetailDigest) Valid ¶ added in v0.18.0
func (digest OutputDetailDigest) Valid() bool
Valid treats a decoded digest as untrusted scalar input. It accepts the useful zero shape, rejects impossible row/byte relationships, and enforces the production retention caps without granting loadability.
type OutputDetailPage ¶ added in v0.18.0
type OutputDetailPage struct {
Rows []OutputDetailRow
Next OutputDetailCursor
HasMore bool
Bytes uint64
Digest OutputDetailDigest
}
OutputDetailPage contains only terminal-safe retained content. Next is valid when HasMore is true. Bytes counts Text bytes in Rows; newline delimiters are represented by row boundaries and therefore are not charged twice.
type OutputDetailPageRequest ¶ added in v0.18.0
type OutputDetailPageRequest struct {
Ref OutputDetailRef
Cursor OutputDetailCursor
RowLimit int
ByteLimit int
}
OutputDetailPageRequest asks for a bounded page. Non-positive limits select the store defaults; larger limits are clamped to the hard page maxima.
type OutputDetailReceipt ¶ added in v0.18.0
type OutputDetailReceipt struct {
Ref OutputDetailRef `json:"-"`
Digest OutputDetailDigest `json:"digest"`
}
OutputDetailReceipt pairs the ephemeral load capability with its persistable scalar digest. Artifact digests are intentionally not accepted by this store: knowing that an artifact exists does not grant output loadability.
type OutputDetailRef ¶ added in v0.18.0
type OutputDetailRef struct {
// contains filtered or unexported fields
}
OutputDetailRef is an opaque, process-local capability for one admitted output. Its identity is intentionally unexported, so encoding a bare ref cannot persist or disclose the capability. Fields that carry one must still use json:"-" to make the ephemeral ownership explicit.
func (OutputDetailRef) MarshalJSON ¶ added in v0.18.0
func (ref OutputDetailRef) MarshalJSON() ([]byte, error)
MarshalJSON makes the non-persistence contract explicit even when a caller encodes a bare ref outside OutputDetailReceipt. A capability can never be reconstructed from the resulting empty object.
func (OutputDetailRef) String ¶ added in v0.18.0
func (ref OutputDetailRef) String() string
String returns the opaque identity for in-process diagnostics and equality assertions. It must not be written to a session or transcript.
func (OutputDetailRef) Valid ¶ added in v0.18.0
func (ref OutputDetailRef) Valid() bool
Valid reports whether ref has the bounded shape issued by this package. A valid shape is not proof that the store still owns the referenced output.
type OutputDetailRow ¶ added in v0.18.0
type OutputDetailRow struct {
Index int
Text string
StartsMidRow bool
EndsRow bool
SourceRowComplete bool
}
OutputDetailRow is one whole row or one UTF-8-safe fragment of a giant row. EndsRow means the fragment reaches the retained row boundary. SourceRowComplete additionally distinguishes a complete source row from the final partial row produced by source truncation.
type OutputDetailStore ¶ added in v0.18.0
type OutputDetailStore struct {
// contains filtered or unexported fields
}
OutputDetailStore owns bounded full-output prefixes for the lifetime of the active UI. Entries are immutable after admission; the mutex protects the map, aggregate byte accounting, and LRU order.
func NewOutputDetailStore ¶ added in v0.18.0
func NewOutputDetailStore() *OutputDetailStore
NewOutputDetailStore constructs a process-local store with the fixed production budgets documented above.
func (*OutputDetailStore) Admit ¶ added in v0.18.0
func (store *OutputDetailStore) Admit(raw string) (OutputDetailReceipt, error)
Admit sanitizes raw before retaining any bytes, records honest counts for the complete sanitized source, then admits only its bounded prefix.
func (*OutputDetailStore) Available ¶ added in v0.18.0
func (store *OutputDetailStore) Available(ref OutputDetailRef) bool
Available reports whether the store still owns ref. A valid reference shape is not sufficient because LRU eviction and explicit revocation are normal. This method never reveals content or refreshes recency.
func (*OutputDetailStore) Drop ¶ added in v0.18.0
func (store *OutputDetailStore) Drop(ref OutputDetailRef) bool
Drop revokes one ephemeral ref and releases its retained bytes.
func (*OutputDetailStore) Len ¶ added in v0.18.0
func (store *OutputDetailStore) Len() int
Len reports the current number of live ephemeral refs.
func (*OutputDetailStore) Page ¶ added in v0.18.0
func (store *OutputDetailStore) Page( ctx context.Context, request OutputDetailPageRequest, ) (OutputDetailPage, error)
Page resolves one process-local ref into a bounded UTF-8-safe page. Unknown, stale, and evicted refs fail closed without a partial page. Cancellation is checked before lookup, during construction, and immediately before return.
func (*OutputDetailStore) RetainedBytes ¶ added in v0.18.0
func (store *OutputDetailStore) RetainedBytes() uint64
RetainedBytes reports the conservative aggregate memory charge used by the global budget. It includes source bytes, the compact row-offset index, and a fixed allowance for the entry, ref, map, and LRU bookkeeping.
type OutputViewer ¶ added in v0.18.0
type OutputViewer struct {
Origin EntityRef
Receipt OutputDetailReceipt
// contains filtered or unexported fields
}
OutputViewer is a one-page, presentation-only full-output inspector. It retains an ephemeral receipt but never a store, context, clipboard callback, transcript pointer, or raw tool payload.
func NewOutputViewer ¶ added in v0.18.0
func NewOutputViewer( origin EntityRef, receipt OutputDetailReceipt, width, height int, isDark bool, profiles ...GlyphProfile, ) *OutputViewer
NewOutputViewer creates an isolated viewer. The caller starts page loading by forwarding InitialPageRequest to the smart parent.
func (*OutputViewer) Anchor ¶ added in v0.18.0
func (viewer *OutputViewer) Anchor() OutputViewerAnchor
Anchor returns the first visible semantic source row.
func (*OutputViewer) ApplyPage ¶ added in v0.18.0
func (viewer *OutputViewer) ApplyPage(token OutputViewerPageToken, page OutputDetailPage) bool
ApplyPage is the successful-result convenience form.
func (*OutputViewer) ApplyPageError ¶ added in v0.18.0
func (viewer *OutputViewer) ApplyPageError(token OutputViewerPageToken, err error) bool
ApplyPageError is the failed-result convenience form.
func (*OutputViewer) ApplyPageResult ¶ added in v0.18.0
func (viewer *OutputViewer) ApplyPageResult( token OutputViewerPageToken, page OutputDetailPage, err error, ) bool
ApplyPageResult settles only the exact current request token. Any error, invalid projection, unavailable/evicted ref, or digest mismatch fails closed to the same non-actionable state without exposing transport details.
func (*OutputViewer) CachedRowCount ¶ added in v0.18.0
func (viewer *OutputViewer) CachedRowCount() int
CachedRowCount exposes only the cache cardinality for diagnostics and tests. Output content remains private to the viewer.
func (*OutputViewer) InitialPageRequest ¶ added in v0.18.0
func (viewer *OutputViewer) InitialPageRequest() OutputViewerEvent
InitialPageRequest emits the first bounded request exactly once. Repeated calls while a request is pending or after a result has settled are no-ops.
func (*OutputViewer) Layout ¶ added in v0.18.0
func (viewer *OutputViewer) Layout() OutputViewerLayout
Layout returns the current immutable geometry snapshot.
func (*OutputViewer) ReplaceReceipt ¶ added in v0.18.0
func (viewer *OutputViewer) ReplaceReceipt(receipt OutputDetailReceipt) OutputViewerEvent
ReplaceReceipt starts a fresh generation while keeping the same semantic origin and modal instance. Late results from the previous receipt cannot mutate the replacement page.
func (*OutputViewer) SetReducedMotion ¶ added in v0.18.0
func (viewer *OutputViewer) SetReducedMotion(reduced bool)
SetReducedMotion keeps the search input static for users who disable animation. It changes only cursor presentation; semantic focus, query, geometry, and source-row position remain stable.
func (*OutputViewer) SetSize ¶ added in v0.18.0
func (viewer *OutputViewer) SetSize(width, height int)
SetSize reprojects geometry while preserving the first visible source row.
func (*OutputViewer) SetTheme ¶ added in v0.18.0
func (viewer *OutputViewer) SetTheme(isDark bool, themeID string)
SetTheme changes adaptive presentation styles without moving the semantic source-row anchor.
func (*OutputViewer) Status ¶ added in v0.18.0
func (viewer *OutputViewer) Status() OutputViewerStatus
Status returns the viewer's current presentation state.
func (*OutputViewer) Update ¶ added in v0.18.0
func (viewer *OutputViewer) Update(msg tea.Msg) (OutputViewerEvent, tea.Cmd)
Update handles Bubbles presentation messages and returns typed intent for its smart parent. It performs no page IO, clipboard writes, transcript mutation, or modal-stack mutation.
func (*OutputViewer) View ¶ added in v0.18.0
func (viewer *OutputViewer) View() string
View renders an exact-size modal frame and intentionally drops the optional child hardware cursor. Parents that route focus should use ViewWithCursor.
func (*OutputViewer) ViewWithCursor ¶ added in v0.18.0
func (viewer *OutputViewer) ViewWithCursor() (string, *tea.Cursor)
ViewWithCursor returns one cursor at most, local to the rendered frame. It is present only while the search Bubbles input owns focus.
type OutputViewerAnchor ¶ added in v0.18.0
OutputViewerAnchor names the first visible source row rather than a presentation offset. Resizing, theme changes, and search-row insertion may all change viewport geometry without changing this semantic anchor.
type OutputViewerEvent ¶ added in v0.18.0
type OutputViewerEvent struct {
Kind OutputViewerEventKind
Origin EntityRef
Token OutputViewerPageToken
Request OutputDetailPageRequest
CopyText string
}
OutputViewerEvent is a bounded child-to-parent intent. CopyText contains only the currently visible, terminal-safe output cells; it is never written to the transcript by this component.
func (OutputViewerEvent) Empty ¶ added in v0.18.0
func (event OutputViewerEvent) Empty() bool
Empty reports whether no intent was emitted.
type OutputViewerEventKind ¶ added in v0.18.0
type OutputViewerEventKind uint8
OutputViewerEventKind identifies the only intents a presentation-only OutputViewer may emit. The smart parent owns page IO, clipboard integration, and modal-stack mutation.
const ( OutputViewerEventNone OutputViewerEventKind = iota OutputViewerEventRequestPage OutputViewerEventCopyVisible OutputViewerEventClose )
type OutputViewerLayout ¶ added in v0.18.0
type OutputViewerLayout struct {
ScreenRect CellRect
OuterRect CellRect
ContentRect CellRect
HeaderRect CellRect
SearchRect CellRect
BodyRect CellRect
}
OutputViewerLayout is the exact screen-space geometry used for both rendering and pointer routing. All rectangles are half-open.
func ProjectOutputViewerLayout ¶ added in v0.18.0
func ProjectOutputViewerLayout(screenWidth, screenHeight int, searchVisible bool) OutputViewerLayout
ProjectOutputViewerLayout computes a centered modal whose preferred extent is 90% of the terminal, with a 72x12 floor that always clamps back to the actual screen. One border cell and one horizontal padding cell are deducted before assigning the header, optional search row, body, and footer.
type OutputViewerPageToken ¶ added in v0.18.0
OutputViewerPageToken fences asynchronous page results by both viewer generation and request sequence. A token is intentionally scalar: the process-local output capability remains in OutputDetailPageRequest.
func (OutputViewerPageToken) Valid ¶ added in v0.18.0
func (token OutputViewerPageToken) Valid() bool
Valid reports whether the token can identify one page request.
type OutputViewerStatus ¶ added in v0.18.0
type OutputViewerStatus uint8
OutputViewerStatus is the presentation state of the one-page cache.
const ( OutputViewerLoading OutputViewerStatus = iota OutputViewerReady )
type OverlayID ¶ added in v0.18.0
type OverlayID string
OverlayID is a bounded opaque identity for a modal surface. It is separate from the legacy OverlayKind enum: OverlayID identifies one instance while OverlayKind identifies a legacy presentation category.
type OverlayKind ¶
type OverlayKind int
OverlayKind represents what overlay (if any) is currently shown.
const ( OverlayNone OverlayKind = iota OverlayHelp OverlayCompletion OverlayModelPicker OverlayCloudConsent OverlayPlanForm OverlayCortexDecision OverlaySessionsPicker OverlaySettings OverlayAgentPicker OverlayProviderPicker OverlayModePicker OverlayGoalForm OverlayRuntimeStatus OverlayGoalInspector OverlayGoalRecovery OverlayModelDetails OverlayModelPull OverlayAgents OverlayTranscriptSearch OverlayPermissions OverlayThemePicker OverlayContextDoctor )
type OverlayProjection ¶ added in v0.18.0
type OverlayProjection struct {
Active bool
Depth int
Top ModalInstance
Focus FocusToken
}
OverlayProjection is the complete scalar state needed to compose and route the top stacked modal. Legacy overlays remain outside this projection.
type PermissionsPanelState ¶ added in v0.23.0
PermissionsPanelState is a transient list of posture, session grants, and durable workspace rules. The parent Model owns every side effect.
type PlanFormCompletedMsg ¶
type PlanFormCompletedMsg struct {
Prompt string
}
PlanFormCompletedMsg signals the plan form has been submitted with a structured prompt.
type PlanFormField ¶
type PlanFormField struct {
Label string
Kind string // "text" or "select"
Value string // current value (for select, set from Options[OptionIndex])
Options []string // for "select" kind
OptionIndex int // for "select" kind
Input textinput.Model
}
PlanFormField represents a single field in the plan form.
type PlanFormState ¶
type PlanFormState struct {
Fields []PlanFormField
ActiveField int
// contains filtered or unexported fields
}
PlanFormState holds state for the composer-owned plan form.
func NewPlanFormState ¶
func NewPlanFormState(task string, themeID string, presentation ...bool) *PlanFormState
NewPlanFormState creates a plan form pre-filled with the user's task description. Presentation options are ordered as theme-dark, then reduced-motion so older callers that only select a theme remain source compatible.
func (*PlanFormState) AssemblePrompt ¶
func (pf *PlanFormState) AssemblePrompt() string
AssemblePrompt builds the structured prompt from form fields.
type PromptPathPreflightResultMsg ¶ added in v0.8.0
type PromptPathPreflightResultMsg struct {
Token uint64
Draft string
Grants []agent.ReadGrant
WriteGrants []agent.WriteGrant
Authority Mode
MoreCandidates bool
CandidateLimitExceeded bool
}
PromptPathPreflightResultMsg carries canonical host projections plus opaque preview identities owned by Agent. Missing, workspace-local, non-regular and already-authorized candidates are omitted by the background inspector.
type ProviderCredentialState ¶ added in v0.18.0
type ProviderCredentialState uint8
const ( ProviderCredentialNotRequired ProviderCredentialState = iota ProviderCredentialReady ProviderCredentialMissing )
type ProviderLocality ¶ added in v0.18.0
type ProviderLocality uint8
const ( ProviderLocal ProviderLocality = iota ProviderRemote )
type ProviderOptionPresentation ¶ added in v0.18.0
type ProviderOptionPresentation struct {
ProfileID ProviderProfileID
Label string
KindLabel string
ModelLabel string
Locality ProviderLocality
Credential ProviderCredentialState
CredentialHint string
Active bool
Selectable bool
DisabledReason string
}
ProviderOptionPresentation is the complete provider-picker boundary. It deliberately has no BaseURL, client, header, credential value, or arbitrary configuration field.
type ProviderPickerState ¶ added in v0.17.0
ProviderPickerState is the Bubbles list for /provider.
type ProviderProfileID ¶ added in v0.18.0
type ProviderProfileID string
ProviderProfileID is an opaque catalog identity. It is used only to route a selection back to the model manager and is never rendered directly.
type ReadScopePreviewResultMsg ¶ added in v0.8.0
type ReadScopePreviewResultMsg struct {
Token uint64
Requested string
Canonical string
Workspace string
Draft string
Grant agent.ReadGrant
Err error
}
ReadScopePreviewResultMsg completes canonicalization and read-only boundary checks before the user is asked to authorize an external root.
type ReadScopePrompt ¶ added in v0.8.0
type ReadScopePrompt struct {
Requested string
Canonical string
Workspace string
Draft string
Kind agent.ReadGrantKind
Grants []agent.ReadGrant
WriteGrants []agent.WriteGrant
Operation string
AutoResume bool
}
ReadScopePrompt is transient presentation authority for canonicalized external paths. It is never serialized into session state.
type ReadScopeResultMsg ¶ added in v0.8.0
type ReadScopeResultMsg struct {
Token uint64
Operation string
Path string
Kind string
Count int
Grants []agent.ReadGrant
WriteGrants []agent.WriteGrant
AutoResume bool
RolledBack int
RollbackErr error
Err error
// Rollback and Finalize are process-local transaction handles. They never
// enter transcript/session state; Update consumes exactly one of them.
Rollback func() (int, error)
Finalize func()
}
ReadScopeResultMsg completes one process-local external read-root change. The Agent remains the authority for canonicalization and overlap checks.
type RuntimeStatusState ¶
type ScrambleModel ¶
type ScrambleModel struct {
// contains filtered or unexported fields
}
ScrambleModel is a custom BubbleTea component that renders a gradient character scramble animation, inspired by Charmbracelet's Crush CLI.
func NewScrambleModel ¶
func NewScrambleModel(isDark bool, themeID string) ScrambleModel
NewScrambleModel creates a new scramble animation with theme-appropriate colors.
func (*ScrambleModel) Reset ¶
func (s *ScrambleModel) Reset()
Reset resets the animation (new ID + zero visible). Call when agent starts.
func (*ScrambleModel) SetDark ¶
func (s *ScrambleModel) SetDark(isDark bool, themeID string)
SetDark repoints the gradient at the active scheme.
The endpoints used to be four literal hexes, and the dark pair was Nord's Accent and a purple close to its Accent2 — so the wait animation painted Nord on every scheme. Switching to Catppuccin or Gruvbox left this one surface behind, which is the whole failure the theme registry exists to prevent, and the comment here already claimed to interpolate "the active theme's colors".
Accent → Accent2 is the correct pair by meaning, not by resemblance: the gradient reads as one signal travelling out and coming back, which is the two-accent relationship every scheme already answers.
func (ScrambleModel) Tick ¶
func (s ScrambleModel) Tick() tea.Cmd
Tick schedules the next animation frame (~15 FPS = 66ms).
func (ScrambleModel) Update ¶
func (s ScrambleModel) Update(msg tea.Msg) (ScrambleModel, tea.Cmd)
Update processes tick messages and advances the animation.
func (ScrambleModel) View ¶
func (s ScrambleModel) View() string
View renders the complete visible animation.
func (ScrambleModel) ViewN ¶
func (s ScrambleModel) ViewN(maxCells int) string
ViewN renders at most maxCells of the animation. The parent uses a single animated cell on narrow terminals and the full six-cell shimmer when space permits, keeping the working action visible at every supported width.
type ScrambleTickMsg ¶
ScrambleTickMsg triggers the next animation frame.
type SemanticAnchor ¶ added in v0.17.0
type SemanticAnchor struct {
SessionID int64
BlockID BlockID
TurnID TurnID
LogicalOffset int
Grapheme int
ScreenRow int
Bias AnchorBias
}
SemanticAnchor identifies a logical point inside a block and the viewport row where the reader expects that point to remain. TurnID is retained for a deterministic turn-start fallback if the block is deleted.
type SessionListItem ¶
type SessionListItem struct {
ID int64 `json:"id"`
PublicID string `json:"public_id,omitempty"`
Title string `json:"title"`
CreatedAt string `json:"created_at"`
}
SessionListItem represents a session in the list.
type SessionListMsg ¶
type SessionListMsg struct {
ListToken uint64
Sessions []SessionListItem
Err error
}
SessionListMsg delivers the list of saved SQLite sessions.
type SessionLoadedMsg ¶
type SessionLoadedMsg struct {
LoadToken uint64
SessionID int64
SessionPublicID string
State persistedSessionState
StateRecord db.SessionStateRecord
Title string
RecoveryWarning string
RecoveryTarget *agent.UnresolvedExecutionError
RecoveryContexts []db.StandaloneReconciliationContext
ExecutionLease *db.ExecutionSessionLease
Err error
}
SessionLoadedMsg delivers a persisted session and its execution lease.
type SessionProviderIdentity ¶ added in v0.18.0
SessionProviderIdentity is the bounded provider provenance attached to a headless session snapshot. Remote is explicit so a session created through an OpenAI-compatible adapter can never be restored under a same-named local model (or vice versa) merely because the model strings happen to match.
type SessionResumeInfo ¶ added in v0.14.0
SessionResumeInfo is the bounded durable identity shown by the CLI after Bubble Tea restores the terminal. Title is sanitized display metadata only; Handle remains the sole input to the canonical resume command.
type SessionResumeSelector ¶ added in v0.8.0
type SessionResumeSelector struct {
// contains filtered or unexported fields
}
SessionResumeSelector identifies one exact saved session or the newest session in the canonical current workspace. Its fields are closed so callers must pass through the validated constructors below.
func ParseSessionResumeSelector ¶ added in v0.8.0
func ParseSessionResumeSelector(value string) (SessionResumeSelector, error)
ParseSessionResumeSelector parses the value accepted by --resume.
func SessionIDResumeSelector ¶ added in v0.8.0
func SessionIDResumeSelector(id int64) (SessionResumeSelector, error)
SessionIDResumeSelector constructs the exact-ID form used by the interactive picker after its database-backed list selection.
type SessionsPickerState ¶
type SessionsPickerState struct {
List list.Model
Sessions []SessionListItem
Phase sessionsPickerPhase
Message string
}
SessionsPickerState holds state for the sessions picker overlay.
type SettingsPickerState ¶
SettingsPickerState is the transient control center that replaces the persistent navigation chrome. It contains list/navigation and responsive presentation state only; the parent Model owns and applies every setting.
type ShutdownMsg ¶
type ShutdownMsg struct{}
ShutdownMsg requests a graceful stop. Active turns are cancelled and joined before BubbleTea exits so dispatched effects receive a final receipt.
type StartupStatusMsg ¶
type StartupStatusMsg struct {
ID string // unique key: "ollama", "mcp:<name>", "ice"
Label string // display name: "Ollama (qwen3:8b)", "docker-gateway"
Status string // "connecting", "connected", "failed"
Detail string // e.g. "110 tools", error message
}
StartupStatusMsg reports progress of a single startup task (Ollama, MCP server, ICE).
type StreamDoneMsg ¶
StreamDoneMsg signals the LLM has finished responding.
type StreamTextMsg ¶
type StreamTextMsg struct {
Text string
}
StreamTextMsg delivers incremental text from the LLM.
type StreamThinkingMsg ¶
type StreamThinkingMsg struct{ Text string }
StreamThinkingMsg carries provider-native reasoning separately from answer text.
type Styles ¶
type Styles struct {
// Messages
UserContent lipgloss.Style
UserGutter lipgloss.Style
// Tools
ToolErrorText lipgloss.Style
ToolRunningText lipgloss.Style
// Footer
Divider lipgloss.Style
StatusDot lipgloss.Style
StatusText lipgloss.Style
StatusCheck lipgloss.Style
StatusError lipgloss.Style
StatusWarning lipgloss.Style
ApprovalPrompt lipgloss.Style
StreamHint lipgloss.Style
ErrorText lipgloss.Style
ErrorChip lipgloss.Style
Dimmed lipgloss.Style
// System messages
WelcomeHint lipgloss.Style
// Completion modal
CompletionFilter lipgloss.Style
CompletionCategory lipgloss.Style
// Startup progress
StartupDetail lipgloss.Style
// Mode badges
ModeAsk lipgloss.Style
ModePlan lipgloss.Style
ModeBuild lipgloss.Style
// Context percentage fuel gauge
ContextPctLow lipgloss.Style
ContextPctMid lipgloss.Style
ContextPctHigh lipgloss.Style
// Diff view
DiffAdded lipgloss.Style
DiffRemoved lipgloss.Style
DiffContext lipgloss.Style
DiffHeader lipgloss.Style
// Thinking display
ThinkingHeader lipgloss.Style
ThinkingContent lipgloss.Style
ThinkingBorder lipgloss.Style
// Shared overlay styles (used by help, model picker, sessions, plan form, completion)
OverlayTitle lipgloss.Style
OverlayBorder color.Color
OverlayAccent lipgloss.Style
OverlayDim lipgloss.Style
// Focus indicators
FocusIndicator lipgloss.Style
}
Styles holds all pre-built lipgloss styles.
type SystemMessageMsg ¶
type SystemMessageMsg struct {
Msg string
}
SystemMessageMsg displays a system-level message.
type Theme ¶ added in v0.27.0
A Theme is a named pair of semantic color vocabularies, one for a light terminal and one for a dark terminal.
Themes do not introduce new color meanings. semanticPalette remains the only vocabulary the components speak, so adding a theme is a matter of answering the same eleven questions in a different palette — never of teaching a component about a specific scheme.
Every value here is checked by TestThemeForegroundsMeetContrastInBothModes, which measures each foreground against that theme's own background. Where an upstream scheme publishes only a dark variant, or publishes a light variant whose accents fall below 4.5:1 on its light surface, the values are deliberately darkened versions of the same hues rather than the upstream hex. That adaptation is noted per theme; it is the same treatment the built-in Nord palette has always had.
type ThemePickerState ¶ added in v0.27.0
ThemePickerState is the transient color-scheme chooser. It holds navigation state only; the parent Model owns the selection and its persistence.
func (*ThemePickerState) SelectedThemeID ¶ added in v0.27.0
func (s *ThemePickerState) SelectedThemeID() string
SelectedThemeID returns the highlighted theme.
type ToolApprovalMsg ¶
type ToolApprovalMsg struct {
RequestID string
ToolName string
Args map[string]any
ArgumentsSHA256 string
Preview permission.ApprovalPreview
Scope permission.ApprovalScope
Response chan<- permission.ApprovalResponse
}
ToolApprovalMsg asks the user to approve a tool call.
type ToolCallResultMsg ¶
type ToolCallResultMsg struct {
ID string
Name string
Result string
IsError bool
Duration time.Duration
Projection ecosystem.ToolProjection
OutputDetail OutputDetailReceipt
}
ToolCallResultMsg delivers the result of a tool call.
type ToolCallStartMsg ¶
type ToolCallStartMsg struct {
ID string
Name string
Args map[string]any
StartTime time.Time
BeforeContent string
BeforeSnapshotAvailable bool
}
ToolCallStartMsg signals a tool invocation has begun.
type ToolCard ¶
type ToolCard struct {
ID string
Name string
Kind ToolCardKind
State ToolCardState
Summary string
Args string
Result string
// ResultDisplay is a transient display-only variant of Result, retained
// only when the raw tool output carried ANSI escapes. It is re-rendered
// through remapANSI16Line and must never be persisted or written to the
// terminal directly; the sanitized Result stays the only durable copy.
ResultDisplay string
// ResultLanguage is a bounded lexer alias derived from trusted host metadata
// while the tool call is active. It never contains a path or result bytes.
ResultLanguage string
// OutputDigest is the scalar, persistable description of the original
// terminal-safe output. OutputAvailable grants no access by itself; it only
// reports whether the parent still owns a process-local viewer capability.
OutputDigest OutputDetailDigest
OutputAvailable bool
PreviewMode ToolPreviewMode
StartTime time.Time
Duration time.Duration
Expanded bool
IsDark bool
ThemeID string
GlyphProfile GlyphProfile
Lifecycle ToolLifecycle
// ExpertProgress is the bounded host projection for the exact built-in
// consultation call. The adjacent cache avoids rebuilding its multi-line
// live surface on every spinner tick.
ExpertProgress *ExpertProgressState
Projection ecosystem.ToolProjection
Styles ToolCardStyles
// contains filtered or unexported fields
}
ToolCard is a fancy tool execution display component.
func NewToolCard ¶
func NewToolCard(name string, kind ToolCardKind, isDark bool, themeID string, profiles ...GlyphProfile) ToolCard
NewToolCard creates a new tool card.
func ToolCardFromRenderModel ¶ added in v0.18.0
func ToolCardFromRenderModel(model ToolRenderModel, isDark bool, themeID string, profiles ...GlyphProfile) (ToolCard, error)
ToolCardFromRenderModel constructs the dumb visual component exclusively from the strict render projection. It never reads ToolEntry or Model state.
func (*ToolCard) SetSummary ¶
SetSummary stores a bounded, single-line semantic summary for compact and running headers. Callers should prefer this over assigning Summary directly; rendering applies the same bound defensively either way.
func (ToolCard) View ¶
View renders a stable card suitable for completed receipts, cached transcript content, and tests. Running cards use a static activity glyph and intentionally omit live elapsed time; the smart parent can provide both via ViewWithActivity.
func (ToolCard) ViewWithActivity ¶
ViewWithActivity renders without mutating card state. The smart parent owns animation and elapsed-time updates and may pass one shared activity glyph plus an explicit elapsed duration for a running card.
type ToolCardKind ¶
type ToolCardKind int
ToolCardKind represents the type of tool operation.
const ( ToolCardFile ToolCardKind = iota ToolCardBash ToolCardSearch ToolCardGit ToolCardGeneric )
type ToolCardState ¶
type ToolCardState int
ToolCardState represents the execution state.
const ( ToolCardRunning ToolCardState = iota ToolCardSuccess ToolCardAttention ToolCardError )
type ToolCardStyles ¶
type ToolCardStyles struct {
BorderRunning lipgloss.Style
BorderSuccess lipgloss.Style
BorderAttention lipgloss.Style
BorderError lipgloss.Style
TitleRunning lipgloss.Style
TitleSuccess lipgloss.Style
TitleAttention lipgloss.Style
TitleError lipgloss.Style
Args lipgloss.Style
Result lipgloss.Style
Error lipgloss.Style
Warning lipgloss.Style
Dimmed lipgloss.Style
Elapsed lipgloss.Style
DiffAdded lipgloss.Style
DiffRemoved lipgloss.Style
DiffHeader lipgloss.Style
SearchPath lipgloss.Style
SearchLocation lipgloss.Style
SearchMatch lipgloss.Style
}
ToolCardStyles holds styles for the tool card.
func NewToolCardStyles ¶
func NewToolCardStyles(isDark bool, themeID string) ToolCardStyles
NewToolCardStyles creates styles based on theme.
type ToolEntry ¶
type ToolEntry struct {
ID string
Name string
Summary string // bounded semantic context for compact/restored receipts
Args string // formatted args string
RawArgs map[string]any `json:"-"` // ephemeral original args
Result string
ResultDisplay string `json:"-"` // transient raw-ANSI display variant for render-time remap; never persisted or restored
ResultLanguage string // bounded lexer alias derived from trusted call metadata
OutputDetail OutputDetailReceipt
IsError bool
Status ToolStatus
StartTime time.Time
Duration time.Duration
Collapsed bool // per-entry collapse state
BeforeContent string `json:"-"` // ephemeral snapshot before file write
BeforeSnapshotAvailable bool `json:"-"` // false when the bounded pre-write read was unavailable
DiffLines []DiffLine // computed diff (nil = not a file write)
DiffPending bool `json:"-"` // post-write read/LCS is running outside Update
DiffGeneration uint64 `json:"-"` // accepts exactly one matching asynchronous result
Projection ecosystem.ToolProjection // bounded semantic role, route, and outcome
ExpertProgress *ExpertProgressState // bounded consult_experts lifecycle projection
}
ToolEntry tracks the lifecycle of a single tool call.
type ToolKind ¶ added in v0.17.0
type ToolKind uint8
ToolKind is the provider-neutral semantic family of one invocation. It is deliberately independent from card styling and transcript geometry.
type ToolLifecycle ¶ added in v0.17.0
type ToolLifecycle uint8
ToolLifecycle describes the user-visible lifecycle without conflating a successful transport with a successful domain operation.
const ( ToolLifecycleUnknown ToolLifecycle = iota ToolLifecyclePending ToolLifecycleRunning ToolLifecycleSucceeded ToolLifecycleAttention ToolLifecycleFailed ToolLifecycleCancelled )
func (ToolLifecycle) Terminal ¶ added in v0.17.0
func (lifecycle ToolLifecycle) Terminal() bool
func (ToolLifecycle) Valid ¶ added in v0.17.0
func (lifecycle ToolLifecycle) Valid() bool
type ToolPreview ¶ added in v0.18.0
type ToolPreview struct {
Mode ToolPreviewMode
Arguments string
Result string
ResultLanguage string
OutputDigest OutputDetailDigest
OutputAvailable bool
StartedAt time.Time
Expanded bool
DiffLines []DiffLine
DiffPending bool
ExpertProgress *ExpertProgressState
// contains filtered or unexported fields
}
ToolPreview is the bounded, terminal-safe body admitted to a tool card. RawArgs, BeforeContent, provider StructuredContent, and arbitrary metadata intentionally have no representation here.
type ToolPreviewMode ¶ added in v0.18.0
type ToolPreviewMode uint8
ToolPreviewMode selects a bounded result-body policy without exposing raw arguments or asking the visual component to infer semantics from a provider-controlled name.
const ( ToolPreviewUnknown ToolPreviewMode = iota ToolPreviewRead ToolPreviewExec ToolPreviewSearch ToolPreviewEdit ToolPreviewGeneric )
func (ToolPreviewMode) Valid ¶ added in v0.18.0
func (mode ToolPreviewMode) Valid() bool
type ToolRenderModel ¶ added in v0.18.0
type ToolRenderModel struct {
ToolViewModel
Preview ToolPreview
}
ToolRenderModel is the only production input to tool rendering. ToolEntry remains the durable lifecycle state; this strict projection is rebuilt at the transcript boundary and ToolCard stays a dumb, ephemeral component.
func ToolRenderModelFromEntry ¶ added in v0.18.0
func ToolRenderModelFromEntry(chat ChatEntry, entry ToolEntry) (ToolRenderModel, error)
ToolRenderModelFromEntry is the strict production adapter from transcript state into tool UI. Every copied body field is bounded and sanitized here; ephemeral arguments/snapshots and raw MCP StructuredContent cannot cross because ToolPreview has no fields capable of retaining them.
func (ToolRenderModel) Validate ¶ added in v0.18.0
func (model ToolRenderModel) Validate() error
Validate rejects any preview that did not pass through the strict bounded constructor. It intentionally checks values rather than trusting callers in the ui package because restored state is attacker-controlled input.
type ToolStatus ¶
type ToolStatus int
ToolStatus represents the state of a tool execution.
const ( ToolStatusRunning ToolStatus = iota ToolStatusDone ToolStatusError ToolStatusCancelled )
type ToolViewModel ¶ added in v0.17.0
type ToolViewModel struct {
InvocationID string
BlockID BlockID
ToolName string
Kind ToolKind
Operation string
Target string
Lifecycle ToolLifecycle
Transport ecosystem.TransportState
Domain ecosystem.DomainState
Evidence ecosystem.EvidenceState
Summary string
Duration time.Duration
Revision uint64
Artifact *ecosystem.ArtifactDigest
// Projection is already normalized by internal/ecosystem and contains only
// bounded routing, digest, artifact, and semantic-state facts. It is kept so
// the dumb ToolCard can render specialist receipts without reaching back
// into ToolEntry or raw provider output.
Projection ecosystem.ToolProjection
}
ToolViewModel is the narrow, terminal-safe projection admitted to tool UI. Raw arguments, results, MCP StructuredContent, provider prose, and layout state have no representation here.
func ToolViewModelFromToolCard ¶ added in v0.17.0
func ToolViewModelFromToolCard(chat ChatEntry, card ToolCard) (ToolViewModel, error)
ToolViewModelFromToolCard projects the card compatibility model through the same narrow boundary used by transcript tool entries.
func ToolViewModelFromToolEntry ¶ added in v0.17.0
func ToolViewModelFromToolEntry(chat ChatEntry, entry ToolEntry) (ToolViewModel, error)
ToolViewModelFromToolEntry projects one transcript tool block without carrying ToolEntry.Args, RawArgs, Result, ResultDisplay, or diff snapshots.
func (ToolViewModel) Validate ¶ added in v0.17.0
func (view ToolViewModel) Validate() error
Validate fails closed before a projected invocation enters transcript UI.
type TranscriptAnchor ¶ added in v0.17.0
type TranscriptAnchor struct {
Mode TranscriptAnchorMode
Manual SemanticAnchor
}
TranscriptAnchor is a serializable sum type for follow/manual scroll intent. Manual is ignored while Mode is TranscriptAnchorFollowLatest.
func FollowLatestAnchor ¶ added in v0.17.0
func FollowLatestAnchor() TranscriptAnchor
FollowLatestAnchor constructs an anchor that follows the newest output.
func ManualTranscriptAnchor ¶ added in v0.17.0
func ManualTranscriptAnchor(anchor SemanticAnchor) TranscriptAnchor
ManualTranscriptAnchor constructs an anchor for a semantic reading point.
type TranscriptAnchorMode ¶ added in v0.17.0
type TranscriptAnchorMode uint8
TranscriptAnchorMode separates the intent to follow new output from a manually selected semantic reading position.
const ( TranscriptAnchorFollowLatest TranscriptAnchorMode = iota TranscriptAnchorManual )
type TranscriptAnchorResolution ¶ added in v0.17.0
type TranscriptAnchorResolution struct {
Reason AnchorResolutionReason
BlockID BlockID
LocalRow int
MappedRow int
ViewportTop int
ScreenRow int
RequestedScreenRow int
ContentClamped bool
ViewportClamped bool
LayoutExact bool
}
TranscriptAnchorResolution is a pure projection into viewport coordinates. ViewportClamped explains a changed screen row at document boundaries; ContentClamped explains a missing exact line-map coordinate.
func ResolveTranscriptAnchor ¶ added in v0.17.0
func ResolveTranscriptAnchor( anchor TranscriptAnchor, previous TranscriptLayoutSnapshot, current TranscriptLayoutSnapshot, viewportHeight int, ) (TranscriptAnchorResolution, error)
ResolveTranscriptAnchor maps scroll intent into the current layout.
The previous layout is used only as an identity/order snapshot when a block was deleted. The fallback order is:
- same block and semantic offset;
- next surviving block when Bias is AnchorBiasNext;
- previous surviving block;
- first surviving block in the same turn;
- document top.
AnchorBiasPrevious intentionally skips the next-block step.
type TranscriptBlock ¶ added in v0.17.0
type TranscriptBlock struct {
ID BlockID
TurnID TurnID
ParentID BlockID
Kind BlockKind
Revision uint64
Lifecycle BlockLifecycle
Payload BlockPayload
}
TranscriptBlock is one semantic item in causal transcript order. Revision changes only when Payload or Lifecycle changes; layout and presentation changes must not increment it.
func (TranscriptBlock) MarshalJSON ¶ added in v0.17.0
func (TranscriptBlock) MarshalJSON() ([]byte, error)
MarshalJSON prevents the semantic runtime model from becoming an accidental persistence schema. A versioned durable DTO must select safe fields.
func (*TranscriptBlock) UnmarshalJSON ¶ added in v0.17.0
func (*TranscriptBlock) UnmarshalJSON([]byte) error
UnmarshalJSON prevents a manipulated or incomplete envelope from silently replacing private payload fields with a valid-looking zero value.
func (TranscriptBlock) Validate ¶ added in v0.17.0
func (block TranscriptBlock) Validate() error
Validate checks identity and state invariants that must hold before a block enters a transcript store or durable envelope.
type TranscriptLayoutRecord ¶ added in v0.17.0
type TranscriptLayoutRecord struct {
BlockID BlockID
TurnID TurnID
Revision uint64
Height int
StartRow int
Exact bool
LineMap LineMap
}
TranscriptLayoutRecord is the renderer-independent geometry required to restore an anchor. StartRow is validated as a contiguous prefix sum so the resolver cannot silently consume a stale or contradictory frame.
type TranscriptLayoutSnapshot ¶ added in v0.17.0
type TranscriptLayoutSnapshot struct {
SessionID int64
Records []TranscriptLayoutRecord
}
TranscriptLayoutSnapshot binds a layout, including an empty layout, to one session. Session scope belongs to the snapshot rather than each record so a newly created or cleared conversation cannot lose its identity.
type TranscriptLinePoint ¶ added in v0.17.0
TranscriptLinePoint maps a stable logical text position to a rendered local row. LogicalOffset and Grapheme are semantic coordinates supplied by the block renderer; neither is a byte offset.
type TranscriptSearchState ¶ added in v0.18.0
type TranscriptSearchState struct {
// contains filtered or unexported fields
}
TranscriptSearchState owns only an ephemeral index of text that has already crossed the transcript's safe presentation boundary. It deliberately has no field capable of retaining raw tool payloads, StructuredContent, or hidden reasoning.
type TurnID ¶ added in v0.17.0
type TurnID string
TurnID groups causally related blocks without making their slice position part of their identity.
type UIAction ¶ added in v0.18.0
type UIAction struct {
ID command.ActionID
Label string
Shortcut key.Binding
Enabled bool
Reason string
Target EntityRef
}
UIAction is the bounded presentation and dispatch state of one action. It contains no function or arbitrary payload; the smart parent dispatches the accepted ActionID with a typed EntityRef.
func (UIAction) Request ¶ added in v0.18.0
func (action UIAction) Request(source UIActionSource) UIActionRequest
Request creates the common request used by keyboard and pointer paths.
type UIActionRegistry ¶ added in v0.18.0
type UIActionRegistry struct {
// contains filtered or unexported fields
}
UIActionRegistry keeps resolved actions in deterministic registration order. Re-registering an ID replaces its current state without moving its position. The zero value is ready to use.
func NewUIActionRegistry ¶ added in v0.18.0
func NewUIActionRegistry(actions ...UIAction) *UIActionRegistry
NewUIActionRegistry creates a registry and registers actions in argument order. Invalid actions are ignored, matching Register's fail-closed policy.
func (*UIActionRegistry) Action ¶ added in v0.18.0
func (registry *UIActionRegistry) Action(id command.ActionID) (UIAction, bool)
Action returns an isolated copy of one registered action.
func (*UIActionRegistry) Actions ¶ added in v0.18.0
func (registry *UIActionRegistry) Actions() []UIAction
Actions returns isolated action copies in stable registration order.
func (*UIActionRegistry) Register ¶ added in v0.18.0
func (registry *UIActionRegistry) Register(action UIAction) bool
Register adds or replaces one action. It returns false when the action cannot safely cross the UI dispatch boundary.
func (*UIActionRegistry) ResolveRequest ¶ added in v0.18.0
func (registry *UIActionRegistry) ResolveRequest(request UIActionRequest) (UIAction, string, bool)
ResolveRequest admits a keyboard or pointer request only when its action is still registered, enabled, and bound to the exact current target. The returned reason is suitable for a short status notice; unknown and malformed requests always fail closed.
type UIActionRequest ¶ added in v0.18.0
type UIActionRequest struct {
ActionID command.ActionID
Target EntityRef
Source UIActionSource
}
UIActionRequest is the only dispatch request emitted by action surfaces.
type UIActionSource ¶ added in v0.18.0
type UIActionSource uint8
UIActionSource identifies the physical input path that requested an action. It does not affect authorization; both paths pass through ResolveRequest.
const ( UIActionSourceUnknown UIActionSource = iota UIActionSourceKeyboard UIActionSourceMouse )
func (UIActionSource) Valid ¶ added in v0.18.0
func (source UIActionSource) Valid() bool
Valid reports whether source is a supported user input path.
type UIActionSpec ¶ added in v0.18.0
UIActionSpec is immutable presentation metadata for one stable action ID. Resolve supplies only current, scalar state and remains side-effect free.
type WidthClass ¶ added in v0.17.0
type WidthClass uint8
WidthClass is the horizontal density tier for a terminal frame. Recovery is the zero value so an unmeasured terminal fails safe.
const ( WidthRecovery WidthClass = iota WidthCompact WidthNarrow WidthRegular WidthWide )
func ClassifyWidth ¶ added in v0.17.0
func ClassifyWidth(width int) WidthClass
ClassifyWidth maps a terminal width to its horizontal density tier.
type WorkNode ¶ added in v0.17.0
type WorkNode struct {
ID string `json:"id"`
ParentID BlockID `json:"parent_id,omitempty"`
Index int `json:"index"`
Kind WorkNodeKind `json:"kind"`
Label string `json:"label,omitempty"`
Model string `json:"model,omitempty"`
Location WorkNodeLocation `json:"location"`
Status WorkNodeStatus `json:"status"`
Activity WorkNodeActivity `json:"activity"`
Elapsed time.Duration `json:"elapsed,omitempty"`
Unread int `json:"-"`
Revision uint64 `json:"revision"`
ReportRef *ecosystem.ArtifactDigest `json:"report_ref,omitempty"`
FailureCode string `json:"failure_code,omitempty"`
EvalTokens int `json:"eval_tokens,omitempty"`
}
WorkNode is the safe, host-owned projection rendered for agent work.
ReportRef is a typed durable artifact digest, never report text. The current consult_experts runtime emits advisory text but no durable artifact receipt, so its adapter leaves ReportRef nil. Unread is process-local presentation state and is deliberately excluded from persistence.
type WorkNodeActivity ¶ added in v0.18.0
type WorkNodeActivity string
WorkNodeActivity is a host-authored, bounded description of what a work node is doing. It deliberately does not admit provider prose, child status text, filenames, prompts, or other arbitrary activity payloads.
const ( WorkNodeActivityQueued WorkNodeActivity = "awaiting-assignment" WorkNodeActivityRunning WorkNodeActivity = "consulting" WorkNodeActivityWaiting WorkNodeActivity = "waiting" WorkNodeActivityCompleted WorkNodeActivity = "consultation-complete" WorkNodeActivityAttention WorkNodeActivity = "needs-attention" WorkNodeActivityFailed WorkNodeActivity = "consultation-failed" WorkNodeActivityCancelled WorkNodeActivity = "cancelled" )
type WorkNodeKind ¶ added in v0.18.0
type WorkNodeKind string
WorkNodeKind is a host-owned discriminator for one generic unit of work. Provider/runtime strings never become kinds implicitly.
const (
WorkNodeKindExpert WorkNodeKind = "expert"
)
type WorkNodeLocation ¶ added in v0.18.0
type WorkNodeLocation string
WorkNodeLocation is the UI-owned execution-location projection. The source expert adapter currently receives Ollama inventory facts, but presentation code must not depend on an Ollama-specific type.
const ( WorkNodeLocationUnknown WorkNodeLocation = "unknown" WorkNodeLocationLocal WorkNodeLocation = "local" WorkNodeLocationCloud WorkNodeLocation = "cloud" WorkNodeLocationRemoteHost WorkNodeLocation = "remote-host" )
type WorkNodeStatus ¶ added in v0.17.0
type WorkNodeStatus uint8
WorkNodeStatus is the bounded presentation lifecycle for one unit of agent work. It does not mirror provider events or grant arbitrary status text authority to a child agent.
const ( WorkNodeQueued WorkNodeStatus = iota + 1 WorkNodeRunning WorkNodeWaiting WorkNodeCompleted WorkNodeAttention WorkNodeFailed WorkNodeCancelled )
Source Files
¶
- activity.go
- adapter.go
- agent_surface.go
- agenthub.go
- agentpicker.go
- ansi_remap.go
- approval.go
- approval_posture.go
- auto_checkpoint.go
- bob_receipt.go
- bob_workspace_context.go
- capability_route.go
- checkpoint_transcript.go
- chrome_spring.go
- clipboard_image_other.go
- cloudconsent.go
- command_artifacts.go
- commit.go
- complete.go
- completion_anchor.go
- completion_async.go
- completion_preview.go
- composer_chrome.go
- composer_flow.go
- content_grid.go
- context_window.go
- contextdoctor.go
- continuation_action.go
- conversation_io.go
- cortex_decision.go
- cortex_decision_flow.go
- cursor.go
- decision_prompt.go
- diff.go
- diff_viewer.go
- ecosystem_status.go
- ecosystem_tools.go
- editor.go
- execution_recovery_notice.go
- expert_progress.go
- file_commands.go
- frame_projection.go
- geometry.go
- glyphs.go
- goal_controlplane.go
- goal_plan.go
- goal_runtime.go
- goalform.go
- goalinspector.go
- goalrecovery.go
- goalrecovery_model.go
- goalview.go
- help.go
- image_attachments.go
- inline_form.go
- key_hints.go
- keys.go
- keys_approval.go
- keys_busy.go
- keys_idle.go
- keys_overlay.go
- layout.go
- layout_capabilities.go
- markdown.go
- mcp_status.go
- messages.go
- modal_stack.go
- mode.go
- model.go
- model_location.go
- model_ollama_runtime.go
- model_preference.go
- model_types.go
- model_viewers.go
- modeldetails.go
- modelpicker.go
- modelpull.go
- modepicker.go
- notice.go
- ollama_inventory.go
- output_detail.go
- output_viewer.go
- overlay_nav.go
- overlay_preemption.go
- paste.go
- path_preflight.go
- permissions_panel.go
- picker_frame.go
- picker_style.go
- planform.go
- process_group_unix.go
- profile_runtime.go
- provider.go
- provider_projection.go
- providerpicker.go
- read_run.go
- read_scope.go
- runtime_status.go
- scramble.go
- scroll_follow.go
- send_turn.go
- session.go
- session_chrome.go
- session_lifecycle.go
- session_restore_request.go
- session_restore_ui.go
- session_selector.go
- session_switch.go
- session_title.go
- sessionspicker.go
- settingspicker.go
- slash_while_busy.go
- sonar_pulse.go
- standalone_recovery_context.go
- standalone_recovery_model.go
- startup.go
- status_facts.go
- styles.go
- terminal_input.go
- terminal_safe.go
- theme.go
- themepicker.go
- thinking.go
- tool_presentation.go
- tool_result_highlight.go
- tool_view_model.go
- toolcard.go
- toolrender.go
- transcript_anchor.go
- transcript_identity.go
- transcript_paint.go
- transcript_reconcile.go
- transcript_reflow.go
- transcript_search.go
- turn_recap.go
- ui_action.go
- update_command.go
- update_keys.go
- update_session.go
- update_stream.go
- update_terminal.go
- view.go
- view_chrome.go
- view_footer.go
- view_transcript.go
- viewport_nav.go
- wait_trace.go
- worknode.go