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:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user