Fix go-19z: updateAgentHookBead uses wrong directory for rig-level beads (#733)

When slinging work to an agent, updateAgentHookBead() was running
bd slot set from townRoot. But agent beads with rig-level prefixes
(e.g., go-) live in rig databases, not the town database. This caused
"issue not found" errors when trying to update the hook_bead slot.

Fix: Use beads.ResolveHookDir() to resolve the correct working directory
based on the agent bead's prefix before calling SetHookBead().

Co-authored-by: furiosa <spencer@atmosphere-aviation.com>
This commit is contained in:
Julian Knutsen
2026-01-21 17:32:13 -10:00
committed by GitHub
parent 7e5c3dd695
commit 1e97d1e637

View File

@@ -414,11 +414,17 @@ func updateAgentHookBead(agentID, beadID, workDir, townBeadsDir string) {
return
}
// Run from workDir WITHOUT BEADS_DIR to enable redirect-based routing.
// Resolve the correct working directory for the agent bead.
// Agent beads with rig-level prefixes (e.g., go-) live in rig databases,
// not the town database. Use prefix-based resolution to find the correct path.
// This fixes go-19z: bd slot commands failing for go-* prefixed beads.
agentWorkDir := beads.ResolveHookDir(townRoot, agentBeadID, bdWorkDir)
// Run from agentWorkDir WITHOUT BEADS_DIR to enable redirect-based routing.
// Set hook_bead to the slung work (gt-zecmc: removed agent_state update).
// Agent liveness is observable from tmux - no need to record it in bead.
// For cross-database scenarios, slot set may fail gracefully (warning only).
bd := beads.New(bdWorkDir)
bd := beads.New(agentWorkDir)
if err := bd.SetHookBead(agentBeadID, beadID); err != nil {
// Log warning instead of silent ignore - helps debug cross-beads issues
fmt.Fprintf(os.Stderr, "Warning: couldn't set agent %s hook: %v\n", agentBeadID, err)