peaks-loop 4.0.53 → 4.1.0

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 (1053) hide show
  1. package/CHANGELOG.md +85 -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 +85 -38
  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 +175 -11
  51. package/dist/cli/commands/codegraph-status-command.js +6 -2
  52. package/dist/cli/commands/compact-command.js +52 -26
  53. package/dist/cli/commands/complexity-commands.js +6 -7
  54. package/dist/cli/commands/config-commands.d.ts +1 -1
  55. package/dist/cli/commands/config-commands.js +33 -9
  56. package/dist/cli/commands/container-commands.js +39 -15
  57. package/dist/cli/commands/context-commands.d.ts +1 -1
  58. package/dist/cli/commands/context-commands.js +40 -13
  59. package/dist/cli/commands/core/artifacts-command.js +11 -3
  60. package/dist/cli/commands/core/binding-commands.js +9 -6
  61. package/dist/cli/commands/core/doctor-command.js +7 -4
  62. package/dist/cli/commands/core/memory-command.js +81 -22
  63. package/dist/cli/commands/core/proxy-command.js +3 -1
  64. package/dist/cli/commands/core/session-command.js +16 -8
  65. package/dist/cli/commands/core/skill-command.js +31 -16
  66. package/dist/cli/commands/core/standards-command.js +55 -13
  67. package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
  68. package/dist/cli/commands/cron-commands-actions.js +128 -0
  69. package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
  70. package/dist/cli/commands/cron-commands-schedule.js +151 -0
  71. package/dist/cli/commands/cron-commands.d.ts +35 -32
  72. package/dist/cli/commands/cron-commands.js +167 -211
  73. package/dist/cli/commands/cron-scheduler-commands.js +40 -20
  74. package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
  75. package/dist/cli/commands/cron-scheduler-persist.js +171 -0
  76. package/dist/cli/commands/dashboard-long-run.js +45 -14
  77. package/dist/cli/commands/dashboard-summary.js +15 -5
  78. package/dist/cli/commands/dispatch-commands.js +69 -34
  79. package/dist/cli/commands/dispatch-from-dag.js +9 -10
  80. package/dist/cli/commands/doc-commands.js +8 -9
  81. package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
  82. package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
  83. package/dist/cli/commands/e2e-verify-env.js +19 -0
  84. package/dist/cli/commands/e2e-verify.d.ts +3 -14
  85. package/dist/cli/commands/e2e-verify.js +49 -29
  86. package/dist/cli/commands/ecc-commands.d.ts +1 -1
  87. package/dist/cli/commands/ecc-commands.js +8 -17
  88. package/dist/cli/commands/evidence-commands.js +10 -6
  89. package/dist/cli/commands/evolution-commands.d.ts +2 -2
  90. package/dist/cli/commands/evolution-commands.js +109 -115
  91. package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
  92. package/dist/cli/commands/feedback-commands-helpers.js +33 -0
  93. package/dist/cli/commands/feedback-commands.js +15 -38
  94. package/dist/cli/commands/final-review-commands.d.ts +1 -1
  95. package/dist/cli/commands/final-review-commands.js +24 -22
  96. package/dist/cli/commands/fixture-commands.d.ts +1 -1
  97. package/dist/cli/commands/fixture-commands.js +17 -6
  98. package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
  99. package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
  100. package/dist/cli/commands/fork-commands.js +19 -51
  101. package/dist/cli/commands/fresh-context-commands.js +3 -1
  102. package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
  103. package/dist/cli/commands/gate-commands-enforce.js +210 -0
  104. package/dist/cli/commands/gate-commands.d.ts +1 -1
  105. package/dist/cli/commands/gate-commands.js +85 -205
  106. package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
  107. package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
  108. package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
  109. package/dist/cli/commands/heartbeat-commands-action.js +192 -0
  110. package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
  111. package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
  112. package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
  113. package/dist/cli/commands/heartbeat-commands.js +19 -198
  114. package/dist/cli/commands/hook-handle.d.ts +1 -1
  115. package/dist/cli/commands/hook-handle.js +46 -13
  116. package/dist/cli/commands/hooks-commands.d.ts +1 -1
  117. package/dist/cli/commands/hooks-commands.js +18 -6
  118. package/dist/cli/commands/ide-commands.d.ts +1 -1
  119. package/dist/cli/commands/ide-commands.js +5 -3
  120. package/dist/cli/commands/impact-commands.js +8 -2
  121. package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
  122. package/dist/cli/commands/job-add-slice-command.js +151 -0
  123. package/dist/cli/commands/job-commands.d.ts +64 -0
  124. package/dist/cli/commands/job-commands.js +134 -63
  125. package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
  126. package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
  127. package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
  128. package/dist/cli/commands/lease-metrics-commands.js +21 -61
  129. package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
  130. package/dist/cli/commands/lease-stats-commands.js +9 -6
  131. package/dist/cli/commands/lint-commands.d.ts +9 -3
  132. package/dist/cli/commands/lint-commands.js +15 -8
  133. package/dist/cli/commands/log-commands.d.ts +1 -1
  134. package/dist/cli/commands/log-commands.js +8 -6
  135. package/dist/cli/commands/loop-commands.d.ts +1 -1
  136. package/dist/cli/commands/loop-commands.js +50 -50
  137. package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
  138. package/dist/cli/commands/loop-eval-commands.js +101 -30
  139. package/dist/cli/commands/memory-commands.js +21 -13
  140. package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
  141. package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
  142. package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
  143. package/dist/cli/commands/mut-commands-helpers.js +43 -0
  144. package/dist/cli/commands/mut-commands.js +16 -58
  145. package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
  146. package/dist/cli/commands/observability-commands-queries.js +113 -0
  147. package/dist/cli/commands/observability-commands.d.ts +1 -1
  148. package/dist/cli/commands/observability-commands.js +7 -92
  149. package/dist/cli/commands/openspec-commands.d.ts +1 -1
  150. package/dist/cli/commands/openspec-commands.js +20 -8
  151. package/dist/cli/commands/outer-cache-commands.js +18 -7
  152. package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
  153. package/dist/cli/commands/perf-audit-commands.js +12 -7
  154. package/dist/cli/commands/perf-commands.d.ts +1 -1
  155. package/dist/cli/commands/perf-commands.js +5 -5
  156. package/dist/cli/commands/playwright-commands.d.ts +1 -1
  157. package/dist/cli/commands/playwright-commands.js +20 -8
  158. package/dist/cli/commands/polyrepo-commands.js +21 -19
  159. package/dist/cli/commands/prd-blocks-commands.js +1 -3
  160. package/dist/cli/commands/prd-commands.d.ts +1 -1
  161. package/dist/cli/commands/prd-commands.js +21 -2
  162. package/dist/cli/commands/preferences-commands.js +13 -12
  163. package/dist/cli/commands/primer-command.js +5 -5
  164. package/dist/cli/commands/project-commands.d.ts +1 -1
  165. package/dist/cli/commands/project-commands.js +33 -9
  166. package/dist/cli/commands/qa-business-review-commands.js +16 -12
  167. package/dist/cli/commands/qa-commands.d.ts +1 -1
  168. package/dist/cli/commands/qa-commands.js +3 -5
  169. package/dist/cli/commands/release-commands.d.ts +3 -1
  170. package/dist/cli/commands/release-commands.js +33 -22
  171. package/dist/cli/commands/request-commands.js +47 -30
  172. package/dist/cli/commands/request-format-helpers.js +1 -1
  173. package/dist/cli/commands/retrospective-commands.d.ts +18 -11
  174. package/dist/cli/commands/retrospective-commands.js +24 -173
  175. package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
  176. package/dist/cli/commands/retrospective-index-command.js +99 -0
  177. package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
  178. package/dist/cli/commands/retrospective-project-root.js +15 -0
  179. package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
  180. package/dist/cli/commands/retrospective-search-command.js +97 -0
  181. package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
  182. package/dist/cli/commands/retrospective-show-command.js +80 -0
  183. package/dist/cli/commands/reviewer-commands.d.ts +1 -1
  184. package/dist/cli/commands/role-commands.js +14 -9
  185. package/dist/cli/commands/runtime-commands.js +14 -7
  186. package/dist/cli/commands/sc-commands.d.ts +1 -1
  187. package/dist/cli/commands/sc-commands.js +39 -6
  188. package/dist/cli/commands/scan-commands.js +36 -13
  189. package/dist/cli/commands/security-audit-commands.d.ts +1 -1
  190. package/dist/cli/commands/security-audit-commands.js +12 -7
  191. package/dist/cli/commands/sediment-commands.d.ts +2 -2
  192. package/dist/cli/commands/sediment-commands.js +146 -139
  193. package/dist/cli/commands/session-24h-mode.js +15 -2
  194. package/dist/cli/commands/session-checkpoint-command.js +1 -1
  195. package/dist/cli/commands/session-migrate-skill-name.js +1 -1
  196. package/dist/cli/commands/shadcn-commands.d.ts +1 -1
  197. package/dist/cli/commands/shadcn-commands.js +3 -1
  198. package/dist/cli/commands/share-commands.js +38 -39
  199. package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
  200. package/dist/cli/commands/skill-conformance-commands.js +1 -1
  201. package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
  202. package/dist/cli/commands/skill-visibility.js +2 -2
  203. package/dist/cli/commands/slice-commands.d.ts +1 -1
  204. package/dist/cli/commands/slice-commands.js +36 -12
  205. package/dist/cli/commands/slice-integrate-commands.js +6 -7
  206. package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
  207. package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
  208. package/dist/cli/commands/slice-review-commands.js +16 -24
  209. package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
  210. package/dist/cli/commands/smoke-commands-add-path.js +39 -0
  211. package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
  212. package/dist/cli/commands/smoke-commands-define.js +97 -0
  213. package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
  214. package/dist/cli/commands/smoke-commands-run.js +119 -0
  215. package/dist/cli/commands/smoke-commands.d.ts +10 -1
  216. package/dist/cli/commands/smoke-commands.js +17 -179
  217. package/dist/cli/commands/sop-commands.d.ts +1 -1
  218. package/dist/cli/commands/sop-commands.js +38 -10
  219. package/dist/cli/commands/statusline-commands.d.ts +1 -1
  220. package/dist/cli/commands/statusline-commands.js +21 -10
  221. package/dist/cli/commands/sub-agent/detached.js +3 -3
  222. package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
  223. package/dist/cli/commands/sub-agent-shared.d.ts +23 -0
  224. package/dist/cli/commands/sub-agent-shared.js +40 -1
  225. package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
  226. package/dist/cli/commands/swarm-commands.d.ts +1 -1
  227. package/dist/cli/commands/swarm-commands.js +13 -6
  228. package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
  229. package/dist/cli/commands/tech-commands-helpers.js +24 -0
  230. package/dist/cli/commands/tech-commands.d.ts +2 -29
  231. package/dist/cli/commands/tech-commands.js +15 -28
  232. package/dist/cli/commands/test-commands.js +27 -7
  233. package/dist/cli/commands/upgrade-commands.d.ts +1 -1
  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 +6 -3
  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 +44 -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/enforcer-liveness.js +1 -1
  300. package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
  301. package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
  302. package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
  303. package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
  304. package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
  305. package/dist/services/audit/enforcers/lint-output-style.js +4 -2
  306. package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
  307. package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
  308. package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
  309. package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
  310. package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
  311. package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
  312. package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
  313. package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
  314. package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
  315. package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
  316. package/dist/services/audit/enforcers/lint-style.js +44 -11
  317. package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
  318. package/dist/services/audit/enforcers/login-gate.js +2 -6
  319. package/dist/services/audit/enforcers/mock-placement.js +2 -2
  320. package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
  321. package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
  322. package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
  323. package/dist/services/audit/enforcers/resume-detection.js +5 -4
  324. package/dist/services/audit/prose-ratio-calculator.js +1 -1
  325. package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
  326. package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
  327. package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
  328. package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
  329. package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
  330. package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
  331. package/dist/services/audit/red-line-catalog.js +26 -38
  332. package/dist/services/audit/red-lines-service.js +64 -49
  333. package/dist/services/audit/scanners/openspec-scanner.js +2 -2
  334. package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
  335. package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
  336. package/dist/services/audit/static-service.js +3 -3
  337. package/dist/services/audit-independent/index.d.ts +2 -2
  338. package/dist/services/audit-independent/index.js +2 -2
  339. package/dist/services/audit-independent/perf-audit-service.js +19 -8
  340. package/dist/services/audit-independent/security-audit-service.js +31 -16
  341. package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
  342. package/dist/services/best-practice/output-formatter.js +7 -1
  343. package/dist/services/capability-audit-service/cross-check.js +11 -5
  344. package/dist/services/capability-audit-service/runner.js +15 -7
  345. package/dist/services/capability-baseline/store.js +16 -4
  346. package/dist/services/capability-baseline/types.js +15 -3
  347. package/dist/services/capability-baseline/validator.js +43 -7
  348. package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
  349. package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
  350. package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
  351. package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
  352. package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
  353. package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
  354. package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
  355. package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
  356. package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
  357. package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
  358. package/dist/services/capability-guard-runner/diff.js +1 -5
  359. package/dist/services/changeset/changeset-check-service.js +1 -3
  360. package/dist/services/classify/classify-service.js +20 -8
  361. package/dist/services/classify/classify-types.js +22 -9
  362. package/dist/services/code/auto-compact-lifecycle.js +62 -39
  363. package/dist/services/code/auto-compact-modes.js +2 -2
  364. package/dist/services/code/auto-compact-orchestrator.js +14 -9
  365. package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
  366. package/dist/services/code/batch-heartbeat-poller.js +17 -1
  367. package/dist/services/code/compact-event-settle-types.d.ts +80 -0
  368. package/dist/services/code/compact-event-settle-types.js +20 -0
  369. package/dist/services/code/compact-event-settle.d.ts +3 -68
  370. package/dist/services/code/compact-event-settle.js +14 -10
  371. package/dist/services/code/dag-orchestrator.js +32 -26
  372. package/dist/services/code/job-shape-decision.js +3 -1
  373. package/dist/services/code/mode-gate-types.d.ts +57 -0
  374. package/dist/services/code/mode-gate-types.js +67 -0
  375. package/dist/services/code/mode-gate.d.ts +4 -58
  376. package/dist/services/code/mode-gate.js +24 -60
  377. package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
  378. package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
  379. package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
  380. package/dist/services/code/orchestrator-can-do-probes.js +77 -0
  381. package/dist/services/code/orchestrator-can-do.d.ts +11 -22
  382. package/dist/services/code/orchestrator-can-do.js +37 -137
  383. package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
  384. package/dist/services/code/post-compact-checkpoint.js +57 -0
  385. package/dist/services/code/post-compact-detector.js +16 -48
  386. package/dist/services/code/step-08-gate.d.ts +4 -3
  387. package/dist/services/code/step-08-gate.js +21 -9
  388. package/dist/services/code-review/ecc-bridge.js +23 -23
  389. package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
  390. package/dist/services/codegraph/codegraph-config-repair-writer.d.ts +44 -0
  391. package/dist/services/codegraph/codegraph-config-repair-writer.js +116 -14
  392. package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
  393. package/dist/services/codegraph/codegraph-exclude-repair.d.ts +23 -1
  394. package/dist/services/codegraph/codegraph-exclude-repair.js +7 -2
  395. package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
  396. package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
  397. package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
  398. package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
  399. package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
  400. package/dist/services/codegraph/codegraph-process-runner.js +12 -1
  401. package/dist/services/codegraph/codegraph-service.js +9 -1
  402. package/dist/services/compact/request-transition-hook.js +2 -1
  403. package/dist/services/compact/suggest-service.d.ts +3 -61
  404. package/dist/services/compact/suggest-service.js +9 -12
  405. package/dist/services/compact/suggest-types.d.ts +76 -0
  406. package/dist/services/compact/suggest-types.js +10 -0
  407. package/dist/services/compact-history/compact-history-service.js +2 -2
  408. package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
  409. package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
  410. package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
  411. package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
  412. package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
  413. package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
  414. package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
  415. package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
  416. package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
  417. package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
  418. package/dist/services/config/config-migration.js +2 -2
  419. package/dist/services/config/config-restore.js +1 -1
  420. package/dist/services/config/config-rollback.js +1 -1
  421. package/dist/services/config/config-safety.js +28 -10
  422. package/dist/services/config/config-service.js +114 -31
  423. package/dist/services/config/model-routing.js +5 -2
  424. package/dist/services/config/proxy-service.js +6 -1
  425. package/dist/services/config/workspace-state-service.js +17 -5
  426. package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
  427. package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
  428. package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
  429. package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
  430. package/dist/services/context/auto-compact-reader-input.js +8 -0
  431. package/dist/services/context/auto-compact-reader.d.ts +2 -24
  432. package/dist/services/context/auto-compact-reader.js +4 -1
  433. package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
  434. package/dist/services/context/auto-compact-thresholds.js +19 -0
  435. package/dist/services/context/auto-compact-types.d.ts +2 -46
  436. package/dist/services/context/auto-compact-types.js +1 -11
  437. package/dist/services/context/build-dispatch-system-prompt.js +2 -2
  438. package/dist/services/context/collector.js +8 -10
  439. package/dist/services/context/context-audit-hint.js +7 -5
  440. package/dist/services/context/context-audit-keys.d.ts +15 -0
  441. package/dist/services/context/context-audit-keys.js +77 -0
  442. package/dist/services/context/context-audit-limits.d.ts +20 -0
  443. package/dist/services/context/context-audit-limits.js +31 -0
  444. package/dist/services/context/context-audit-scan.d.ts +19 -0
  445. package/dist/services/context/context-audit-scan.js +246 -0
  446. package/dist/services/context/context-audit-types.d.ts +65 -0
  447. package/dist/services/context/context-audit-types.js +10 -0
  448. package/dist/services/context/context-audit.d.ts +13 -59
  449. package/dist/services/context/context-audit.js +38 -254
  450. package/dist/services/context/context-builder.js +4 -4
  451. package/dist/services/context/context-schema.d.ts +1 -1
  452. package/dist/services/context/context-schema.js +13 -13
  453. package/dist/services/context/doc-retriever.js +2 -2
  454. package/dist/services/context/harness-context-witness.js +43 -24
  455. package/dist/services/context/harness-window-config.js +27 -7
  456. package/dist/services/context/ide-detect.js +2 -1
  457. package/dist/services/context/index.d.ts +1 -1
  458. package/dist/services/context/memory-index-reader.js +3 -9
  459. package/dist/services/context/memory-preflight-config.js +3 -5
  460. package/dist/services/context/memory-preflight-service.d.ts +2 -20
  461. package/dist/services/context/memory-preflight-service.js +37 -68
  462. package/dist/services/context/memory-preflight-support.d.ts +48 -0
  463. package/dist/services/context/memory-preflight-support.js +56 -0
  464. package/dist/services/context/post-compact-reinjection.js +3 -3
  465. package/dist/services/context/renderer.js +7 -3
  466. package/dist/services/context/spillover-store.js +3 -1
  467. package/dist/services/context/summary-view.js +1 -1
  468. package/dist/services/context/threshold.js +2 -2
  469. package/dist/services/context/tokenizer.js +3 -3
  470. package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
  471. package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
  472. package/dist/services/crystallization/crystallization-service.d.ts +7 -7
  473. package/dist/services/crystallization/crystallization-service.js +56 -55
  474. package/dist/services/crystallization/crystallization-store.d.ts +2 -2
  475. package/dist/services/crystallization/crystallization-store.js +37 -20
  476. package/dist/services/crystallization/crystallization-types.d.ts +4 -56
  477. package/dist/services/crystallization/crystallization-types.js +31 -184
  478. package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
  479. package/dist/services/crystallization/evidence-brief-builder.js +32 -38
  480. package/dist/services/crystallization/index.d.ts +4 -4
  481. package/dist/services/crystallization/index.js +4 -4
  482. package/dist/services/dashboard/project-dashboard-service.js +7 -1
  483. package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
  484. package/dist/services/dispatch/await-batch-helpers.js +206 -0
  485. package/dist/services/dispatch/await-batch.d.ts +50 -7
  486. package/dist/services/dispatch/await-batch.js +97 -194
  487. package/dist/services/dispatch/batch-counter.js +2 -1
  488. package/dist/services/dispatch/conflict-replay.js +2 -2
  489. package/dist/services/dispatch/contract-store.js +5 -2
  490. package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
  491. package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
  492. package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
  493. package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
  494. package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
  495. package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
  496. package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
  497. package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
  498. package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
  499. package/dist/services/dispatch/dispatch-record-writer.js +54 -26
  500. package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
  501. package/dist/services/dispatch/e2e-fixtures.js +1 -1
  502. package/dist/services/dispatch/isolation-lease.js +39 -17
  503. package/dist/services/dispatch/merge-back-runner.js +51 -11
  504. package/dist/services/dispatch/service-shutdown.js +4 -1
  505. package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
  506. package/dist/services/dispatch/slice-dag-types.js +41 -0
  507. package/dist/services/dispatch/slice-dag.d.ts +3 -109
  508. package/dist/services/dispatch/slice-dag.js +13 -36
  509. package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
  510. package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
  511. package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
  512. package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
  513. package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
  514. package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
  515. package/dist/services/dispatch/test-tool-detection.js +12 -1
  516. package/dist/services/doc/doc-generator.js +19 -4
  517. package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
  518. package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
  519. package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
  520. package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
  521. package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
  522. package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
  523. package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
  524. package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
  525. package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
  526. package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
  527. package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
  528. package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
  529. package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
  530. package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
  531. package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
  532. package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
  533. package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
  534. package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
  535. package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
  536. package/dist/services/doctor/doctor-service/index.js +4 -2
  537. package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
  538. package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
  539. package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
  540. package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
  541. package/dist/services/doctor/doctor-service/probe-types.js +14 -0
  542. package/dist/services/doctor/doctor-service/types.d.ts +7 -197
  543. package/dist/services/doctor/index.d.ts +1 -1
  544. package/dist/services/doctor/index.js +1 -1
  545. package/dist/services/env/shell-probe.js +8 -2
  546. package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
  547. package/dist/services/evidence/evidence-body-builders.js +197 -0
  548. package/dist/services/evidence/evidence-generator.js +16 -189
  549. package/dist/services/evolution/evolution-constraints.d.ts +43 -0
  550. package/dist/services/evolution/evolution-constraints.js +54 -0
  551. package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
  552. package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
  553. package/dist/services/evolution/evolution-service.d.ts +6 -6
  554. package/dist/services/evolution/evolution-service.js +58 -58
  555. package/dist/services/evolution/evolution-store.d.ts +2 -2
  556. package/dist/services/evolution/evolution-store.js +37 -51
  557. package/dist/services/evolution/evolution-types.d.ts +2 -22
  558. package/dist/services/evolution/evolution-types.js +41 -101
  559. package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
  560. package/dist/services/evolution/independent-evaluator-runner.js +20 -22
  561. package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
  562. package/dist/services/evolution/regression-skeptic-runner.js +18 -18
  563. package/dist/services/feedback/feedback-promotion-service.js +48 -12
  564. package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
  565. package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
  566. package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
  567. package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
  568. package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
  569. package/dist/services/feedback/promotion-source-comments.js +61 -0
  570. package/dist/services/final-review/final-review-contract.d.ts +26 -0
  571. package/dist/services/final-review/final-review-contract.js +14 -0
  572. package/dist/services/final-review/final-review-delivery.d.ts +63 -0
  573. package/dist/services/final-review/final-review-delivery.js +124 -0
  574. package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
  575. package/dist/services/final-review/final-review-evidence-budget.js +218 -0
  576. package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
  577. package/dist/services/final-review/final-review-evidence-collect.js +230 -0
  578. package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
  579. package/dist/services/final-review/final-review-evidence-sources.js +139 -0
  580. package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
  581. package/dist/services/final-review/final-review-fifth-dim.js +20 -0
  582. package/dist/services/final-review/final-review-gates.d.ts +119 -0
  583. package/dist/services/final-review/final-review-gates.js +214 -0
  584. package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
  585. package/dist/services/final-review/final-review-output-budget.js +161 -0
  586. package/dist/services/final-review/final-review-prompt.d.ts +35 -0
  587. package/dist/services/final-review/final-review-prompt.js +112 -0
  588. package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
  589. package/dist/services/final-review/final-review-reviewer.js +95 -0
  590. package/dist/services/final-review/final-review-runner.d.ts +3 -0
  591. package/dist/services/final-review/final-review-runner.js +158 -0
  592. package/dist/services/final-review/final-review-service.d.ts +119 -373
  593. package/dist/services/final-review/final-review-service.js +48 -1380
  594. package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
  595. package/dist/services/final-review/final-review-verdicts.js +91 -0
  596. package/dist/services/final-review/index.d.ts +3 -3
  597. package/dist/services/final-review/index.js +2 -2
  598. package/dist/services/final-review/pre-post-diff.js +32 -29
  599. package/dist/services/fixture/fixture-capture-service.js +14 -6
  600. package/dist/services/fresh-context/trigger-scan.js +13 -2
  601. package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
  602. package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
  603. package/dist/services/hooks/pre-tool-code-gate.js +2 -2
  604. package/dist/services/hooks/presence-marker-detector.js +12 -2
  605. package/dist/services/hooks/worktree-authorization-gate.js +21 -7
  606. package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
  607. package/dist/services/ide/adapters/codex-adapter.js +3 -5
  608. package/dist/services/ide/adapters/cursor-adapter.js +3 -5
  609. package/dist/services/ide/adapters/hermes-adapter.js +2 -4
  610. package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
  611. package/dist/services/ide/adapters/qoder-adapter.js +2 -4
  612. package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
  613. package/dist/services/ide/adapters/trae-adapter.js +3 -5
  614. package/dist/services/ide/adapters/zcode-adapter.js +8 -7
  615. package/dist/services/ide/current-model-detector.js +2 -1
  616. package/dist/services/ide/ide-compact-types.d.ts +153 -0
  617. package/dist/services/ide/ide-compact-types.js +1 -0
  618. package/dist/services/ide/ide-registry.js +1 -1
  619. package/dist/services/ide/ide-types.d.ts +7 -145
  620. package/dist/services/ide/resource-profile.js +1 -1
  621. package/dist/services/ide/shared/atomic-json.js +2 -1
  622. package/dist/services/impact/impact-scan-service.js +12 -5
  623. package/dist/services/job/job-commit-verification.d.ts +73 -0
  624. package/dist/services/job/job-commit-verification.js +72 -0
  625. package/dist/services/job/job-orchestrator.d.ts +42 -0
  626. package/dist/services/job/job-orchestrator.js +110 -10
  627. package/dist/services/job/job-progress-store.d.ts +75 -5
  628. package/dist/services/job/job-progress-store.js +83 -6
  629. package/dist/services/job/job-rotation.d.ts +1 -1
  630. package/dist/services/job/job-rotation.js +5 -1
  631. package/dist/services/job/job-state-store.js +2 -2
  632. package/dist/services/job/job-types.js +49 -20
  633. package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
  634. package/dist/services/job/subagent-job-wrapper.js +5 -1
  635. package/dist/services/job-snapshot/snapshot.js +2 -2
  636. package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
  637. package/dist/services/legacy/legacy-detector.js +51 -5
  638. package/dist/services/lint/detect-eslint.js +10 -4
  639. package/dist/services/lint/detect-ocr-18.js +11 -3
  640. package/dist/services/lint/eslint-runner-support.d.ts +22 -0
  641. package/dist/services/lint/eslint-runner-support.js +185 -0
  642. package/dist/services/lint/eslint-runner-types.d.ts +69 -0
  643. package/dist/services/lint/eslint-runner-types.js +11 -0
  644. package/dist/services/lint/eslint-runner.d.ts +4 -56
  645. package/dist/services/lint/eslint-runner.js +24 -178
  646. package/dist/services/lint/npx-resolver.js +1 -3
  647. package/dist/services/lint/ocr-18-acquire.js +15 -4
  648. package/dist/services/lint/ocr-multilang-adapter.js +4 -5
  649. package/dist/services/llm/anthropic-runner.js +4 -1
  650. package/dist/services/log/log-commands-service.js +2 -6
  651. package/dist/services/log/logger.js +15 -12
  652. package/dist/services/log/retention.js +3 -2
  653. package/dist/services/loop/evaluator-dispatcher.js +78 -42
  654. package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
  655. package/dist/services/loop/loop-bee-relation-service.js +36 -40
  656. package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
  657. package/dist/services/loop/loop-bee-relation-store.js +9 -11
  658. package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
  659. package/dist/services/loop/loop-bee-relation-types.js +14 -25
  660. package/dist/services/loop/loop-release-service.d.ts +2 -2
  661. package/dist/services/loop/loop-release-service.js +3 -3
  662. package/dist/services/loop/loop-release-store.d.ts +2 -2
  663. package/dist/services/loop/loop-release-store.js +4 -6
  664. package/dist/services/loop/loop-release-types.d.ts +1 -1
  665. package/dist/services/loop/loop-release-types.js +21 -31
  666. package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
  667. package/dist/services/loop/monotonic-guard-types.js +9 -0
  668. package/dist/services/loop/monotonic-guard.d.ts +2 -43
  669. package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
  670. package/dist/services/loop/monotonic-runner-types.js +17 -0
  671. package/dist/services/loop/monotonic-runner.d.ts +3 -34
  672. package/dist/services/loop/monotonic-runner.js +10 -20
  673. package/dist/services/loop/run-driver.js +16 -8
  674. package/dist/services/loop/spec-service.d.ts +0 -5
  675. package/dist/services/loop/spec-service.js +49 -9
  676. package/dist/services/memory/llm-reranker-core.d.ts +108 -0
  677. package/dist/services/memory/llm-reranker-core.js +105 -0
  678. package/dist/services/memory/llm-reranker.d.ts +3 -94
  679. package/dist/services/memory/llm-reranker.js +13 -102
  680. package/dist/services/memory/memory-ingest-service.d.ts +1 -22
  681. package/dist/services/memory/memory-ingest-service.js +29 -76
  682. package/dist/services/memory/memory-ingest-support.d.ts +23 -0
  683. package/dist/services/memory/memory-ingest-support.js +81 -0
  684. package/dist/services/memory/memory-rotate-service.js +41 -8
  685. package/dist/services/memory/memory-search-service.js +8 -4
  686. package/dist/services/memory/project-context-service.js +26 -5
  687. package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
  688. package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
  689. package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
  690. package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
  691. package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
  692. package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
  693. package/dist/services/memory/project-memory-service/index.d.ts +1 -1
  694. package/dist/services/memory/project-memory-service/index.js +1 -1
  695. package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
  696. package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
  697. package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
  698. package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
  699. package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
  700. package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
  701. package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
  702. package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +59 -0
  703. package/dist/services/memory/project-memory-service/store/atomic-write.js +189 -17
  704. package/dist/services/memory/project-memory-service/store/paths.js +2 -1
  705. package/dist/services/memory/project-memory-service/types.d.ts +3 -31
  706. package/dist/services/memory/project-memory-service/types.js +1 -76
  707. package/dist/services/migrate-skill-name/migrate.js +1 -1
  708. package/dist/services/migrate-skill-name/schema.js +1 -1
  709. package/dist/services/mode/mode-enforcement.js +4 -2
  710. package/dist/services/mode/mode-status-service.d.ts +27 -9
  711. package/dist/services/mode/mode-status-service.js +64 -12
  712. package/dist/services/observability/aggregation-helpers.d.ts +22 -0
  713. package/dist/services/observability/aggregation-helpers.js +65 -0
  714. package/dist/services/observability/aggregation-types.d.ts +66 -0
  715. package/dist/services/observability/aggregation-types.js +34 -0
  716. package/dist/services/observability/aggregation.d.ts +5 -53
  717. package/dist/services/observability/aggregation.js +17 -80
  718. package/dist/services/observability/jsonl-store.js +2 -1
  719. package/dist/services/observability/observability-schema.d.ts +71 -0
  720. package/dist/services/observability/observability-schema.js +64 -0
  721. package/dist/services/observability/observability-service.d.ts +3 -56
  722. package/dist/services/observability/observability-service.js +9 -49
  723. package/dist/services/openspec/coverage-evidence-reader.js +18 -11
  724. package/dist/services/openspec/openspec-archive-service.js +31 -24
  725. package/dist/services/openspec/openspec-init-service.js +8 -2
  726. package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
  727. package/dist/services/openspec/openspec-scan-service.js +4 -1
  728. package/dist/services/openspec/openspec-validate-service.js +26 -5
  729. package/dist/services/perf/perf-baseline-service.js +2 -6
  730. package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
  731. package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
  732. package/dist/services/prd/gate-evidence-derivation.d.ts +160 -0
  733. package/dist/services/prd/gate-evidence-derivation.js +270 -0
  734. package/dist/services/prd/handoff-auto-regen.js +13 -1
  735. package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
  736. package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
  737. package/dist/services/prd/handoff-frontmatter.d.ts +1 -1
  738. package/dist/services/prd/handoff-frontmatter.js +63 -1
  739. package/dist/services/prd/handoff-gate-evidence.d.ts +95 -1
  740. package/dist/services/prd/handoff-gate-evidence.js +125 -57
  741. package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
  742. package/dist/services/prd/handoff-path-resolution.js +101 -0
  743. package/dist/services/prd/handoff-service.d.ts +22 -38
  744. package/dist/services/prd/handoff-service.js +38 -127
  745. package/dist/services/prd/handoff-types.d.ts +40 -0
  746. package/dist/services/prd/handoff-types.js +28 -1
  747. package/dist/services/prd/prd-blocks-checker.js +28 -8
  748. package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
  749. package/dist/services/prd/project-scan-reader.d.ts +7 -0
  750. package/dist/services/prd/project-scan-reader.js +8 -5
  751. package/dist/services/prd/project-scan-sediment.js +1 -4
  752. package/dist/services/preferences/preferences-service.js +6 -8
  753. package/dist/services/preferences/preferences-types.js +4 -4
  754. package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
  755. package/dist/services/qa/bdd-test-style-contract.js +37 -0
  756. package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
  757. package/dist/services/qa/bdd-test-style-verifier.js +5 -31
  758. package/dist/services/qa/browser-event-logger.js +2 -1
  759. package/dist/services/qa/qa-business-review-state.js +20 -5
  760. package/dist/services/qa/screenshot-archive-service.js +1 -3
  761. package/dist/services/rd/ast-gate.js +2 -2
  762. package/dist/services/rd/impl.js +1 -1
  763. package/dist/services/rd/rd-service.js +117 -43
  764. package/dist/services/rd/reviewer-dispatch-policy.d.ts +36 -8
  765. package/dist/services/rd/reviewer-dispatch-policy.js +40 -15
  766. package/dist/services/rd/standards-diagnostic.js +4 -1
  767. package/dist/services/rd/strategy.js +10 -3
  768. package/dist/services/rd/tactical-stage.js +2 -2
  769. package/dist/services/rd/types.js +9 -7
  770. package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
  771. package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
  772. package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
  773. package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
  774. package/dist/services/recommendations/capability-map-service.js +10 -2
  775. package/dist/services/recommendations/capability-seed-items.js +81 -14
  776. package/dist/services/recommendations/capability-seed-mappings.js +420 -48
  777. package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
  778. package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
  779. package/dist/services/recommendations/capability-seed-sources.js +127 -32
  780. package/dist/services/release/release-state.d.ts +2 -2
  781. package/dist/services/release/release-state.js +44 -15
  782. package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
  783. package/dist/services/release/version-precheck-layer-changeset.js +43 -0
  784. package/dist/services/release/version-precheck-service.d.ts +11 -36
  785. package/dist/services/release/version-precheck-service.js +20 -104
  786. package/dist/services/release/version-precheck-support.d.ts +53 -0
  787. package/dist/services/release/version-precheck-support.js +64 -0
  788. package/dist/services/retrospective/retrospective-index.js +17 -3
  789. package/dist/services/retrospective/retrospective-search-service.js +6 -2
  790. package/dist/services/retrospective/retrospective-show.js +4 -1
  791. package/dist/services/reviewer/model-family.js +7 -1
  792. package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
  793. package/dist/services/reviewer/providers/anthropic.js +10 -1
  794. package/dist/services/reviewer/providers/openai.d.ts +5 -0
  795. package/dist/services/reviewer/providers/openai.js +10 -1
  796. package/dist/services/reviewer/reviewer-config.js +4 -2
  797. package/dist/services/reviewer/reviewer-service.d.ts +2 -36
  798. package/dist/services/reviewer/reviewer-service.js +2 -1
  799. package/dist/services/reviewer/reviewer-types.d.ts +43 -0
  800. package/dist/services/reviewer/reviewer-types.js +1 -0
  801. package/dist/services/role/role-registry.js +9 -1
  802. package/dist/services/runtime/runtime-detector.js +4 -1
  803. package/dist/services/runtime/vendors/claude-code.js +14 -6
  804. package/dist/services/runtime/vendors/codex.js +11 -3
  805. package/dist/services/runtime/vendors/copilot.js +11 -3
  806. package/dist/services/sc/sc-service.js +28 -15
  807. package/dist/services/scan/acceptance-coverage-service.js +4 -1
  808. package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
  809. package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
  810. package/dist/services/scan/api-diff-openapi.d.ts +16 -2
  811. package/dist/services/scan/api-diff-openapi.js +19 -123
  812. package/dist/services/scan/api-diff-recorded.js +16 -3
  813. package/dist/services/scan/api-diff-service.js +49 -16
  814. package/dist/services/scan/api-diff-types.js +12 -3
  815. package/dist/services/scan/api-surface-helpers.d.ts +13 -0
  816. package/dist/services/scan/api-surface-helpers.js +31 -0
  817. package/dist/services/scan/api-surface-service.d.ts +2 -45
  818. package/dist/services/scan/api-surface-service.js +15 -26
  819. package/dist/services/scan/api-surface-types.d.ts +54 -0
  820. package/dist/services/scan/api-surface-types.js +10 -0
  821. package/dist/services/scan/archetype-detection.d.ts +37 -0
  822. package/dist/services/scan/archetype-detection.js +142 -0
  823. package/dist/services/scan/archetype-service.js +36 -125
  824. package/dist/services/scan/diff-scope-service.js +35 -15
  825. package/dist/services/scan/existing-system-service.js +16 -99
  826. package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
  827. package/dist/services/scan/existing-system-visual-tokens.js +123 -0
  828. package/dist/services/scan/file-size-policy.d.ts +86 -0
  829. package/dist/services/scan/file-size-policy.js +184 -0
  830. package/dist/services/scan/file-size-scan.d.ts +30 -3
  831. package/dist/services/scan/file-size-scan.js +47 -9
  832. package/dist/services/scan/karpathy-service.js +6 -1
  833. package/dist/services/scan/orphan-service.js +86 -20
  834. package/dist/services/scan/type-sanity-service.js +104 -10
  835. package/dist/services/sediment/dispose-confirm.d.ts +2 -2
  836. package/dist/services/sediment/dispose-confirm.js +2 -2
  837. package/dist/services/sediment/json-schema.d.ts +1 -1
  838. package/dist/services/sediment/json-schema.js +25 -13
  839. package/dist/services/sediment/manifest-lint.d.ts +1 -12
  840. package/dist/services/sediment/manifest-lint.js +1 -7
  841. package/dist/services/sediment/pool-paths.js +13 -9
  842. package/dist/services/sediment/pool-read.d.ts +1 -1
  843. package/dist/services/sediment/pool-read.js +42 -18
  844. package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
  845. package/dist/services/sediment/pool-rebuild-index.js +5 -5
  846. package/dist/services/sediment/pool-write.d.ts +1 -1
  847. package/dist/services/sediment/pool-write.js +7 -7
  848. package/dist/services/sediment/promotion-gate.d.ts +1 -1
  849. package/dist/services/sediment/promotion-gate.js +9 -9
  850. package/dist/services/sediment/types.d.ts +8 -8
  851. package/dist/services/session/binding-status-service.js +14 -4
  852. package/dist/services/session/caller-binding-service.js +2 -1
  853. package/dist/services/session/getSessionDir.js +4 -1
  854. package/dist/services/session/index.d.ts +1 -1
  855. package/dist/services/session/index.js +1 -1
  856. package/dist/services/session/resolve-caller-id.js +7 -5
  857. package/dist/services/session/session-binding-bridge.js +26 -25
  858. package/dist/services/session/session-checkpoint-service.js +1 -1
  859. package/dist/services/session/session-file-schema.d.ts +70 -0
  860. package/dist/services/session/session-file-schema.js +68 -0
  861. package/dist/services/session/session-manager.d.ts +6 -6
  862. package/dist/services/session/session-manager.js +30 -29
  863. package/dist/services/session/session-resume-service.js +2 -1
  864. package/dist/services/share/bundle-format-constants.d.ts +85 -0
  865. package/dist/services/share/bundle-format-constants.js +100 -0
  866. package/dist/services/share/bundle-reader.d.ts +3 -3
  867. package/dist/services/share/bundle-reader.js +75 -68
  868. package/dist/services/share/bundle-types.d.ts +3 -70
  869. package/dist/services/share/bundle-types.js +38 -107
  870. package/dist/services/share/bundle-writer.d.ts +3 -3
  871. package/dist/services/share/bundle-writer.js +101 -91
  872. package/dist/services/share/run-state-contract.d.ts +1 -1
  873. package/dist/services/share/run-state-contract.js +7 -13
  874. package/dist/services/signal/cancel-handler.js +2 -1
  875. package/dist/services/skill/resume-detector.js +6 -4
  876. package/dist/services/skill/skill-scheduler.js +3 -1
  877. package/dist/services/skill/skill-search-service.js +4 -4
  878. package/dist/services/skillhub/release-diff.d.ts +2 -2
  879. package/dist/services/skillhub/release-diff.js +6 -10
  880. package/dist/services/skillhub/release-export.d.ts +2 -2
  881. package/dist/services/skillhub/release-export.js +15 -17
  882. package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
  883. package/dist/services/skillhub/release-gc-blobs.js +4 -4
  884. package/dist/services/skillhub/release-import.d.ts +2 -2
  885. package/dist/services/skillhub/release-import.js +13 -12
  886. package/dist/services/skillhub/release-retain.d.ts +3 -3
  887. package/dist/services/skillhub/release-retain.js +22 -22
  888. package/dist/services/skillhub/sqlite-store.d.ts +1 -1
  889. package/dist/services/skillhub/sqlite-store.js +12 -11
  890. package/dist/services/skillhub/tar-runtime.js +15 -15
  891. package/dist/services/skillhub/types.d.ts +4 -4
  892. package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
  893. package/dist/services/skills/hooks-settings-service.js +61 -19
  894. package/dist/services/skills/presence-lease-service.js +26 -16
  895. package/dist/services/skills/presence-lease-types.d.ts +1 -1
  896. package/dist/services/skills/presence-lease-types.js +1 -1
  897. package/dist/services/skills/skill-conformance-service.js +40 -8
  898. package/dist/services/skills/skill-presence-service.js +16 -14
  899. package/dist/services/skills/skill-runbook-service.js +2 -1
  900. package/dist/services/skills/skill-statusline-model.d.ts +128 -0
  901. package/dist/services/skills/skill-statusline-model.js +163 -0
  902. package/dist/services/skills/skill-statusline-renderer.js +4 -3
  903. package/dist/services/skills/skill-statusline-service.d.ts +3 -100
  904. package/dist/services/skills/skill-statusline-service.js +56 -163
  905. package/dist/services/skills/statusline-palette.js +11 -6
  906. package/dist/services/skills/statusline-settings-service.js +2 -1
  907. package/dist/services/skills/sync-service-support.d.ts +65 -0
  908. package/dist/services/skills/sync-service-support.js +50 -0
  909. package/dist/services/skills/sync-service.d.ts +3 -66
  910. package/dist/services/skills/sync-service.js +15 -53
  911. package/dist/services/slice/calibration-store.js +8 -2
  912. package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
  913. package/dist/services/slice/cross-pass-edge-merger.js +13 -63
  914. package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
  915. package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
  916. package/dist/services/slice/granularity-decider.js +2 -2
  917. package/dist/services/slice/slice-archive-service.js +8 -3
  918. package/dist/services/slice/slice-check-service.js +19 -8
  919. package/dist/services/slice/slice-decompose-runners.js +61 -23
  920. package/dist/services/slice/slice-decompose-service.js +4 -4
  921. package/dist/services/slice/slice-review-state.js +8 -2
  922. package/dist/services/smoke/smoke-paths-state.js +9 -2
  923. package/dist/services/sop/gate-enforce-service.js +9 -2
  924. package/dist/services/sop/sop-advance-service.js +14 -2
  925. package/dist/services/sop/sop-check-service.js +16 -4
  926. package/dist/services/sop/sop-paths.js +3 -1
  927. package/dist/services/sop/sop-registry-service.js +5 -1
  928. package/dist/services/sop/sop-service.js +29 -7
  929. package/dist/services/sop/sop-types.js +5 -1
  930. package/dist/services/standards/ide-aware-standards-service.js +2 -2
  931. package/dist/services/standards/loop-engineering-lint.js +12 -5
  932. package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
  933. package/dist/services/standards/migrate-claude-rules-service.js +9 -7
  934. package/dist/services/standards/missing-standards-detector.js +1 -3
  935. package/dist/services/standards/project-context-support.d.ts +50 -0
  936. package/dist/services/standards/project-context-support.js +244 -0
  937. package/dist/services/standards/project-context-types.d.ts +30 -0
  938. package/dist/services/standards/project-context-types.js +11 -0
  939. package/dist/services/standards/project-context.d.ts +10 -22
  940. package/dist/services/standards/project-context.js +27 -214
  941. package/dist/services/standards/project-standards-service.js +43 -12
  942. package/dist/services/standards/standards-render-common.d.ts +15 -0
  943. package/dist/services/standards/standards-render-common.js +49 -0
  944. package/dist/services/standards/standards-render.d.ts +1 -2
  945. package/dist/services/standards/standards-render.js +31 -58
  946. package/dist/services/standards/ui-library-dispatch-block.js +1 -1
  947. package/dist/services/tech/tech-change-id-service.js +7 -7
  948. package/dist/services/tech/tech-service.js +73 -26
  949. package/dist/services/test-cache/test-cache-service.js +8 -3
  950. package/dist/services/upgrade/1x-detector-service.js +5 -3
  951. package/dist/services/upgrade/gitignore-migrate-service.js +5 -5
  952. package/dist/services/upgrade/upgrade-service.js +36 -13
  953. package/dist/services/verdict/envelope-parsers.d.ts +84 -0
  954. package/dist/services/verdict/envelope-parsers.js +146 -0
  955. package/dist/services/verdict/envelopes.d.ts +50 -60
  956. package/dist/services/verdict/envelopes.js +18 -156
  957. package/dist/services/verdict/verdict-aggregator.js +27 -3
  958. package/dist/services/vm/vm-lease.js +15 -3
  959. package/dist/services/web/aria-node.d.ts +27 -0
  960. package/dist/services/web/aria-node.js +1 -0
  961. package/dist/services/web/browser-acquire.js +3 -1
  962. package/dist/services/web/browser-cache-probe.d.ts +18 -0
  963. package/dist/services/web/browser-cache-probe.js +110 -0
  964. package/dist/services/web/browser-session-manager.js +6 -2
  965. package/dist/services/web/daemon-registry.js +4 -1
  966. package/dist/services/web/playwright-loader.d.ts +2 -70
  967. package/dist/services/web/playwright-types.d.ts +75 -0
  968. package/dist/services/web/playwright-types.js +1 -0
  969. package/dist/services/web/snapshot-pruner.d.ts +2 -23
  970. package/dist/services/web/snapshot-pruner.js +8 -3
  971. package/dist/services/web/web-daemon-service.js +1 -3
  972. package/dist/services/web/web-install-service.d.ts +3 -32
  973. package/dist/services/web/web-install-service.js +21 -100
  974. package/dist/services/web/web-install-types.d.ts +31 -0
  975. package/dist/services/web/web-install-types.js +13 -0
  976. package/dist/services/web/web-login-profile.js +7 -5
  977. package/dist/services/web/web-protocol.js +3 -1
  978. package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
  979. package/dist/services/workflow/pipeline-verify-service.js +17 -6
  980. package/dist/services/workflow/plan-reader.js +5 -1
  981. package/dist/services/workflow/plan-refresher.js +20 -6
  982. package/dist/services/workflow/plan-trigger-detector.js +31 -8
  983. package/dist/services/workflow/provision-dispatch-node.js +8 -3
  984. package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
  985. package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
  986. package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
  987. package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
  988. package/dist/services/workflow/workflow-autonomous-service.js +25 -13
  989. package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
  990. package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
  991. package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
  992. package/dist/services/workflow/workflow-graph-store.js +30 -107
  993. package/dist/services/workflow/workflow-graph-types.js +3 -3
  994. package/dist/services/workflow/workflow-inflight-probe.js +14 -7
  995. package/dist/services/workflow/workflow-loader.js +5 -1
  996. package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
  997. package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
  998. package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
  999. package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
  1000. package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
  1001. package/dist/services/workflow/workflow-router-service.js +169 -27
  1002. package/dist/services/workflow/workflow-skip-service.js +14 -4
  1003. package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
  1004. package/dist/services/workflow/workflow-spec-builders.js +121 -0
  1005. package/dist/services/workflow/workflow-spec.d.ts +7 -6
  1006. package/dist/services/workflow/workflow-spec.js +22 -116
  1007. package/dist/services/workflow/workflow-state-store.js +2 -1
  1008. package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
  1009. package/dist/services/workspace/migrate-service.js +66 -16
  1010. package/dist/services/workspace/reconcile-migrate.js +6 -2
  1011. package/dist/services/workspace/reconcile-service.js +37 -16
  1012. package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
  1013. package/dist/services/workspace/workspace-clean-service.js +4 -1
  1014. package/dist/services/workspace/workspace-service.js +11 -3
  1015. package/dist/services/workspace/workspace-state-service.js +1 -1
  1016. package/dist/services/worktree/git-worktree-parser.js +13 -3
  1017. package/dist/services/worktree/host-worktree-reconciler.js +8 -4
  1018. package/dist/services/worktree/long-path-cleanup.js +23 -6
  1019. package/dist/services/worktree/worktree-gc-guard.js +3 -1
  1020. package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
  1021. package/dist/services/worktree/worktree-lease-types.js +10 -0
  1022. package/dist/services/worktree/worktree-lease.d.ts +2 -44
  1023. package/dist/shared/array-guards.d.ts +30 -0
  1024. package/dist/shared/array-guards.js +32 -0
  1025. package/dist/shared/format-md-compact-internals.d.ts +26 -0
  1026. package/dist/shared/format-md-compact-internals.js +125 -0
  1027. package/dist/shared/format-md-compact.js +1 -117
  1028. package/dist/shared/fs-utils.js +2 -1
  1029. package/dist/shared/incrementing-number.js +3 -3
  1030. package/dist/shared/json-parse.d.ts +71 -0
  1031. package/dist/shared/json-parse.js +32 -0
  1032. package/dist/shared/json-schema-mini.js +3 -1
  1033. package/dist/shared/path-safety.js +3 -1
  1034. package/dist/shared/path-utils.d.ts +20 -0
  1035. package/dist/shared/path-utils.js +26 -0
  1036. package/dist/shared/planner-response.js +3 -3
  1037. package/dist/shared/stale-policy.js +1 -3
  1038. package/dist/skills/peaks-maker/index.js +11 -11
  1039. package/package.json +32 -9
  1040. package/scripts/clean-dist.mjs +1 -2
  1041. package/scripts/copy-templates.mjs +2 -4
  1042. package/scripts/install-skills.mjs +305 -125
  1043. package/scripts/sync-version.mjs +25 -8
  1044. package/scripts/watch.mjs +8 -2
  1045. package/skills/bee/peaks-rd/SKILL.md +1 -1
  1046. package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +26 -10
  1047. package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +1 -1
  1048. package/skills/bee/peaks-rd/references/writing-handoff-frontmatter.md +6 -1
  1049. package/skills/peaks-code/SKILL.md +1 -1
  1050. package/skills/peaks-code/references/periodic-checkpoint.md +7 -5
  1051. package/skills/peaks-code/references/startup-sequence.md +1 -1
  1052. package/skills/peaks-final-review/SKILL.md +1 -1
  1053. /package/{docs → contracts}/test-style-contract.md +0 -0
