tui

package
v1.20.2 Latest Latest
Warning

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

Go to latest
Published: Mar 28, 2026 License: AGPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const ASCIIArt = `` /* 1004-byte string literal not displayed */

ASCIIArt is the polycode logo for use in splash screens and CLI output.

Variables

View Source
var PopularMCPServers = []MCPServerTemplate{
	{
		Name:        "filesystem",
		Description: "Read/write local files and directories",
		Command:     "npx",
		Args:        []string{"-y", "@modelcontextprotocol/server-filesystem", "{PATH}"},
		Category:    "filesystem",
	},
	{
		Name:        "github",
		Description: "GitHub API — repos, issues, PRs, search",
		Command:     "npx",
		Args:        []string{"-y", "@modelcontextprotocol/server-github"},
		EnvVars:     []MCPTemplateEnvVar{{Name: "GITHUB_TOKEN", IsSecret: true}},
		Category:    "dev-tools",
	},
	{
		Name:        "postgres",
		Description: "Query PostgreSQL databases (read-only)",
		Command:     "npx",
		Args:        []string{"-y", "@modelcontextprotocol/server-postgres", "{CONNECTION_STRING}"},
		ReadOnly:    true,
		Category:    "database",
	},
	{
		Name:        "brave-search",
		Description: "Web search via Brave Search API",
		Command:     "npx",
		Args:        []string{"-y", "@modelcontextprotocol/server-brave-search"},
		EnvVars:     []MCPTemplateEnvVar{{Name: "BRAVE_API_KEY", IsSecret: true}},
		ReadOnly:    true,
		Category:    "search",
	},
	{
		Name:        "memory",
		Description: "Persistent knowledge graph memory",
		Command:     "npx",
		Args:        []string{"-y", "@modelcontextprotocol/server-memory"},
		Category:    "ai",
	},
	{
		Name:        "puppeteer",
		Description: "Browser automation and web scraping",
		Command:     "npx",
		Args:        []string{"-y", "@modelcontextprotocol/server-puppeteer"},
		Category:    "dev-tools",
	},
	{
		Name:        "sqlite",
		Description: "Query SQLite databases",
		Command:     "npx",
		Args:        []string{"-y", "@modelcontextprotocol/server-sqlite", "{DB_PATH}"},
		ReadOnly:    true,
		Category:    "database",
	},
	{
		Name:        "slack",
		Description: "Slack workspace integration",
		Command:     "npx",
		Args:        []string{"-y", "@modelcontextprotocol/server-slack"},
		EnvVars:     []MCPTemplateEnvVar{{Name: "SLACK_BOT_TOKEN", IsSecret: true}, {Name: "SLACK_TEAM_ID", IsSecret: false}},
		Category:    "dev-tools",
	},
}

PopularMCPServers is the curated registry of well-known MCP servers.

Functions

This section is empty.

Types

type ConfigChangedMsg

type ConfigChangedMsg struct {
	Config *config.Config
}

ConfigChangedMsg is sent when the config has been modified by the settings screens. The app layer handles this by rebuilding the registry and pipeline.

type ConfirmActionMsg

type ConfirmActionMsg struct {
	Description string
	ResponseCh  chan bool
}

ConfirmActionMsg asks the user to confirm an action. The ResponseCh is used to synchronously communicate the user's decision back to the goroutine that requested confirmation.

type ConsensusAnalysisMsg added in v0.2.0

type ConsensusAnalysisMsg struct {
	Confidence string
	Agreements []string
	Minorities []string
	Evidence   []string
}

ConsensusAnalysisMsg delivers structured provenance from the consensus synthesis.

type ConsensusChunkMsg

type ConsensusChunkMsg struct {
	Delta string
	Done  bool
	Error error
}

ConsensusChunkMsg delivers a streaming chunk from the consensus synthesis.

type Exchange

type Exchange struct {
	Prompt             string
	ConsensusResponse  string
	IndividualResponse map[string]string         // provider name → response
	ProviderTraces     map[string][]TraceSection // provider name → ordered trace sections
	// contains filtered or unexported fields
}

Exchange represents a completed prompt/response pair in history.

type MCPCallCountMsg added in v1.19.0

type MCPCallCountMsg struct {
	Count int64
}

MCPCallCountMsg updates the MCP tool call count in the TUI.

