peaks-loop 4.1.2 → 4.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (717) hide show
  1. package/.claude-plugin/marketplace.json +136 -47
  2. package/CHANGELOG.md +112 -0
  3. package/README-en.md +1 -1
  4. package/README.md +1 -1
  5. package/contracts/readonly-argv-whitelist.json +211 -0
  6. package/dist/cli/commands/asset-command-shared.d.ts +12 -0
  7. package/dist/cli/commands/asset-command-shared.js +45 -0
  8. package/dist/cli/commands/asset-commands.d.ts +6 -1
  9. package/dist/cli/commands/asset-commands.js +11 -372
  10. package/dist/cli/commands/asset-crystallize-command.d.ts +3 -0
  11. package/dist/cli/commands/asset-crystallize-command.js +60 -0
  12. package/dist/cli/commands/asset-crystallize-payload.d.ts +47 -0
  13. package/dist/cli/commands/asset-crystallize-payload.js +85 -0
  14. package/dist/cli/commands/asset-crystallize-runner.d.ts +3 -0
  15. package/dist/cli/commands/asset-crystallize-runner.js +133 -0
  16. package/dist/cli/commands/asset-dispose-command.d.ts +3 -0
  17. package/dist/cli/commands/asset-dispose-command.js +99 -0
  18. package/dist/cli/commands/asset-status-command.d.ts +3 -0
  19. package/dist/cli/commands/asset-status-command.js +100 -0
  20. package/dist/cli/commands/audit-artifact-runners.d.ts +16 -0
  21. package/dist/cli/commands/audit-artifact-runners.js +170 -0
  22. package/dist/cli/commands/audit-command-shared.d.ts +97 -0
  23. package/dist/cli/commands/audit-command-shared.js +60 -0
  24. package/dist/cli/commands/audit-commands.d.ts +7 -31
  25. package/dist/cli/commands/audit-commands.js +64 -473
  26. package/dist/cli/commands/audit-goal-runners.d.ts +17 -0
  27. package/dist/cli/commands/audit-goal-runners.js +114 -0
  28. package/dist/cli/commands/audit-red-lines-runners.d.ts +11 -0
  29. package/dist/cli/commands/audit-red-lines-runners.js +43 -0
  30. package/dist/cli/commands/audit-refusal-data.d.ts +23 -0
  31. package/dist/cli/commands/audit-refusal-data.js +69 -0
  32. package/dist/cli/commands/audit-static-runners.d.ts +13 -0
  33. package/dist/cli/commands/audit-static-runners.js +139 -0
  34. package/dist/cli/commands/await-runners.d.ts +11 -0
  35. package/dist/cli/commands/await-runners.js +148 -0
  36. package/dist/cli/commands/baseline-audit-command.d.ts +3 -0
  37. package/dist/cli/commands/baseline-audit-command.js +64 -0
  38. package/dist/cli/commands/baseline-command-shared.d.ts +23 -0
  39. package/dist/cli/commands/baseline-command-shared.js +39 -0
  40. package/dist/cli/commands/baseline-commands.js +33 -313
  41. package/dist/cli/commands/baseline-freeze-commands.d.ts +4 -0
  42. package/dist/cli/commands/baseline-freeze-commands.js +81 -0
  43. package/dist/cli/commands/baseline-guard-command.d.ts +3 -0
  44. package/dist/cli/commands/baseline-guard-command.js +52 -0
  45. package/dist/cli/commands/baseline-read-commands.d.ts +5 -0
  46. package/dist/cli/commands/baseline-read-commands.js +72 -0
  47. package/dist/cli/commands/baseline-rollback-commands.d.ts +4 -0
  48. package/dist/cli/commands/baseline-rollback-commands.js +88 -0
  49. package/dist/cli/commands/classify-downgrade-command.d.ts +9 -0
  50. package/dist/cli/commands/classify-downgrade-command.js +21 -0
  51. package/dist/cli/commands/classify-run-command.d.ts +9 -0
  52. package/dist/cli/commands/classify-run-command.js +73 -0
  53. package/dist/cli/commands/classify-signals.d.ts +5 -0
  54. package/dist/cli/commands/classify-signals.js +104 -0
  55. package/dist/cli/commands/code-auto-compact-command.d.ts +3 -0
  56. package/dist/cli/commands/code-auto-compact-command.js +124 -0
  57. package/dist/cli/commands/code-auto-compact-envelope.d.ts +22 -0
  58. package/dist/cli/commands/code-auto-compact-envelope.js +39 -0
  59. package/dist/cli/commands/code-context-audit-command.d.ts +3 -0
  60. package/dist/cli/commands/code-context-audit-command.js +68 -0
  61. package/dist/cli/commands/code-context-now-command.d.ts +3 -0
  62. package/dist/cli/commands/code-context-now-command.js +124 -0
  63. package/dist/cli/commands/code-context-now-envelope.d.ts +66 -0
  64. package/dist/cli/commands/code-context-now-envelope.js +136 -0
  65. package/dist/cli/commands/code-context-now-mapping.d.ts +27 -0
  66. package/dist/cli/commands/code-context-now-mapping.js +43 -0
  67. package/dist/cli/commands/code-emit-handoff-command.d.ts +3 -0
  68. package/dist/cli/commands/code-emit-handoff-command.js +136 -0
  69. package/dist/cli/commands/code-gate-step-08-command.d.ts +3 -0
  70. package/dist/cli/commands/code-gate-step-08-command.js +155 -0
  71. package/dist/cli/commands/code-post-compact-detect-command.d.ts +3 -0
  72. package/dist/cli/commands/code-post-compact-detect-command.js +50 -0
  73. package/dist/cli/commands/code-runtime-commands.d.ts +9 -43
  74. package/dist/cli/commands/code-runtime-commands.js +20 -672
  75. package/dist/cli/commands/code-runtime-session.d.ts +1 -0
  76. package/dist/cli/commands/code-runtime-session.js +15 -0
  77. package/dist/cli/commands/codegraph-command-options.d.ts +22 -0
  78. package/dist/cli/commands/codegraph-command-options.js +22 -0
  79. package/dist/cli/commands/codegraph-commands.d.ts +2 -2
  80. package/dist/cli/commands/codegraph-commands.js +14 -397
  81. package/dist/cli/commands/codegraph-config-restore-command.d.ts +3 -0
  82. package/dist/cli/commands/codegraph-config-restore-command.js +200 -0
  83. package/dist/cli/commands/codegraph-proxy-commands.d.ts +10 -0
  84. package/dist/cli/commands/codegraph-proxy-commands.js +159 -0
  85. package/dist/cli/commands/codegraph-repair-commands.d.ts +3 -0
  86. package/dist/cli/commands/codegraph-repair-commands.js +94 -0
  87. package/dist/cli/commands/codegraph-status-command.d.ts +1 -1
  88. package/dist/cli/commands/codegraph-status-command.js +27 -214
  89. package/dist/cli/commands/codegraph-status-integrity.d.ts +44 -0
  90. package/dist/cli/commands/codegraph-status-integrity.js +121 -0
  91. package/dist/cli/commands/codegraph-status-json.d.ts +5 -0
  92. package/dist/cli/commands/codegraph-status-json.js +127 -0
  93. package/dist/cli/commands/compact-command.d.ts +6 -2
  94. package/dist/cli/commands/compact-command.js +12 -559
  95. package/dist/cli/commands/compact-dry-run-command.d.ts +3 -0
  96. package/dist/cli/commands/compact-dry-run-command.js +87 -0
  97. package/dist/cli/commands/compact-force-command.d.ts +3 -0
  98. package/dist/cli/commands/compact-force-command.js +98 -0
  99. package/dist/cli/commands/compact-harness-window-command.d.ts +3 -0
  100. package/dist/cli/commands/compact-harness-window-command.js +174 -0
  101. package/dist/cli/commands/compact-history-command.d.ts +3 -0
  102. package/dist/cli/commands/compact-history-command.js +89 -0
  103. package/dist/cli/commands/compact-read-commands.d.ts +3 -0
  104. package/dist/cli/commands/compact-read-commands.js +123 -0
  105. package/dist/cli/commands/compact-settle-command.d.ts +3 -0
  106. package/dist/cli/commands/compact-settle-command.js +130 -0
  107. package/dist/cli/commands/compact-shared.d.ts +9 -0
  108. package/dist/cli/commands/compact-shared.js +26 -0
  109. package/dist/cli/commands/container-command-shared.d.ts +60 -0
  110. package/dist/cli/commands/container-command-shared.js +52 -0
  111. package/dist/cli/commands/container-commands.d.ts +1 -1
  112. package/dist/cli/commands/container-commands.js +4 -216
  113. package/dist/cli/commands/container-release-command.d.ts +3 -0
  114. package/dist/cli/commands/container-release-command.js +105 -0
  115. package/dist/cli/commands/container-spawn-command.d.ts +3 -0
  116. package/dist/cli/commands/container-spawn-command.js +148 -0
  117. package/dist/cli/commands/context-check-command.d.ts +3 -0
  118. package/dist/cli/commands/context-check-command.js +81 -0
  119. package/dist/cli/commands/context-commands.d.ts +2 -7
  120. package/dist/cli/commands/context-commands.js +6 -276
  121. package/dist/cli/commands/context-layer-command.d.ts +3 -0
  122. package/dist/cli/commands/context-layer-command.js +34 -0
  123. package/dist/cli/commands/context-layer-fetchers.d.ts +15 -0
  124. package/dist/cli/commands/context-layer-fetchers.js +162 -0
  125. package/dist/cli/commands/context-status-command.d.ts +17 -0
  126. package/dist/cli/commands/context-status-command.js +41 -0
  127. package/dist/cli/commands/contract-write-command.d.ts +3 -0
  128. package/dist/cli/commands/contract-write-command.js +144 -0
  129. package/dist/cli/commands/core/doctor-bindings.d.ts +17 -0
  130. package/dist/cli/commands/core/doctor-bindings.js +30 -0
  131. package/dist/cli/commands/core/doctor-command.d.ts +4 -18
  132. package/dist/cli/commands/core/doctor-command.js +2 -323
  133. package/dist/cli/commands/core/doctor-logs.d.ts +8 -0
  134. package/dist/cli/commands/core/doctor-logs.js +32 -0
  135. package/dist/cli/commands/core/doctor-probes.d.ts +3 -0
  136. package/dist/cli/commands/core/doctor-probes.js +55 -0
  137. package/dist/cli/commands/core/doctor-run-command.d.ts +12 -0
  138. package/dist/cli/commands/core/doctor-run-command.js +172 -0
  139. package/dist/cli/commands/core/doctor-summary.d.ts +7 -0
  140. package/dist/cli/commands/core/doctor-summary.js +39 -0
  141. package/dist/cli/commands/core/memory-command-shared.d.ts +25 -0
  142. package/dist/cli/commands/core/memory-command-shared.js +20 -0
  143. package/dist/cli/commands/core/memory-command.d.ts +1 -1
  144. package/dist/cli/commands/core/memory-command.js +6 -227
  145. package/dist/cli/commands/core/memory-delegated-verbs.d.ts +4 -0
  146. package/dist/cli/commands/core/memory-delegated-verbs.js +178 -0
  147. package/dist/cli/commands/core/memory-extract-command.d.ts +3 -0
  148. package/dist/cli/commands/core/memory-extract-command.js +90 -0
  149. package/dist/cli/commands/core/memory-sync-command.d.ts +3 -0
  150. package/dist/cli/commands/core/memory-sync-command.js +38 -0
  151. package/dist/cli/commands/core/session-command.d.ts +1 -1
  152. package/dist/cli/commands/core/session-command.js +12 -206
  153. package/dist/cli/commands/core/session-info-command.d.ts +3 -0
  154. package/dist/cli/commands/core/session-info-command.js +142 -0
  155. package/dist/cli/commands/core/session-verb-commands.d.ts +5 -0
  156. package/dist/cli/commands/core/session-verb-commands.js +58 -0
  157. package/dist/cli/commands/core/skill-command.d.ts +1 -44
  158. package/dist/cli/commands/core/skill-command.js +13 -541
  159. package/dist/cli/commands/core/skill-context-verdict.d.ts +38 -0
  160. package/dist/cli/commands/core/skill-context-verdict.js +63 -0
  161. package/dist/cli/commands/core/skill-generated-config-notice.d.ts +41 -0
  162. package/dist/cli/commands/core/skill-generated-config-notice.js +75 -0
  163. package/dist/cli/commands/core/skill-heartbeat-commands.d.ts +3 -0
  164. package/dist/cli/commands/core/skill-heartbeat-commands.js +50 -0
  165. package/dist/cli/commands/core/skill-presence-commands.d.ts +3 -0
  166. package/dist/cli/commands/core/skill-presence-commands.js +123 -0
  167. package/dist/cli/commands/core/skill-presence-housekeeping-commands.d.ts +3 -0
  168. package/dist/cli/commands/core/skill-presence-housekeeping-commands.js +165 -0
  169. package/dist/cli/commands/core/skill-registry-commands.d.ts +3 -0
  170. package/dist/cli/commands/core/skill-registry-commands.js +117 -0
  171. package/dist/cli/commands/core/skill-runbook-command.d.ts +3 -0
  172. package/dist/cli/commands/core/skill-runbook-command.js +29 -0
  173. package/dist/cli/commands/core/standards-command.d.ts +1 -24
  174. package/dist/cli/commands/core/standards-command.js +33 -201
  175. package/dist/cli/commands/core/standards-init-command.d.ts +3 -0
  176. package/dist/cli/commands/core/standards-init-command.js +87 -0
  177. package/dist/cli/commands/core/standards-lint.d.ts +24 -0
  178. package/dist/cli/commands/core/standards-lint.js +57 -0
  179. package/dist/cli/commands/core/standards-migrate-command.d.ts +3 -0
  180. package/dist/cli/commands/core/standards-migrate-command.js +57 -0
  181. package/dist/cli/commands/cron-scheduler-commands.d.ts +5 -1
  182. package/dist/cli/commands/cron-scheduler-commands.js +36 -206
  183. package/dist/cli/commands/cron-scheduler-run-once-command.d.ts +7 -0
  184. package/dist/cli/commands/cron-scheduler-run-once-command.js +35 -0
  185. package/dist/cli/commands/cron-scheduler-shared.d.ts +6 -0
  186. package/dist/cli/commands/cron-scheduler-shared.js +48 -0
  187. package/dist/cli/commands/cron-scheduler-start-command.d.ts +7 -0
  188. package/dist/cli/commands/cron-scheduler-start-command.js +65 -0
  189. package/dist/cli/commands/cron-scheduler-status-command.d.ts +7 -0
  190. package/dist/cli/commands/cron-scheduler-status-command.js +46 -0
  191. package/dist/cli/commands/cron-scheduler-stop-command.d.ts +7 -0
  192. package/dist/cli/commands/cron-scheduler-stop-command.js +61 -0
  193. package/dist/cli/commands/dispatch-command-spec.d.ts +2 -0
  194. package/dist/cli/commands/dispatch-command-spec.js +62 -0
  195. package/dist/cli/commands/dispatch-commands.js +159 -775
  196. package/dist/cli/commands/dispatch-dag-envelope.d.ts +41 -0
  197. package/dist/cli/commands/dispatch-dag-envelope.js +49 -0
  198. package/dist/cli/commands/dispatch-dag-failure.d.ts +18 -0
  199. package/dist/cli/commands/dispatch-dag-failure.js +16 -0
  200. package/dist/cli/commands/dispatch-dag-preflight.d.ts +51 -0
  201. package/dist/cli/commands/dispatch-dag-preflight.js +105 -0
  202. package/dist/cli/commands/dispatch-dag-runners.d.ts +48 -0
  203. package/dist/cli/commands/dispatch-dag-runners.js +73 -0
  204. package/dist/cli/commands/dispatch-detached-branch.d.ts +3 -0
  205. package/dist/cli/commands/dispatch-detached-branch.js +58 -0
  206. package/dist/cli/commands/dispatch-envelope.d.ts +36 -0
  207. package/dist/cli/commands/dispatch-envelope.js +104 -0
  208. package/dist/cli/commands/dispatch-from-dag.d.ts +27 -0
  209. package/dist/cli/commands/dispatch-from-dag.js +87 -257
  210. package/dist/cli/commands/dispatch-isolation-lease.d.ts +17 -0
  211. package/dist/cli/commands/dispatch-isolation-lease.js +149 -0
  212. package/dist/cli/commands/dispatch-preflight.d.ts +7 -0
  213. package/dist/cli/commands/dispatch-preflight.js +105 -0
  214. package/dist/cli/commands/dispatch-prompt-blocks.d.ts +10 -0
  215. package/dist/cli/commands/dispatch-prompt-blocks.js +56 -0
  216. package/dist/cli/commands/dispatch-prompt-composition.d.ts +30 -0
  217. package/dist/cli/commands/dispatch-prompt-composition.js +171 -0
  218. package/dist/cli/commands/dispatch-record-write.d.ts +24 -0
  219. package/dist/cli/commands/dispatch-record-write.js +96 -0
  220. package/dist/cli/commands/dispatch-tool-call.d.ts +15 -0
  221. package/dist/cli/commands/dispatch-tool-call.js +128 -0
  222. package/dist/cli/commands/evolution-command-shared.d.ts +78 -0
  223. package/dist/cli/commands/evolution-command-shared.js +107 -0
  224. package/dist/cli/commands/evolution-commands.d.ts +11 -1
  225. package/dist/cli/commands/evolution-commands.js +19 -350
  226. package/dist/cli/commands/evolution-evaluate-command.d.ts +24 -0
  227. package/dist/cli/commands/evolution-evaluate-command.js +138 -0
  228. package/dist/cli/commands/evolution-propose-command.d.ts +23 -0
  229. package/dist/cli/commands/evolution-propose-command.js +145 -0
  230. package/dist/cli/commands/evolution-status-command.d.ts +17 -0
  231. package/dist/cli/commands/evolution-status-command.js +41 -0
  232. package/dist/cli/commands/evolution-verdict-commands.d.ts +30 -0
  233. package/dist/cli/commands/evolution-verdict-commands.js +100 -0
  234. package/dist/cli/commands/final-review-command-envelopes.d.ts +44 -0
  235. package/dist/cli/commands/final-review-command-envelopes.js +100 -0
  236. package/dist/cli/commands/final-review-command-shared.d.ts +52 -0
  237. package/dist/cli/commands/final-review-command-shared.js +35 -0
  238. package/dist/cli/commands/final-review-commands.d.ts +7 -27
  239. package/dist/cli/commands/final-review-commands.js +13 -240
  240. package/dist/cli/commands/final-review-prepare-command.d.ts +3 -0
  241. package/dist/cli/commands/final-review-prepare-command.js +200 -0
  242. package/dist/cli/commands/finalize-accumulator.d.ts +44 -0
  243. package/dist/cli/commands/finalize-accumulator.js +55 -0
  244. package/dist/cli/commands/finalize-branches.d.ts +34 -0
  245. package/dist/cli/commands/finalize-branches.js +119 -0
  246. package/dist/cli/commands/finalize-runners.d.ts +3 -0
  247. package/dist/cli/commands/finalize-runners.js +92 -0
  248. package/dist/cli/commands/finalize-selection.d.ts +65 -0
  249. package/dist/cli/commands/finalize-selection.js +35 -0
  250. package/dist/cli/commands/gate-commands.js +26 -8
  251. package/dist/cli/commands/governance-classify-contract-commands.d.ts +23 -9
  252. package/dist/cli/commands/governance-classify-contract-commands.js +26 -269
  253. package/dist/cli/commands/hooks-command-shared.d.ts +42 -0
  254. package/dist/cli/commands/hooks-command-shared.js +32 -0
  255. package/dist/cli/commands/hooks-commands.d.ts +20 -0
  256. package/dist/cli/commands/hooks-commands.js +75 -309
  257. package/dist/cli/commands/hooks-install-envelopes.d.ts +6 -0
  258. package/dist/cli/commands/hooks-install-envelopes.js +144 -0
  259. package/dist/cli/commands/hooks-status-command.d.ts +3 -0
  260. package/dist/cli/commands/hooks-status-command.js +93 -0
  261. package/dist/cli/commands/hooks-uninstall-command.d.ts +3 -0
  262. package/dist/cli/commands/hooks-uninstall-command.js +43 -0
  263. package/dist/cli/commands/job-checkpoint-commands.d.ts +3 -0
  264. package/dist/cli/commands/job-checkpoint-commands.js +157 -0
  265. package/dist/cli/commands/job-command-shared.d.ts +109 -0
  266. package/dist/cli/commands/job-command-shared.js +72 -0
  267. package/dist/cli/commands/job-commands.d.ts +4 -64
  268. package/dist/cli/commands/job-commands.js +42 -552
  269. package/dist/cli/commands/job-cost-check-command.d.ts +3 -0
  270. package/dist/cli/commands/job-cost-check-command.js +41 -0
  271. package/dist/cli/commands/job-init-status-commands.d.ts +3 -0
  272. package/dist/cli/commands/job-init-status-commands.js +149 -0
  273. package/dist/cli/commands/job-run-commands.d.ts +3 -0
  274. package/dist/cli/commands/job-run-commands.js +97 -0
  275. package/dist/cli/commands/job-state-root.d.ts +35 -0
  276. package/dist/cli/commands/job-state-root.js +76 -0
  277. package/dist/cli/commands/loop-command-shared.d.ts +31 -0
  278. package/dist/cli/commands/loop-command-shared.js +15 -0
  279. package/dist/cli/commands/loop-commands.d.ts +12 -17
  280. package/dist/cli/commands/loop-commands.js +56 -238
  281. package/dist/cli/commands/loop-eval-capture-index.d.ts +4 -0
  282. package/dist/cli/commands/loop-eval-capture-index.js +44 -0
  283. package/dist/cli/commands/loop-eval-commands.d.ts +8 -5
  284. package/dist/cli/commands/loop-eval-commands.js +12 -626
  285. package/dist/cli/commands/loop-eval-eval-command.d.ts +3 -0
  286. package/dist/cli/commands/loop-eval-eval-command.js +168 -0
  287. package/dist/cli/commands/loop-eval-monotonic-command.d.ts +3 -0
  288. package/dist/cli/commands/loop-eval-monotonic-command.js +90 -0
  289. package/dist/cli/commands/loop-eval-parents.d.ts +7 -0
  290. package/dist/cli/commands/loop-eval-parents.js +20 -0
  291. package/dist/cli/commands/loop-eval-run-code.d.ts +7 -0
  292. package/dist/cli/commands/loop-eval-run-code.js +40 -0
  293. package/dist/cli/commands/loop-eval-run-command.d.ts +3 -0
  294. package/dist/cli/commands/loop-eval-run-command.js +113 -0
  295. package/dist/cli/commands/loop-eval-spec-commands.d.ts +3 -0
  296. package/dist/cli/commands/loop-eval-spec-commands.js +165 -0
  297. package/dist/cli/commands/loop-eval-spec-lint-command.d.ts +3 -0
  298. package/dist/cli/commands/loop-eval-spec-lint-command.js +42 -0
  299. package/dist/cli/commands/loop-eval-workflow-commands.d.ts +3 -0
  300. package/dist/cli/commands/loop-eval-workflow-commands.js +141 -0
  301. package/dist/cli/commands/loop-export-command.d.ts +3 -0
  302. package/dist/cli/commands/loop-export-command.js +73 -0
  303. package/dist/cli/commands/loop-goal-compose-command.d.ts +3 -0
  304. package/dist/cli/commands/loop-goal-compose-command.js +36 -0
  305. package/dist/cli/commands/loop-import-command.d.ts +3 -0
  306. package/dist/cli/commands/loop-import-command.js +86 -0
  307. package/dist/cli/commands/loop-placeholder-commands.d.ts +3 -0
  308. package/dist/cli/commands/loop-placeholder-commands.js +52 -0
  309. package/dist/cli/commands/mcp-commands.d.ts +10 -0
  310. package/dist/cli/commands/mcp-commands.js +157 -0
  311. package/dist/cli/commands/memory-command-shared.d.ts +59 -0
  312. package/dist/cli/commands/memory-command-shared.js +39 -0
  313. package/dist/cli/commands/memory-commands.d.ts +6 -79
  314. package/dist/cli/commands/memory-commands.js +19 -309
  315. package/dist/cli/commands/memory-ingest-command.d.ts +3 -0
  316. package/dist/cli/commands/memory-ingest-command.js +50 -0
  317. package/dist/cli/commands/memory-list-command.d.ts +16 -0
  318. package/dist/cli/commands/memory-list-command.js +129 -0
  319. package/dist/cli/commands/memory-reindex-command.d.ts +9 -0
  320. package/dist/cli/commands/memory-reindex-command.js +78 -0
  321. package/dist/cli/commands/memory-rotate-command.d.ts +3 -0
  322. package/dist/cli/commands/memory-rotate-command.js +55 -0
  323. package/dist/cli/commands/memory-search-command.d.ts +7 -0
  324. package/dist/cli/commands/memory-search-command.js +46 -0
  325. package/dist/cli/commands/openspec-archive-command.d.ts +3 -0
  326. package/dist/cli/commands/openspec-archive-command.js +55 -0
  327. package/dist/cli/commands/openspec-command-shared.d.ts +62 -0
  328. package/dist/cli/commands/openspec-command-shared.js +135 -0
  329. package/dist/cli/commands/openspec-commands.d.ts +1 -1
  330. package/dist/cli/commands/openspec-commands.js +33 -306
  331. package/dist/cli/commands/openspec-from-doctor-command.d.ts +3 -0
  332. package/dist/cli/commands/openspec-from-doctor-command.js +66 -0
  333. package/dist/cli/commands/openspec-init-command.d.ts +3 -0
  334. package/dist/cli/commands/openspec-init-command.js +49 -0
  335. package/dist/cli/commands/openspec-list-command.d.ts +3 -0
  336. package/dist/cli/commands/openspec-list-command.js +27 -0
  337. package/dist/cli/commands/openspec-render-command.d.ts +3 -0
  338. package/dist/cli/commands/openspec-render-command.js +33 -0
  339. package/dist/cli/commands/openspec-show-command.d.ts +3 -0
  340. package/dist/cli/commands/openspec-show-command.js +33 -0
  341. package/dist/cli/commands/openspec-to-rd-command.d.ts +3 -0
  342. package/dist/cli/commands/openspec-to-rd-command.js +33 -0
  343. package/dist/cli/commands/openspec-validate-command.d.ts +3 -0
  344. package/dist/cli/commands/openspec-validate-command.js +45 -0
  345. package/dist/cli/commands/playwright-browser-command.d.ts +8 -0
  346. package/dist/cli/commands/playwright-browser-command.js +61 -0
  347. package/dist/cli/commands/playwright-commands.d.ts +10 -62
  348. package/dist/cli/commands/playwright-commands.js +77 -400
  349. package/dist/cli/commands/playwright-envelope.d.ts +8 -0
  350. package/dist/cli/commands/playwright-envelope.js +29 -0
  351. package/dist/cli/commands/playwright-ls-stop-commands.d.ts +4 -0
  352. package/dist/cli/commands/playwright-ls-stop-commands.js +74 -0
  353. package/dist/cli/commands/playwright-session-store.d.ts +65 -0
  354. package/dist/cli/commands/playwright-session-store.js +189 -0
  355. package/dist/cli/commands/project-commands.d.ts +19 -0
  356. package/dist/cli/commands/project-commands.js +98 -259
  357. package/dist/cli/commands/project-context-command.d.ts +3 -0
  358. package/dist/cli/commands/project-context-command.js +44 -0
  359. package/dist/cli/commands/project-dashboard-command.d.ts +3 -0
  360. package/dist/cli/commands/project-dashboard-command.js +74 -0
  361. package/dist/cli/commands/project-knowledge-command.d.ts +3 -0
  362. package/dist/cli/commands/project-knowledge-command.js +48 -0
  363. package/dist/cli/commands/project-memories-show-command.d.ts +3 -0
  364. package/dist/cli/commands/project-memories-show-command.js +87 -0
  365. package/dist/cli/commands/project-memory-index-command.d.ts +3 -0
  366. package/dist/cli/commands/project-memory-index-command.js +31 -0
  367. package/dist/cli/commands/qa-archive-screenshots-command.d.ts +3 -0
  368. package/dist/cli/commands/qa-archive-screenshots-command.js +53 -0
  369. package/dist/cli/commands/qa-commands.d.ts +14 -87
  370. package/dist/cli/commands/qa-commands.js +17 -315
  371. package/dist/cli/commands/qa-context-prestep.d.ts +1 -0
  372. package/dist/cli/commands/qa-context-prestep.js +34 -0
  373. package/dist/cli/commands/qa-run-command.d.ts +3 -0
  374. package/dist/cli/commands/qa-run-command.js +105 -0
  375. package/dist/cli/commands/qa-run-options.d.ts +23 -0
  376. package/dist/cli/commands/qa-run-options.js +31 -0
  377. package/dist/cli/commands/qa-run-slice.d.ts +41 -0
  378. package/dist/cli/commands/qa-run-slice.js +145 -0
  379. package/dist/cli/commands/release-canary-command.d.ts +28 -0
  380. package/dist/cli/commands/release-canary-command.js +129 -0
  381. package/dist/cli/commands/release-command-shared.d.ts +13 -0
  382. package/dist/cli/commands/release-command-shared.js +18 -0
  383. package/dist/cli/commands/release-commands.d.ts +10 -18
  384. package/dist/cli/commands/release-commands.js +25 -298
  385. package/dist/cli/commands/release-done-command.d.ts +3 -0
  386. package/dist/cli/commands/release-done-command.js +64 -0
  387. package/dist/cli/commands/release-hotfix-command.d.ts +3 -0
  388. package/dist/cli/commands/release-hotfix-command.js +50 -0
  389. package/dist/cli/commands/release-plan-command.d.ts +3 -0
  390. package/dist/cli/commands/release-plan-command.js +33 -0
  391. package/dist/cli/commands/release-precheck-command.d.ts +3 -0
  392. package/dist/cli/commands/release-precheck-command.js +28 -0
  393. package/dist/cli/commands/release-promote-command.d.ts +3 -0
  394. package/dist/cli/commands/release-promote-command.js +34 -0
  395. package/dist/cli/commands/release-rollback-command.d.ts +3 -0
  396. package/dist/cli/commands/release-rollback-command.js +33 -0
  397. package/dist/cli/commands/release-watch-command.d.ts +3 -0
  398. package/dist/cli/commands/release-watch-command.js +44 -0
  399. package/dist/cli/commands/request-command-options.d.ts +49 -0
  400. package/dist/cli/commands/request-command-options.js +1 -0
  401. package/dist/cli/commands/request-commands.d.ts +3 -9
  402. package/dist/cli/commands/request-commands.js +17 -522
  403. package/dist/cli/commands/request-init-command.d.ts +3 -0
  404. package/dist/cli/commands/request-init-command.js +100 -0
  405. package/dist/cli/commands/request-lint-command.d.ts +3 -0
  406. package/dist/cli/commands/request-lint-command.js +50 -0
  407. package/dist/cli/commands/request-list-command.d.ts +10 -0
  408. package/dist/cli/commands/request-list-command.js +53 -0
  409. package/dist/cli/commands/request-repair-status-command.d.ts +3 -0
  410. package/dist/cli/commands/request-repair-status-command.js +61 -0
  411. package/dist/cli/commands/request-show-command.d.ts +3 -0
  412. package/dist/cli/commands/request-show-command.js +56 -0
  413. package/dist/cli/commands/request-transition-command.d.ts +3 -0
  414. package/dist/cli/commands/request-transition-command.js +122 -0
  415. package/dist/cli/commands/request-transition-failures.d.ts +8 -0
  416. package/dist/cli/commands/request-transition-failures.js +90 -0
  417. package/dist/cli/commands/request-transition-hooks.d.ts +50 -0
  418. package/dist/cli/commands/request-transition-hooks.js +115 -0
  419. package/dist/cli/commands/request-transition-preflight.d.ts +10 -0
  420. package/dist/cli/commands/request-transition-preflight.js +107 -0
  421. package/dist/cli/commands/scan-command-shared.d.ts +96 -0
  422. package/dist/cli/commands/scan-command-shared.js +83 -0
  423. package/dist/cli/commands/scan-commands.d.ts +3 -2
  424. package/dist/cli/commands/scan-commands.js +23 -463
  425. package/dist/cli/commands/scan-inventory-commands.d.ts +3 -0
  426. package/dist/cli/commands/scan-inventory-commands.js +96 -0
  427. package/dist/cli/commands/scan-project-commands.d.ts +3 -0
  428. package/dist/cli/commands/scan-project-commands.js +65 -0
  429. package/dist/cli/commands/scan-scope-commands.d.ts +3 -0
  430. package/dist/cli/commands/scan-scope-commands.js +149 -0
  431. package/dist/cli/commands/scan-scope-helpers.d.ts +8 -0
  432. package/dist/cli/commands/scan-scope-helpers.js +54 -0
  433. package/dist/cli/commands/scan-structural-commands.d.ts +3 -0
  434. package/dist/cli/commands/scan-structural-commands.js +113 -0
  435. package/dist/cli/commands/sediment-argv-flags.d.ts +54 -0
  436. package/dist/cli/commands/sediment-argv-flags.js +116 -0
  437. package/dist/cli/commands/sediment-command-shared.d.ts +15 -0
  438. package/dist/cli/commands/sediment-command-shared.js +5 -0
  439. package/dist/cli/commands/sediment-commands.d.ts +35 -59
  440. package/dist/cli/commands/sediment-commands.js +36 -590
  441. package/dist/cli/commands/sediment-pool-commands.d.ts +9 -0
  442. package/dist/cli/commands/sediment-pool-commands.js +185 -0
  443. package/dist/cli/commands/sediment-query-commands.d.ts +4 -0
  444. package/dist/cli/commands/sediment-query-commands.js +94 -0
  445. package/dist/cli/commands/sediment-release-commands.d.ts +8 -0
  446. package/dist/cli/commands/sediment-release-commands.js +232 -0
  447. package/dist/cli/commands/share-commands.d.ts +12 -68
  448. package/dist/cli/commands/share-commands.js +47 -556
  449. package/dist/cli/commands/share-error-hints.d.ts +14 -0
  450. package/dist/cli/commands/share-error-hints.js +38 -0
  451. package/dist/cli/commands/share-identity.d.ts +13 -0
  452. package/dist/cli/commands/share-identity.js +22 -0
  453. package/dist/cli/commands/share-record-paths.d.ts +37 -0
  454. package/dist/cli/commands/share-record-paths.js +68 -0
  455. package/dist/cli/commands/share-runners.d.ts +3 -0
  456. package/dist/cli/commands/share-runners.js +158 -0
  457. package/dist/cli/commands/shared-read-runners.d.ts +3 -0
  458. package/dist/cli/commands/shared-read-runners.js +51 -0
  459. package/dist/cli/commands/slice-check-command.d.ts +3 -0
  460. package/dist/cli/commands/slice-check-command.js +54 -0
  461. package/dist/cli/commands/slice-commands.d.ts +2 -22
  462. package/dist/cli/commands/slice-commands.js +18 -517
  463. package/dist/cli/commands/slice-decompose-artifacts.d.ts +18 -0
  464. package/dist/cli/commands/slice-decompose-artifacts.js +79 -0
  465. package/dist/cli/commands/slice-decompose-command.d.ts +3 -0
  466. package/dist/cli/commands/slice-decompose-command.js +123 -0
  467. package/dist/cli/commands/slice-list-commands.d.ts +3 -0
  468. package/dist/cli/commands/slice-list-commands.js +182 -0
  469. package/dist/cli/commands/slice-pick-command.d.ts +3 -0
  470. package/dist/cli/commands/slice-pick-command.js +60 -0
  471. package/dist/cli/commands/slice-plan-command.d.ts +24 -0
  472. package/dist/cli/commands/slice-plan-command.js +111 -0
  473. package/dist/cli/commands/sop-advance-command.d.ts +3 -0
  474. package/dist/cli/commands/sop-advance-command.js +160 -0
  475. package/dist/cli/commands/sop-check-command.d.ts +3 -0
  476. package/dist/cli/commands/sop-check-command.js +44 -0
  477. package/dist/cli/commands/sop-command-shared.d.ts +23 -0
  478. package/dist/cli/commands/sop-command-shared.js +18 -0
  479. package/dist/cli/commands/sop-commands.d.ts +15 -1
  480. package/dist/cli/commands/sop-commands.js +26 -240
  481. package/dist/cli/commands/sop-init-command.d.ts +3 -0
  482. package/dist/cli/commands/sop-init-command.js +51 -0
  483. package/dist/cli/commands/sop-lint-command.d.ts +3 -0
  484. package/dist/cli/commands/sop-lint-command.js +64 -0
  485. package/dist/cli/commands/sop-register-command.d.ts +3 -0
  486. package/dist/cli/commands/sop-register-command.js +48 -0
  487. package/dist/cli/commands/sop-registry-command.d.ts +3 -0
  488. package/dist/cli/commands/sop-registry-command.js +30 -0
  489. package/dist/cli/commands/statusline-command-shared.d.ts +73 -0
  490. package/dist/cli/commands/statusline-command-shared.js +90 -0
  491. package/dist/cli/commands/statusline-commands.d.ts +1 -19
  492. package/dist/cli/commands/statusline-commands.js +48 -287
  493. package/dist/cli/commands/statusline-compact-command.d.ts +4 -0
  494. package/dist/cli/commands/statusline-compact-command.js +54 -0
  495. package/dist/cli/commands/statusline-install-command.d.ts +3 -0
  496. package/dist/cli/commands/statusline-install-command.js +48 -0
  497. package/dist/cli/commands/statusline-render-command.d.ts +9 -0
  498. package/dist/cli/commands/statusline-render-command.js +55 -0
  499. package/dist/cli/commands/statusline-status-command.d.ts +3 -0
  500. package/dist/cli/commands/statusline-status-command.js +23 -0
  501. package/dist/cli/commands/statusline-uninstall-command.d.ts +3 -0
  502. package/dist/cli/commands/statusline-uninstall-command.js +23 -0
  503. package/dist/cli/commands/test-command-run-helpers.d.ts +27 -0
  504. package/dist/cli/commands/test-command-run-helpers.js +73 -0
  505. package/dist/cli/commands/test-command-runner-resolution.d.ts +57 -0
  506. package/dist/cli/commands/test-command-runner-resolution.js +183 -0
  507. package/dist/cli/commands/test-commands.d.ts +8 -56
  508. package/dist/cli/commands/test-commands.js +26 -249
  509. package/dist/cli/commands/vm-command-shared.d.ts +23 -0
  510. package/dist/cli/commands/vm-command-shared.js +23 -0
  511. package/dist/cli/commands/vm-commands.d.ts +1 -28
  512. package/dist/cli/commands/vm-commands.js +36 -270
  513. package/dist/cli/commands/vm-hypervisor-runtime.d.ts +15 -0
  514. package/dist/cli/commands/vm-hypervisor-runtime.js +64 -0
  515. package/dist/cli/commands/vm-release-command.d.ts +5 -0
  516. package/dist/cli/commands/vm-release-command.js +101 -0
  517. package/dist/cli/commands/vm-spawn-command.d.ts +5 -0
  518. package/dist/cli/commands/vm-spawn-command.js +177 -0
  519. package/dist/cli/commands/web-command-shared.d.ts +12 -0
  520. package/dist/cli/commands/web-command-shared.js +30 -0
  521. package/dist/cli/commands/web-commands.d.ts +7 -14
  522. package/dist/cli/commands/web-commands.js +6 -314
  523. package/dist/cli/commands/web-install-command.d.ts +10 -0
  524. package/dist/cli/commands/web-install-command.js +116 -0
  525. package/dist/cli/commands/web-lifecycle-commands.d.ts +9 -30
  526. package/dist/cli/commands/web-lifecycle-commands.js +14 -322
  527. package/dist/cli/commands/web-login-command.d.ts +14 -0
  528. package/dist/cli/commands/web-login-command.js +189 -0
  529. package/dist/cli/commands/web-op-payload.d.ts +22 -0
  530. package/dist/cli/commands/web-op-payload.js +89 -0
  531. package/dist/cli/commands/web-op-refusals.d.ts +37 -0
  532. package/dist/cli/commands/web-op-refusals.js +73 -0
  533. package/dist/cli/commands/web-op-runner.d.ts +14 -0
  534. package/dist/cli/commands/web-op-runner.js +166 -0
  535. package/dist/cli/commands/web-status-command.d.ts +4 -0
  536. package/dist/cli/commands/web-status-command.js +32 -0
  537. package/dist/cli/commands/web-stop-command.d.ts +10 -0
  538. package/dist/cli/commands/web-stop-command.js +59 -0
  539. package/dist/cli/commands/web-verb-specs.d.ts +18 -0
  540. package/dist/cli/commands/web-verb-specs.js +66 -0
  541. package/dist/cli/commands/workflow-command-shared.d.ts +102 -0
  542. package/dist/cli/commands/workflow-command-shared.js +74 -0
  543. package/dist/cli/commands/workflow-commands.d.ts +10 -1
  544. package/dist/cli/commands/workflow-commands.js +6 -594
  545. package/dist/cli/commands/workflow-gate-commands.d.ts +3 -0
  546. package/dist/cli/commands/workflow-gate-commands.js +116 -0
  547. package/dist/cli/commands/workflow-graph-commands.d.ts +3 -0
  548. package/dist/cli/commands/workflow-graph-commands.js +73 -0
  549. package/dist/cli/commands/workflow-init-command.d.ts +3 -0
  550. package/dist/cli/commands/workflow-init-command.js +68 -0
  551. package/dist/cli/commands/workflow-lifecycle-commands.d.ts +9 -59
  552. package/dist/cli/commands/workflow-lifecycle-commands.js +14 -348
  553. package/dist/cli/commands/workflow-node-commands.d.ts +3 -0
  554. package/dist/cli/commands/workflow-node-commands.js +154 -0
  555. package/dist/cli/commands/workflow-plan-helpers.d.ts +48 -0
  556. package/dist/cli/commands/workflow-plan-helpers.js +103 -0
  557. package/dist/cli/commands/workflow-planning-commands.d.ts +3 -0
  558. package/dist/cli/commands/workflow-planning-commands.js +56 -0
  559. package/dist/cli/commands/workflow-swarm-actions.d.ts +7 -0
  560. package/dist/cli/commands/workflow-swarm-actions.js +109 -0
  561. package/dist/cli/commands/workflow-swarm-commands.d.ts +3 -0
  562. package/dist/cli/commands/workflow-swarm-commands.js +138 -0
  563. package/dist/cli/commands/workflow-tech-actions.d.ts +10 -0
  564. package/dist/cli/commands/workflow-tech-actions.js +150 -0
  565. package/dist/cli/commands/workflow-terminalize-command.d.ts +3 -0
  566. package/dist/cli/commands/workflow-terminalize-command.js +56 -0
  567. package/dist/cli/commands/workspace/init-actions.d.ts +10 -0
  568. package/dist/cli/commands/workspace/init-actions.js +199 -0
  569. package/dist/cli/commands/workspace/init-codegraph-stake.d.ts +10 -0
  570. package/dist/cli/commands/workspace/init-codegraph-stake.js +54 -0
  571. package/dist/cli/commands/workspace/init-command.d.ts +8 -124
  572. package/dist/cli/commands/workspace/init-command.js +59 -623
  573. package/dist/cli/commands/workspace/init-context.d.ts +58 -0
  574. package/dist/cli/commands/workspace/init-context.js +121 -0
  575. package/dist/cli/commands/workspace/init-envelope.d.ts +3 -0
  576. package/dist/cli/commands/workspace/init-envelope.js +34 -0
  577. package/dist/cli/commands/workspace/init-failures.d.ts +3 -0
  578. package/dist/cli/commands/workspace/init-failures.js +84 -0
  579. package/dist/cli/commands/workspace/init-hooks-decision.d.ts +24 -0
  580. package/dist/cli/commands/workspace/init-hooks-decision.js +189 -0
  581. package/dist/cli/commands/workspace/init-options.d.ts +102 -0
  582. package/dist/cli/commands/workspace/init-options.js +1 -0
  583. package/dist/cli/commands/worktree-lease-commands.d.ts +10 -6
  584. package/dist/cli/commands/worktree-lease-commands.js +42 -512
  585. package/dist/cli/commands/worktree-lease-gc-command.d.ts +12 -0
  586. package/dist/cli/commands/worktree-lease-gc-command.js +117 -0
  587. package/dist/cli/commands/worktree-lease-git.d.ts +22 -0
  588. package/dist/cli/commands/worktree-lease-git.js +48 -0
  589. package/dist/cli/commands/worktree-lease-list-command.d.ts +12 -0
  590. package/dist/cli/commands/worktree-lease-list-command.js +100 -0
  591. package/dist/cli/commands/worktree-lease-load.d.ts +37 -0
  592. package/dist/cli/commands/worktree-lease-load.js +28 -0
  593. package/dist/cli/commands/worktree-lease-release-command.d.ts +13 -0
  594. package/dist/cli/commands/worktree-lease-release-command.js +105 -0
  595. package/dist/cli/commands/worktree-lease-renew-command.d.ts +11 -0
  596. package/dist/cli/commands/worktree-lease-renew-command.js +99 -0
  597. package/dist/cli/commands/worktree-lease-session.d.ts +22 -0
  598. package/dist/cli/commands/worktree-lease-session.js +29 -0
  599. package/dist/cli/commands/worktree-lease-spawn-command.d.ts +11 -0
  600. package/dist/cli/commands/worktree-lease-spawn-command.js +119 -0
  601. package/dist/cli/commands/worktree-lease-status-command.d.ts +11 -0
  602. package/dist/cli/commands/worktree-lease-status-command.js +86 -0
  603. package/dist/cli/commands/worktree-lease-store.d.ts +19 -0
  604. package/dist/cli/commands/worktree-lease-store.js +24 -0
  605. package/dist/cli/program.js +5 -0
  606. package/dist/services/code/auto-compact-artifacts.d.ts +54 -0
  607. package/dist/services/code/auto-compact-artifacts.js +135 -0
  608. package/dist/services/code/auto-compact-attempt.d.ts +46 -0
  609. package/dist/services/code/auto-compact-attempt.js +88 -0
  610. package/dist/services/code/auto-compact-decision.d.ts +74 -0
  611. package/dist/services/code/auto-compact-decision.js +149 -0
  612. package/dist/services/code/auto-compact-dispatch-gate.d.ts +36 -0
  613. package/dist/services/code/auto-compact-dispatch-gate.js +86 -0
  614. package/dist/services/code/auto-compact-envelopes.d.ts +33 -0
  615. package/dist/services/code/auto-compact-envelopes.js +134 -0
  616. package/dist/services/code/auto-compact-history.d.ts +46 -0
  617. package/dist/services/code/auto-compact-history.js +17 -0
  618. package/dist/services/code/auto-compact-orchestrator.d.ts +11 -240
  619. package/dist/services/code/auto-compact-orchestrator.js +165 -686
  620. package/dist/services/code/auto-compact-run-types.d.ts +123 -0
  621. package/dist/services/code/auto-compact-run-types.js +1 -0
  622. package/dist/services/code/emit-handoff.d.ts +35 -1
  623. package/dist/services/code/emit-handoff.js +128 -7
  624. package/dist/services/code/step-08-gate.d.ts +28 -19
  625. package/dist/services/code/step-08-gate.js +92 -35
  626. package/dist/services/config/config-coercion.d.ts +7 -0
  627. package/dist/services/config/config-coercion.js +156 -0
  628. package/dist/services/config/config-file-io.d.ts +11 -0
  629. package/dist/services/config/config-file-io.js +61 -0
  630. package/dist/services/config/config-get.d.ts +2 -0
  631. package/dist/services/config/config-get.js +36 -0
  632. package/dist/services/config/config-global-loader.d.ts +15 -0
  633. package/dist/services/config/config-global-loader.js +111 -0
  634. package/dist/services/config/config-nested-path.d.ts +3 -0
  635. package/dist/services/config/config-nested-path.js +53 -0
  636. package/dist/services/config/config-primitives.d.ts +16 -0
  637. package/dist/services/config/config-primitives.js +24 -0
  638. package/dist/services/config/config-service.d.ts +9 -33
  639. package/dist/services/config/config-service.js +16 -665
  640. package/dist/services/config/config-validation.d.ts +19 -0
  641. package/dist/services/config/config-validation.js +152 -0
  642. package/dist/services/config/config-workspace.d.ts +10 -0
  643. package/dist/services/config/config-workspace.js +158 -0
  644. package/dist/services/distribution/mcp-install-runner.d.ts +21 -0
  645. package/dist/services/distribution/mcp-install-runner.js +59 -0
  646. package/dist/services/distribution/mcp-install.d.ts +95 -0
  647. package/dist/services/distribution/mcp-install.js +179 -0
  648. package/dist/services/distribution/plugin-manifest.d.ts +97 -0
  649. package/dist/services/distribution/plugin-manifest.js +126 -0
  650. package/dist/services/hooks/mcp-surface-gate.d.ts +19 -0
  651. package/dist/services/hooks/mcp-surface-gate.js +87 -0
  652. package/dist/services/ide/adapters/claude-code-adapter.d.ts +4 -35
  653. package/dist/services/ide/adapters/claude-code-adapter.js +48 -171
  654. package/dist/services/ide/adapters/claude-code-local-state.d.ts +28 -0
  655. package/dist/services/ide/adapters/claude-code-local-state.js +112 -0
  656. package/dist/services/ide/adapters/claude-code-model-window.d.ts +37 -0
  657. package/dist/services/ide/adapters/claude-code-model-window.js +113 -0
  658. package/dist/services/ide/ide-mcp-install-types.d.ts +78 -0
  659. package/dist/services/ide/ide-mcp-install-types.js +104 -0
  660. package/dist/services/ide/ide-types.d.ts +45 -1
  661. package/dist/services/ide/mcp-tool-matcher.d.ts +34 -0
  662. package/dist/services/ide/mcp-tool-matcher.js +84 -0
  663. package/dist/services/lint/npx-resolver.js +7 -0
  664. package/dist/services/mcp/cli-executor.d.ts +36 -0
  665. package/dist/services/mcp/cli-executor.js +97 -0
  666. package/dist/services/mcp/json-rpc.d.ts +81 -0
  667. package/dist/services/mcp/json-rpc.js +116 -0
  668. package/dist/services/mcp/memory-tool.d.ts +3 -0
  669. package/dist/services/mcp/memory-tool.js +62 -0
  670. package/dist/services/mcp/server-main.d.ts +1 -0
  671. package/dist/services/mcp/server-main.js +66 -0
  672. package/dist/services/mcp/server.d.ts +22 -0
  673. package/dist/services/mcp/server.js +152 -0
  674. package/dist/services/mcp/surface.d.ts +62 -0
  675. package/dist/services/mcp/surface.js +198 -0
  676. package/dist/services/mcp/tool-core.d.ts +42 -0
  677. package/dist/services/mcp/tool-core.js +137 -0
  678. package/dist/services/mcp/tools.d.ts +13 -0
  679. package/dist/services/mcp/tools.js +58 -0
  680. package/dist/services/readonly-surface/argv-guard.d.ts +32 -0
  681. package/dist/services/readonly-surface/argv-guard.js +164 -0
  682. package/dist/services/readonly-surface/readonly-whitelist.d.ts +147 -0
  683. package/dist/services/readonly-surface/readonly-whitelist.js +107 -0
  684. package/dist/services/readonly-surface/whitelist-generator.d.ts +64 -0
  685. package/dist/services/readonly-surface/whitelist-generator.js +212 -0
  686. package/dist/services/skills/hooks-codegate-superpowers.d.ts +1 -0
  687. package/dist/services/skills/hooks-codegate-superpowers.js +26 -0
  688. package/dist/services/skills/hooks-settings-deny-list.d.ts +61 -0
  689. package/dist/services/skills/hooks-settings-deny-list.js +173 -0
  690. package/dist/services/skills/hooks-settings-envelopes.d.ts +20 -0
  691. package/dist/services/skills/hooks-settings-envelopes.js +79 -0
  692. package/dist/services/skills/hooks-settings-file-shape.d.ts +43 -0
  693. package/dist/services/skills/hooks-settings-file-shape.js +207 -0
  694. package/dist/services/skills/hooks-settings-paths.d.ts +34 -0
  695. package/dist/services/skills/hooks-settings-paths.js +75 -0
  696. package/dist/services/skills/hooks-settings-read-installed.d.ts +39 -0
  697. package/dist/services/skills/hooks-settings-read-installed.js +60 -0
  698. package/dist/services/skills/hooks-settings-service.d.ts +12 -212
  699. package/dist/services/skills/hooks-settings-service.js +71 -649
  700. package/dist/services/skills/hooks-settings-types.d.ts +139 -0
  701. package/dist/services/skills/hooks-settings-types.js +1 -0
  702. package/dist/services/workspace/claude-settings-template-merge.d.ts +89 -0
  703. package/dist/services/workspace/claude-settings-template-merge.js +243 -0
  704. package/dist/services/workspace/claude-settings-template.d.ts +29 -87
  705. package/dist/services/workspace/claude-settings-template.js +81 -236
  706. package/package.json +17 -6
  707. package/scripts/install-skills-bundles.mjs +233 -0
  708. package/scripts/install-skills-fs.mjs +148 -0
  709. package/scripts/install-skills-ide.mjs +279 -0
  710. package/scripts/install-skills-output-style-default.mjs +196 -0
  711. package/scripts/install-skills-output-styles.mjs +121 -0
  712. package/scripts/install-skills-report.mjs +42 -0
  713. package/scripts/install-skills-user-config.mjs +198 -0
  714. package/scripts/install-skills.mjs +36 -1066
  715. package/scripts/watch-tree.mjs +140 -0
  716. package/scripts/watch.mjs +4 -126
  717. package/skills/peaks-status/SKILL.md +31 -13
