refactor: use hq- prefix for role bead references
Migrate all role bead references from gt-*-role to hq-*-role using
beads.RoleBeadIDTown() function. Role beads are stored in town beads
(~/gt/.beads/) with the hq- prefix.
Changes:
- internal/cmd/prime.go: Use RoleBeadIDTown() for all roles
- internal/doctor/agent_beads_check.go: Use RoleBeadIDTown() for rig agents
- internal/polecat/manager.go: Use RoleBeadIDTown("polecat")
- internal/cmd/crew_add.go: Use RoleBeadIDTown("crew")
- internal/beads/beads.go: Update comments to document hq- convention
- Templates: Update bd show gt-deacon to bd show hq-deacon
Note: Tmux session names remain as gt-* (runtime identifiers).
Bead IDs use hq-* for town-level agents (persistent storage).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -35,7 +35,7 @@ gt peek deacon --lines 20
|
||||
|
||||
**Step 2: Check agent bead state**
|
||||
```bash
|
||||
bd show gt-deacon 2>/dev/null
|
||||
bd show hq-deacon 2>/dev/null
|
||||
# Look for:
|
||||
# - state: running/working/idle
|
||||
# - last_activity: when was last update?
|
||||
|
||||
@@ -1388,15 +1388,20 @@ func IsAgentSessionBead(beadID string) bool {
|
||||
}
|
||||
|
||||
// Role bead ID naming convention:
|
||||
// gt-<role>-role
|
||||
// Role beads are stored in town beads (~/.beads/) with hq- prefix.
|
||||
//
|
||||
// Canonical format: hq-<role>-role
|
||||
//
|
||||
// Examples:
|
||||
// - gt-mayor-role
|
||||
// - gt-deacon-role
|
||||
// - gt-witness-role
|
||||
// - gt-refinery-role
|
||||
// - gt-crew-role
|
||||
// - gt-polecat-role
|
||||
// - hq-mayor-role
|
||||
// - hq-deacon-role
|
||||
// - hq-witness-role
|
||||
// - hq-refinery-role
|
||||
// - hq-crew-role
|
||||
// - hq-polecat-role
|
||||
//
|
||||
// Use RoleBeadIDTown() to get canonical role bead IDs.
|
||||
// The legacy RoleBeadID() function returns gt-<role>-role for backward compatibility.
|
||||
|
||||
// RoleBeadID returns the role bead ID for a given role type.
|
||||
// Role beads define lifecycle configuration for each agent type.
|
||||
|
||||
@@ -108,7 +108,7 @@ func runCrewAdd(cmd *cobra.Command, args []string) error {
|
||||
RoleType: "crew",
|
||||
Rig: rigName,
|
||||
AgentState: "idle",
|
||||
RoleBead: "gt-crew-role",
|
||||
RoleBead: beads.RoleBeadIDTown("crew"),
|
||||
}
|
||||
desc := fmt.Sprintf("Crew worker %s in %s - human-managed persistent workspace.", name, rigName)
|
||||
if _, err := bd.CreateAgentBead(crewID, desc, fields); err != nil {
|
||||
|
||||
@@ -1204,40 +1204,40 @@ func getAgentFields(ctx RoleContext, state string) *beads.AgentFields {
|
||||
RoleType: "crew",
|
||||
Rig: ctx.Rig,
|
||||
AgentState: state,
|
||||
RoleBead: "gt-crew-role",
|
||||
RoleBead: beads.RoleBeadIDTown("crew"),
|
||||
}
|
||||
case RolePolecat:
|
||||
return &beads.AgentFields{
|
||||
RoleType: "polecat",
|
||||
Rig: ctx.Rig,
|
||||
AgentState: state,
|
||||
RoleBead: "gt-polecat-role",
|
||||
RoleBead: beads.RoleBeadIDTown("polecat"),
|
||||
}
|
||||
case RoleMayor:
|
||||
return &beads.AgentFields{
|
||||
RoleType: "mayor",
|
||||
AgentState: state,
|
||||
RoleBead: "gt-mayor-role",
|
||||
RoleBead: beads.RoleBeadIDTown("mayor"),
|
||||
}
|
||||
case RoleDeacon:
|
||||
return &beads.AgentFields{
|
||||
RoleType: "deacon",
|
||||
AgentState: state,
|
||||
RoleBead: "gt-deacon-role",
|
||||
RoleBead: beads.RoleBeadIDTown("deacon"),
|
||||
}
|
||||
case RoleWitness:
|
||||
return &beads.AgentFields{
|
||||
RoleType: "witness",
|
||||
Rig: ctx.Rig,
|
||||
AgentState: state,
|
||||
RoleBead: "gt-witness-role",
|
||||
RoleBead: beads.RoleBeadIDTown("witness"),
|
||||
}
|
||||
case RoleRefinery:
|
||||
return &beads.AgentFields{
|
||||
RoleType: "refinery",
|
||||
Rig: ctx.Rig,
|
||||
AgentState: state,
|
||||
RoleBead: "gt-refinery-role",
|
||||
RoleBead: beads.RoleBeadIDTown("refinery"),
|
||||
}
|
||||
default:
|
||||
return nil
|
||||
|
||||
@@ -230,7 +230,7 @@ func (c *AgentBeadsCheck) Fix(ctx *CheckContext) error {
|
||||
RoleType: "witness",
|
||||
Rig: rigName,
|
||||
AgentState: "idle",
|
||||
RoleBead: "gt-witness-role",
|
||||
RoleBead: beads.RoleBeadIDTown("witness"),
|
||||
}
|
||||
desc := fmt.Sprintf("Witness for %s - monitors polecat health and progress.", rigName)
|
||||
if _, err := bd.CreateAgentBead(witnessID, desc, fields); err != nil {
|
||||
@@ -244,7 +244,7 @@ func (c *AgentBeadsCheck) Fix(ctx *CheckContext) error {
|
||||
RoleType: "refinery",
|
||||
Rig: rigName,
|
||||
AgentState: "idle",
|
||||
RoleBead: "gt-refinery-role",
|
||||
RoleBead: beads.RoleBeadIDTown("refinery"),
|
||||
}
|
||||
desc := fmt.Sprintf("Refinery for %s - processes merge queue.", rigName)
|
||||
if _, err := bd.CreateAgentBead(refineryID, desc, fields); err != nil {
|
||||
@@ -261,7 +261,7 @@ func (c *AgentBeadsCheck) Fix(ctx *CheckContext) error {
|
||||
RoleType: "crew",
|
||||
Rig: rigName,
|
||||
AgentState: "idle",
|
||||
RoleBead: "gt-crew-role",
|
||||
RoleBead: beads.RoleBeadIDTown("crew"),
|
||||
}
|
||||
desc := fmt.Sprintf("Crew worker %s in %s - human-managed persistent workspace.", workerName, rigName)
|
||||
if _, err := bd.CreateAgentBead(crewID, desc, fields); err != nil {
|
||||
|
||||
@@ -251,7 +251,7 @@ func (m *Manager) AddWithOptions(name string, opts AddOptions) (*Polecat, error)
|
||||
RoleType: "polecat",
|
||||
Rig: m.rig.Name,
|
||||
AgentState: "spawning",
|
||||
RoleBead: "gt-polecat-role",
|
||||
RoleBead: beads.RoleBeadIDTown("polecat"),
|
||||
HookBead: opts.HookBead, // Set atomically at spawn time
|
||||
})
|
||||
if err != nil {
|
||||
@@ -467,7 +467,7 @@ func (m *Manager) RecreateWithOptions(name string, force bool, opts AddOptions)
|
||||
RoleType: "polecat",
|
||||
Rig: m.rig.Name,
|
||||
AgentState: "spawning",
|
||||
RoleBead: "gt-polecat-role",
|
||||
RoleBead: beads.RoleBeadIDTown("polecat"),
|
||||
HookBead: opts.HookBead, // Set atomically at spawn time
|
||||
})
|
||||
if err != nil {
|
||||
|
||||
@@ -63,7 +63,7 @@ tmux has-session -t {{ .DeaconSession }} 2>/dev/null && echo "alive" || echo "de
|
||||
gt peek deacon --lines 20
|
||||
|
||||
# Agent bead state
|
||||
bd show gt-deacon 2>/dev/null
|
||||
bd show hq-deacon 2>/dev/null
|
||||
|
||||
# Recent activity
|
||||
gt feed --since 10m --plain | head -20
|
||||
|
||||
Reference in New Issue
Block a user