@bradygaster/squad-cli 0.9.3-insider.1 → 0.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/README.md +33 -0
  2. package/dist/cli/commands/cast.d.ts.map +1 -1
  3. package/dist/cli/commands/cast.js +9 -2
  4. package/dist/cli/commands/cast.js.map +1 -1
  5. package/dist/cli/commands/externalize.d.ts +27 -0
  6. package/dist/cli/commands/externalize.d.ts.map +1 -0
  7. package/dist/cli/commands/externalize.js +209 -0
  8. package/dist/cli/commands/externalize.js.map +1 -0
  9. package/dist/cli/commands/loop.d.ts +6 -1
  10. package/dist/cli/commands/loop.d.ts.map +1 -1
  11. package/dist/cli/commands/loop.js +13 -13
  12. package/dist/cli/commands/loop.js.map +1 -1
  13. package/dist/cli/commands/migrate.js +2 -2
  14. package/dist/cli/commands/migrate.js.map +1 -1
  15. package/dist/cli/commands/plugin.d.ts.map +1 -1
  16. package/dist/cli/commands/plugin.js +2 -1
  17. package/dist/cli/commands/plugin.js.map +1 -1
  18. package/dist/cli/commands/rc.js +2 -2
  19. package/dist/cli/commands/rc.js.map +1 -1
  20. package/dist/cli/commands/skill.d.ts +31 -0
  21. package/dist/cli/commands/skill.d.ts.map +1 -0
  22. package/dist/cli/commands/skill.js +497 -0
  23. package/dist/cli/commands/skill.js.map +1 -0
  24. package/dist/cli/commands/start.d.ts.map +1 -1
  25. package/dist/cli/commands/start.js +31 -5
  26. package/dist/cli/commands/start.js.map +1 -1
  27. package/dist/cli/commands/watch/agent-spawn.d.ts +62 -0
  28. package/dist/cli/commands/watch/agent-spawn.d.ts.map +1 -0
  29. package/dist/cli/commands/watch/agent-spawn.js +127 -0
  30. package/dist/cli/commands/watch/agent-spawn.js.map +1 -0
  31. package/dist/cli/commands/watch/capabilities/decision-hygiene.js +3 -3
  32. package/dist/cli/commands/watch/capabilities/decision-hygiene.js.map +1 -1
  33. package/dist/cli/commands/watch/capabilities/execute.d.ts.map +1 -1
  34. package/dist/cli/commands/watch/capabilities/execute.js +15 -5
  35. package/dist/cli/commands/watch/capabilities/execute.js.map +1 -1
  36. package/dist/cli/commands/watch/capabilities/monitor-email.js +3 -3
  37. package/dist/cli/commands/watch/capabilities/monitor-email.js.map +1 -1
  38. package/dist/cli/commands/watch/capabilities/monitor-teams.js +3 -3
  39. package/dist/cli/commands/watch/capabilities/monitor-teams.js.map +1 -1
  40. package/dist/cli/commands/watch/capabilities/retro.js +3 -3
  41. package/dist/cli/commands/watch/capabilities/retro.js.map +1 -1
  42. package/dist/cli/commands/watch/capabilities/wave-dispatch.js +3 -3
  43. package/dist/cli/commands/watch/capabilities/wave-dispatch.js.map +1 -1
  44. package/dist/cli/commands/watch/config.d.ts +10 -8
  45. package/dist/cli/commands/watch/config.d.ts.map +1 -1
  46. package/dist/cli/commands/watch/config.js +27 -5
  47. package/dist/cli/commands/watch/config.js.map +1 -1
  48. package/dist/cli/commands/watch/external-loader.d.ts +14 -0
  49. package/dist/cli/commands/watch/external-loader.d.ts.map +1 -0
  50. package/dist/cli/commands/watch/external-loader.js +85 -0
  51. package/dist/cli/commands/watch/external-loader.js.map +1 -0
  52. package/dist/cli/commands/watch/health.js +10 -9
  53. package/dist/cli/commands/watch/health.js.map +1 -1
  54. package/dist/cli/commands/watch/index.d.ts +10 -0
  55. package/dist/cli/commands/watch/index.d.ts.map +1 -1
  56. package/dist/cli/commands/watch/index.js +53 -7
  57. package/dist/cli/commands/watch/index.js.map +1 -1
  58. package/dist/cli/commands/watch/pid-tracker.d.ts +35 -0
  59. package/dist/cli/commands/watch/pid-tracker.d.ts.map +1 -0
  60. package/dist/cli/commands/watch/pid-tracker.js +127 -0
  61. package/dist/cli/commands/watch/pid-tracker.js.map +1 -0
  62. package/dist/cli/commands/watch/types.d.ts +5 -0
  63. package/dist/cli/commands/watch/types.d.ts.map +1 -1
  64. package/dist/cli/core/email-scrub.js +2 -2
  65. package/dist/cli/core/email-scrub.js.map +1 -1
  66. package/dist/cli/core/gh-cli.d.ts +2 -1
  67. package/dist/cli/core/gh-cli.d.ts.map +1 -1
  68. package/dist/cli/core/gh-cli.js +3 -2
  69. package/dist/cli/core/gh-cli.js.map +1 -1
  70. package/dist/cli/core/init.d.ts.map +1 -1
  71. package/dist/cli/core/init.js +26 -31
  72. package/dist/cli/core/init.js.map +1 -1
  73. package/dist/cli/core/migrations.js +1 -1
  74. package/dist/cli/core/migrations.js.map +1 -1
  75. package/dist/cli/core/nap.js +2 -2
  76. package/dist/cli/core/nap.js.map +1 -1
  77. package/dist/cli/core/project-type.js +1 -1
  78. package/dist/cli/core/project-type.js.map +1 -1
  79. package/dist/cli/core/templates.d.ts.map +1 -1
  80. package/dist/cli/core/templates.js +48 -0
  81. package/dist/cli/core/templates.js.map +1 -1
  82. package/dist/cli/core/upgrade.d.ts +4 -2
  83. package/dist/cli/core/upgrade.d.ts.map +1 -1
  84. package/dist/cli/core/upgrade.js +46 -21
  85. package/dist/cli/core/upgrade.js.map +1 -1
  86. package/dist/cli/shell/index.d.ts.map +1 -1
  87. package/dist/cli/shell/index.js +22 -0
  88. package/dist/cli/shell/index.js.map +1 -1
  89. package/dist/cli/shell/session-store.js +2 -2
  90. package/dist/cli/shell/session-store.js.map +1 -1
  91. package/dist/cli-entry.js +101 -83
  92. package/dist/cli-entry.js.map +1 -1
  93. package/package.json +6 -2
  94. package/templates/casting-reference.md +104 -104
  95. package/templates/ceremonies.md +28 -28
  96. package/templates/fact-checker-charter.md +83 -0
  97. package/templates/mcp-config.md +0 -2
  98. package/templates/scribe-charter.md +1 -1
  99. package/templates/skills/external-comms/SKILL.md +329 -329
  100. package/templates/skills/gh-auth-isolation/SKILL.md +183 -183
  101. package/templates/skills/humanizer/SKILL.md +105 -105
  102. package/templates/skills/pr-review-response/SKILL.md +268 -0
  103. package/templates/skills/pr-screenshots/SKILL.md +149 -149
  104. package/templates/skills/versioning-policy/SKILL.md +119 -0
  105. package/templates/squad.agent.md.template +13 -6
  106. package/dist/cli/commands/watch/capabilities/budget-check.d.ts +0 -29
  107. package/dist/cli/commands/watch/capabilities/budget-check.d.ts.map +0 -1
  108. package/dist/cli/commands/watch/capabilities/budget-check.js +0 -38
  109. package/dist/cli/commands/watch/capabilities/budget-check.js.map +0 -1
  110. package/dist/cli/commands/watch/capabilities/circuit-breaker.d.ts +0 -52
  111. package/dist/cli/commands/watch/capabilities/circuit-breaker.d.ts.map +0 -1
  112. package/dist/cli/commands/watch/capabilities/circuit-breaker.js +0 -152
  113. package/dist/cli/commands/watch/capabilities/circuit-breaker.js.map +0 -1
  114. package/dist/cli/commands/watch/capabilities/health-check.d.ts +0 -29
  115. package/dist/cli/commands/watch/capabilities/health-check.d.ts.map +0 -1
  116. package/dist/cli/commands/watch/capabilities/health-check.js +0 -139
  117. package/dist/cli/commands/watch/capabilities/health-check.js.map +0 -1
  118. package/dist/cli/commands/watch/capabilities/heartbeat.d.ts +0 -48
  119. package/dist/cli/commands/watch/capabilities/heartbeat.d.ts.map +0 -1
  120. package/dist/cli/commands/watch/capabilities/heartbeat.js +0 -115
  121. package/dist/cli/commands/watch/capabilities/heartbeat.js.map +0 -1
  122. package/dist/cli/commands/watch/capabilities/lockfile.d.ts +0 -30
  123. package/dist/cli/commands/watch/capabilities/lockfile.d.ts.map +0 -1
  124. package/dist/cli/commands/watch/capabilities/lockfile.js +0 -100
  125. package/dist/cli/commands/watch/capabilities/lockfile.js.map +0 -1
  126. package/dist/cli/commands/watch/capabilities/machine-capabilities.d.ts +0 -30
  127. package/dist/cli/commands/watch/capabilities/machine-capabilities.d.ts.map +0 -1
  128. package/dist/cli/commands/watch/capabilities/machine-capabilities.js +0 -103
  129. package/dist/cli/commands/watch/capabilities/machine-capabilities.js.map +0 -1
  130. package/dist/cli/commands/watch/capabilities/post-failure.d.ts +0 -19
  131. package/dist/cli/commands/watch/capabilities/post-failure.d.ts.map +0 -1
  132. package/dist/cli/commands/watch/capabilities/post-failure.js +0 -58
  133. package/dist/cli/commands/watch/capabilities/post-failure.js.map +0 -1
  134. package/dist/cli/commands/watch/capabilities/priority.d.ts +0 -59
  135. package/dist/cli/commands/watch/capabilities/priority.d.ts.map +0 -1
  136. package/dist/cli/commands/watch/capabilities/priority.js +0 -101
  137. package/dist/cli/commands/watch/capabilities/priority.js.map +0 -1
  138. package/dist/cli/commands/watch/capabilities/rate-pool.d.ts +0 -67
  139. package/dist/cli/commands/watch/capabilities/rate-pool.d.ts.map +0 -1
  140. package/dist/cli/commands/watch/capabilities/rate-pool.js +0 -187
  141. package/dist/cli/commands/watch/capabilities/rate-pool.js.map +0 -1
  142. package/dist/cli/commands/watch/capabilities/stale-reclaim.d.ts +0 -23
  143. package/dist/cli/commands/watch/capabilities/stale-reclaim.d.ts.map +0 -1
  144. package/dist/cli/commands/watch/capabilities/stale-reclaim.js +0 -87
  145. package/dist/cli/commands/watch/capabilities/stale-reclaim.js.map +0 -1
  146. package/dist/cli/commands/watch/capabilities/webhook-alerts.d.ts +0 -29
  147. package/dist/cli/commands/watch/capabilities/webhook-alerts.d.ts.map +0 -1
  148. package/dist/cli/commands/watch/capabilities/webhook-alerts.js +0 -114
  149. package/dist/cli/commands/watch/capabilities/webhook-alerts.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"wave-dispatch.js","sourceRoot":"","sources":["../../../../../src/cli/commands/watch/capabilities/wave-dispatch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAqB,MAAM,oBAAoB,CAAC;AAQjE,gDAAgD;AAChD,SAAS,aAAa,CAAC,IAAwB;IAC7C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAc,EAAE,CAAC;IAE5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,IAAI,WAAW,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,SAAS,GAAa,EAAE,CAAC;QAE7B,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACjE,IAAI,QAAQ,EAAE,CAAC;YACb,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvE,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5D,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc,EAAE,OAAqB;IAC9D,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnD,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC;IAC5E,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,OAAO,CAAC,YAAY;QAAE,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACjF,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,cAAc,CACrB,MAAc,EACd,OAAqB,EACrB,SAAiB;IAEjB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAiB,QAAQ,CAChC,GAAG,EAAE,IAAI,EACT,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,EAC1E,CAAC,GAAG,EAAE,EAAE;YACN,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,OAAO,GAAG,GAAmC,CAAC;gBACpD,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACrF,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,sBAAsB;IACxB,IAAI,GAAG,eAAe,CAAC;IACvB,WAAW,GAAG,qDAAqD,CAAC;IACpE,WAAW,GAAG,SAAkB,CAAC;IACjC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC;IAClB,KAAK,GAAG,cAAuB,CAAC;IAEzC,KAAK,CAAC,SAAS,CAAC,QAAsB;QACpC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAqB;QACjC,IAAI,CAAC;YACH,MAAM,aAAa,GAAI,OAAO,CAAC,MAAM,CAAC,eAAe,CAAY,IAAI,CAAC,CAAC;YACvE,MAAM,SAAS,GAAG,CAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAY,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;YAEzE,8DAA8D;YAC9D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACpG,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,MAAM,GAAG,CAAC,CAAC;YAEf,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,sEAAsE;gBACjH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAS;gBAEpC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;gBACpC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpE,IAAI,OAAO,GAAG,CAAC,CAAC;gBAEhB,OAAO,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBAC1B,OAAO,EAAE,CAAC;oBACV,MAAM,IAAI,GAA6B,EAAE,CAAC;oBAC1C,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;wBACnC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;4BAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC7E,CAAC;oBAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACtB,gDAAgD;wBAChD,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,SAAS;4BAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBAChD,MAAM;oBACR,CAAC;oBAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC;wBACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC;wBAC/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE;4BACrB,MAAM,MAAM,GAAG,wBAAwB,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;4BACtE,OAAO,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;wBACpD,CAAC,CAAC,CACH,CAAC;wBACF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;4BACxB,IAAI,CAAC,CAAC,OAAO;gCAAE,QAAQ,EAAE,CAAC;;gCACrB,MAAM,EAAE,CAAC;wBAChB,CAAC;oBACH,CAAC;oBAED,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;wBACxB,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBAClB,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,kBAAkB,QAAQ,eAAe,MAAM,SAAS;gBACjE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;aAC3B,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,wBAAyB,CAAW,CAAC,OAAO,EAAE,EAAE,CAAC;QACrF,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"wave-dispatch.js","sourceRoot":"","sources":["../../../../../src/cli/commands/watch/capabilities/wave-dispatch.ts"],"names":[],"mappings":"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"}
@@ -24,14 +24,16 @@ export interface WatchConfig {
24
24
  verbose?: boolean;
25
25
  /** Preferred auth user for platform operations (e.g. gh auth switch --user). */
26
26
  authUser?: string;
27
- /** Optional webhook URL for notifications. */
28
- webhookUrl?: string;
29
- /** Alert threshold for budget warnings. */
30
- alertThreshold?: number;
31
- /** Maximum budget cap. */
32
- maxBudget?: number;
33
- /** Machine-level capability tags. */
34
- machineCapabilities?: string[];
27
+ /** Notification level for watch events. */
28
+ notifyLevel?: 'all' | 'important' | 'none';
29
+ /** Hour to begin overnight mode (e.g. "22:00"). */
30
+ overnightStart?: string;
31
+ /** Hour to end overnight mode (e.g. "08:00"). */
32
+ overnightEnd?: string;
33
+ /** Path to a sentinel file — watch shuts down gracefully when removed. */
34
+ sentinelFile?: string;
35
+ /** State persistence backend. */
36
+ stateBackend?: 'worktree' | 'git-notes' | 'orphan' | 'external';
35
37
  }
36
38
  /**
37
39
  * Load watch config from `.squad/config.json` then merge CLI overrides.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/watch/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,6CAA6C;AAC7C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEvD,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gGAAgG;IAChG,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,kGAAkG;IAClG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChE,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAWD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,WAAW,CAwCb"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/watch/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,6CAA6C;AAC7C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEvD,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gGAAgG;IAChG,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,kGAAkG;IAClG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChE,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,MAAM,CAAC;IAC3C,mDAAmD;IACnD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,YAAY,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;CACjE;AAWD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,WAAW,CAyCb"}
@@ -52,10 +52,11 @@ export function loadWatchConfig(teamRoot, cliOverrides) {
52
52
  },
53
53
  verbose: cliOverrides.verbose ?? fileConfig.verbose ?? false,
54
54
  authUser: cliOverrides.authUser ?? fileConfig.authUser,
55
- webhookUrl: cliOverrides.webhookUrl ?? fileConfig.webhookUrl,
56
- alertThreshold: cliOverrides.alertThreshold ?? fileConfig.alertThreshold,
57
- maxBudget: cliOverrides.maxBudget ?? fileConfig.maxBudget,
58
- machineCapabilities: cliOverrides.machineCapabilities ?? fileConfig.machineCapabilities,
55
+ notifyLevel: cliOverrides.notifyLevel ?? fileConfig.notifyLevel,
56
+ overnightStart: cliOverrides.overnightStart ?? fileConfig.overnightStart,
57
+ overnightEnd: cliOverrides.overnightEnd ?? fileConfig.overnightEnd,
58
+ sentinelFile: cliOverrides.sentinelFile ?? fileConfig.sentinelFile,
59
+ stateBackend: cliOverrides.stateBackend ?? fileConfig.stateBackend,
59
60
  };
60
61
  return merged;
61
62
  }
@@ -84,9 +85,30 @@ function normalizeFileConfig(raw) {
84
85
  }
85
86
  if (typeof raw['logFile'] === 'string')
86
87
  result.logFile = raw['logFile'];
88
+ if (typeof raw['authUser'] === 'string')
89
+ result.authUser = raw['authUser'];
90
+ if (typeof raw['notifyLevel'] === 'string') {
91
+ const level = raw['notifyLevel'];
92
+ if (level === 'all' || level === 'important' || level === 'none') {
93
+ result.notifyLevel = level;
94
+ }
95
+ }
96
+ if (typeof raw['overnightStart'] === 'string')
97
+ result.overnightStart = raw['overnightStart'];
98
+ if (typeof raw['overnightEnd'] === 'string')
99
+ result.overnightEnd = raw['overnightEnd'];
100
+ if (typeof raw['sentinelFile'] === 'string')
101
+ result.sentinelFile = raw['sentinelFile'];
102
+ if (typeof raw['stateBackend'] === 'string') {
103
+ const backend = raw['stateBackend'];
104
+ const validBackends = ['worktree', 'git-notes', 'orphan', 'external'];
105
+ if (validBackends.includes(backend)) {
106
+ result.stateBackend = backend;
107
+ }
108
+ }
87
109
  // Everything else is a capability key
88
110
  const caps = {};
89
- const reserved = new Set(['interval', 'execute', 'maxConcurrent', 'timeout', 'copilotFlags', 'agentCmd', 'verbose', 'dispatchMode', 'logFile']);
111
+ const reserved = new Set(['interval', 'execute', 'maxConcurrent', 'timeout', 'copilotFlags', 'agentCmd', 'verbose', 'dispatchMode', 'logFile', 'authUser', 'notifyLevel', 'overnightStart', 'overnightEnd', 'sentinelFile', 'stateBackend']);
90
112
  for (const [key, value] of Object.entries(raw)) {
91
113
  if (reserved.has(key))
92
114
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/cli/commands/watch/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/cli/commands/watch/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * External capability loader — scans .squad/capabilities/ for user-defined
3
+ * WatchCapability modules and registers them alongside built-in capabilities.
4
+ */
5
+ import type { CapabilityRegistry } from './registry.js';
6
+ /**
7
+ * Load external WatchCapability modules from `{teamRoot}/.squad/capabilities/`.
8
+ *
9
+ * - Skips silently when the directory does not exist.
10
+ * - Logs a warning and continues when a file fails to load.
11
+ * - Returns the count of successfully loaded capabilities.
12
+ */
13
+ export declare function loadExternalCapabilities(teamRoot: string, registry: CapabilityRegistry): Promise<number>;
14
+ //# sourceMappingURL=external-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-loader.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/watch/external-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAexD;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAsFjB"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * External capability loader — scans .squad/capabilities/ for user-defined
3
+ * WatchCapability modules and registers them alongside built-in capabilities.
4
+ */
5
+ import { existsSync } from 'node:fs';
6
+ import { readdir } from 'node:fs/promises';
7
+ import { join } from 'node:path';
8
+ import { pathToFileURL } from 'node:url';
9
+ import { GREEN, YELLOW, BOLD, DIM, RESET } from '../../core/output.js';
10
+ /** Required fields on a valid WatchCapability. */
11
+ const REQUIRED_FIELDS = [
12
+ 'name',
13
+ 'description',
14
+ 'configShape',
15
+ 'requires',
16
+ 'phase',
17
+ 'preflight',
18
+ 'execute',
19
+ ];
20
+ /**
21
+ * Load external WatchCapability modules from `{teamRoot}/.squad/capabilities/`.
22
+ *
23
+ * - Skips silently when the directory does not exist.
24
+ * - Logs a warning and continues when a file fails to load.
25
+ * - Returns the count of successfully loaded capabilities.
26
+ */
27
+ export async function loadExternalCapabilities(teamRoot, registry) {
28
+ const capDir = join(teamRoot, '.squad', 'capabilities');
29
+ if (!existsSync(capDir)) {
30
+ return 0;
31
+ }
32
+ const entries = await readdir(capDir);
33
+ const jsFiles = entries.filter(f => f.endsWith('.js')).sort();
34
+ if (jsFiles.length === 0) {
35
+ return 0;
36
+ }
37
+ // Security: warn user before executing external code
38
+ console.log(`\n${YELLOW}${BOLD}⚠️ SECURITY: Loading ${jsFiles.length} external capability file(s) from .squad/capabilities/${RESET}`);
39
+ for (const f of jsFiles) {
40
+ console.log(`${DIM} • ${f}${RESET}`);
41
+ }
42
+ console.log(`${YELLOW} External capabilities execute with FULL process permissions (file system, network, credentials).${RESET}`);
43
+ console.log(`${YELLOW} Review these files if you did not author them.${RESET}\n`);
44
+ let loaded = 0;
45
+ for (const filename of jsFiles) {
46
+ const filePath = join(capDir, filename);
47
+ try {
48
+ const mod = await import(pathToFileURL(filePath).href);
49
+ let cap = mod.default ?? mod;
50
+ // Support class-based capabilities with a no-arg constructor
51
+ if (typeof cap === 'function') {
52
+ cap = new cap();
53
+ }
54
+ // Validate required fields
55
+ const missing = REQUIRED_FIELDS.filter(f => !(f in cap));
56
+ if (missing.length > 0) {
57
+ console.log(`${YELLOW}⚠️ Failed to load capability from ${filename}: missing fields: ${missing.join(', ')}${RESET}`);
58
+ continue;
59
+ }
60
+ // Validate field types
61
+ if (typeof cap.preflight !== 'function' || typeof cap.execute !== 'function') {
62
+ console.log(`${YELLOW}⚠️ Failed to load capability from ${filename}: preflight and execute must be functions${RESET}`);
63
+ continue;
64
+ }
65
+ const validPhases = ['pre-scan', 'post-triage', 'post-execute', 'housekeeping'];
66
+ if (!validPhases.includes(cap.phase)) {
67
+ console.log(`${YELLOW}⚠️ Failed to load capability from ${filename}: invalid phase '${cap.phase}' (must be one of: ${validPhases.join(', ')})${RESET}`);
68
+ continue;
69
+ }
70
+ // Security: block hijacking of built-in capabilities
71
+ if (registry.get(cap.name)) {
72
+ console.log(`${YELLOW}⚠️ External capability "${cap.name}" conflicts with built-in — skipped (potential hijack)${RESET}`);
73
+ continue;
74
+ }
75
+ registry.register(cap);
76
+ console.log(`${GREEN}✅ Loaded external capability: ${cap.name} (phase: ${cap.phase})${RESET}`);
77
+ loaded++;
78
+ }
79
+ catch (err) {
80
+ console.log(`${YELLOW}⚠️ Failed to load capability from ${filename}: ${err instanceof Error ? err.message : String(err)}${RESET}`);
81
+ }
82
+ }
83
+ return loaded;
84
+ }
85
+ //# sourceMappingURL=external-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-loader.js","sourceRoot":"","sources":["../../../../src/cli/commands/watch/external-loader.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import fs from 'node:fs';
9
9
  import path from 'node:path';
10
10
  import os from 'node:os';
11
11
  import crypto from 'node:crypto';
12
- import { execFileSync } from 'node:child_process';
12
+ import { spawnSync } from 'node:child_process';
13
13
  /**
14
14
  * Path to the PID file in the OS temp directory.
15
15
  * Uses an MD5 hash of the repo path so different clones/worktrees get
@@ -65,20 +65,21 @@ function formatUptime(ms) {
65
65
  * Duplicated from index.ts to avoid circular imports — the canonical
66
66
  * version lives in `getActiveGhUser()` in the watch index.
67
67
  */
68
- /** Probes gh auth status captures both stdout and stderr since gh may write to either. */
68
+ /** Probes current gh useruses `gh api user` which writes to stdout reliably. */
69
69
  function probeCurrentGhUser() {
70
70
  try {
71
- const result = execFileSync('gh', ['auth', 'status', '--active'], {
71
+ const result = spawnSync('gh', ['api', 'user', '-q', '.login'], {
72
72
  encoding: 'utf-8',
73
73
  stdio: ['pipe', 'pipe', 'pipe'],
74
+ timeout: 5000,
74
75
  });
75
- const match = result.match(/account\s+(\S+)/);
76
- return match?.[1];
76
+ const login = (result.stdout ?? '').trim();
77
+ if (login && result.status === 0)
78
+ return login;
79
+ return undefined;
77
80
  }
78
- catch (e) {
79
- const stderr = e.stderr ?? '';
80
- const match = stderr.match(/account\s+(\S+)/);
81
- return match?.[1];
81
+ catch {
82
+ return undefined;
82
83
  }
83
84
  }
84
85
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../../src/cli/commands/watch/health.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../../src/cli/commands/watch/health.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,8 @@ export type { WatchCapability, WatchContext, WatchPhase, PreflightResult, Capabi
13
13
  export { CapabilityRegistry } from './registry.js';
14
14
  export { createDefaultRegistry } from './capabilities/index.js';
15
15
  export { createVerboseLogger, type VerboseLogger } from './verbose.js';
16
+ export { loadExternalCapabilities } from './external-loader.js';
17
+ export { PidTracker, type TrackedProcess } from './pid-tracker.js';
16
18
  export { getWatchHealth, writePidFile, removePidFile, getPidPath, isProcessAlive, type WatchPidInfo } from './health.js';
17
19
  /** Normalized work item for watch operations. */
18
20
  export interface WatchWorkItem {
@@ -55,10 +57,18 @@ export interface BoardState {
55
57
  readyToMerge: number;
56
58
  executed: number;
57
59
  }
60
+ /** Outcome of a runCheck call — wraps BoardState with scan status. */
61
+ export type RunCheckStatus = 'ok' | 'rate-limited' | 'error';
62
+ export interface RunCheckResult {
63
+ state: BoardState;
64
+ status: RunCheckStatus;
65
+ }
58
66
  export interface ReportBoardOptions {
59
67
  notifyLevel?: 'all' | 'important' | 'none';
60
68
  machineName?: string;
61
69
  repoName?: string;
70
+ /** When set, overrides the "Board is clear" message for failed scans. */
71
+ scanStatus?: RunCheckStatus;
62
72
  }
63
73
  export declare function reportBoard(state: BoardState, round: number, options?: ReportBoardOptions): void;
64
74
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/watch/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA8BH,OAAO,KAAK,EAAE,eAAe,EAA2C,MAAM,iCAAiC,CAAC;AAEhH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQ/C,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC/G,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAIzH,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChC,SAAS,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrC;AAED,oDAAoD;AACpD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3D;AAmFD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAyBhG;AAoUD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AA2BD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAEhF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,GACpB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CASjC;AAED,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW9D;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAoB/C;AAID;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4V/F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/watch/index.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,8 @@ export { loadWatchConfig } from './config.js';
27
27
  export { CapabilityRegistry } from './registry.js';
28
28
  export { createDefaultRegistry } from './capabilities/index.js';
29
29
  export { createVerboseLogger } from './verbose.js';
30
+ export { loadExternalCapabilities } from './external-loader.js';
31
+ export { PidTracker } from './pid-tracker.js';
30
32
  export { getWatchHealth, writePidFile, removePidFile, getPidPath, isProcessAlive } from './health.js';
31
33
  // ── SDK Mapping Helpers ──────────────────────────────────────────
32
34
  function toWatchWorkItem(wi) {
@@ -103,6 +105,16 @@ async function editWorkItem(adapter, id, options) {
103
105
  export function reportBoard(state, round, options) {
104
106
  const level = options?.notifyLevel ?? 'all';
105
107
  const total = Object.values(state).reduce((a, b) => a + b, 0);
108
+ const scanStatus = options?.scanStatus ?? 'ok';
109
+ // Rate-limit / error warnings always print (bypass notifyLevel suppression)
110
+ if (total === 0 && scanStatus === 'rate-limited') {
111
+ console.log(`${YELLOW}⚠ API rate limited — skipping this round (retry in next interval)${RESET}`);
112
+ return;
113
+ }
114
+ if (total === 0 && scanStatus === 'error') {
115
+ console.log(`${YELLOW}⚠ Board scan failed — skipping this round (retry in next interval)${RESET}`);
116
+ return;
117
+ }
106
118
  if (level === 'none')
107
119
  return;
108
120
  if (level === 'important' && total === 0)
@@ -258,11 +270,18 @@ async function runCheck(rules, modules, roster, hasCopilot, autoAssign, capabili
258
270
  }
259
271
  }
260
272
  const prState = await checkPRs(roster, adapter, vlog);
261
- return { untriaged: untriaged.length, assigned: assignedIssues.length, executed: 0, ...prState };
273
+ return { state: { untriaged: untriaged.length, assigned: assignedIssues.length, executed: 0, ...prState }, status: 'ok' };
262
274
  }
263
275
  catch (e) {
264
- console.error(`${RED}✗${RESET} [${timestamp}] Check failed: ${e.message}`);
265
- return emptyBoardState();
276
+ const err = e;
277
+ const limited = isRateLimitError(err);
278
+ if (limited) {
279
+ console.log(`${YELLOW}⚠${RESET} [${timestamp}] API rate limited — board scan skipped`);
280
+ }
281
+ else {
282
+ console.error(`${RED}✗${RESET} [${timestamp}] Check failed: ${err.message}`);
283
+ }
284
+ return { state: emptyBoardState(), status: limited ? 'rate-limited' : 'error' };
266
285
  }
267
286
  }
268
287
  function discoverSubSquads(teamRoot) {
@@ -425,12 +444,12 @@ export function buildAgentCommand(issue, teamRoot, options) {
425
444
  const prompt = `Work on issue #${issue.number}: ${issue.title}. Read the issue body for full details.`;
426
445
  if (options.agentCmd) {
427
446
  const parts = options.agentCmd.trim().split(/\s+/);
428
- return { cmd: parts[0], args: [...parts.slice(1), '--message', prompt] };
447
+ return { cmd: parts[0], args: [...parts.slice(1), '-p', prompt] };
429
448
  }
430
- const args = ['copilot', '--message', prompt];
449
+ const args = ['-p', prompt];
431
450
  if (options.copilotFlags)
432
451
  args.push(...options.copilotFlags.trim().split(/\s+/));
433
- return { cmd: 'gh', args };
452
+ return { cmd: 'copilot', args };
434
453
  }
435
454
  export async function selfPull(teamRoot) {
436
455
  try {
@@ -598,6 +617,19 @@ export async function runWatch(dest, options) {
598
617
  });
599
618
  // ── Capability system setup ────────────────────────────────────
600
619
  const registry = createDefaultRegistry();
620
+ // Load external capabilities from .squad/capabilities/
621
+ const { loadExternalCapabilities } = await import('./external-loader.js');
622
+ await loadExternalCapabilities(teamRoot, registry);
623
+ // PID tracking for child process cleanup
624
+ const { PidTracker } = await import('./pid-tracker.js');
625
+ const pidTracker = new PidTracker(teamRoot);
626
+ // Clean up orphans from previous crashed run
627
+ const staleKilled = pidTracker.cleanupStale();
628
+ if (staleKilled > 0) {
629
+ console.log(`${YELLOW}⚠️ Cleaned up ${staleKilled} orphaned process(es) from previous run${RESET}`);
630
+ }
631
+ // Register exit handlers for graceful cleanup
632
+ pidTracker.registerExitHandlers();
601
633
  const baseContext = {
602
634
  teamRoot,
603
635
  adapter,
@@ -607,6 +639,7 @@ export async function runWatch(dest, options) {
607
639
  agentCmd: config.agentCmd,
608
640
  copilotFlags: config.copilotFlags,
609
641
  verbose: config.verbose,
642
+ pidTracker,
610
643
  };
611
644
  const enabledCapabilities = await preflightCapabilities(registry, config, baseContext);
612
645
  // Print startup banner
@@ -703,7 +736,20 @@ export async function runWatch(dest, options) {
703
736
  console.log(`${DIM}📂 Discovered ${subSquads.length} subsquad(s): ${subSquads.map(s => s.name).join(', ')}${RESET}`);
704
737
  }
705
738
  // Core: triage (always runs — not a capability)
706
- const roundState = await runCheck(rules, modules, roster, hasCopilot, autoAssign, capabilities, adapter, vlog);
739
+ const checkResult = await runCheck(rules, modules, roster, hasCopilot, autoAssign, capabilities, adapter, vlog);
740
+ const roundState = checkResult.state;
741
+ // Short-circuit remaining phases when the scan failed or was rate-limited
742
+ if (checkResult.status !== 'ok') {
743
+ reportBoard(roundState, round, { scanStatus: checkResult.status });
744
+ const nextPollTime = new Date(Date.now() + interval * 60 * 1000);
745
+ console.log(`${DIM}Next poll at ${nextPollTime.toLocaleTimeString()}${RESET}`);
746
+ // Do NOT count a failed scan as a circuit-breaker success
747
+ if (cbState.status === 'half-open') {
748
+ cbState.consecutiveSuccesses = 0;
749
+ }
750
+ saveCBState(squadDirInfo.path, cbState);
751
+ return;
752
+ }
707
753
  // Phase 2: post-triage (two-pass hydration)
708
754
  await runPhase('post-triage', enabledCapabilities, roundContext, config);
709
755
  // Phase 3: post-execute (execute issues, wave dispatch, board updates)