fix(handoff): preserve GT_AGENT across session restarts (#788)

Adds GT_AGENT env var to track agent override when using --agent flag.
Handoff reads and preserves GT_AGENT so non-default agents persist across restarts.

Co-authored-by: joshuavial <git@codewithjv.com>
This commit is contained in:
joshuavial
2026-01-20 01:33:19 +13:00
committed by Steve Yegge
parent 3d5a66f850
commit 48ace2cbf3
3 changed files with 83 additions and 1 deletions

View File

@@ -2670,3 +2670,63 @@ func TestQuoteForShell(t *testing.T) {
})
}
}
func TestBuildStartupCommandWithAgentOverride_SetsGTAgent(t *testing.T) {
t.Parallel()
townRoot := t.TempDir()
rigPath := filepath.Join(townRoot, "testrig")
// Create necessary config files
townSettings := NewTownSettings()
if err := SaveTownSettings(TownSettingsPath(townRoot), townSettings); err != nil {
t.Fatalf("SaveTownSettings: %v", err)
}
if err := SaveRigSettings(RigSettingsPath(rigPath), NewRigSettings()); err != nil {
t.Fatalf("SaveRigSettings: %v", err)
}
cmd, err := BuildStartupCommandWithAgentOverride(
map[string]string{"GT_ROLE": constants.RoleWitness},
rigPath,
"",
"gemini",
)
if err != nil {
t.Fatalf("BuildStartupCommandWithAgentOverride: %v", err)
}
// Should include GT_AGENT=gemini in export so handoff can preserve it
if !strings.Contains(cmd, "GT_AGENT=gemini") {
t.Errorf("expected GT_AGENT=gemini in command, got: %q", cmd)
}
}
func TestBuildStartupCommandWithAgentOverride_NoGTAgentWhenNoOverride(t *testing.T) {
t.Parallel()
townRoot := t.TempDir()
rigPath := filepath.Join(townRoot, "testrig")
// Create necessary config files
townSettings := NewTownSettings()
if err := SaveTownSettings(TownSettingsPath(townRoot), townSettings); err != nil {
t.Fatalf("SaveTownSettings: %v", err)
}
if err := SaveRigSettings(RigSettingsPath(rigPath), NewRigSettings()); err != nil {
t.Fatalf("SaveRigSettings: %v", err)
}
cmd, err := BuildStartupCommandWithAgentOverride(
map[string]string{"GT_ROLE": constants.RoleWitness},
rigPath,
"",
"", // No override
)
if err != nil {
t.Fatalf("BuildStartupCommandWithAgentOverride: %v", err)
}
// Should NOT include GT_AGENT when no override is used
if strings.Contains(cmd, "GT_AGENT=") {
t.Errorf("expected no GT_AGENT in command when no override, got: %q", cmd)
}
}