type MCPDashboardDataMsg added in v1.20.1

type MCPDashboardDataMsg struct {
	Servers    []MCPDashboardServer
	TotalTools int
	TotalCalls int64
}

MCPDashboardDataMsg delivers full MCP dashboard data to the TUI.

type MCPDashboardServer added in v1.20.1

type MCPDashboardServer struct {
	Name          string
	Transport     string // "stdio" or "sse"
	Status        string // "connected", "failed", "disconnected"
	ToolCount     int
	ReadOnly      bool
	Error         string
	Tools         []string // prefixed tool names
	ResourceCount int
	PromptCount   int
}

MCPDashboardServer holds full display data for one server in the MCP dashboard.

type MCPRegistryEnvMeta added in v1.20.0

type MCPRegistryEnvMeta struct {
	Name        string
	Description string
	IsSecret    bool
	IsRequired  bool
}

MCPRegistryEnvMeta holds env var metadata for display in the wizard.

type MCPRegistryResult added in v1.20.0

type MCPRegistryResult struct {
	Name           string
	Description    string
	TransportLabel string
	PackageID      string
	EnvVars        []MCPRegistryEnvMeta // env var metadata for individual prompting
	// Full server data for config mapping (passed to app layer).
	ServerData any // *mcp.RegistryServer — stored as any to avoid import cycle
}

MCPRegistryResult holds a server from the MCP Registry for the wizard browse step.

type MCPRegistryResultsMsg added in v1.20.0

type MCPRegistryResultsMsg struct {
	Servers []MCPRegistryResult
	Error   error
}

MCPRegistryResultsMsg delivers registry search results to the TUI.

type MCPServerStatus added in v1.19.0

type MCPServerStatus struct {
	Name      string
	Transport string // "stdio" or "sse"
	Status    string // "connected", "failed", "disconnected"
	ToolCount int
	Error     string // populated on failure
}

MCPServerStatus holds display info for one MCP server in the settings view.

type MCPServerTemplate added in v1.19.0

type MCPServerTemplate struct {
	Name        string
	Description string
	Command     string
	Args        []string
	EnvVars     []MCPTemplateEnvVar
	ReadOnly    bool
	Category    string
}

MCPServerTemplate defines a pre-configured MCP server for the curated registry.

type MCPStatusMsg added in v1.19.0

type MCPStatusMsg struct {
	Servers []MCPServerStatus
}

MCPStatusMsg is sent from app.go after MCP connect attempts to update the settings view with server status information.

type MCPTemplateEnvVar added in v1.20.0

type MCPTemplateEnvVar struct {
	Name     string
	IsSecret bool
}

MCPTemplateEnvVar describes an env var in a server template.

type MCPTestResultMsg added in v1.19.0

type MCPTestResultMsg struct {
	ServerName string
	Success    bool
	ToolCount  int
	Error      string
}

MCPTestResultMsg delivers the result of a connection test for an MCP server.

type MCPToolsChangedMsg added in v1.19.0

type MCPToolsChangedMsg struct {
	ServerName string
	ToolCount  int
}

MCPToolsChangedMsg notifies the TUI that an MCP server's tool list has changed.

type MemoryDisplayMsg added in v0.2.0

type MemoryDisplayMsg struct {
	Content string
}

MemoryDisplayMsg shows memory contents in the chat.

type ModeChangedMsg added in v0.2.0

type ModeChangedMsg struct {
	Mode string // "quick", "balanced", "thorough"
}

ModeChangedMsg updates the current operating mode display.

type Model

type Model struct {
	// contains filtered or unexported fields
}

Model is the main Bubble Tea model for the polycode TUI.

func NewModel

func NewModel(providerNames []string, primaryName string, version string) Model

NewModel creates a new TUI model.

func (*Model) AppendHistory added in v0.2.0

func (m *Model) AppendHistory(ex Exchange)

AppendHistory adds an exchange to the display history (used for session restore).

func (Model) Init

func (m Model) Init() tea.Cmd

Init implements tea.Model.

func (Model) SendConsensusChunk

func (m Model) SendConsensusChunk(delta string, done bool, err error) tea.Cmd

func (Model) SendProviderChunk

func (m Model) SendProviderChunk(name, delta string, done bool, err error) tea.Cmd

func (*Model) SetClearHandler added in v0.2.0