@@ -34,7 +34,7 @@ import { playwrightProfilePaths } from '../../services/worktree/playwright-profi
34
34
  import { loadPreferences } from '../../services/preferences/preferences-service.js';
35
35
  import { DEFAULT_PREFERENCES } from '../../services/preferences/preferences-types.js';
36
36
  import { writeLogEntry } from '../../services/log/logger.js';
37
- import { PROMPT_LIMIT_BYTES, RECOMMENDED_ROLES, validateRole } from './sub-agent-shared.js';
37
+ import { PROMPT_LIMIT_BYTES, RECOMMENDED_ROLES, deprecatedReviewerWarnings, validateRole } from './sub-agent-shared.js';
38
38
  import { runDispatchFromDag } from './dispatch-from-dag.js';
39
39
  import { TEST_TOOL_DETECTION_BLOCK } from '../../services/dispatch/test-tool-detection.js';
40
40
  import { MemoryPreflightService, deriveMemoryQuery } from '../../services/context/memory-preflight-service.js';
@@ -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,19 +533,27 @@ 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
- const warnings = [...decision.warnings];
546
+ // Slice F2 (rid-f2-ac1-wiring): deprecated reviewer slots are accepted
547
+ // + rerouted here, never refused — rationale on the helper itself.
548
+ const warnings = [...decision.warnings, ...deprecatedReviewerWarnings(role)];
524
549
  let toolCall;
