fix: create daemon.json on install, make templates check informational

- Add daemon.json creation to install.go (avoids patrol-hooks-wired warning)
- Change patrol-roles-have-prompts to StatusOK (templates are embedded in binary)
This commit is contained in:
Dustin Smith
2026-01-19 20:48:14 +07:00
committed by John Ogle
parent b4bd2b8aa7
commit 4cf2580980
2 changed files with 29 additions and 4 deletions

View File

@@ -228,6 +228,14 @@ func runInstall(cmd *cobra.Command, args []string) error {
fmt.Printf(" %s Could not create boot directory: %v\n", style.Dim.Render("⚠"), err)
}
// Create daemon.json patrol config.
// This avoids gt doctor warning on fresh install.
if err := config.EnsureDaemonPatrolConfig(absPath); err != nil {
fmt.Printf(" %s Could not create daemon.json: %v\n", style.Dim.Render("⚠"), err)
} else {
fmt.Printf(" ✓ Created mayor/daemon.json\n")
}
// Initialize git BEFORE beads so that bd can compute repository fingerprint.
// The fingerprint is required for the daemon to start properly.
if installGit || installGitHub != "" {

View File

@@ -458,11 +458,20 @@ func (c *PatrolRolesHavePromptsCheck) Run(ctx *CheckContext) *CheckResult {
}
var missingPrompts []string
rigsChecked := 0
for _, rigName := range rigs {
// Check in mayor's clone (canonical for the rig)
mayorRig := filepath.Join(ctx.TownRoot, rigName, "mayor", "rig")
templatesDir := filepath.Join(mayorRig, "internal", "templates", "roles")
// Skip rigs that don't have internal/templates structure.
// Most repos won't have this - templates are embedded in gastown binary.
// Only check rigs that explicitly have their own template overrides.
if _, err := os.Stat(filepath.Join(mayorRig, "internal", "templates")); os.IsNotExist(err) {
continue
}
rigsChecked++
var rigMissing []string
for _, roleFile := range requiredRolePrompts {
promptPath := filepath.Join(templatesDir, roleFile)
@@ -476,13 +485,21 @@ func (c *PatrolRolesHavePromptsCheck) Run(ctx *CheckContext) *CheckResult {
}
}
// Templates are embedded in gastown binary - missing files in rig repos is normal.
// Only report as informational, not a warning.
if rigsChecked == 0 {
return &CheckResult{
Name: c.Name(),
Status: StatusOK,
Message: "Using embedded role templates (no custom overrides)",
}
}
if len(missingPrompts) > 0 {
return &CheckResult{
Name: c.Name(),
Status: StatusWarning,
Message: fmt.Sprintf("%d role prompt template(s) missing", len(missingPrompts)),
Details: missingPrompts,
FixHint: "Run 'gt doctor --fix' to copy embedded templates to rig repos",
Status: StatusOK,
Message: fmt.Sprintf("%d rig(s) using embedded templates for some roles", len(c.missingByRig)),
}
}