func (m *Model) SetClearHandler(handler func())

SetClearHandler sets the callback for when the user runs /clear.

func (*Model) SetConfig

func (m *Model) SetConfig(cfg *config.Config)

SetConfig sets the config reference on the model so settings screens can perform CRUD operations.

func (*Model) SetConfigChangeHandler

func (m *Model) SetConfigChangeHandler(handler func(*config.Config))

SetConfigChangeHandler sets the callback invoked when the config changes from the settings screen (add/edit/delete provider). The app layer uses this to rebuild the registry and pipeline.

func (*Model) SetExportHandler added in v1.4.0

func (m *Model) SetExportHandler(handler func(path string))

SetExportHandler sets the callback for /export command.

func (*Model) SetMCPDashboardRefreshHandler added in v1.20.1

func (m *Model) SetMCPDashboardRefreshHandler(handler func())

SetMCPDashboardRefreshHandler sets the callback for refreshing dashboard data.

func (*Model) SetMCPHandler added in v1.19.0

func (m *Model) SetMCPHandler(handler func(subcommand, args string))

SetMCPHandler sets the callback for /mcp command.

func (*Model) SetMCPRegistryFetchHandler added in v1.20.0

func (m *Model) SetMCPRegistryFetchHandler(handler func())

SetMCPRegistryFetchHandler sets the callback for triggering registry fetch.

func (*Model) SetMCPRegistrySelectHandler added in v1.20.0

func (m *Model) SetMCPRegistrySelectHandler(handler func(result MCPRegistryResult) config.MCPServerConfig)

SetMCPRegistrySelectHandler sets the callback for mapping a registry result to a config. The callback returns a config.MCPServerConfig that the wizard applies directly.

func (*Model) SetMCPWizardFromConfig added in v1.20.0

func (m *Model) SetMCPWizardFromConfig(cfg config.MCPServerConfig)

SetMCPWizardFromConfig populates the wizard data from a mapped MCPServerConfig (used when selecting a server from the registry).

func (*Model) SetMemoryHandler added in v0.2.0

func (m *Model) SetMemoryHandler(handler func(args string))

SetMemoryHandler sets the callback for /memory command.

func (*Model) SetModeChangeHandler added in v0.2.0

func (m *Model) SetModeChangeHandler(handler func(mode string))

SetModeChangeHandler sets the callback for /mode command.

func (*Model) SetModelLister added in v1.1.0

func (m *Model) SetModelLister(lister func(providerType string) []config.ModelSummary)

SetModelLister sets a callback that returns available models for a provider type. Used by the wizard to show a model list instead of requiring manual text entry.

func (*Model) SetPlanHandler added in v0.2.0

func (m *Model) SetPlanHandler(handler func(request string))

SetPlanHandler sets the callback for when the user runs /plan.

func (*Model) SetReconnectMCPHandler added in v1.19.0

func (m *Model) SetReconnectMCPHandler(handler func(serverName string))

SetReconnectMCPHandler sets the callback for reconnecting an MCP server.

func (*Model) SetSaveHandler added in v1.4.0

func (m *Model) SetSaveHandler(handler func())

SetSaveHandler sets the callback for /save command.

func (*Model) SetSessionsHandler added in v1.10.0

func (m *Model) SetSessionsHandler(handler func(subcommand, args string))

SetSessionsHandler sets the callback for /sessions command.

func (*Model) SetSkillHandler added in v1.9.0

func (m *Model) SetSkillHandler(handler func(subcommand, args string))

SetSkillHandler sets the callback for /skill command.

func (*Model) SetSubmitHandler

func (m *Model) SetSubmitHandler(handler func(prompt string))

SetSubmitHandler sets the callback for when the user submits a prompt.

func (*Model) SetTestMCPHandler added in v1.19.0

func (m *Model) SetTestMCPHandler(handler func(cfg config.MCPServerConfig))

SetTestMCPHandler sets the callback for testing an MCP server connection.

func (*Model) SetTestProviderHandler

func (m *Model) SetTestProviderHandler(handler func(providerName string))

SetTestProviderHandler sets the callback invoked when the user presses 't' in the settings screen to test a provider connection.

func (*Model) SetYoloToggleHandler added in v1.7.0

func (m *Model) SetYoloToggleHandler(handler func(enabled bool))