525
550
  try {
526
- 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
+ });
527
557
  // Part 2.C: stamp the toolCall with `isolation` + a sub-agent
528
558
  // env block so adapters that surface it (Claude Code's Task
529
559
  // tool) propagate the lease id to the spawned process. The
@@ -534,7 +564,7 @@ export function registerDispatchCommand(parent, io) {
534
564
  const provenanceToken = createDispatchProvenanceToken({
535
565
  sessionId: sid,
536
566
  requestId: rid,
537
- leaseId,
567
+ leaseId
538
568
  });
539
569
  if (isolationMode === 'worktree') {
540
570
  writeDispatchProvenance({
@@ -546,8 +576,8 @@ export function registerDispatchCommand(parent, io) {
546
576
  requestId: rid,
547
577
  leaseId,
548
578
  isolation: 'worktree',
549
- issuedAt: new Date().toISOString(),
550
- },
579
+ issuedAt: new Date().toISOString()
580
+ }
551
581
  });
552
582
  }
553
583
  // Slice 2026-08-01-subagent-merge-and-e2e (Task 8): stamp the
@@ -560,7 +590,7 @@ export function registerDispatchCommand(parent, io) {
560
590
  const profile = playwrightProfilePaths({
561
591
  projectRoot,
562
592
  sessionId: sid,
563
- dispatchId: rid,
593
+ dispatchId: rid
564
594
  });
565
595
  toolCall = {
566
596
  ...toolCall,
@@ -572,7 +602,9 @@ export function registerDispatchCommand(parent, io) {
572
602
  PEAKS_WORKTREE_LEASE_ID: leaseId,
573
603
  PEAKS_PLAYWRIGHT_USER_DATA_DIR: profile.userDataDir,
574
604
  PEAKS_PLAYWRIGHT_PROFILE_NAME: profile.profileName,
575
- ...(isolationMode === 'worktree' ? { [DISPATCH_PROVENANCE_ENV]: provenanceToken } : {}),
605
+ ...(isolationMode === 'worktree'
606
+ ? { [DISPATCH_PROVENANCE_ENV]: provenanceToken }
607
+ : {})
576
608
  }
577
609
  }
578
610
  };
