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
@@ -1,311 +1,38 @@
1
- import { readFile } from 'node:fs/promises';
2
- import { loadOpenSpecChange, scanOpenSpec } from '../../services/openspec/openspec-scan-service.js';
3
- import { projectOpenSpecToRdInput } from '../../services/openspec/openspec-bridge-service.js';
4
- import { renderOpenSpecChange } from '../../services/openspec/openspec-render-service.js';
5
- import { validateOpenSpecChange } from '../../services/openspec/openspec-validate-service.js';
6
- import { archiveOpenSpecChange, OpenSpecArchiveError } from '../../services/openspec/openspec-archive-service.js';
7
- import { executeOpenSpecInit } from '../../services/openspec/openspec-init-service.js';
8
- import { proposeFromDoctor } from '../../services/openspec/openspec-propose-from-doctor-service.js';
9
- import { runDoctor } from '../../services/doctor/index.js';
10
- import { fail, ok } from 'peaks-loop-shared/result';
11
- import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
12
- import { normalizePath } from '../../shared/path-utils.js';
13
- function resolveScanOptions(project) {
14
- if (project === undefined) {
15
- return {};
16
- }
17
- return { openspecRoot: `${normalizePath(project).replace(/\/$/, '')}/openspec` };
18
- }
19
- async function loadRenderRequest(requestPath) {
20
- const raw = await readFile(requestPath, 'utf8');
21
- const parsed = JSON.parse(raw);
22
- if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
23
- throw new Error('Render request file must contain a JSON object');
24
- }
25
- return parsed;
26
- }
1
+ // src/cli/commands/openspec-commands.ts
2
+ //
3
+ // The `openspec` parent command and the registration order of its verbs.
4
+ // The verb implementations live beside this file, one module per verb:
5
+ //
6
+ // openspec-command-shared.ts option shapes, flag translation, printers
7
+ // openspec-list-command.ts list
8
+ // openspec-show-command.ts show
9
+ // openspec-to-rd-command.ts to-rd
10
+ // openspec-render-command.ts render
11
+ // openspec-validate-command.ts validate
12
+ // openspec-archive-command.ts archive
13
+ // openspec-init-command.ts init
14
+ // openspec-from-doctor-command.ts from-doctor
15
+ //
16
+ // The order of the calls below IS the order commander registers the
17
+ // subcommands in, so it is part of the CLI's observable surface.
18
+ import { registerOpenSpecListCommand } from './openspec-list-command.js';
19
+ import { registerOpenSpecShowCommand } from './openspec-show-command.js';
20
+ import { registerOpenSpecToRdCommand } from './openspec-to-rd-command.js';
21
+ import { registerOpenSpecRenderCommand } from './openspec-render-command.js';
22
+ import { registerOpenSpecValidateCommand } from './openspec-validate-command.js';
23
+ import { registerOpenSpecArchiveCommand } from './openspec-archive-command.js';
24
+ import { registerOpenSpecInitCommand } from './openspec-init-command.js';
25
+ import { registerOpenSpecFromDoctorCommand } from './openspec-from-doctor-command.js';
27
26
  export function registerOpenSpecCommands(program, io) {
28
27
  const openspec = program
29
28
  .command('openspec')
30
29
  .description('Inspect OpenSpec changes inside the target project');
31
- addJsonOption(openspec
32
- .command('list')
33
- .description('List OpenSpec changes detected under <project>/openspec/changes')
34
- .option('--project <path>', 'project root containing an openspec/ directory')).action(async (options) => {
35
- try {
36
- const report = await scanOpenSpec(resolveScanOptions(options.project));
37
- printResult(io, ok('openspec.list', report), options.json);
38
- }
39
- catch (error) {
40
- printResult(io, fail('openspec.list', 'OPENSPEC_LIST_FAILED', getErrorMessage(error), {}, [
41
- 'Check the project path and openspec/ layout before retrying'
42
- ]), options.json);
43
- process.exitCode = 1;
44
- }
45
- });
46
- addJsonOption(openspec
47
- .command('show')
48
- .description('Show parsed proposal and tasks progress for a single OpenSpec change')
49
- .argument('<changeId>', 'OpenSpec change directory name under openspec/changes')
50
- .option('--project <path>', 'project root containing an openspec/ directory')).action(async (changeId, options) => {
51
- try {
52
- const detail = await loadOpenSpecChange(changeId, resolveScanOptions(options.project));
53
- if (detail === null) {
54
- printResult(io, fail('openspec.show', 'OPENSPEC_CHANGE_NOT_FOUND', `OpenSpec change ${changeId} was not found`, { changeId }, [`Verify openspec/changes/${changeId}/ exists`]), options.json);
55
- process.exitCode = 1;
56
- return;
57
- }
58
- printResult(io, ok('openspec.show', detail), options.json);
59
- }
60
- catch (error) {
61
- printResult(io, fail('openspec.show', 'OPENSPEC_SHOW_FAILED', getErrorMessage(error), { changeId }, [
62
- 'Check the project path and openspec/ layout before retrying'
63
- ]), options.json);
64
- process.exitCode = 1;
65
- }
66
- });
67
- addJsonOption(openspec
68
- .command('to-rd')
69
- .description('Project an OpenSpec change into an RD/SC input shape (acceptance, what-changes, commit boundaries)')
70
- .argument('<changeId>', 'OpenSpec change directory name under openspec/changes')
71
- .option('--project <path>', 'project root containing an openspec/ directory')).action(async (changeId, options) => {
72
- try {
73
- const projection = await projectOpenSpecToRdInput(changeId, resolveScanOptions(options.project));
74
- if (projection === null) {
75
- printResult(io, fail('openspec.to-rd', 'OPENSPEC_CHANGE_NOT_FOUND', `OpenSpec change ${changeId} was not found`, { changeId }, [`Verify openspec/changes/${changeId}/ exists`]), options.json);
76
- process.exitCode = 1;
77
- return;
78
- }
79
- printResult(io, ok('openspec.to-rd', projection), options.json);
80
- }
81
- catch (error) {
82
- printResult(io, fail('openspec.to-rd', 'OPENSPEC_TO_RD_FAILED', getErrorMessage(error), { changeId }, [
83
- 'Check the project path and openspec/ layout before retrying'
84
- ]), options.json);
85
- process.exitCode = 1;
86
- }
87
- });
88
- addJsonOption(openspec
89
- .command('render')
90
- .description('Render an OpenSpec change pack from a JSON request file (dry-run by default)')
91
- .requiredOption('--request <path>', 'path to a JSON file describing the render request')
92
- .option('--project <path>', 'project root containing an openspec/ directory')
93
- .option('--apply', 'write the rendered files into openspec/changes/<id>/')
94
- .option('--overwrite', 'overwrite an existing change directory when --apply is set')).action(async (options) => {
95
- try {
96
- const request = await loadRenderRequest(options.request);
97
- const scan = resolveScanOptions(options.project);
98
- const renderOptions = {};
99
- if (scan.openspecRoot !== undefined) {
100
- renderOptions.openspecRoot = scan.openspecRoot;
101
- }
102
- if (options.apply === true) {
103
- renderOptions.apply = true;
104
- }
105
- if (options.overwrite === true) {
106
- renderOptions.overwrite = true;
107
- }
108
- const result = await renderOpenSpecChange(request, renderOptions);
109
- printResult(io, ok('openspec.render', result), options.json);
110
- }
111
- catch (error) {
112
- printResult(io, fail('openspec.render', 'OPENSPEC_RENDER_FAILED', getErrorMessage(error), { requestPath: options.request }, ['Check the request JSON shape and the openspec root before retrying']), options.json);
113
- process.exitCode = 1;
114
- }
115
- });
116
- addJsonOption(openspec
117
- .command('validate')
118
- .description('Validate an OpenSpec change against internal lint rules (and optionally the external openspec CLI)')
119
- .argument('<changeId>', 'OpenSpec change directory name under openspec/changes')
120
- .option('--project <path>', 'project root containing an openspec/ directory')
121
- .option('--prefer-external', 'use the external openspec CLI when available, fall back to internal lint')).action(async (changeId, options) => {
122
- try {
123
- const scan = resolveScanOptions(options.project);
124
- const validateOptions = {};
125
- if (scan.openspecRoot !== undefined) {
126
- validateOptions.openspecRoot = scan.openspecRoot;
127
- }
128
- if (options.preferExternal === true) {
129
- validateOptions.preferExternal = true;
130
- }
131
- const result = await validateOpenSpecChange(changeId, validateOptions);
132
- if (result === null) {
133
- printResult(io, fail('openspec.validate', 'OPENSPEC_CHANGE_NOT_FOUND', `OpenSpec change ${changeId} was not found`, { changeId }, [`Verify openspec/changes/${changeId}/ exists`]), options.json);
134
- process.exitCode = 1;
135
- return;
136
- }
137
- if (!result.valid) {
138
- printResult(io, fail('openspec.validate', 'OPENSPEC_VALIDATE_INVALID', `OpenSpec change ${changeId} failed validation`, result, result.issues.map((issue) => `${issue.level}: ${issue.rule}: ${issue.message}`)), options.json);
139
- process.exitCode = 1;
140
- return;
141
- }
142
- printResult(io, ok('openspec.validate', result, result.issues
143
- .filter((issue) => issue.level === 'warning')
144
- .map((issue) => `${issue.rule}: ${issue.message}`)), options.json);
145
- }
146
- catch (error) {
147
- printResult(io, fail('openspec.validate', 'OPENSPEC_VALIDATE_FAILED', getErrorMessage(error), { changeId }, ['Check the project path and openspec/ layout before retrying']), options.json);
148
- process.exitCode = 1;
149
- }
150
- });
151
- addJsonOption(openspec
152
- .command('archive')
153
- .description('Move an OpenSpec change under openspec/changes/<archiveDir>/<id>/ (dry-run by default)')
154
- .argument('<changeId>', 'OpenSpec change directory name under openspec/changes')
155
- .option('--project <path>', 'project root containing an openspec/ directory')
156
- .option('--apply', 'actually move the change directory')
157
- .option('--force', 'bypass the Pre-cond 2 Coverage Evidence gate (use only after confirming the gap is acceptable for this archive)')
158
- .option('--coverage-summary <path>', 'override coverage-summary.json discovery (Fix-6B). Default: <projectRoot>/coverage/coverage-summary.json, then <projectRoot>/openspec/coverage-summary.json')
159
- .option('--archive-dir <name>', 'archive subdirectory name (default: archive)')).action(async (changeId, options) => {
160
- try {
161
- const scan = resolveScanOptions(options.project);
162
- const archiveOptions = {};
163
- if (scan.openspecRoot !== undefined) {
164
- archiveOptions.openspecRoot = scan.openspecRoot;
165
- }
166
- if (options.apply === true) {
167
- archiveOptions.apply = true;
168
- }
169
- if (options.force === true) {
170
- archiveOptions.force = true;
171
- }
172
- if (options.coverageSummary !== undefined) {
173
- archiveOptions.coverageSummaryPath = options.coverageSummary;
174
- }
175
- if (options.archiveDir !== undefined) {
176
- archiveOptions.archiveDirName = options.archiveDir;
177
- }
178
- const result = await archiveOpenSpecChange(changeId, archiveOptions);
179
- if (result === null) {
180
- printResult(io, fail('openspec.archive', 'OPENSPEC_CHANGE_NOT_FOUND', `OpenSpec change ${changeId} was not found`, { changeId }, [`Verify openspec/changes/${changeId}/ exists`]), options.json);
181
- process.exitCode = 1;
182
- return;
183
- }
184
- const warnings = [];
185
- if (result.coverageGateBypassed === true) {
186
- warnings.push('Coverage gate bypassed via --force; archived with at least one uncovered requirement.');
187
- }
188
- if (result.coverageMismatchBypassed === true) {
189
- warnings.push('Coverage summary mismatch bypassed via --force; archived with at least one capability below 100%.');
190
- }
191
- printResult(io, ok('openspec.archive', result, warnings, result.applied ? [] : [`Re-run with --apply to move ${result.from} → ${result.to}`]), options.json);
192
- }
193
- catch (error) {
194
- if (error instanceof OpenSpecArchiveError) {
195
- printResult(io, fail('openspec.archive', error.code, getErrorMessage(error), error.detail, nextActionsForArchiveError(error.code)), options.json);
196
- process.exitCode = 1;
197
- return;
198
- }
199
- printResult(io, fail('openspec.archive', 'OPENSPEC_ARCHIVE_FAILED', getErrorMessage(error), { changeId }, [
200
- 'Check the project path and openspec/ layout before retrying'
201
- ]), options.json);
202
- process.exitCode = 1;
203
- }
204
- });
205
- addJsonOption(openspec
206
- .command('init')
207
- .description('Scaffold the openspec/ directory in the target project (changes/, archive/, README.md, CHANGES.md). Idempotent — refuses to overwrite an existing openspec/')
208
- .requiredOption('--project <path>', 'target project root')
209
- .option('--apply', 'write files to disk (default: dry-run preview)', false)).action(async (options) => {
210
- try {
211
- const result = await executeOpenSpecInit({
212
- projectRoot: options.project,
213
- apply: options.apply === true
214
- });
215
- const nextActions = [];
216
- if (result.alreadyInitialized) {
217
- nextActions.push('openspec/ already exists; no files were created or modified.');
218
- if (result.existingFiles.length > 0) {
219
- nextActions.push(`Existing files preserved: ${result.existingFiles.join(', ')}`);
220
- }
221
- }
222
- else if (!result.apply) {
223
- nextActions.push('Re-run with --apply to write the planned files to disk.');
224
- }
225
- else {
226
- nextActions.push('Run `peaks openspec render --request <path> --apply` to scaffold a first change proposal.');
227
- }
228
- printResult(io, ok('openspec.init', result, [], nextActions), options.json);
229
- }
230
- catch (error) {
231
- printResult(io, fail('openspec.init', 'OPENSPEC_INIT_FAILED', getErrorMessage(error), { projectRoot: options.project }, ['Verify the project path exists and is writable']), options.json);
232
- process.exitCode = 1;
233
- }
234
- });
235
- addJsonOption(openspec
236
- .command('from-doctor')
237
- .description('Slice L3.3: generate an OpenSpec change draft (proposal.md) from a peaks doctor finding')
238
- .requiredOption('--project <path>', 'target project root')
239
- .requiredOption('--check-id <id>', 'the doctor check id to draft from (e.g. L3:l3-memory-health)')).action(async (options) => {
240
- try {
241
- const report = await runDoctor();
242
- const finding = report.checks.find((c) => c.id === options.checkId);
243
- if (finding === undefined) {
244
- printResult(io, fail('openspec.from-doctor', 'CHECK_NOT_FOUND', `No doctor check with id "${options.checkId}"`, { availableIds: report.checks.map((c) => c.id) }, ['Run peaks doctor --json to list available check ids']), options.json);
245
- process.exitCode = 1;
246
- return;
247
- }
248
- if (finding.ok) {
249
- printResult(io, fail('openspec.from-doctor', 'CHECK_ALREADY_PASSING', `Doctor check "${options.checkId}" is already passing; nothing to draft`, { checkId: options.checkId }, ['Pick a failing check from peaks doctor --json']), options.json);
250
- process.exitCode = 1;
251
- return;
252
- }
253
- const doctorFinding = {
254
- id: finding.id,
255
- rule: finding.rule ?? finding.id,
256
- detail: finding.message,
257
- severity: 'fail'
258
- };
259
- const result = proposeFromDoctor({ projectRoot: options.project, finding: doctorFinding });
260
- printResult(io, ok('openspec.from-doctor', result, [], [
261
- `draft proposal written to ${result.proposalPath}`,
262
- 'Review + edit the draft, then run `peaks openspec validate <id>`'
263
- ]), options.json);
264
- }
265
- catch (error) {
266
- printResult(io, fail('openspec.from-doctor', 'OPENSPEC_FROM_DOCTOR_FAILED', getErrorMessage(error), { projectRoot: options.project, checkId: options.checkId }, ['Verify the project path and the check id']), options.json);
267
- process.exitCode = 1;
268
- }
269
- });
270
- }
271
- /**
272
- * Per-error-code remediation hints for the archive gate.
273
- * Centralized here so the catch block stays readable and the next-actions
274
- * can be reviewed in isolation.
275
- */
276
- function nextActionsForArchiveError(code) {
277
- switch (code) {
278
- case 'OPENSPEC_COVERAGE_GATE_PARTIAL':
279
- return [
280
- 'Update the Coverage Evidence table to mark each failing requirement as covered',
281
- 'Or re-run with --force to bypass the gate after confirming the gap is acceptable'
282
- ];
283
- case 'OPENSPEC_COVERAGE_GATE_FAILED':
284
- return [
285
- 'Add the missing Coverage Evidence or Capability Mapping block to proposal.md (see error.message)',
286
- 'Or re-run with --force to bypass the gate after confirming the gap is acceptable'
287
- ];
288
- case 'OPENSPEC_COVERAGE_EVIDENCE_MALFORMED':
289
- return [
290
- 'Fix the proposal.md Coverage Evidence table — the heading exists but no parsable rows were found',
291
- 'Expected shape: | capability | requirement | status | testAnchor | with status in {covered, partial, uncovered}'
292
- ];
293
- case 'OPENSPEC_COVERAGE_EVIDENCE_MISSING':
294
- return [
295
- 'Run `pnpm test:coverage` (which invokes scripts/coverage-c8.mjs) to generate coverage-summary.json',
296
- 'Or pass --coverage-summary <path> to point at an existing summary',
297
- 'Or re-run with --force to bypass the gate'
298
- ];
299
- case 'OPENSPEC_COVERAGE_EVIDENCE_STALE':
300
- return [
301
- 'Re-run `pnpm test:coverage` to refresh coverage-summary.json',
302
- 'Or re-run with --force to bypass the gate after confirming the source delta is acceptable'
303
- ];
304
- case 'OPENSPEC_COVERAGE_EVIDENCE_MISMATCH':
305
- return [
306
- 'Inspect error.detail.mismatches[] — each entry lists the failing capability, file, and actual pct',
307
- 'Close the coverage gap (add tests or update the Capability Mapping block in proposal.md)',
308
- 'Or re-run with --force to bypass the gate after confirming the gap is acceptable'
309
- ];
310
- }
30
+ registerOpenSpecListCommand(openspec, io);
31
+ registerOpenSpecShowCommand(openspec, io);
32
+ registerOpenSpecToRdCommand(openspec, io);
33
+ registerOpenSpecRenderCommand(openspec, io);
34
+ registerOpenSpecValidateCommand(openspec, io);
35
+ registerOpenSpecArchiveCommand(openspec, io);
36
+ registerOpenSpecInitCommand(openspec, io);
37
+ registerOpenSpecFromDoctorCommand(openspec, io);
311
38
  }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerOpenSpecFromDoctorCommand(openspec: Command, io: ProgramIO): void;
