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
@@ -22,46 +22,10 @@
22
22
  * the body content as UTF-8 bytes. The body MUST be the literal
23
23
  * markdown source — no normalization, no trailing-newline padding.
24
24
  */
25
- import type { Handoff, HandoffProbe } from './handoff-types.js';
25
+ import type { GateEvidence, Handoff, HandoffProbe } from './handoff-types.js';
26
+ export { handoffRelativePath, resolveHandoffPath } from './handoff-path-resolution.js';
26
27
  /** Compute the lowercase hex sha256 of a UTF-8 string. */
27
28
  export declare function sha256OfBody(body: string): string;
28
- /**
29
- * The canonical capsule path for ONE SLICE, relative to the project root.
30
- *
31
- * Slice `2026-09-14-prd-capsule-rid-scoping`: the capsule used to be one slot
32
- * per SESSION (`prd/handoff.md`), so the second slice's handoff silently
33
- * overwrote the first slice's — and `AUDIT_REQUIRES_HANDOFF` stayed green
34
- * because it never checked WHOSE rid the file named. Measured on
35
- * `2026-09-13-session-21878f`: a four-slice job passed that prerequisite on a
36
- * capsule left by a different line of work.
37
- *
38
- * This is the WRITE target, so it always carries the rid — a consumer-side
39
- * fallback here would leave a rid-scoped requirement with a bare-name writer,
40
- * which is the defect shape this slice exists to remove. Readers that must
41
- * tolerate pre-rid-scoping sessions call `resolveHandoffPath` instead.
42
- */
43
- export declare function handoffRelativePath(sessionId: string, requestId: string): string;
44
- /**
45
- * The capsule a CONSUMER should read for (session, requestId): the rid-scoped
46
- * path when it is on disk, else the pre-rid-scoping bare name. Returns null
47
- * when neither exists.
48
- *
49
- * Three sessions on disk still hold only the bare file
50
- * (`2026-09-06-session-a87ca4`, `2026-09-12-session-e37ef0`,
51
- * `2026-09-13-session-21878f`), so the legacy tier has to keep resolving for
52
- * the gate and for every reader below.
53
- *
54
- * `requestId` is optional because the detect-only audit surface reaches its
55
- * service without one. Such a caller can name only the bare path: a session
56
- * holding nothing but rid-scoped capsules reports missing rather than picking
57
- * among its siblings' capsules, which would re-open the cross-slice mix-up
58
- * this scoping exists to close (fail closed, not "some capsule is there").
59
- */
60
- export declare function resolveHandoffPath(opts: {
61
- projectRoot: string;
62
- sessionId: string;
63
- requestId?: string;
64
- }): string | null;
65
29
  /** Pure: produce a Handoff with the frontmatter populated. Hash is
66
30
  * computed here; callers MUST NOT pre-populate `handoffHash`. */