@@ -0,0 +1,52 @@
1
+ import type { FinalReviewOutput } from '../../services/final-review/final-review-types.js';
2
+ /** Whitelist of supported `--llm-provider` values for `peaks prepare-final-review`. */
3
+ export declare const SUPPORTED_LLM_PROVIDERS: readonly ["anthropic", "stub"];
4
+ export type SupportedLlmProvider = (typeof SUPPORTED_LLM_PROVIDERS)[number];
5
+ /**
6
+ * Default stays `stub` (unlike `peaks audit goal`, whose default is the real
7
+ * provider): the scaffold route is what CI and the registered e2e contract
8
+ * exercise without credentials, and the stub envelope is labelled
9
+ * `status: 'scaffold-only'` / `providerBinding: 'stub'` so it can never be
10
+ * read as a review.
11
+ */
12
+ export declare const DEFAULT_LLM_PROVIDER: SupportedLlmProvider;
13
+ export declare function isSupportedLlmProvider(value: string): value is SupportedLlmProvider;
14
+ export type FinalReviewStatus = 'scaffold-only' | 'review-complete' | 'not-applicable';
15
+ /**
16
+ * Which LLM produced this envelope. `unknown` is reserved for failure
17
+ * envelopes, where no binding was ever established.
18
+ */
19
+ export type FinalReviewProviderBinding = 'stub' | 'anthropic-messages-api' | 'unknown';
20
+ export interface FinalReviewData {
21
+ readonly status: FinalReviewStatus;
22
+ readonly rid: string;
23
+ readonly sessionId: string;
24
+ readonly auditGoalPath: string;
25
+ readonly serviceWired: boolean;
26
+ readonly providerBinding: FinalReviewProviderBinding;
27
+ /** Model id the bound provider answered with (real-provider runs only). */
28
+ readonly model?: string;
29
+ /** The 4-dim review the service produced (real-provider runs only). */
30
+ readonly review?: FinalReviewOutput;
31
+ /**
32
+ * Environment variables that were absent when binding failed. Surfaced on
33
+ * `data` because `fail()` redacts `message` through
34
+ * `redactSensitiveErrorMessage`, whose catch-all pattern matches the words
35
+ * `token` / `api_key` and would blank out the very names an operator needs.
36
+ */
37
+ readonly missingEnv?: readonly string[];
38
+ }
39
+ /**
40
+ * Empty placeholder used by `fail()` envelopes. `status` is
41
+ * `'not-applicable'` on the error path so consumers can tell
42
+ * "this is a placeholder on a failure" apart from "this is a real
43
+ * scaffold-only success".
44
+ */
45
+ export declare function emptyFinalReviewData(rid: string, sessionId: string, auditGoalPath: string, missingEnv?: readonly string[]): FinalReviewData;
46
+ export type PrepareFinalReviewOptions = {
47
+ project: string;
48
+ sessionId: string;
49
+ llmProvider?: string;
50
+ base?: string;
51
+ json?: boolean;
52
+ };
@@ -0,0 +1,35 @@
1
+ // src/cli/commands/final-review-command-shared.ts
2
+ //
3
+ // What `peaks prepare-final-review` reports: the envelope's data shape, its
4
+ // provider vocabulary, and the placeholder a failure carries. Split out of
5
+ // `final-review-commands.ts`; every value and every field name is unchanged.
6
+ /** Whitelist of supported `--llm-provider` values for `peaks prepare-final-review`. */
7
+ export const SUPPORTED_LLM_PROVIDERS = ['anthropic', 'stub'];
8
+ /**
9
+ * Default stays `stub` (unlike `peaks audit goal`, whose default is the real
10
+ * provider): the scaffold route is what CI and the registered e2e contract
11
+ * exercise without credentials, and the stub envelope is labelled
12
+ * `status: 'scaffold-only'` / `providerBinding: 'stub'` so it can never be
13
+ * read as a review.
14
+ */
15
+ export const DEFAULT_LLM_PROVIDER = 'stub';
16
+ export function isSupportedLlmProvider(value) {
17
+ return SUPPORTED_LLM_PROVIDERS.includes(value);
18
+ }
19
+ /**
20
+ * Empty placeholder used by `fail()` envelopes. `status` is
21
+ * `'not-applicable'` on the error path so consumers can tell
22
+ * "this is a placeholder on a failure" apart from "this is a real
23
+ * scaffold-only success".
24
+ */
25
+ export function emptyFinalReviewData(rid, sessionId, auditGoalPath, missingEnv) {
26
+ return {
27
+ status: 'not-applicable',
28
+ rid,
29
+ sessionId,
30
+ auditGoalPath,
31
+ serviceWired: false,
32
+ providerBinding: 'unknown',
33
+ ...(missingEnv === undefined ? {} : { missingEnv })
34
+ };
35
+ }
@@ -4,7 +4,8 @@
4
4
  *
