commands.go
1 package main 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 // Commands that can be typed in the input 9 const ( 10 cmdHelp = "/help" 11 cmdClear = "/clear" 12 cmdAgent = "/agent" 13 cmdAsk = "/ask" 14 cmdProvider = "/provider" 15 cmdQuit = "/quit" 16 ) 17 18 // isCommand checks if input is a command 19 func isCommand(input string) bool { 20 return strings.HasPrefix(input, "/") 21 } 22 23 // handleCommand processes a command and returns result 24 func handleCommand(m *model, cmd string) (string, bool) { 25 parts := strings.Fields(cmd) 26 if len(parts) == 0 { 27 return "", false 28 } 29 30 command := strings.ToLower(parts[0]) 31 32 switch command { 33 case cmdHelp: 34 return helpMessage(), true 35 36 case cmdClear: 37 m.messages = []Message{} 38 return "", true 39 40 case cmdAgent: 41 m.agentMode = true 42 return "✅ Agent mode enabled (full transparency)", true 43 44 case cmdAsk: 45 m.agentMode = false 46 return "✅ Ask mode enabled (simple responses)", true 47 48 case cmdProvider: 49 if len(parts) > 1 { 50 m.provider = parts[1] 51 return fmt.Sprintf("✅ Provider set to %s", parts[1]), true 52 } 53 return fmt.Sprintf("Current provider: %s", m.provider), true 54 55 case cmdQuit: 56 return "", false // Signal quit 57 58 default: 59 return fmt.Sprintf("Unknown command: %s\nType /help for available commands", command), true 60 } 61 } 62 63 // helpMessage returns the help text 64 func helpMessage() string { 65 return ` 66 ╔══════════════════════════════════════════════════════════════╗ 67 ║ KAMAJI TUI - HELP ║ 68 ╚══════════════════════════════════════════════════════════════╝ 69 70 💬 COMMANDS: 71 /help Show this help message 72 /clear Clear conversation history 73 /agent Enable agent mode (full transparency) 74 /ask Enable ask mode (simple responses) 75 /provider [name] Show or set provider 76 /quit Quit the application 77 78 ⌨️ KEYBOARD SHORTCUTS: 79 Enter Send message 80 Ctrl+C / Esc Quit 81 PgUp / PgDn Scroll messages 82 Ctrl+L Clear screen 83 84 🔥 AGENT MODE: 85 When enabled, you'll see: 86 • 💭 Thinking panels (agent reasoning) 87 • 🔧 Tool execution (what the agent does) 88 • ⏱️ Timing (how long each step takes) 89 • 📋 Observations (tool results) 90 91 🔧 PROVIDERS: 92 • ollama - Local Ollama server 93 • amazonq - Amazon Q CLI 94 • bedrock - AWS Bedrock 95 96 💡 TIPS: 97 • Agent mode is enabled by default 98 • Use /ask for faster simple queries 99 • Use /agent for complex multi-step tasks 100 • Status bars update every 5 seconds 101 102 Type your question to begin! 103 ` 104 }