Set GIT_AUTHOR_NAME per agent session (gt-6r18e.1)
Export GIT_AUTHOR_NAME alongside BD_ACTOR in all agent session startup locations. This enables git log --author queries for agent work while keeping GIT_AUTHOR_EMAIL as the workspace owner. Files updated: - internal/session/manager.go (polecat sessions) - internal/daemon/daemon.go (deacon, witness, polecat via daemon) - internal/daemon/lifecycle.go (polecat lifecycle) - internal/cmd/*.go (crew, mayor, deacon, witness, refinery, up, handoff) - internal/session/manager_test.go (updated test expectations) - docs/federation.md (marked feature as implemented) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -264,7 +264,7 @@ func (d *Daemon) ensureDeaconRunning() {
|
||||
// Launch Claude directly (no shell respawn loop)
|
||||
// The daemon will detect if Claude exits and restart it on next heartbeat
|
||||
// Export GT_ROLE and BD_ACTOR so Claude inherits them (tmux SetEnvironment doesn't export to processes)
|
||||
if err := d.tmux.SendKeys(DeaconSessionName, "export GT_ROLE=deacon BD_ACTOR=deacon && claude --dangerously-skip-permissions"); err != nil {
|
||||
if err := d.tmux.SendKeys(DeaconSessionName, "export GT_ROLE=deacon BD_ACTOR=deacon GIT_AUTHOR_NAME=deacon && claude --dangerously-skip-permissions"); err != nil {
|
||||
d.logger.Printf("Error launching Claude in Deacon session: %v", err)
|
||||
return
|
||||
}
|
||||
@@ -312,7 +312,8 @@ func (d *Daemon) ensureWitnessRunning(rigName string) {
|
||||
_ = d.tmux.SetEnvironment(sessionName, "BD_ACTOR", rigName+"-witness")
|
||||
|
||||
// Launch Claude
|
||||
envExport := fmt.Sprintf("export GT_ROLE=witness GT_RIG=%s BD_ACTOR=%s-witness && claude --dangerously-skip-permissions", rigName, rigName)
|
||||
bdActor := fmt.Sprintf("%s/witness", rigName)
|
||||
envExport := fmt.Sprintf("export GT_ROLE=witness GT_RIG=%s BD_ACTOR=%s GIT_AUTHOR_NAME=%s && claude --dangerously-skip-permissions", rigName, bdActor, bdActor)
|
||||
if err := d.tmux.SendKeys(sessionName, envExport); err != nil {
|
||||
d.logger.Printf("Error launching Claude in witness session for %s: %v", rigName, err)
|
||||
return
|
||||
@@ -610,8 +611,8 @@ func (d *Daemon) restartPolecatSession(rigName, polecatName, sessionName string)
|
||||
_ = d.tmux.SetPaneDiedHook(sessionName, agentID)
|
||||
|
||||
// Launch Claude with environment exported inline
|
||||
startCmd := fmt.Sprintf("export GT_ROLE=polecat GT_RIG=%s GT_POLECAT=%s BD_ACTOR=%s && claude --dangerously-skip-permissions",
|
||||
rigName, polecatName, bdActor)
|
||||
startCmd := fmt.Sprintf("export GT_ROLE=polecat GT_RIG=%s GT_POLECAT=%s BD_ACTOR=%s GIT_AUTHOR_NAME=%s && claude --dangerously-skip-permissions",
|
||||
rigName, polecatName, bdActor, bdActor)
|
||||
if err := d.tmux.SendKeys(sessionName, startCmd); err != nil {
|
||||
return fmt.Errorf("sending startup command: %w", err)
|
||||
}
|
||||
|
||||
@@ -428,8 +428,8 @@ func (d *Daemon) getStartCommand(config *beads.RoleConfig, parsed *ParsedIdentit
|
||||
// Polecats need environment variables set in the command
|
||||
if parsed.RoleType == "polecat" {
|
||||
bdActor := fmt.Sprintf("%s/polecats/%s", parsed.RigName, parsed.AgentName)
|
||||
return fmt.Sprintf("export GT_ROLE=polecat GT_RIG=%s GT_POLECAT=%s BD_ACTOR=%s && %s",
|
||||
parsed.RigName, parsed.AgentName, bdActor, defaultCmd)
|
||||
return fmt.Sprintf("export GT_ROLE=polecat GT_RIG=%s GT_POLECAT=%s BD_ACTOR=%s GIT_AUTHOR_NAME=%s && %s",
|
||||
parsed.RigName, parsed.AgentName, bdActor, bdActor, defaultCmd)
|
||||
}
|
||||
|
||||
return defaultCmd
|
||||
|
||||
Reference in New Issue
Block a user