/ archive / go-tui-standalone / commands.go
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  }