Documentation
¶
Index ¶
- Variables
- func BuiltinSkins() map[string]*Config
- type Branding
- type Colors
- type Config
- type CostInfo
- type CostRenderer
- type Manager
- func (m *Manager) DeleteUserSkin(name string) error
- func (m *Manager) ExportJSON(name string) (string, error)
- func (m *Manager) GetActive() *Config
- func (m *Manager) GetActiveName() string
- func (m *Manager) GetSkin(name string) (*Config, error)
- func (m *Manager) GetSkinInfo(name string) (map[string]interface{}, error)
- func (m *Manager) IsBuiltin(name string) bool
- func (m *Manager) List() []string
- func (m *Manager) ListBuiltin() []string
- func (m *Manager) ListUser() []string
- func (m *Manager) OnChange(cb func(*Config))
- func (m *Manager) Reset() error
- func (m *Manager) SaveUserSkin(name string, skin *Config) error
- func (m *Manager) SetActive(name string) error
- func (m *Manager) SetSkinDir(dir string)
- type MarkdownRenderer
- type Renderer
- func (r *Renderer) AgentName() string
- func (r *Renderer) Banner(title, subtitle string) string
- func (r *Renderer) BulletItem(text string) string
- func (r *Renderer) Color(name string) string
- func (r *Renderer) Error(msg string) string
- func (r *Renderer) GetSkin() *Config
- func (r *Renderer) Info(msg string) string
- func (r *Renderer) KeyValue(key, value string) string
- func (r *Renderer) ProgressBar(current, total int, width int) string
- func (r *Renderer) Prompt() string
- func (r *Renderer) ResetFrame()
- func (r *Renderer) ResponseLabel() string
- func (r *Renderer) SectionHeader(title string) string
- func (r *Renderer) SetSkin(skin *Config)
- func (r *Renderer) SimpleBanner(title string) string
- func (r *Renderer) SpinnerFrame() string
- func (r *Renderer) Stop()
- func (r *Renderer) Success(msg string) string
- func (r *Renderer) ThinkingAnimation() string
- func (r *Renderer) ThinkingSpinner() string
- func (r *Renderer) ToolName(name string) string
- func (r *Renderer) ToolOutput(output string) string
- func (r *Renderer) ToolPrefix() string
- func (r *Renderer) WaitingAnimation() string
- func (r *Renderer) Warning(msg string) string
- func (r *Renderer) Welcome() string
- type Spinner
- type ToolCallDisplay
- type ToolCallRenderer
- type ToolEmojis
- type Waiter
Constants ¶
This section is empty.
Variables ¶
var CyberSkin = &Config{ Name: "cyber", Description: "Neon cyberpunk terminal theme", Colors: Colors{ BannerBorder: "\033[38;5;201m", BannerTitle: "\033[38;5;51m", BannerAccent: "\033[38;5;219m", BannerDim: "\033[38;5;57m", BannerText: "\033[38;5;231m", ResponseBorder: "\033[38;5;201m", SpinnerActive: "\033[38;5;51m", ToolPrefixColor: "\033[38;5;201m", ToolText: "\033[38;5;231m", PromptSymbol: "\033[38;5;51m", PromptText: "\033[38;5;219m", Error: "\033[38;5;196m", Warning: "\033[38;5;214m", Success: "\033[38;5;82m", }, Spinner: Spinner{ Frames: []string{ "█", "▓", "▒", "░", "▒", "▓", }, WaitingFaces: []string{ "█[░]█", "█[▒]█", "█[▓]█", }, ThinkingFaces: []string{ "█[█]█", "▓[█]▓", }, ThinkingVerbs: []string{ "jacking in", "decrypting", "uploading", "hacking", }, Wings: [][]string{ {"⟨⚡", "⚡⟩"}, }, Speed: 80, }, Branding: Branding{ AgentName: "Cyber Agent", Welcome: "Type /help for commands, /exit to quit", ResponseLabel: "⚡ Cyber ", PromptSymbol: "›", }, ToolPrefix: "▏", ToolEmojis: ToolEmojis{ "web_search": "🌐", "read_file": "📄", "write_file": "💾", "execute_command": "⚡", "browser_navigate": "🌍", "delegate_task": "🎭", "memory_store": "🧠", "memory_recall": "📤", "execute_code": "💻", }, }
Cyber skin - neon cyberpunk theme
var DefaultSkin = &Config{ Name: "default", Description: "Classic gold/kawaii style", Colors: Colors{ BannerBorder: "\033[38;5;220m", BannerTitle: "\033[38;5;214m", BannerAccent: "\033[38;5;220m", BannerDim: "\033[38;5;241m", BannerText: "\033[38;5;255m", ResponseBorder: "\033[38;5;220m", SpinnerActive: "\033[38;5;214m", ToolPrefixColor: "\033[38;5;75m", ToolText: "\033[38;5;255m", PromptSymbol: "\033[38;5;214m", PromptText: "\033[38;5;255m", Error: "\033[38;5;196m", Warning: "\033[38;5;214m", Success: "\033[38;5;82m", }, Spinner: Spinner{ Frames: []string{ "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏", }, WaitingFaces: []string{ "(*・ω・)ノ", "( ̄ω ̄)ノ", "(ノ・ω・)ノ", "(・ω・)ノ", "(~ω~)ノ", }, ThinkingFaces: []string{ "(・ω・)ゞ", "(`・ω・)ゞ", "(・ω・)ゞ", "( ̄ω ̄)ゞ", }, ThinkingVerbs: []string{ "thinking", "analyzing", "processing", "researching", "planning", }, Wings: [][]string{ {"⟨⚡", "⚡⟩"}, }, Speed: 80, }, Branding: Branding{ AgentName: "magic", Welcome: "Type /help for commands, /exit to quit", ResponseLabel: "Response", PromptSymbol: ">", }, ToolPrefix: "┊", ToolEmojis: ToolEmojis{ "web_search": "🌐", "read_file": "📄", "write_file": "✏️", "execute_command": "⚡", "browser_navigate": "🌍", "delegate_task": "🎭", "memory_store": "💾", "memory_recall": "🧠", "session_search": "🔎", "cronjob": "⏰", "skill_list": "📚", "skill_view": "📖", "skill_create": "✨", "ha_list_entities": "🏠", "ha_call_service": "🔌", "execute_code": "💻", "json": "{}", "yaml": "📝", "hash": "#️⃣", "uuid": "🆔", }, }
Default skin - classic gold/kawaii style
var MonoSkin = &Config{ Name: "mono", Description: "Clean grayscale monochrome", Colors: Colors{ BannerBorder: "\033[90m", BannerTitle: "\033[97m", BannerAccent: "\033[37m", BannerDim: "\033[90m", BannerText: "\033[97m", ResponseBorder: "\033[90m", SpinnerActive: "\033[97m", ToolPrefixColor: "\033[90m", ToolText: "\033[97m", PromptSymbol: "\033[97m", PromptText: "\033[90m", Error: "\033[97m", Warning: "\033[90m", Success: "\033[37m", }, Spinner: Spinner{ Frames: []string{ "◐", "◓", "◑", "◒", }, WaitingFaces: []string{ "[ ]", "[=]", "[*]", }, ThinkingFaces: []string{ "[?]", "[~]", }, ThinkingVerbs: []string{ "processing", "loading", "working", }, Wings: [][]string{ {"[", "]"}, }, Speed: 150, }, Branding: Branding{ AgentName: "magic", Welcome: "Type /help for commands, /exit to quit", ResponseLabel: "OUT", PromptSymbol: "$", }, ToolPrefix: "│", ToolEmojis: ToolEmojis{ "web_search": "[W]", "read_file": "[F]", "write_file": "[F]", "execute_command": "[X]", "browser_navigate": "[B]", "delegate_task": "[D]", "memory_store": "[M]", "memory_recall": "[M]", "execute_code": "[C]", }, }
Mono skin - clean grayscale monochrome
var SlateSkin = &Config{ Name: "slate", Description: "Cool blue developer-focused theme", Colors: Colors{ BannerBorder: "\033[38;5;75m", BannerTitle: "\033[38;5;39m", BannerAccent: "\033[38;5;117m", BannerDim: "\033[38;5;59m", BannerText: "\033[38;5;195m", ResponseBorder: "\033[38;5;75m", SpinnerActive: "\033[38;5;39m", ToolPrefixColor: "\033[38;5;75m", ToolText: "\033[38;5;195m", PromptSymbol: "\033[38;5;39m", PromptText: "\033[38;5;195m", Error: "\033[38;5;203m", Warning: "\033[38;5;214m", Success: "\033[38;5;114m", }, Spinner: Spinner{ Frames: []string{ "▁", "▂", "▃", "▅", "▆", "▇", "▆", "▅", "▃", "▂", }, WaitingFaces: []string{ "[-]", "[\\]", "[|]", "[/]", "[-]", }, ThinkingFaces: []string{ "[~]", "[≈]", }, ThinkingVerbs: []string{ "loading", "building", "compiling", "testing", }, Wings: [][]string{ {"━", "━"}, }, Speed: 100, }, Branding: Branding{ AgentName: "magic", Welcome: "Type /help for commands, /exit to quit", ResponseLabel: "▸", PromptSymbol: "›", }, ToolPrefix: "│", ToolEmojis: ToolEmojis{ "web_search": "🌐", "read_file": "📄", "write_file": "📝", "execute_command": "⚡", "browser_navigate": "🌍", "delegate_task": "🎭", "memory_store": "💾", "memory_recall": "🧠", "execute_code": "💻", }, }
Slate skin - cool blue developer-focused theme
Functions ¶
Types ¶
type Branding ¶
type Branding struct {
// Agent display name
AgentName string `json:"agent_name" yaml:"agent_name"`
// Welcome message
Welcome string `json:"welcome" yaml:"welcome"`
// Response box label
ResponseLabel string `json:"response_label" yaml:"response_label"`
// Prompt symbol (> , $, etc.)
PromptSymbol string `json:"prompt_symbol" yaml:"prompt_symbol"`
// ASCII art banner
Banner string `json:"banner" yaml:"banner"`
}
Branding defines branding text customizations
type Colors ¶
type Colors struct {
// Banner colors
BannerBorder string `json:"banner_border" yaml:"banner_border"`
BannerTitle string `json:"banner_title" yaml:"banner_title"`
BannerAccent string `json:"banner_accent" yaml:"banner_accent"`
BannerDim string `json:"banner_dim" yaml:"banner_dim"`
BannerText string `json:"banner_text" yaml:"banner_text"`
// Response box colors
ResponseBorder string `json:"response_border" yaml:"response_border"`
// Spinner colors
SpinnerActive string `json:"spinner_active" yaml:"spinner_active"`
// Tool output colors
ToolPrefixColor string `json:"tool_prefix_color" yaml:"tool_prefix_color"`
ToolText string `json:"tool_text" yaml:"tool_text"`
// Prompt colors
PromptSymbol string `json:"prompt_symbol" yaml:"prompt_symbol"`
PromptText string `json:"prompt_text" yaml:"prompt_text"`
// Error/Warning colors
Error string `json:"error" yaml:"error"`
Warning string `json:"warning" yaml:"warning"`
Success string `json:"success" yaml:"success"`
}
Colors defines all color customizations
type Config ¶
type Config struct {
Name string `json:"name" yaml:"name"`
Description string `json:"description" yaml:"description"`
Colors Colors `json:"colors" yaml:"colors"`
Spinner Spinner `json:"spinner" yaml:"spinner"`
Branding Branding `json:"branding" yaml:"branding"`
ToolPrefix string `json:"tool_prefix" yaml:"tool_prefix"`
ToolEmojis ToolEmojis `json:"tool_emojis" yaml:"tool_emojis"`
}
Config represents a complete skin configuration
func GetBuiltinSkin ¶
GetBuiltinSkin returns a built-in skin by name
func LoadSkinFile ¶
LoadSkinFile loads a skin from a YAML file
type CostInfo ¶ added in v0.3.0
type CostInfo struct {
InputTokens int
OutputTokens int
TotalTokens int
TotalCost float64
Currency string
}
CostInfo holds cost information for display
type CostRenderer ¶ added in v0.3.0
type CostRenderer struct {
// contains filtered or unexported fields
}
CostRenderer renders cost information
func NewCostRenderer ¶ added in v0.3.0
func NewCostRenderer(noColor bool) *CostRenderer
NewCostRenderer creates a new cost renderer
func (*CostRenderer) RenderCost ¶ added in v0.3.0
func (r *CostRenderer) RenderCost(info *CostInfo)
RenderCost renders cost information
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager handles skin loading, caching, and application
func (*Manager) DeleteUserSkin ¶
DeleteUserSkin removes a user skin
func (*Manager) ExportJSON ¶
ExportJSON exports a skin as JSON
func (*Manager) GetActiveName ¶
GetActiveName returns the name of the active skin
func (*Manager) GetSkinInfo ¶
GetSkinInfo returns info about a skin without loading full content
func (*Manager) ListBuiltin ¶
ListBuiltin returns only built-in skin names
func (*Manager) SaveUserSkin ¶
SaveUserSkin saves a skin to the user directory
func (*Manager) SetSkinDir ¶
SetSkinDir sets the user skin directory
type MarkdownRenderer ¶ added in v0.3.0
type MarkdownRenderer struct {
// contains filtered or unexported fields
}
MarkdownRenderer renders markdown content
func NewMarkdownRenderer ¶ added in v0.3.0
func NewMarkdownRenderer(noColor bool) *MarkdownRenderer
NewMarkdownRenderer creates a new markdown renderer
func (*MarkdownRenderer) Render ¶ added in v0.3.0
func (r *MarkdownRenderer) Render(text string) string
Render renders markdown to styled text
func (*MarkdownRenderer) RenderStreaming ¶ added in v0.3.0
func (r *MarkdownRenderer) RenderStreaming(text string) string
RenderStreaming renders markdown content streamingly
type Renderer ¶
type Renderer struct {
// contains filtered or unexported fields
}
Renderer renders text with skin styling
func (*Renderer) BulletItem ¶
BulletItem returns a styled bullet item
func (*Renderer) ProgressBar ¶
ProgressBar renders a mini progress bar
func (*Renderer) ResetFrame ¶
func (r *Renderer) ResetFrame()
ResetFrame resets the spinner frame index
func (*Renderer) ResponseLabel ¶
ResponseLabel returns the styled response label
func (*Renderer) SectionHeader ¶
SectionHeader returns a styled section header
func (*Renderer) SimpleBanner ¶
SimpleBanner renders a simple banner without box
func (*Renderer) SpinnerFrame ¶
SpinnerFrame returns the next spinner frame
func (*Renderer) ThinkingAnimation ¶
ThinkingAnimation returns a thinking animation with verb
func (*Renderer) ThinkingSpinner ¶
ThinkingSpinner returns a thinking spinner with verb
func (*Renderer) ToolOutput ¶
ToolOutput returns styled tool output
func (*Renderer) ToolPrefix ¶
ToolPrefix returns the styled tool prefix
func (*Renderer) WaitingAnimation ¶
WaitingAnimation returns a waiting animation with face
type Spinner ¶
type Spinner struct {
// Spinner characters
Frames []string `json:"frames" yaml:"frames"`
// Waiting state faces (emoji)
WaitingFaces []string `json:"waiting_faces" yaml:"waiting_faces"`
// Thinking state faces (emoji)
ThinkingFaces []string `json:"thinking_faces" yaml:"thinking_faces"`
// Thinking verbs (actions shown during thinking)
ThinkingVerbs []string `json:"thinking_verbs" yaml:"thinking_verbs"`
// Wings (decorative characters on each side)
Wings [][]string `json:"wings" yaml:"wings"`
// Animation speed (milliseconds per frame)
Speed int `json:"speed" yaml:"speed"`
}
Spinner defines spinner animation settings
type ToolCallDisplay ¶ added in v0.3.0
type ToolCallDisplay struct {
Name string
Arguments string
Started time.Time
Ended time.Time
Success bool
Error string
}
ToolCallDisplay holds tool call information for display
type ToolCallRenderer ¶ added in v0.3.0
type ToolCallRenderer struct {
// contains filtered or unexported fields
}
ToolCallRenderer renders tool call information
func NewToolCallRenderer ¶ added in v0.3.0
func NewToolCallRenderer(noColor bool) *ToolCallRenderer
NewToolCallRenderer creates a new tool call renderer
func (*ToolCallRenderer) RenderResult ¶ added in v0.3.0
func (r *ToolCallRenderer) RenderResult(display *ToolCallDisplay)
RenderResult renders the result of a tool call
func (*ToolCallRenderer) RenderStart ¶ added in v0.3.0
func (r *ToolCallRenderer) RenderStart(display *ToolCallDisplay)
RenderStart renders the start of a tool call
type ToolEmojis ¶
ToolEmojis maps tool names to emoji icons
func (ToolEmojis) GetToolEmoji ¶
func (te ToolEmojis) GetToolEmoji(toolName string) string
GetToolEmoji returns the emoji for a specific tool