// Package dog manages Dogs - Deacon's helper workers for infrastructure tasks. // Dogs are reusable workers with multi-rig worktrees, managed by the Deacon. // Unlike polecats (single-rig, ephemeral), dogs handle cross-rig infrastructure work. package dog import ( "time" ) // State represents a dog's operational state. type State string const ( // StateIdle means the dog is available for work. StateIdle State = "idle" // StateWorking means the dog is executing a task. StateWorking State = "working" ) // Dog represents a Deacon helper worker. type Dog struct { Name string // Dog name (e.g., "alpha") State State // Current state Path string // Path to kennel dir (~/gt/deacon/dogs/) Worktrees map[string]string // Rig name -> worktree path LastActive time.Time // Last activity timestamp Work string // Current work assignment (bead ID or molecule) CreatedAt time.Time // When dog was added to kennel } // DogState is the persistent state stored in .dog.json. type DogState struct { Name string `json:"name"` State State `json:"state"` LastActive time.Time `json:"last_active"` Work string `json:"work,omitempty"` // Current work assignment Worktrees map[string]string `json:"worktrees,omitempty"` // Rig -> path (for verification) CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` }