@@ -586,7 +618,9 @@ export function registerDispatchCommand(parent, io) {
586
618
  // roles like 'qa-business' would otherwise drop the event
587
619
  // through schema rejection).
588
620
  const KNOWN_ROLES = new Set(OBSERVABILITY_SUBAGENT_ROLES);
589
- const knownRole = KNOWN_ROLES.has(role) ? role : null;
621
+ const knownRole = KNOWN_ROLES.has(role)
622
+ ? role
623
+ : null;
590
624
  emitObservabilityEvent({
591
625
  schemaVersion: 1,
592
626
  ts: new Date().toISOString(),
@@ -602,9 +636,7 @@ export function registerDispatchCommand(parent, io) {
602
636
  }
603
637
  catch (error) {
604
638
  if (error instanceof SubAgentNotSupportedError) {
605
- printResult(io, fail('sub-agent.dispatch', 'IDE_NOT_SUPPORTED', error.message, { role, toolCall: null, dispatchRecordPath: null }, [
606
- 'Switch IDE or pick a role the current IDE supports.'
607
- ]), 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);
608
640
  process.exitCode = 1;
609
641
  return;
610
642
  }
@@ -695,7 +727,9 @@ export function registerDispatchCommand(parent, io) {
695
727
  });
696
728
  const nextActions = [
697
729
  'Tool call is dry-run; LLM must execute the tool to actually dispatch the sub-agent.',
698
- '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.'
699
733
  ];
700
734
  if (counter.warning) {
701
735
  nextActions.push(`Batch is over the RL-1 limit (${BATCH_LIMIT}); consider splitting into multiple batches.`);
@@ -769,7 +803,8 @@ export function registerDispatchCommand(parent, io) {
769
803
  }
770
804
  });
771
805
  }
772
- 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)
773
808
  /* best-effort */
