peaks-loop 4.0.54 → 4.1.1

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 (1068) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README-en.md +16 -1
  3. package/README.md +15 -1
  4. package/config/eslint/.peaks-rules.cjs +158 -13
  5. package/config/eslint/tsconfig.lint.json +47 -0
  6. package/dist/cli/cli-envelope.d.ts +114 -0
  7. package/dist/cli/cli-envelope.js +85 -0
  8. package/dist/cli/cli-helpers.d.ts +1 -1
  9. package/dist/cli/cli-helpers.js +8 -4
  10. package/dist/cli/commands/_cli-error-envelope.js +1 -1
  11. package/dist/cli/commands/_register.js +86 -39
  12. package/dist/cli/commands/_super.js +40 -7
  13. package/dist/cli/commands/adapter-commands-s2a.js +8 -7
  14. package/dist/cli/commands/adapter-commands.d.ts +2 -2
  15. package/dist/cli/commands/adapter-commands.js +7 -8
  16. package/dist/cli/commands/api-diff-commands.js +5 -4
  17. package/dist/cli/commands/asset-commands.d.ts +2 -2
  18. package/dist/cli/commands/asset-commands.js +135 -132
  19. package/dist/cli/commands/audit-commands.d.ts +1 -1
  20. package/dist/cli/commands/audit-commands.js +75 -32
  21. package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
  22. package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
  23. package/dist/cli/commands/baseline-commands.js +34 -9
  24. package/dist/cli/commands/bee-commands.d.ts +1 -1
  25. package/dist/cli/commands/bee-commands.js +18 -21
  26. package/dist/cli/commands/best-practice-scan-command.js +6 -34
  27. package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
  28. package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
  29. package/dist/cli/commands/capability-commands.d.ts +1 -1
  30. package/dist/cli/commands/capability-commands.js +14 -4
  31. package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
  32. package/dist/cli/commands/changeset-commands.js +21 -18
  33. package/dist/cli/commands/code-gate-command.js +9 -2
  34. package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
  35. package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
  36. package/dist/cli/commands/code-job-shape-commands.js +21 -45
  37. package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
  38. package/dist/cli/commands/code-mode-gate-commands.js +19 -199
  39. package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
  40. package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
  41. package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
  42. package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
  43. package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
  44. package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
  45. package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
  46. package/dist/cli/commands/code-review-commands.js +18 -3
  47. package/dist/cli/commands/code-run-command.js +44 -7
  48. package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
  49. package/dist/cli/commands/code-runtime-commands.js +105 -73
  50. package/dist/cli/commands/codegraph-commands.js +11 -6
  51. package/dist/cli/commands/codegraph-status-command.js +6 -2
  52. package/dist/cli/commands/comments-commands.d.ts +14 -0
  53. package/dist/cli/commands/comments-commands.js +96 -0
  54. package/dist/cli/commands/compact-command.js +52 -26
  55. package/dist/cli/commands/complexity-commands.js +6 -7
  56. package/dist/cli/commands/config-commands.d.ts +1 -1
  57. package/dist/cli/commands/config-commands.js +33 -9
  58. package/dist/cli/commands/container-commands.js +39 -15
  59. package/dist/cli/commands/context-commands.d.ts +1 -1
  60. package/dist/cli/commands/context-commands.js +40 -13
  61. package/dist/cli/commands/core/artifacts-command.js +11 -3
  62. package/dist/cli/commands/core/binding-commands.js +9 -6
  63. package/dist/cli/commands/core/doctor-command.js +7 -4
  64. package/dist/cli/commands/core/memory-command.js +57 -21
  65. package/dist/cli/commands/core/proxy-command.js +3 -1
  66. package/dist/cli/commands/core/session-command.js +16 -8
  67. package/dist/cli/commands/core/skill-command.js +32 -17
  68. package/dist/cli/commands/core/standards-command.js +56 -14
  69. package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
  70. package/dist/cli/commands/cron-commands-actions.js +128 -0
  71. package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
  72. package/dist/cli/commands/cron-commands-schedule.js +151 -0
  73. package/dist/cli/commands/cron-commands.d.ts +35 -32
  74. package/dist/cli/commands/cron-commands.js +167 -211
  75. package/dist/cli/commands/cron-scheduler-commands.js +40 -20
  76. package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
  77. package/dist/cli/commands/cron-scheduler-persist.js +171 -0
  78. package/dist/cli/commands/dashboard-long-run.js +45 -14
  79. package/dist/cli/commands/dashboard-summary.js +15 -5
  80. package/dist/cli/commands/dispatch-commands.js +65 -32
  81. package/dist/cli/commands/dispatch-from-dag.js +9 -10
  82. package/dist/cli/commands/doc-commands.js +8 -9
  83. package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
  84. package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
  85. package/dist/cli/commands/e2e-verify-env.js +19 -0
  86. package/dist/cli/commands/e2e-verify.d.ts +3 -14
  87. package/dist/cli/commands/e2e-verify.js +49 -29
  88. package/dist/cli/commands/ecc-commands.d.ts +18 -23
  89. package/dist/cli/commands/ecc-commands.js +39 -36
  90. package/dist/cli/commands/evidence-commands.js +10 -6
  91. package/dist/cli/commands/evolution-commands.d.ts +2 -2
  92. package/dist/cli/commands/evolution-commands.js +109 -115
  93. package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
  94. package/dist/cli/commands/feedback-commands-helpers.js +33 -0
  95. package/dist/cli/commands/feedback-commands.js +15 -38
  96. package/dist/cli/commands/final-review-commands.d.ts +1 -1
  97. package/dist/cli/commands/final-review-commands.js +24 -22
  98. package/dist/cli/commands/fixture-commands.d.ts +1 -1
  99. package/dist/cli/commands/fixture-commands.js +17 -6
  100. package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
  101. package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
  102. package/dist/cli/commands/fork-commands.js +19 -51
  103. package/dist/cli/commands/fresh-context-commands.js +3 -1
  104. package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
  105. package/dist/cli/commands/gate-commands-enforce.js +210 -0
  106. package/dist/cli/commands/gate-commands.d.ts +1 -1
  107. package/dist/cli/commands/gate-commands.js +85 -205
  108. package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
  109. package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
  110. package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
  111. package/dist/cli/commands/heartbeat-commands-action.js +192 -0
  112. package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
  113. package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
  114. package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
  115. package/dist/cli/commands/heartbeat-commands.js +19 -198
  116. package/dist/cli/commands/hook-handle.d.ts +1 -1
  117. package/dist/cli/commands/hook-handle.js +46 -13
  118. package/dist/cli/commands/hooks-commands.d.ts +1 -1
  119. package/dist/cli/commands/hooks-commands.js +18 -6
  120. package/dist/cli/commands/ide-commands.d.ts +1 -1
  121. package/dist/cli/commands/ide-commands.js +5 -3
  122. package/dist/cli/commands/impact-commands.js +8 -2
  123. package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
  124. package/dist/cli/commands/job-add-slice-command.js +151 -0
  125. package/dist/cli/commands/job-commands.d.ts +64 -0
  126. package/dist/cli/commands/job-commands.js +134 -63
  127. package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
  128. package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
  129. package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
  130. package/dist/cli/commands/lease-metrics-commands.js +21 -61
  131. package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
  132. package/dist/cli/commands/lease-stats-commands.js +9 -6
  133. package/dist/cli/commands/lint-commands.d.ts +9 -3
  134. package/dist/cli/commands/lint-commands.js +15 -8
  135. package/dist/cli/commands/log-commands.d.ts +1 -1
  136. package/dist/cli/commands/log-commands.js +8 -6
  137. package/dist/cli/commands/loop-commands.d.ts +1 -1
  138. package/dist/cli/commands/loop-commands.js +50 -50
  139. package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
  140. package/dist/cli/commands/loop-eval-commands.js +101 -30
  141. package/dist/cli/commands/memory-commands.js +21 -13
  142. package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
  143. package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
  144. package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
  145. package/dist/cli/commands/mut-commands-helpers.js +43 -0
  146. package/dist/cli/commands/mut-commands.js +16 -58
  147. package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
  148. package/dist/cli/commands/observability-commands-queries.js +113 -0
  149. package/dist/cli/commands/observability-commands.d.ts +1 -1
  150. package/dist/cli/commands/observability-commands.js +7 -92
  151. package/dist/cli/commands/openspec-commands.d.ts +1 -1
  152. package/dist/cli/commands/openspec-commands.js +20 -8
  153. package/dist/cli/commands/outer-cache-commands.js +18 -7
  154. package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
  155. package/dist/cli/commands/perf-audit-commands.js +12 -7
  156. package/dist/cli/commands/perf-commands.d.ts +1 -1
  157. package/dist/cli/commands/perf-commands.js +5 -5
  158. package/dist/cli/commands/playwright-commands.d.ts +1 -1
  159. package/dist/cli/commands/playwright-commands.js +20 -8
  160. package/dist/cli/commands/polyrepo-commands.js +21 -19
  161. package/dist/cli/commands/prd-blocks-commands.js +1 -3
  162. package/dist/cli/commands/prd-commands.d.ts +1 -1
  163. package/dist/cli/commands/prd-commands.js +16 -6
  164. package/dist/cli/commands/preferences-commands.js +13 -12
  165. package/dist/cli/commands/primer-command.js +5 -5
  166. package/dist/cli/commands/project-commands.d.ts +1 -1
  167. package/dist/cli/commands/project-commands.js +33 -9
  168. package/dist/cli/commands/qa-business-review-commands.js +16 -12
  169. package/dist/cli/commands/qa-commands.d.ts +1 -1
  170. package/dist/cli/commands/qa-commands.js +3 -5
  171. package/dist/cli/commands/release-commands.d.ts +3 -1
  172. package/dist/cli/commands/release-commands.js +33 -22
  173. package/dist/cli/commands/request-commands.js +47 -30
  174. package/dist/cli/commands/request-format-helpers.js +1 -1
  175. package/dist/cli/commands/retrospective-commands.d.ts +18 -11
  176. package/dist/cli/commands/retrospective-commands.js +24 -173
  177. package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
  178. package/dist/cli/commands/retrospective-index-command.js +99 -0
  179. package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
  180. package/dist/cli/commands/retrospective-project-root.js +15 -0
  181. package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
  182. package/dist/cli/commands/retrospective-search-command.js +97 -0
  183. package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
  184. package/dist/cli/commands/retrospective-show-command.js +80 -0
  185. package/dist/cli/commands/reviewer-commands.d.ts +1 -1
  186. package/dist/cli/commands/role-commands.js +14 -9
  187. package/dist/cli/commands/runtime-commands.js +14 -7
  188. package/dist/cli/commands/sc-commands.d.ts +1 -1
  189. package/dist/cli/commands/sc-commands.js +39 -6
  190. package/dist/cli/commands/scan-commands.js +36 -13
  191. package/dist/cli/commands/security-audit-commands.d.ts +1 -1
  192. package/dist/cli/commands/security-audit-commands.js +12 -7
  193. package/dist/cli/commands/sediment-commands.d.ts +2 -2
  194. package/dist/cli/commands/sediment-commands.js +146 -139
  195. package/dist/cli/commands/session-24h-mode.js +15 -2
  196. package/dist/cli/commands/session-checkpoint-command.js +1 -1
  197. package/dist/cli/commands/session-migrate-skill-name.js +1 -1
  198. package/dist/cli/commands/shadcn-commands.d.ts +1 -1
  199. package/dist/cli/commands/shadcn-commands.js +3 -1
  200. package/dist/cli/commands/share-commands.js +38 -39
  201. package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
  202. package/dist/cli/commands/skill-conformance-commands.js +1 -1
  203. package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
  204. package/dist/cli/commands/skill-visibility.js +2 -2
  205. package/dist/cli/commands/slice-commands.d.ts +1 -1
  206. package/dist/cli/commands/slice-commands.js +36 -12
  207. package/dist/cli/commands/slice-integrate-commands.js +6 -7
  208. package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
  209. package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
  210. package/dist/cli/commands/slice-review-commands.js +16 -24
  211. package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
  212. package/dist/cli/commands/smoke-commands-add-path.js +39 -0
  213. package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
  214. package/dist/cli/commands/smoke-commands-define.js +97 -0
  215. package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
  216. package/dist/cli/commands/smoke-commands-run.js +119 -0
  217. package/dist/cli/commands/smoke-commands.d.ts +10 -1
  218. package/dist/cli/commands/smoke-commands.js +17 -179
  219. package/dist/cli/commands/sop-commands.d.ts +1 -1
  220. package/dist/cli/commands/sop-commands.js +38 -10
  221. package/dist/cli/commands/statusline-commands.d.ts +1 -1
  222. package/dist/cli/commands/statusline-commands.js +21 -10
  223. package/dist/cli/commands/sub-agent/detached.js +3 -3
  224. package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
  225. package/dist/cli/commands/sub-agent-shared.js +1 -1
  226. package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
  227. package/dist/cli/commands/swarm-commands.d.ts +1 -1
  228. package/dist/cli/commands/swarm-commands.js +13 -6
  229. package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
  230. package/dist/cli/commands/tech-commands-helpers.js +24 -0
  231. package/dist/cli/commands/tech-commands.d.ts +2 -29
  232. package/dist/cli/commands/tech-commands.js +15 -28
  233. package/dist/cli/commands/test-commands.js +27 -7
  234. package/dist/cli/commands/user-touchpoint-commands.js +1 -3
  235. package/dist/cli/commands/verdict-aggregate-command.d.ts +1 -1
  236. package/dist/cli/commands/verdict-aggregate-command.js +20 -7
  237. package/dist/cli/commands/vm-commands.js +48 -19
  238. package/dist/cli/commands/wave-plan-commands.js +5 -2
  239. package/dist/cli/commands/web-commands.js +14 -4
  240. package/dist/cli/commands/web-lifecycle-commands.js +5 -3
  241. package/dist/cli/commands/workflow-commands.d.ts +1 -1
  242. package/dist/cli/commands/workflow-commands.js +64 -29
  243. package/dist/cli/commands/workflow-lifecycle-commands.js +19 -17
  244. package/dist/cli/commands/workflow-plan-commands-actions.d.ts +20 -0
  245. package/dist/cli/commands/workflow-plan-commands-actions.js +115 -0
  246. package/dist/cli/commands/workflow-plan-commands-session.d.ts +17 -0
  247. package/dist/cli/commands/workflow-plan-commands-session.js +59 -0
  248. package/dist/cli/commands/workflow-plan-commands.d.ts +10 -21
  249. package/dist/cli/commands/workflow-plan-commands.js +15 -141
  250. package/dist/cli/commands/workspace/clean-command.js +4 -1
  251. package/dist/cli/commands/workspace/helpers.js +2 -1
  252. package/dist/cli/commands/workspace/init-command.js +80 -20
  253. package/dist/cli/commands/workspace/reconcile-command.js +3 -1
  254. package/dist/cli/commands/workspace-commands.d.ts +1 -1
  255. package/dist/cli/commands/workspace-commands.js +1 -1
  256. package/dist/cli/commands/worktree-auth-commands.d.ts +1 -1
  257. package/dist/cli/commands/worktree-auth-commands.js +16 -169
  258. package/dist/cli/commands/worktree-auth-grant-command.d.ts +14 -0
  259. package/dist/cli/commands/worktree-auth-grant-command.js +118 -0
  260. package/dist/cli/commands/worktree-auth-manage-commands.d.ts +17 -0
  261. package/dist/cli/commands/worktree-auth-manage-commands.js +128 -0
  262. package/dist/cli/commands/worktree-lease-commands.d.ts +1 -1
  263. package/dist/cli/commands/worktree-lease-commands.js +65 -37
  264. package/dist/cli/index.js +6 -2
  265. package/dist/cli/program.js +8 -10
  266. package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
  267. package/dist/reporters/bdd-reporter.js +9 -3
  268. package/dist/services/24h-mode/auto-engage.d.ts +19 -0
  269. package/dist/services/24h-mode/auto-engage.js +35 -0
  270. package/dist/services/24h-mode/decider.js +5 -1
  271. package/dist/services/24h-mode/store.js +4 -2
  272. package/dist/services/adapter/adapter-registry.js +20 -8
  273. package/dist/services/adapter/adapter.d.ts +2 -2
  274. package/dist/services/adapter/auto-adapter.d.ts +2 -2
  275. package/dist/services/adapter/auto-adapter.js +1 -1
  276. package/dist/services/adapter/claude-adapter.d.ts +1 -1
  277. package/dist/services/adapter/claude-adapter.js +8 -8
  278. package/dist/services/adapter/codex-adapter.d.ts +2 -2
  279. package/dist/services/adapter/codex-adapter.js +20 -8
  280. package/dist/services/adapter/copilot-adapter.d.ts +2 -2
  281. package/dist/services/adapter/copilot-adapter.js +20 -8
  282. package/dist/services/artifacts/artifact-prerequisites.js +10 -8
  283. package/dist/services/artifacts/artifact-service.js +3 -1
  284. package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
  285. package/dist/services/artifacts/artifact-template-bodies.js +165 -0
  286. package/dist/services/artifacts/artifact-templates.js +26 -168
  287. package/dist/services/artifacts/request-artifact-service.js +14 -7
  288. package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
  289. package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
  290. package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
  291. package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
  292. package/dist/services/artifacts/workspace-service.d.ts +3 -22
  293. package/dist/services/artifacts/workspace-service.js +10 -60
  294. package/dist/services/audit/artifact-writer.js +21 -21
  295. package/dist/services/audit/audit-goal-service.js +2 -2
  296. package/dist/services/audit/backing-detector.js +7 -4
  297. package/dist/services/audit/classifier.js +3 -3
  298. package/dist/services/audit/decision-writer.js +13 -9
  299. package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
  300. package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
  301. package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
  302. package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
  303. package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
  304. package/dist/services/audit/enforcers/lint-output-style.js +4 -2
  305. package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
  306. package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
  307. package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
  308. package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
  309. package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
  310. package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
  311. package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
  312. package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
  313. package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
  314. package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
  315. package/dist/services/audit/enforcers/lint-style.js +44 -11
  316. package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
  317. package/dist/services/audit/enforcers/login-gate.js +2 -6
  318. package/dist/services/audit/enforcers/mock-placement.js +2 -2
  319. package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
  320. package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
  321. package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
  322. package/dist/services/audit/enforcers/resume-detection.js +5 -4
  323. package/dist/services/audit/prose-ratio-calculator.js +1 -1
  324. package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
  325. package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
  326. package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
  327. package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
  328. package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
  329. package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
  330. package/dist/services/audit/red-line-catalog.js +26 -38
  331. package/dist/services/audit/red-lines-service.js +64 -49
  332. package/dist/services/audit/scanners/openspec-scanner.js +2 -2
  333. package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
  334. package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
  335. package/dist/services/audit/static-service.js +3 -3
  336. package/dist/services/audit-independent/index.d.ts +2 -2
  337. package/dist/services/audit-independent/index.js +2 -2
  338. package/dist/services/audit-independent/perf-audit-service.js +19 -8
  339. package/dist/services/audit-independent/security-audit-service.js +31 -16
  340. package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
  341. package/dist/services/best-practice/output-formatter.js +7 -1
  342. package/dist/services/capability-audit-service/cross-check.js +11 -5
  343. package/dist/services/capability-audit-service/runner.js +15 -7
  344. package/dist/services/capability-baseline/store.js +16 -4
  345. package/dist/services/capability-baseline/types.js +15 -3
  346. package/dist/services/capability-baseline/validator.js +43 -7
  347. package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
  348. package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
  349. package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
  350. package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
  351. package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
  352. package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
  353. package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
  354. package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
  355. package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
  356. package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
  357. package/dist/services/capability-guard-runner/diff.js +1 -5
  358. package/dist/services/changeset/changeset-check-service.js +1 -3
  359. package/dist/services/classify/classify-service.js +20 -8
  360. package/dist/services/classify/classify-types.js +22 -9
  361. package/dist/services/code/auto-compact-lifecycle.js +62 -39
  362. package/dist/services/code/auto-compact-modes.js +2 -2
  363. package/dist/services/code/auto-compact-orchestrator.js +14 -9
  364. package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
  365. package/dist/services/code/batch-heartbeat-poller.js +17 -1
  366. package/dist/services/code/compact-event-settle-types.d.ts +80 -0
  367. package/dist/services/code/compact-event-settle-types.js +20 -0
  368. package/dist/services/code/compact-event-settle.d.ts +3 -68
  369. package/dist/services/code/compact-event-settle.js +14 -10
  370. package/dist/services/code/dag-orchestrator.js +32 -26
  371. package/dist/services/code/job-shape-decision.js +3 -1
  372. package/dist/services/code/mode-gate-types.d.ts +57 -0
  373. package/dist/services/code/mode-gate-types.js +66 -0
  374. package/dist/services/code/mode-gate.d.ts +4 -58
  375. package/dist/services/code/mode-gate.js +25 -69
  376. package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
  377. package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
  378. package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
  379. package/dist/services/code/orchestrator-can-do-probes.js +77 -0
  380. package/dist/services/code/orchestrator-can-do.d.ts +11 -22
  381. package/dist/services/code/orchestrator-can-do.js +37 -137
  382. package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
  383. package/dist/services/code/post-compact-checkpoint.js +57 -0
  384. package/dist/services/code/post-compact-detector.js +16 -48
  385. package/dist/services/code/step-08-gate.d.ts +4 -3
  386. package/dist/services/code/step-08-gate.js +21 -9
  387. package/dist/services/code/user-touchpoint-classifier.js +0 -7
  388. package/dist/services/code-review/ecc-bridge.d.ts +6 -6
  389. package/dist/services/code-review/ecc-bridge.js +23 -23
  390. package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
  391. package/dist/services/codegraph/codegraph-config-repair-writer.js +4 -1
  392. package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
  393. package/dist/services/codegraph/codegraph-exclude-repair.js +1 -2
  394. package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
  395. package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
  396. package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
  397. package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
  398. package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
  399. package/dist/services/codegraph/codegraph-process-runner.js +12 -1
  400. package/dist/services/codegraph/codegraph-service.js +9 -1
  401. package/dist/services/comments/citation-rules.d.ts +154 -0
  402. package/dist/services/comments/citation-rules.js +241 -0
  403. package/dist/services/comments/comment-audit.d.ts +57 -0
  404. package/dist/services/comments/comment-audit.js +100 -0
  405. package/dist/services/comments/comment-citations.d.ts +60 -0
  406. package/dist/services/comments/comment-citations.js +186 -0
  407. package/dist/services/comments/comment-hygiene.d.ts +79 -0
  408. package/dist/services/comments/comment-hygiene.js +133 -0
  409. package/dist/services/comments/comment-prune.d.ts +88 -0
  410. package/dist/services/comments/comment-prune.js +148 -0
  411. package/dist/services/comments/prune-apply.d.ts +60 -0
  412. package/dist/services/comments/prune-apply.js +150 -0
  413. package/dist/services/comments/repo-path-probe.d.ts +43 -0
  414. package/dist/services/comments/repo-path-probe.js +78 -0
  415. package/dist/services/compact/request-transition-hook.js +2 -1
  416. package/dist/services/compact/suggest-service.d.ts +3 -61
  417. package/dist/services/compact/suggest-service.js +9 -12
  418. package/dist/services/compact/suggest-types.d.ts +76 -0
  419. package/dist/services/compact/suggest-types.js +10 -0
  420. package/dist/services/compact-history/compact-history-service.js +2 -2
  421. package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
  422. package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
  423. package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
  424. package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
  425. package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
  426. package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
  427. package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
  428. package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
  429. package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
  430. package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
  431. package/dist/services/config/config-migration.js +2 -2
  432. package/dist/services/config/config-restore.js +1 -1
  433. package/dist/services/config/config-rollback.js +1 -1
  434. package/dist/services/config/config-safety.js +28 -10
  435. package/dist/services/config/config-service.js +114 -31
  436. package/dist/services/config/model-routing.js +5 -2
  437. package/dist/services/config/proxy-service.js +6 -1
  438. package/dist/services/config/workspace-state-service.js +17 -5
  439. package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
  440. package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
  441. package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
  442. package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
  443. package/dist/services/context/auto-compact-reader-input.js +8 -0
  444. package/dist/services/context/auto-compact-reader.d.ts +2 -24
  445. package/dist/services/context/auto-compact-reader.js +4 -1
  446. package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
  447. package/dist/services/context/auto-compact-thresholds.js +19 -0
  448. package/dist/services/context/auto-compact-types.d.ts +2 -46
  449. package/dist/services/context/auto-compact-types.js +1 -11
  450. package/dist/services/context/build-dispatch-system-prompt.js +2 -2
  451. package/dist/services/context/collector.js +8 -10
  452. package/dist/services/context/context-audit-hint.js +7 -5
  453. package/dist/services/context/context-audit-keys.d.ts +15 -0
  454. package/dist/services/context/context-audit-keys.js +77 -0
  455. package/dist/services/context/context-audit-limits.d.ts +20 -0
  456. package/dist/services/context/context-audit-limits.js +31 -0
  457. package/dist/services/context/context-audit-scan.d.ts +19 -0
  458. package/dist/services/context/context-audit-scan.js +246 -0
  459. package/dist/services/context/context-audit-types.d.ts +65 -0
  460. package/dist/services/context/context-audit-types.js +10 -0
  461. package/dist/services/context/context-audit.d.ts +13 -59
  462. package/dist/services/context/context-audit.js +38 -254
  463. package/dist/services/context/context-builder.js +4 -4
  464. package/dist/services/context/context-schema.d.ts +1 -1
  465. package/dist/services/context/context-schema.js +13 -13
  466. package/dist/services/context/doc-retriever.js +2 -2
  467. package/dist/services/context/harness-context-witness.js +43 -24
  468. package/dist/services/context/harness-window-config.js +27 -7
  469. package/dist/services/context/ide-detect.js +2 -1
  470. package/dist/services/context/index.d.ts +1 -1
  471. package/dist/services/context/memory-index-reader.js +3 -9
  472. package/dist/services/context/memory-preflight-config.js +3 -5
  473. package/dist/services/context/memory-preflight-service.d.ts +2 -20
  474. package/dist/services/context/memory-preflight-service.js +37 -68
  475. package/dist/services/context/memory-preflight-support.d.ts +48 -0
  476. package/dist/services/context/memory-preflight-support.js +56 -0
  477. package/dist/services/context/post-compact-reinjection.js +3 -3
  478. package/dist/services/context/renderer.js +7 -3
  479. package/dist/services/context/spillover-store.js +3 -1
  480. package/dist/services/context/summary-view.js +1 -1
  481. package/dist/services/context/threshold.js +2 -2
  482. package/dist/services/context/tokenizer.js +3 -3
  483. package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
  484. package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
  485. package/dist/services/crystallization/crystallization-service.d.ts +7 -7
  486. package/dist/services/crystallization/crystallization-service.js +56 -55
  487. package/dist/services/crystallization/crystallization-store.d.ts +2 -2
  488. package/dist/services/crystallization/crystallization-store.js +37 -20
  489. package/dist/services/crystallization/crystallization-types.d.ts +4 -56
  490. package/dist/services/crystallization/crystallization-types.js +31 -184
  491. package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
  492. package/dist/services/crystallization/evidence-brief-builder.js +32 -38
  493. package/dist/services/crystallization/index.d.ts +4 -4
  494. package/dist/services/crystallization/index.js +4 -4
  495. package/dist/services/dashboard/project-dashboard-service.js +7 -1
  496. package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
  497. package/dist/services/dispatch/await-batch-helpers.js +206 -0
  498. package/dist/services/dispatch/await-batch.d.ts +50 -7
  499. package/dist/services/dispatch/await-batch.js +97 -194
  500. package/dist/services/dispatch/batch-counter.js +2 -1
  501. package/dist/services/dispatch/conflict-replay.js +2 -2
  502. package/dist/services/dispatch/contract-store.js +5 -2
  503. package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
  504. package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
  505. package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
  506. package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
  507. package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
  508. package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
  509. package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
  510. package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
  511. package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
  512. package/dist/services/dispatch/dispatch-record-writer.js +54 -26
  513. package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
  514. package/dist/services/dispatch/e2e-fixtures.js +1 -1
  515. package/dist/services/dispatch/isolation-lease.js +39 -17
  516. package/dist/services/dispatch/merge-back-runner.js +51 -11
  517. package/dist/services/dispatch/service-shutdown.js +4 -1
  518. package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
  519. package/dist/services/dispatch/slice-dag-types.js +41 -0
  520. package/dist/services/dispatch/slice-dag.d.ts +3 -109
  521. package/dist/services/dispatch/slice-dag.js +13 -36
  522. package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
  523. package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
  524. package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
  525. package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
  526. package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
  527. package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
  528. package/dist/services/dispatch/test-tool-detection.js +12 -1
  529. package/dist/services/doc/doc-generator.js +19 -4
  530. package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
  531. package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
  532. package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
  533. package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
  534. package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
  535. package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
  536. package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
  537. package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
  538. package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
  539. package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
  540. package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
  541. package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
  542. package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
  543. package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
  544. package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
  545. package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
  546. package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
  547. package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
  548. package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
  549. package/dist/services/doctor/doctor-service/index.js +4 -2
  550. package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
  551. package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
  552. package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
  553. package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
  554. package/dist/services/doctor/doctor-service/probe-types.js +14 -0
  555. package/dist/services/doctor/doctor-service/types.d.ts +7 -197
  556. package/dist/services/doctor/index.d.ts +1 -1
  557. package/dist/services/doctor/index.js +1 -1
  558. package/dist/services/env/shell-probe.js +8 -2
  559. package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
  560. package/dist/services/evidence/evidence-body-builders.js +197 -0
  561. package/dist/services/evidence/evidence-generator.js +6 -187
  562. package/dist/services/evolution/evolution-constraints.d.ts +43 -0
  563. package/dist/services/evolution/evolution-constraints.js +54 -0
  564. package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
  565. package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
  566. package/dist/services/evolution/evolution-service.d.ts +6 -6
  567. package/dist/services/evolution/evolution-service.js +58 -58
  568. package/dist/services/evolution/evolution-store.d.ts +2 -2
  569. package/dist/services/evolution/evolution-store.js +37 -51
  570. package/dist/services/evolution/evolution-types.d.ts +2 -22
  571. package/dist/services/evolution/evolution-types.js +41 -101
  572. package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
  573. package/dist/services/evolution/independent-evaluator-runner.js +20 -22
  574. package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
  575. package/dist/services/evolution/regression-skeptic-runner.js +18 -18
  576. package/dist/services/feedback/feedback-promotion-service.js +48 -12
  577. package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
  578. package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
  579. package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
  580. package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
  581. package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
  582. package/dist/services/feedback/promotion-source-comments.js +61 -0
  583. package/dist/services/final-review/final-review-contract.d.ts +26 -0
  584. package/dist/services/final-review/final-review-contract.js +14 -0
  585. package/dist/services/final-review/final-review-delivery.d.ts +63 -0
  586. package/dist/services/final-review/final-review-delivery.js +124 -0
  587. package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
  588. package/dist/services/final-review/final-review-evidence-budget.js +218 -0
  589. package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
  590. package/dist/services/final-review/final-review-evidence-collect.js +230 -0
  591. package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
  592. package/dist/services/final-review/final-review-evidence-sources.js +139 -0
  593. package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
  594. package/dist/services/final-review/final-review-fifth-dim.js +20 -0
  595. package/dist/services/final-review/final-review-gates.d.ts +119 -0
  596. package/dist/services/final-review/final-review-gates.js +214 -0
  597. package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
  598. package/dist/services/final-review/final-review-output-budget.js +161 -0
  599. package/dist/services/final-review/final-review-prompt.d.ts +35 -0
  600. package/dist/services/final-review/final-review-prompt.js +112 -0
  601. package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
  602. package/dist/services/final-review/final-review-reviewer.js +95 -0
  603. package/dist/services/final-review/final-review-runner.d.ts +3 -0
  604. package/dist/services/final-review/final-review-runner.js +158 -0
  605. package/dist/services/final-review/final-review-service.d.ts +119 -373
  606. package/dist/services/final-review/final-review-service.js +48 -1380
  607. package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
  608. package/dist/services/final-review/final-review-verdicts.js +91 -0
  609. package/dist/services/final-review/index.d.ts +3 -3
  610. package/dist/services/final-review/index.js +2 -2
  611. package/dist/services/final-review/pre-post-diff.js +32 -29
  612. package/dist/services/fixture/fixture-capture-service.js +14 -6
  613. package/dist/services/fresh-context/trigger-scan.js +13 -2
  614. package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
  615. package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
  616. package/dist/services/hooks/pre-tool-code-gate.js +2 -2
  617. package/dist/services/hooks/presence-marker-detector.js +12 -2
  618. package/dist/services/hooks/worktree-authorization-gate.js +21 -7
  619. package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
  620. package/dist/services/ide/adapters/codex-adapter.js +3 -5
  621. package/dist/services/ide/adapters/cursor-adapter.js +3 -5
  622. package/dist/services/ide/adapters/hermes-adapter.js +2 -4
  623. package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
  624. package/dist/services/ide/adapters/qoder-adapter.js +2 -4
  625. package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
  626. package/dist/services/ide/adapters/trae-adapter.js +3 -5
  627. package/dist/services/ide/adapters/zcode-adapter.js +8 -7
  628. package/dist/services/ide/current-model-detector.js +2 -1
  629. package/dist/services/ide/ide-compact-types.d.ts +153 -0
  630. package/dist/services/ide/ide-compact-types.js +1 -0
  631. package/dist/services/ide/ide-registry.js +1 -1
  632. package/dist/services/ide/ide-types.d.ts +7 -145
  633. package/dist/services/ide/resource-profile.js +1 -1
  634. package/dist/services/ide/shared/atomic-json.js +2 -1
  635. package/dist/services/impact/impact-scan-service.js +12 -5
  636. package/dist/services/job/job-commit-verification.d.ts +73 -0
  637. package/dist/services/job/job-commit-verification.js +72 -0
  638. package/dist/services/job/job-orchestrator.d.ts +42 -0
  639. package/dist/services/job/job-orchestrator.js +110 -10
  640. package/dist/services/job/job-progress-store.d.ts +75 -5
  641. package/dist/services/job/job-progress-store.js +83 -6
  642. package/dist/services/job/job-rotation.d.ts +1 -1
  643. package/dist/services/job/job-rotation.js +5 -1
  644. package/dist/services/job/job-state-store.js +2 -2
  645. package/dist/services/job/job-types.js +49 -20
  646. package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
  647. package/dist/services/job/subagent-job-wrapper.js +5 -1
  648. package/dist/services/job-snapshot/snapshot.js +2 -2
  649. package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
  650. package/dist/services/legacy/legacy-detector.js +51 -5
  651. package/dist/services/lint/detect-eslint.js +10 -4
  652. package/dist/services/lint/detect-ocr-18.js +11 -3
  653. package/dist/services/lint/eslint-runner-support.d.ts +22 -0
  654. package/dist/services/lint/eslint-runner-support.js +185 -0
  655. package/dist/services/lint/eslint-runner-types.d.ts +69 -0
  656. package/dist/services/lint/eslint-runner-types.js +11 -0
  657. package/dist/services/lint/eslint-runner.d.ts +4 -56
  658. package/dist/services/lint/eslint-runner.js +24 -178
  659. package/dist/services/lint/npx-resolver.js +1 -3
  660. package/dist/services/lint/ocr-18-acquire.js +15 -4
  661. package/dist/services/lint/ocr-multilang-adapter.js +4 -5
  662. package/dist/services/llm/anthropic-runner.js +4 -1
  663. package/dist/services/log/log-commands-service.js +2 -6
  664. package/dist/services/log/logger.js +15 -12
  665. package/dist/services/log/retention.d.ts +0 -16
  666. package/dist/services/log/retention.js +2 -18
  667. package/dist/services/loop/evaluator-dispatcher.js +78 -42
  668. package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
  669. package/dist/services/loop/loop-bee-relation-service.js +36 -40
  670. package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
  671. package/dist/services/loop/loop-bee-relation-store.js +9 -11
  672. package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
  673. package/dist/services/loop/loop-bee-relation-types.js +14 -25
  674. package/dist/services/loop/loop-release-service.d.ts +2 -2
  675. package/dist/services/loop/loop-release-service.js +3 -3
  676. package/dist/services/loop/loop-release-store.d.ts +2 -2
  677. package/dist/services/loop/loop-release-store.js +4 -6
  678. package/dist/services/loop/loop-release-types.d.ts +1 -1
  679. package/dist/services/loop/loop-release-types.js +21 -31
  680. package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
  681. package/dist/services/loop/monotonic-guard-types.js +9 -0
  682. package/dist/services/loop/monotonic-guard.d.ts +2 -43
  683. package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
  684. package/dist/services/loop/monotonic-runner-types.js +17 -0
  685. package/dist/services/loop/monotonic-runner.d.ts +3 -34
  686. package/dist/services/loop/monotonic-runner.js +10 -20
  687. package/dist/services/loop/run-driver.js +16 -8
  688. package/dist/services/loop/spec-service.d.ts +0 -5
  689. package/dist/services/loop/spec-service.js +49 -9
  690. package/dist/services/memory/llm-reranker-core.d.ts +108 -0
  691. package/dist/services/memory/llm-reranker-core.js +105 -0
  692. package/dist/services/memory/llm-reranker.d.ts +3 -94
  693. package/dist/services/memory/llm-reranker.js +13 -102
  694. package/dist/services/memory/memory-ingest-service.d.ts +1 -22
  695. package/dist/services/memory/memory-ingest-service.js +29 -76
  696. package/dist/services/memory/memory-ingest-support.d.ts +23 -0
  697. package/dist/services/memory/memory-ingest-support.js +81 -0
  698. package/dist/services/memory/memory-rotate-service.js +41 -8
  699. package/dist/services/memory/memory-search-service.js +8 -4
  700. package/dist/services/memory/project-context-service.js +26 -5
  701. package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
  702. package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
  703. package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
  704. package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
  705. package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
  706. package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
  707. package/dist/services/memory/project-memory-service/index.d.ts +1 -1
  708. package/dist/services/memory/project-memory-service/index.js +1 -1
  709. package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
  710. package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
  711. package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
  712. package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
  713. package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
  714. package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
  715. package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
  716. package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +19 -7
  717. package/dist/services/memory/project-memory-service/store/atomic-write.js +144 -38
  718. package/dist/services/memory/project-memory-service/store/paths.js +2 -1
  719. package/dist/services/memory/project-memory-service/types.d.ts +3 -31
  720. package/dist/services/memory/project-memory-service/types.js +1 -76
  721. package/dist/services/migrate-skill-name/migrate.js +1 -1
  722. package/dist/services/migrate-skill-name/schema.js +1 -1
  723. package/dist/services/mode/mode-enforcement.js +4 -2
  724. package/dist/services/mode/mode-status-service.d.ts +27 -9
  725. package/dist/services/mode/mode-status-service.js +64 -12
  726. package/dist/services/observability/aggregation-helpers.d.ts +22 -0
  727. package/dist/services/observability/aggregation-helpers.js +65 -0
  728. package/dist/services/observability/aggregation-types.d.ts +66 -0
  729. package/dist/services/observability/aggregation-types.js +34 -0
  730. package/dist/services/observability/aggregation.d.ts +5 -53
  731. package/dist/services/observability/aggregation.js +17 -80
  732. package/dist/services/observability/jsonl-store.js +2 -1
  733. package/dist/services/observability/observability-schema.d.ts +71 -0
  734. package/dist/services/observability/observability-schema.js +64 -0
  735. package/dist/services/observability/observability-service.d.ts +3 -56
  736. package/dist/services/observability/observability-service.js +9 -49
  737. package/dist/services/openspec/coverage-evidence-reader.js +18 -11
  738. package/dist/services/openspec/openspec-archive-service.js +31 -24
  739. package/dist/services/openspec/openspec-init-service.js +8 -2
  740. package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
  741. package/dist/services/openspec/openspec-scan-service.js +4 -1
  742. package/dist/services/openspec/openspec-validate-service.js +26 -5
  743. package/dist/services/perf/perf-baseline-service.js +2 -6
  744. package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
  745. package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
  746. package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
  747. package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
  748. package/dist/services/prd/handoff-frontmatter.js +62 -1
  749. package/dist/services/prd/handoff-gate-evidence.js +14 -10
  750. package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
  751. package/dist/services/prd/handoff-path-resolution.js +101 -0
  752. package/dist/services/prd/handoff-service.d.ts +12 -38
  753. package/dist/services/prd/handoff-service.js +25 -147
  754. package/dist/services/prd/handoff-types.d.ts +33 -1
  755. package/dist/services/prd/prd-blocks-checker.js +28 -8
  756. package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
  757. package/dist/services/prd/project-scan-reader.js +1 -4
  758. package/dist/services/prd/project-scan-sediment.js +1 -4
  759. package/dist/services/preferences/preferences-service.js +6 -8
  760. package/dist/services/preferences/preferences-types.js +4 -4
  761. package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
  762. package/dist/services/qa/bdd-test-style-contract.js +37 -0
  763. package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
  764. package/dist/services/qa/bdd-test-style-verifier.js +5 -31
  765. package/dist/services/qa/browser-event-logger.js +2 -1
  766. package/dist/services/qa/qa-business-review-state.js +20 -5
  767. package/dist/services/qa/screenshot-archive-service.js +1 -3
  768. package/dist/services/rd/ast-gate.js +2 -2
  769. package/dist/services/rd/impl.js +1 -1
  770. package/dist/services/rd/rd-service.js +117 -43
  771. package/dist/services/rd/reviewer-dispatch-policy.js +4 -7
  772. package/dist/services/rd/standards-diagnostic.js +4 -1
  773. package/dist/services/rd/strategy.js +10 -3
  774. package/dist/services/rd/tactical-stage.js +2 -2
  775. package/dist/services/rd/types.js +9 -7
  776. package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
  777. package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
  778. package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
  779. package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
  780. package/dist/services/recommendations/capability-map-service.js +10 -2
  781. package/dist/services/recommendations/capability-seed-items.js +81 -14
  782. package/dist/services/recommendations/capability-seed-mappings.js +420 -48
  783. package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
  784. package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
  785. package/dist/services/recommendations/capability-seed-sources.js +127 -32
  786. package/dist/services/recommendations/installed-capability-detector.d.ts +5 -5
  787. package/dist/services/recommendations/installed-capability-detector.js +11 -10
  788. package/dist/services/release/release-state.d.ts +2 -2
  789. package/dist/services/release/release-state.js +44 -15
  790. package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
  791. package/dist/services/release/version-precheck-layer-changeset.js +43 -0
  792. package/dist/services/release/version-precheck-service.d.ts +11 -36
  793. package/dist/services/release/version-precheck-service.js +20 -104
  794. package/dist/services/release/version-precheck-support.d.ts +53 -0
  795. package/dist/services/release/version-precheck-support.js +64 -0
  796. package/dist/services/retrospective/retrospective-index.js +17 -3
  797. package/dist/services/retrospective/retrospective-search-service.js +6 -2
  798. package/dist/services/retrospective/retrospective-show.js +4 -1
  799. package/dist/services/reviewer/model-family.js +7 -1
  800. package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
  801. package/dist/services/reviewer/providers/anthropic.js +10 -1
  802. package/dist/services/reviewer/providers/openai.d.ts +5 -0
  803. package/dist/services/reviewer/providers/openai.js +10 -1
  804. package/dist/services/reviewer/reviewer-config.js +4 -2
  805. package/dist/services/reviewer/reviewer-service.d.ts +2 -36
  806. package/dist/services/reviewer/reviewer-service.js +2 -1
  807. package/dist/services/reviewer/reviewer-types.d.ts +43 -0
  808. package/dist/services/reviewer/reviewer-types.js +1 -0
  809. package/dist/services/role/role-registry.js +9 -1
  810. package/dist/services/runtime/runtime-detector.js +4 -1
  811. package/dist/services/runtime/vendors/claude-code.js +14 -6
  812. package/dist/services/runtime/vendors/codex.js +11 -3
  813. package/dist/services/runtime/vendors/copilot.js +11 -3
  814. package/dist/services/sc/sc-service.js +28 -15
  815. package/dist/services/scan/acceptance-coverage-service.js +4 -1
  816. package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
  817. package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
  818. package/dist/services/scan/api-diff-openapi.d.ts +16 -2
  819. package/dist/services/scan/api-diff-openapi.js +19 -123
  820. package/dist/services/scan/api-diff-recorded.js +16 -3
  821. package/dist/services/scan/api-diff-service.js +49 -16
  822. package/dist/services/scan/api-diff-types.js +12 -3
  823. package/dist/services/scan/api-surface-helpers.d.ts +13 -0
  824. package/dist/services/scan/api-surface-helpers.js +31 -0
  825. package/dist/services/scan/api-surface-service.d.ts +2 -45
  826. package/dist/services/scan/api-surface-service.js +15 -26
  827. package/dist/services/scan/api-surface-types.d.ts +54 -0
  828. package/dist/services/scan/api-surface-types.js +10 -0
  829. package/dist/services/scan/archetype-detection.d.ts +74 -0
  830. package/dist/services/scan/archetype-detection.js +315 -0
  831. package/dist/services/scan/archetype-service.js +58 -133
  832. package/dist/services/scan/diff-scope-service.js +35 -15
  833. package/dist/services/scan/existing-system-service.js +16 -99
  834. package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
  835. package/dist/services/scan/existing-system-visual-tokens.js +123 -0
  836. package/dist/services/scan/file-size-policy.d.ts +86 -0
  837. package/dist/services/scan/file-size-policy.js +184 -0
  838. package/dist/services/scan/file-size-scan.d.ts +30 -3
  839. package/dist/services/scan/file-size-scan.js +47 -9
  840. package/dist/services/scan/karpathy-service.js +6 -1
  841. package/dist/services/scan/orphan-service.js +86 -20
  842. package/dist/services/scan/scan-types.d.ts +9 -0
  843. package/dist/services/scan/type-sanity-service.js +104 -10
  844. package/dist/services/sediment/dispose-confirm.d.ts +2 -2
  845. package/dist/services/sediment/dispose-confirm.js +2 -2
  846. package/dist/services/sediment/json-schema.d.ts +1 -1
  847. package/dist/services/sediment/json-schema.js +25 -13
  848. package/dist/services/sediment/manifest-lint.d.ts +1 -12
  849. package/dist/services/sediment/manifest-lint.js +1 -7
  850. package/dist/services/sediment/pool-paths.js +13 -9
  851. package/dist/services/sediment/pool-read.d.ts +1 -1
  852. package/dist/services/sediment/pool-read.js +42 -18
  853. package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
  854. package/dist/services/sediment/pool-rebuild-index.js +5 -5
  855. package/dist/services/sediment/pool-write.d.ts +1 -1
  856. package/dist/services/sediment/pool-write.js +7 -7
  857. package/dist/services/sediment/promotion-gate.d.ts +1 -1
  858. package/dist/services/sediment/promotion-gate.js +9 -9
  859. package/dist/services/sediment/types.d.ts +8 -8
  860. package/dist/services/session/binding-status-service.js +14 -4
  861. package/dist/services/session/caller-binding-service.js +2 -1
  862. package/dist/services/session/getSessionDir.js +4 -1
  863. package/dist/services/session/index.d.ts +1 -1
  864. package/dist/services/session/index.js +1 -1
  865. package/dist/services/session/resolve-caller-id.js +7 -5
  866. package/dist/services/session/session-binding-bridge.js +26 -25
  867. package/dist/services/session/session-checkpoint-service.js +1 -1
  868. package/dist/services/session/session-file-schema.d.ts +70 -0
  869. package/dist/services/session/session-file-schema.js +68 -0
  870. package/dist/services/session/session-manager.d.ts +6 -6
  871. package/dist/services/session/session-manager.js +30 -29
  872. package/dist/services/session/session-resume-service.js +2 -1
  873. package/dist/services/share/bundle-format-constants.d.ts +85 -0
  874. package/dist/services/share/bundle-format-constants.js +100 -0
  875. package/dist/services/share/bundle-reader.d.ts +3 -3
  876. package/dist/services/share/bundle-reader.js +75 -68
  877. package/dist/services/share/bundle-types.d.ts +3 -70
  878. package/dist/services/share/bundle-types.js +38 -107
  879. package/dist/services/share/bundle-writer.d.ts +3 -3
  880. package/dist/services/share/bundle-writer.js +101 -91
  881. package/dist/services/share/run-state-contract.d.ts +1 -1
  882. package/dist/services/share/run-state-contract.js +7 -13
  883. package/dist/services/signal/cancel-handler.js +2 -1
  884. package/dist/services/skill/resume-detector.js +6 -4
  885. package/dist/services/skill/skill-scheduler.js +3 -1
  886. package/dist/services/skill/skill-search-service.js +4 -4
  887. package/dist/services/skillhub/release-diff.d.ts +2 -2
  888. package/dist/services/skillhub/release-diff.js +6 -10
  889. package/dist/services/skillhub/release-export.d.ts +2 -2
  890. package/dist/services/skillhub/release-export.js +15 -17
  891. package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
  892. package/dist/services/skillhub/release-gc-blobs.js +4 -4
  893. package/dist/services/skillhub/release-import.d.ts +2 -2
  894. package/dist/services/skillhub/release-import.js +13 -12
  895. package/dist/services/skillhub/release-retain.d.ts +3 -3
  896. package/dist/services/skillhub/release-retain.js +22 -22
  897. package/dist/services/skillhub/sqlite-store.d.ts +1 -1
  898. package/dist/services/skillhub/sqlite-store.js +12 -11
  899. package/dist/services/skillhub/tar-runtime.js +15 -15
  900. package/dist/services/skillhub/types.d.ts +4 -4
  901. package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
  902. package/dist/services/skills/hooks-settings-service.js +61 -19
  903. package/dist/services/skills/presence-lease-service.js +26 -16
  904. package/dist/services/skills/presence-lease-types.d.ts +1 -1
  905. package/dist/services/skills/presence-lease-types.js +1 -1
  906. package/dist/services/skills/skill-conformance-service.js +40 -8
  907. package/dist/services/skills/skill-presence-service.js +16 -14
  908. package/dist/services/skills/skill-runbook-service.js +2 -1
  909. package/dist/services/skills/skill-statusline-model.d.ts +128 -0
  910. package/dist/services/skills/skill-statusline-model.js +163 -0
  911. package/dist/services/skills/skill-statusline-renderer.js +4 -3
  912. package/dist/services/skills/skill-statusline-service.d.ts +3 -100
  913. package/dist/services/skills/skill-statusline-service.js +56 -163
  914. package/dist/services/skills/statusline-palette.js +11 -6
  915. package/dist/services/skills/statusline-settings-service.js +2 -1
  916. package/dist/services/skills/sync-service-support.d.ts +65 -0
  917. package/dist/services/skills/sync-service-support.js +50 -0
  918. package/dist/services/skills/sync-service.d.ts +3 -66
  919. package/dist/services/skills/sync-service.js +15 -53
  920. package/dist/services/slice/calibration-store.js +8 -2
  921. package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
  922. package/dist/services/slice/cross-pass-edge-merger.js +13 -63
  923. package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
  924. package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
  925. package/dist/services/slice/granularity-decider.js +2 -2
  926. package/dist/services/slice/slice-archive-service.js +8 -3
  927. package/dist/services/slice/slice-check-service.js +19 -8
  928. package/dist/services/slice/slice-decompose-runners.js +61 -23
  929. package/dist/services/slice/slice-decompose-service.js +4 -4
  930. package/dist/services/slice/slice-review-state.js +8 -2
  931. package/dist/services/smoke/smoke-paths-state.js +9 -2
  932. package/dist/services/sop/gate-enforce-service.js +9 -2
  933. package/dist/services/sop/sop-advance-service.js +14 -2
  934. package/dist/services/sop/sop-check-service.js +16 -4
  935. package/dist/services/sop/sop-paths.js +3 -1
  936. package/dist/services/sop/sop-registry-service.js +5 -1
  937. package/dist/services/sop/sop-service.js +29 -7
  938. package/dist/services/sop/sop-types.js +5 -1
  939. package/dist/services/standards/ide-aware-standards-service.js +2 -2
  940. package/dist/services/standards/loop-engineering-lint.js +12 -5
  941. package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
  942. package/dist/services/standards/migrate-claude-rules-service.js +9 -7
  943. package/dist/services/standards/missing-standards-detector.js +1 -3
  944. package/dist/services/standards/project-context-support.d.ts +50 -0
  945. package/dist/services/standards/project-context-support.js +244 -0
  946. package/dist/services/standards/project-context-types.d.ts +30 -0
  947. package/dist/services/standards/project-context-types.js +11 -0
  948. package/dist/services/standards/project-context.d.ts +10 -22
  949. package/dist/services/standards/project-context.js +27 -214
  950. package/dist/services/standards/project-standards-service.js +43 -12
  951. package/dist/services/standards/standards-render-common.d.ts +15 -0
  952. package/dist/services/standards/standards-render-common.js +49 -0
  953. package/dist/services/standards/standards-render.d.ts +1 -2
  954. package/dist/services/standards/standards-render.js +31 -58
  955. package/dist/services/standards/ui-library-dispatch-block.js +1 -1
  956. package/dist/services/tech/tech-change-id-service.js +7 -7
  957. package/dist/services/tech/tech-service.js +73 -26
  958. package/dist/services/test-cache/test-cache-service.js +8 -3
  959. package/dist/services/verdict/envelope-parsers.d.ts +84 -0
  960. package/dist/services/verdict/envelope-parsers.js +146 -0
  961. package/dist/services/verdict/envelopes.d.ts +50 -60
  962. package/dist/services/verdict/envelopes.js +18 -156
  963. package/dist/services/verdict/verdict-aggregator.js +27 -3
  964. package/dist/services/vm/vm-lease.js +15 -3
  965. package/dist/services/web/aria-node.d.ts +27 -0
  966. package/dist/services/web/aria-node.js +1 -0
  967. package/dist/services/web/browser-acquire.js +3 -1
  968. package/dist/services/web/browser-cache-probe.d.ts +18 -0
  969. package/dist/services/web/browser-cache-probe.js +110 -0
  970. package/dist/services/web/browser-session-manager.js +6 -2
  971. package/dist/services/web/daemon-registry.js +4 -1
  972. package/dist/services/web/playwright-loader.d.ts +2 -70
  973. package/dist/services/web/playwright-types.d.ts +75 -0
  974. package/dist/services/web/playwright-types.js +1 -0
  975. package/dist/services/web/snapshot-pruner.d.ts +2 -23
  976. package/dist/services/web/snapshot-pruner.js +8 -3
  977. package/dist/services/web/web-daemon-service.js +1 -3
  978. package/dist/services/web/web-install-service.d.ts +3 -32
  979. package/dist/services/web/web-install-service.js +21 -100
  980. package/dist/services/web/web-install-types.d.ts +31 -0
  981. package/dist/services/web/web-install-types.js +13 -0
  982. package/dist/services/web/web-login-profile.js +7 -5
  983. package/dist/services/web/web-protocol.js +3 -1
  984. package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
  985. package/dist/services/workflow/pipeline-verify-service.js +17 -6
  986. package/dist/services/workflow/plan-reader.js +5 -1
  987. package/dist/services/workflow/plan-refresher.js +20 -6
  988. package/dist/services/workflow/plan-trigger-detector.js +31 -8
  989. package/dist/services/workflow/provision-dispatch-node.js +8 -3
  990. package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
  991. package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
  992. package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
  993. package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
  994. package/dist/services/workflow/workflow-autonomous-service.js +25 -13
  995. package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
  996. package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
  997. package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
  998. package/dist/services/workflow/workflow-graph-store.js +30 -107
  999. package/dist/services/workflow/workflow-graph-types.js +3 -3
  1000. package/dist/services/workflow/workflow-inflight-probe.js +14 -7
  1001. package/dist/services/workflow/workflow-loader.js +5 -1
  1002. package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
  1003. package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
  1004. package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
  1005. package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
  1006. package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
  1007. package/dist/services/workflow/workflow-router-service.js +169 -27
  1008. package/dist/services/workflow/workflow-skip-service.js +14 -4
  1009. package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
  1010. package/dist/services/workflow/workflow-spec-builders.js +121 -0
  1011. package/dist/services/workflow/workflow-spec.d.ts +7 -6
  1012. package/dist/services/workflow/workflow-spec.js +22 -116
  1013. package/dist/services/workflow/workflow-state-store.js +2 -1
  1014. package/dist/services/workspace/generated-artifacts-stamp.d.ts +2 -2
  1015. package/dist/services/workspace/generated-artifacts-stamp.js +2 -2
  1016. package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
  1017. package/dist/services/workspace/migrate-service.js +66 -16
  1018. package/dist/services/workspace/reconcile-migrate.js +6 -2
  1019. package/dist/services/workspace/reconcile-service.js +37 -16
  1020. package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
  1021. package/dist/services/workspace/workspace-clean-service.js +4 -1
  1022. package/dist/services/workspace/workspace-service.js +12 -4
  1023. package/dist/services/workspace/workspace-state-service.js +1 -1
  1024. package/dist/services/worktree/git-worktree-parser.js +13 -3
  1025. package/dist/services/worktree/host-worktree-reconciler.js +8 -4
  1026. package/dist/services/worktree/long-path-cleanup.js +23 -6
  1027. package/dist/services/worktree/worktree-gc-guard.js +3 -1
  1028. package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
  1029. package/dist/services/worktree/worktree-lease-types.js +10 -0
  1030. package/dist/services/worktree/worktree-lease.d.ts +2 -44
  1031. package/dist/shared/array-guards.d.ts +30 -0
  1032. package/dist/shared/array-guards.js +32 -0
  1033. package/dist/shared/format-md-compact-internals.d.ts +26 -0
  1034. package/dist/shared/format-md-compact-internals.js +125 -0
  1035. package/dist/shared/format-md-compact.js +1 -117
  1036. package/dist/shared/fs-utils.js +2 -1
  1037. package/dist/shared/incrementing-number.js +3 -3
  1038. package/dist/shared/json-parse.d.ts +71 -0
  1039. package/dist/shared/json-parse.js +32 -0
  1040. package/dist/shared/json-schema-mini.js +3 -1
  1041. package/dist/shared/path-safety.js +3 -1
  1042. package/dist/shared/path-utils.d.ts +20 -0
  1043. package/dist/shared/path-utils.js +26 -0
  1044. package/dist/shared/planner-response.js +3 -3
  1045. package/dist/shared/stale-policy.js +1 -3
  1046. package/dist/skills/peaks-maker/index.js +11 -11
  1047. package/package.json +31 -8
  1048. package/scripts/clean-dist.mjs +1 -2
  1049. package/scripts/copy-templates.mjs +2 -4
  1050. package/scripts/install-skills.mjs +286 -283
  1051. package/scripts/sync-version.mjs +25 -8
  1052. package/scripts/watch.mjs +8 -2
  1053. package/skills/bee/peaks-qa/references/reading-handoff-frontmatter.md +3 -1
  1054. package/skills/bee/peaks-rd/references/parallel-review-fanout.md +1 -1
  1055. package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +3 -2
  1056. package/skills/bee/peaks-rd/references/writing-handoff-frontmatter.md +29 -7
  1057. package/skills/peaks-code/SKILL.md +1 -1
  1058. package/skills/peaks-code/references/frontend-only-mode.md +2 -2
  1059. package/skills/peaks-code/references/startup-sequence.md +0 -4
  1060. package/dist/cli/commands/upgrade-commands.d.ts +0 -25
  1061. package/dist/cli/commands/upgrade-commands.js +0 -154
  1062. package/dist/services/upgrade/1x-detector-service.d.ts +0 -7
  1063. package/dist/services/upgrade/1x-detector-service.js +0 -94
  1064. package/dist/services/upgrade/gitignore-migrate-service.d.ts +0 -56
  1065. package/dist/services/upgrade/gitignore-migrate-service.js +0 -170
  1066. package/dist/services/upgrade/upgrade-service.d.ts +0 -81
  1067. package/dist/services/upgrade/upgrade-service.js +0 -405
  1068. package/skills/peaks-code/references/step-0-55-1x-detection.md +0 -83
