package cmd import ( "bufio" "fmt" "os" "strings" "github.com/fatih/color" "github.com/spf13/cobra" "gmgauthier.com/grokkit/config" "gmgauthier.com/grokkit/internal/grok" ) var chatCmd = &cobra.Command{ Use: "chat", Short: "Simple interactive CLI chat with Grok (full history + streaming)", Run: func(cmd *cobra.Command, args []string) { modelFlag, _ := cmd.Flags().GetString("model") model := config.GetModel(modelFlag) client := grok.NewClient() // Strong system prompt to lock in correct model identity systemPrompt := map[string]string{ "role": "system", "content": fmt.Sprintf("You are Grok 4, the latest and most powerful model from xAI (2026). You are currently running as `%s`. Be helpful, truthful, and a little irreverent. Never claim to be an older model.", model), } history := []map[string]string{systemPrompt} color.Cyan("┌──────────────────────────────────────────────────────────────┐") color.Cyan("│ Grokkit Chat — Model: %s │", model) color.Cyan("│ Type /quit or Ctrl+C to exit │") color.Cyan("└──────────────────────────────────────────────────────────────┘\n") scanner := bufio.NewScanner(os.Stdin) for { color.Yellow("You > ") if !scanner.Scan() { break } input := strings.TrimSpace(scanner.Text()) if input == "" { continue } if input == "/quit" || input == "/q" || input == "exit" { color.Cyan("\nGoodbye 👋\n") break } history = append(history, map[string]string{"role": "user", "content": input}) color.Green("Grok > ") reply := client.Stream(history, model) history = append(history, map[string]string{"role": "assistant", "content": reply}) fmt.Println() } }, }