From 369cf82b77af2e6ea7fecc39c389c17d467ad441 Mon Sep 17 00:00:00 2001 From: joshuavial Date: Fri, 9 Jan 2026 22:24:09 +1300 Subject: [PATCH] feat: add witness start agent override --- internal/cmd/witness.go | 8 +++++--- internal/cmd/witness_test.go | 13 +++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/internal/cmd/witness.go b/internal/cmd/witness.go index 115a6ea1..04623c5c 100644 --- a/internal/cmd/witness.go +++ b/internal/cmd/witness.go @@ -15,8 +15,8 @@ import ( // Witness command flags var ( - witnessForeground bool - witnessStatusJSON bool + witnessForeground bool + witnessStatusJSON bool witnessAgentOverride string ) @@ -42,6 +42,7 @@ states and takes action to keep work flowing. Examples: gt witness start greenplace + gt witness start greenplace --agent codex gt witness start greenplace --foreground`, Args: cobra.ExactArgs(1), RunE: runWitnessStart, @@ -103,6 +104,7 @@ Examples: func init() { // Start flags witnessStartCmd.Flags().BoolVar(&witnessForeground, "foreground", false, "Run in foreground (default: background)") + witnessStartCmd.Flags().StringVar(&witnessAgentOverride, "agent", "", "Agent alias to run the Witness with (overrides town default)") // Status flags witnessStatusCmd.Flags().BoolVar(&witnessStatusJSON, "json", false, "Output as JSON") @@ -141,7 +143,7 @@ func runWitnessStart(cmd *cobra.Command, args []string) error { fmt.Printf("Starting witness for %s...\n", rigName) - if err := mgr.Start(witnessForeground, ""); err != nil { + if err := mgr.Start(witnessForeground, witnessAgentOverride); err != nil { if err == witness.ErrAlreadyRunning { fmt.Printf("%s Witness is already running\n", style.Dim.Render("⚠")) fmt.Printf(" %s\n", style.Dim.Render("Use 'gt witness attach' to connect")) diff --git a/internal/cmd/witness_test.go b/internal/cmd/witness_test.go index f34fe3f9..cb5dec1c 100644 --- a/internal/cmd/witness_test.go +++ b/internal/cmd/witness_test.go @@ -17,3 +17,16 @@ func TestWitnessRestartAgentFlag(t *testing.T) { t.Errorf("expected --agent usage to mention overrides town default, got %q", flag.Usage) } } + +func TestWitnessStartAgentFlag(t *testing.T) { + flag := witnessStartCmd.Flags().Lookup("agent") + if flag == nil { + t.Fatal("expected witness start to define --agent flag") + } + if flag.DefValue != "" { + t.Errorf("expected default agent override to be empty, got %q", flag.DefValue) + } + if !strings.Contains(flag.Usage, "overrides town default") { + t.Errorf("expected --agent usage to mention overrides town default, got %q", flag.Usage) + } +}