peaks-loop 4.1.2 → 4.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (717) hide show
  1. package/.claude-plugin/marketplace.json +136 -47
  2. package/CHANGELOG.md +112 -0
  3. package/README-en.md +1 -1
  4. package/README.md +1 -1
  5. package/contracts/readonly-argv-whitelist.json +211 -0
  6. package/dist/cli/commands/asset-command-shared.d.ts +12 -0
  7. package/dist/cli/commands/asset-command-shared.js +45 -0
  8. package/dist/cli/commands/asset-commands.d.ts +6 -1
  9. package/dist/cli/commands/asset-commands.js +11 -372
  10. package/dist/cli/commands/asset-crystallize-command.d.ts +3 -0
  11. package/dist/cli/commands/asset-crystallize-command.js +60 -0
  12. package/dist/cli/commands/asset-crystallize-payload.d.ts +47 -0
  13. package/dist/cli/commands/asset-crystallize-payload.js +85 -0
  14. package/dist/cli/commands/asset-crystallize-runner.d.ts +3 -0
  15. package/dist/cli/commands/asset-crystallize-runner.js +133 -0
  16. package/dist/cli/commands/asset-dispose-command.d.ts +3 -0
  17. package/dist/cli/commands/asset-dispose-command.js +99 -0
  18. package/dist/cli/commands/asset-status-command.d.ts +3 -0
  19. package/dist/cli/commands/asset-status-command.js +100 -0
  20. package/dist/cli/commands/audit-artifact-runners.d.ts +16 -0
  21. package/dist/cli/commands/audit-artifact-runners.js +170 -0
  22. package/dist/cli/commands/audit-command-shared.d.ts +97 -0
  23. package/dist/cli/commands/audit-command-shared.js +60 -0
  24. package/dist/cli/commands/audit-commands.d.ts +7 -31
  25. package/dist/cli/commands/audit-commands.js +64 -473
  26. package/dist/cli/commands/audit-goal-runners.d.ts +17 -0
  27. package/dist/cli/commands/audit-goal-runners.js +114 -0
  28. package/dist/cli/commands/audit-red-lines-runners.d.ts +11 -0
  29. package/dist/cli/commands/audit-red-lines-runners.js +43 -0
  30. package/dist/cli/commands/audit-refusal-data.d.ts +23 -0
  31. package/dist/cli/commands/audit-refusal-data.js +69 -0
  32. package/dist/cli/commands/audit-static-runners.d.ts +13 -0
  33. package/dist/cli/commands/audit-static-runners.js +139 -0
  34. package/dist/cli/commands/await-runners.d.ts +11 -0
  35. package/dist/cli/commands/await-runners.js +148 -0
  36. package/dist/cli/commands/baseline-audit-command.d.ts +3 -0
  37. package/dist/cli/commands/baseline-audit-command.js +64 -0
  38. package/dist/cli/commands/baseline-command-shared.d.ts +23 -0
  39. package/dist/cli/commands/baseline-command-shared.js +39 -0
  40. package/dist/cli/commands/baseline-commands.js +33 -313
  41. package/dist/cli/commands/baseline-freeze-commands.d.ts +4 -0
  42. package/dist/cli/commands/baseline-freeze-commands.js +81 -0
  43. package/dist/cli/commands/baseline-guard-command.d.ts +3 -0
  44. package/dist/cli/commands/baseline-guard-command.js +52 -0
  45. package/dist/cli/commands/baseline-read-commands.d.ts +5 -0
  46. package/dist/cli/commands/baseline-read-commands.js +72 -0
  47. package/dist/cli/commands/baseline-rollback-commands.d.ts +4 -0
  48. package/dist/cli/commands/baseline-rollback-commands.js +88 -0
  49. package/dist/cli/commands/classify-downgrade-command.d.ts +9 -0
  50. package/dist/cli/commands/classify-downgrade-command.js +21 -0
  51. package/dist/cli/commands/classify-run-command.d.ts +9 -0
  52. package/dist/cli/commands/classify-run-command.js +73 -0
  53. package/dist/cli/commands/classify-signals.d.ts +5 -0
  54. package/dist/cli/commands/classify-signals.js +104 -0
  55. package/dist/cli/commands/code-auto-compact-command.d.ts +3 -0
  56. package/dist/cli/commands/code-auto-compact-command.js +124 -0
  57. package/dist/cli/commands/code-auto-compact-envelope.d.ts +22 -0
  58. package/dist/cli/commands/code-auto-compact-envelope.js +39 -0
  59. package/dist/cli/commands/code-context-audit-command.d.ts +3 -0
  60. package/dist/cli/commands/code-context-audit-command.js +68 -0
  61. package/dist/cli/commands/code-context-now-command.d.ts +3 -0
  62. package/dist/cli/commands/code-context-now-command.js +124 -0
  63. package/dist/cli/commands/code-context-now-envelope.d.ts +66 -0
  64. package/dist/cli/commands/code-context-now-envelope.js +136 -0
  65. package/dist/cli/commands/code-context-now-mapping.d.ts +27 -0
  66. package/dist/cli/commands/code-context-now-mapping.js +43 -0
  67. package/dist/cli/commands/code-emit-handoff-command.d.ts +3 -0
  68. package/dist/cli/commands/code-emit-handoff-command.js +136 -0
  69. package/dist/cli/commands/code-gate-step-08-command.d.ts +3 -0
  70. package/dist/cli/commands/code-gate-step-08-command.js +155 -0
  71. package/dist/cli/commands/code-post-compact-detect-command.d.ts +3 -0
  72. package/dist/cli/commands/code-post-compact-detect-command.js +50 -0
  73. package/dist/cli/commands/code-runtime-commands.d.ts +9 -43
  74. package/dist/cli/commands/code-runtime-commands.js +20 -672
  75. package/dist/cli/commands/code-runtime-session.d.ts +1 -0
  76. package/dist/cli/commands/code-runtime-session.js +15 -0
  77. package/dist/cli/commands/codegraph-command-options.d.ts +22 -0
  78. package/dist/cli/commands/codegraph-command-options.js +22 -0
  79. package/dist/cli/commands/codegraph-commands.d.ts +2 -2
  80. package/dist/cli/commands/codegraph-commands.js +14 -397
  81. package/dist/cli/commands/codegraph-config-restore-command.d.ts +3 -0
  82. package/dist/cli/commands/codegraph-config-restore-command.js +200 -0
  83. package/dist/cli/commands/codegraph-proxy-commands.d.ts +10 -0
  84. package/dist/cli/commands/codegraph-proxy-commands.js +159 -0
  85. package/dist/cli/commands/codegraph-repair-commands.d.ts +3 -0
  86. package/dist/cli/commands/codegraph-repair-commands.js +94 -0
  87. package/dist/cli/commands/codegraph-status-command.d.ts +1 -1
  88. package/dist/cli/commands/codegraph-status-command.js +27 -214
  89. package/dist/cli/commands/codegraph-status-integrity.d.ts +44 -0
  90. package/dist/cli/commands/codegraph-status-integrity.js +121 -0
  91. package/dist/cli/commands/codegraph-status-json.d.ts +5 -0
  92. package/dist/cli/commands/codegraph-status-json.js +127 -0
  93. package/dist/cli/commands/compact-command.d.ts +6 -2
  94. package/dist/cli/commands/compact-command.js +12 -559
  95. package/dist/cli/commands/compact-dry-run-command.d.ts +3 -0
  96. package/dist/cli/commands/compact-dry-run-command.js +87 -0
  97. package/dist/cli/commands/compact-force-command.d.ts +3 -0
  98. package/dist/cli/commands/compact-force-command.js +98 -0
  99. package/dist/cli/commands/compact-harness-window-command.d.ts +3 -0
  100. package/dist/cli/commands/compact-harness-window-command.js +174 -0
  101. package/dist/cli/commands/compact-history-command.d.ts +3 -0
  102. package/dist/cli/commands/compact-history-command.js +89 -0
  103. package/dist/cli/commands/compact-read-commands.d.ts +3 -0
  104. package/dist/cli/commands/compact-read-commands.js +123 -0
  105. package/dist/cli/commands/compact-settle-command.d.ts +3 -0
  106. package/dist/cli/commands/compact-settle-command.js +130 -0
  107. package/dist/cli/commands/compact-shared.d.ts +9 -0
  108. package/dist/cli/commands/compact-shared.js +26 -0
  109. package/dist/cli/commands/container-command-shared.d.ts +60 -0
  110. package/dist/cli/commands/container-command-shared.js +52 -0
  111. package/dist/cli/commands/container-commands.d.ts +1 -1
  112. package/dist/cli/commands/container-commands.js +4 -216
  113. package/dist/cli/commands/container-release-command.d.ts +3 -0
  114. package/dist/cli/commands/container-release-command.js +105 -0
  115. package/dist/cli/commands/container-spawn-command.d.ts +3 -0
  116. package/dist/cli/commands/container-spawn-command.js +148 -0
  117. package/dist/cli/commands/context-check-command.d.ts +3 -0
  118. package/dist/cli/commands/context-check-command.js +81 -0
  119. package/dist/cli/commands/context-commands.d.ts +2 -7
  120. package/dist/cli/commands/context-commands.js +6 -276
  121. package/dist/cli/commands/context-layer-command.d.ts +3 -0
  122. package/dist/cli/commands/context-layer-command.js +34 -0
  123. package/dist/cli/commands/context-layer-fetchers.d.ts +15 -0
  124. package/dist/cli/commands/context-layer-fetchers.js +162 -0
  125. package/dist/cli/commands/context-status-command.d.ts +17 -0
  126. package/dist/cli/commands/context-status-command.js +41 -0
  127. package/dist/cli/commands/contract-write-command.d.ts +3 -0
  128. package/dist/cli/commands/contract-write-command.js +144 -0
  129. package/dist/cli/commands/core/doctor-bindings.d.ts +17 -0
  130. package/dist/cli/commands/core/doctor-bindings.js +30 -0
  131. package/dist/cli/commands/core/doctor-command.d.ts +4 -18
  132. package/dist/cli/commands/core/doctor-command.js +2 -323
  133. package/dist/cli/commands/core/doctor-logs.d.ts +8 -0
  134. package/dist/cli/commands/core/doctor-logs.js +32 -0
  135. package/dist/cli/commands/core/doctor-probes.d.ts +3 -0
  136. package/dist/cli/commands/core/doctor-probes.js +55 -0
  137. package/dist/cli/commands/core/doctor-run-command.d.ts +12 -0
  138. package/dist/cli/commands/core/doctor-run-command.js +172 -0
  139. package/dist/cli/commands/core/doctor-summary.d.ts +7 -0
  140. package/dist/cli/commands/core/doctor-summary.js +39 -0
  141. package/dist/cli/commands/core/memory-command-shared.d.ts +25 -0
  142. package/dist/cli/commands/core/memory-command-shared.js +20 -0
  143. package/dist/cli/commands/core/memory-command.d.ts +1 -1
  144. package/dist/cli/commands/core/memory-command.js +6 -227
  145. package/dist/cli/commands/core/memory-delegated-verbs.d.ts +4 -0
  146. package/dist/cli/commands/core/memory-delegated-verbs.js +178 -0
  147. package/dist/cli/commands/core/memory-extract-command.d.ts +3 -0
  148. package/dist/cli/commands/core/memory-extract-command.js +90 -0
  149. package/dist/cli/commands/core/memory-sync-command.d.ts +3 -0
  150. package/dist/cli/commands/core/memory-sync-command.js +38 -0
  151. package/dist/cli/commands/core/session-command.d.ts +1 -1
  152. package/dist/cli/commands/core/session-command.js +12 -206
  153. package/dist/cli/commands/core/session-info-command.d.ts +3 -0
  154. package/dist/cli/commands/core/session-info-command.js +142 -0
  155. package/dist/cli/commands/core/session-verb-commands.d.ts +5 -0
  156. package/dist/cli/commands/core/session-verb-commands.js +58 -0
  157. package/dist/cli/commands/core/skill-command.d.ts +1 -44
  158. package/dist/cli/commands/core/skill-command.js +13 -541
  159. package/dist/cli/commands/core/skill-context-verdict.d.ts +38 -0
  160. package/dist/cli/commands/core/skill-context-verdict.js +63 -0
  161. package/dist/cli/commands/core/skill-generated-config-notice.d.ts +41 -0
  162. package/dist/cli/commands/core/skill-generated-config-notice.js +75 -0
  163. package/dist/cli/commands/core/skill-heartbeat-commands.d.ts +3 -0
  164. package/dist/cli/commands/core/skill-heartbeat-commands.js +50 -0
  165. package/dist/cli/commands/core/skill-presence-commands.d.ts +3 -0
  166. package/dist/cli/commands/core/skill-presence-commands.js +123 -0
  167. package/dist/cli/commands/core/skill-presence-housekeeping-commands.d.ts +3 -0
  168. package/dist/cli/commands/core/skill-presence-housekeeping-commands.js +165 -0
  169. package/dist/cli/commands/core/skill-registry-commands.d.ts +3 -0
  170. package/dist/cli/commands/core/skill-registry-commands.js +117 -0
  171. package/dist/cli/commands/core/skill-runbook-command.d.ts +3 -0
  172. package/dist/cli/commands/core/skill-runbook-command.js +29 -0
  173. package/dist/cli/commands/core/standards-command.d.ts +1 -24
  174. package/dist/cli/commands/core/standards-command.js +33 -201
  175. package/dist/cli/commands/core/standards-init-command.d.ts +3 -0
  176. package/dist/cli/commands/core/standards-init-command.js +87 -0
  177. package/dist/cli/commands/core/standards-lint.d.ts +24 -0
  178. package/dist/cli/commands/core/standards-lint.js +57 -0
  179. package/dist/cli/commands/core/standards-migrate-command.d.ts +3 -0
  180. package/dist/cli/commands/core/standards-migrate-command.js +57 -0
  181. package/dist/cli/commands/cron-scheduler-commands.d.ts +5 -1
  182. package/dist/cli/commands/cron-scheduler-commands.js +36 -206
  183. package/dist/cli/commands/cron-scheduler-run-once-command.d.ts +7 -0
  184. package/dist/cli/commands/cron-scheduler-run-once-command.js +35 -0
  185. package/dist/cli/commands/cron-scheduler-shared.d.ts +6 -0
  186. package/dist/cli/commands/cron-scheduler-shared.js +48 -0
  187. package/dist/cli/commands/cron-scheduler-start-command.d.ts +7 -0
  188. package/dist/cli/commands/cron-scheduler-start-command.js +65 -0
  189. package/dist/cli/commands/cron-scheduler-status-command.d.ts +7 -0
  190. package/dist/cli/commands/cron-scheduler-status-command.js +46 -0
  191. package/dist/cli/commands/cron-scheduler-stop-command.d.ts +7 -0
  192. package/dist/cli/commands/cron-scheduler-stop-command.js +61 -0
  193. package/dist/cli/commands/dispatch-command-spec.d.ts +2 -0
  194. package/dist/cli/commands/dispatch-command-spec.js +62 -0
  195. package/dist/cli/commands/dispatch-commands.js +159 -775
  196. package/dist/cli/commands/dispatch-dag-envelope.d.ts +41 -0
  197. package/dist/cli/commands/dispatch-dag-envelope.js +49 -0
  198. package/dist/cli/commands/dispatch-dag-failure.d.ts +18 -0
  199. package/dist/cli/commands/dispatch-dag-failure.js +16 -0
  200. package/dist/cli/commands/dispatch-dag-preflight.d.ts +51 -0
  201. package/dist/cli/commands/dispatch-dag-preflight.js +105 -0
  202. package/dist/cli/commands/dispatch-dag-runners.d.ts +48 -0
  203. package/dist/cli/commands/dispatch-dag-runners.js +73 -0
  204. package/dist/cli/commands/dispatch-detached-branch.d.ts +3 -0
  205. package/dist/cli/commands/dispatch-detached-branch.js +58 -0
  206. package/dist/cli/commands/dispatch-envelope.d.ts +36 -0
  207. package/dist/cli/commands/dispatch-envelope.js +104 -0
  208. package/dist/cli/commands/dispatch-from-dag.d.ts +27 -0
  209. package/dist/cli/commands/dispatch-from-dag.js +87 -257
  210. package/dist/cli/commands/dispatch-isolation-lease.d.ts +17 -0
  211. package/dist/cli/commands/dispatch-isolation-lease.js +149 -0
  212. package/dist/cli/commands/dispatch-preflight.d.ts +7 -0
  213. package/dist/cli/commands/dispatch-preflight.js +105 -0
  214. package/dist/cli/commands/dispatch-prompt-blocks.d.ts +10 -0
  215. package/dist/cli/commands/dispatch-prompt-blocks.js +56 -0
  216. package/dist/cli/commands/dispatch-prompt-composition.d.ts +30 -0
  217. package/dist/cli/commands/dispatch-prompt-composition.js +171 -0
  218. package/dist/cli/commands/dispatch-record-write.d.ts +24 -0
  219. package/dist/cli/commands/dispatch-record-write.js +96 -0
  220. package/dist/cli/commands/dispatch-tool-call.d.ts +15 -0
  221. package/dist/cli/commands/dispatch-tool-call.js +128 -0
  222. package/dist/cli/commands/evolution-command-shared.d.ts +78 -0
  223. package/dist/cli/commands/evolution-command-shared.js +107 -0
  224. package/dist/cli/commands/evolution-commands.d.ts +11 -1
  225. package/dist/cli/commands/evolution-commands.js +19 -350
  226. package/dist/cli/commands/evolution-evaluate-command.d.ts +24 -0
  227. package/dist/cli/commands/evolution-evaluate-command.js +138 -0
  228. package/dist/cli/commands/evolution-propose-command.d.ts +23 -0
  229. package/dist/cli/commands/evolution-propose-command.js +145 -0
  230. package/dist/cli/commands/evolution-status-command.d.ts +17 -0
  231. package/dist/cli/commands/evolution-status-command.js +41 -0
  232. package/dist/cli/commands/evolution-verdict-commands.d.ts +30 -0
  233. package/dist/cli/commands/evolution-verdict-commands.js +100 -0
  234. package/dist/cli/commands/final-review-command-envelopes.d.ts +44 -0
  235. package/dist/cli/commands/final-review-command-envelopes.js +100 -0
  236. package/dist/cli/commands/final-review-command-shared.d.ts +52 -0
  237. package/dist/cli/commands/final-review-command-shared.js +35 -0
  238. package/dist/cli/commands/final-review-commands.d.ts +7 -27
  239. package/dist/cli/commands/final-review-commands.js +13 -240
  240. package/dist/cli/commands/final-review-prepare-command.d.ts +3 -0
  241. package/dist/cli/commands/final-review-prepare-command.js +200 -0
  242. package/dist/cli/commands/finalize-accumulator.d.ts +44 -0
  243. package/dist/cli/commands/finalize-accumulator.js +55 -0
  244. package/dist/cli/commands/finalize-branches.d.ts +34 -0
  245. package/dist/cli/commands/finalize-branches.js +119 -0
  246. package/dist/cli/commands/finalize-runners.d.ts +3 -0
  247. package/dist/cli/commands/finalize-runners.js +92 -0
  248. package/dist/cli/commands/finalize-selection.d.ts +65 -0
  249. package/dist/cli/commands/finalize-selection.js +35 -0
  250. package/dist/cli/commands/gate-commands.js +26 -8
  251. package/dist/cli/commands/governance-classify-contract-commands.d.ts +23 -9
  252. package/dist/cli/commands/governance-classify-contract-commands.js +26 -269
  253. package/dist/cli/commands/hooks-command-shared.d.ts +42 -0
  254. package/dist/cli/commands/hooks-command-shared.js +32 -0
  255. package/dist/cli/commands/hooks-commands.d.ts +20 -0
  256. package/dist/cli/commands/hooks-commands.js +75 -309
  257. package/dist/cli/commands/hooks-install-envelopes.d.ts +6 -0
  258. package/dist/cli/commands/hooks-install-envelopes.js +144 -0
  259. package/dist/cli/commands/hooks-status-command.d.ts +3 -0
  260. package/dist/cli/commands/hooks-status-command.js +93 -0
  261. package/dist/cli/commands/hooks-uninstall-command.d.ts +3 -0
  262. package/dist/cli/commands/hooks-uninstall-command.js +43 -0
  263. package/dist/cli/commands/job-checkpoint-commands.d.ts +3 -0
  264. package/dist/cli/commands/job-checkpoint-commands.js +157 -0
  265. package/dist/cli/commands/job-command-shared.d.ts +109 -0
  266. package/dist/cli/commands/job-command-shared.js +72 -0
  267. package/dist/cli/commands/job-commands.d.ts +4 -64
  268. package/dist/cli/commands/job-commands.js +42 -552
  269. package/dist/cli/commands/job-cost-check-command.d.ts +3 -0
  270. package/dist/cli/commands/job-cost-check-command.js +41 -0
  271. package/dist/cli/commands/job-init-status-commands.d.ts +3 -0
  272. package/dist/cli/commands/job-init-status-commands.js +149 -0
  273. package/dist/cli/commands/job-run-commands.d.ts +3 -0
  274. package/dist/cli/commands/job-run-commands.js +97 -0
  275. package/dist/cli/commands/job-state-root.d.ts +35 -0
  276. package/dist/cli/commands/job-state-root.js +76 -0
  277. package/dist/cli/commands/loop-command-shared.d.ts +31 -0
  278. package/dist/cli/commands/loop-command-shared.js +15 -0
  279. package/dist/cli/commands/loop-commands.d.ts +12 -17
  280. package/dist/cli/commands/loop-commands.js +56 -238
  281. package/dist/cli/commands/loop-eval-capture-index.d.ts +4 -0
  282. package/dist/cli/commands/loop-eval-capture-index.js +44 -0
  283. package/dist/cli/commands/loop-eval-commands.d.ts +8 -5
  284. package/dist/cli/commands/loop-eval-commands.js +12 -626
  285. package/dist/cli/commands/loop-eval-eval-command.d.ts +3 -0
  286. package/dist/cli/commands/loop-eval-eval-command.js +168 -0
  287. package/dist/cli/commands/loop-eval-monotonic-command.d.ts +3 -0
  288. package/dist/cli/commands/loop-eval-monotonic-command.js +90 -0
  289. package/dist/cli/commands/loop-eval-parents.d.ts +7 -0
  290. package/dist/cli/commands/loop-eval-parents.js +20 -0
  291. package/dist/cli/commands/loop-eval-run-code.d.ts +7 -0
  292. package/dist/cli/commands/loop-eval-run-code.js +40 -0
  293. package/dist/cli/commands/loop-eval-run-command.d.ts +3 -0
  294. package/dist/cli/commands/loop-eval-run-command.js +113 -0
  295. package/dist/cli/commands/loop-eval-spec-commands.d.ts +3 -0
  296. package/dist/cli/commands/loop-eval-spec-commands.js +165 -0
  297. package/dist/cli/commands/loop-eval-spec-lint-command.d.ts +3 -0
  298. package/dist/cli/commands/loop-eval-spec-lint-command.js +42 -0
  299. package/dist/cli/commands/loop-eval-workflow-commands.d.ts +3 -0
  300. package/dist/cli/commands/loop-eval-workflow-commands.js +141 -0
  301. package/dist/cli/commands/loop-export-command.d.ts +3 -0
  302. package/dist/cli/commands/loop-export-command.js +73 -0
  303. package/dist/cli/commands/loop-goal-compose-command.d.ts +3 -0
  304. package/dist/cli/commands/loop-goal-compose-command.js +36 -0
  305. package/dist/cli/commands/loop-import-command.d.ts +3 -0
  306. package/dist/cli/commands/loop-import-command.js +86 -0
  307. package/dist/cli/commands/loop-placeholder-commands.d.ts +3 -0
  308. package/dist/cli/commands/loop-placeholder-commands.js +52 -0
  309. package/dist/cli/commands/mcp-commands.d.ts +10 -0
  310. package/dist/cli/commands/mcp-commands.js +157 -0
  311. package/dist/cli/commands/memory-command-shared.d.ts +59 -0
  312. package/dist/cli/commands/memory-command-shared.js +39 -0
  313. package/dist/cli/commands/memory-commands.d.ts +6 -79
  314. package/dist/cli/commands/memory-commands.js +19 -309
  315. package/dist/cli/commands/memory-ingest-command.d.ts +3 -0
  316. package/dist/cli/commands/memory-ingest-command.js +50 -0
  317. package/dist/cli/commands/memory-list-command.d.ts +16 -0
  318. package/dist/cli/commands/memory-list-command.js +129 -0
  319. package/dist/cli/commands/memory-reindex-command.d.ts +9 -0
  320. package/dist/cli/commands/memory-reindex-command.js +78 -0
  321. package/dist/cli/commands/memory-rotate-command.d.ts +3 -0
  322. package/dist/cli/commands/memory-rotate-command.js +55 -0
  323. package/dist/cli/commands/memory-search-command.d.ts +7 -0
  324. package/dist/cli/commands/memory-search-command.js +46 -0
  325. package/dist/cli/commands/openspec-archive-command.d.ts +3 -0
  326. package/dist/cli/commands/openspec-archive-command.js +55 -0
  327. package/dist/cli/commands/openspec-command-shared.d.ts +62 -0
  328. package/dist/cli/commands/openspec-command-shared.js +135 -0
  329. package/dist/cli/commands/openspec-commands.d.ts +1 -1
  330. package/dist/cli/commands/openspec-commands.js +33 -306
  331. package/dist/cli/commands/openspec-from-doctor-command.d.ts +3 -0
  332. package/dist/cli/commands/openspec-from-doctor-command.js +66 -0
  333. package/dist/cli/commands/openspec-init-command.d.ts +3 -0
  334. package/dist/cli/commands/openspec-init-command.js +49 -0
  335. package/dist/cli/commands/openspec-list-command.d.ts +3 -0
  336. package/dist/cli/commands/openspec-list-command.js +27 -0
  337. package/dist/cli/commands/openspec-render-command.d.ts +3 -0
  338. package/dist/cli/commands/openspec-render-command.js +33 -0
  339. package/dist/cli/commands/openspec-show-command.d.ts +3 -0
  340. package/dist/cli/commands/openspec-show-command.js +33 -0
  341. package/dist/cli/commands/openspec-to-rd-command.d.ts +3 -0
  342. package/dist/cli/commands/openspec-to-rd-command.js +33 -0
  343. package/dist/cli/commands/openspec-validate-command.d.ts +3 -0
  344. package/dist/cli/commands/openspec-validate-command.js +45 -0
  345. package/dist/cli/commands/playwright-browser-command.d.ts +8 -0
  346. package/dist/cli/commands/playwright-browser-command.js +61 -0
  347. package/dist/cli/commands/playwright-commands.d.ts +10 -62
  348. package/dist/cli/commands/playwright-commands.js +77 -400
  349. package/dist/cli/commands/playwright-envelope.d.ts +8 -0
  350. package/dist/cli/commands/playwright-envelope.js +29 -0
  351. package/dist/cli/commands/playwright-ls-stop-commands.d.ts +4 -0
  352. package/dist/cli/commands/playwright-ls-stop-commands.js +74 -0
  353. package/dist/cli/commands/playwright-session-store.d.ts +65 -0
  354. package/dist/cli/commands/playwright-session-store.js +189 -0
  355. package/dist/cli/commands/project-commands.d.ts +19 -0
  356. package/dist/cli/commands/project-commands.js +98 -259
  357. package/dist/cli/commands/project-context-command.d.ts +3 -0
  358. package/dist/cli/commands/project-context-command.js +44 -0
  359. package/dist/cli/commands/project-dashboard-command.d.ts +3 -0
  360. package/dist/cli/commands/project-dashboard-command.js +74 -0
  361. package/dist/cli/commands/project-knowledge-command.d.ts +3 -0
  362. package/dist/cli/commands/project-knowledge-command.js +48 -0
  363. package/dist/cli/commands/project-memories-show-command.d.ts +3 -0
  364. package/dist/cli/commands/project-memories-show-command.js +87 -0
  365. package/dist/cli/commands/project-memory-index-command.d.ts +3 -0
  366. package/dist/cli/commands/project-memory-index-command.js +31 -0
  367. package/dist/cli/commands/qa-archive-screenshots-command.d.ts +3 -0
  368. package/dist/cli/commands/qa-archive-screenshots-command.js +53 -0
  369. package/dist/cli/commands/qa-commands.d.ts +14 -87
  370. package/dist/cli/commands/qa-commands.js +17 -315
  371. package/dist/cli/commands/qa-context-prestep.d.ts +1 -0
  372. package/dist/cli/commands/qa-context-prestep.js +34 -0
  373. package/dist/cli/commands/qa-run-command.d.ts +3 -0
  374. package/dist/cli/commands/qa-run-command.js +105 -0
  375. package/dist/cli/commands/qa-run-options.d.ts +23 -0
  376. package/dist/cli/commands/qa-run-options.js +31 -0
  377. package/dist/cli/commands/qa-run-slice.d.ts +41 -0
  378. package/dist/cli/commands/qa-run-slice.js +145 -0
  379. package/dist/cli/commands/release-canary-command.d.ts +28 -0
  380. package/dist/cli/commands/release-canary-command.js +129 -0
  381. package/dist/cli/commands/release-command-shared.d.ts +13 -0
  382. package/dist/cli/commands/release-command-shared.js +18 -0
  383. package/dist/cli/commands/release-commands.d.ts +10 -18
  384. package/dist/cli/commands/release-commands.js +25 -298
  385. package/dist/cli/commands/release-done-command.d.ts +3 -0
  386. package/dist/cli/commands/release-done-command.js +64 -0
  387. package/dist/cli/commands/release-hotfix-command.d.ts +3 -0
  388. package/dist/cli/commands/release-hotfix-command.js +50 -0
  389. package/dist/cli/commands/release-plan-command.d.ts +3 -0
  390. package/dist/cli/commands/release-plan-command.js +33 -0
  391. package/dist/cli/commands/release-precheck-command.d.ts +3 -0
  392. package/dist/cli/commands/release-precheck-command.js +28 -0
  393. package/dist/cli/commands/release-promote-command.d.ts +3 -0
  394. package/dist/cli/commands/release-promote-command.js +34 -0
  395. package/dist/cli/commands/release-rollback-command.d.ts +3 -0
  396. package/dist/cli/commands/release-rollback-command.js +33 -0
  397. package/dist/cli/commands/release-watch-command.d.ts +3 -0
  398. package/dist/cli/commands/release-watch-command.js +44 -0
  399. package/dist/cli/commands/request-command-options.d.ts +49 -0
  400. package/dist/cli/commands/request-command-options.js +1 -0
  401. package/dist/cli/commands/request-commands.d.ts +3 -9
  402. package/dist/cli/commands/request-commands.js +17 -522
  403. package/dist/cli/commands/request-init-command.d.ts +3 -0
  404. package/dist/cli/commands/request-init-command.js +100 -0
  405. package/dist/cli/commands/request-lint-command.d.ts +3 -0
  406. package/dist/cli/commands/request-lint-command.js +50 -0
  407. package/dist/cli/commands/request-list-command.d.ts +10 -0
  408. package/dist/cli/commands/request-list-command.js +53 -0
  409. package/dist/cli/commands/request-repair-status-command.d.ts +3 -0
  410. package/dist/cli/commands/request-repair-status-command.js +61 -0
  411. package/dist/cli/commands/request-show-command.d.ts +3 -0
  412. package/dist/cli/commands/request-show-command.js +56 -0
  413. package/dist/cli/commands/request-transition-command.d.ts +3 -0
  414. package/dist/cli/commands/request-transition-command.js +122 -0
  415. package/dist/cli/commands/request-transition-failures.d.ts +8 -0
  416. package/dist/cli/commands/request-transition-failures.js +90 -0
  417. package/dist/cli/commands/request-transition-hooks.d.ts +50 -0
  418. package/dist/cli/commands/request-transition-hooks.js +115 -0
  419. package/dist/cli/commands/request-transition-preflight.d.ts +10 -0
  420. package/dist/cli/commands/request-transition-preflight.js +107 -0
  421. package/dist/cli/commands/scan-command-shared.d.ts +96 -0
  422. package/dist/cli/commands/scan-command-shared.js +83 -0
  423. package/dist/cli/commands/scan-commands.d.ts +3 -2
  424. package/dist/cli/commands/scan-commands.js +23 -463
  425. package/dist/cli/commands/scan-inventory-commands.d.ts +3 -0
  426. package/dist/cli/commands/scan-inventory-commands.js +96 -0
  427. package/dist/cli/commands/scan-project-commands.d.ts +3 -0
  428. package/dist/cli/commands/scan-project-commands.js +65 -0
  429. package/dist/cli/commands/scan-scope-commands.d.ts +3 -0
  430. package/dist/cli/commands/scan-scope-commands.js +149 -0
  431. package/dist/cli/commands/scan-scope-helpers.d.ts +8 -0
  432. package/dist/cli/commands/scan-scope-helpers.js +54 -0
  433. package/dist/cli/commands/scan-structural-commands.d.ts +3 -0
  434. package/dist/cli/commands/scan-structural-commands.js +113 -0
  435. package/dist/cli/commands/sediment-argv-flags.d.ts +54 -0
  436. package/dist/cli/commands/sediment-argv-flags.js +116 -0
  437. package/dist/cli/commands/sediment-command-shared.d.ts +15 -0
  438. package/dist/cli/commands/sediment-command-shared.js +5 -0
  439. package/dist/cli/commands/sediment-commands.d.ts +35 -59
  440. package/dist/cli/commands/sediment-commands.js +36 -590
  441. package/dist/cli/commands/sediment-pool-commands.d.ts +9 -0
  442. package/dist/cli/commands/sediment-pool-commands.js +185 -0
  443. package/dist/cli/commands/sediment-query-commands.d.ts +4 -0
  444. package/dist/cli/commands/sediment-query-commands.js +94 -0
  445. package/dist/cli/commands/sediment-release-commands.d.ts +8 -0
  446. package/dist/cli/commands/sediment-release-commands.js +232 -0
  447. package/dist/cli/commands/share-commands.d.ts +12 -68
  448. package/dist/cli/commands/share-commands.js +47 -556
  449. package/dist/cli/commands/share-error-hints.d.ts +14 -0
  450. package/dist/cli/commands/share-error-hints.js +38 -0
  451. package/dist/cli/commands/share-identity.d.ts +13 -0
  452. package/dist/cli/commands/share-identity.js +22 -0
  453. package/dist/cli/commands/share-record-paths.d.ts +37 -0
  454. package/dist/cli/commands/share-record-paths.js +68 -0
  455. package/dist/cli/commands/share-runners.d.ts +3 -0
  456. package/dist/cli/commands/share-runners.js +158 -0
  457. package/dist/cli/commands/shared-read-runners.d.ts +3 -0
  458. package/dist/cli/commands/shared-read-runners.js +51 -0
  459. package/dist/cli/commands/slice-check-command.d.ts +3 -0
  460. package/dist/cli/commands/slice-check-command.js +54 -0
  461. package/dist/cli/commands/slice-commands.d.ts +2 -22
  462. package/dist/cli/commands/slice-commands.js +18 -517
  463. package/dist/cli/commands/slice-decompose-artifacts.d.ts +18 -0
  464. package/dist/cli/commands/slice-decompose-artifacts.js +79 -0
  465. package/dist/cli/commands/slice-decompose-command.d.ts +3 -0
  466. package/dist/cli/commands/slice-decompose-command.js +123 -0
  467. package/dist/cli/commands/slice-list-commands.d.ts +3 -0
  468. package/dist/cli/commands/slice-list-commands.js +182 -0
  469. package/dist/cli/commands/slice-pick-command.d.ts +3 -0
  470. package/dist/cli/commands/slice-pick-command.js +60 -0
  471. package/dist/cli/commands/slice-plan-command.d.ts +24 -0
  472. package/dist/cli/commands/slice-plan-command.js +111 -0
  473. package/dist/cli/commands/sop-advance-command.d.ts +3 -0
  474. package/dist/cli/commands/sop-advance-command.js +160 -0
  475. package/dist/cli/commands/sop-check-command.d.ts +3 -0
  476. package/dist/cli/commands/sop-check-command.js +44 -0
  477. package/dist/cli/commands/sop-command-shared.d.ts +23 -0
  478. package/dist/cli/commands/sop-command-shared.js +18 -0
  479. package/dist/cli/commands/sop-commands.d.ts +15 -1
  480. package/dist/cli/commands/sop-commands.js +26 -240
  481. package/dist/cli/commands/sop-init-command.d.ts +3 -0
  482. package/dist/cli/commands/sop-init-command.js +51 -0
  483. package/dist/cli/commands/sop-lint-command.d.ts +3 -0
  484. package/dist/cli/commands/sop-lint-command.js +64 -0
  485. package/dist/cli/commands/sop-register-command.d.ts +3 -0
  486. package/dist/cli/commands/sop-register-command.js +48 -0
  487. package/dist/cli/commands/sop-registry-command.d.ts +3 -0
  488. package/dist/cli/commands/sop-registry-command.js +30 -0
  489. package/dist/cli/commands/statusline-command-shared.d.ts +73 -0
  490. package/dist/cli/commands/statusline-command-shared.js +90 -0
  491. package/dist/cli/commands/statusline-commands.d.ts +1 -19
  492. package/dist/cli/commands/statusline-commands.js +48 -287
  493. package/dist/cli/commands/statusline-compact-command.d.ts +4 -0
  494. package/dist/cli/commands/statusline-compact-command.js +54 -0
  495. package/dist/cli/commands/statusline-install-command.d.ts +3 -0
  496. package/dist/cli/commands/statusline-install-command.js +48 -0
  497. package/dist/cli/commands/statusline-render-command.d.ts +9 -0
  498. package/dist/cli/commands/statusline-render-command.js +55 -0
  499. package/dist/cli/commands/statusline-status-command.d.ts +3 -0
  500. package/dist/cli/commands/statusline-status-command.js +23 -0
  501. package/dist/cli/commands/statusline-uninstall-command.d.ts +3 -0
  502. package/dist/cli/commands/statusline-uninstall-command.js +23 -0
  503. package/dist/cli/commands/test-command-run-helpers.d.ts +27 -0
  504. package/dist/cli/commands/test-command-run-helpers.js +73 -0
  505. package/dist/cli/commands/test-command-runner-resolution.d.ts +57 -0
  506. package/dist/cli/commands/test-command-runner-resolution.js +183 -0
  507. package/dist/cli/commands/test-commands.d.ts +8 -56
  508. package/dist/cli/commands/test-commands.js +26 -249
  509. package/dist/cli/commands/vm-command-shared.d.ts +23 -0
  510. package/dist/cli/commands/vm-command-shared.js +23 -0
  511. package/dist/cli/commands/vm-commands.d.ts +1 -28
  512. package/dist/cli/commands/vm-commands.js +36 -270
  513. package/dist/cli/commands/vm-hypervisor-runtime.d.ts +15 -0
  514. package/dist/cli/commands/vm-hypervisor-runtime.js +64 -0
  515. package/dist/cli/commands/vm-release-command.d.ts +5 -0
  516. package/dist/cli/commands/vm-release-command.js +101 -0
  517. package/dist/cli/commands/vm-spawn-command.d.ts +5 -0
  518. package/dist/cli/commands/vm-spawn-command.js +177 -0
  519. package/dist/cli/commands/web-command-shared.d.ts +12 -0
  520. package/dist/cli/commands/web-command-shared.js +30 -0
  521. package/dist/cli/commands/web-commands.d.ts +7 -14
  522. package/dist/cli/commands/web-commands.js +6 -314
  523. package/dist/cli/commands/web-install-command.d.ts +10 -0
  524. package/dist/cli/commands/web-install-command.js +116 -0
  525. package/dist/cli/commands/web-lifecycle-commands.d.ts +9 -30
  526. package/dist/cli/commands/web-lifecycle-commands.js +14 -322
  527. package/dist/cli/commands/web-login-command.d.ts +14 -0
  528. package/dist/cli/commands/web-login-command.js +189 -0
  529. package/dist/cli/commands/web-op-payload.d.ts +22 -0
  530. package/dist/cli/commands/web-op-payload.js +89 -0
  531. package/dist/cli/commands/web-op-refusals.d.ts +37 -0
  532. package/dist/cli/commands/web-op-refusals.js +73 -0
  533. package/dist/cli/commands/web-op-runner.d.ts +14 -0
  534. package/dist/cli/commands/web-op-runner.js +166 -0
  535. package/dist/cli/commands/web-status-command.d.ts +4 -0
  536. package/dist/cli/commands/web-status-command.js +32 -0
  537. package/dist/cli/commands/web-stop-command.d.ts +10 -0
  538. package/dist/cli/commands/web-stop-command.js +59 -0
  539. package/dist/cli/commands/web-verb-specs.d.ts +18 -0
  540. package/dist/cli/commands/web-verb-specs.js +66 -0
  541. package/dist/cli/commands/workflow-command-shared.d.ts +102 -0
  542. package/dist/cli/commands/workflow-command-shared.js +74 -0
  543. package/dist/cli/commands/workflow-commands.d.ts +10 -1
  544. package/dist/cli/commands/workflow-commands.js +6 -594
  545. package/dist/cli/commands/workflow-gate-commands.d.ts +3 -0
  546. package/dist/cli/commands/workflow-gate-commands.js +116 -0
  547. package/dist/cli/commands/workflow-graph-commands.d.ts +3 -0
  548. package/dist/cli/commands/workflow-graph-commands.js +73 -0
  549. package/dist/cli/commands/workflow-init-command.d.ts +3 -0
  550. package/dist/cli/commands/workflow-init-command.js +68 -0
  551. package/dist/cli/commands/workflow-lifecycle-commands.d.ts +9 -59
  552. package/dist/cli/commands/workflow-lifecycle-commands.js +14 -348
  553. package/dist/cli/commands/workflow-node-commands.d.ts +3 -0
  554. package/dist/cli/commands/workflow-node-commands.js +154 -0
  555. package/dist/cli/commands/workflow-plan-helpers.d.ts +48 -0
  556. package/dist/cli/commands/workflow-plan-helpers.js +103 -0
  557. package/dist/cli/commands/workflow-planning-commands.d.ts +3 -0
  558. package/dist/cli/commands/workflow-planning-commands.js +56 -0
  559. package/dist/cli/commands/workflow-swarm-actions.d.ts +7 -0
  560. package/dist/cli/commands/workflow-swarm-actions.js +109 -0
  561. package/dist/cli/commands/workflow-swarm-commands.d.ts +3 -0
  562. package/dist/cli/commands/workflow-swarm-commands.js +138 -0
  563. package/dist/cli/commands/workflow-tech-actions.d.ts +10 -0
  564. package/dist/cli/commands/workflow-tech-actions.js +150 -0
  565. package/dist/cli/commands/workflow-terminalize-command.d.ts +3 -0
  566. package/dist/cli/commands/workflow-terminalize-command.js +56 -0
  567. package/dist/cli/commands/workspace/init-actions.d.ts +10 -0
  568. package/dist/cli/commands/workspace/init-actions.js +199 -0
  569. package/dist/cli/commands/workspace/init-codegraph-stake.d.ts +10 -0
  570. package/dist/cli/commands/workspace/init-codegraph-stake.js +54 -0
  571. package/dist/cli/commands/workspace/init-command.d.ts +8 -124
  572. package/dist/cli/commands/workspace/init-command.js +59 -623
  573. package/dist/cli/commands/workspace/init-context.d.ts +58 -0
  574. package/dist/cli/commands/workspace/init-context.js +121 -0
  575. package/dist/cli/commands/workspace/init-envelope.d.ts +3 -0
  576. package/dist/cli/commands/workspace/init-envelope.js +34 -0
  577. package/dist/cli/commands/workspace/init-failures.d.ts +3 -0
  578. package/dist/cli/commands/workspace/init-failures.js +84 -0
  579. package/dist/cli/commands/workspace/init-hooks-decision.d.ts +24 -0
  580. package/dist/cli/commands/workspace/init-hooks-decision.js +189 -0
  581. package/dist/cli/commands/workspace/init-options.d.ts +102 -0
  582. package/dist/cli/commands/workspace/init-options.js +1 -0
  583. package/dist/cli/commands/worktree-lease-commands.d.ts +10 -6
  584. package/dist/cli/commands/worktree-lease-commands.js +42 -512
  585. package/dist/cli/commands/worktree-lease-gc-command.d.ts +12 -0
  586. package/dist/cli/commands/worktree-lease-gc-command.js +117 -0
  587. package/dist/cli/commands/worktree-lease-git.d.ts +22 -0
  588. package/dist/cli/commands/worktree-lease-git.js +48 -0
  589. package/dist/cli/commands/worktree-lease-list-command.d.ts +12 -0
  590. package/dist/cli/commands/worktree-lease-list-command.js +100 -0
  591. package/dist/cli/commands/worktree-lease-load.d.ts +37 -0
  592. package/dist/cli/commands/worktree-lease-load.js +28 -0
  593. package/dist/cli/commands/worktree-lease-release-command.d.ts +13 -0
  594. package/dist/cli/commands/worktree-lease-release-command.js +105 -0
  595. package/dist/cli/commands/worktree-lease-renew-command.d.ts +11 -0
  596. package/dist/cli/commands/worktree-lease-renew-command.js +99 -0
  597. package/dist/cli/commands/worktree-lease-session.d.ts +22 -0
  598. package/dist/cli/commands/worktree-lease-session.js +29 -0
  599. package/dist/cli/commands/worktree-lease-spawn-command.d.ts +11 -0
  600. package/dist/cli/commands/worktree-lease-spawn-command.js +119 -0
  601. package/dist/cli/commands/worktree-lease-status-command.d.ts +11 -0
  602. package/dist/cli/commands/worktree-lease-status-command.js +86 -0
  603. package/dist/cli/commands/worktree-lease-store.d.ts +19 -0
  604. package/dist/cli/commands/worktree-lease-store.js +24 -0
  605. package/dist/cli/program.js +5 -0
  606. package/dist/services/code/auto-compact-artifacts.d.ts +54 -0
  607. package/dist/services/code/auto-compact-artifacts.js +135 -0
  608. package/dist/services/code/auto-compact-attempt.d.ts +46 -0
  609. package/dist/services/code/auto-compact-attempt.js +88 -0
  610. package/dist/services/code/auto-compact-decision.d.ts +74 -0
  611. package/dist/services/code/auto-compact-decision.js +149 -0
  612. package/dist/services/code/auto-compact-dispatch-gate.d.ts +36 -0
  613. package/dist/services/code/auto-compact-dispatch-gate.js +86 -0
  614. package/dist/services/code/auto-compact-envelopes.d.ts +33 -0
  615. package/dist/services/code/auto-compact-envelopes.js +134 -0
  616. package/dist/services/code/auto-compact-history.d.ts +46 -0
  617. package/dist/services/code/auto-compact-history.js +17 -0
  618. package/dist/services/code/auto-compact-orchestrator.d.ts +11 -240
  619. package/dist/services/code/auto-compact-orchestrator.js +165 -686
  620. package/dist/services/code/auto-compact-run-types.d.ts +123 -0
  621. package/dist/services/code/auto-compact-run-types.js +1 -0
  622. package/dist/services/code/emit-handoff.d.ts +35 -1
  623. package/dist/services/code/emit-handoff.js +128 -7
  624. package/dist/services/code/step-08-gate.d.ts +28 -19
  625. package/dist/services/code/step-08-gate.js +92 -35
  626. package/dist/services/config/config-coercion.d.ts +7 -0
  627. package/dist/services/config/config-coercion.js +156 -0
  628. package/dist/services/config/config-file-io.d.ts +11 -0
  629. package/dist/services/config/config-file-io.js +61 -0
  630. package/dist/services/config/config-get.d.ts +2 -0
  631. package/dist/services/config/config-get.js +36 -0
  632. package/dist/services/config/config-global-loader.d.ts +15 -0
  633. package/dist/services/config/config-global-loader.js +111 -0
  634. package/dist/services/config/config-nested-path.d.ts +3 -0
  635. package/dist/services/config/config-nested-path.js +53 -0
  636. package/dist/services/config/config-primitives.d.ts +16 -0
  637. package/dist/services/config/config-primitives.js +24 -0
  638. package/dist/services/config/config-service.d.ts +9 -33
  639. package/dist/services/config/config-service.js +16 -665
  640. package/dist/services/config/config-validation.d.ts +19 -0
  641. package/dist/services/config/config-validation.js +152 -0
  642. package/dist/services/config/config-workspace.d.ts +10 -0
  643. package/dist/services/config/config-workspace.js +158 -0
  644. package/dist/services/distribution/mcp-install-runner.d.ts +21 -0
  645. package/dist/services/distribution/mcp-install-runner.js +59 -0
  646. package/dist/services/distribution/mcp-install.d.ts +95 -0
  647. package/dist/services/distribution/mcp-install.js +179 -0
  648. package/dist/services/distribution/plugin-manifest.d.ts +97 -0
  649. package/dist/services/distribution/plugin-manifest.js +126 -0
  650. package/dist/services/hooks/mcp-surface-gate.d.ts +19 -0
  651. package/dist/services/hooks/mcp-surface-gate.js +87 -0
  652. package/dist/services/ide/adapters/claude-code-adapter.d.ts +4 -35
  653. package/dist/services/ide/adapters/claude-code-adapter.js +48 -171
  654. package/dist/services/ide/adapters/claude-code-local-state.d.ts +28 -0
  655. package/dist/services/ide/adapters/claude-code-local-state.js +112 -0
  656. package/dist/services/ide/adapters/claude-code-model-window.d.ts +37 -0
  657. package/dist/services/ide/adapters/claude-code-model-window.js +113 -0
  658. package/dist/services/ide/ide-mcp-install-types.d.ts +78 -0
  659. package/dist/services/ide/ide-mcp-install-types.js +104 -0
  660. package/dist/services/ide/ide-types.d.ts +45 -1
  661. package/dist/services/ide/mcp-tool-matcher.d.ts +34 -0
  662. package/dist/services/ide/mcp-tool-matcher.js +84 -0
  663. package/dist/services/lint/npx-resolver.js +7 -0
  664. package/dist/services/mcp/cli-executor.d.ts +36 -0
  665. package/dist/services/mcp/cli-executor.js +97 -0
  666. package/dist/services/mcp/json-rpc.d.ts +81 -0
  667. package/dist/services/mcp/json-rpc.js +116 -0
  668. package/dist/services/mcp/memory-tool.d.ts +3 -0
  669. package/dist/services/mcp/memory-tool.js +62 -0
  670. package/dist/services/mcp/server-main.d.ts +1 -0
  671. package/dist/services/mcp/server-main.js +66 -0
  672. package/dist/services/mcp/server.d.ts +22 -0
  673. package/dist/services/mcp/server.js +152 -0
  674. package/dist/services/mcp/surface.d.ts +62 -0
  675. package/dist/services/mcp/surface.js +198 -0
  676. package/dist/services/mcp/tool-core.d.ts +42 -0
  677. package/dist/services/mcp/tool-core.js +137 -0
  678. package/dist/services/mcp/tools.d.ts +13 -0
  679. package/dist/services/mcp/tools.js +58 -0
  680. package/dist/services/readonly-surface/argv-guard.d.ts +32 -0
  681. package/dist/services/readonly-surface/argv-guard.js +164 -0
  682. package/dist/services/readonly-surface/readonly-whitelist.d.ts +147 -0
  683. package/dist/services/readonly-surface/readonly-whitelist.js +107 -0
  684. package/dist/services/readonly-surface/whitelist-generator.d.ts +64 -0
  685. package/dist/services/readonly-surface/whitelist-generator.js +212 -0
  686. package/dist/services/skills/hooks-codegate-superpowers.d.ts +1 -0
  687. package/dist/services/skills/hooks-codegate-superpowers.js +26 -0
  688. package/dist/services/skills/hooks-settings-deny-list.d.ts +61 -0
  689. package/dist/services/skills/hooks-settings-deny-list.js +173 -0
  690. package/dist/services/skills/hooks-settings-envelopes.d.ts +20 -0
  691. package/dist/services/skills/hooks-settings-envelopes.js +79 -0
  692. package/dist/services/skills/hooks-settings-file-shape.d.ts +43 -0
  693. package/dist/services/skills/hooks-settings-file-shape.js +207 -0
  694. package/dist/services/skills/hooks-settings-paths.d.ts +34 -0
  695. package/dist/services/skills/hooks-settings-paths.js +75 -0
  696. package/dist/services/skills/hooks-settings-read-installed.d.ts +39 -0
  697. package/dist/services/skills/hooks-settings-read-installed.js +60 -0
  698. package/dist/services/skills/hooks-settings-service.d.ts +12 -212
  699. package/dist/services/skills/hooks-settings-service.js +71 -649
  700. package/dist/services/skills/hooks-settings-types.d.ts +139 -0
  701. package/dist/services/skills/hooks-settings-types.js +1 -0
  702. package/dist/services/workspace/claude-settings-template-merge.d.ts +89 -0
  703. package/dist/services/workspace/claude-settings-template-merge.js +243 -0
  704. package/dist/services/workspace/claude-settings-template.d.ts +29 -87
  705. package/dist/services/workspace/claude-settings-template.js +81 -236
  706. package/package.json +17 -6
  707. package/scripts/install-skills-bundles.mjs +233 -0
  708. package/scripts/install-skills-fs.mjs +148 -0
  709. package/scripts/install-skills-ide.mjs +279 -0
  710. package/scripts/install-skills-output-style-default.mjs +196 -0
  711. package/scripts/install-skills-output-styles.mjs +121 -0
  712. package/scripts/install-skills-report.mjs +42 -0
  713. package/scripts/install-skills-user-config.mjs +198 -0
  714. package/scripts/install-skills.mjs +36 -1066
  715. package/scripts/watch-tree.mjs +140 -0
  716. package/scripts/watch.mjs +4 -126
  717. package/skills/peaks-status/SKILL.md +31 -13