SetYoloToggleHandler sets the callback for /yolo toggle.

func (Model) Update

func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd)

Update implements tea.Model.

func (Model) View

func (m Model) View() string

View implements tea.Model.

type PlanDoneMsg added in v0.2.0

type PlanDoneMsg struct {
	FinalOutput string
	Error       error
}

PlanDoneMsg signals that a /plan job has completed.

type ProviderChunkMsg

type ProviderChunkMsg struct {
	ProviderName string
	Delta        string
	Done         bool
	Error        error
}

ProviderChunkMsg delivers a streaming chunk from a provider.

type ProviderPanel

type ProviderPanel struct {
	Name      string
	IsPrimary bool
	Status    ProviderStatus
	Content   *strings.Builder
	Viewport  viewport.Model

	// Phase-ordered trace sections for structured provider activity.
	TraceSections []TraceSection
	// contains filtered or unexported fields
}

ProviderPanel holds the state for one provider's response panel.

type ProviderStatus

type ProviderStatus int

ProviderStatus tracks the state of a single provider's response.

const (
	StatusIdle ProviderStatus = iota
	StatusLoading
	StatusDone
	StatusFailed
	StatusTimedOut
)

type ProviderTraceMsg added in v1.12.0

type ProviderTraceMsg struct {
	ProviderName string
	Phase        TracePhase
	Delta        string
	Done         bool
	Error        error
}

ProviderTraceMsg delivers a phase-aware trace event for a provider tab.

type QueryDoneMsg

type QueryDoneMsg struct{}

QueryDoneMsg signals that the full pipeline (fan-out + consensus) is complete.

type QueryStartMsg

type QueryStartMsg struct {
	// QueriedProviders lists the provider IDs being queried. If empty,
	// all panels are set to loading (backward compat). If set, only the
	// listed providers show as loading — others stay idle.
	QueriedProviders []string
	// RoutingReason is a human-readable explanation of why these providers
	// were selected (e.g., "balanced: primary + best-scoring secondary").
	RoutingReason string
}

QueryStartMsg signals that a query has begun.

type Styles

type Styles struct {
	App             lipgloss.Style
	StatusBar       lipgloss.Style
	StatusHealthy   lipgloss.Style
	StatusUnhealthy lipgloss.Style
	StatusPrimary   lipgloss.Style
	PanelBorder     lipgloss.Style
	ConsensusBorder lipgloss.Style
	InputBorder     lipgloss.Style
	Title           lipgloss.Style
	Prompt          lipgloss.Style
	Dimmed          lipgloss.Style
}

Styles holds all lipgloss styles for the TUI.

type TestResultMsg

type TestResultMsg struct {
	ProviderName string
	Success      bool
	Duration     string
	Error        error
}

TestResultMsg is sent when a provider connection test completes.

type TokenUpdateMsg

type TokenUpdateMsg struct {
	Usage []tokens.ProviderUsage
}

TokenUpdateMsg delivers a snapshot of token usage for all providers.

type ToolCallMsg added in v0.2.0

type ToolCallMsg struct {
	ToolName    string
	Description string // e.g., "Reading main.go" or "Running `go test`"
}

ToolCallMsg notifies the TUI that a tool is being executed.

type TracePhase added in v1.12.0

type TracePhase string

TracePhase identifies which phase of provider activity a trace event belongs to.

const (
	PhaseFanout    TracePhase = "fanout"
	PhaseSynthesis TracePhase = "synthesis"
	PhaseTool      TracePhase = "tool"
	PhaseVerify    TracePhase = "verify"
)

type TraceSection added in v1.12.0

type TraceSection struct {
	Phase   string // "fanout", "synthesis", "tool", "verify"
	Content string
}

TraceSection holds accumulated content for one phase of provider activity.

type WizardTestResultMsg added in v1.1.0

type WizardTestResultMsg struct {
	Success bool
	Error   error
}

WizardTestResultMsg is sent when a wizard connection test completes.

type WorkerProgressMsg added in v0.2.0

type WorkerProgressMsg struct {
	StageName    string
	Role         string
	ProviderName string
	Status       string // "pending", "running", "complete"
	Summary      string // one-line summary of output (set when complete)
}

WorkerProgressMsg updates a worker's status in the TUI during /plan execution.

Jump to

Keyboard shortcuts

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