5
5
  * Exposes the `prepareFinalReview()` service (W2 T9 on
6
6
  * `feature/slice-topology-multipass`) via the CLI surface. The service
7
- * depends on an injected `LlmRunner`; this file owns the binding:
7
+ * depends on an injected `LlmRunner`; the binding lives in
8
+ * `final-review-prepare-command.ts`:
8
9
  * - `--llm-provider stub` (default) returns a structured "scaffold ready"
9
10
  * envelope WITHOUT calling the service, so CI can verify the route
10
11
  * offline. It performs no review, and says so in every hint it emits.
@@ -23,33 +24,12 @@
23
24
  * - `peaks audit goal` — propose a 6-dim goal from a human need
24
25
  * - `peaks prepare-final-review` — produce a 4-dim review evidence
25
26
  * pack for human acceptance
27
+ *
28
+ * This file is the registration module only; the run body it dispatches to
29
+ * lives in `final-review-prepare-command.ts` and the envelope vocabulary in
30
+ * `final-review-command-shared.ts`.
26
31
  */
27
32
  import type { Command } from 'commander';
28
33
  import { type ProgramIO } from '../cli-helpers.js';
29
- import type { FinalReviewOutput } from '../../services/final-review/final-review-types.js';
30
- export type FinalReviewStatus = 'scaffold-only' | 'review-complete' | 'not-applicable';
31
- /**
32
- * Which LLM produced this envelope. `unknown` is reserved for failure
33
- * envelopes, where no binding was ever established.
34
- */
35
- export type FinalReviewProviderBinding = 'stub' | 'anthropic-messages-api' | 'unknown';
36
- export interface FinalReviewData {
37
- readonly status: FinalReviewStatus;
38
- readonly rid: string;
39
- readonly sessionId: string;
40
- readonly auditGoalPath: string;
41
- readonly serviceWired: boolean;
42
- readonly providerBinding: FinalReviewProviderBinding;
43
- /** Model id the bound provider answered with (real-provider runs only). */
44
- readonly model?: string;
45
- /** The 4-dim review the service produced (real-provider runs only). */
46
- readonly review?: FinalReviewOutput;
47
- /**
48
- * Environment variables that were absent when binding failed. Surfaced on
49
- * `data` because `fail()` redacts `message` through
50
- * `redactSensitiveErrorMessage`, whose catch-all pattern matches the words
51
- * `token` / `api_key` and would blank out the very names an operator needs.
52
- */
53
- readonly missingEnv?: readonly string[];
54
- }
55
34
  export declare function registerFinalReviewCommands(program: Command, io: ProgramIO): void;