67
31
  export declare function initHandoff(opts: {
@@ -74,6 +38,26 @@ export declare function initHandoff(opts: {
74
38
  preservedBehavior: readonly string[];
75
39
  /** Override path; defaults to `.peaks/_runtime/<sid>/prd/handoff-<rid>.md`. */
76
40
  handoffPath?: string;
41
+ /** Paths to the gate evidence files, keyed by gate. Omitted field and
42
+ * empty map are equivalent here: neither renders a `gateEvidence` block,
43
+ * so a caller that declares nothing writes bytes identical to a pre-B1
44
+ * capsule.
45
+ *
46
+ * THIS IS NOT A SECOND SOURCE (B2). In production the value reaching this
47
+ * parameter is always `deriveGateEvidence(...)`
48
+ * (`services/prd/gate-evidence-derivation.ts`), which computes it from the
49
+ * request type and the gate table. This function stays pure — it does not
50
+ * read the type itself — so the map can be constructed without touching
51
+ * the disk; that is why the parameter exists rather than an internal call.
52
+ *
53
+ * SHAPE CONTRACT (F2 of `rid-b1-qa`, now enforced in both directions): a
54
+ * map this accepts is EXACTLY what `readHandoffGateEvidence` reports as
55
+ * `evidence` — `classifyGateEvidence` is the one shape rule behind both,
56
+ * and `parseHandoffContent` stores the classified map rather than the raw
57
+ * YAML. A declaration both paths REFUSE (`not-map` / `value-not-string`)
58
+ * is refused here by a throw and there by a status; neither silently
59
+ * produces a map the other cannot. */
60
+ gateEvidence?: GateEvidence;
77
61
  }): Handoff;
78
62
  /** Write a Handoff to disk. `projectRoot` is the absolute project
79
63
  * root (so the `.peaks/_runtime/...` path is resolved absolutely).
@@ -23,111 +23,30 @@
23
23
  * markdown source — no normalization, no trailing-newline padding.
24
24
  */
25
25
  import { createHash } from 'node:crypto';
26
- import { existsSync } from 'node:fs';
27
26
  import { mkdir, readFile, writeFile } from 'node:fs/promises';
28
27
  import { dirname, join } from 'node:path';
29
28
  import { parse as parseYaml } from 'yaml';
30
- import { isUnsafePathInput } from '../../shared/path-safety.js';
31
- import { REQUEST_ID_PATTERN } from '../artifacts/request-artifact-service.js';
32
- import { serializeHandoffFrontmatter } from './handoff-frontmatter.js';
33
- /** Required schema version for new handoffs. */
34
- const HANDOFF_SCHEMA_VERSION = '2';
29
+ import { classifyGateEvidence } from './handoff-gate-evidence.js';
30
+ import { HANDOFF_SCHEMA_VERSION, isGateEvidence, isSchemaVersion2, serializeHandoff } from './handoff-frontmatter-shape.js';
31
+ import { handoffRelativePath } from './handoff-path-resolution.js';
32
+ // Slice `b1-filesplit-campaign` (wave 3): the capsule PATH layer
33
+ // (`assertSafeHandoffIds` / `handoffRelativePath` / `resolveHandoffPath`) and the
34
+ // frontmatter field primitives (`HANDOFF_SCHEMA_VERSION` / `serializeHandoff` /
35
+ // `isSchemaVersion2` / `isGateEvidence`) moved VERBATIM to
36
+ // `./handoff-path-resolution.ts` and `./handoff-frontmatter-shape.ts` so this
37
+ // file clears the 300 raw-line cap. The public names below are re-exported from
38
+ // this path, so no importer changed; the id->path guard these joins carry is
39
+ // still measured — the new module is named in rule D's scanned set in
40
+ // `tests/unit/runtime/no-runtime-input-guard.test.ts`.
41
+ export { handoffRelativePath, resolveHandoffPath } from './handoff-path-resolution.js';
35
42
  /** Compute the lowercase hex sha256 of a UTF-8 string. */
36
43
  export function sha256OfBody(body) {
37
44
  return createHash('sha256').update(body, 'utf8').digest('hex');
38
45
  }
39
- /**
40
- * Both ids in a handoff path are caller-supplied path segments, so both are
41
- * checked at the join. Added 2026-09-14 (repair R1, security audit F2 of
42
- * `2026-09-14-cli-id-escape-instrumentation`).
43
- *
44
- * This function was introduced by `0536d5bd` — the commit that instrumented
45
- * this defect class — with neither id checked, and it sat outside rule D's
46
- * scanned layer, so the instrument could not see its own new member.
47
- * Measured on the pre-fix tree (`prd handoff init --apply`, temp project,
48
- * `ok: true` both times):
49
- *
50
- * --rid '../../../../../../README' replaced the project-root README.md
51
- * --sid '../../../../SIDOUT' wrote 4 levels above the project root
52
- *
53
- * The two axes need two different controls, for a recorded reason: the rid has
54
- * a pinned format (`REQUEST_ID_PATTERN`, no separator, no dot-dot, no drive)
55
- * and the sid has none, so it gets the segment check. `isUnsafePathInput`
56
- * alone is NOT enough for the rid — it admits `a/b` (two non-empty segments),
57
- * which `request-artifact-service.ts` would reject.
58
- *
59
- * Guarding HERE rather than at the three `prd`/`env` flags means every producer
60
- * that writes through this constructor — `initHandoff`'s default,
61
- * `handoff-auto-regen.ts`, `evidence-generator.ts` — is covered by the join
62
- * itself, not by each caller re-deciding.
63
- */
64
- function assertSafeHandoffIds(sessionId, requestId) {
65
- if (!REQUEST_ID_PATTERN.test(requestId)) {
66
- throw new Error(`Invalid request id: ${requestId} (expected letters, digits, dots, underscores, or dashes)`);
67
- }
68
- if (isUnsafePathInput(sessionId)) {
69
- throw new Error(`Invalid session id: ${sessionId} (must be a single path segment)`);
70
- }
71
- }
72
- /**
73
- * The canonical capsule path for ONE SLICE, relative to the project root.
74
- *
75
- * Slice `2026-09-14-prd-capsule-rid-scoping`: the capsule used to be one slot
76
- * per SESSION (`prd/handoff.md`), so the second slice's handoff silently
77
- * overwrote the first slice's — and `AUDIT_REQUIRES_HANDOFF` stayed green
78
- * because it never checked WHOSE rid the file named. Measured on
79
- * `2026-09-13-session-21878f`: a four-slice job passed that prerequisite on a
80
- * capsule left by a different line of work.
81
- *
82
- * This is the WRITE target, so it always carries the rid — a consumer-side
83
- * fallback here would leave a rid-scoped requirement with a bare-name writer,
84
- * which is the defect shape this slice exists to remove. Readers that must
85
- * tolerate pre-rid-scoping sessions call `resolveHandoffPath` instead.
86
- */
87
- export function handoffRelativePath(sessionId, requestId) {
88
- assertSafeHandoffIds(sessionId, requestId);
89
- return join('.peaks', '_runtime', sessionId, 'prd', `handoff-${requestId}.md`);
90
- }
91
- /**
92
- * The capsule a CONSUMER should read for (session, requestId): the rid-scoped
93
- * path when it is on disk, else the pre-rid-scoping bare name. Returns null
94
- * when neither exists.
95
- *
96
- * Three sessions on disk still hold only the bare file
97
- * (`2026-09-06-session-a87ca4`, `2026-09-12-session-e37ef0`,
98
- * `2026-09-13-session-21878f`), so the legacy tier has to keep resolving for
99
- * the gate and for every reader below.
100
- *
101
- * `requestId` is optional because the detect-only audit surface reaches its
102
- * service without one. Such a caller can name only the bare path: a session
103
- * holding nothing but rid-scoped capsules reports missing rather than picking
104
- * among its siblings' capsules, which would re-open the cross-slice mix-up
105
- * this scoping exists to close (fail closed, not "some capsule is there").
106
- */
107
- export function resolveHandoffPath(opts) {
108
- // The legacy bare-name candidate below is a second join of the same sid, in a
109
- // second function, so it needs the sid guarded in its own right — the
110
- // optional-requestId branch reaches `handoffRelativePath` (guarded there), but
111
- // the branch that is taken when a caller has NO rid reaches this join only.
112
- if (isUnsafePathInput(opts.sessionId)) {
113
- throw new Error(`Invalid session id: ${opts.sessionId} (must be a single path segment)`);
114
- }
115
- const candidates = [
116
- ...(opts.requestId !== undefined ? [handoffRelativePath(opts.sessionId, opts.requestId)] : []),
117
- join('.peaks', '_runtime', opts.sessionId, 'prd', 'handoff.md')
118
- ];
119
- for (const relative of candidates) {
120
- const absolute = join(opts.projectRoot, relative);
121
- if (existsSync(absolute))
122
- return absolute;
123
- }
124
- return null;
125
- }
126
46
  /** Pure: produce a Handoff with the frontmatter populated. Hash is
127
47
  * computed here; callers MUST NOT pre-populate `handoffHash`. */
128
48
  export function initHandoff(opts) {
129
- const handoffPath = opts.handoffPath ??
130
- handoffRelativePath(opts.sessionId, opts.requestId);
49
+ const handoffPath = opts.handoffPath ?? handoffRelativePath(opts.sessionId, opts.requestId);
131
50
  const handoffHash = sha256OfBody(opts.body);
132
51
  const frontmatter = {
133
52
  requestId: opts.requestId,
@@ -139,6 +58,12 @@ export function initHandoff(opts) {
139
58
  acceptanceCriteria: [...opts.acceptanceCriteria],
140
59
  preservedBehavior: [...opts.preservedBehavior],
141
60
  handoffPath,
61
+ // Conditionally spread rather than `gateEvidence: undefined`: this
62
+ // tsconfig sets `exactOptionalPropertyTypes`, and an explicit `undefined`
63
+ // would also make `serializeHandoffFrontmatter`'s
64
+ // `frontmatter.gateEvidence` key present-but-undefined for every caller
65
+ // that declares nothing.
66
+ ...(opts.gateEvidence === undefined ? {} : { gateEvidence: opts.gateEvidence })
142
67
  };
143
68
  return { frontmatter, body: opts.body };
144
69
  }
@@ -187,7 +112,7 @@ export async function verifyHandoff(filePath) {
187
112
  return {
188
113
  ok: false,
189
114
  reason: 'schema-version-mismatch',
190
- actualHash: handoff.frontmatter.handoffHash,
115
+ actualHash: handoff.frontmatter.handoffHash
191
116
  };
192
117
  }
193
118
  const actualHash = sha256OfBody(handoff.body);
@@ -196,7 +121,7 @@ export async function verifyHandoff(filePath) {
196
121
  ok: false,
197
122
  reason: 'hash-mismatch',
198
123
  actualHash,
199
- expectedHash: handoff.frontmatter.handoffHash,
124
+ expectedHash: handoff.frontmatter.handoffHash
200
125
  };
201
126
  }
202
127
  return { ok: true, actualHash, expectedHash: actualHash };
@@ -233,39 +158,24 @@ function parseHandoffContent(content) {
233
158
  // frontmatter is returned with the canonical `'2'` rather than the raw scalar
234
159
  // — otherwise every downstream `=== '2'` comparison would depend on which
235
160
  // producer wrote the file.
161
+ //
162
+ // F2: `gateEvidence` is normalized the same way, for the same reason. The
163
+ // raw YAML value is not returned: the CLASSIFIED map is. Unknown keys are
164
+ // not part of `GateEvidence`, so storing the raw object made the interface
165
+ // claim a five-key map while holding a six-key one — and made
166
+ // `frontmatter.gateEvidence` disagree with what the field's reader reports
167
+ // for the same bytes. The predicate above has already rejected every shape
168
+ // that is not `absent` or `ok`, so this spread only ever adds a clean map.
169
+ const gateEvidenceShape = classifyGateEvidence(parsed.gateEvidence);
236
170
  return {
237
- frontmatter: { ...parsed, schemaVersion: HANDOFF_SCHEMA_VERSION },
171
+ frontmatter: {
172
+ ...parsed,
173
+ schemaVersion: HANDOFF_SCHEMA_VERSION,
174
+ ...(gateEvidenceShape.kind === 'ok' ? { gateEvidence: gateEvidenceShape.evidence } : {})
175
+ },
238
176
  body
239
177
  };
240
178
  }
241
- function serializeHandoff(handoff) {
242
- // The one canonical frontmatter rendering, shared with
243
- // `handoff-auto-regen.ts`. `yaml.stringify` used to render this block and
244
- // emitted `schemaVersion: "2"` + a bare `handoffHash:`, which the
245
- // `AUDIT_REQUIRES_HANDOFF` gate and both audit loaders all reject.
246
- return `${serializeHandoffFrontmatter(handoff.frontmatter)}${handoff.body}`;
247
- }
248
- /**
249
- * N1: accept BOTH shapes of `schemaVersion` — the string `'2'` and the bare
250
- * YAML number `2` — and reject any other value.
251
- *
252
- * The reader used to require `typeof v.schemaVersion === 'string'`. That made
253
- * `readHandoff` refuse `prd/handoff.md` written by `handoff-auto-regen.ts`,
254
- * which emits the unquoted `schemaVersion: 2`, while the
255
- * `AUDIT_REQUIRES_HANDOFF` prereq — a SUBSTRING check for `schemaVersion: 2` —
256
- * happily passed the same bytes. So the gate that exists to guarantee a
257
- * readable handoff was satisfied by a handoff the parser would not read, and
258
- * `peaks prd handoff verify` exited 1 on a healthy file.
259
- *
260
- * Slice `2026-09-14-handoff-writer-gate-divergence` then fixed the other half:
261
- * the writer no longer emits the quoted form at all (see
262
- * `handoff-frontmatter.ts`). This tolerance stays because handoffs already on
263
- * disk were written by the old writer and by hand; the writer fix must not
264
- * retroactively make them unreadable.
265
- */
266
- function isSchemaVersion2(value) {
267
- return value === HANDOFF_SCHEMA_VERSION || value === 2;
268
- }
269
179
  /**
270
180
  * The READER's shape check — deliberately looser than `verifyHandoff`:
271
181
  * `handoffHash` must be a string, and nothing about its VALUE is validated here.
@@ -296,5 +206,6 @@ function isHandoffFrontmatter(value) {
296
206
  Array.isArray(v.goals) &&
297
207
  Array.isArray(v.acceptanceCriteria) &&
298
208
  Array.isArray(v.preservedBehavior) &&
299
- typeof v.handoffPath === 'string');
209
+ typeof v.handoffPath === 'string' &&
210
+ isGateEvidence(v.gateEvidence));
300
211
  }
@@ -24,6 +24,39 @@
24
24
  * IDs in frontmatter). Every consumer MUST refuse a handoff whose
25
25
  * frontmatter is missing or carries `schemaVersion !== '2'`. */
26
26
  export type HandoffSchemaVersion = '2';
27
+ /**
28
+ * The FIVE fixed `gateEvidence` keys, in canonical serialization order.
29
+ *
30
+ * This array is the single source of truth for the key set: the
31
+ * `GateEvidenceKey` type is derived from it, the serializer iterates it,
32
+ * and the reader matches against it. Slice B1
33
+ * (`2026-09-17-4-0-51-cleanup`) collapsed four mutually contradictory
34
+ * descriptions of this field (a `string[]` in the reader's code comment,
35
+ * a `string[]` of PATHS in its tests, a map of paths in
36
+ * `skills/bee/peaks-rd/references/writing-handoff-frontmatter.md:35-41`)
37
+ * onto the documented map. Do NOT re-spell these five literals anywhere
38
+ * else — a second copy is how the four descriptions diverged.
39
+ */
40
+ export declare const GATE_EVIDENCE_KEYS: readonly ["projectScan", "prdHandoff", "codeReview", "securityReview", "perfBaseline"];
41
+ /** One of the five `gateEvidence` keys. Derived, never re-spelled. */
42
+ export type GateEvidenceKey = (typeof GATE_EVIDENCE_KEYS)[number];
43
+ /**
44
+ * Is `key` one of the five? THE membership test — the serializer's
45
+ * unknown-key check, the reader's classifier and the shape predicate all ask
46
+ * this one function, so no caller can disagree about what the key set is.
47
+ */
48
+ export declare function isGateEvidenceKey(key: string): key is GateEvidenceKey;
49
+ /**
50
+ * `gateEvidence` — a partial map from gate key to the PATH of that gate's
51
+ * evidence file. Partial because a slice may legitimately not have run
52
+ * every gate; the consumer (Gate C, wired in slice B2) fails on a missing
53
+ * key, which is where "did you declare it?" is decided — NOT here.
54
+ *
55
+ * Unknown keys are not expressible in this type. The reader still reports
56
+ * them at runtime (`unknownKeys`) so a typo is diagnosable rather than
57
+ * silently dropped.
58
+ */
59
+ export type GateEvidence = Readonly<Partial<Record<GateEvidenceKey, string>>>;
27
60
  /**
28
61
  * Handoff frontmatter — the structured header block between the
29
62
  * leading and trailing `---` fences. `readonly` enforces D1's
@@ -47,6 +80,13 @@ export interface HandoffFrontmatter {
47
80
  readonly preservedBehavior: readonly string[];
48
81
  /** Absolute path to the handoff file on disk (for re-verify). */
49
82
  readonly handoffPath: string;
83
+ /** Paths to the evidence files peaks-qa validates at Gate C, keyed by
84
+ * gate. ABSENT (not `{}`) when the slice declared none — the serializer
85
+ * omits the block entirely rather than emitting an empty map, so old
86
+ * handoffs gain no noise line. Read it through
87
+ * `readHandoffGateEvidence`, which reports WHY it is unusable instead of
88
+ * collapsing every failure to `null`. */
89
+ readonly gateEvidence?: GateEvidence;
50
90
  }
51
91
  /** Handoff — frontmatter + body. The body is the markdown source of
52
92
  * truth that sub-agents and downstream consumers parse. */
@@ -20,4 +20,31 @@
20
20
  * `.peaks/_runtime/current-change`). NEVER write under
