Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions internal/cmd/costs.go
Original file line number Diff line number Diff line change
Expand Up @@ -640,6 +640,11 @@ func parseSessionName(sess string) (role, rig, worker string) {
case session.RoleMayor:
return constants.RoleMayor, "", "mayor"
case session.RoleDeacon:
// Boot is modeled as a deacon dog (Role: deacon, Name: boot).
// Attribute its costs separately so token spend is visible per role.
if identity.Name == "boot" {
return constants.RoleBoot, "", "boot"
}
return constants.RoleDeacon, "", "deacon"
case session.RoleWitness:
return constants.RoleWitness, identity.Rig, ""
Expand Down
8 changes: 8 additions & 0 deletions internal/constants/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,9 @@ const (

// RoleDeacon is the deacon agent role.
RoleDeacon = "deacon"

// RoleBoot is the boot watchdog role (modeled as a deacon dog).
RoleBoot = "boot"
)

// Role emojis - centralized for easy customization.
Expand All @@ -275,6 +278,9 @@ const (

// EmojiPolecat is the polecat emoji (transient worker).
EmojiPolecat = "😺"

// EmojiBoot is the boot watchdog emoji (dog).
EmojiBoot = "🐾"
)

// Molecule formula names for patrol and dog workflows.
Expand Down Expand Up @@ -335,6 +341,8 @@ func RoleEmoji(role string) string {
return EmojiCrew
case RolePolecat:
return EmojiPolecat
case RoleBoot:
return EmojiBoot
default:
return "❓"
}
Expand Down