@@ -0,0 +1,110 @@
1
+ /**
2
+ * The ONE writer of `lastRunAt` in this repo — rid `2026-10-01-cron-last-run-at-01`
3
+ * (backlog §2.24), repair cycle 1 (review F1/F4/F5). Lives in its own file because
4
+ * `cron-commands.ts` sits at 287 of its 300 raw-line cap and
5
+ * `cron-scheduler-commands.ts` is already over its own; the rule below is small
6
+ * enough to be read, tested and quoted from here.
7
+ *
8
+ * WHO CALLS THIS (3 call sites, one rule): the daemon tick
9
+ * (`cron-scheduler-commands.ts:369`), `cron-scheduler run-once` (:304), and
10
+ * `peaks cron run` (`cron-commands-actions.ts:175`). The third site is the repair:
11
+ * at `9badd1ac` `peaks cron run` folded its own snapshot and stamped EVERY record,
12
+ * killed ones included (`cron-commands-actions.ts:174` of that commit, no `killed`
13
+ * test), while this file skipped them. The same killed fire therefore stayed due
14
+ * under the daemon and went silent for a full `intervalMs` under `cron run` — the
15
+ * documented runbook / external-crontab path. There is now one fold, so there is one
16
+ * outcome per fire, whichever command ran it.
17
+ *
18
+ * WHY IT EXISTS (measured, not inferred). Before the slice the daemon tick (the
19
+ * `for (const task of due) { runTask(…); }` body at `9badd1ac`) discarded the
20
+ * `RunRecord`, and `listDueTasks` keeps an entry due whenever `lastRunAt` is
21
+ * null (`cron-commands-schedule.ts:212`, `if (e.lastRunAt === null) return true;`).
22
+ * Measured by `tests/unit/cli/commands/cron-last-run-at.test.ts`: **6 `runTask`
23
+ * invocations across 6 ticks** for one entry with `intervalMs` 86,400,000 at the
24
+ * 60,000 ms daemon period — a 1440× rate error against the declared interval, and the
25
+ * rate half of
26
+ * `.peaks/docs/diagnosis-2026-10-01-worktree-list-population.md` §9. The same
27
+ * test observes **1** once the write-back below runs.
28
+ *
29
+ * THE RULE (persist AFTER the run, from the record's `finishedAt`):
30
+ * 1. a run that reached a conclusion — exit code 0 or non-zero, not killed —
31
+ * advances `lastRunAt` to `record.finishedAt`, so the entry goes quiet for
32
+ * exactly its own `intervalMs` and not one ms longer;
33
+ * 2. a run carrying `killed: true` does NOT advance it, in EITHER entry point.
34
+ * Work cut off mid-flight is not a day's work, so the task stays due and is
35
+ * retried. What that costs is NOT uniform across platforms, and F3 of the
36
+ * review is the reason this paragraph is platform-shaped instead of global:
37
+ * - win32: the only fire shape that reaches `killed: true` here is the exec
38
+ * timeout (`cron-commands.ts:178-185`, spawnSync's `error.code ===
39
+ * 'ETIMEDOUT'` branch), and that fire BLOCKS its caller for the whole
40
+ * injected timeout — measured at 3,019 ms and 3,020 ms of block for an injected
41
+ * 3,000 ms timeout (`tests/unit/cli/commands/cron-exec-timeout.test.ts`, whose
42
+ * positive control brings the same wiring back in 67-71 ms when the child
43
+ * concludes), and the production value is `EXEC_TIMEOUT_MS = 300_000`
44
+ * (`cron-commands.ts:74`). The
45
+ * tick is a synchronous callback on one `setInterval`
46
+ * (`cron-scheduler-commands.ts:378`), so fires serialize and a permanently
47
+ * stuck entry costs at most 3,600,000 / 300,000 = **12 fires per hour**, not
48
+ * one per 60,000 ms tick. A child killed from OUTSIDE does not carry `killed`
49
+ * on this platform: the review measured a `taskkill /F`-terminated child
50
+ * returning `status 1` in 419 ms, and the same shape driven through `runTask`
51
+ * against `dist/` at repair time came back `exitCode 1` with NO `killed` key in
52
+ * 383 ms and 410 ms — which takes the CONCLUDED branch
53
+ * (`cron-commands.ts:193-199`) and is therefore STAMPED. Both writers now
54
+ * agree about that class (it is stamped by both), and neither pretends rule 2
55
+ * can see it on win32.
56
+ * - POSIX: an external signal death has no status and no timeout error, so it
57
+ * does hit `cron-commands.ts:200-206` and carry `killed: true`, and `runTask`
58
+ * returns as soon as the child dies. That class re-fires once per 60,000 ms
59
+ * tick — the deliberate price of not silencing unfinished work, and the shape
60
+ * this host cannot produce.
61
+ * Timestamping at `startedAt` was rejected (goal §alternatives): it would mark a
62
+ * killed run as done and silence it.
63
+ * 3. every entry the file holds survives the write. Parsed entries are re-written
64
+ * from a schedule that is RE-READ at write time, so a task an operator added
65
+ * while the daemon was busy is preserved field-for-field
66
+ * (`cron-last-run-at.test.ts`, "when an operator adds a task while the daemon is
67
+ * running one…"); and entries `toScheduleEntry`
68
+ * (`cron-commands-schedule.ts:129-150`) REJECTS — a hand-edited entry missing
69
+ * `name`, say — are carried through as the raw JSON they were written as,
70
+ * appended after the parsed ones. F5 of the review: before this they were
71
+ * silently DELETED by the daemon's first write, which is data loss on a
72
+ * long-lived process nobody is watching. An unparseable entry with the same `id`
73
+ * as a parsed one is the one thing still dropped, because two entries under one
74
+ * id would make the fold ambiguous.
75
+ *
76
+ * WINDOWS, NAMED (F4 + the lock that does not exist):
77
+ * - Inside this function the read→write sequence has no `await` and no yield point,
78
+ * so within one process the window is nil; it is cross-process only.
79
+ * - `peaks cron run` used to be the wide window: at `9badd1ac` it read the whole
80
+ * schedule (`cron-commands-actions.ts:143`), ran each target synchronously for up
81
+ * to `EXEC_TIMEOUT_MS` (300,000 ms) per task (:172), then rewrote the file from
82
+ * that PRE-RUN snapshot (:156) — which reverted any stamp the daemon had
83
+ * landed in between, back to `null`, i.e. permanently due, §2.24 re-opened until
84
+ * the next concluded run. It calls this function now, so its write is a write-time
85
+ * re-read like this one's; `cron-last-run-at.test.ts` ("…another writer stamps…")
86
+ * measures the revert case.
87
+ * - What is still open, stated rather than implied: there is NO lock on
88
+ * `schedule.json`, and `writeSchedule` is a plain `writeFileSync`
89
+ * (`cron-commands-schedule.ts:170-174`). Last-writer-wins on the VALUE across two
90
+ * processes that both land inside this function's own re-read→write tail remains,
91
+ * and a host failure mid-write still truncates the file. That needs the
92
+ * locking/atomic-write framework this slice deliberately does not take on.
93
+ * - One write per BATCH, not per record (F6, not fixed here): `runTask` throws for fs
94
+ * failure inside `appendHistory` (`cron-commands-schedule.ts:176-188` does a
95
+ * read+write of the whole history per record), so a throw at task k loses the
96
+ * stamps for tasks 1..k-1 and the tick's catch turns it into one stderr line; those
97
+ * already-concluded tasks are due again next tick. Reachability is documented at
98
+ * `skills/peaks-code/references/cron-scheduler-deployment.md:98-101` (a read-only
99
+ * `.peaks/cron`).
100
+ */
101
+ import { type RunRecord } from './cron-commands-schedule.js';
102
+ /**
103
+ * Fold a batch of finished runs into `schedule.json`.
104
+ *
105
+ * `records` is what `runTask` returned for the tasks this batch ran; a record whose
106
+ * task id is no longer in the schedule (an operator removed the entry mid-flight) is
107
+ * dropped rather than resurrected. When nothing is left to change — every run
108
+ * killed, or the whole batch stale — the file is not rewritten.
109
+ */
110
+ export declare function persistLastRunAt(projectRoot: string, records: ReadonlyArray<RunRecord>): void;
@@ -0,0 +1,171 @@
1
+ /**
2
+ * The ONE writer of `lastRunAt` in this repo — rid `2026-10-01-cron-last-run-at-01`
3
+ * (backlog §2.24), repair cycle 1 (review F1/F4/F5). Lives in its own file because
4
+ * `cron-commands.ts` sits at 287 of its 300 raw-line cap and
5
+ * `cron-scheduler-commands.ts` is already over its own; the rule below is small
6
+ * enough to be read, tested and quoted from here.
7
+ *
8
+ * WHO CALLS THIS (3 call sites, one rule): the daemon tick
9
+ * (`cron-scheduler-commands.ts:369`), `cron-scheduler run-once` (:304), and
10
+ * `peaks cron run` (`cron-commands-actions.ts:175`). The third site is the repair:
11
+ * at `9badd1ac` `peaks cron run` folded its own snapshot and stamped EVERY record,
12
+ * killed ones included (`cron-commands-actions.ts:174` of that commit, no `killed`
13
+ * test), while this file skipped them. The same killed fire therefore stayed due
14
+ * under the daemon and went silent for a full `intervalMs` under `cron run` — the
15
+ * documented runbook / external-crontab path. There is now one fold, so there is one
16
+ * outcome per fire, whichever command ran it.
17
+ *
18
+ * WHY IT EXISTS (measured, not inferred). Before the slice the daemon tick (the
19
+ * `for (const task of due) { runTask(…); }` body at `9badd1ac`) discarded the
20
+ * `RunRecord`, and `listDueTasks` keeps an entry due whenever `lastRunAt` is
21
+ * null (`cron-commands-schedule.ts:212`, `if (e.lastRunAt === null) return true;`).
22
+ * Measured by `tests/unit/cli/commands/cron-last-run-at.test.ts`: **6 `runTask`
23
+ * invocations across 6 ticks** for one entry with `intervalMs` 86,400,000 at the
24
+ * 60,000 ms daemon period — a 1440× rate error against the declared interval, and the
25
+ * rate half of
26
+ * `.peaks/docs/diagnosis-2026-10-01-worktree-list-population.md` §9. The same
27
+ * test observes **1** once the write-back below runs.
28
+ *
29
+ * THE RULE (persist AFTER the run, from the record's `finishedAt`):
30
+ * 1. a run that reached a conclusion — exit code 0 or non-zero, not killed —
31
+ * advances `lastRunAt` to `record.finishedAt`, so the entry goes quiet for
32
+ * exactly its own `intervalMs` and not one ms longer;
33
+ * 2. a run carrying `killed: true` does NOT advance it, in EITHER entry point.
34
+ * Work cut off mid-flight is not a day's work, so the task stays due and is
35
+ * retried. What that costs is NOT uniform across platforms, and F3 of the
36
+ * review is the reason this paragraph is platform-shaped instead of global:
37
+ * - win32: the only fire shape that reaches `killed: true` here is the exec
38
+ * timeout (`cron-commands.ts:178-185`, spawnSync's `error.code ===
39
+ * 'ETIMEDOUT'` branch), and that fire BLOCKS its caller for the whole
40
+ * injected timeout — measured at 3,019 ms and 3,020 ms of block for an injected
41
+ * 3,000 ms timeout (`tests/unit/cli/commands/cron-exec-timeout.test.ts`, whose
42
+ * positive control brings the same wiring back in 67-71 ms when the child
43
+ * concludes), and the production value is `EXEC_TIMEOUT_MS = 300_000`
44
+ * (`cron-commands.ts:74`). The
45
+ * tick is a synchronous callback on one `setInterval`
46
+ * (`cron-scheduler-commands.ts:378`), so fires serialize and a permanently
47
+ * stuck entry costs at most 3,600,000 / 300,000 = **12 fires per hour**, not
48
+ * one per 60,000 ms tick. A child killed from OUTSIDE does not carry `killed`
49
+ * on this platform: the review measured a `taskkill /F`-terminated child
50
+ * returning `status 1` in 419 ms, and the same shape driven through `runTask`
51
+ * against `dist/` at repair time came back `exitCode 1` with NO `killed` key in
52
+ * 383 ms and 410 ms — which takes the CONCLUDED branch
53
+ * (`cron-commands.ts:193-199`) and is therefore STAMPED. Both writers now
54
+ * agree about that class (it is stamped by both), and neither pretends rule 2
55
+ * can see it on win32.
56
+ * - POSIX: an external signal death has no status and no timeout error, so it
57
+ * does hit `cron-commands.ts:200-206` and carry `killed: true`, and `runTask`
58
+ * returns as soon as the child dies. That class re-fires once per 60,000 ms
59
+ * tick — the deliberate price of not silencing unfinished work, and the shape
60
+ * this host cannot produce.
61
+ * Timestamping at `startedAt` was rejected (goal §alternatives): it would mark a
62
+ * killed run as done and silence it.
63
+ * 3. every entry the file holds survives the write. Parsed entries are re-written
64
+ * from a schedule that is RE-READ at write time, so a task an operator added
65
+ * while the daemon was busy is preserved field-for-field
66
+ * (`cron-last-run-at.test.ts`, "when an operator adds a task while the daemon is
67
+ * running one…"); and entries `toScheduleEntry`
68
+ * (`cron-commands-schedule.ts:129-150`) REJECTS — a hand-edited entry missing
69
+ * `name`, say — are carried through as the raw JSON they were written as,
70
+ * appended after the parsed ones. F5 of the review: before this they were
71
+ * silently DELETED by the daemon's first write, which is data loss on a
72
+ * long-lived process nobody is watching. An unparseable entry with the same `id`
73
+ * as a parsed one is the one thing still dropped, because two entries under one
74
+ * id would make the fold ambiguous.
75
+ *
76
+ * WINDOWS, NAMED (F4 + the lock that does not exist):
77
+ * - Inside this function the read→write sequence has no `await` and no yield point,
78
+ * so within one process the window is nil; it is cross-process only.
79
+ * - `peaks cron run` used to be the wide window: at `9badd1ac` it read the whole
80
+ * schedule (`cron-commands-actions.ts:143`), ran each target synchronously for up
81
+ * to `EXEC_TIMEOUT_MS` (300,000 ms) per task (:172), then rewrote the file from
82
+ * that PRE-RUN snapshot (:156) — which reverted any stamp the daemon had
83
+ * landed in between, back to `null`, i.e. permanently due, §2.24 re-opened until
84
+ * the next concluded run. It calls this function now, so its write is a write-time
85
+ * re-read like this one's; `cron-last-run-at.test.ts` ("…another writer stamps…")
86
+ * measures the revert case.
87
+ * - What is still open, stated rather than implied: there is NO lock on
88
+ * `schedule.json`, and `writeSchedule` is a plain `writeFileSync`
89
+ * (`cron-commands-schedule.ts:170-174`). Last-writer-wins on the VALUE across two
90
+ * processes that both land inside this function's own re-read→write tail remains,
91
+ * and a host failure mid-write still truncates the file. That needs the
92
+ * locking/atomic-write framework this slice deliberately does not take on.
93
+ * - One write per BATCH, not per record (F6, not fixed here): `runTask` throws for fs
94
+ * failure inside `appendHistory` (`cron-commands-schedule.ts:176-188` does a
95
+ * read+write of the whole history per record), so a throw at task k loses the
96
+ * stamps for tasks 1..k-1 and the tick's catch turns it into one stderr line; those
97
+ * already-concluded tasks are due again next tick. Reachability is documented at
98
+ * `skills/peaks-code/references/cron-scheduler-deployment.md:98-101` (a read-only
99
+ * `.peaks/cron`).
100
+ */
101
+ import { existsSync, readFileSync } from 'node:fs';
102
+ import { readSchedule, schedulePath, SCHEDULE_VERSION, toScheduleEntry, writeSchedule } from './cron-commands-schedule.js';
103
+ /**
104
+ * Fold a batch of finished runs into `schedule.json`.
105
+ *
106
+ * `records` is what `runTask` returned for the tasks this batch ran; a record whose
107
+ * task id is no longer in the schedule (an operator removed the entry mid-flight) is
108
+ * dropped rather than resurrected. When nothing is left to change — every run
109
+ * killed, or the whole batch stale — the file is not rewritten.
110
+ */
111
+ export function persistLastRunAt(projectRoot, records) {
112
+ const concludedAt = new Map();
113
+ for (const record of records) {
114
+ if (record.killed === true)
115
+ continue;
116
+ concludedAt.set(record.taskId, record.finishedAt);
117
+ }
118
+ if (concludedAt.size === 0)
119
+ return;
120
+ const current = readSchedule(projectRoot);
121
+ const entries = [];
122
+ let stamped = 0;
123
+ for (const entry of current.entries) {
124
+ const finishedAt = concludedAt.get(entry.id);
125
+ if (finishedAt === undefined) {
126
+ entries.push(entry);
127
+ continue;
128
+ }
129
+ entries.push({ ...entry, lastRunAt: finishedAt });
130
+ stamped += 1;
131
+ }
132
+ if (stamped === 0)
133
+ return;
134
+ writeSchedule(projectRoot, {
135
+ version: SCHEDULE_VERSION,
136
+ entries: [...entries, ...unrepresentedEntries(projectRoot, current.entries)]
137
+ });
138
+ }
139
+ /**
140
+ * The raw JSON of every entry on disk that `toScheduleEntry` refused, so this write
141
+ * preserves what it cannot represent (F5) instead of deleting it.
142
+ *
143
+ * Two reads of one file, deliberately: `readSchedule` above is the validating one
144
+ * (it owns the version check and the throw on malformed JSON), and this one is the
145
+ * byte-preserving one. They are not a snapshot of each other — a file clobbered
146
+ * between them throws here and the write does not happen, which is the safe answer
147
+ * for a schedule the reader can no longer parse.
148
+ */
149
+ function unrepresentedEntries(projectRoot, parsed) {
150
+ const path = schedulePath(projectRoot);
151
+ if (!existsSync(path))
152
+ return [];
153
+ const raw = JSON.parse(readFileSync(path, 'utf8'));
154
+ // `Array.isArray` narrows `unknown` to `any[]`; this assertion is what makes the
155
+ // elements `unknown` again, so nothing below inherits an untyped value.
156
+ const listed = Array.isArray(raw.entries) ? raw.entries : [];
157
+ const ids = new Set(parsed.map((entry) => entry.id));
158
+ return listed.filter((entry) => typeof entry === 'object' &&
159
+ entry !== null &&
160
+ toScheduleEntry(entry) === null &&
161
+ !sharesIdWithAParsedEntry(entry, ids));
162
+ }
163
+ /**
164
+ * An unparseable entry that carries the `id` of a parseable one is the single case
165
+ * this write still drops: two entries under one id would make the fold above
166
+ * ambiguous about which one it just stamped.
167
+ */
168
+ function sharesIdWithAParsedEntry(entry, ids) {
169
+ const id = entry.id;
170
+ return typeof id === 'string' && ids.has(id);
171
+ }
@@ -21,7 +21,13 @@ function parseSince(raw) {
21
21
  if (!Number.isFinite(value) || value < 0)
22
22
  return { ok: false, error: `--since must be a non-negative integer (got ${raw})` };
23
23
  const unit = (match[2] ?? 'h').toLowerCase();
24
- const multiplier = unit === 'd' ? MS_PER_DAY : unit === 'h' ? MS_PER_HOUR : unit === 'm' ? MS_PER_MINUTE : MS_PER_SECOND;
24
+ const multiplier = unit === 'd'
25
+ ? MS_PER_DAY
26
+ : unit === 'h'
27
+ ? MS_PER_HOUR
28
+ : unit === 'm'
29
+ ? MS_PER_MINUTE
30
+ : MS_PER_SECOND;
25
31
  return { ok: true, ms: Math.min(WINDOW_CAP_MS, value * multiplier) };
26
32
  }
