fix(slot): add cross-beads prefix routing to bd slot set (bd-hmeb)

When setting a slot to a bead from a different beads database
(e.g., setting an hq-* role bead on a gt-* agent bead), the command
now uses prefix-based routing via routes.jsonl to resolve the bead
in the correct database.

Previously, bd slot set only looked in the local database, failing
to find cross-db references like hq-polecat-role from rig beads.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
garnet
2026-01-04 15:16:43 -08:00
committed by Steve Yegge
parent ede940b5d2
commit 9d69099803
3 changed files with 28 additions and 10 deletions

View File

@@ -118,9 +118,22 @@ func runSlotSet(cmd *cobra.Command, args []string) error {
}
}
// Resolve bead ID
// Resolve bead ID - use routing for cross-beads references (e.g., hq-* from rig beads)
var beadID string
if daemonClient != nil {
if needsRouting(beadArg) {
// Cross-beads reference - resolve via routing
result, err := resolveAndGetIssueWithRouting(ctx, store, beadArg)
if result != nil {
defer result.Close()
}
if err != nil {
return fmt.Errorf("failed to resolve bead %s: %w", beadArg, err)
}
if result == nil || result.Issue == nil {
return fmt.Errorf("failed to resolve bead %s: no issue found matching %q", beadArg, beadArg)
}
beadID = result.ResolvedID
} else if daemonClient != nil {
resp, err := daemonClient.ResolveID(&rpc.ResolveIDArgs{ID: beadArg})
if err != nil {
return fmt.Errorf("failed to resolve bead %s: %w", beadArg, err)