35
+ export { emptyFinalReviewData, isSupportedLlmProvider, type FinalReviewData, type FinalReviewProviderBinding, type FinalReviewStatus, type PrepareFinalReviewOptions } from './final-review-command-shared.js';
@@ -4,7 +4,8 @@
4
4
  *
5
5
  * Exposes the `prepareFinalReview()` service (W2 T9 on
6
6
  * `feature/slice-topology-multipass`) via the CLI surface. The service
7
- * depends on an injected `LlmRunner`; this file owns the binding:
7
+ * depends on an injected `LlmRunner`; the binding lives in
8
+ * `final-review-prepare-command.ts`:
8
9
  * - `--llm-provider stub` (default) returns a structured "scaffold ready"
9
10
  * envelope WITHOUT calling the service, so CI can verify the route
10
11
  * offline. It performs no review, and says so in every hint it emits.
@@ -23,91 +24,14 @@
23
24
  * - `peaks audit goal` — propose a 6-dim goal from a human need
24
25
  * - `peaks prepare-final-review` — produce a 4-dim review evidence
25
26
  * pack for human acceptance
27
+ *
28
+ * This file is the registration module only; the run body it dispatches to
29
+ * lives in `final-review-prepare-command.ts` and the envelope vocabulary in
30
+ * `final-review-command-shared.ts`.
26
31
  */