27
33
  function readSlices(projectRoot, sessionId) {
@@ -34,7 +40,9 @@ function readSlices(projectRoot, sessionId) {
34
40
  if (!existsSync(path))
35
41
  return 0;
36
42
  try {
37
- return readFileSync(path, 'utf8').split('\n').filter((line) => line.trim().length > 0).length;
43
+ return readFileSync(path, 'utf8')
44
+ .split('\n')
45
+ .filter((line) => line.trim().length > 0).length;
38
46
  }
39
47
  catch {
40
48
  return 0;
@@ -55,7 +63,13 @@ function boundaryLabel(raw) {
55
63
  return { key: 'valid', message: 'unparseable' };
56
64
  const value = Number(match[1]);
57
65
  const unit = (match[2] ?? 'h').toLowerCase();
58
- const multiplier = unit === 'd' ? MS_PER_DAY : unit === 'h' ? MS_PER_HOUR : unit === 'm' ? MS_PER_MINUTE : MS_PER_SECOND;
66
+ const multiplier = unit === 'd'
67
+ ? MS_PER_DAY
68
+ : unit === 'h'
69
+ ? MS_PER_HOUR
70
+ : unit === 'm'
71
+ ? MS_PER_MINUTE
72
+ : MS_PER_SECOND;
59
73
  if (value * multiplier > WINDOW_CAP_MS) {
60
74
  return { key: 'cap', message: 'since>24h is capped to the 24h window' };
61
75
  }
@@ -79,14 +93,19 @@ export function registerDashboardLongRunCommand(dashboard, io) {
79
93
  process.exitCode = 1;
80
94
  return;
81
95
  }
82
- const sid = options.sessionId ?? (await (async () => {
83
- const { getSessionIdCanonical } = await import('../../services/session/session-manager.js');
84
- return getSessionIdCanonical(projectRoot);
85
- })());
96
+ const sid = options.sessionId ??
97
+ (await (async () => {
98
+ const { getSessionIdCanonical } = await import('../../services/session/session-manager.js');
99
+ return getSessionIdCanonical(projectRoot);
100
+ })());
86
101
  if (!sid) {
87
- io.stdout((options.json === true
88
- ? JSON.stringify({ ok: false, code: 'NO_ACTIVE_SESSION', message: 'no --session-id and no canonical binding' })
89
- : 'NO_ACTIVE_SESSION: no --session-id and no canonical binding\n'));
102
+ io.stdout(options.json === true
103
+ ? JSON.stringify({
104
+ ok: false,
105
+ code: 'NO_ACTIVE_SESSION',
106
+ message: 'no --session-id and no canonical binding'
107
+ })
108
+ : 'NO_ACTIVE_SESSION: no --session-id and no canonical binding\n');
90
109
  process.exitCode = 1;
91
110
  return;
92
111
  }
@@ -96,7 +115,9 @@ export function registerDashboardLongRunCommand(dashboard, io) {
96
115
  const sliceCount = readSlices(projectRoot, sid);
97
116
  const checkpointAgeMs = readLastCheckpointAgeMs(snapshot);
98
117
  const checkpointFrequency = snapshot.checkpoints > 0 && snapshot.enteredAt
99
- ? Math.max(1, Math.round((Date.now() - Date.parse(snapshot.enteredAt)) / snapshot.checkpoints / MS_PER_MINUTE))
118
+ ? Math.max(1, Math.round((Date.now() - Date.parse(snapshot.enteredAt)) /
119
+ snapshot.checkpoints /
120
+ MS_PER_MINUTE))
100
121
  : null;
101
122
  const indicators = {
102
123
  dispatchCount: sliceCount,
@@ -113,16 +134,26 @@ export function registerDashboardLongRunCommand(dashboard, io) {
113
134
  sinceMs: parsed.ms,
114
135
  sinceCapped: parsed.ms === WINDOW_CAP_MS && boundary.key === 'cap',
115
136
  boundary: boundary.key,
116
- snapshot: { state: snapshot.state, enteredAt: snapshot.enteredAt, lastCheckpointAt: snapshot.lastCheckpointAt },
137
+ snapshot: {
138
+ state: snapshot.state,
139
+ enteredAt: snapshot.enteredAt,
140
+ lastCheckpointAt: snapshot.lastCheckpointAt
141
+ },
117
142
  indicators,
118
143
  checkpointAgeMs
119
144
  }
120
145
  };
121
- io.stdout((options.json === true ? JSON.stringify(payload) : JSON.stringify(payload.data, null, 2)) + '\n');
146
+ io.stdout((options.json === true
147
+ ? JSON.stringify(payload)
148
+ : JSON.stringify(payload.data, null, 2)) + '\n');
122
149
  }
123
150
  catch (error) {
124
151
  io.stdout((options.json === true
125
- ? JSON.stringify({ ok: false, code: 'LONG_RUN_READ_FAILED', message: getErrorMessage(error) })
152
+ ? JSON.stringify({
153
+ ok: false,
154
+ code: 'LONG_RUN_READ_FAILED',
155
+ message: getErrorMessage(error)
156
+ })
126
157
  : `LONG_RUN_READ_FAILED: ${getErrorMessage(error)}\n`) + '\n');
127
158
  process.exitCode = 1;
128
159
  }
@@ -28,9 +28,13 @@ export function registerDashboardSummaryCommand(dashboard, io) {
28
28
  sid = await getSessionIdCanonical(projectRoot);
29
29
  }
30
30
  if (!sid) {
31
- io.stdout((options.json === true
32
- ? JSON.stringify({ ok: false, code: 'NO_ACTIVE_SESSION', message: 'no --session-id and no canonical binding' })
33
- : 'NO_ACTIVE_SESSION: no --session-id and no canonical binding\n'));
31
+ io.stdout(options.json === true
32
+ ? JSON.stringify({
33
+ ok: false,
34
+ code: 'NO_ACTIVE_SESSION',
35
+ message: 'no --session-id and no canonical binding'
36
+ })
37
+ : 'NO_ACTIVE_SESSION: no --session-id and no canonical binding\n');
34
38
  process.exitCode = 1;
35
39
  return;
36
40
  }
@@ -46,11 +50,17 @@ export function registerDashboardSummaryCommand(dashboard, io) {
46
50
  metrics
47
51
  }
48
52
  };
49
- io.stdout((options.json === true ? JSON.stringify(payload) : JSON.stringify(payload.data, null, 2)) + '\n');
53
+ io.stdout((options.json === true
54
+ ? JSON.stringify(payload)
55
+ : JSON.stringify(payload.data, null, 2)) + '\n');
50
56
  }
51
57
  catch (error) {
52
58
  io.stdout((options.json === true
53
- ? JSON.stringify({ ok: false, code: 'SUMMARY_READ_FAILED', message: getErrorMessage(error) })
59
+ ? JSON.stringify({
60
+ ok: false,
61
+ code: 'SUMMARY_READ_FAILED',
62
+ message: getErrorMessage(error)
63
+ })
54
64
  : `SUMMARY_READ_FAILED: ${getErrorMessage(error)}\n`) + '\n');
55
65
  process.exitCode = 1;
56
66
  }
@@ -42,7 +42,7 @@ import { buildDispatchSystemPrompt } from '../../services/context/build-dispatch
42
42
  import { readSessionCapsule } from '../../services/dispatch/session-capsule.js';
43
43
  import { computeUiLibraryDispatchBlock } from '../../services/standards/ui-library-dispatch-block.js';
44
44
  import { readFreshContextBlock } from '../../services/fresh-context/fresh-context-block.js';
45
- import { createDispatchProvenanceToken, DISPATCH_PROVENANCE_ENV, writeDispatchProvenance, } from '../../services/worktree/dispatch-provenance.js';
45
+ import { createDispatchProvenanceToken, DISPATCH_PROVENANCE_ENV, writeDispatchProvenance } from '../../services/worktree/dispatch-provenance.js';
46
46
  import { spawnWorktreeLease, spawnContainerLease } from '../../services/dispatch/isolation-lease.js';
47
47
  import { runGitLsFiles } from '../../services/dispatch/dispatch-sub-agent.js';
48
48
  export function registerDispatchCommand(parent, io) {
@@ -123,9 +123,11 @@ export function registerDispatchCommand(parent, io) {
123
123
  project: projectRoot,
124
124
  json: asJson,
125
125
  ...(options.noThrottle === true ? { noThrottle: true } : {}),
126
- ...(typeof maxConcurrent === 'number' && Number.isInteger(maxConcurrent) && maxConcurrent > 0
126
+ ...(typeof maxConcurrent === 'number' &&
127
+ Number.isInteger(maxConcurrent) &&
128
+ maxConcurrent > 0
127
129
  ? { maxConcurrent }
128
- : {}),
130
+ : {})
129
131
  });
130
132
  // The handler's `ok` is the launch outcome (a vendor CLI that is not
131
133
  // installed is a failure, not a footnote) — the caller must not
@@ -177,7 +179,12 @@ export function registerDispatchCommand(parent, io) {
177
179
  // so `peaks sub-agent dispatch agent --help` continues to
178
180
  // exit 0 with the help text — that is intentional, not a bug.
179
181
  if (role === 'agent') {
180
- printResult(io, fail('sub-agent.dispatch', 'ROLE_REMOVED', 'The agent role was removed in Slice 3', { role, reason: 'role-removed-in-slice-3', toolCall: null, dispatchRecordPath: null }, []), asJson);
182
+ printResult(io, fail('sub-agent.dispatch', 'ROLE_REMOVED', 'The agent role was removed in Slice 3', {
183
+ role,
184
+ reason: 'role-removed-in-slice-3',
185
+ toolCall: null,
186
+ dispatchRecordPath: null
187
+ }, []), asJson);
181
188
  process.exitCode = 1;
182
189
  return;
183
190
  }
@@ -234,10 +241,10 @@ export function registerDispatchCommand(parent, io) {
234
241
  // of the `unknown-sid` fallback. The unknown-sid branch is preserved
235
242
  // as the last-resort so callers without a bound session (e.g. an
236
243
  // ad-hoc dispatch in a fresh tree) still get a deterministic path.
237
- const sid = options.sessionId
238
- ?? process.env.PEAKS_SESSION_ID
239
- ?? getCurrentSessionId(projectRoot)
240
- ?? 'unknown-sid';
244
+ const sid = options.sessionId ??
245
+ process.env.PEAKS_SESSION_ID ??
246
+ getCurrentSessionId(projectRoot) ??
247
+ 'unknown-sid';
241
248
  const rid = options.requestId ?? 'unknown-rid';
242
249
  const batchId = options.batchId ?? randomUUID();
243
250
  // Slice 2026-07-29-worktree-l2-extended Part 2.C: --isolation worktree
@@ -251,12 +258,16 @@ export function registerDispatchCommand(parent, io) {
251
258
  let worktreePath = null;
252
259
  let worktreeBranch = null;
253
260
  if (typeof options.isolation === 'string' && options.isolation.length > 0) {
254
- if (options.isolation !== 'worktree' && options.isolation !== 'container' && options.isolation !== 'vm') {
261
+ if (options.isolation !== 'worktree' &&
262
+ options.isolation !== 'container' &&
263
+ options.isolation !== 'vm') {
255
264
  printResult(io, fail('sub-agent.dispatch', 'INVALID_ISOLATION', `--isolation only accepts "worktree" | "container" | "vm" (got "${options.isolation}")`, {
256
265
  role,
257
266
  toolCall: null,
258
267
  dispatchRecordPath: null
259
- }, ['Drop --isolation or pass --isolation worktree / --isolation container / --isolation vm.']), asJson);
268
+ }, [
269
+ 'Drop --isolation or pass --isolation worktree / --isolation container / --isolation vm.'
270
+ ]), asJson);
260
271
  process.exitCode = 1;
261
272
  return;
262
273
  }
@@ -367,7 +378,8 @@ export function registerDispatchCommand(parent, io) {
367
378
  try {
368
379
  projectPrefs = loadPreferences(projectRoot);
369
380
  }
370
- catch { // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
381
+ catch {
382
+ // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
371
383
  // Keep default preferences.
372
384
  }
373
385
  const ide = detectInstalledIde(projectRoot) ?? 'claude-code';
@@ -479,7 +491,9 @@ export function registerDispatchCommand(parent, io) {
479
491
  ...(freshContextBlock !== undefined ? { freshContextBlock } : {}),
480
492
  // §4: advisory session capsule pointer + precedence line.
481
493
  ...(capsuleRef !== null
482
- ? { capsule: { batchId: capsuleRef.batchId, key: capsuleRef.key, bytes: capsuleRef.bytes } }
494
+ ? {
495
+ capsule: { batchId: capsuleRef.batchId, key: capsuleRef.key, bytes: capsuleRef.bytes }
496
+ }
483
497
  : {})
484
498
  });
485
499
  // Part 2.C: when --isolation worktree, prepend an isolation envelope
@@ -493,7 +507,15 @@ export function registerDispatchCommand(parent, io) {
493
507
  `leaseId: ${leaseId}\n` +
494
508
  `worktreePath: ${worktreePath}\n` +
495
509
  `branch: ${worktreeBranch}\n` +
496
- `You MAY ` + '`git worktree add` ' + `and ` + '`git worktree remove` ' + `against this lease without a separate ` + '`peaks worktree auth grant` ' + `— the PreToolUse gate reads the lease file. Run ` + '`peaks worktree release --lease-id ${leaseId}` ' + `when done.\n`
510
+ `You MAY ` +
511
+ '`git worktree add` ' +
512
+ `and ` +
513
+ '`git worktree remove` ' +
514
+ `against this lease without a separate ` +
515
+ '`peaks worktree auth grant` ' +
516
+ `— the PreToolUse gate reads the lease file. Run ` +
517
+ '`peaks worktree release --lease-id ${leaseId}` ' +
518
+ `when done.\n`
497
519
  : '';
498
520
  // F5 follow-up: anti-fake-green gate. When `--must-ls-files <glob>`
499
521
  // is supplied, run `git ls-files <glob>` upfront, surface the
@@ -511,13 +533,14 @@ export function registerDispatchCommand(parent, io) {
511
533
  const files = runGitLsFiles(projectRoot, glob);
512
534
  const exists = files.length > 0;
513
535
  mustLsFilesVerification = { path: glob, exists, files };
514
- mustLsFilesBlock = `\n## must_ls_files enforcement (F5 anti-fake-green)\n` +
515
- `glob: ${glob}\n` +
516
- `verification: ${exists ? `EXISTS (${files.length} file${files.length === 1 ? '' : 's'} found)` : 'MISSING (no files matched the glob)'}\n` +
517
- (exists ? `first match: ${files[0] ?? ''}\n` : '') +
518
- `BEFORE any claim that work is "completed" or "PASS", you MUST run \`git ls-files ${glob}\` from the project root and ` +
519
- `confirm the file exists. Anti-fake-green rule (sediment 2026-08-11-rid-001-redo-fake-green-recovery-closure §Lesson 1): ` +
520
- `if the file does not exist, your verdict MUST be \`status: "blocked"\` with reason "must_ls_files_failed". Do NOT silently skip this step.\n`;
536
+ mustLsFilesBlock =
537
+ `\n## must_ls_files enforcement (F5 anti-fake-green)\n` +
538
+ `glob: ${glob}\n` +
539
+ `verification: ${exists ? `EXISTS (${files.length} file${files.length === 1 ? '' : 's'} found)` : 'MISSING (no files matched the glob)'}\n` +
540
+ (exists ? `first match: ${files[0] ?? ''}\n` : '') +
541
+ `BEFORE any claim that work is "completed" or "PASS", you MUST run \`git ls-files ${glob}\` from the project root and ` +
542
+ `confirm the file exists. Anti-fake-green rule (sediment 2026-08-11-rid-001-redo-fake-green-recovery-closure §Lesson 1): ` +
543
+ `if the file does not exist, your verdict MUST be \`status: "blocked"\` with reason "must_ls_files_failed". Do NOT silently skip this step.\n`;
521
544
  }
522
545
  const effectivePrompt = `${memoryAugmentedBody}${isolationBlock}${mustLsFilesBlock}`;
523
546
  // Slice F2 (rid-f2-ac1-wiring): deprecated reviewer slots are accepted
@@ -525,7 +548,12 @@ export function registerDispatchCommand(parent, io) {
525
548
  const warnings = [...decision.warnings, ...deprecatedReviewerWarnings(role)];
526
549
  let toolCall;
527
550
  try {
528
- toolCall = adapter.subAgentDispatcher.buildToolCall({ role, prompt: effectivePrompt, requestId: rid, sessionId: sid });
551
+ toolCall = adapter.subAgentDispatcher.buildToolCall({
552
+ role,
553
+ prompt: effectivePrompt,
554
+ requestId: rid,
555
+ sessionId: sid
556
+ });
529
557
  // Part 2.C: stamp the toolCall with `isolation` + a sub-agent
530
558
  // env block so adapters that surface it (Claude Code's Task
531
559
  // tool) propagate the lease id to the spawned process. The
@@ -536,7 +564,7 @@ export function registerDispatchCommand(parent, io) {
536
564
  const provenanceToken = createDispatchProvenanceToken({
537
565
  sessionId: sid,
538
566
  requestId: rid,
539
- leaseId,
567
+ leaseId
540
568
  });
541
569
  if (isolationMode === 'worktree') {
542
570
  writeDispatchProvenance({
@@ -548,8 +576,8 @@ export function registerDispatchCommand(parent, io) {
548
576
  requestId: rid,
549
577
  leaseId,
550
578
  isolation: 'worktree',
551
- issuedAt: new Date().toISOString(),
552
- },
579
+ issuedAt: new Date().toISOString()
580
+ }
553
581
  });
554
582
  }
555
583
  // Slice 2026-08-01-subagent-merge-and-e2e (Task 8): stamp the
@@ -562,7 +590,7 @@ export function registerDispatchCommand(parent, io) {
562
590
  const profile = playwrightProfilePaths({
563
591
  projectRoot,
564
592
  sessionId: sid,
565
- dispatchId: rid,
593
+ dispatchId: rid
566
594
  });
567
595
  toolCall = {
568
596
  ...toolCall,
@@ -574,7 +602,9 @@ export function registerDispatchCommand(parent, io) {
574
602
  PEAKS_WORKTREE_LEASE_ID: leaseId,
575
603
  PEAKS_PLAYWRIGHT_USER_DATA_DIR: profile.userDataDir,
576
604
  PEAKS_PLAYWRIGHT_PROFILE_NAME: profile.profileName,
577
- ...(isolationMode === 'worktree' ? { [DISPATCH_PROVENANCE_ENV]: provenanceToken } : {}),
605
+ ...(isolationMode === 'worktree'
606
+ ? { [DISPATCH_PROVENANCE_ENV]: provenanceToken }
607
+ : {})
578
608
  }
579
609
  }
580
610
  };
@@ -588,7 +618,9 @@ export function registerDispatchCommand(parent, io) {
588
618
  // roles like 'qa-business' would otherwise drop the event
589
619
  // through schema rejection).
590
620
  const KNOWN_ROLES = new Set(OBSERVABILITY_SUBAGENT_ROLES);
591
- const knownRole = KNOWN_ROLES.has(role) ? role : null;
621
+ const knownRole = KNOWN_ROLES.has(role)
622
+ ? role
623
+ : null;
592
624
  emitObservabilityEvent({
593
625
  schemaVersion: 1,
594
626
  ts: new Date().toISOString(),
@@ -604,9 +636,7 @@ export function registerDispatchCommand(parent, io) {
604
636
  }
605
637
  catch (error) {
606
638
  if (error instanceof SubAgentNotSupportedError) {
607
- printResult(io, fail('sub-agent.dispatch', 'IDE_NOT_SUPPORTED', error.message, { role, toolCall: null, dispatchRecordPath: null }, [
608
- 'Switch IDE or pick a role the current IDE supports.'
609
- ]), asJson);
639
+ printResult(io, fail('sub-agent.dispatch', 'IDE_NOT_SUPPORTED', error.message, { role, toolCall: null, dispatchRecordPath: null }, ['Switch IDE or pick a role the current IDE supports.']), asJson);
610
640
  process.exitCode = 1;
611
641
  return;
612
642
  }
@@ -697,7 +727,9 @@ export function registerDispatchCommand(parent, io) {
697
727
  });
698
728
  const nextActions = [
699
729
  'Tool call is dry-run; LLM must execute the tool to actually dispatch the sub-agent.',
700
- 'After dispatching, the sub-agent should call `peaks sub-agent heartbeat --record ' + dispatchRecordPath + '` periodically.'
730
+ 'After dispatching, the sub-agent should call `peaks sub-agent heartbeat --record ' +
731
+ dispatchRecordPath +
732
+ '` periodically.'
701
733
  ];
702
734
  if (counter.warning) {
703
735
  nextActions.push(`Batch is over the RL-1 limit (${BATCH_LIMIT}); consider splitting into multiple batches.`);
@@ -771,7 +803,8 @@ export function registerDispatchCommand(parent, io) {
771
803
  }
772
804
  });
773
805
  }
774
- catch { // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
806
+ catch {
807
+ // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
775
808
  /* best-effort */
776
809
  }
777
810
  }