21
21
  * `.peaks/_runtime/<change-id>/...` directly (slice 2.8.3 hard ban).
22
22
  */
23
- export {};
23
+ /**
24
+ * The FIVE fixed `gateEvidence` keys, in canonical serialization order.
25
+ *
26
+ * This array is the single source of truth for the key set: the
27
+ * `GateEvidenceKey` type is derived from it, the serializer iterates it,
28
+ * and the reader matches against it. Slice B1
29
+ * (`2026-09-17-4-0-51-cleanup`) collapsed four mutually contradictory
30
+ * descriptions of this field (a `string[]` in the reader's code comment,
31
+ * a `string[]` of PATHS in its tests, a map of paths in
32
+ * `skills/bee/peaks-rd/references/writing-handoff-frontmatter.md:35-41`)
33
+ * onto the documented map. Do NOT re-spell these five literals anywhere
34
+ * else — a second copy is how the four descriptions diverged.
35
+ */
36
+ export const GATE_EVIDENCE_KEYS = [
37
+ 'projectScan',
38
+ 'prdHandoff',
39
+ 'codeReview',
40
+ 'securityReview',
41
+ 'perfBaseline'
42
+ ];
43
+ /**
44
+ * Is `key` one of the five? THE membership test — the serializer's
45
+ * unknown-key check, the reader's classifier and the shape predicate all ask
46
+ * this one function, so no caller can disagree about what the key set is.
47
+ */
48
+ export function isGateEvidenceKey(key) {
49
+ return GATE_EVIDENCE_KEYS.includes(key);
50
+ }
@@ -17,10 +17,30 @@
17
17
  import { readFileSync, existsSync, readdirSync, statSync } from 'node:fs';