27
- import { existsSync, statSync } from 'node:fs';
28
- import { join, resolve } from 'node:path';
29
- import { REQUEST_ID_PATTERN } from '../../services/artifacts/request-artifact-service.js';
30
- import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
31
- import { fail, ok } from 'peaks-loop-shared/result';
32
- import { createAnthropicRunner, LlmBindingError, LlmRequestError, resolveAnthropicConfig } from '../../services/llm/anthropic-runner.js';
33
- import { IncompleteFinalReviewError, prepareFinalReview } from '../../services/final-review/final-review-service.js';
34
- /** Whitelist of supported `--llm-provider` values for `peaks prepare-final-review`. */
35
- const SUPPORTED_LLM_PROVIDERS = ['anthropic', 'stub'];
36
- /**
37
- * Default stays `stub` (unlike `peaks audit goal`, whose default is the real
38
- * provider): the scaffold route is what CI and the registered e2e contract
39
- * exercise without credentials, and the stub envelope is labelled
40
- * `status: 'scaffold-only'` / `providerBinding: 'stub'` so it can never be
41
- * read as a review.
42
- */
43
- const DEFAULT_LLM_PROVIDER = 'stub';
44
- function isSupportedLlmProvider(value) {
45
- return SUPPORTED_LLM_PROVIDERS.includes(value);
46
- }
47
- /**
48
- * Empty placeholder used by `fail()` envelopes. `status` is
49
- * `'not-applicable'` on the error path so consumers can tell
50
- * "this is a placeholder on a failure" apart from "this is a real
51
- * scaffold-only success".
52
- */
53
- function emptyFinalReviewData(rid, sessionId, auditGoalPath, missingEnv) {
54
- return {
55
- status: 'not-applicable',
56
- rid,
57
- sessionId,
58
- auditGoalPath,
59
- serviceWired: false,
60
- providerBinding: 'unknown',
61
- ...(missingEnv === undefined ? {} : { missingEnv })
62
- };
63
- }
64
- function validateProjectRoot(projectArg) {
65
- const projectRoot = resolve(projectArg);
66
- if (!existsSync(projectRoot)) {
67
- return {
68
- ok: false,
69
- code: 'PROJECT_NOT_FOUND',
70
- message: `project path does not exist: ${projectArg}`
71
- };
72
- }
73
- let stat;
74
- try {
75
- stat = statSync(projectRoot);
76
- }
77
- catch (error) {
78
- return { ok: false, code: 'INVALID_PROJECT', message: getErrorMessage(error) };
79
- }
80
- if (!stat.isDirectory()) {
81
- return {
82
- ok: false,
83
- code: 'INVALID_PROJECT',
84
- message: `project path is not a directory: ${projectArg}`
85
- };
86
- }
87
- return { ok: true, projectRoot };
88
- }
89
- /**
90
- * Validate the session id. Rejects empty, path-traversal (`..`), and
91
- * any segment separator (`/`, `\`) so the caller cannot escape
92
- * `.peaks/_runtime/<sessionId>/audit-goal/` via CLI flags.
93
- */
94
- function validateSessionId(sessionId) {
95
- if (sessionId.length === 0) {
96
- return {
97
- ok: false,
98
- code: 'MISSING_REQUIRED_FLAG',
99
- message: '`--session-id` is required and must be a non-empty string'
100
- };
101
- }
102
- if (sessionId.includes('..') || sessionId.includes('/') || sessionId.includes('\\')) {
103
- return {
104
- ok: false,
105
- code: 'INVALID_SESSION_ID',
106
- message: '`--session-id` must not contain path-traversal or path-separator characters (rejected: "..", "/", "\\")'
107
- };
108
- }
109
- return { ok: true, sessionId };
110
- }
32
+ import { addJsonOption } from '../cli-helpers.js';
33
+ import { DEFAULT_LLM_PROVIDER, SUPPORTED_LLM_PROVIDERS } from './final-review-command-shared.js';
34
+ import { runPrepareFinalReview } from './final-review-prepare-command.js';
111
35
  export function registerFinalReviewCommands(program, io) {
112
36
  addJsonOption(program
113
37
  .command('prepare-final-review <rid>')
@@ -115,159 +39,8 @@ export function registerFinalReviewCommands(program, io) {
115
39
  .requiredOption('--project <path>', 'target project root')
116
40
  .requiredOption('--session-id <sid>', 'session id whose .peaks/_runtime/<sid>/audit-goal/<rid>.json is the approved goal source')
117
41
  .option('--llm-provider <name>', `LLM provider name: ${SUPPORTED_LLM_PROVIDERS.join(' | ')} (default: ${DEFAULT_LLM_PROVIDER} — performs no review)`, DEFAULT_LLM_PROVIDER)
118
- .option('--base <ref>', 'base ref for the pre/post baseline diff (`existing-functionality-intact`); default: merge-base with origin/HEAD, then origin/main, then origin/master, then HEAD~1 — pass this explicitly when none of those resolve')).action(async (rid, options) => {
119
- // 1. Project root must exist and be a directory.
120
- const projectValidation = validateProjectRoot(options.project);
121
- if (!projectValidation.ok) {
122
- printResult(io, fail('final-review.prepare', projectValidation.code, projectValidation.message, emptyFinalReviewData(rid, options.sessionId, ''), ['Verify the project path exists and is a directory']), options.json);
123
- process.exitCode = 1;
124
- return;
125
- }
126
- // 2. Session id must be a safe single-segment string.
127
- const sessionValidation = validateSessionId(options.sessionId);
128
- if (!sessionValidation.ok) {
129
- printResult(io, fail('final-review.prepare', sessionValidation.code, sessionValidation.message, emptyFinalReviewData(rid, options.sessionId, ''), [
130
- 'Pass a non-empty `--session-id` whose value is a single segment (no "..", "/", or "\\")'
131
- ]), options.json);
132
- process.exitCode = 1;
133
- return;
134
- }
135
- // 3. Compute the audit-goal path the service WOULD read. We do this
136
- // in two places: the pre-flight existence check (here) and the
137
- // stub-path envelope (below). The service computes it identically
138
- // at `src/services/final-review/final-review-service.ts:45-52`.
139
- //
140
- // Rid axis. The rid is the CLI positional and it is the FILENAME
141
- // segment below, so it is checked here, at the join. Added 2026-09-14
142
- // (repair R1): this join was a second-slot hole — the `--session-id`
143
- // validation above passed and the rid slot escaped. Found by the
144
- // widened rule D, not by a human reading the file.
145
- if (!REQUEST_ID_PATTERN.test(rid)) {
146
- printResult(io, fail('final-review.prepare', 'RID_INVALID', `Invalid request id: ${rid} (expected letters, digits, dots, underscores, or dashes)`, emptyFinalReviewData(rid, options.sessionId, ''), ['Pass the rid of the slice, e.g. 2026-09-14-some-slug']), options.json);
147
- process.exitCode = 1;
148
- return;
149
- }
150
- const auditGoalPath = join(projectValidation.projectRoot, '.peaks', '_runtime', sessionValidation.sessionId, 'audit-goal', `${rid}.json`);
151
- // 4. Pre-flight: if the audit-goal file is missing, surface a 404
152
- // BEFORE the stub/provider check so the caller learns the real
153
- // reason their request can't proceed.
154
- if (!existsSync(auditGoalPath)) {
155
- printResult(io, fail('final-review.prepare', 'AUDIT_GOAL_NOT_FOUND', `audit-goal file not found at expected path: ${auditGoalPath}`, emptyFinalReviewData(rid, sessionValidation.sessionId, auditGoalPath), [
156
- 'Run `peaks audit goal --project <path> --need <text>` first to produce the approved goal JSON.',
157
- 'Confirm `--session-id` matches the session that wrote the goal.'
158
- ]), options.json);
159
- process.exitCode = 1;
160
- return;
161
- }
162
- // 5. Provider check: unknown names fail loudly — a silent fallback to
163
- // `stub` would hand the caller a scaffold envelope that reads as a
164
- // review route, which is the defect class this gate exists to stop.
165
- const provider = options.llmProvider ?? DEFAULT_LLM_PROVIDER;
166
- if (!isSupportedLlmProvider(provider)) {
167
- printResult(io, fail('final-review.prepare', 'LLM_PROVIDER_NOT_IMPLEMENTED', `LLM provider "${provider}" is not implemented. Supported providers: ${SUPPORTED_LLM_PROVIDERS.join(', ')}.`, emptyFinalReviewData(rid, sessionValidation.sessionId, auditGoalPath), [
168
- `Re-run with \`--llm-provider anthropic\` for a real 4-dim review, or \`--llm-provider ${DEFAULT_LLM_PROVIDER}\` for an offline scaffold.`
169
- ]), options.json);
170
- process.exitCode = 1;
171
- return;
172
- }
173
- // 6. Stub path: surface a structured "scaffold ready" envelope.
174
- // We DO NOT call the service here — the stub runner answers the
175
- // audit-goal shape, not the 4-dim review shape, so running it through
176
- // `prepareFinalReview()` would only manufacture a malformed review.
177
- // The envelope confirms the route is wired end-to-end and reports the
178
- // audit-goal path the service WOULD read.
179
- if (provider === 'stub') {
180
- const data = {
181
- status: 'scaffold-only',
182
- rid,
183
- sessionId: sessionValidation.sessionId,
184
- auditGoalPath,
185
- serviceWired: true,
186
- providerBinding: 'stub'
187
- };
188
- const envelope = ok('final-review.prepare', data, [], [
189
- 'Stub provider: no 4-dim review was performed. This envelope only proves the route is wired and reachable.',
190
- `Audit-goal file is present at: ${auditGoalPath}`,
191
- 'Re-run with `--llm-provider anthropic` to produce a real review.'
192
- ]);
193
- printResult(io, envelope, options.json);
194
- return;
195
- }
196
- // 7. Real provider path: bind a real `LlmRunner` and run the service.
197
- // Binding happens INSIDE the try so an absent credential surfaces as
198
- // `LlmBindingError`'s own code instead of escaping as a crash. No
199
- // envelope is emitted on that path — a "successful" empty review would
200
- // be worse than an error.
201
- try {
202
- const config = resolveAnthropicConfig();
203
- const llmRunner = createAnthropicRunner(config);
204
- const review = await prepareFinalReview(rid, {
205
- projectRoot: projectValidation.projectRoot,
206
- sessionId: sessionValidation.sessionId,
207
- llmRunner,
208
- ...(options.base === undefined ? {} : { baseRef: options.base })
209
- });
210
- const data = {
211
- status: 'review-complete',
212
- rid,
213
- sessionId: sessionValidation.sessionId,
214
- auditGoalPath,
215
- serviceWired: true,
216
- providerBinding: 'anthropic-messages-api',
217
- model: config.model,
218
- review
219
- };
220
- const envelope = ok('final-review.prepare', data, review.allPass
221
- ? []
222
- : [
223
- `Dimensions needing human attention: ${review.needsAttention.join(', ') || 'none flagged'}.`
224
- ], [
225
- `4-dim review produced by anthropic-messages-api (model: ${config.model}).`,
226
- `allPass: ${String(review.allPass)}.`
227
- ]);
228
- printResult(io, envelope, options.json);
229
- }
230
- catch (error) {
231
- const code = finalReviewErrorCode(error);
232
- printResult(io, fail('final-review.prepare', code, getErrorMessage(error), emptyFinalReviewData(rid, sessionValidation.sessionId, auditGoalPath, error instanceof LlmBindingError ? error.missingEnv : undefined), finalReviewNextActions(code)), options.json);
233
- process.exitCode = 1;
234
- }
235
- });
236
- }
237
- /**
238
- * Map a thrown error to the CLI's error code. The LLM-layer errors already
239
- * carry codes precise enough to act on (`LLM_CREDENTIAL_MISSING`,
240
- * `LLM_REQUEST_FAILED`, …), so they are passed through rather than flattened
241
- * into one opaque failure.
242
- */
243
- function finalReviewErrorCode(error) {
244
- if (error instanceof LlmBindingError ||
245
- error instanceof LlmRequestError ||
246
- error instanceof IncompleteFinalReviewError) {
247
- return error.code;
248
- }
249
- return 'FINAL_REVIEW_FAILED';
250
- }
251
- function finalReviewNextActions(code) {
252
- switch (code) {
253
- case 'LLM_CREDENTIAL_MISSING':
254
- return [
255
- 'Export ANTHROPIC_AUTH_TOKEN (or ANTHROPIC_API_KEY) in the environment that launches peaks, then re-run.',
256
- 'For an offline scaffold instead of a review, re-run with `--llm-provider stub` — it performs NO review.'
257
- ];
258
- case 'LLM_MODEL_MISSING':
259
- return [
260
- 'Export ANTHROPIC_MODEL (or CLAUDE_CODE_SUBAGENT_MODEL) in the environment that launches peaks, then re-run.'
261
- ];
262
- case 'LLM_REQUEST_FAILED':
263
- return [
264
- 'Check ANTHROPIC_BASE_URL and network reachability, then re-run — a transport failure produces no review.'
265
- ];
266
- case 'INCOMPLETE_FINAL_REVIEW':
267
- return [
268
- 'The LLM reply was not valid JSON or omitted a required dimension; re-run so the gate is never read as complete.'
269
- ];
270
- default:
271
- return ['Re-run with `--llm-provider stub` to validate the CLI route without a real LLM.'];
272
- }
42
+ .option('--base <ref>', 'base ref for the pre/post baseline diff (`existing-functionality-intact`); default: merge-base with origin/HEAD, then origin/main, then origin/master, then HEAD~1 — pass this explicitly when none of those resolve')).action((rid, options) => runPrepareFinalReview(rid, options, io));
273
43
  }