@@ -0,0 +1,66 @@
1
+ // src/cli/commands/openspec-from-doctor-command.ts
2
+ //
3
+ // `peaks openspec from-doctor` — draft a change proposal from a failing
4
+ // `peaks doctor` check. Extracted from `openspec-commands.ts`; the registered
5
+ // name, description, options and envelopes are unchanged.
6
+ import { proposeFromDoctor } from '../../services/openspec/openspec-propose-from-doctor-service.js';
7
+ import { runDoctor } from '../../services/doctor/index.js';
8
+ import { fail, ok } from 'peaks-loop-shared/result';
9
+ import { addJsonOption, printResult } from '../cli-helpers.js';
10
+ import { failOpenSpec } from './openspec-command-shared.js';
11
+ /**
12
+ * Resolve `--check-id` against the live doctor report. A missing id or an
13
+ * already-passing check both print their own envelope and return null; the
14
+ * caller stops without writing a draft.
15
+ */
16
+ function draftFromDoctor(io, report, options) {
17
+ const finding = report.checks.find((c) => c.id === options.checkId);
18
+ if (finding === undefined) {
19
+ printResult(io, fail('openspec.from-doctor', 'CHECK_NOT_FOUND', `No doctor check with id "${options.checkId}"`, { availableIds: report.checks.map((c) => c.id) }, ['Run peaks doctor --json to list available check ids']), options.json);
20
+ process.exitCode = 1;
21
+ return null;
22
+ }
23
+ if (finding.ok) {
24
+ printResult(io, fail('openspec.from-doctor', 'CHECK_ALREADY_PASSING', `Doctor check "${options.checkId}" is already passing; nothing to draft`, { checkId: options.checkId }, ['Pick a failing check from peaks doctor --json']), options.json);
25
+ process.exitCode = 1;
26
+ return null;
27
+ }
28
+ return {
29
+ id: finding.id,
30
+ rule: finding.rule ?? finding.id,
31
+ detail: finding.message,
32
+ severity: 'fail'
33
+ };
34
+ }
35
+ export function registerOpenSpecFromDoctorCommand(openspec, io) {
36
+ // Slice L3.3: from-doctor — auto-generate an OpenSpec change record
37
+ // (proposal.md) from a doctor finding. The LLM then reviews + edits
38
+ // the draft before peaks openspec validate will accept it.
39
+ addJsonOption(openspec
40
+ .command('from-doctor')
41
+ .description('Slice L3.3: generate an OpenSpec change draft (proposal.md) from a peaks doctor finding')
42
+ .requiredOption('--project <path>', 'target project root')
43
+ .requiredOption('--check-id <id>', 'the doctor check id to draft from (e.g. L3:l3-memory-health)')).action(async (options) => {
44
+ try {
45
+ const report = await runDoctor();
46
+ const finding = draftFromDoctor(io, report, options);
47
+ if (finding === null) {
48
+ return;
49
+ }
50
+ const result = proposeFromDoctor({ projectRoot: options.project, finding });
51
+ printResult(io, ok('openspec.from-doctor', result, [], [
52
+ `draft proposal written to ${result.proposalPath}`,
53
+ 'Review + edit the draft, then run `peaks openspec validate <id>`'
54
+ ]), options.json);
55
+ }
56
+ catch (error) {
57
+ failOpenSpec(io, 'openspec.from-doctor', {
58
+ code: 'OPENSPEC_FROM_DOCTOR_FAILED',
59
+ error,
60
+ data: { projectRoot: options.project, checkId: options.checkId },
61
+ nextActions: ['Verify the project path and the check id'],
62
+ json: options.json
63
+ });
64
+ }
65
+ });
66
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerOpenSpecInitCommand(openspec: Command, io: ProgramIO): void;
@@ -0,0 +1,49 @@
1
+ // src/cli/commands/openspec-init-command.ts
2
+ //
3
+ // `peaks openspec init --project <root>`. Extracted from
4
+ // `openspec-commands.ts`; the registered name, description, options and
5
+ // envelopes are unchanged.
6
+ import { executeOpenSpecInit } from '../../services/openspec/openspec-init-service.js';
7
+ import { ok } from 'peaks-loop-shared/result';
8
+ import { addJsonOption, printResult } from '../cli-helpers.js';
9
+ import { failOpenSpec } from './openspec-command-shared.js';
10
+ /** The `openspec.init` follow-up lines; one branch per scaffold outcome. */
11
+ function initNextActions(result) {
12
+ if (result.alreadyInitialized) {
13
+ const nextActions = ['openspec/ already exists; no files were created or modified.'];
14
+ if (result.existingFiles.length > 0) {
15
+ nextActions.push(`Existing files preserved: ${result.existingFiles.join(', ')}`);
16
+ }
17
+ return nextActions;
18
+ }
19
+ if (!result.apply) {
20
+ return ['Re-run with --apply to write the planned files to disk.'];
21
+ }
22
+ return [
23
+ 'Run `peaks openspec render --request <path> --apply` to scaffold a first change proposal.'
24
+ ];
25
+ }
26
+ export function registerOpenSpecInitCommand(openspec, io) {
27
+ addJsonOption(openspec
28
+ .command('init')
29
+ .description('Scaffold the openspec/ directory in the target project (changes/, archive/, README.md, CHANGES.md). Idempotent — refuses to overwrite an existing openspec/')
30
+ .requiredOption('--project <path>', 'target project root')
31
+ .option('--apply', 'write files to disk (default: dry-run preview)', false)).action(async (options) => {
32
+ try {
33
+ const result = await executeOpenSpecInit({
34
+ projectRoot: options.project,
35
+ apply: options.apply === true
36
+ });
37
+ printResult(io, ok('openspec.init', result, [], initNextActions(result)), options.json);
38
+ }
39
+ catch (error) {
40
+ failOpenSpec(io, 'openspec.init', {
41
+ code: 'OPENSPEC_INIT_FAILED',
42
+ error,
43
+ data: { projectRoot: options.project },
44
+ nextActions: ['Verify the project path exists and is writable'],
45
+ json: options.json
46
+ });
47
+ }
48
+ });
49
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerOpenSpecListCommand(openspec: Command, io: ProgramIO): void;
@@ -0,0 +1,27 @@
1
+ // src/cli/commands/openspec-list-command.ts
2
+ //
3
+ // `peaks openspec list`. Extracted from `openspec-commands.ts`; the registered
4
+ // name, description, options and envelopes are unchanged.
5
+ import { scanOpenSpec } from '../../services/openspec/openspec-scan-service.js';
6
+ import { ok } from 'peaks-loop-shared/result';
7
+ import { addJsonOption, printResult } from '../cli-helpers.js';
8
+ import { failOpenSpec, OPENSPEC_PATH_HINT, resolveScanOptions } from './openspec-command-shared.js';
9
+ export function registerOpenSpecListCommand(openspec, io) {
10
+ addJsonOption(openspec
11
+ .command('list')
12
+ .description('List OpenSpec changes detected under <project>/openspec/changes')
13
+ .option('--project <path>', 'project root containing an openspec/ directory')).action(async (options) => {
14
+ try {
15
+ const report = await scanOpenSpec(resolveScanOptions(options.project));
16
+ printResult(io, ok('openspec.list', report), options.json);
17
+ }
18
+ catch (error) {
19
+ failOpenSpec(io, 'openspec.list', {
20
+ code: 'OPENSPEC_LIST_FAILED',
21
+ error,
22
+ nextActions: OPENSPEC_PATH_HINT,
23
+ json: options.json
24
+ });
25
+ }
26
+ });
27
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerOpenSpecRenderCommand(openspec: Command, io: ProgramIO): void;
@@ -0,0 +1,33 @@
1
+ // src/cli/commands/openspec-render-command.ts
2
+ //
3
+ // `peaks openspec render --request <path>`. Extracted from
4
+ // `openspec-commands.ts`; the registered name, description, options and
5
+ // envelopes are unchanged.
6
+ import { renderOpenSpecChange } from '../../services/openspec/openspec-render-service.js';
7
+ import { ok } from 'peaks-loop-shared/result';
8
+ import { addJsonOption, printResult } from '../cli-helpers.js';
9
+ import { failOpenSpec, loadRenderRequest, toRenderOptions } from './openspec-command-shared.js';
10
+ export function registerOpenSpecRenderCommand(openspec, io) {
11
+ addJsonOption(openspec
12
+ .command('render')
13
+ .description('Render an OpenSpec change pack from a JSON request file (dry-run by default)')
14
+ .requiredOption('--request <path>', 'path to a JSON file describing the render request')
15
+ .option('--project <path>', 'project root containing an openspec/ directory')
16
+ .option('--apply', 'write the rendered files into openspec/changes/<id>/')
17
+ .option('--overwrite', 'overwrite an existing change directory when --apply is set')).action(async (options) => {
18
+ try {
19
+ const request = await loadRenderRequest(options.request);
20
+ const result = await renderOpenSpecChange(request, toRenderOptions(options.project, options));
21
+ printResult(io, ok('openspec.render', result), options.json);
22
+ }
23
+ catch (error) {
24
+ failOpenSpec(io, 'openspec.render', {
25
+ code: 'OPENSPEC_RENDER_FAILED',
26
+ error,
27
+ data: { requestPath: options.request },
28
+ nextActions: ['Check the request JSON shape and the openspec root before retrying'],
29
+ json: options.json
30
+ });
31
+ }
32
+ });
33
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerOpenSpecShowCommand(openspec: Command, io: ProgramIO): void;
@@ -0,0 +1,33 @@
1
+ // src/cli/commands/openspec-show-command.ts
2
+ //
3
+ // `peaks openspec show <changeId>`. Extracted from `openspec-commands.ts`; the
4
+ // registered name, description, options and envelopes are unchanged.
5
+ import { loadOpenSpecChange } from '../../services/openspec/openspec-scan-service.js';
6
+ import { ok } from 'peaks-loop-shared/result';
7
+ import { addJsonOption, printResult } from '../cli-helpers.js';
8
+ import { failOpenSpec, OPENSPEC_PATH_HINT, printChangeNotFound, resolveScanOptions } from './openspec-command-shared.js';
9
+ export function registerOpenSpecShowCommand(openspec, io) {
10
+ addJsonOption(openspec
11
+ .command('show')
12
+ .description('Show parsed proposal and tasks progress for a single OpenSpec change')
13
+ .argument('<changeId>', 'OpenSpec change directory name under openspec/changes')
14
+ .option('--project <path>', 'project root containing an openspec/ directory')).action(async (changeId, options) => {
15
+ try {
16
+ const detail = await loadOpenSpecChange(changeId, resolveScanOptions(options.project));
17
+ if (detail === null) {
18
+ printChangeNotFound(io, 'openspec.show', changeId, options.json);
19
+ return;
20
+ }
21
+ printResult(io, ok('openspec.show', detail), options.json);
22
+ }
23
+ catch (error) {
24
+ failOpenSpec(io, 'openspec.show', {
25
+ code: 'OPENSPEC_SHOW_FAILED',
26
+ error,
27
+ data: { changeId },
28
+ nextActions: OPENSPEC_PATH_HINT,
29
+ json: options.json
30
+ });
31
+ }
32
+ });
33
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerOpenSpecToRdCommand(openspec: Command, io: ProgramIO): void;
@@ -0,0 +1,33 @@
1
+ // src/cli/commands/openspec-to-rd-command.ts
2
+ //
3
+ // `peaks openspec to-rd <changeId>`. Extracted from `openspec-commands.ts`; the
4
+ // registered name, description, options and envelopes are unchanged.
5
+ import { projectOpenSpecToRdInput } from '../../services/openspec/openspec-bridge-service.js';
6
+ import { ok } from 'peaks-loop-shared/result';
7
+ import { addJsonOption, printResult } from '../cli-helpers.js';
8
+ import { failOpenSpec, OPENSPEC_PATH_HINT, printChangeNotFound, resolveScanOptions } from './openspec-command-shared.js';
9
+ export function registerOpenSpecToRdCommand(openspec, io) {
10
+ addJsonOption(openspec
11
+ .command('to-rd')
12
+ .description('Project an OpenSpec change into an RD/SC input shape (acceptance, what-changes, commit boundaries)')
13
+ .argument('<changeId>', 'OpenSpec change directory name under openspec/changes')
14
+ .option('--project <path>', 'project root containing an openspec/ directory')).action(async (changeId, options) => {
15
+ try {
16
+ const projection = await projectOpenSpecToRdInput(changeId, resolveScanOptions(options.project));
17
+ if (projection === null) {
18
+ printChangeNotFound(io, 'openspec.to-rd', changeId, options.json);
19
+ return;
20
+ }
21
+ printResult(io, ok('openspec.to-rd', projection), options.json);
22
+ }
23
+ catch (error) {
24
+ failOpenSpec(io, 'openspec.to-rd', {
25
+ code: 'OPENSPEC_TO_RD_FAILED',
26
+ error,
27
+ data: { changeId },
28
+ nextActions: OPENSPEC_PATH_HINT,
29
+ json: options.json
30
+ });
31
+ }
32
+ });
33
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerOpenSpecValidateCommand(openspec: Command, io: ProgramIO): void;