Documentation
¶
Overview ¶
Package tui provides the Bubble Tea-based terminal UI for Celeste CLI. This file contains the main application model and layout logic.
Package tui provides the Bubble Tea-based terminal UI for Celeste CLI. This file contains the chat panel component with scrollable viewport.
Package tui provides the Bubble Tea-based terminal UI for Celeste CLI. This file contains the context budget bar that displays token usage.
Package tui provides the Bubble Tea-based terminal UI for Celeste CLI. This file contains the input component with command history.
Package tui provides the Bubble Tea-based terminal UI for Celeste CLI. This file contains logging functionality for debugging skill calls.
Package tui provides the Bubble Tea-based terminal UI for Celeste CLI. This file contains the MCP server status panel, accessed via /mcp command.
Package tui provides the Bubble Tea-based terminal UI for Celeste CLI. This file contains message types used for communication between components.
Package tui provides the Bubble Tea-based terminal UI for Celeste CLI. This file contains the permission prompt dialog for tool execution approval.
Package tui provides the interactive selector component.
Package tui provides the Bubble Tea-based terminal UI for Celeste CLI. This file contains the simulated streaming/typing effect with corruption.
Package tui provides the Bubble Tea-based terminal UI for Celeste CLI. This file contains Lip Gloss styles using the corrupted-theme color palette.
Package tui provides the Bubble Tea-based terminal UI for Celeste CLI. This file contains the tool progress component that tracks active tool executions.
Index ¶
- Variables
- func ApplyCodeBlockCorruption(content string, typingPos int, corruptionIntensity float64) string
- func CloseLogging()
- func CorruptCodeLine(codeLine string, intensity float64) string
- func CorruptText(text string, intensity float64) string
- func CorruptTextJapanese(text string, intensity float64) string
- func DetectDump(firstChunkSize, totalSize int, elapsed time.Duration) bool
- func GetCodeBlockStyle() lipgloss.Style
- func GetLogPath() string
- func GetRandomCorruption() string
- func GetRandomCorruptionPlain() string
- func InitLogging() error
- func LogInfo(msg string)
- func LogLLMRequest(messageCount int, toolCount int)
- func LogLLMResponse(contentLen int, hasToolCalls bool)
- func LogSkillCall(name string, args map[string]any)
- func LogSkillResult(name string, result string, err error)
- func MessageRoleStyle(role string) lipgloss.Style
- func Run(llmClient LLMClient) error
- func SendMessage(content string) tea.Cmd
- func SkillStatusStyle(status string) lipgloss.Style
- func StreamingSpinner(frame int) string
- func ThinkingAnimation(frame int) string
- func Tick(d time.Duration) tea.Cmd
- func TypingTickCmd() tea.Cmd
- type AgentCommandResultMsg
- type AgentCommandRunner
- type AgentProgressKind
- type AgentProgressMsg
- type AppModel
- func (m AppModel) Init() tea.Cmd
- func (m AppModel) SetConfig(cfg *config.Config) AppModel
- func (m AppModel) SetLLMClient(client LLMClient) AppModel
- func (m AppModel) SetSessionManager(sm SessionManager, session Session) AppModel
- func (m AppModel) SetVersion(version, build string) AppModel
- func (m AppModel) Update(msg tea.Msg) (tea.Model, tea.Cmd)
- func (m AppModel) View() string
- func (m AppModel) WithCommandHistory(history []string) AppModel
- func (m AppModel) WithEndpoint(endpoint string) AppModel
- func (m AppModel) WithMessages(messages []ChatMessage) AppModel
- type ChatMessage
- type ChatModel
- func (m ChatModel) AddAssistantMessage(content string) ChatModel
- func (m ChatModel) AddAssistantMessageWithToolCalls(content string, toolCalls []ToolCallInfo) ChatModel
- func (m ChatModel) AddFunctionCall(call FunctionCall) ChatModel
- func (m ChatModel) AddSystemMessage(content string) ChatModel
- func (m ChatModel) AddToolResult(toolCallID, name, result string) ChatModel
- func (m ChatModel) AddUserMessage(content string) ChatModel
- func (m ChatModel) AppendToLastAssistant(content string) ChatModel
- func (m ChatModel) Clear() ChatModel
- func (m ChatModel) GetLLMMessages() []ChatMessage
- func (m ChatModel) GetMessages() []ChatMessage
- func (m ChatModel) Init() tea.Cmd
- func (m ChatModel) SetLastAssistantContent(content string) ChatModel
- func (m ChatModel) SetSize(width, height int) ChatModel
- func (m ChatModel) ToggleSkillCalls() ChatModel
- func (m ChatModel) Update(msg tea.Msg) (ChatModel, tea.Cmd)
- func (m ChatModel) UpdateFunctionResult(name, result string) ChatModel
- func (m ChatModel) View() string
- type CollectionsModel
- type ContextBarModel
- type ContextBudgetMsg
- type ContextIndicator
- func (ci ContextIndicator) GetUsageInfo() string
- func (ci ContextIndicator) GetWarningLevel() string
- func (ci ContextIndicator) GetWarningMessage() string
- func (ci ContextIndicator) SetShowPercentage(show bool) ContextIndicator
- func (ci ContextIndicator) SetShowProgressBar(show bool) ContextIndicator
- func (ci ContextIndicator) SetUsage(current, max int) ContextIndicator
- func (ci ContextIndicator) SetWarningLevel(level string) ContextIndicator
- func (ci ContextIndicator) SetWidth(width int) ContextIndicator
- func (ci ContextIndicator) ShouldShowWarning() bool
- func (ci ContextIndicator) View() string
- func (ci ContextIndicator) ViewCompact() string
- type EndpointSwitcher
- type ErrorMsg
- type FunctionCall
- type GenerateMediaMsg
- type HeaderModel
- func (m HeaderModel) GetContextWarningLevel() string
- func (m HeaderModel) SetAutoRouted(routed bool) HeaderModel
- func (m HeaderModel) SetContextUsage(current, max int) HeaderModel
- func (m HeaderModel) SetEndpoint(endpoint string) HeaderModel
- func (m HeaderModel) SetImageModel(model string) HeaderModel
- func (m HeaderModel) SetModel(model string) HeaderModel
- func (m HeaderModel) SetNSFWMode(enabled bool) HeaderModel
- func (m HeaderModel) SetShowContext(show bool) HeaderModel
- func (m HeaderModel) SetSkillsEnabled(enabled bool) HeaderModel
- func (m HeaderModel) SetWidth(width int) HeaderModel
- func (m HeaderModel) View() string
- type InputModel
- func (m InputModel) Blur() InputModel
- func (m InputModel) Clear() InputModel
- func (m InputModel) Focus() InputModel
- func (m InputModel) GetHistory() []string
- func (m InputModel) Init() tea.Cmd
- func (m InputModel) SetHistory(history []string) InputModel
- func (m InputModel) SetValue(value string) InputModel
- func (m InputModel) SetWidth(width int) InputModel
- func (m InputModel) Update(msg tea.Msg) (InputModel, tea.Cmd)
- func (m InputModel) Value() string
- func (m InputModel) View() string
- type LLMClient
- type MCPPanelModel
- type MCPServerInfo
- type MCPStatusMsg
- type MediaResultMsg
- type MenuItem
- type MenuModel
- type NSFWToggleMsg
- type OrchestratorCommandRunner
- type OrchestratorEventMsg
- type PermissionPromptModel
- type PermissionRequestMsg
- type PermissionResponse
- type SelectorItem
- type SelectorModel
- func (m SelectorModel) GetSelected() *SelectorItem
- func (m SelectorModel) Init() tea.Cmd
- func (m SelectorModel) IsActive() bool
- func (m SelectorModel) SetHeight(height int) SelectorModel
- func (m SelectorModel) SetWidth(width int) SelectorModel
- func (m SelectorModel) Update(msg tea.Msg) (SelectorModel, tea.Cmd)
- func (m SelectorModel) View() string
- type SelectorResultMsg
- type SendMessageMsg
- type Session
- type SessionManager
- type SessionMessage
- type SessionSummary
- type ShowSelectorMsg
- type SimulateTypingMsg
- type SimulatedTyping
- func (s *SimulatedTyping) Advance() int
- func (s *SimulatedTyping) GetDisplayed() string
- func (s *SimulatedTyping) GetDisplayedWithCorruption() string
- func (s *SimulatedTyping) IsDone() bool
- func (s *SimulatedTyping) IsEnabled() bool
- func (s *SimulatedTyping) Reset(content string)
- func (s *SimulatedTyping) SetEnabled(enabled bool)
- type SkillCallBatchMsg
- type SkillCallMsg
- type SkillCallRequest
- type SkillDefinition
- type SkillResultMsg
- type SkillsBrowserModel
- type SkillsModel
- func (s SkillsModel) SetCompleted(name string) SkillsModel
- func (s SkillsModel) SetConfig(endpoint, model string, enabled bool, nsfw bool, count int, reason string) SkillsModel
- func (s SkillsModel) SetCurrentInput(input string) SkillsModel
- func (s SkillsModel) SetError(name string, err error) SkillsModel
- func (s SkillsModel) SetExecuting(name string) SkillsModel
- func (s SkillsModel) SetMenuState(state string) SkillsModel
- func (s SkillsModel) SetSize(width, height int) SkillsModel
- func (s SkillsModel) View() string
- type SplitPanel
- func (s *SplitPanel) Actions() []string
- func (s *SplitPanel) AddAction(text string)
- func (s *SplitPanel) AppendOutput(text string)
- func (s *SplitPanel) AtBottom() bool
- func (s *SplitPanel) DiffContent() string
- func (s *SplitPanel) DiffFile() string
- func (s *SplitPanel) Resize(width, height int)
- func (s *SplitPanel) ScrollDown(lines int)
- func (s *SplitPanel) ScrollRightDown(lines int)
- func (s *SplitPanel) ScrollRightUp(lines int)
- func (s *SplitPanel) ScrollUp(lines int)
- func (s *SplitPanel) SetDiff(file, diff string)
- func (s *SplitPanel) SetOutput(text string)
- func (s *SplitPanel) SetVerdict(text string)
- func (s *SplitPanel) View() string
- type StatusModel
- func (m StatusModel) ClearContextWarning() StatusModel
- func (m StatusModel) SetStreaming(streaming bool) StatusModel
- func (m StatusModel) SetText(text string) StatusModel
- func (m StatusModel) SetWidth(width int) StatusModel
- func (m StatusModel) ShowContextWarning(level string, message string) StatusModel
- func (m StatusModel) Update(msg tea.Msg) (StatusModel, tea.Cmd)
- func (m StatusModel) View() string
- type StreamChunk
- type StreamChunkMsg
- type StreamDoneMsg
- type StreamErrorMsg
- type TickMsg
- type TokenUsage
- type ToolCallInfo
- type ToolProgressModel
- type ToolProgressMsg
- type TypingTickMsg
- type VeniceConfigData
Constants ¶
This section is empty.
Variables ¶
var ( // Primary accent colors - magenta/pink corruption ColorAccent = lipgloss.Color("#d94f90") // Pink (signature) ColorAccentGlow = lipgloss.Color("#ff4da6") // Bright pink glow // Purple gradient - abyss/void aesthetic ColorPurple = lipgloss.Color("#8b5cf6") // Primary purple ColorPurpleNeon = lipgloss.Color("#c084fc") // Neon purple ColorPurpleDeep = lipgloss.Color("#6b21a8") // Deep void purple // Cyan/blue accents - digital/glitch ColorCyan = lipgloss.Color("#00d4ff") // Bright cyan ColorCyanLight = lipgloss.Color("#67e8f9") // Light cyan // Background colors - deep void ColorBg = lipgloss.Color("#0a0a0a") // Main background ColorBgTertiary = lipgloss.Color("#1a1a2e") // Tertiary bg ColorBgGlass = lipgloss.Color("#1a1a2e") // Glassmorphic layer // Text colors - high contrast ColorText = lipgloss.Color("#f5f1f8") // Primary text (bright) ColorTextSecondary = lipgloss.Color("#b8afc8") // Secondary text ColorTextMuted = lipgloss.Color("#7a7085") // Muted text ColorTextGlow = lipgloss.Color("#ffffff") // Glowing text // Border colors - glassmorphic gradients ColorBorder = lipgloss.Color("#3a2555") // Primary border ColorBorderLight = lipgloss.Color("#5a4575") // Light border ColorBorderGlow = lipgloss.Color("#d94f90") // Glowing border ColorBorderPurple = lipgloss.Color("#8b5cf6") // Purple border ColorBorderCyan = lipgloss.Color("#00d4ff") // Cyan border // Status colors ColorSuccess = lipgloss.Color("#22c55e") // Green ColorError = lipgloss.Color("#ef4444") // Red ColorWarning = lipgloss.Color("#eab308") // Yellow ColorInfo = lipgloss.Color("#06b6d4") // Cyan // Corruption/glitch colors ColorCorrupt1 = lipgloss.Color("#ff4757") // Red corruption ColorCorrupt2 = lipgloss.Color("#ff6b9d") // Pink corruption ColorCorrupt3 = lipgloss.Color("#c084fc") // Purple corruption ColorCorrupt4 = lipgloss.Color("#00d4ff") // Cyan glitch )
Corrupted Theme Colors - Celeste Brand Identity Aligned with whykusanagi.xyz corrupted voidpunk aesthetic
var ( // Base container style BaseStyle = lipgloss.NewStyle(). Background(ColorBg) // Border styles BorderStyle = lipgloss.NewStyle(). Border(lipgloss.RoundedBorder()). BorderForeground(ColorBorder) // Text styles TextStyle = lipgloss.NewStyle(). Foreground(ColorText) TextMutedStyle = lipgloss.NewStyle(). Foreground(ColorTextMuted) TextSecondaryStyle = lipgloss.NewStyle(). Foreground(ColorTextSecondary) // Accent text AccentStyle = lipgloss.NewStyle(). Foreground(ColorAccent). Bold(true) PurpleStyle = lipgloss.NewStyle(). Foreground(ColorPurple) )
Base styles - reusable building blocks
var ( // Header styles - glassmorphic bar with gradient accent HeaderStyle = lipgloss.NewStyle(). Bold(true). Foreground(ColorText). Background(ColorBgGlass). BorderStyle(lipgloss.NormalBorder()). BorderBottom(true). BorderForeground(ColorBorderGlow). Padding(0, 1) HeaderTitleStyle = lipgloss.NewStyle(). Foreground(ColorAccentGlow). Bold(true) HeaderInfoStyle = lipgloss.NewStyle(). Foreground(ColorTextSecondary) // Chat panel styles - no border, just padding ChatPanelStyle = lipgloss.NewStyle(). Padding(0, 1) // Message styles - enhanced with glow effects UserMessageStyle = lipgloss.NewStyle(). Foreground(ColorCyanLight). Bold(false) AssistantMessageStyle = lipgloss.NewStyle(). Foreground(ColorAccentGlow) SystemMessageStyle = lipgloss.NewStyle(). Foreground(ColorPurpleNeon). Italic(true) TimestampStyle = lipgloss.NewStyle(). Foreground(ColorTextMuted). Width(6) // Input panel styles - glassmorphic with gradient border InputPanelStyle = lipgloss.NewStyle(). Foreground(ColorText). Background(ColorBgGlass). BorderStyle(lipgloss.NormalBorder()). BorderTop(true). BorderForeground(ColorBorderPurple). Padding(0, 1) InputPromptStyle = lipgloss.NewStyle(). Foreground(ColorAccentGlow). Bold(true) InputTextStyle = lipgloss.NewStyle(). Foreground(ColorTextGlow) InputPlaceholderStyle = lipgloss.NewStyle(). Foreground(ColorTextMuted). Italic(true) // Skills panel styles - enhanced with glassmorphism SkillsPanelStyle = lipgloss.NewStyle(). Foreground(ColorTextMuted). Background(ColorBgGlass). BorderStyle(lipgloss.RoundedBorder()). BorderForeground(ColorBorderLight). Padding(1, 2). MarginTop(1) SkillNameStyle = lipgloss.NewStyle(). Foreground(ColorAccentGlow). Bold(true) SkillDescStyle = lipgloss.NewStyle(). Foreground(ColorTextSecondary) SkillExecutingStyle = lipgloss.NewStyle(). Foreground(ColorWarning). Bold(true) SkillCompletedStyle = lipgloss.NewStyle(). Foreground(ColorSuccess). Bold(true) SkillErrorStyle = lipgloss.NewStyle(). Foreground(ColorError). Bold(true) // Status bar styles - minimal StatusBarStyle = lipgloss.NewStyle(). Foreground(ColorTextMuted) StatusActiveStyle = lipgloss.NewStyle(). Foreground(ColorSuccess) StatusStreamingStyle = lipgloss.NewStyle(). Foreground(ColorWarning) // NSFW indicator - bold glowing effect NSFWStyle = lipgloss.NewStyle(). Foreground(ColorCorrupt1). Background(ColorBgTertiary). Bold(true). Padding(0, 1) // Endpoint indicator - purple neon EndpointStyle = lipgloss.NewStyle(). Foreground(ColorPurpleNeon). Bold(true) // Model indicator - cyan glow ModelStyle = lipgloss.NewStyle(). Foreground(ColorCyanLight) // Function call display - minimal FunctionCallStyle = lipgloss.NewStyle(). Foreground(ColorPurple). MarginLeft(2) FunctionNameStyle = lipgloss.NewStyle(). Foreground(ColorPurple). Bold(true) FunctionArgsStyle = lipgloss.NewStyle(). Foreground(ColorTextMuted) FunctionResultStyle = lipgloss.NewStyle(). Foreground(ColorTextSecondary) // Corruption/glitch effect styles (for streaming) CorruptedStyle = lipgloss.NewStyle(). Foreground(ColorAccent) GlitchStyle = lipgloss.NewStyle(). Foreground(ColorPurple) )
Component-specific styles with glassmorphism
Functions ¶
func ApplyCodeBlockCorruption ¶
ApplyCodeBlockCorruption detects code blocks (```) and applies corruption styling Used during typing animation to give code blocks a corrupted-typing effect
func CorruptCodeLine ¶
CorruptCodeLine applies corruption effects specifically for code Uses block characters and glitch symbols for a "corrupted terminal" aesthetic
func CorruptText ¶
CorruptText adds block character corruption effects to a string. Used for loading states and other animated text. For character-level Japanese mixing, use CorruptTextJapanese instead.
func CorruptTextJapanese ¶
CorruptTextJapanese mixes Japanese characters INTO English words This creates the classic translation-failure aesthetic: "loaディング", "pro理cessing" Use this for dashboard titles and headers where you want readable corruption.
func DetectDump ¶
DetectDump checks if response appears to be a "dump" (all at once) rather than true streaming. Used to decide if simulation is needed.
func GetCodeBlockStyle ¶
GetCodeBlockStyle returns a lipgloss style for code blocks in corrupted theme
func GetRandomCorruption ¶
func GetRandomCorruption() string
GetRandomCorruption returns a random colored corruption string.
func GetRandomCorruptionPlain ¶
func GetRandomCorruptionPlain() string
GetRandomCorruptionPlain returns corruption without color (for status bar).
func LogLLMRequest ¶
LogLLMRequest logs an LLM request.
func LogLLMResponse ¶
LogLLMResponse logs an LLM response.
func LogSkillCall ¶
LogSkillCall logs when a skill/function is called by the LLM.
func LogSkillResult ¶
LogSkillResult logs the result of a skill execution.
func MessageRoleStyle ¶
MessageRoleStyle returns the appropriate style for a message role.
func SendMessage ¶
SendMessage returns a command that sends a message to the LLM.
func SkillStatusStyle ¶
SkillStatusStyle returns the appropriate style for a skill execution status.
func StreamingSpinner ¶
StreamingSpinner returns an animated spinner for streaming.
func ThinkingAnimation ¶
ThinkingAnimation returns animated "thinking" text with corruption.
func TypingTickCmd ¶
TickCmd returns a command that sends a typing tick.
Types ¶
type AgentCommandResultMsg ¶ added in v1.7.0
AgentCommandResultMsg is sent when a TUI /agent command completes.
type AgentCommandRunner ¶ added in v1.7.0
AgentCommandRunner is an optional extension for handling /agent from TUI.
type AgentProgressKind ¶ added in v1.7.0
type AgentProgressKind int
AgentProgressKind identifies the type of an AgentProgressMsg.
const ( AgentProgressTurnStart AgentProgressKind = iota // a new turn has started AgentProgressToolCall // agent called a tool AgentProgressStepDone // a plan step was marked done AgentProgressResponse // final assistant response text AgentProgressComplete // run finished successfully AgentProgressError // run failed )
type AgentProgressMsg ¶ added in v1.7.0
type AgentProgressMsg struct {
RunID string
Kind AgentProgressKind
Text string
Turn int
MaxTurns int
// Per-turn stats — populated on ProgressResponse and ProgressComplete kinds.
InputTokens int
OutputTokens int
Duration time.Duration
Ch <-chan AgentProgressMsg
}
AgentProgressMsg is sent incrementally during an agent run. Ch is a channel of further progress messages; nil on terminal kinds (Complete/Error).
func (AgentProgressMsg) ReadNext ¶ added in v1.7.0
func (m AgentProgressMsg) ReadNext() tea.Cmd
ReadNext returns a tea.Cmd that reads the next AgentProgressMsg from Ch. Returns nil when Ch is nil or closed — no command to schedule.
type AppModel ¶
type AppModel struct {
// contains filtered or unexported fields
}
AppModel is the root model for the Celeste TUI application.
func (AppModel) SetConfig ¶
SetConfig sets the configuration for accessing context limits and other settings.
func (AppModel) SetLLMClient ¶
SetLLMClient sets the LLM client.
func (AppModel) SetSessionManager ¶
func (m AppModel) SetSessionManager(sm SessionManager, session Session) AppModel
SetSessionManager sets the session manager for persistence.
func (AppModel) SetVersion ¶
SetVersion sets the application version and build information.
func (AppModel) WithCommandHistory ¶ added in v1.7.0
WithCommandHistory restores the command history from a saved session.
func (AppModel) WithEndpoint ¶
WithEndpoint restores the endpoint/provider from a loaded session.
func (AppModel) WithMessages ¶
func (m AppModel) WithMessages(messages []ChatMessage) AppModel
WithMessages restores chat history from session messages.
type ChatMessage ¶
type ChatMessage struct {
Role string // "user", "assistant", "system", "tool"
Content string // Message content
ToolCallID string // For tool messages, the tool call ID
Name string // For tool messages, the function name
ToolCalls []ToolCallInfo // For assistant messages, the tool calls that were made
Timestamp time.Time // When the message was created
}
ChatMessage represents a message in the conversation.
type ChatModel ¶
type ChatModel struct {
// contains filtered or unexported fields
}
ChatModel represents the chat panel with scrollable messages.
func (ChatModel) AddAssistantMessage ¶
AddAssistantMessage adds an assistant message to the chat.
func (ChatModel) AddAssistantMessageWithToolCalls ¶
func (m ChatModel) AddAssistantMessageWithToolCalls(content string, toolCalls []ToolCallInfo) ChatModel
AddAssistantMessageWithToolCalls adds an assistant message with tool calls to the chat.
func (ChatModel) AddFunctionCall ¶
func (m ChatModel) AddFunctionCall(call FunctionCall) ChatModel
AddFunctionCall adds a function call display to the chat.
func (ChatModel) AddSystemMessage ¶
AddSystemMessage adds a system message to the chat.
func (ChatModel) AddToolResult ¶
AddToolResult adds a tool result message to the chat.
func (ChatModel) AddUserMessage ¶
AddUserMessage adds a user message to the chat.
func (ChatModel) AppendToLastAssistant ¶
AppendToLastAssistant appends content to the last assistant message.
func (ChatModel) GetLLMMessages ¶ added in v1.5.2
func (m ChatModel) GetLLMMessages() []ChatMessage
GetLLMMessages returns only messages that should be sent to the LLM, filtering out UI-only system messages (notifications, command results, etc.).
func (ChatModel) GetMessages ¶
func (m ChatModel) GetMessages() []ChatMessage
GetMessages returns all chat messages (including UI-only system messages).
func (ChatModel) SetLastAssistantContent ¶
SetLastAssistantContent sets the content of the last assistant message.
func (ChatModel) ToggleSkillCalls ¶
ToggleSkillCalls toggles the visibility of skill call logs.
func (ChatModel) UpdateFunctionResult ¶
UpdateFunctionResult updates the result of a function call.
type CollectionsModel ¶
type CollectionsModel struct {
// contains filtered or unexported fields
}
CollectionsModel is the TUI model for collections management
func NewCollectionsModel ¶
func NewCollectionsModel(manager *collections.Manager) CollectionsModel
NewCollectionsModel creates a new collections model
type ContextBarModel ¶ added in v1.7.0
type ContextBarModel struct {
// contains filtered or unexported fields
}
ContextBarModel renders a thin status bar showing token budget usage.
func NewContextBarModel ¶ added in v1.7.0
func NewContextBarModel() ContextBarModel
NewContextBarModel creates a new context bar model.
func (ContextBarModel) Init ¶ added in v1.7.0
func (m ContextBarModel) Init() tea.Cmd
Init initializes the model (no-op).
func (*ContextBarModel) SetSize ¶ added in v1.7.0
func (m *ContextBarModel) SetSize(width, _ int)
SetSize updates the component width.
func (ContextBarModel) Update ¶ added in v1.7.0
func (m ContextBarModel) Update(msg tea.Msg) (ContextBarModel, tea.Cmd)
Update handles messages for the context bar.
func (ContextBarModel) View ¶ added in v1.7.0
func (m ContextBarModel) View() string
View renders the context budget bar.
type ContextBudgetMsg ¶ added in v1.7.0
type ContextBudgetMsg struct {
UsedTokens int
MaxTokens int
UsagePercent float64
CompactCount int
TurnCount int
}
ContextBudgetMsg updates the context budget display.
type ContextIndicator ¶
type ContextIndicator struct {
// contains filtered or unexported fields
}
ContextIndicator displays token usage with visual progress bar and color coding
func NewContextIndicator ¶
func NewContextIndicator() ContextIndicator
NewContextIndicator creates a new context indicator
func (ContextIndicator) GetUsageInfo ¶
func (ci ContextIndicator) GetUsageInfo() string
GetUsageInfo returns formatted usage information
func (ContextIndicator) GetWarningLevel ¶
func (ci ContextIndicator) GetWarningLevel() string
GetWarningLevel returns the current warning level
func (ContextIndicator) GetWarningMessage ¶
func (ci ContextIndicator) GetWarningMessage() string
GetWarningMessage returns a user-friendly warning message
func (ContextIndicator) SetShowPercentage ¶
func (ci ContextIndicator) SetShowPercentage(show bool) ContextIndicator
SetShowPercentage controls percentage display
func (ContextIndicator) SetShowProgressBar ¶
func (ci ContextIndicator) SetShowProgressBar(show bool) ContextIndicator
SetShowProgressBar controls progress bar display
func (ContextIndicator) SetUsage ¶
func (ci ContextIndicator) SetUsage(current, max int) ContextIndicator
SetUsage updates the current token usage
func (ContextIndicator) SetWarningLevel ¶
func (ci ContextIndicator) SetWarningLevel(level string) ContextIndicator
SetWarningLevel explicitly sets the warning level
func (ContextIndicator) SetWidth ¶
func (ci ContextIndicator) SetWidth(width int) ContextIndicator
SetWidth sets the indicator width
func (ContextIndicator) ShouldShowWarning ¶
func (ci ContextIndicator) ShouldShowWarning() bool
ShouldShowWarning returns true if a warning should be displayed
func (ContextIndicator) View ¶
func (ci ContextIndicator) View() string
View renders the context indicator
func (ContextIndicator) ViewCompact ¶
func (ci ContextIndicator) ViewCompact() string
ViewCompact renders a compact version (for header use)
type EndpointSwitcher ¶
type EndpointSwitcher interface {
SwitchEndpoint(endpoint string) error
ChangeModel(model string) error
}
EndpointSwitcher interface for clients that support dynamic endpoint switching.
type FunctionCall ¶
type FunctionCall struct {
Name string // Function name
Arguments map[string]any // Arguments passed to the function
Result string // Result of the function call
Status string // "executing", "completed", "error"
Timestamp time.Time // When the call was initiated
}
FunctionCall represents a tool/function call from the LLM.
type GenerateMediaMsg ¶
type GenerateMediaMsg struct {
MediaType string
Prompt string
Params map[string]interface{}
ImageModel string // Override image model (if set)
}
GenerateMediaMsg is sent to generate media (image/video/etc) via Venice.ai.
type HeaderModel ¶
type HeaderModel struct {
// contains filtered or unexported fields
}
HeaderModel represents the header bar.
func (HeaderModel) GetContextWarningLevel ¶
func (m HeaderModel) GetContextWarningLevel() string
GetContextWarningLevel returns the current context warning level.
func (HeaderModel) SetAutoRouted ¶
func (m HeaderModel) SetAutoRouted(routed bool) HeaderModel
SetAutoRouted sets whether auto-routing occurred.
func (HeaderModel) SetContextUsage ¶
func (m HeaderModel) SetContextUsage(current, max int) HeaderModel
SetContextUsage updates the context usage display.
func (HeaderModel) SetEndpoint ¶
func (m HeaderModel) SetEndpoint(endpoint string) HeaderModel
SetEndpoint sets the current endpoint.
func (HeaderModel) SetImageModel ¶
func (m HeaderModel) SetImageModel(model string) HeaderModel
SetImageModel sets the current image generation model.
func (HeaderModel) SetModel ¶
func (m HeaderModel) SetModel(model string) HeaderModel
SetModel sets the current model.
func (HeaderModel) SetNSFWMode ¶
func (m HeaderModel) SetNSFWMode(enabled bool) HeaderModel
SetNSFWMode sets the NSFW mode indicator.
func (HeaderModel) SetShowContext ¶
func (m HeaderModel) SetShowContext(show bool) HeaderModel
SetShowContext controls whether context usage is displayed.
func (HeaderModel) SetSkillsEnabled ¶
func (m HeaderModel) SetSkillsEnabled(enabled bool) HeaderModel
SetSkillsEnabled sets whether skills/function calling is available.
func (HeaderModel) SetWidth ¶
func (m HeaderModel) SetWidth(width int) HeaderModel
SetWidth sets the header width.
type InputModel ¶
type InputModel struct {
// contains filtered or unexported fields
}
InputModel represents the text input component.
func (InputModel) GetHistory ¶
func (m InputModel) GetHistory() []string
GetHistory returns the command history.
func (InputModel) Init ¶
func (m InputModel) Init() tea.Cmd
Init implements the init method for InputModel.
func (InputModel) SetHistory ¶
func (m InputModel) SetHistory(history []string) InputModel
SetHistory sets the command history.
func (InputModel) SetValue ¶
func (m InputModel) SetValue(value string) InputModel
SetValue sets the input value.
func (InputModel) SetWidth ¶
func (m InputModel) SetWidth(width int) InputModel
SetWidth sets the input width.
func (InputModel) Update ¶
func (m InputModel) Update(msg tea.Msg) (InputModel, tea.Cmd)
Update handles messages for the input component.
type LLMClient ¶
type LLMClient interface {
SendMessage(messages []ChatMessage, tools []SkillDefinition) tea.Cmd
GetSkills() []SkillDefinition
ExecuteSkill(name string, args map[string]any, toolCallID string) tea.Cmd
}
LLMClient interface for sending messages to the LLM.
type MCPPanelModel ¶ added in v1.7.0
type MCPPanelModel struct {
// contains filtered or unexported fields
}
MCPPanelModel displays MCP server connection status and tool counts.
func NewMCPPanelModel ¶ added in v1.7.0
func NewMCPPanelModel() MCPPanelModel
NewMCPPanelModel creates a new MCP panel model.
func (MCPPanelModel) Active ¶ added in v1.7.0
func (m MCPPanelModel) Active() bool
Active returns whether the MCP panel is currently displayed.
func (MCPPanelModel) Init ¶ added in v1.7.0
func (m MCPPanelModel) Init() tea.Cmd
Init initializes the model (no-op).
func (*MCPPanelModel) SetSize ¶ added in v1.7.0
func (m *MCPPanelModel) SetSize(width, height int)
SetSize updates the component dimensions.
func (*MCPPanelModel) Show ¶ added in v1.7.0
func (m *MCPPanelModel) Show()
Show activates the MCP panel.
func (MCPPanelModel) Update ¶ added in v1.7.0
func (m MCPPanelModel) Update(msg tea.Msg) (MCPPanelModel, tea.Cmd)
Update handles messages for the MCP panel.
func (MCPPanelModel) View ¶ added in v1.7.0
func (m MCPPanelModel) View() string
View renders the MCP panel.
type MCPServerInfo ¶ added in v1.7.0
MCPServerInfo describes the status of a single MCP server.
type MCPStatusMsg ¶ added in v1.7.0
type MCPStatusMsg struct {
Servers []MCPServerInfo
}
MCPStatusMsg updates the MCP server status display.
type MediaResultMsg ¶
MediaResultMsg is sent when media generation completes.
type MenuModel ¶
type MenuModel struct {
// contains filtered or unexported fields
}
MenuModel is the TUI model for interactive command menu
type NSFWToggleMsg ¶
type NSFWToggleMsg struct {
Enabled bool
}
NSFWToggleMsg is sent when NSFW mode is toggled.
type OrchestratorCommandRunner ¶ added in v1.7.0
OrchestratorCommandRunner is an optional extension for handling /orchestrate from TUI.
type OrchestratorEventMsg ¶ added in v1.7.0
type OrchestratorEventMsg struct {
Kind int // cast from orchestrator.EventKind
Lane string // cast from orchestrator.TaskLane
Text string
Model string // model name where role matters (primary/reviewer)
Duration time.Duration
InputTokens int
OutputTokens int
Response string // full assistant response text for live code output panel
FilePath string
Diff string
Score float64
Ch <-chan OrchestratorEventMsg // nil on terminal events
}
OrchestratorEventMsg wraps an orchestrator.OrchestratorEvent for delivery to the TUI. Defined here to avoid an import cycle (tui → orchestrator is fine; orchestrator must not → tui).
func (OrchestratorEventMsg) ReadNext ¶ added in v1.7.0
func (m OrchestratorEventMsg) ReadNext() tea.Cmd
ReadNext returns a cmd to read the next OrchestratorEventMsg.
type PermissionPromptModel ¶ added in v1.7.0
type PermissionPromptModel struct {
// contains filtered or unexported fields
}
PermissionPromptModel renders an inline permission dialog.
func NewPermissionPromptModel ¶ added in v1.7.0
func NewPermissionPromptModel() PermissionPromptModel
NewPermissionPromptModel creates a new permission prompt model.
func (PermissionPromptModel) Active ¶ added in v1.7.0
func (m PermissionPromptModel) Active() bool
Active returns whether the permission prompt is currently displayed.
func (PermissionPromptModel) Init ¶ added in v1.7.0
func (m PermissionPromptModel) Init() tea.Cmd
Init initializes the model (no-op).
func (*PermissionPromptModel) SetSize ¶ added in v1.7.0
func (m *PermissionPromptModel) SetSize(width, _ int)
SetSize updates the component width.
func (PermissionPromptModel) Update ¶ added in v1.7.0
func (m PermissionPromptModel) Update(msg tea.Msg) (PermissionPromptModel, tea.Cmd)
Update handles messages for the permission prompt.
func (PermissionPromptModel) View ¶ added in v1.7.0
func (m PermissionPromptModel) View() string
View renders the permission prompt dialog.
type PermissionRequestMsg ¶ added in v1.7.0
type PermissionRequestMsg struct {
ToolCallID string
ToolName string
InputSummary string // short description of what the tool wants to do
RiskLevel string // "read", "write", "destructive"
Response chan PermissionResponse
}
PermissionRequestMsg asks the user for permission to run a tool.
type PermissionResponse ¶ added in v1.7.0
type PermissionResponse struct {
Decision string // "allow_once", "always_allow", "deny", "always_deny"
Pattern string // rule pattern for "always" decisions
}
PermissionResponse is the user's answer to a permission request.
type SelectorItem ¶
type SelectorItem struct {
ID string // Model ID or config name
DisplayName string // Human-readable name
Description string // Additional info
Badge string // Optional badge (✓ for tool support, etc.)
}
SelectorItem represents an item in the selector.
type SelectorModel ¶
type SelectorModel struct {
// contains filtered or unexported fields
}
SelectorModel is a Bubble Tea component for arrow-key navigation.
func NewSelectorModel ¶
func NewSelectorModel(title string, items []SelectorItem) SelectorModel
NewSelectorModel creates a new selector component.
func (SelectorModel) GetSelected ¶
func (m SelectorModel) GetSelected() *SelectorItem
GetSelected returns the currently selected item (nil if none).
func (SelectorModel) IsActive ¶
func (m SelectorModel) IsActive() bool
IsActive returns whether the selector is currently active.
func (SelectorModel) SetHeight ¶
func (m SelectorModel) SetHeight(height int) SelectorModel
SetHeight sets the visible height of the selector.
func (SelectorModel) SetWidth ¶
func (m SelectorModel) SetWidth(width int) SelectorModel
SetWidth sets the width of the selector.
func (SelectorModel) Update ¶
func (m SelectorModel) Update(msg tea.Msg) (SelectorModel, tea.Cmd)
Update implements tea.Model.
type SelectorResultMsg ¶
type SelectorResultMsg struct {
Selected *SelectorItem // nil if cancelled
Cancelled bool
}
SelectorResultMsg is sent when the selector completes.
type SendMessageMsg ¶
type SendMessageMsg struct {
Content string
}
SendMessageMsg is sent when the user submits a message.
type Session ¶
type Session interface {
SetEndpoint(endpoint string)
GetEndpoint() string
SetModel(model string)
GetModel() string
SetNSFWMode(enabled bool)
GetNSFWMode() bool
SetName(name string)
ClearMessages()
GetMessagesRaw() interface{} // Returns []SessionMessage
SetMessagesRaw(msgs interface{}) // Accepts []SessionMessage
SummarizeRaw() interface{} // Returns SessionSummary
SetCommandHistory(history []string)
GetCommandHistory() []string
}
Session interface for session data (avoid circular import). Uses interface{} for complex types to avoid circular dependencies.
type SessionManager ¶
type SessionManager interface {
NewSession() interface{}
Save(session interface{}) error
Load(id string) (interface{}, error)
List() ([]interface{}, error)
Delete(id string) error
MergeSessions(session1, session2 interface{}) interface{}
}
SessionManager interface for session persistence (avoid circular import). Uses interface{} for return types to avoid circular dependencies.
type SessionMessage ¶
SessionMessage represents a message stored in session (matches config.SessionMessage).
type SessionSummary ¶
type SessionSummary struct {
ID string
Name string
MessageCount int
CreatedAt time.Time
UpdatedAt time.Time
FirstMessage string
Metadata map[string]interface{}
}
SessionSummary represents session metadata (matches config.SessionSummary). Duplicated here to avoid circular import with config package.
type ShowSelectorMsg ¶
type ShowSelectorMsg struct {
Title string
Items []SelectorItem
}
ShowSelectorMsg triggers the interactive selector.
type SimulateTypingMsg ¶
type SimulateTypingMsg struct {
Content string // Full content to simulate typing
CharsToShow int // How many characters to show now
}
SimulateTypingMsg is sent to simulate typing effect.
type SimulatedTyping ¶
type SimulatedTyping struct {
// contains filtered or unexported fields
}
SimulatedTyping handles simulated typing effect for non-streaming responses.
func NewSimulatedTyping ¶
func NewSimulatedTyping(content string, typingSpeed int, glitchChance float64) *SimulatedTyping
NewSimulatedTyping creates a new simulated typing effect.
func (*SimulatedTyping) Advance ¶
func (s *SimulatedTyping) Advance() int
Advance advances the typing simulation by one tick. Returns the number of characters advanced.
func (*SimulatedTyping) GetDisplayed ¶
func (s *SimulatedTyping) GetDisplayed() string
GetDisplayed returns the currently displayed content.
func (*SimulatedTyping) GetDisplayedWithCorruption ¶
func (s *SimulatedTyping) GetDisplayedWithCorruption() string
GetDisplayedWithCorruption returns displayed content with potential corruption.
func (*SimulatedTyping) IsDone ¶
func (s *SimulatedTyping) IsDone() bool
IsDone returns whether typing simulation is complete.
func (*SimulatedTyping) IsEnabled ¶
func (s *SimulatedTyping) IsEnabled() bool
IsEnabled returns whether simulated typing is enabled.
func (*SimulatedTyping) Reset ¶
func (s *SimulatedTyping) Reset(content string)
Reset resets the typing simulation.
func (*SimulatedTyping) SetEnabled ¶
func (s *SimulatedTyping) SetEnabled(enabled bool)
SetEnabled enables or disables simulated typing.
type SkillCallBatchMsg ¶ added in v1.7.0
type SkillCallBatchMsg struct {
Calls []SkillCallRequest
AssistantContent string // Assistant message content (may be empty if only tool calls)
ToolCalls []ToolCallInfo // Raw tool call payloads from assistant message
}
SkillCallBatchMsg is sent when the LLM requests one or more skill/function calls.
type SkillCallMsg ¶
type SkillCallMsg struct {
Call FunctionCall
ToolCallID string // OpenAI tool call ID for sending result back
AssistantContent string // The assistant message content (may be empty if only tool calls)
ToolCalls []ToolCallInfo // All tool calls from the assistant message
}
SkillCallMsg is sent when the LLM wants to call a skill/function.
type SkillCallRequest ¶ added in v1.7.0
type SkillCallRequest struct {
Call FunctionCall
ToolCallID string // OpenAI tool call ID for sending result back
ParseError string // Non-empty when arguments failed to parse
}
SkillCallRequest represents one tool call request in a batch.
type SkillDefinition ¶
type SkillDefinition struct {
Name string `json:"name"`
Description string `json:"description"`
Parameters map[string]any `json:"parameters"`
}
SkillDefinition represents a skill/function that can be called.
type SkillResultMsg ¶
type SkillResultMsg struct {
Name string
Result string
Err error
ToolCallID string // OpenAI tool call ID for sending result back
}
SkillResultMsg is sent when a skill execution completes.
type SkillsBrowserModel ¶
type SkillsBrowserModel struct {
// contains filtered or unexported fields
}
SkillsBrowserModel is the TUI model for interactive skills browser
func NewSkillsBrowserModel ¶
func NewSkillsBrowserModel(skillsList []SkillDefinition) SkillsBrowserModel
NewSkillsBrowserModel creates a new skills model
func (SkillsBrowserModel) Init ¶
func (m SkillsBrowserModel) Init() tea.Cmd
Init initializes the model
type SkillsModel ¶
type SkillsModel struct {
// contains filtered or unexported fields
}
SkillsModel renders lightweight runtime status for skill/tool usage in chat view.
func NewSkillsModel ¶
func NewSkillsModel() SkillsModel
func (SkillsModel) SetCompleted ¶
func (s SkillsModel) SetCompleted(name string) SkillsModel
func (SkillsModel) SetConfig ¶
func (s SkillsModel) SetConfig(endpoint, model string, enabled bool, nsfw bool, count int, reason string) SkillsModel
func (SkillsModel) SetCurrentInput ¶
func (s SkillsModel) SetCurrentInput(input string) SkillsModel
func (SkillsModel) SetError ¶
func (s SkillsModel) SetError(name string, err error) SkillsModel
func (SkillsModel) SetExecuting ¶
func (s SkillsModel) SetExecuting(name string) SkillsModel
func (SkillsModel) SetMenuState ¶
func (s SkillsModel) SetMenuState(state string) SkillsModel
func (SkillsModel) SetSize ¶
func (s SkillsModel) SetSize(width, height int) SkillsModel
func (SkillsModel) View ¶
func (s SkillsModel) View() string
type SplitPanel ¶ added in v1.7.0
type SplitPanel struct {
// contains filtered or unexported fields
}
SplitPanel renders a two-column layout:
Left — agent action feed (scrollable log) Right — live code output / file diff / verdict
func NewSplitPanel ¶ added in v1.7.0
func NewSplitPanel(width, height int) *SplitPanel
NewSplitPanel creates a SplitPanel sized to the given terminal dimensions.
func (*SplitPanel) Actions ¶ added in v1.7.0
func (s *SplitPanel) Actions() []string
Actions returns the current action feed entries.
func (*SplitPanel) AddAction ¶ added in v1.7.0
func (s *SplitPanel) AddAction(text string)
AddAction appends an entry to the left action feed. When the user has scrolled up (scrollOffset > 0), the view is pinned by incrementing the offset so the same lines stay visible.
func (*SplitPanel) AppendOutput ¶ added in v1.7.0
func (s *SplitPanel) AppendOutput(text string)
AppendOutput appends text to the right panel without resetting scroll. Used for incremental updates (e.g., tool calls building up during review).
func (*SplitPanel) AtBottom ¶ added in v1.7.0
func (s *SplitPanel) AtBottom() bool
AtBottom reports whether the left panel is auto-following the latest entry.
func (*SplitPanel) DiffContent ¶ added in v1.7.0
func (s *SplitPanel) DiffContent() string
DiffContent returns the diff currently shown in the right panel.
func (*SplitPanel) DiffFile ¶ added in v1.7.0
func (s *SplitPanel) DiffFile() string
DiffFile returns the file name currently shown in the right panel.
func (*SplitPanel) Resize ¶ added in v1.7.0
func (s *SplitPanel) Resize(width, height int)
Resize updates the panel dimensions (call on tea.WindowSizeMsg).
func (*SplitPanel) ScrollDown ¶ added in v1.7.0
func (s *SplitPanel) ScrollDown(lines int)
ScrollDown scrolls toward the latest entries. Reaching 0 resumes auto-follow.
func (*SplitPanel) ScrollRightDown ¶ added in v1.7.0
func (s *SplitPanel) ScrollRightDown(lines int)
ScrollRightDown scrolls the right artifact panel down.
func (*SplitPanel) ScrollRightUp ¶ added in v1.7.0
func (s *SplitPanel) ScrollRightUp(lines int)
ScrollRightUp scrolls the right artifact panel up.
func (*SplitPanel) ScrollUp ¶ added in v1.7.0
func (s *SplitPanel) ScrollUp(lines int)
ScrollUp scrolls the left action feed toward older entries (up = back in time).
func (*SplitPanel) SetDiff ¶ added in v1.7.0
func (s *SplitPanel) SetDiff(file, diff string)
SetDiff updates the right panel with a file diff.
func (*SplitPanel) SetOutput ¶ added in v1.7.0
func (s *SplitPanel) SetOutput(text string)
SetOutput updates the live response text shown in the right panel. Called after each agent turn to display what the model responded.
func (*SplitPanel) SetVerdict ¶ added in v1.7.0
func (s *SplitPanel) SetVerdict(text string)
SetVerdict replaces the right panel with a verdict report.
func (*SplitPanel) View ¶ added in v1.7.0
func (s *SplitPanel) View() string
View renders the split panel as a string for Bubble Tea.
type StatusModel ¶
type StatusModel struct {
// contains filtered or unexported fields
}
StatusModel represents the status bar.
func (StatusModel) ClearContextWarning ¶
func (m StatusModel) ClearContextWarning() StatusModel
ClearContextWarning clears the context warning.
func (StatusModel) SetStreaming ¶
func (m StatusModel) SetStreaming(streaming bool) StatusModel
SetStreaming sets the streaming indicator.
func (StatusModel) SetText ¶
func (m StatusModel) SetText(text string) StatusModel
SetText sets the status text.
func (StatusModel) SetWidth ¶
func (m StatusModel) SetWidth(width int) StatusModel
SetWidth sets the status bar width.
func (StatusModel) ShowContextWarning ¶
func (m StatusModel) ShowContextWarning(level string, message string) StatusModel
ShowContextWarning displays a context warning message.
func (StatusModel) Update ¶
func (m StatusModel) Update(msg tea.Msg) (StatusModel, tea.Cmd)
Update handles tick messages for animation.
type StreamChunk ¶
type StreamChunk struct {
Content string // Content delta
IsFirst bool // Is this the first chunk?
IsFinal bool // Is this the last chunk?
FinishReason string // Reason for finishing (if final)
}
StreamChunk represents a piece of streamed response.
type StreamChunkMsg ¶
type StreamChunkMsg struct {
Chunk StreamChunk
}
StreamChunkMsg is sent when a new stream chunk arrives.
type StreamDoneMsg ¶
type StreamDoneMsg struct {
FullContent string
FinishReason string
Usage *TokenUsage // Token usage from API (if available)
}
StreamDoneMsg is sent when streaming is complete.
type StreamErrorMsg ¶
type StreamErrorMsg struct {
Err error
}
StreamErrorMsg is sent when streaming encounters an error.
type TokenUsage ¶
TokenUsage holds token usage information from API response
type ToolCallInfo ¶
ToolCallInfo represents a tool call in an assistant message.
type ToolProgressModel ¶ added in v1.7.0
type ToolProgressModel struct {
// contains filtered or unexported fields
}
ToolProgressModel displays stacked tool execution cards.
func NewToolProgressModel ¶ added in v1.7.0
func NewToolProgressModel() ToolProgressModel
NewToolProgressModel creates a new tool progress model.
func (ToolProgressModel) HasActive ¶ added in v1.7.0
func (m ToolProgressModel) HasActive() bool
HasActive returns true if there are any entries to display.
func (ToolProgressModel) Init ¶ added in v1.7.0
func (m ToolProgressModel) Init() tea.Cmd
Init initializes the model (no-op).
func (*ToolProgressModel) SetSize ¶ added in v1.7.0
func (m *ToolProgressModel) SetSize(width, _ int)
SetSize updates the component width.
func (ToolProgressModel) Update ¶ added in v1.7.0
func (m ToolProgressModel) Update(msg tea.Msg) (ToolProgressModel, tea.Cmd)
Update handles messages for the tool progress component.
func (ToolProgressModel) View ¶ added in v1.7.0
func (m ToolProgressModel) View() string
View renders the tool progress cards.