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
@@ -18,308 +18,35 @@
18
18
  *
19
19
  * Real deployment (k8s rollout, LB config, monitoring integration) is
20
20
  * OUT OF SCOPE for this slice.
21
+ *
22
+ * The verb implementations live beside this file, one module per verb:
23
+ * `release-plan-command.ts`, `release-canary-command.ts`,
24
+ * `release-promote-command.ts`, `release-watch-command.ts`,
25
+ * `release-done-command.ts`, `release-rollback-command.ts`,
26
+ * `release-hotfix-command.ts`, `release-precheck-command.ts`, with their shared
27
+ * project-root / canary-percent vocabulary in `release-command-shared.ts`.
21
28
  */
22
- import { findProjectRoot } from '../../services/config/config-safety.js';
23
- import { hotfixRelease, isReleaseStage, planRelease, readReleaseState, rollbackRelease, transitionRelease, watchWindow, writeReleaseState } from '../../services/release/release-state.js';
24
- import { runAllLayers } from '../../services/release/version-precheck-service.js';
25
- import { runChangesetHardGate } from '../../services/changeset/changeset-check-service.js';
26
- import { fail, ok } from 'peaks-loop-shared/result';
27
- import { addJsonOption, printResult } from '../cli-helpers.js';
28
- const CANARY_PERCENTS = {
29
- 10: 'canary-10',
30
- 50: 'canary-50'
31
- };
32
- // precheck-guard via direct function call (not via program.parseAsync with a
33
- // mocked service). Returns the result envelope for the caller to print.
34
- export function executeCanaryAction(opts, io, projectRoot) {
35
- // this function is called (step 0 short-circuits with CHANGESET_BLOCKED).
36
- // Layers C/D default warning → do not block canary; --strict upgrade would
37
- // Layers C/D default warning → do not block canary; --strict upgrade would
38
- const precheck = runAllLayers({ projectRoot, strict: false });
39
- const blockerEntry = Object.entries(precheck.layers).find(([, l]) => l.status === 'blocker');
40
- if (blockerEntry !== undefined) {
41
- const [name, result] = blockerEntry;
42
- return {
43
- ok: false,
44
- status: 'PRECHECK_BLOCKER',
45
- blockerLayer: { name, result },
46
- payload: {
47
- projectRoot,
48
- precheckSnapshotAt: precheck.snapshotAt,
49
- layer: name,
50
- message: result.message,
51
- remediation: result.remediation
52
- }
53
- };
54
- }
55
- const percent = Number.parseInt(opts.percent, 10);
56
- if (percent !== 10 && percent !== 50) {
57
- return {
58
- ok: false,
59
- status: 'INVALID_PERCENT',
60
- payload: { projectRoot, got: opts.percent }
61
- };
62
- }
63
- const state = readReleaseState(projectRoot);
64
- const targetStage = CANARY_PERCENTS[percent];
65
- const result = transitionRelease(state, targetStage, opts.note);
66
- if ('error' in result) {
67
- return {
68
- ok: false,
69
- status: 'INVALID_TRANSITION',
70
- payload: { projectRoot, error: result.error }
71
- };
72
- }
73
- writeReleaseState(projectRoot, result.state);
74
- return {
75
- ok: true,
76
- status: 'OK',
77
- payload: {
78
- projectRoot,
79
- percent,
80
- currentStage: targetStage,
81
- nextAction: percent === 10 ? 'peaks release canary --percent 50' : 'peaks release promote'
82
- }
83
- };
84
- }
29
+ import { registerReleaseCanaryCommand } from './release-canary-command.js';
30
+ import { registerReleasePrecheckCommand } from './release-precheck-command.js';
31
+ import { registerReleaseDoneCommand } from './release-done-command.js';
32
+ import { registerReleaseHotfixCommand } from './release-hotfix-command.js';
33
+ import { registerReleasePlanCommand } from './release-plan-command.js';
34
+ import { registerReleasePromoteCommand } from './release-promote-command.js';
35
+ import { registerReleaseRollbackCommand } from './release-rollback-command.js';
36
+ import { registerReleaseWatchCommand } from './release-watch-command.js';
85
37
  export function registerReleaseCommands(program, io) {
86
38
  const release = program
87
39
  .command('release')
88
40
  .description('v2.15.0 follow-up G15: canary → promote → watch → done / hotfix state machine.');
89
- // 1. plan
90
- addJsonOption(release
91
- .command('plan <version>')
92
- .description('Start a new release. Stores the version in the canary pipeline state. ' +
93
- 'Fails when there is already an active release in any non-terminal stage.')
94
- .option('--project <path>', 'project root (default: cwd)')).action((version, opts) => {
95
- const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
96
- const state = readReleaseState(projectRoot);
97
- const result = planRelease(state, version);
98
- if ('error' in result) {
99
- printResult(io, fail('release.plan', 'CONFLICT', result.error, { projectRoot }, [
100
- 'Run `peaks release rollback` or `peaks release hotfix` to clear the active release.'
101
- ]), opts.json ?? false);
102
- return;
103
- }
104
- writeReleaseState(projectRoot, result.state);
105
- printResult(io, ok('release.plan', {
106
- projectRoot,
107
- version: result.record.version,
108
- currentStage: result.record.currentStage
109
- }, [], ['Run `peaks release canary --percent 10` to begin the canary phase.']), opts.json ?? false);
110
- });
111
- addJsonOption(release
112
- .command('canary')
113
- .description('Advance the active release to a canary stage. Two percent values supported: ' +
114
- '10 (first canary, requires stage=planned) and 50 (second canary, requires ' +
115
- 'stage=canary-10). Runs `peaks release precheck` first and refuses with ' +
116
- 'PRECHECK_BLOCKER if any blocker layer (rootVsShared or tagCollision) fails.')
117
- .requiredOption('--percent <10|50>', 'canary percent (10 or 50)')
118
- .option('--note <text>', 'optional note for the stage transition')
119
- .option('--project <path>', 'project root (default: cwd)')).action((opts) => {
120
- const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
121
- const gate = runChangesetHardGate(projectRoot);
122
- if (gate.state === 'staged-present') {
123
- process.exitCode = 1;
124
- printResult(io, fail('release.canary', 'CHANGESET_BLOCKED', `${gate.stagedFiles.length} staged .changeset/*.md file(s) — refusing canary`, {
125
- projectRoot,
126
- state: gate.state,
127
- stagedFiles: [...gate.stagedFiles],
128
- snapshotAt: gate.snapshotAt
129
- }, [
130
- `Drain pending changesets (coordinating LLM: drain via the standard changeset consumption path), then re-run \`peaks changeset check --project ${projectRoot}\` to confirm clean state.`
131
- ]), opts.json ?? false);
132
- return;
133
- }
134
- const result = executeCanaryAction(opts, io, projectRoot);
135
- if (result.status === 'PRECHECK_BLOCKER') {
136
- const layer = result.blockerLayer;
137
- printResult(io, fail('release.canary', 'PRECHECK_BLOCKER', `precheck blocker on layer '${layer?.name ?? 'unknown'}': ${layer?.result.message ?? ''}`, result.payload, [
138
- `Run 'peaks release precheck --project ${projectRoot}' for the full 4-layer envelope.`,
139
- `Run 'peaks release precheck --strict' to also surface warning-layer issues.`,
140
- `Remediation: ${layer?.result.remediation ?? ''}`
141
- ]), opts.json ?? false);
142
- return;
143
- }
144
- if (result.status === 'INVALID_PERCENT') {
145
- printResult(io, fail('release.canary', 'INVALID_PERCENT', `--percent must be 10 or 50 (got "${opts.percent}")`, result.payload, []), opts.json ?? false);
146
- return;
147
- }
148
- if (result.status === 'INVALID_TRANSITION') {
149
- printResult(io, fail('release.canary', 'INVALID_TRANSITION', String(result.payload['error'] ?? ''), result.payload, []), opts.json ?? false);
150
- return;
151
- }
152
- printResult(io, ok('release.canary', result.payload, [], []), opts.json ?? false);
153
- });
154
- // 3. promote
155
- addJsonOption(release
156
- .command('promote')
157
- .description('Promote the canary to 100% (full release). Requires stage=canary-50. ' +
158
- 'Records the promoted-at timestamp and starts the 24h watch window.')
159
- .option('--note <text>', 'optional note')
160
- .option('--project <path>', 'project root (default: cwd)')).action((opts) => {
161
- const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
162
- const state = readReleaseState(projectRoot);
163
- const result = transitionRelease(state, 'promoted', opts.note);
164
- if ('error' in result) {
165
- printResult(io, fail('release.promote', 'INVALID_TRANSITION', result.error, { projectRoot }, []), opts.json ?? false);
166
- return;
167
- }
168
- writeReleaseState(projectRoot, result.state);
169
- printResult(io, ok('release.promote', {
170
- projectRoot,
171
- currentStage: 'promoted',
172
- promotedAt: result.state.active?.promotedAt
173
- }, [], [
174
- 'Watch window started. Run `peaks release watch` to check progress; `peaks release rollback` for emergency.'
175
- ]), opts.json ?? false);
176
- });
177
- // 4. watch
178
- addJsonOption(release
179
- .command('watch')
180
- .description('Show the watch window status for the current promoted release. ' +
181
- '24h window from promoted-at. After the window, run `peaks release done` ' +
182
- 'to mark the release complete.')
183
- .option('--project <path>', 'project root (default: cwd)')).action((opts) => {
184
- const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
185
- const state = readReleaseState(projectRoot);
186
- if (state.active === null) {
187
- printResult(io, fail('release.watch', 'NO_ACTIVE', 'no active release to watch', { projectRoot }, [
188
- 'Run `peaks release plan <version>` to start one.'
189
- ]), opts.json ?? false);
190
- return;
191
- }
192
- const win = watchWindow(state.active);
193
- const readyForDone = win.percentComplete >= 1.0;
194
- printResult(io, ok('release.watch', {
195
- projectRoot,
196
- version: state.active.version,
197
- currentStage: state.active.currentStage,
198
- window: {
199
- elapsedMs: win.elapsedMs,
200
- remainingMs: win.remainingMs,
201
- windowMs: win.windowMs,
202
- percentComplete: Math.round(win.percentComplete * 100) / 100
203
- },
204
- readyForDone
205
- }, readyForDone
206
- ? ['Watch window complete. Run `peaks release done` to mark the release done.']
207
- : []), opts.json ?? false);
208
- });
209
- // 5. done (implicit helper; not in original spec but useful)
210
- addJsonOption(release
211
- .command('done')
212
- .description('Mark the active release as done. Requires the watch window to be ' +
213
- 'complete (24h after promoted-at).')
214
- .option('--project <path>', 'project root (default: cwd)')).action((opts) => {
215
- const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
216
- const state = readReleaseState(projectRoot);
217
- if (state.active === null) {
218
- printResult(io, fail('release.done', 'NO_ACTIVE', 'no active release', { projectRoot }, []), opts.json ?? false);
219
- return;
220
- }
221
- // No stage guard here: `watching` is unreachable (nothing ever calls
222
- // transitionRelease(state, 'watching')), so the real precondition is the
223
- // watch window itself — the same thing this command's description
224
- // documents ("Requires the watch window to be complete"). The stage
225
- // table (`promoted → watching → done`) stays as the declared design, but
226
- // `promoted` may now reach `done` directly.
227
- const win = watchWindow(state.active);
228
- if (win.percentComplete < 1.0) {
229
- printResult(io, fail('release.done', 'WATCH_INCOMPLETE', `watch window not yet complete (${Math.round(win.percentComplete * 100)}% elapsed)`, { projectRoot }, []), opts.json ?? false);
230
- return;
231
- }
232
- const result = transitionRelease(state, 'done');
233
- if ('error' in result) {
234
- printResult(io, fail('release.done', 'INVALID_TRANSITION', result.error, { projectRoot }, []), opts.json ?? false);
235
- return;
236
- }
237
- // Move to history.
238
- const finalRecord = result.state.active;
239
- const newState = {
240
- version: 1,
241
- active: null,
242
- history: [...result.state.history, finalRecord]
243
- };
244
- writeReleaseState(projectRoot, newState);
245
- printResult(io, ok('release.done', {
246
- projectRoot,
247
- version: finalRecord.version,
248
- doneAt: finalRecord.doneAt
249
- }, [], []), opts.json ?? false);
250
- });
251
- // 6. rollback
252
- addJsonOption(release
253
- .command('rollback')
254
- .description('Emergency rollback of the active release. Moves the active release to ' +
255
- 'the history with currentStage=rolled-back. Available from any ' +
256
- 'pre-done stage.')
257
- .option('--note <text>', 'optional rollback reason')
258
- .option('--project <path>', 'project root (default: cwd)')).action((opts) => {
259
- const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
260
- const state = readReleaseState(projectRoot);
261
- const result = rollbackRelease(state, opts.note);
262
- if ('error' in result) {
263
- printResult(io, fail('release.rollback', 'INVALID_TRANSITION', result.error, { projectRoot }, []), opts.json ?? false);
264
- return;
265
- }
266
- writeReleaseState(projectRoot, result.state);
267
- printResult(io, ok('release.rollback', {
268
- projectRoot,
269
- rolledBack: result.record.version,
270
- finalStage: result.record.currentStage
271
- }, [], ['Run `peaks release hotfix <version>` to start a hotfix on the previous release.']), opts.json ?? false);
272
- });
273
- // 7. hotfix
274
- addJsonOption(release
275
- .command('hotfix <version>')
276
- .description('Start a hotfix release. Forces a rollback of any active release, ' +
277
- 'skips the `planned` stage, and starts the new release at canary-10. ' +
278
- 'Use this for紧急修复 — minimal ceremony, no full prd ceremony.')
279
- .option('--note <text>', 'optional hotfix note')
280
- .option('--project <path>', 'project root (default: cwd)')).action((version, opts) => {
281
- const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
282
- const changesetGate = runChangesetHardGate(projectRoot);
283
- if (changesetGate.state === 'staged-present') {
284
- process.exitCode = 1;
285
- printResult(io, fail('release.hotfix', 'CHANGESET_BLOCKED', `${changesetGate.stagedFiles.length} staged .changeset/*.md file(s) — refusing to start hotfix`, {
286
- projectRoot,
287
- stagedFiles: [...changesetGate.stagedFiles],
288
- snapshotAt: changesetGate.snapshotAt
289
- }, [
290
- `Drain pending changesets (coordinating LLM: drain via the standard changeset consumption path), then re-run \`peaks changeset check --project ${projectRoot}\` to confirm clean state.`
291
- ]), opts.json ?? false);
292
- return;
293
- }
294
- const state = readReleaseState(projectRoot);
295
- const result = hotfixRelease(state, version, opts.note);
296
- if ('error' in result) {
297
- printResult(io, fail('release.hotfix', 'HOTFIX_FAILED', result.error, { projectRoot }, []), opts.json ?? false);
298
- return;
299
- }
300
- writeReleaseState(projectRoot, result.state);
301
- printResult(io, ok('release.hotfix', {
302
- projectRoot,
303
- version: result.record.version,
304
- currentStage: result.record.currentStage
305
- }, [], ['Hotfix started at canary-10. Run `peaks release canary --percent 50` to advance.']), opts.json ?? false);
306
- });
307
- addJsonOption(release
308
- .command('precheck')
309
- .description('Run the 4-layer version precheck (rootVsShared / tagCollision / ' +
310
- 'changesetStaged / workspaceLockstep). Layer A+B are blockers by default; ' +
311
- 'Layer C+D are warnings unless --strict is passed (CI parity mode). ' +
312
- 'Shared with publish.yml gate-cli-version step §(A).')
313
- .option('--strict', 'treat warnings as blockers (CI parity mode)')
314
- .option('--project <path>', 'project root (default: cwd)')).action((opts) => {
315
- const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
316
- const envelope = runAllLayers({ projectRoot, strict: opts.strict === true });
317
- process.exitCode = envelope.ok ? 0 : 1;
318
- const warningLines = envelope.overall === 'warning'
319
- ? ['Warning layers reported but did not block. Re-run with --strict to upgrade.']
320
- : [];
321
- printResult(io, ok('release.precheck', envelope, [], warningLines), opts.json ?? false);
322
- });
41
+ registerReleasePlanCommand(release, io);
42
+ registerReleaseCanaryCommand(release, io);
43
+ registerReleasePromoteCommand(release, io);
44
+ registerReleaseWatchCommand(release, io);
45
+ registerReleaseDoneCommand(release, io);
46
+ registerReleaseRollbackCommand(release, io);
47
+ registerReleaseHotfixCommand(release, io);
48
+ registerReleasePrecheckCommand(release, io);
323
49
  }