774
809
  }
775
810
  }
@@ -39,10 +39,10 @@ export async function runDispatchFromDag(role, options, asJson, io) {
39
39
  const projectRoot = options.project ?? process.cwd();
40
40
  // Slice 2026-06-26-unknown-sid-fallback-fix: see dispatch-commands.ts.
41
41
  // Auto-resolve sid from .peaks/_runtime/session.json before falling back.
42
- const sid = options.sessionId
43
- ?? process.env.PEAKS_SESSION_ID
44
- ?? getCurrentSessionId(projectRoot)
45
- ?? 'unknown-sid';
42
+ const sid = options.sessionId ??
43
+ process.env.PEAKS_SESSION_ID ??
44
+ getCurrentSessionId(projectRoot) ??
45
+ 'unknown-sid';
46
46
  const rid = options.requestId ?? 'unknown-rid';
47
47
  const batchId = options.batchId ?? randomUUID();
48
48
  // Slice 9 (dispatch CLI latency): the --from-dag codepath loads three
@@ -87,7 +87,9 @@ export async function runDispatchFromDag(role, options, asJson, io) {
87
87
  const graphNodeId = node.graphNode;
88
88
  const candidate = typeof graphNodeId === 'string' && graphNodeId.length > 0 ? graphNodeId : node.id;
89
89
  if (typeof candidate !== 'string' || candidate.length === 0) {
90
- printResult(io, fail('sub-agent.dispatch', 'PEAKS_GRAPH_NODE_REQUIRED', `DAG node ${node.id} has no graph-node mapping (RD §4 D4c)`, { role, toolCall: null, dispatchRecordPath: null, dagNodeId: node.id }, ['Annotate the DAG node with `graphNode: "<id>"` so each dispatch can bind a prepared graph node.']), asJson);
90
+ printResult(io, fail('sub-agent.dispatch', 'PEAKS_GRAPH_NODE_REQUIRED', `DAG node ${node.id} has no graph-node mapping (RD §4 D4c)`, { role, toolCall: null, dispatchRecordPath: null, dagNodeId: node.id }, [
91
+ 'Annotate the DAG node with `graphNode: "<id>"` so each dispatch can bind a prepared graph node.'
92
+ ]), asJson);
91
93
  process.exitCode = 1;
92
94
  return;
93
95
  }
@@ -121,9 +123,7 @@ export async function runDispatchFromDag(role, options, asJson, io) {
121
123
  const adapter = getAdapter(ide);
122
124
  const dispatcher = adapter.subAgentDispatcher;
123
125
  if (!dispatcher.supportsRole(role)) {
124
- printResult(io, fail('sub-agent.dispatch', 'IDE_NOT_SUPPORTED', `IDE ${ide} does not support role "${role}"`, { role, toolCall: null, dispatchRecordPath: null }, [
125
- 'Switch to a registered IDE (e.g. claude-code) or pick a role the current IDE supports.'
126
- ]), asJson);
126
+ printResult(io, fail('sub-agent.dispatch', 'IDE_NOT_SUPPORTED', `IDE ${ide} does not support role "${role}"`, { role, toolCall: null, dispatchRecordPath: null }, ['Switch to a registered IDE (e.g. claude-code) or pick a role the current IDE supports.']), asJson);
127
127
  process.exitCode = 1;
128
128
  return;
129
129
  }
@@ -145,8 +145,7 @@ export async function runDispatchFromDag(role, options, asJson, io) {
145
145
  id,
146
146
  files: dag.nodes.find((n) => n.id === id)?.files ?? []
147
147
  }));
148
- const firstLevelWaves = firstLevelDescriptors.length > 0
149
- && firstLevelDescriptors.every((d) => d.files.length > 0)
148
+ const firstLevelWaves = firstLevelDescriptors.length > 0 && firstLevelDescriptors.every((d) => d.files.length > 0)
150
149
  ? planFileOverlapWaves(firstLevelDescriptors).waves
151
150
  : null;
152
151
  const emittedToolCalls = [];
@@ -34,9 +34,12 @@ export function registerDocCommands(program, io) {
34
34
  const { writeFileSync, mkdirSync } = require('node:fs');
35
35
  mkdirSync(resolvePath(opts.output, '..'), { recursive: true });
36
36
  writeFileSync(resolvePath(opts.output), md, 'utf8');
37
- printResult(io, ok('doc.generate-skill', { projectRoot, output: opts.output, sections: skill.sections.length, bytes: md.length }, [], [
38
- `Wrote ${md.length} bytes to ${opts.output}`
39
- ]), opts.json ?? false);
37
+ printResult(io, ok('doc.generate-skill', {
38
+ projectRoot,
39
+ output: opts.output,
40
+ sections: skill.sections.length,
41
+ bytes: md.length
42
+ }, [], [`Wrote ${md.length} bytes to ${opts.output}`]), opts.json ?? false);
40
43
  }
41
44
  catch (err) {
42
45
  printResult(io, fail('doc.generate-skill', 'WRITE_FAILED', err.message, { projectRoot }, []), opts.json ?? false);
@@ -44,9 +47,7 @@ export function registerDocCommands(program, io) {
44
47
  }
45
48
  return;
46
49
  }
47
- printResult(io, ok('doc.generate-skill', { projectRoot, markdown: md, sections: skill.sections.length }, [], [
48
- `Generated ${skill.sections.length} section(s). Pipe into a .md file or redirect.`
49
- ]), opts.json ?? false);
50
+ printResult(io, ok('doc.generate-skill', { projectRoot, markdown: md, sections: skill.sections.length }, [], [`Generated ${skill.sections.length} section(s). Pipe into a .md file or redirect.`]), opts.json ?? false);
50
51
  });