@@ -0,0 +1,160 @@
1
+ // src/cli/commands/sop-advance-command.ts
2
+ //
3
+ // `peaks sop advance` — advance a SOP to a phase, enforcing the gate-bypass
4
+ // policy. Split out of `sop-commands.ts`; every refusal code, message, `data`
5
+ // field, next-action string and exit code is unchanged.
6
+ import { mkdirSync } from 'node:fs';
7
+ import { advanceSop, SopAdvanceError, SopGateBlockedError, SopPhaseSkipError } from '../../services/sop/sop-advance-service.js';
8
+ import { sopStateDir } from '../../services/sop/sop-paths.js';
9
+ import { getSkillPresence } from '../../services/skills/skill-presence-service.js';
10
+ import { isBypassLimitReached, MAX_BYPASSES_PER_SESSION, recordBypass } from '../../services/mode/bypass-tracker.js';
11
+ import { addJsonOption, getErrorMessage } from '../cli-helpers.js';
12
+ import { printSopFailure, printSopOk } from './sop-command-shared.js';
13
+ /**
14
+ * The bypass policy `request transition` also runs: a bypass needs a reason,
15
+ * and in assisted/strict mode (resolved from the target project) it needs an
16
+ * explicit `--confirm` and counts against the per-SOP bypass cap.
17
+ *
18
+ * Returns false when a refusal envelope was printed and the caller must stop.
19
+ */
20
+ function enforceBypassPolicy(io, options) {
21
+ if (options.allowIncomplete !== true)
22
+ return true;
23
+ if (options.reason === undefined || options.reason.trim().length === 0) {
24
+ printSopFailure(io, {
25
+ json: options.json,
26
+ command: 'sop.advance',
27
+ code: 'BYPASS_REASON_REQUIRED',
28
+ message: '--allow-incomplete requires --reason explaining why the gates are skipped',
29
+ data: { id: options.id, to: options.to },
30
+ nextActions: ['Add --reason "<short justification>" or satisfy the gates']
31
+ });
32
+ return false;
33
+ }
34
+ if (options.forceConfirm === true)
35
+ return true;
36
+ const presence = getSkillPresence(options.project);
37
+ if (presence?.mode !== 'assisted' && presence?.mode !== 'strict')
38
+ return true;
39
+ if (options.confirm !== true) {
40
+ printSopFailure(io, {
41
+ json: options.json,
42
+ command: 'sop.advance',
43
+ code: 'ALLOW_INCOMPLETE_RESTRICTED',
44
+ message: `--allow-incomplete requires --confirm in ${presence.mode} mode`,
45
+ data: { id: options.id, mode: presence.mode },
46
+ nextActions: ['Add --confirm to bypass non-interactively']
47
+ });
48
+ return false;
49
+ }
50
+ // The bypass counter is keyed to the per-project SOP run-state dir (not a
51
+ // session); the shared cap constant is reused. Keying it per-project means a
52
+ // bypass in one project never consumes another project's budget. The state
53
+ // dir may not exist yet (no successful advance has written state.json), so
54
+ // ensure it before the counter writes its file.
55
+ const bypassRoot = sopStateDir(options.project, options.id);
56
+ mkdirSync(bypassRoot, { recursive: true });
57
+ if (isBypassLimitReached(bypassRoot)) {
58
+ printSopFailure(io, {
59
+ json: options.json,
60
+ command: 'sop.advance',
61
+ code: 'BYPASS_LIMIT_REACHED',
62
+ message: `gate bypass limit reached (${MAX_BYPASSES_PER_SESSION} bypasses per SOP)`,
63
+ data: { id: options.id, limit: MAX_BYPASSES_PER_SESSION },
64
+ nextActions: ['Satisfy the gates instead of bypassing']
65
+ });
66
+ return false;
67
+ }
68
+ // A dry-run preview must not consume a bypass.
69
+ if (options.dryRun !== true) {
70
+ recordBypass(bypassRoot);
71
+ }
72
+ return true;
73
+ }
74
+ /** The three typed refusals `advanceSop` can raise, then the generic one. */
75
+ function emitAdvanceError(io, options, error) {
76
+ if (error instanceof SopGateBlockedError) {
77
+ printSopFailure(io, {
78
+ json: options.json,
79
+ command: 'sop.advance',
80
+ code: error.code,
81
+ message: error.message,
82
+ data: { id: options.id, to: options.to, blockedGates: error.blockedGates },
83
+ nextActions: [
84
+ 'Satisfy the blocking gates, or bypass with --allow-incomplete --reason "<why>"'
85
+ ]
86
+ });
87
+ return;
88
+ }
89
+ if (error instanceof SopPhaseSkipError) {
90
+ printSopFailure(io, {
91
+ json: options.json,
92
+ command: 'sop.advance',
93
+ code: error.code,
94
+ message: error.message,
95
+ data: {
96
+ id: options.id,
97
+ to: options.to,
98
+ fromPhase: error.fromPhase,
99
+ expectedNext: error.expectedNext
100
+ },
101
+ nextActions: [
102
+ `Advance to "${error.expectedNext}" first, or bypass with --allow-incomplete --reason "<why>"`
103
+ ]
104
+ });
105
+ return;
106
+ }
107
+ printSopFailure(io, {
108
+ json: options.json,
109
+ command: 'sop.advance',
110
+ code: error instanceof SopAdvanceError ? error.code : 'SOP_ADVANCE_FAILED',
111
+ message: getErrorMessage(error),
112
+ data: { id: options.id, to: options.to },
113
+ nextActions: ['Verify the SOP id and phase with peaks sop lint']
114
+ });
115
+ }
116
+ async function runSopAdvance(io, options) {
117
+ try {
118
+ if (!enforceBypassPolicy(io, options))
119
+ return;
120
+ const advanceOptions = {
121
+ projectRoot: options.project,
122
+ id: options.id,
123
+ toPhase: options.to
124
+ };
125
+ if (options.allowCommands === true)
126
+ advanceOptions.allowCommands = true;
127
+ if (options.allowIncomplete === true)
128
+ advanceOptions.allowIncomplete = true;
129
+ if (options.reason !== undefined)
130
+ advanceOptions.reason = options.reason;
131
+ if (options.dryRun === true)
132
+ advanceOptions.dryRun = true;
133
+ const result = await advanceSop(advanceOptions);
134
+ printSopOk(io, {
135
+ json: options.json,
136
+ command: 'sop.advance',
137
+ data: result,
138
+ nextActions: result.applied
139
+ ? []
140
+ : ['Gates passed; re-run without --dry-run to record the advance']
141
+ });
142
+ }
143
+ catch (error) {
144
+ emitAdvanceError(io, options, error);
145
+ }
146
+ }
147
+ export function registerSopAdvanceCommand(sop, io) {
148
+ addJsonOption(sop
149
+ .command('advance')
150
+ .description('Advance a SOP to a phase; gates guarding that phase must pass (or be explicitly bypassed)')
151
+ .requiredOption('--id <sop-id>', 'SOP id')
152
+ .requiredOption('--to <phase>', 'phase to advance into')
153
+ .option('--project <path>', 'project whose run-state advances (default: current directory)', '.')
154
+ .option('--allow-commands', 'permit evaluating command-type gates')
155
+ .option('--allow-incomplete', 'bypass the phase gates AND phase-order check (requires --reason)')
156
+ .option('--reason <text>', 'justification recorded when bypassing gates')
157
+ .option('--confirm', 'skip interactive confirmation for a bypass in assisted/strict mode')
158
+ .option('--force-confirm', 'bypass mode-enforced confirmation (use with caution)')
159
+ .option('--dry-run', 'evaluate gates without recording the advance in state.json')).action((options) => runSopAdvance(io, options));
160
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerSopCheckCommand(sop: Command, io: ProgramIO): void;
@@ -0,0 +1,44 @@
1
+ // src/cli/commands/sop-check-command.ts
2
+ //
3
+ // `peaks sop check` — evaluate a single SOP gate. Split out of
4
+ // `sop-commands.ts`; the verb name, its options, its envelope fields and its
5
+ // next-action strings are unchanged.
6
+ import { checkGate, SopCheckError } from '../../services/sop/sop-check-service.js';
7
+ import { addJsonOption, getErrorMessage } from '../cli-helpers.js';
8
+ import { printSopFailure, printSopOk } from './sop-command-shared.js';
9
+ async function runSopCheck(io, options) {
10
+ try {
11
+ const checkOptions = {
12
+ projectRoot: options.project,
13
+ id: options.id,
14
+ gateId: options.gate
15
+ };
16
+ if (options.allowCommands === true) {
17
+ checkOptions.allowCommands = true;
18
+ }
19
+ printSopOk(io, {
20
+ json: options.json,
21
+ command: 'sop.check',
22
+ data: await checkGate(checkOptions)
23
+ });
24
+ }
25
+ catch (error) {
26
+ printSopFailure(io, {
27
+ json: options.json,
28
+ command: 'sop.check',
29
+ code: error instanceof SopCheckError ? error.code : 'SOP_CHECK_FAILED',
30
+ message: getErrorMessage(error),
31
+ data: { id: options.id, gateId: options.gate },
32
+ nextActions: ['Verify the SOP id and gate id with peaks sop lint']
33
+ });
34
+ }
35
+ }
36
+ export function registerSopCheckCommand(sop, io) {
37
+ addJsonOption(sop
38
+ .command('check')
39
+ .description('Evaluate a single SOP gate (returns pass / fail / blocked)')
40
+ .requiredOption('--id <sop-id>', 'SOP id')
41
+ .requiredOption('--gate <gate-id>', 'gate id within the SOP')
42
+ .option('--project <path>', 'project the gate evaluates against (default: current directory)', '.')
43
+ .option('--allow-commands', 'permit evaluating command-type gates')).action((options) => runSopCheck(io, options));
44
+ }
@@ -0,0 +1,23 @@
1
+ import { type ProgramIO } from '../cli-helpers.js';
2
+ /** The `--project` / `--json` pair every verb in this family declares. */
3
+ export type SopBaseOptions = {
4
+ project?: string;
5
+ json?: boolean;
6
+ };
7
+ /** The fields a family success envelope carries. */
8
+ export type SopOutcome = {
9
+ readonly json: boolean | undefined;
10
+ readonly command: string;
11
+ readonly data: unknown;
12
+ readonly nextActions?: readonly string[];
13
+ };
14
+ /** The fields a family failure envelope carries. */
15
+ export type SopFailure = SopOutcome & {
16
+ readonly code: string;
17
+ readonly message: string;
18
+ readonly data: Record<string, unknown>;
19
+ };
20
+ /** Print the family's success envelope. */
21
+ export declare function printSopOk(io: ProgramIO, outcome: SopOutcome): void;
22
+ /** Print the family's failure envelope and mark the process failed. */
23
+ export declare function printSopFailure(io: ProgramIO, failure: SopFailure): void;
@@ -0,0 +1,18 @@
1
+ // src/cli/commands/sop-command-shared.ts
2
+ //
3
+ // What every `peaks sop *` verb emits: the success envelope and the failure
4
+ // envelope, both with the family's `ok`/`fail` shape and the `--json` switch.
5
+ // Split out of `sop-commands.ts`; no envelope field or exit code changed.
6
+ import { fail, ok } from 'peaks-loop-shared/result';
7
+ import { printResult } from '../cli-helpers.js';
8
+ /** Print the family's success envelope. */
9
+ export function printSopOk(io, outcome) {
10
+ printResult(io, ok(outcome.command, outcome.data, [], [...(outcome.nextActions ?? [])]), outcome.json ?? false);
11
+ }
12
+ /** Print the family's failure envelope and mark the process failed. */
13
+ export function printSopFailure(io, failure) {
14
+ printResult(io, fail(failure.command, failure.code, failure.message, failure.data, [
15
+ ...(failure.nextActions ?? [])
16
+ ]), failure.json ?? false);
17
+ process.exitCode = 1;
18
+ }
@@ -1,3 +1,17 @@
1
+ /**
2
+ * `peaks sop` — author and validate user-defined SOP skills.
3
+ *
4
+ * - `peaks sop init` — scaffold a SOP (manifest + SKILL.md)
5
+ * - `peaks sop lint` — validate the manifest
6
+ * - `peaks sop register` — record the SOP's gates in the gate registry
7
+ * - `peaks sop registry` — list registered SOPs and gates
8
+ * - `peaks sop check` — evaluate one gate
9
+ * - `peaks sop advance` — advance to a phase, enforcing the bypass policy
10
+ *
11
+ * Registration order is the user's reading order and is what the whole-registry
12
+ * render pins; each verb's implementation lives beside this file, one module
13
+ * per verb, over the shared envelope helpers in `sop-command-shared.ts`.
14
+ */
1
15
  import type { Command } from 'commander';
2
- import { type ProgramIO } from '../cli-helpers.js';
16
+ import type { ProgramIO } from '../cli-helpers.js';
3
17
  export declare function registerSopCommands(program: Command, io: ProgramIO): void;
@@ -1,243 +1,29 @@
1
- import { mkdirSync } from 'node:fs';
2
- import { initSop, lintSop } from '../../services/sop/sop-service.js';
3
- import { registerSop, readRegistry, SopRegisterError } from '../../services/sop/sop-registry-service.js';
4
- import { checkGate, SopCheckError } from '../../services/sop/sop-check-service.js';
5
- import { advanceSop, SopAdvanceError, SopGateBlockedError, SopPhaseSkipError } from '../../services/sop/sop-advance-service.js';
6
- import { sopStateDir } from '../../services/sop/sop-paths.js';
7
- import { getSkillPresence } from '../../services/skills/skill-presence-service.js';
8
- import { recordBypass, isBypassLimitReached, MAX_BYPASSES_PER_SESSION } from '../../services/mode/bypass-tracker.js';
9
- import { fail, ok } from 'peaks-loop-shared/result';
10
- import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
1
+ /**
2
+ * `peaks sop` — author and validate user-defined SOP skills.
3
+ *
4
+ * - `peaks sop init` — scaffold a SOP (manifest + SKILL.md)
5
+ * - `peaks sop lint` — validate the manifest
6
+ * - `peaks sop register` — record the SOP's gates in the gate registry
7
+ * - `peaks sop registry` — list registered SOPs and gates
8
+ * - `peaks sop check` — evaluate one gate
9
+ * - `peaks sop advance` — advance to a phase, enforcing the bypass policy
10
+ *
11
+ * Registration order is the user's reading order and is what the whole-registry
12
+ * render pins; each verb's implementation lives beside this file, one module
13
+ * per verb, over the shared envelope helpers in `sop-command-shared.ts`.
14
+ */
15
+ import { registerSopInitCommand } from './sop-init-command.js';
16
+ import { registerSopLintCommand } from './sop-lint-command.js';
17
+ import { registerSopRegisterCommand } from './sop-register-command.js';
18
+ import { registerSopRegistryCommand } from './sop-registry-command.js';
19
+ import { registerSopCheckCommand } from './sop-check-command.js';
20
+ import { registerSopAdvanceCommand } from './sop-advance-command.js';
11
21
  export function registerSopCommands(program, io) {
12
22
  const sop = program.command('sop').description('Author and validate user-defined SOP skills');
13
- addJsonOption(sop
14
- .command('init')
15
- .description('Scaffold a user-authored SOP (manifest + SKILL.md); global by default, --project commits it into a repo')
16
- .requiredOption('--id <sop-id>', 'SOP id (lowercase kebab, e.g. team-release)')
17
- .option('--name <name>', 'human-readable SOP name (defaults to the id)')
18
- .option('--apply', 'write the SOP files (default: preview only)')
19
- .option('--project <path>', 'scaffold into the repo (<path>/.peaks/sops, committed & team-shared) instead of global')).action(async (options) => {
20
- try {
21
- const initOptions = { id: options.id };
22
- if (options.name !== undefined) {
23
- initOptions.name = options.name;
24
- }
25
- if (options.apply === true) {
26
- initOptions.apply = true;
27
- }
28
- if (options.project !== undefined) {
29
- initOptions.projectRoot = options.project;
30
- }
31
- const result = await initSop(initOptions);
32
- // Side-effecting scaffold returns explicit next steps so the user doesn't
33
- // have to recall the runbook: applied → edit then lint; preview → apply.
34
- const nextActions = result.applied
35
- ? [
36
- `Edit ${result.manifestPath} to define your real phases and gates`,
37
- `peaks sop lint --id ${result.id} --json`
38
- ]
39
- : [`Re-run with --apply to write ${result.manifestPath}`];
40
- printResult(io, ok('sop.init', result, [], nextActions), options.json);
41
- }
42
- catch (error) {
43
- printResult(io, fail('sop.init', 'SOP_INIT_FAILED', getErrorMessage(error), { id: options.id }, [
44
- 'Check the SOP id before retrying'
45
- ]), options.json);
46
- process.exitCode = 1;
47
- }
48
- });
49
- addJsonOption(sop
50
- .command('lint')
51
- .description('Validate a SOP manifest (id namespace, phases, gate ids, check fields)')
52
- .requiredOption('--id <sop-id>', 'SOP id to lint')
53
- .option('--allow-commands', 'permit command-type gates (they run shell-less processes)')
54
- .option('--project <path>', 'lint the project-layer SOP (<path>/.peaks/sops) instead of global')).action(async (options) => {
55
- try {
56
- const lintOptions = { id: options.id };
57
- if (options.allowCommands === true) {
58
- lintOptions.allowCommands = true;
59
- }
60
- if (options.project !== undefined) {
61
- lintOptions.projectRoot = options.project;
62
- }
63
- const result = await lintSop(lintOptions);
64
- if (result === null) {
65
- printResult(io, fail('sop.lint', 'SOP_NOT_FOUND', `No SOP found for id "${options.id}"`, { id: options.id }, ['Run peaks sop init --id <sop-id> --apply first']), options.json);
66
- process.exitCode = 1;
67
- return;
68
- }
69
- printResult(io, result.ok
70
- ? ok('sop.lint', result)
71
- : fail('sop.lint', 'SOP_LINT_FAILED', `${result.findings.filter((f) => f.severity === 'error').length} lint error(s) in SOP "${options.id}"`, result, ['Fix the reported findings, then re-run peaks sop lint']), options.json);
72
- if (!result.ok) {
73
- process.exitCode = 1;
74
- }
75
- }
76
- catch (error) {
77
- printResult(io, fail('sop.lint', 'SOP_LINT_ERROR', getErrorMessage(error), { id: options.id }, [
78
- 'Check the SOP id before retrying'
79
- ]), options.json);
80
- process.exitCode = 1;
81
- }
82
- });
83
- addJsonOption(sop
84
- .command('register')
85
- .description('Validate a SOP and record its gates in the gate registry (global, or --project for the repo)')
86
- .requiredOption('--id <sop-id>', 'SOP id to register')
87
- .option('--allow-commands', 'permit command-type gates when validating')
88
- .option('--dry-run', 'preview the registration without writing registry.json')
89
- .option('--project <path>', 'register into the repo (<path>/.peaks/sops, committed & team-shared) instead of global')).action(async (options) => {
90
- try {
91
- const registerOptions = { id: options.id };
92
- if (options.allowCommands === true) {
93
- registerOptions.allowCommands = true;
94
- }
95
- if (options.dryRun === true) {
96
- registerOptions.dryRun = true;
97
- }
98
- if (options.project !== undefined) {
99
- registerOptions.projectRoot = options.project;
100
- }
101
- const result = await registerSop(registerOptions);
102
- printResult(io, ok('sop.register', result, [], result.applied ? [] : ['Re-run without --dry-run to write registry.json']), options.json);
103
- }
104
- catch (error) {
105
- const code = error instanceof SopRegisterError ? error.code : 'SOP_REGISTER_FAILED';
106
- printResult(io, fail('sop.register', code, getErrorMessage(error), { id: options.id }, [
107
- 'Run peaks sop lint to see why the SOP is not registrable'
108
- ]), options.json);
109
- process.exitCode = 1;
110
- }
111
- });
112
- addJsonOption(sop
113
- .command('registry')
114
- .description('List registered SOPs and gates (global; merges in the cwd project layer by default)')
115
- .option('--project <path>', 'also include and prefer the repo layer (<path>/.peaks/sops) (default: current directory)', '.')).action(async (options) => {
116
- try {
117
- const registry = await readRegistry(options.project);
118
- printResult(io, ok('sop.registry', registry), options.json);
119
- }
120
- catch (error) {
121
- printResult(io, fail('sop.registry', 'SOP_REGISTRY_FAILED', getErrorMessage(error), {}, [
122
- 'The global registry may be corrupted; inspect ~/.peaks/sops/registry.json'
123
- ]), options.json);
124
- process.exitCode = 1;
125
- }
126
- });
127
- addJsonOption(sop
128
- .command('check')
129
- .description('Evaluate a single SOP gate (returns pass / fail / blocked)')
130
- .requiredOption('--id <sop-id>', 'SOP id')
131
- .requiredOption('--gate <gate-id>', 'gate id within the SOP')
132
- .option('--project <path>', 'project the gate evaluates against (default: current directory)', '.')
133
- .option('--allow-commands', 'permit evaluating command-type gates')).action(async (options) => {
134
- try {
135
- const checkOptions = {
136
- projectRoot: options.project,
137
- id: options.id,
138
- gateId: options.gate
139
- };
140
- if (options.allowCommands === true) {
141
- checkOptions.allowCommands = true;
142
- }
143
- const result = await checkGate(checkOptions);
144
- printResult(io, ok('sop.check', result), options.json);
145
- }
146
- catch (error) {
147
- const code = error instanceof SopCheckError ? error.code : 'SOP_CHECK_FAILED';
148
- printResult(io, fail('sop.check', code, getErrorMessage(error), { id: options.id, gateId: options.gate }, [
149
- 'Verify the SOP id and gate id with peaks sop lint'
150
- ]), options.json);
151
- process.exitCode = 1;
152
- }
153
- });
154
- addJsonOption(sop
155
- .command('advance')
156
- .description('Advance a SOP to a phase; gates guarding that phase must pass (or be explicitly bypassed)')
157
- .requiredOption('--id <sop-id>', 'SOP id')
158
- .requiredOption('--to <phase>', 'phase to advance into')
159
- .option('--project <path>', 'project whose run-state advances (default: current directory)', '.')
160
- .option('--allow-commands', 'permit evaluating command-type gates')
161
- .option('--allow-incomplete', 'bypass the phase gates AND phase-order check (requires --reason)')
162
- .option('--reason <text>', 'justification recorded when bypassing gates')
163
- .option('--confirm', 'skip interactive confirmation for a bypass in assisted/strict mode')
164
- .option('--force-confirm', 'bypass mode-enforced confirmation (use with caution)')
165
- .option('--dry-run', 'evaluate gates without recording the advance in state.json')).action(async (options) => {
166
- try {
167
- // Bypass policy mirrors `request transition`: a bypass needs a reason, and
168
- // in assisted/strict mode (resolved from the target project) it needs an
169
- // explicit --confirm and counts against the per-SOP bypass cap.
170
- if (options.allowIncomplete === true &&
171
- (options.reason === undefined || options.reason.trim().length === 0)) {
172
- printResult(io, fail('sop.advance', 'BYPASS_REASON_REQUIRED', '--allow-incomplete requires --reason explaining why the gates are skipped', { id: options.id, to: options.to }, ['Add --reason "<short justification>" or satisfy the gates']), options.json);
173
- process.exitCode = 1;
174
- return;
175
- }
176
- if (options.allowIncomplete === true && options.forceConfirm !== true) {
177
- const presence = getSkillPresence(options.project);
178
- if (presence?.mode === 'assisted' || presence?.mode === 'strict') {
179
- if (options.confirm !== true) {
180
- printResult(io, fail('sop.advance', 'ALLOW_INCOMPLETE_RESTRICTED', `--allow-incomplete requires --confirm in ${presence.mode} mode`, { id: options.id, mode: presence.mode }, ['Add --confirm to bypass non-interactively']), options.json);
181
- process.exitCode = 1;
182
- return;
183
- }
184
- // The bypass counter is keyed to the per-project SOP run-state dir (not
185
- // a session); the shared cap constant is reused. Keying it per-project
186
- // means a bypass in one project never consumes another project's budget.
187
- const bypassRoot = sopStateDir(options.project, options.id);
188
- // The per-project state dir may not exist yet (no successful advance has
189
- // written state.json), so ensure it before the counter writes its file.
190
- mkdirSync(bypassRoot, { recursive: true });
191
- if (isBypassLimitReached(bypassRoot)) {
192
- printResult(io, fail('sop.advance', 'BYPASS_LIMIT_REACHED', `gate bypass limit reached (${MAX_BYPASSES_PER_SESSION} bypasses per SOP)`, { id: options.id, limit: MAX_BYPASSES_PER_SESSION }, ['Satisfy the gates instead of bypassing']), options.json);
193
- process.exitCode = 1;
194
- return;
195
- }
196
- // A dry-run preview must not consume a bypass.
197
- if (options.dryRun !== true) {
198
- recordBypass(bypassRoot);
199
- }
200
- }
201
- }
202
- const advanceOptions = {
203
- projectRoot: options.project,
204
- id: options.id,
205
- toPhase: options.to
206
- };
207
- if (options.allowCommands === true)
208
- advanceOptions.allowCommands = true;
209
- if (options.allowIncomplete === true)
210
- advanceOptions.allowIncomplete = true;
211
- if (options.reason !== undefined)
212
- advanceOptions.reason = options.reason;
213
- if (options.dryRun === true)
214
- advanceOptions.dryRun = true;
215
- const result = await advanceSop(advanceOptions);
216
- printResult(io, ok('sop.advance', result, [], result.applied ? [] : ['Gates passed; re-run without --dry-run to record the advance']), options.json);
217
- }
218
- catch (error) {
219
- if (error instanceof SopGateBlockedError) {
220
- printResult(io, fail('sop.advance', error.code, error.message, { id: options.id, to: options.to, blockedGates: error.blockedGates }, ['Satisfy the blocking gates, or bypass with --allow-incomplete --reason "<why>"']), options.json);
221
- process.exitCode = 1;
222
- return;
223
- }
224
- if (error instanceof SopPhaseSkipError) {
225
- printResult(io, fail('sop.advance', error.code, error.message, {
226
- id: options.id,
227
- to: options.to,
228
- fromPhase: error.fromPhase,
229
- expectedNext: error.expectedNext
230
- }, [
231
- `Advance to "${error.expectedNext}" first, or bypass with --allow-incomplete --reason "<why>"`
232
- ]), options.json);
233
- process.exitCode = 1;
234
- return;
235
- }
236
- const code = error instanceof SopAdvanceError ? error.code : 'SOP_ADVANCE_FAILED';
237
- printResult(io, fail('sop.advance', code, getErrorMessage(error), { id: options.id, to: options.to }, [
238
- 'Verify the SOP id and phase with peaks sop lint'
239
- ]), options.json);
240
- process.exitCode = 1;
241
- }
242
- });
23
+ registerSopInitCommand(sop, io);
24
+ registerSopLintCommand(sop, io);
25
+ registerSopRegisterCommand(sop, io);
26
+ registerSopRegistryCommand(sop, io);
27
+ registerSopCheckCommand(sop, io);
28
+ registerSopAdvanceCommand(sop, io);
243
29
  }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerSopInitCommand(sop: Command, io: ProgramIO): void;
@@ -0,0 +1,51 @@
1
+ // src/cli/commands/sop-init-command.ts
2
+ //
3
+ // `peaks sop init` — scaffold a user-authored SOP (manifest + SKILL.md).
4
+ // Split out of `sop-commands.ts`; the verb name, its options, its envelope
5
+ // fields and its next-action strings are unchanged.
6
+ import { initSop } from '../../services/sop/sop-service.js';
7
+ import { addJsonOption, getErrorMessage } from '../cli-helpers.js';
8
+ import { printSopFailure, printSopOk } from './sop-command-shared.js';
9
+ async function runSopInit(io, options) {
10
+ try {
11
+ const initOptions = { id: options.id };
12
+ if (options.name !== undefined) {
13
+ initOptions.name = options.name;
14
+ }
15
+ if (options.apply === true) {
16
+ initOptions.apply = true;
17
+ }
18
+ if (options.project !== undefined) {
19
+ initOptions.projectRoot = options.project;
20
+ }
21
+ const result = await initSop(initOptions);
22
+ // Side-effecting scaffold returns explicit next steps so the user doesn't
23
+ // have to recall the runbook: applied → edit then lint; preview → apply.
24
+ const nextActions = result.applied
25
+ ? [
26
+ `Edit ${result.manifestPath} to define your real phases and gates`,
27
+ `peaks sop lint --id ${result.id} --json`
28
+ ]
29
+ : [`Re-run with --apply to write ${result.manifestPath}`];
30
+ printSopOk(io, { json: options.json, command: 'sop.init', data: result, nextActions });
31
+ }
32
+ catch (error) {
33
+ printSopFailure(io, {
34
+ json: options.json,
35
+ command: 'sop.init',
36
+ code: 'SOP_INIT_FAILED',
37
+ message: getErrorMessage(error),
38
+ data: { id: options.id },
39
+ nextActions: ['Check the SOP id before retrying']
40
+ });
41
+ }
42
+ }
43
+ export function registerSopInitCommand(sop, io) {
44
+ addJsonOption(sop
45
+ .command('init')
46
+ .description('Scaffold a user-authored SOP (manifest + SKILL.md); global by default, --project commits it into a repo')
47
+ .requiredOption('--id <sop-id>', 'SOP id (lowercase kebab, e.g. team-release)')
48
+ .option('--name <name>', 'human-readable SOP name (defaults to the id)')
49
+ .option('--apply', 'write the SOP files (default: preview only)')
50
+ .option('--project <path>', 'scaffold into the repo (<path>/.peaks/sops, committed & team-shared) instead of global')).action((options) => runSopInit(io, options));
51
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerSopLintCommand(sop: Command, io: ProgramIO): void;