refactor: consolidate agent env vars into config.AgentEnv

Create centralized AgentEnv function as single source of truth for all
agent environment variables. All agents now consistently receive:
- GT_ROLE, BD_ACTOR, GIT_AUTHOR_NAME (role identity)
- GT_ROOT, BEADS_DIR (workspace paths)
- GT_RIG, GT_POLECAT/GT_CREW (rig-specific identity)
- BEADS_AGENT_NAME, BEADS_NO_DAEMON (beads config)
- CLAUDE_CONFIG_DIR (optional account selection)

Remove RoleEnvVars in favor of AgentEnvSimple wrapper.
Remove IncludeBeadsEnv flag - beads env vars always included.
Update all manager and cmd call sites to use AgentEnv.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
julianknutsen
2026-01-09 09:20:33 -08:00
committed by Steve Yegge
parent 52b9a95f98
commit e999ceb1c1
16 changed files with 336 additions and 114 deletions

View File

@@ -101,7 +101,7 @@ func (c *EnvVarsCheck) Run(ctx *CheckContext) *CheckResult {
}
// Get expected env vars based on role
expected := config.RoleEnvVars(string(identity.Role), identity.Rig, identity.Name)
expected := config.AgentEnvSimple(string(identity.Role), identity.Rig, identity.Name)
// Get actual tmux env vars
actual, err := reader.GetAllEnvironment(sess)

View File

@@ -83,7 +83,7 @@ func TestEnvVarsCheck_NonGasTownSessions(t *testing.T) {
}
func TestEnvVarsCheck_MayorCorrect(t *testing.T) {
expected := config.RoleEnvVars("mayor", "", "")
expected := config.AgentEnvSimple("mayor", "", "")
reader := &mockEnvReader{
sessions: []string{"hq-mayor"},
sessionEnvs: map[string]map[string]string{
@@ -114,7 +114,7 @@ func TestEnvVarsCheck_MayorMissing(t *testing.T) {
}
func TestEnvVarsCheck_WitnessCorrect(t *testing.T) {
expected := config.RoleEnvVars("witness", "myrig", "")
expected := config.AgentEnvSimple("witness", "myrig", "")
reader := &mockEnvReader{
sessions: []string{"gt-myrig-witness"},
sessionEnvs: map[string]map[string]string{
@@ -148,7 +148,7 @@ func TestEnvVarsCheck_WitnessMismatch(t *testing.T) {
}
func TestEnvVarsCheck_RefineryCorrect(t *testing.T) {
expected := config.RoleEnvVars("refinery", "myrig", "")
expected := config.AgentEnvSimple("refinery", "myrig", "")
reader := &mockEnvReader{
sessions: []string{"gt-myrig-refinery"},
sessionEnvs: map[string]map[string]string{
@@ -164,7 +164,7 @@ func TestEnvVarsCheck_RefineryCorrect(t *testing.T) {
}
func TestEnvVarsCheck_PolecatCorrect(t *testing.T) {
expected := config.RoleEnvVars("polecat", "myrig", "Toast")
expected := config.AgentEnvSimple("polecat", "myrig", "Toast")
reader := &mockEnvReader{
sessions: []string{"gt-myrig-Toast"},
sessionEnvs: map[string]map[string]string{
@@ -198,7 +198,7 @@ func TestEnvVarsCheck_PolecatMissing(t *testing.T) {
}
func TestEnvVarsCheck_CrewCorrect(t *testing.T) {
expected := config.RoleEnvVars("crew", "myrig", "worker1")
expected := config.AgentEnvSimple("crew", "myrig", "worker1")
reader := &mockEnvReader{
sessions: []string{"gt-myrig-crew-worker1"},
sessionEnvs: map[string]map[string]string{
@@ -214,9 +214,9 @@ func TestEnvVarsCheck_CrewCorrect(t *testing.T) {
}
func TestEnvVarsCheck_MultipleSessions(t *testing.T) {
mayorEnv := config.RoleEnvVars("mayor", "", "")
witnessEnv := config.RoleEnvVars("witness", "rig1", "")
polecatEnv := config.RoleEnvVars("polecat", "rig1", "Toast")
mayorEnv := config.AgentEnvSimple("mayor", "", "")
witnessEnv := config.AgentEnvSimple("witness", "rig1", "")
polecatEnv := config.AgentEnvSimple("polecat", "rig1", "Toast")
reader := &mockEnvReader{
sessions: []string{"hq-mayor", "gt-rig1-witness", "gt-rig1-Toast"},
@@ -238,7 +238,7 @@ func TestEnvVarsCheck_MultipleSessions(t *testing.T) {
}
func TestEnvVarsCheck_MixedCorrectAndMismatch(t *testing.T) {
mayorEnv := config.RoleEnvVars("mayor", "", "")
mayorEnv := config.AgentEnvSimple("mayor", "", "")
reader := &mockEnvReader{
sessions: []string{"hq-mayor", "gt-rig1-witness"},
@@ -297,7 +297,7 @@ func TestEnvVarsCheck_GetEnvError(t *testing.T) {
func TestEnvVarsCheck_HyphenatedRig(t *testing.T) {
// Test rig name with hyphens: "foo-bar"
expected := config.RoleEnvVars("witness", "foo-bar", "")
expected := config.AgentEnvSimple("witness", "foo-bar", "")
reader := &mockEnvReader{
sessions: []string{"gt-foo-bar-witness"},
sessionEnvs: map[string]map[string]string{