Fix gt sling/hook: use Town beads for town-level roles (gt-4ol8f)
When slinging or hooking work to mayor/deacon, the pin now lands in Town beads (~/.beads/) instead of rig beads. This ensures gt mol status finds the pinned work when run from ~/gt. The issue was that town-level roles operate from the town root, so their hooks should be discoverable from there. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/steveyegge/gastown/internal/beads"
|
||||
"github.com/steveyegge/gastown/internal/style"
|
||||
"github.com/steveyegge/gastown/internal/workspace"
|
||||
)
|
||||
|
||||
var hookCmd = &cobra.Command{
|
||||
@@ -154,8 +155,17 @@ func runHook(cmd *cobra.Command, args []string) error {
|
||||
}
|
||||
|
||||
// Pin the bead using bd update (discovery-based approach)
|
||||
// For town-level roles (mayor, deacon), run from Town root so the pin
|
||||
// lands in Town beads where these roles naturally operate.
|
||||
pinCmd := exec.Command("bd", "update", beadID, "--status=pinned", "--assignee="+agentID)
|
||||
pinCmd.Stderr = os.Stderr
|
||||
if isTownLevelRole(agentID) {
|
||||
townRoot, err := workspace.FindFromCwd()
|
||||
if err != nil {
|
||||
return fmt.Errorf("finding town root for town-level role: %w", err)
|
||||
}
|
||||
pinCmd.Dir = townRoot
|
||||
}
|
||||
if err := pinCmd.Run(); err != nil {
|
||||
return fmt.Errorf("pinning bead: %w", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user