18
18
  import { join, resolve } from 'node:path';
19
19
  const BLOCK_HEADINGS = [
20
- { block: 1, name: '业务场景', pattern: /^#{1,4}\s*(?:\d+\.\s*)?业务场景[^\n]*$/m, requiredByDefault: true },
21
- { block: 2, name: '边界 case', pattern: /^#{1,4}\s*(?:\d+\.\s*)?边界\s*case[^\n]*$/mi, requiredByDefault: true },
22
- { block: 3, name: 'UI 装配意图', pattern: /^#{1,4}\s*(?:\d+\.\s*)?UI\s*装配[^\n]*$/mi, requiredByDefault: true },
23
- { block: 4, name: '上游基线', pattern: /^#{1,4}\s*(?:\d+\.\s*)?上游基线[^\n]*$/m, requiredByDefault: false }
20
+ {
21
+ block: 1,
22
+ name: '业务场景',
23
+ pattern: /^#{1,4}\s*(?:\d+\.\s*)?业务场景[^\n]*$/m,
24
+ requiredByDefault: true
25
+ },
26
+ {
27
+ block: 2,
28
+ name: '边界 case',
29
+ pattern: /^#{1,4}\s*(?:\d+\.\s*)?边界\s*case[^\n]*$/im,
30
+ requiredByDefault: true
31
+ },
32
+ {
33
+ block: 3,
34
+ name: 'UI 装配意图',
35
+ pattern: /^#{1,4}\s*(?:\d+\.\s*)?UI\s*装配[^\n]*$/im,
36
+ requiredByDefault: true
37
+ },
38
+ {
39
+ block: 4,
40
+ name: '上游基线',
41
+ pattern: /^#{1,4}\s*(?:\d+\.\s*)?上游基线[^\n]*$/m,
42
+ requiredByDefault: false
43
+ }
24
44
  ];
25
45
  const MIN_CONTENT_LENGTH = 50;
26
46
  export function findPrdArtifact(projectRoot, requestId) {
@@ -75,9 +95,7 @@ export function checkPrdBlocks(projectRoot, requestId) {
75
95
  required: h.requiredByDefault,
76
96
  present: false,
77
97
  content: null,
78
- issues: h.requiredByDefault
79
- ? ['PRD artifact not found — write the prd body first.']
80
- : []
98
+ issues: h.requiredByDefault ? ['PRD artifact not found — write the prd body first.'] : []
81
99
  })),
82
100
  ok: false
83
101
  };
@@ -95,7 +113,9 @@ export function checkPrdBlocks(projectRoot, requestId) {
95
113
  present: false,
96
114
  content: null,
97
115
  issues: required
98
- ? [`Missing required block: ${h.name}. Add a heading like "## ${h.name}" with at least ${MIN_CONTENT_LENGTH} chars of content.`]
116
+ ? [
117
+ `Missing required block: ${h.name}. Add a heading like "## ${h.name}" with at least ${MIN_CONTENT_LENGTH} chars of content.`
118
+ ]
99
119
  : []
100
120
  };
101
121
  }
@@ -42,11 +42,7 @@ const SOURCE_FILE_EXTENSIONS = /\.(tsx?|jsx?|vue|svelte)$/;
42
42
  * here — those projects should be detected via `package.json`
43
43
  * workspaces[] field below.
44
44
  */
45
- const MONOREPO_ROOT_CONFIGS = [
46
- 'pnpm-workspace.yaml',
47
- 'turbo.json',
48
- 'nx.json'
49
- ];
45
+ const MONOREPO_ROOT_CONFIGS = ['pnpm-workspace.yaml', 'turbo.json', 'nx.json'];
50
46
  /** True iff the project root declares pnpm / yarn / npm workspaces. */
51
47
  function projectHasWorkspacesInPackageJson(projectRoot) {
52
48
  const pkgPath = join(projectRoot, 'package.json');
@@ -10,6 +10,13 @@
10
10
  * errors propagate (no silent failures).
11
11
  */
12
12
  import type { BusinessKnowledge, ProjectScan } from './project-scan-types.js';
13
+ /**
14
+ * `.peaks/project-scan/project-scan.md`, project-relative. Exported so the
15
+ * gate-evidence derivation (`gate-evidence-derivation.ts`) can declare this
16
+ * path without spelling the literal a fourth time — it was already inlined in
17
+ * `project-commands.ts`, `workspace/init-command.ts` and here.
18
+ */
19
+ export declare const PROJECT_SCAN_RELATIVE: string;
13
20
  /** Read `.peaks/project-scan/project-scan.md`. Returns `null` when the
14
21
  * file or its parent dir is absent (fresh project). Throws on other
15
22
  * IO failures or malformed YAML. */
@@ -12,7 +12,13 @@
12
12
  import { readFile } from 'node:fs/promises';
13
13
  import { join } from 'node:path';
14
14
  import { parse as parseYaml } from 'yaml';
15
- const PROJECT_SCAN_RELATIVE = join('.peaks', 'project-scan', 'project-scan.md');
15
+ /**
16
+ * `.peaks/project-scan/project-scan.md`, project-relative. Exported so the
17
+ * gate-evidence derivation (`gate-evidence-derivation.ts`) can declare this
18
+ * path without spelling the literal a fourth time — it was already inlined in
19
+ * `project-commands.ts`, `workspace/init-command.ts` and here.
20
+ */
21
+ export const PROJECT_SCAN_RELATIVE = join('.peaks', 'project-scan', 'project-scan.md');
16
22
  const BUSINESS_KNOWLEDGE_RELATIVE = join('.peaks', 'project-scan', 'business-knowledge.md');
17
23
  /** Read `.peaks/project-scan/project-scan.md`. Returns `null` when the
18
24
  * file or its parent dir is absent (fresh project). Throws on other
@@ -53,10 +59,7 @@ async function readOptionalFile(projectRoot, relativePath) {
53
59
  }
54
60
  }
55
61
  function isEnoent(error) {
56
- return (typeof error === 'object' &&
57
- error !== null &&
58
- 'code' in error &&
59
- error.code === 'ENOENT');
62
+ return typeof error === 'object' && error !== null && 'code' in error && error.code === 'ENOENT';
60
63
  }
61
64
  function parseProjectScanContent(content) {
62
65
  const { frontmatter } = splitFrontmatter(content);
@@ -397,10 +397,7 @@ async function readOptionalFile(absolutePath) {
397
397
  }
398
398
  }
399
399
  function isEnoent(error) {
400
- return (typeof error === 'object' &&
401
- error !== null &&
402
- 'code' in error &&
403
- error.code === 'ENOENT');
400
+ return typeof error === 'object' && error !== null && 'code' in error && error.code === 'ENOENT';
404
401
  }
405
402
  /** Serialize a `BusinessKnowledge` to the markdown-table body format.
406
403
  * Matches the bootstrap template at `.peaks/project-scan/business-knowledge.md`. */
@@ -1,6 +1,6 @@
1
1
  import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
2
2
  import { dirname, join } from 'node:path';
3
- import { DEFAULT_PREFERENCES, FANOUT_MODES, isFanoutMode, PREFERENCES_SCHEMA_VERSION, } from './preferences-types.js';
3
+ import { DEFAULT_PREFERENCES, FANOUT_MODES, isFanoutMode, PREFERENCES_SCHEMA_VERSION } from './preferences-types.js';
4
4
  const PREFS_REL_PATH = '.peaks/preferences.json';
5
5
  export { DEFAULT_PREFERENCES, PREFERENCES_SCHEMA_VERSION };
6
6
  export function preferencesPath(projectRoot) {
@@ -93,7 +93,7 @@ function mergePreferences(base, overrides) {
93
93
  // that already specified `defaultMode` in their preferences.json.
94
94
  const shallow = {
95
95
  ...base,
96
- ...Object.fromEntries(definedEntries),
96
+ ...Object.fromEntries(definedEntries)
97
97
  };
98
98
  const overrideFanout = overrides.fanout;
99
99
  if (overrideFanout !== undefined &&
@@ -107,7 +107,7 @@ function mergePreferences(base, overrides) {
107
107
  }
108
108
  return {
109
109
  ...shallow,
110
- schema_version: PREFERENCES_SCHEMA_VERSION,
110
+ schema_version: PREFERENCES_SCHEMA_VERSION
111
111
  };
112
112
  }
113
113
  export function migratePreferences(projectRoot, opts = {}) {
@@ -122,9 +122,7 @@ export function migratePreferences(projectRoot, opts = {}) {
122
122
  catch (err) {
123
123
  throw new Error(`PREFERENCES_JSON_INVALID: failed to parse ${filePath}: ${err.message}`);
124
124
  }
125
- const fromVersion = typeof raw.schema_version === 'string'
126
- ? raw.schema_version
127
- : 'unknown';
125
+ const fromVersion = typeof raw.schema_version === 'string' ? raw.schema_version : 'unknown';
128
126
  if (fromVersion === PREFERENCES_SCHEMA_VERSION) {
129
127
  return {
130
128
  fromVersion,
@@ -158,9 +156,9 @@ export function migratePreferences(projectRoot, opts = {}) {
158
156
  const migrated = mergePreferences(DEFAULT_PREFERENCES, {
159
157
  ...raw,
160
158
  fanout: typeof raw.fanout === 'object' && raw.fanout !== null && !Array.isArray(raw.fanout)
161
- ? (raw.fanout.defaultMode === 'serial'
159
+ ? raw.fanout.defaultMode === 'serial'
162
160
  ? { defaultMode: 'fan-out' }
163
- : raw.fanout)
161
+ : raw.fanout
164
162
  : { defaultMode: 'fan-out' }
165
163
  });
166
164
  let written = false;
@@ -26,12 +26,12 @@ export const DEFAULT_PREFERENCES = {
26
26
  classifyRules: {
27
27
  feature_threshold_files: 10,
28
28
  feature_threshold_lines: 100,
29
- runtime_clean_grace_hours: 24,
29
+ runtime_clean_grace_hours: 24
30
30
  },
31
31
  swarmSpeculative: {
32
32
  enabled: true,
33
33
  maxConcurrent: 3,
34
- minHitRate: 0.5,
34
+ minHitRate: 0.5
35
35
  },
36
36
  loopAutonomousEnabled: false,
37
37
  agentShieldEnabled: false,
@@ -55,6 +55,6 @@ export const DEFAULT_PREFERENCES = {
55
55
  warmItemCap: 4,
56
56
  warmMinTokenHits: 1,
57
57
  selectionTimeBudgetMs: 200,
58
- includeBodies: false,
59
- },
58
+ includeBodies: false
59
+ }
60
60
  };
@@ -0,0 +1,41 @@
1
+ /**
2
+ * `src/services/qa/bdd-test-style-contract.ts`
3
+ *
4
+ * Verdict types and pure string matchers extracted verbatim from
5
+ * `bdd-test-style-verifier.ts` (wave 2, file-size cap campaign) so the
6
+ * verifier stays under the 300 raw-line cap. Mechanical move only —
7
+ * the verifier re-exports every public type from its original path.
8
+ */
9
+ /** Structured failure reasons the verifier can return. */
10
+ export type BddStyleFailureReason = 'missing-given-when-then' | 'description-no-should-when';
11
+ /** Successful verdict — includes the count of inspected `it`/`test` calls. */
12
+ export interface BddStyleOk {
13
+ readonly ok: true;
14
+ readonly scanned: number;
15
+ }
16
+ /** Structured failure verdict — the file/line makes the rejection actionable. */
17
+ export interface BddStyleFail {
18
+ readonly ok: false;
19
+ readonly reason: BddStyleFailureReason;
20
+ readonly file: string;
21
+ readonly line: number;
22
+ /** For `description-no-should-when`: the original description. */
23
+ readonly description?: string;
24
+ /** For `missing-given-when-then`: a stable string the caller can compare. */
25
+ readonly expected?: string;
26
+ }
27
+ export type BddStyleVerdict = BddStyleOk | BddStyleFail;
28
+ /** Public input surface — keep small so the contract is hard to misuse. */
29
+ export interface VerifyBddStyleInput {
30
+ readonly projectRoot: string;
31
+ readonly testFiles: readonly string[];
32
+ }
33
+ /**
34
+ * Match the three leading comments against the BDD triple. Each
35
+ * entry must be a `// <keyword>:` line (with optional trailing
36
+ * whitespace); the keywords must appear in `given`, `when`, `then`
37
+ * order, case-insensitive.
38
+ */
39
+ export declare function matchesBddTriple(triple: readonly string[]): boolean;
40
+ /** True when `text` contains `when` or `should` as a whole word. */
41
+ export declare function hasWhenOrShould(text: string): boolean;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * `src/services/qa/bdd-test-style-contract.ts`
3
+ *
4
+ * Verdict types and pure string matchers extracted verbatim from
5
+ * `bdd-test-style-verifier.ts` (wave 2, file-size cap campaign) so the
6
+ * verifier stays under the 300 raw-line cap. Mechanical move only —
7
+ * the verifier re-exports every public type from its original path.
8
+ */
9
+ /** Number of comment lines that make up the BDD triple (`given`/`when`/`then`). */
10
+ const BDD_TRIPLE_SIZE = 3;
11
+ /**
12
+ * Match the three leading comments against the BDD triple. Each
13
+ * entry must be a `// <keyword>:` line (with optional trailing
14
+ * whitespace); the keywords must appear in `given`, `when`, `then`
15
+ * order, case-insensitive.
16
+ */
17
+ export function matchesBddTriple(triple) {
18
+ if (triple.length !== BDD_TRIPLE_SIZE)
19
+ return false;
20
+ // Each entry must be a `// <keyword>:` line, optionally followed
21
+ // by descriptive text. The Slice A migrator's `buildCommentBlock`
22
+ // produces `// given: the test setup` / `// when: the function
23
+ // under test is invoked` / `// then: the result matches the
24
+ // expectation` — the `when` line uses two spaces after the colon
25
+ // for visual alignment with `given:` and `then:`, so the regex
26
+ // is intentionally permissive about trailing text.
27
+ const patterns = [
28
+ /^\s*\/\/\s*given\s*:/i,
29
+ /^\s*\/\/\s*when\s*:/i,
30
+ /^\s*\/\/\s*then\s*:/i
31
+ ];
32
+ return patterns.every((pat, i) => pat.test(triple[i] ?? ''));
33
+ }
34
+ /** True when `text` contains `when` or `should` as a whole word. */
35
+ export function hasWhenOrShould(text) {
36
+ return /(\bwhen\b|\bshould\b)/i.test(text);
37
+ }