51
52
  addJsonOption(doc
52
53
  .command('changelog-suggest')
@@ -58,8 +59,6 @@ export function registerDocCommands(program, io) {
58
59
  const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
59
60
  const entries = gitLogSince(projectRoot, opts.since);
60
61
  const md = suggestChangelog(entries);
61
- printResult(io, ok('doc.changelog-suggest', { projectRoot, since: opts.since, entryCount: entries.length, markdown: md }, [], [
62
- `Parsed ${entries.length} commit(s) since ${opts.since}.`
63
- ]), opts.json ?? false);
62
+ printResult(io, ok('doc.changelog-suggest', { projectRoot, since: opts.since, entryCount: entries.length, markdown: md }, [], [`Parsed ${entries.length} commit(s) since ${opts.since}.`]), opts.json ?? false);
64
63
  });
65
64
  }
@@ -27,7 +27,7 @@ export async function doctorInvokeFromCode(opts) {
27
27
  '## kind: <TBD>',
28
28
  '',
29
29
  'Real implementation: peaks-doctor LLM-driven analysis of',
30
- '.peaks/_runtime/<sid>/txt/handoff.md + dispatch records.',
30
+ '.peaks/_runtime/<sid>/txt/handoff.md + dispatch records.'
31
31
  ].join('\n'));