44
+ // Re-export for tests / external consumers: the envelope vocabulary and the
45
+ // types this command's surface is documented with.
46
+ export { emptyFinalReviewData, isSupportedLlmProvider } from './final-review-command-shared.js';
@@ -0,0 +1,3 @@
1
+ import { type ProgramIO } from '../cli-helpers.js';
2
+ import { type PrepareFinalReviewOptions } from './final-review-command-shared.js';
3
+ export declare function runPrepareFinalReview(rid: string, options: PrepareFinalReviewOptions, io: ProgramIO): Promise<void>;
@@ -0,0 +1,200 @@
1
+ // src/cli/commands/final-review-prepare-command.ts
2
+ //
3
+ // The body of `peaks prepare-final-review`: the two input validations, the
4
+ // audit-goal path resolution, the provider check, the stub scaffold route and
5
+ // the real-provider route. Split out of `final-review-commands.ts`; every
6
+ // envelope code, message, `data` field and next-action string is unchanged.
7
+ //
8
+ // The input validations and the `_runtime` join below live in ONE module on
9
+ // purpose: rule D is file-scoped, so a join whose id slot is checked two
10
+ // modules away is a join the guard cannot see.
11
+ import { existsSync, statSync } from 'node:fs';
12
+ import { join, resolve } from 'node:path';
13
+ import { REQUEST_ID_PATTERN } from '../../services/artifacts/request-artifact-service.js';
14
+ import { createAnthropicRunner, LlmBindingError, resolveAnthropicConfig } from '../../services/llm/anthropic-runner.js';
15
+ import { prepareFinalReview } from '../../services/final-review/final-review-service.js';
16
+ import { getErrorMessage } from '../cli-helpers.js';
17
+ import { DEFAULT_LLM_PROVIDER, isSupportedLlmProvider, SUPPORTED_LLM_PROVIDERS } from './final-review-command-shared.js';
18
+ import { emitPrepareFailure, emitReviewEnvelope, emitStubEnvelope, finalReviewErrorCode, finalReviewNextActions } from './final-review-command-envelopes.js';
19
+ function validateProjectRoot(projectArg) {
20
+ const projectRoot = resolve(projectArg);
21
+ if (!existsSync(projectRoot)) {
22
+ return {
23
+ ok: false,
24
+ code: 'PROJECT_NOT_FOUND',
25
+ message: `project path does not exist: ${projectArg}`
26
+ };
27
+ }
28
+ let stat;
29
+ try {
30
+ stat = statSync(projectRoot);
31
+ }
32
+ catch (error) {
33
+ return { ok: false, code: 'INVALID_PROJECT', message: getErrorMessage(error) };
34
+ }
35
+ if (!stat.isDirectory()) {
36
+ return {
37
+ ok: false,
38
+ code: 'INVALID_PROJECT',
39
+ message: `project path is not a directory: ${projectArg}`
40
+ };
41
+ }
42
+ return { ok: true, projectRoot };
43
+ }
44
+ /**
45
+ * Validate the session id. Rejects empty, path-traversal (`..`), and
46
+ * any segment separator (`/`, `\`) so the caller cannot escape
47
+ * `.peaks/_runtime/<sessionId>/audit-goal/` via CLI flags.
48
+ */
49
+ function validateSessionId(sessionId) {
50
+ if (sessionId.length === 0) {
51
+ return {
52
+ ok: false,
53
+ code: 'MISSING_REQUIRED_FLAG',
54
+ message: '`--session-id` is required and must be a non-empty string'
55
+ };
56
+ }
57
+ if (sessionId.includes('..') || sessionId.includes('/') || sessionId.includes('\\')) {
58
+ return {
59
+ ok: false,
60
+ code: 'INVALID_SESSION_ID',
61
+ message: '`--session-id` must not contain path-traversal or path-separator characters (rejected: "..", "/", "\\")'
62
+ };
63
+ }
64
+ return { ok: true, sessionId };
65
+ }
66
+ /** The refusal for an audit goal the pre-flight did not find on disk. */
67
+ function auditGoalMissingRefusal(rid, sessionId, auditGoalPath) {
68
+ return {
69
+ rid,
70
+ code: 'AUDIT_GOAL_NOT_FOUND',
71
+ message: `audit-goal file not found at expected path: ${auditGoalPath}`,
72
+ sessionId,
73
+ auditGoalPath,
74
+ nextActions: [
75
+ 'Run `peaks audit goal --project <path> --need <text>` first to produce the approved goal JSON.',
76
+ 'Confirm `--session-id` matches the session that wrote the goal.'
77
+ ]
78
+ };
79
+ }
80
+ /**
81
+ * Resolve the audit-goal path, or the refusal that replaces it.
82
+ *
83
+ * The `rid` axis is checked HERE, at the join: the rid is the CLI positional
84
+ * and it is the FILENAME segment, so the `--session-id` validation does not
85
+ * cover it (added 2026-09-14, repair R1 — a second-slot hole, found by the
86
+ * widened rule D rather than by a human reading the file).
87
+ *
88
+ * The audit-goal existence pre-flight sits here too, so the caller learns the
89
+ * real reason its request cannot proceed BEFORE the provider check.
90
+ */
91
+ function resolveAuditGoalPath(rid, options, projectRoot) {
92
+ const sessionValidation = validateSessionId(options.sessionId);
93
+ if (!sessionValidation.ok) {
94
+ return {
95
+ rid,
96
+ code: sessionValidation.code,
97
+ message: sessionValidation.message,
98
+ sessionId: options.sessionId,
99
+ auditGoalPath: '',
100
+ nextActions: [
101
+ 'Pass a non-empty `--session-id` whose value is a single segment (no "..", "/", or "\\")'
102
+ ]
103
+ };
104
+ }
105
+ if (!REQUEST_ID_PATTERN.test(rid)) {
106
+ return {
107
+ rid,
108
+ code: 'RID_INVALID',
109
+ message: `Invalid request id: ${rid} (expected letters, digits, dots, underscores, or dashes)`,
110
+ sessionId: sessionValidation.sessionId,
111
+ auditGoalPath: '',
112
+ nextActions: ['Pass the rid of the slice, e.g. 2026-09-14-some-slug']
113
+ };
114
+ }
115
+ const auditGoalPath = join(projectRoot, '.peaks', '_runtime', sessionValidation.sessionId, 'audit-goal', `${rid}.json`);
116
+ if (!existsSync(auditGoalPath)) {
117
+ return auditGoalMissingRefusal(rid, sessionValidation.sessionId, auditGoalPath);
118
+ }
119
+ return { projectRoot, sessionId: sessionValidation.sessionId, auditGoalPath };
120
+ }
121
+ /** Resolve the three inputs the run needs, or the refusal that replaces them. */
122
+ function resolvePrepareInputs(rid, options) {
123
+ const projectValidation = validateProjectRoot(options.project);
124
+ if (!projectValidation.ok) {
125
+ return {
126
+ rid,
127
+ code: projectValidation.code,
128
+ message: projectValidation.message,
129
+ sessionId: options.sessionId,
130
+ auditGoalPath: '',
131
+ nextActions: ['Verify the project path exists and is a directory']
132
+ };
133
+ }
134
+ return resolveAuditGoalPath(rid, options, projectValidation.projectRoot);
135
+ }
136
+ function isRefusal(value) {
137
+ return !('projectRoot' in value);
138
+ }
139
+ /**
140
+ * Real provider path: bind a real `LlmRunner` and run the service.
141
+ *
142
+ * Binding happens INSIDE the try so an absent credential surfaces as
143
+ * `LlmBindingError`'s own code instead of escaping as a crash. No envelope is
144
+ * emitted on that path — a "successful" empty review would be worse than an
145
+ * error.
146
+ */
147
+ async function runRealReview(io, rid, inputs, options) {
148
+ const { json } = options;
149
+ try {
150
+ const config = resolveAnthropicConfig();
151
+ const llmRunner = createAnthropicRunner(config);
152
+ const review = await prepareFinalReview(rid, {
153
+ projectRoot: inputs.projectRoot,
154
+ sessionId: inputs.sessionId,
155
+ llmRunner,
156
+ ...(options.base === undefined ? {} : { baseRef: options.base })
157
+ });
158
+ emitReviewEnvelope(io, { rid, goal: inputs, model: config.model, review, json });
159
+ }
160
+ catch (error) {
161
+ const code = finalReviewErrorCode(error);
162
+ emitPrepareFailure(io, json, {
163
+ rid,
164
+ code,
165
+ message: getErrorMessage(error),
166
+ sessionId: inputs.sessionId,
167
+ auditGoalPath: inputs.auditGoalPath,
168
+ nextActions: finalReviewNextActions(code)
169
+ }, error instanceof LlmBindingError ? error.missingEnv : undefined);
170
+ }
171
+ }
172
+ export async function runPrepareFinalReview(rid, options, io) {
173
+ const inputs = resolvePrepareInputs(rid, options);
174
+ if (isRefusal(inputs)) {
175
+ emitPrepareFailure(io, options.json, inputs);
176
+ return;
177
+ }
178
+ // Unknown provider names fail loudly — a silent fallback to `stub` would hand
179
+ // the caller a scaffold envelope that reads as a review route, which is the
180
+ // defect class this gate exists to stop.
181
+ const provider = options.llmProvider ?? DEFAULT_LLM_PROVIDER;
182
+ if (!isSupportedLlmProvider(provider)) {
183
+ emitPrepareFailure(io, options.json, {
184
+ rid,
185
+ code: 'LLM_PROVIDER_NOT_IMPLEMENTED',
186
+ message: `LLM provider "${provider}" is not implemented. Supported providers: ${SUPPORTED_LLM_PROVIDERS.join(', ')}.`,
187
+ sessionId: inputs.sessionId,
188
+ auditGoalPath: inputs.auditGoalPath,
189
+ nextActions: [
190
+ `Re-run with \`--llm-provider anthropic\` for a real 4-dim review, or \`--llm-provider ${DEFAULT_LLM_PROVIDER}\` for an offline scaffold.`
191
+ ]
192
+ });
193
+ return;
194
+ }
195
+ if (provider === 'stub') {
196
+ emitStubEnvelope(io, rid, inputs, options.json);
197
+ return;
198
+ }
199
+ await runRealReview(io, rid, inputs, options);
200
+ }
@@ -0,0 +1,44 @@
1
+ import type { DispatchRecord } from '../../services/dispatch/dispatch-record-writer.js';
2
+ import type { FinalizeSelection } from './finalize-selection.js';
3
+ interface FinalizedEntry {
4
+ recordPath: string;
5
+ requestId: string;
6
+ status: string;
7
+ }
8
+ interface SkippedEntry {
9
+ recordPath: string;
10
+ reason: string;
11
+ }
12
+ interface FailedEntry {
13
+ recordPath: string;
14
+ error: string;
15
+ }
16
+ /** The sweep's three counters, threaded explicitly instead of closed over. */
17
+ export interface FinalizeAccumulator {
18
+ readonly finalized: FinalizedEntry[];
19
+ readonly skipped: SkippedEntry[];
20
+ readonly errors: FailedEntry[];
21
+ }
22
+ export interface MappedOutcome {
23
+ readonly status: 'done' | 'failed' | 'cancelled';
24
+ readonly outcome: 'success' | 'failed' | 'cancelled';
25
+ }
26
+ export declare const OUTCOME_MAP: Record<string, MappedOutcome>;
27
+ export declare function makeAccumulator(): FinalizeAccumulator;
28
+ /**
29
+ * N2 — one unreadable record must not abort the sweep.
30
+ *
31
+ * Skipping `active-dispatches.json` and `batch-*.counter.json` by FILENAME
32
+ * removed the two non-record files that happened to be in the directory, but a
33
+ * single stale or foreign `dispatch-*.json` (an old `version`, hand-edited
34
+ * JSON, a truncated write) still made `readRecord` throw from OUTSIDE any
35
+ * try/catch — and the throw escaped to the action's outer handler, so
36
+ * `--request-id` AND `--batch` both died with `FINALIZE_ERROR` and exit 1
37
+ * without touching a single healthy record.
38
+ *
39
+ * A record that cannot be read is now reported in `errors[]` and skipped;
40
+ * every other record is processed as before.
41
+ */
42
+ export declare function tryReadRecord(recordPath: string, readRecord: (recordPath: string) => DispatchRecord, acc: FinalizeAccumulator): DispatchRecord | null;
43
+ export declare function buildFinalizeHints(acc: FinalizeAccumulator, selection: FinalizeSelection | null): string[];
44
+ export {};