324
50
  // Re-export for tests / external consumers.
325
- export { isReleaseStage };
51
+ export { executeCanaryAction } from './release-canary-command.js';
52
+ export { isReleaseStage } from '../../services/release/release-state.js';
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerReleaseDoneCommand(release: Command, io: ProgramIO): void;
@@ -0,0 +1,64 @@
1
+ // src/cli/commands/release-done-command.ts
2
+ //
3
+ // `peaks release done` — close the active release once the watch window is
4
+ // complete. Split out of `release-commands.ts`; the verb name, its options, the
5
+ // "no stage guard, the window is the precondition" ruling and the envelope
6
+ // shape are unchanged.
7
+ import { readReleaseState, transitionRelease, watchWindow, writeReleaseState } from '../../services/release/release-state.js';
8
+ import { fail, ok } from 'peaks-loop-shared/result';
9
+ import { addJsonOption, printResult } from '../cli-helpers.js';
10
+ import { resolveReleaseProjectRoot } from './release-command-shared.js';
11
+ function noActiveRelease(projectRoot) {
12
+ return fail('release.done', 'NO_ACTIVE', 'no active release', { projectRoot }, []);
13
+ }
14
+ function watchIncomplete(projectRoot, percentComplete) {
15
+ return fail('release.done', 'WATCH_INCOMPLETE', `watch window not yet complete (${Math.round(percentComplete * 100)}% elapsed)`, { projectRoot }, []);
16
+ }
17
+ function doneTransitionFailed(projectRoot, error) {
18
+ return fail('release.done', 'INVALID_TRANSITION', error, { projectRoot }, []);
19
+ }
20
+ function runReleaseDone(io, opts) {
21
+ const projectRoot = resolveReleaseProjectRoot(opts.project);
22
+ const state = readReleaseState(projectRoot);
23
+ if (state.active === null) {
24
+ printResult(io, noActiveRelease(projectRoot), opts.json ?? false);
25
+ return;
26
+ }
27
+ // No stage guard here: `watching` is unreachable (nothing ever calls
28
+ // transitionRelease(state, 'watching')), so the real precondition is the
29
+ // watch window itself — the same thing this command's description
30
+ // documents ("Requires the watch window to be complete"). The stage
31
+ // table (`promoted → watching → done`) stays as the declared design, but
32
+ // `promoted` may now reach `done` directly.
33
+ const win = watchWindow(state.active);
34
+ if (win.percentComplete < 1.0) {
35
+ printResult(io, watchIncomplete(projectRoot, win.percentComplete), opts.json ?? false);
36
+ return;
37
+ }
38
+ const result = transitionRelease(state, 'done');
39
+ if ('error' in result) {
40
+ printResult(io, doneTransitionFailed(projectRoot, result.error), opts.json ?? false);
41
+ return;
42
+ }
43
+ // Move to history. `transitionRelease` never clears `active`; the fallback
44
+ // is what keeps this read type-safe without asserting non-nullness.
45
+ const finalRecord = result.state.active ?? state.active;
46
+ const newState = {
47
+ version: 1,
48
+ active: null,
49
+ history: [...result.state.history, finalRecord]
50
+ };
51
+ writeReleaseState(projectRoot, newState);
52
+ printResult(io, ok('release.done', {
53
+ projectRoot,
54
+ version: finalRecord.version,
55
+ doneAt: finalRecord.doneAt
56
+ }, [], []), opts.json ?? false);
57
+ }
58
+ export function registerReleaseDoneCommand(release, io) {
59
+ addJsonOption(release
60
+ .command('done')
61
+ .description('Mark the active release as done. Requires the watch window to be ' +
62
+ 'complete (24h after promoted-at).')
63
+ .option('--project <path>', 'project root (default: cwd)')).action((opts) => runReleaseDone(io, opts));
64
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerReleaseHotfixCommand(release: Command, io: ProgramIO): void;
@@ -0,0 +1,50 @@
1
+ // src/cli/commands/release-hotfix-command.ts
2
+ //
3
+ // `peaks release hotfix <version>` — start a hotfix, forcing any active release
4
+ // back. Split out of `release-commands.ts`; the verb name, its options, the
5
+ // changeset gate and the envelope shape are unchanged.
6
+ import { hotfixRelease, readReleaseState, writeReleaseState } from '../../services/release/release-state.js';
7
+ import { runChangesetHardGate } from '../../services/changeset/changeset-check-service.js';
8
+ import { fail, ok } from 'peaks-loop-shared/result';
9
+ import { addJsonOption, printResult } from '../cli-helpers.js';
10
+ import { resolveReleaseProjectRoot } from './release-command-shared.js';
11
+ /** The refusal a staged changeset triggers before a hotfix may start. */
12
+ function changesetBlockedOutcome(gate, projectRoot) {
13
+ return fail('release.hotfix', 'CHANGESET_BLOCKED', `${gate.stagedFiles.length} staged .changeset/*.md file(s) — refusing to start hotfix`, {
14
+ projectRoot,
15
+ stagedFiles: [...gate.stagedFiles],
16
+ snapshotAt: gate.snapshotAt
17
+ }, [
18
+ `Drain pending changesets (coordinating LLM: drain via the standard changeset consumption path), then re-run \`peaks changeset check --project ${projectRoot}\` to confirm clean state.`
19
+ ]);
20
+ }
21
+ function runReleaseHotfix(io, version, opts) {
22
+ const projectRoot = resolveReleaseProjectRoot(opts.project);
23
+ const gate = runChangesetHardGate(projectRoot);
24
+ if (gate.state === 'staged-present') {
25
+ process.exitCode = 1;
26
+ printResult(io, changesetBlockedOutcome(gate, projectRoot), opts.json ?? false);
27
+ return;
28
+ }
29
+ const state = readReleaseState(projectRoot);
30
+ const result = hotfixRelease(state, version, opts.note);
31
+ if ('error' in result) {
32
+ printResult(io, fail('release.hotfix', 'HOTFIX_FAILED', result.error, { projectRoot }, []), opts.json ?? false);
33
+ return;
34
+ }
35
+ writeReleaseState(projectRoot, result.state);
36
+ printResult(io, ok('release.hotfix', {
37
+ projectRoot,
38
+ version: result.record.version,
39
+ currentStage: result.record.currentStage
40
+ }, [], ['Hotfix started at canary-10. Run `peaks release canary --percent 50` to advance.']), opts.json ?? false);
41
+ }
42
+ export function registerReleaseHotfixCommand(release, io) {
43
+ addJsonOption(release
44
+ .command('hotfix <version>')
45
+ .description('Start a hotfix release. Forces a rollback of any active release, ' +
46
+ 'skips the `planned` stage, and starts the new release at canary-10. ' +
47
+ 'Use this for紧急修复 — minimal ceremony, no full prd ceremony.')
48
+ .option('--note <text>', 'optional hotfix note')
49
+ .option('--project <path>', 'project root (default: cwd)')).action((version, opts) => runReleaseHotfix(io, version, opts));
50
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerReleasePlanCommand(release: Command, io: ProgramIO): void;
@@ -0,0 +1,33 @@
1
+ // src/cli/commands/release-plan-command.ts
2
+ //
3
+ // `peaks release plan <version>` — start a new release. Split out of
4
+ // `release-commands.ts`; the verb name, its options and the envelope shape are
5
+ // unchanged.
6
+ import { planRelease, readReleaseState, writeReleaseState } from '../../services/release/release-state.js';
7
+ import { fail, ok } from 'peaks-loop-shared/result';
8
+ import { addJsonOption, printResult } from '../cli-helpers.js';
9
+ import { resolveReleaseProjectRoot } from './release-command-shared.js';
10
+ function runReleasePlan(io, version, opts) {
11
+ const projectRoot = resolveReleaseProjectRoot(opts.project);
12
+ const state = readReleaseState(projectRoot);
13
+ const result = planRelease(state, version);
14
+ if ('error' in result) {
15
+ printResult(io, fail('release.plan', 'CONFLICT', result.error, { projectRoot }, [
16
+ 'Run `peaks release rollback` or `peaks release hotfix` to clear the active release.'
17
+ ]), opts.json ?? false);
18
+ return;
19
+ }
20
+ writeReleaseState(projectRoot, result.state);
21
+ printResult(io, ok('release.plan', {
22
+ projectRoot,
23
+ version: result.record.version,
24
+ currentStage: result.record.currentStage
25
+ }, [], ['Run `peaks release canary --percent 10` to begin the canary phase.']), opts.json ?? false);
26
+ }
27
+ export function registerReleasePlanCommand(release, io) {
28
+ addJsonOption(release
29
+ .command('plan <version>')
30
+ .description('Start a new release. Stores the version in the canary pipeline state. ' +
31
+ 'Fails when there is already an active release in any non-terminal stage.')
32
+ .option('--project <path>', 'project root (default: cwd)')).action((version, opts) => runReleasePlan(io, version, opts));
33
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerReleasePrecheckCommand(release: Command, io: ProgramIO): void;
@@ -0,0 +1,28 @@
1
+ // src/cli/commands/release-precheck-command.ts
2
+ //
3
+ // `peaks release precheck` — the 4-layer version precheck. Split out of
4
+ // `release-commands.ts`; the verb name, its options, the `--strict` CI-parity
5
+ // meaning and both the envelope and the exit code are unchanged.
6
+ import { runAllLayers } from '../../services/release/version-precheck-service.js';
7
+ import { ok } from 'peaks-loop-shared/result';
8
+ import { addJsonOption, printResult } from '../cli-helpers.js';
9
+ import { resolveReleaseProjectRoot } from './release-command-shared.js';
10
+ function runReleasePrecheck(io, opts) {
11
+ const projectRoot = resolveReleaseProjectRoot(opts.project);
12
+ const envelope = runAllLayers({ projectRoot, strict: opts.strict === true });
13
+ process.exitCode = envelope.ok ? 0 : 1;
14
+ const warningLines = envelope.overall === 'warning'
15
+ ? ['Warning layers reported but did not block. Re-run with --strict to upgrade.']
16
+ : [];
17
+ printResult(io, ok('release.precheck', envelope, [], warningLines), opts.json ?? false);
18
+ }
19
+ export function registerReleasePrecheckCommand(release, io) {
20
+ addJsonOption(release
21
+ .command('precheck')
22
+ .description('Run the 4-layer version precheck (rootVsShared / tagCollision / ' +
23
+ 'changesetStaged / workspaceLockstep). Layer A+B are blockers by default; ' +
24
+ 'Layer C+D are warnings unless --strict is passed (CI parity mode). ' +
25
+ 'Shared with publish.yml gate-cli-version step §(A).')
26
+ .option('--strict', 'treat warnings as blockers (CI parity mode)')
27
+ .option('--project <path>', 'project root (default: cwd)')).action((opts) => runReleasePrecheck(io, opts));
28
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerReleasePromoteCommand(release: Command, io: ProgramIO): void;
@@ -0,0 +1,34 @@
1
+ // src/cli/commands/release-promote-command.ts
2
+ //
3
+ // `peaks release promote` — promote the canary to 100% and start the watch
4
+ // window. Split out of `release-commands.ts`; the verb name, its options, the
5
+ // `canary-50` precondition and the envelope shape are unchanged.
6
+ import { readReleaseState, transitionRelease, writeReleaseState } from '../../services/release/release-state.js';
7
+ import { fail, ok } from 'peaks-loop-shared/result';
8
+ import { addJsonOption, printResult } from '../cli-helpers.js';
9
+ import { resolveReleaseProjectRoot } from './release-command-shared.js';
10
+ function runReleasePromote(io, opts) {
11
+ const projectRoot = resolveReleaseProjectRoot(opts.project);
12
+ const state = readReleaseState(projectRoot);
13
+ const result = transitionRelease(state, 'promoted', opts.note);
14
+ if ('error' in result) {
15
+ printResult(io, fail('release.promote', 'INVALID_TRANSITION', result.error, { projectRoot }, []), opts.json ?? false);
16
+ return;
17
+ }
18
+ writeReleaseState(projectRoot, result.state);
19
+ printResult(io, ok('release.promote', {
20
+ projectRoot,
21
+ currentStage: 'promoted',
22
+ promotedAt: result.state.active?.promotedAt
23
+ }, [], [
24
+ 'Watch window started. Run `peaks release watch` to check progress; `peaks release rollback` for emergency.'
25
+ ]), opts.json ?? false);
26
+ }
27
+ export function registerReleasePromoteCommand(release, io) {
28
+ addJsonOption(release
29
+ .command('promote')
30
+ .description('Promote the canary to 100% (full release). Requires stage=canary-50. ' +
31
+ 'Records the promoted-at timestamp and starts the 24h watch window.')
32
+ .option('--note <text>', 'optional note')
33
+ .option('--project <path>', 'project root (default: cwd)')).action((opts) => runReleasePromote(io, opts));
34
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerReleaseRollbackCommand(release: Command, io: ProgramIO): void;
@@ -0,0 +1,33 @@
1
+ // src/cli/commands/release-rollback-command.ts
2
+ //
3
+ // `peaks release rollback` — emergency rollback of the active release. Split
4
+ // out of `release-commands.ts`; the verb name, its options and the envelope
5
+ // shape are unchanged.
6
+ import { readReleaseState, rollbackRelease, writeReleaseState } from '../../services/release/release-state.js';
7
+ import { fail, ok } from 'peaks-loop-shared/result';
8
+ import { addJsonOption, printResult } from '../cli-helpers.js';
9
+ import { resolveReleaseProjectRoot } from './release-command-shared.js';
10
+ function runReleaseRollback(io, opts) {
11
+ const projectRoot = resolveReleaseProjectRoot(opts.project);
12
+ const state = readReleaseState(projectRoot);
13
+ const result = rollbackRelease(state, opts.note);
14
+ if ('error' in result) {
15
+ printResult(io, fail('release.rollback', 'INVALID_TRANSITION', result.error, { projectRoot }, []), opts.json ?? false);
16
+ return;
17
+ }
18
+ writeReleaseState(projectRoot, result.state);
19
+ printResult(io, ok('release.rollback', {
20
+ projectRoot,
21
+ rolledBack: result.record.version,
22
+ finalStage: result.record.currentStage
23
+ }, [], ['Run `peaks release hotfix <version>` to start a hotfix on the previous release.']), opts.json ?? false);
24
+ }
25
+ export function registerReleaseRollbackCommand(release, io) {
26
+ addJsonOption(release
27
+ .command('rollback')
28
+ .description('Emergency rollback of the active release. Moves the active release to ' +
29
+ 'the history with currentStage=rolled-back. Available from any ' +
30
+ 'pre-done stage.')
31
+ .option('--note <text>', 'optional rollback reason')
32
+ .option('--project <path>', 'project root (default: cwd)')).action((opts) => runReleaseRollback(io, opts));
33
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerReleaseWatchCommand(release: Command, io: ProgramIO): void;