32
32
  // Normalize to POSIX-style separators so callers (and tests) can rely
33
33
  // on a forward-slash contract regardless of host OS.
@@ -0,0 +1,19 @@
1
+ export type E2EVerifyInput = {
2
+ readonly projectRoot: string;
3
+ readonly slice: string;
4
+ readonly dispatchId?: string;
5
+ };
6
+ export type E2EVerifyResult = {
7
+ readonly outcome: 'pass' | 'fail' | 'skipped' | 'no-fixtures';
8
+ readonly passCount: number;
9
+ readonly failCount: number;
10
+ readonly skippedReason?: string;
11
+ /** When the real Playwright runner is used, the chromium-exit summary. */
12
+ readonly runner?: 'playwright' | 'stub';
13
+ };
14
+ export declare const PLAYWRIGHT_USER_DATA_DIR_ENV = "PEAKS_PLAYWRIGHT_USER_DATA_DIR";
15
+ export declare const PLAYWRIGHT_PROFILE_NAME_ENV = "PEAKS_PLAYWRIGHT_PROFILE_NAME";
16
+ export declare function resolvePlaywrightEnv(): {
17
+ readonly userDataDir: string;
18
+ readonly profileName: string;
19
+ } | null;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * e2e-verify support surface — moved VERBATIM out of `e2e-verify.ts` for the
3
+ * 300-raw-line cap (slice `b1-filesplit-campaign`, wave 3C): the public
4
+ * input/result types, the two Playwright env-var names, and the env
5
+ * resolver. `e2e-verify.ts` re-exports the public types, so existing import
6
+ * paths keep working.
7
+ */
8
+ import { existsSync } from 'node:fs';
9
+ export const PLAYWRIGHT_USER_DATA_DIR_ENV = 'PEAKS_PLAYWRIGHT_USER_DATA_DIR';
10
+ export const PLAYWRIGHT_PROFILE_NAME_ENV = 'PEAKS_PLAYWRIGHT_PROFILE_NAME';
11
+ export function resolvePlaywrightEnv() {
12
+ const userDataDir = process.env[PLAYWRIGHT_USER_DATA_DIR_ENV];
13
+ const profileName = process.env[PLAYWRIGHT_PROFILE_NAME_ENV];
14
+ if (!userDataDir || !profileName)
15
+ return null;
16
+ if (!existsSync(userDataDir))
17
+ return null;
18
+ return { userDataDir, profileName };
19
+ }
@@ -28,20 +28,9 @@
28
28
  * never silently blocked from running the real runner — they can set
29
29
  * the env vars and re-run.
30
30
  */
31
- import { Command } from 'commander';
31
+ import type { Command } from 'commander';
32
32
  import { type ProgramIO } from '../cli-helpers.js';
33
- export type E2EVerifyInput = {
34
- readonly projectRoot: string;
35
- readonly slice: string;
36
- readonly dispatchId?: string;
37
- };
38
- export type E2EVerifyResult = {
39
- readonly outcome: 'pass' | 'fail' | 'skipped' | 'no-fixtures';
40
- readonly passCount: number;
41
- readonly failCount: number;
42
- readonly skippedReason?: string;
43
- /** When the real Playwright runner is used, the chromium-exit summary. */
44
- readonly runner?: 'playwright' | 'stub';
45
- };
33
+ import { type E2EVerifyInput, type E2EVerifyResult } from './e2e-verify-env.js';
34
+ export type { E2EVerifyInput, E2EVerifyResult } from './e2e-verify-env.js';
46
35
  export declare function runE2EVerify(input: E2EVerifyInput): Promise<E2EVerifyResult>;
47
36
  export declare function registerE2EVerifyCommand(program: Command, io: ProgramIO): void;
@@ -1,11 +1,9 @@
1
1
  import { spawn as nodeSpawn } from 'node:child_process';
2
- import { existsSync } from 'node:fs';
3
2
  import { join } from 'node:path';
4
3
  import { readE2EPlan } from '../../services/dispatch/e2e-fixtures.js';
5
4
  import { fail, getErrorMessage, ok } from 'peaks-loop-shared/result';
6
5
  import { addJsonOption, printResult } from '../cli-helpers.js';
7
- const PLAYWRIGHT_USER_DATA_DIR_ENV = 'PEAKS_PLAYWRIGHT_USER_DATA_DIR';
8
- const PLAYWRIGHT_PROFILE_NAME_ENV = 'PEAKS_PLAYWRIGHT_PROFILE_NAME';
6
+ import { resolvePlaywrightEnv } from './e2e-verify-env.js';
9
7
  /**
10
8
  * Probe whether a Chromium binary is callable on this host. The probe
11
9
  * uses `process.platform` to pick the right finder (`where` on Windows,
@@ -13,18 +11,27 @@ const PLAYWRIGHT_PROFILE_NAME_ENV = 'PEAKS_PLAYWRIGHT_PROFILE_NAME';
13
11
  * least one match is found AND `--version` exits 0.
14
12
  */
15
13
  async function probeChromiumBinary() {
16
- const candidates = process.platform === 'win32' ? ['chromium.exe', 'chrome.exe'] : ['chromium', 'chromium-browser', 'google-chrome'];
14
+ const candidates = process.platform === 'win32'
15
+ ? ['chromium.exe', 'chrome.exe']
16
+ : ['chromium', 'chromium-browser', 'google-chrome'];
17
17
  const finder = process.platform === 'win32' ? 'where' : 'which';
18
18
  for (const candidate of candidates) {
19
19
  try {
20
- const result = nodeSpawn(finder, [candidate], { stdio: ['ignore', 'pipe', 'pipe'], windowsHide: true });
20
+ const result = nodeSpawn(finder, [candidate], {
21
+ stdio: ['ignore', 'pipe', 'pipe'],
22
+ windowsHide: true
23
+ });
21
24
  const stdout = await new Promise((resolve, reject) => {
22
25
  let buf = '';
23
- result.stdout.on('data', (chunk) => { buf += chunk.toString('utf8'); });
24
- result.on('close', (code) => { if (code === 0)
25
- resolve(buf);
26
- else
27
- reject(new Error(`exit ${code}`)); });
26
+ result.stdout.on('data', (chunk) => {
27
+ buf += chunk.toString('utf8');
28
+ });
29
+ result.on('close', (code) => {
30
+ if (code === 0)
31
+ resolve(buf);
32
+ else
33
+ reject(new Error(`exit ${code}`));
34
+ });
28
35
  result.on('error', reject);
29
36
  });
30
37
  if (stdout.trim().length === 0)
@@ -33,7 +40,10 @@ async function probeChromiumBinary() {
33
40
  const firstLine = stdout.split(/\r?\n/)[0]?.trim();
34
41
  if (!firstLine)
35
42
  continue;
36
- const probe = nodeSpawn(firstLine, ['--version'], { stdio: ['ignore', 'pipe', 'ignore'], windowsHide: true });
43
+ const probe = nodeSpawn(firstLine, ['--version'], {
44
+ stdio: ['ignore', 'pipe', 'ignore'],
45
+ windowsHide: true
46
+ });
37
47
  const exitCode = await new Promise((resolve) => {
38
48
  probe.on('close', (code) => resolve(code ?? 1));
39
49
  probe.on('error', () => resolve(1));
@@ -47,15 +57,6 @@ async function probeChromiumBinary() {
47
57
  }
48
58
  return false;
49
59
  }
50
- function resolvePlaywrightEnv() {
51
- const userDataDir = process.env[PLAYWRIGHT_USER_DATA_DIR_ENV];
52
- const profileName = process.env[PLAYWRIGHT_PROFILE_NAME_ENV];
53
- if (!userDataDir || !profileName)
54
- return null;
55
- if (!existsSync(userDataDir))
56
- return null;
57
- return { userDataDir, profileName };
58
- }
59
60
  /**
60
61
  * Run a single fixture through the real Chromium-driven matcher.
61
62
  *
@@ -113,10 +114,12 @@ async function runOneFixtureWithPlaywright(fixture, env) {
113
114
  `--user-data-dir=${env.userDataDir}`,
114
115
  `--profile-directory=${env.profileName}`,
115
116
  `--dump-dom`,
116
- fixture.url,
117
+ fixture.url
117
118
  ], { stdio: ['ignore', 'pipe', 'ignore'], windowsHide: true });
118
119
  let html = '';
119
- proc.stdout.on('data', (chunk) => { html += chunk.toString('utf8'); });
120
+ proc.stdout.on('data', (chunk) => {
121
+ html += chunk.toString('utf8');
122
+ });
120
123
  proc.on('error', () => settle({ pass: false, reason: 'chromium-spawn-failed' }));
121
124
  proc.on('close', (code) => {
122
125
  if (code !== 0) {
@@ -128,8 +131,9 @@ async function runOneFixtureWithPlaywright(fixture, env) {
128
131
  const looksLikeCss = matcher.startsWith('css:') || matcher.startsWith('#') || matcher.startsWith('.');
129
132
  const needle = looksLikeCss ? matcher.replace(/^css:/, '').trim() : matcher;
130
133
  const present = looksLikeCss
131
- ? new RegExp(`<[a-zA-Z][^>]*class=["'][^"']*\\b${needle.replace(/^\./, '').replace(/^#/, '')}\\b`).test(html)
132
- || (needle.startsWith('#') && new RegExp(`id=["']${needle.replace(/^#/, '')}["']`).test(html))
134
+ ? new RegExp(`<[a-zA-Z][^>]*class=["'][^"']*\\b${needle.replace(/^\./, '').replace(/^#/, '')}\\b`).test(html) ||
135
+ (needle.startsWith('#') &&
136
+ new RegExp(`id=["']${needle.replace(/^#/, '')}["']`).test(html))
133
137
  : html.includes(needle);
134
138
  if (!present) {
135
139
  settle({ pass: false, reason: `matcher-missing:${matcher}` });
@@ -150,7 +154,13 @@ export async function runE2EVerify(input) {
150
154
  if (plan.kind === 'empty')
151
155
  return { outcome: 'no-fixtures', passCount: 0, failCount: 0, runner: 'stub' };
152
156
  if (plan.kind === 'disabled') {
153
- return { outcome: 'skipped', passCount: 0, failCount: 0, skippedReason: plan.reason, runner: 'stub' };
157
+ return {
158
+ outcome: 'skipped',
159
+ passCount: 0,
160
+ failCount: 0,
161
+ skippedReason: plan.reason,
162
+ runner: 'stub'
163
+ };
154
164
  }
155
165
  // Decide between the real Playwright runner and the deterministic
156
166
  // stub. Either env-var unset OR chromium missing → fallback. The
@@ -189,7 +199,7 @@ export async function runE2EVerify(input) {
189
199
  passCount,
190
200
  failCount,
191
201
  runner: 'playwright',
192
- ...(chromiumReason !== null ? { skippedReason: chromiumReason } : {}),
202
+ ...(chromiumReason !== null ? { skippedReason: chromiumReason } : {})
193
203
  };
194
204
  }
195
205
  export function registerE2EVerifyCommand(program, io) {
@@ -200,11 +210,21 @@ export function registerE2EVerifyCommand(program, io) {
200
210
  .option('--project <path>', 'project root (default: cwd)', '.')
201
211
  .option('--dispatch-id <id>', 'optional dispatch id used in observability events')).action(async (options) => {
202
212
  try {
203
- const result = await runE2EVerify({ projectRoot: options.project, slice: options.slice, ...(options.dispatchId !== undefined ? { dispatchId: options.dispatchId } : {}) });
204
- printResult(io, ok('e2e.verify', { ...result, slice: options.slice, dispatchId: options.dispatchId ?? null }), options.json);
213
+ const result = await runE2EVerify({
214
+ projectRoot: options.project,
215
+ slice: options.slice,
216
+ ...(options.dispatchId !== undefined ? { dispatchId: options.dispatchId } : {})
217
+ });
218
+ printResult(io, ok('e2e.verify', {
219
+ ...result,
220
+ slice: options.slice,
221
+ dispatchId: options.dispatchId ?? null
222
+ }), options.json);
205
223
  }
206
224
  catch (error) {
207
- printResult(io, fail('e2e.verify', 'E2E_VERIFY_FAILED', getErrorMessage(error), {}, [getErrorMessage(error)]), options.json);
225
+ printResult(io, fail('e2e.verify', 'E2E_VERIFY_FAILED', getErrorMessage(error), {}, [
226
+ getErrorMessage(error)
227
+ ]), options.json);
208
228
  process.exitCode = 1;
209
229
  }
210
230
  });
@@ -25,6 +25,6 @@
25
25
  * Per the "Enhancement, not new AI CLI" tenet: this command is a
26
26
  * download + read-only access layer. There is no `peaks ecc run`.
27
27
  */
28
- import { Command } from 'commander';
28
+ import type { Command } from 'commander';
29
29
  import { type ProgramIO } from '../cli-helpers.js';
30
30
  export declare function registerEccCommands(program: Command, io: ProgramIO): void;
@@ -1,4 +1,4 @@
1
- import { downloadToCache, listCachedAgents, readAgentSkill, readCacheManifest, } from 'peaks-loop-mut';
1
+ import { downloadToCache, listCachedAgents, readAgentSkill, readCacheManifest } from 'peaks-loop-mut';
2
2
  import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
3
3
  import { fail, ok } from 'peaks-loop-shared/result';
4
4
  export function registerEccCommands(program, io) {
@@ -16,7 +16,7 @@ export function registerEccCommands(program, io) {
16
16
  `Cache landed at ~/.peaks/cache/ecc-${result.sha}/agents/`,
17
17
  `Plugin-free copy materialized at ~/.peaks/agents/ecc/ (read it directly when the ECC plugin is absent)`,
18
18
  `Inspect with: peaks ecc ls`,
19
- `Consume one agent with: peaks ecc show <name>`,
19
+ `Consume one agent with: peaks ecc show <name>`
20
20
  ]);
21
21
  printResult(io, envelope, asJson);
22
22
  }
@@ -26,7 +26,7 @@ export function registerEccCommands(program, io) {
26
26
  'Network failure during ECC download. Manual fallback:',
27
27
  ' git clone https://github.com/affaan-m/ECC.git',
28
28
  ' Copy <repo>/agents/*.md into ~/.peaks/cache/ecc-<sha>/agents/.',
29
- ' Drop a minimal ecc-installed.json manifest into ~/.peaks/cache/.',
29
+ ' Drop a minimal ecc-installed.json manifest into ~/.peaks/cache/.'
30
30
  ]), asJson);
31
31
  process.exitCode = 1;
32
32
  }
@@ -41,19 +41,14 @@ export function registerEccCommands(program, io) {
41
41
  process.exitCode = 1;
42
42
  return;
43
43
  }
44
- printResult(io, ok('ecc.status', manifest, [], [
45
- `Inspect agents with: peaks ecc ls`,
46
- `Print one agent with: peaks ecc show <name>`,
47
- ]), asJson);
44
+ printResult(io, ok('ecc.status', manifest, [], [`Inspect agents with: peaks ecc ls`, `Print one agent with: peaks ecc show <name>`]), asJson);
48
45
  });
49
46
  addJsonOption(ecc
50
47
  .command('ls')
51
48
  .description('List cached agents from <cache>/agents/*.md with parsed frontmatter.')).action((options) => {
52
49
  const asJson = options.json === true;
53
50
  const agents = listCachedAgents();
54
- printResult(io, ok('ecc.ls', { agents }, [], [
55
- 'Print one with: `peaks ecc show <name>`',
56
- ]), asJson);
51
+ printResult(io, ok('ecc.ls', { agents }, [], ['Print one with: `peaks ecc show <name>`']), asJson);
57
52
  });
58
53
  addJsonOption(ecc
59
54
  .command('show <name>')
@@ -62,9 +57,7 @@ export function registerEccCommands(program, io) {
62
57
  .option('--max-lines <n>', 'cap stdout at N lines (default: unlimited)')).action((name, options) => {
63
58
  const asJson = options.json === true;
64
59
  if (!/^[a-z][a-z0-9-]*$/.test(name)) {
65
- printResult(io, fail('ecc.show', 'INVALID_NAME', `agent name must match ^[a-z][a-z0-9-]*$ (got "${name}")`, { name }, [
66
- 'Run `peaks ecc ls` to see valid agent names.',
67
- ]), asJson);
60
+ printResult(io, fail('ecc.show', 'INVALID_NAME', `agent name must match ^[a-z][a-z0-9-]*$ (got "${name}")`, { name }, ['Run `peaks ecc ls` to see valid agent names.']), asJson);
68
61
  process.exitCode = 1;
69
62
  return;
70
63
  }
@@ -72,7 +65,7 @@ export function registerEccCommands(program, io) {
72
65
  if (body === null) {
73
66
  printResult(io, fail('ecc.show', 'NOT_FOUND', `agent "${name}" is not in the cache`, { name }, [
74
67
  'Run `peaks ecc ls` to see available agents.',
75
- 'Or run `peaks ecc install` to (re-)populate the cache.',
68
+ 'Or run `peaks ecc install` to (re-)populate the cache.'
76
69
  ]), asJson);
77
70
  process.exitCode = 1;
78
71
  return;
@@ -83,9 +76,7 @@ export function registerEccCommands(program, io) {
83
76
  const lines = body.split(/\r?\n/);
84
77
  const startIdx = lines.findIndex((line) => new RegExp(`^#\\s+${escapeRegExp(heading)}\\s*$`).test(line));
85
78
  if (startIdx === -1) {
86
- printResult(io, fail('ecc.show', 'SECTION_NOT_FOUND', `section "# ${heading}" not found in ${name}.md`, { name, section: heading }, [
87
- 'Open the file directly to see section names.',
88
- ]), asJson);
79
+ printResult(io, fail('ecc.show', 'SECTION_NOT_FOUND', `section "# ${heading}" not found in ${name}.md`, { name, section: heading }, ['Open the file directly to see section names.']), asJson);
89
80
  process.exitCode = 1;
90
81
  return;
91
82
  }