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,42 @@
1
+ import { lintSpecFile } from '../../services/loop/spec-service.js';
2
+ import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
3
+ import { fail, ok } from 'peaks-loop-shared/result';
4
+ import { loopSpecParent } from './loop-eval-parents.js';
5
+ export function registerLoopSpecLintCommand(program, io) {
6
+ const spec = loopSpecParent(program);
7
+ addJsonOption(spec
8
+ .command('lint')
9
+ .description('Slice E.2: schema-validate a spec.yaml file (path required).')
10
+ .argument('<file>', 'path to spec.yaml')
11
+ .option('--rid <rid>', 'override the rid embedded in the spec (default: inferred from path)')).action((file, options) => runLoopSpecLint(file, options, io));
12
+ }
13
+ function reportLoopSpecLintFailure(io, error, file, asJson) {
14
+ printResult(io, fail('loop.spec.lint', 'LOOP_SPEC_LINT_FAILED', getErrorMessage(error), { file }, [
15
+ 'Verify the file path and rid flag.'
16
+ ]), asJson);
17
+ process.exitCode = 1;
18
+ }
19
+ function runLoopSpecLint(file, options, io) {
20
+ try {
21
+ const result = lintSpecFile(file, options.rid);
22
+ if (result.spec === null) {
23
+ printResult(io, fail('loop.spec.lint', 'SPEC_LINT_FAILED', result.report.errors.join('; '), { file, raw: result.raw.slice(0, 200) }, ['Verify the file path and YAML syntax.']), options.json);
24
+ process.exitCode = 1;
25
+ return;
26
+ }
27
+ printResult(io, ok('loop.spec.lint', {
28
+ file,
29
+ spec: result.spec,
30
+ lint: {
31
+ ok: result.report.ok,
32
+ errors: result.report.errors,
33
+ warnings: result.report.warnings
34
+ }
35
+ }, [], []), options.json);
36
+ if (!result.report.ok)
37
+ process.exitCode = 1;
38
+ }
39
+ catch (error) {
40
+ reportLoopSpecLintFailure(io, error, file, options.json);
41
+ }
42
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerWorkflowEvalWorkflowCommands(program: Command, io: ProgramIO): void;
@@ -0,0 +1,141 @@
1
+ import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
2
+ import { fail, ok } from 'peaks-loop-shared/result';
3
+ import { resolveWorkflow, planWorkflow, planWorkflowRun } from '../../services/workflow/workflow-loader.js';
4
+ import { findProjectRoot } from '../../services/config/config-safety.js';
5
+ import { workflowCommandParent } from './loop-eval-parents.js';
6
+ export function registerWorkflowEvalWorkflowCommands(program, io) {
7
+ const workflow = workflowCommandParent(program);
8
+ // peaks workflow run <id>
9
+ addJsonOption(workflow
10
+ .command('run')
11
+ .description('Slice A.3: replay a captured workflow (.peaks/workflows/<id>.yaml) deterministically. Returns the run-plan order + per-phase status without re-deriving the phase plan.')
12
+ .argument('<id>', 'workflow id (matches .peaks/workflows/<id>.yaml)')
13
+ .requiredOption('--session <sid>', 'session id (from peaks workspace init)')
14
+ .option('--project <path>', 'project root (default: cwd)')).action((id, options) => runWorkflowRun(id, options, io));
15
+ // peaks workflow graph <id> (dry-run graph render)
16
+ // Renamed from `plan` to `graph` to avoid collision with the existing
17
+ // `peaks workflow plan <read|refresh|detect-trigger>` family registered
18
+ // Reuse the existing `graph` parent if `registerWorkflowLifecycleCommand`
19
+ // already created one (it owns `peaks workflow graph show|list`).
20
+ const existingGraph = workflow.commands.find((c) => c.name() === 'graph');
21
+ const graphParent = existingGraph ??
22
+ workflow
23
+ .command('graph')
24
+ .description('workflow graph read commands (slice A.3 dry-run + slice 4.0.8 lifecycle)');
25
+ addJsonOption(graphParent
26
+ .description('Slice A.3 dry-run: render the workflow graph (phases + parallel groups + evaluators + budget). No phase is executed.')
27
+ .argument('<id>', 'workflow id')
28
+ .requiredOption('--session <sid>', 'session id')
29
+ .option('--project <path>', 'project root (default: cwd)')).action((id, options) => runWorkflowGraph(id, options, io));
30
+ // peaks workflow lint <id>
31
+ addJsonOption(workflow
32
+ .command('lint')
33
+ .description('Slice A.3: validate a workflow spec (phases / gates / evaluators / parallel groups / budget).')
34
+ .argument('<id>', 'workflow id')
35
+ .requiredOption('--session <sid>', 'session id')
36
+ .option('--project <path>', 'project root (default: cwd)')).action((id, options) => runWorkflowLint(id, options, io));
37
+ }
38
+ function reportWorkflowRunFailure(io, error, sessionId, asJson) {
39
+ printResult(io, fail('workflow.run', 'WORKFLOW_RUN_FAILED', getErrorMessage(error), { sessionId }, [
40
+ 'Verify the workflow id and session binding.'
41
+ ]), asJson);
42
+ process.exitCode = 1;
43
+ }
44
+ function reportWorkflowGraphFailure(io, error, sessionId, asJson) {
45
+ printResult(io, fail('workflow.graph', 'WORKFLOW_GRAPH_FAILED', getErrorMessage(error), { sessionId }, [
46
+ 'Verify the workflow id and session binding.'
47
+ ]), asJson);
48
+ process.exitCode = 1;
49
+ }
50
+ function reportWorkflowLintFailure(io, error, sessionId, asJson) {
51
+ printResult(io, fail('workflow.lint', 'WORKFLOW_LINT_FAILED', getErrorMessage(error), { sessionId }, [
52
+ 'Verify the workflow file syntax.'
53
+ ]), asJson);
54
+ process.exitCode = 1;
55
+ }
56
+ function workflowRunData(sessionId, resolved, runPlan) {
57
+ return {
58
+ sessionId,
59
+ workflow: { id: resolved.spec.id, label: resolved.spec.label, source: resolved.source },
60
+ runPlan,
61
+ lintWarnings: resolved.lint.warnings
62
+ };
63
+ }
64
+ function workflowGraphData(sessionId, graph, resolved) {
65
+ return {
66
+ sessionId,
67
+ graph,
68
+ lintWarnings: resolved.lint.warnings
69
+ };
70
+ }
71
+ function runWorkflowRun(id, options, io) {
72
+ try {
73
+ const projectRoot = options.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
74
+ const resolved = resolveWorkflow(projectRoot, id);
75
+ if (resolved.source.kind === 'missing') {
76
+ printResult(io, fail('workflow.run', 'WORKFLOW_NOT_FOUND', `workflow "${id}" not found`, { sessionId: options.session }, [`peaks workflow lint ${id} --session ${options.session} --json`]), options.json);
77
+ process.exitCode = 1;
78
+ return;
79
+ }
80
+ if (!resolved.lint.ok) {
81
+ printResult(io, fail('workflow.run', 'WORKFLOW_LINT_FAILED', `workflow "${id}" has ${resolved.lint.errors.length} lint error(s): ${resolved.lint.errors.join('; ')}`, resolved.lint, [`peaks workflow lint ${id} --session ${options.session} --json`]), options.json);
82
+ process.exitCode = 1;
83
+ return;
84
+ }
85
+ const runPlan = planWorkflowRun(resolved.spec);
86
+ const data = workflowRunData(options.session, resolved, runPlan);
87
+ const actions = [
88
+ `Run \`peaks workflow plan ${id} --session ${options.session} --json\` to preview the graph.`
89
+ ];
90
+ printResult(io, ok('workflow.run', data, [], actions), options.json);
91
+ }
92
+ catch (error) {
93
+ reportWorkflowRunFailure(io, error, options.session, options.json);
94
+ }
95
+ }
96
+ function runWorkflowGraph(id, options, io) {
97
+ try {
98
+ const projectRoot = options.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
99
+ const resolved = resolveWorkflow(projectRoot, id);
100
+ if (resolved.source.kind === 'missing') {
101
+ printResult(io, fail('workflow.graph', 'WORKFLOW_NOT_FOUND', `workflow "${id}" not found`, { sessionId: options.session }, [`Create .peaks/workflows/${id}.yaml or use the bundled default-fullauto-md.`]), options.json);
102
+ process.exitCode = 1;
103
+ return;
104
+ }
105
+ if (!resolved.lint.ok) {
106
+ printResult(io, fail('workflow.graph', 'WORKFLOW_LINT_FAILED', `workflow "${id}" has ${resolved.lint.errors.length} lint error(s): ${resolved.lint.errors.join('; ')}`, resolved.lint, [`peaks workflow lint ${id} --session ${options.session} --json`]), options.json);
107
+ process.exitCode = 1;
108
+ return;
109
+ }
110
+ const graph = planWorkflow(resolved.spec, resolved.source);
111
+ const data = workflowGraphData(options.session, graph, resolved);
112
+ const actions = [
113
+ `Run \`peaks workflow run ${id} --session ${options.session} --json\` to materialize the run-plan order.`
114
+ ];
115
+ printResult(io, ok('workflow.graph', data, [], actions), options.json);
116
+ }
117
+ catch (error) {
118
+ reportWorkflowGraphFailure(io, error, options.session, options.json);
119
+ }
120
+ }
121
+ function runWorkflowLint(id, options, io) {
122
+ try {
123
+ const projectRoot = options.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
124
+ const resolved = resolveWorkflow(projectRoot, id);
125
+ if (resolved.source.kind === 'missing') {
126
+ printResult(io, fail('workflow.lint', 'WORKFLOW_NOT_FOUND', `workflow "${id}" not found`, { sessionId: options.session }, [`Create .peaks/workflows/${id}.yaml`]), options.json);
127
+ process.exitCode = 1;
128
+ return;
129
+ }
130
+ printResult(io, ok('workflow.lint', {
131
+ sessionId: options.session,
132
+ source: resolved.source,
133
+ lint: resolved.lint
134
+ }, [], []), options.json);
135
+ if (!resolved.lint.ok)
136
+ process.exitCode = 1;
137
+ }
138
+ catch (error) {
139
+ reportWorkflowLintFailure(io, error, options.session, options.json);
140
+ }
141
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerLoopExportCommand(loop: Command, io: ProgramIO): void;
@@ -0,0 +1,73 @@
1
+ // src/cli/commands/loop-export-command.ts
2
+ //
3
+ // `peaks loop export` (M7, spec §7A.2) — export a loop_release as a
4
+ // `peaks.bundle/1` tarball, hard-blocked when the source has `shareable=false`.
5
+ // Extracted from `loop-commands.ts`; the registered name, description, options,
6
+ // refusal codes and envelope are unchanged.
7
+ import { existsSync, mkdirSync } from 'node:fs';
8
+ import { join } from 'node:path';
9
+ import { fail, getErrorMessage, ok } from 'peaks-loop-shared/result';
10
+ import { openStateDb } from '../../services/skillhub/sqlite-store.js';
11
+ import { BundleAssetNotFoundError, BundleNotShareableError, writeBundle } from '../../services/share/bundle-writer.js';
12
+ import { printResult } from '../cli-helpers.js';
13
+ import { LOOP_EXPORT_IMPORT_OPTS, resolveLoopProjectRoot } from './loop-command-shared.js';
14
+ export function registerLoopExportCommand(loop, io) {
15
+ LOOP_EXPORT_IMPORT_OPTS(loop
16
+ .command('export')
17
+ .description('M7: export a loop_release as a peaks.bundle/1 tarball (spec §7A.2 / §10 RL-9). Refuses to export when shareable=false.')
18
+ .requiredOption('--loop <id>', 'loop_release id (kebab-case)')
19
+ .requiredOption('--out <path>', 'output .tar.gz path')).action((options) => {
20
+ const asJson = options.json === true;
21
+ try {
22
+ const result = exportLoopBundle(options);
23
+ printResult(io, ok('loop.export', {
24
+ outPath: result.outPath,
25
+ kind: result.kind,
26
+ assetId: result.assetId,
27
+ importedAs: 'candidate'
28
+ }, [], [
29
+ `Receiver must run \`peaks loop import --in ${result.outPath}\` to land this bundle, then run an independent evolution_evaluation before any promote.`
30
+ ]), asJson);
31
+ }
32
+ catch (error) {
33
+ const refusal = exportRefusal(error, options.loop) ??
34
+ fail('loop.export', 'LOOP_EXPORT_FAILED', getErrorMessage(error), { ok: false, loop: options.loop }, ['Verify --loop id and --out path.']);
35
+ printResult(io, refusal, asJson);
36
+ process.exitCode = 1;
37
+ }
38
+ });
39
+ }
40
+ /** Open `<projectRoot>/.peaks/state.db` (creating `.peaks/`) and write the bundle. */
41
+ function exportLoopBundle(options) {
42
+ const projectRoot = resolveLoopProjectRoot(options.project);
43
+ if (!existsSync(join(projectRoot, '.peaks'))) {
44
+ mkdirSync(join(projectRoot, '.peaks'), { recursive: true });
45
+ }
46
+ const db = openStateDb(join(projectRoot, '.peaks', 'state.db'));
47
+ try {
48
+ return writeBundle({
49
+ db,
50
+ blobsDir: join(projectRoot, '.peaks', 'blobs'),
51
+ kind: 'loop',
52
+ id: options.loop,
53
+ outPath: options.out
54
+ });
55
+ }
56
+ finally {
57
+ db.close();
58
+ }
59
+ }
60
+ /** The two named refusals `writeBundle` raises, or `null` for anything else. */
61
+ function exportRefusal(error, loop) {
62
+ if (error instanceof BundleNotShareableError) {
63
+ return fail('loop.export', error.code, error.message, { ok: false, loop }, [
64
+ 'Set shareable=true on the loop_release row, or share via desktop_visible=false.'
65
+ ]);
66
+ }
67
+ if (error instanceof BundleAssetNotFoundError) {
68
+ return fail('loop.export', error.code, error.message, { ok: false, loop }, [
69
+ 'Verify the loop id with `peaks asset status --loop <id>`.'
70
+ ]);
71
+ }
72
+ return null;
73
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerLoopGoalComposeCommand(program: Command, io: ProgramIO): void;
@@ -0,0 +1,36 @@
1
+ // src/cli/commands/loop-goal-compose-command.ts
2
+ //
3
+ // `peaks goal compose` — registered as a TOP-LEVEL command (not under
4
+ // `peaks loop`) because IDE adapters expose it as `goalCommand` and the
5
+ // sub-agent dispatch path consumes it. Extracted from `loop-commands.ts`; the
6
+ // registered name, description, options and envelope are unchanged.
7
+ import { fail, ok } from 'peaks-loop-shared/result';
8
+ import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
9
+ const GOAL_COMPOSE_SUMMARY = 'goal.compose is a thin facade; the LLM-side UX layer decomposes the goal into sub-agent tasks.';
10
+ export function registerLoopGoalComposeCommand(program, io) {
11
+ addJsonOption(program
12
+ .command('goal')
13
+ .description('14.5: compose an autonomous goal (returns the goal envelope that the LLM-side UX layer feeds to peaks sub-agent dispatch)')
14
+ .requiredOption('--project <path>', 'target project root')
15
+ .requiredOption('--goal <text>', 'the high-level goal to compose')).action((options) => {
16
+ try {
17
+ printResult(io, ok('goal.compose', goalComposePayload(options), [], [GOAL_COMPOSE_SUMMARY]), options.json);
18
+ }
19
+ catch (error) {
20
+ printResult(io, fail('goal.compose', 'GOAL_COMPOSE_FAILED', getErrorMessage(error), { project: options.project, goal: options.goal }, ['Verify the project path and --goal value']), options.json);
21
+ process.exitCode = 1;
22
+ }
23
+ });
24
+ }
25
+ /** The placeholder body; the LLM-side UX layer decomposes `goal` into tasks. */
26
+ function goalComposePayload(options) {
27
+ return {
28
+ project: options.project,
29
+ goal: options.goal,
30
+ status: 'placeholder',
31
+ nextSteps: [
32
+ 'The composed goal is consumed by peaks sub-agent dispatch.',
33
+ 'The hermes + openclaw IDE adapters (Slice #0.7) surface this as a goalCommand.'
34
+ ]
35
+ };
36
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerLoopImportCommand(loop: Command, io: ProgramIO): void;
@@ -0,0 +1,86 @@
1
+ // src/cli/commands/loop-import-command.ts
2
+ //
3
+ // `peaks loop import` (M7, spec §7A.2) — extract a `peaks.bundle/1` tarball and
4
+ // land it as `candidate` only; promotion needs an evolution_evaluation row.
5
+ // Extracted from `loop-commands.ts`; the registered name, description, options,
6
+ // refusal codes and envelope are unchanged.
7
+ import { existsSync, mkdirSync } from 'node:fs';
8
+ import { join } from 'node:path';
9
+ import { fail, getErrorMessage, ok } from 'peaks-loop-shared/result';
10
+ import { openStateDb } from '../../services/skillhub/sqlite-store.js';
11
+ import { BundleImportToStableForbiddenError, BundleMajorVersionMismatchError, BundleMalformedError, BundleSchemaVersionsMismatchError, readBundle } from '../../services/share/bundle-reader.js';
12
+ import { printResult } from '../cli-helpers.js';
13
+ import { LOOP_EXPORT_IMPORT_OPTS, resolveLoopProjectRoot } from './loop-command-shared.js';
14
+ export function registerLoopImportCommand(loop, io) {
15
+ LOOP_EXPORT_IMPORT_OPTS(loop
16
+ .command('import')
17
+ .description('M7: import a peaks.bundle/1 tarball. Lands as candidate only — promotion requires an evolution_evaluation row (spec §7A.2 / §10 RL-9 / AC-25 / AC-26).')
18
+ .requiredOption('--in <path>', 'input .tar.gz path')
19
+ .option('--as <id>', 'optional rename for the loop id when landing')).action((options) => {
20
+ const asJson = options.json === true;
21
+ try {
22
+ const result = importLoopBundle(options);
23
+ printResult(io, ok('loop.import', {
24
+ assetId: result.assetId,
25
+ kind: result.kind,
26
+ importedAs: result.importedAs,
27
+ warnings: result.warnings,
28
+ evidenceBriefCount: result.evidenceBriefCount
29
+ }, result.warnings, [
30
+ 'Run an independent evaluation against this release before promoting; peaks loop promote refuses without an evolution_evaluation row.'
31
+ ]), asJson);
32
+ }
33
+ catch (error) {
34
+ const refusal = importRefusal(error, options.in) ??
35
+ fail('loop.import', 'LOOP_IMPORT_FAILED', getErrorMessage(error), { ok: false, inPath: options.in }, ['Verify the bundle path and integrity.']);
36
+ printResult(io, refusal, asJson);
37
+ process.exitCode = 1;
38
+ }
39
+ });
40
+ }
41
+ /** Open `<projectRoot>/.peaks/state.db` (creating `.peaks/`) and read the bundle in. */
42
+ function importLoopBundle(options) {
43
+ const projectRoot = resolveLoopProjectRoot(options.project);
44
+ if (!existsSync(join(projectRoot, '.peaks'))) {
45
+ mkdirSync(join(projectRoot, '.peaks'), { recursive: true });
46
+ }
47
+ const db = openStateDb(join(projectRoot, '.peaks', 'state.db'));
48
+ try {
49
+ return readBundle({
50
+ db,
51
+ blobsDir: join(projectRoot, '.peaks', 'blobs'),
52
+ inPath: options.in,
53
+ ...(options.as !== undefined ? { asName: options.as } : {})
54
+ });
55
+ }
56
+ finally {
57
+ db.close();
58
+ }
59
+ }
60
+ /**
61
+ * The four named bundle refusals, each with the action its reader earned, or
62
+ * `null` for anything else. The `data` each carries differs (`receivedMajor` on
63
+ * a version mismatch, `inPath` on a malformed bundle), so the branches are a
64
+ * flat guard chain rather than a table with a `data` callback.
65
+ */
66
+ function importRefusal(error, inPath) {
67
+ if (error instanceof BundleMajorVersionMismatchError) {
68
+ return fail('loop.import', error.code, error.message, { ok: false, receivedMajor: error.receivedMajor }, ['Use the matching peaks.bundle/<major> reader; this peaks build only supports major=1.']);
69
+ }
70
+ if (error instanceof BundleSchemaVersionsMismatchError) {
71
+ return fail('loop.import', error.code, error.message, { ok: false }, [
72
+ 'Source bundle did not declare the canonical schema versions; refuse the bundle.'
73
+ ]);
74
+ }
75
+ if (error instanceof BundleImportToStableForbiddenError) {
76
+ return fail('loop.import', error.code, error.message, { ok: false }, [
77
+ 'Bundles always land as candidate; promotion to stable requires an evolution_evaluation row (AC-26).'
78
+ ]);
79
+ }
80
+ if (error instanceof BundleMalformedError) {
81
+ return fail('loop.import', error.code, error.message, { ok: false, inPath }, [
82
+ 'Re-export from the source via `peaks loop export`.'
83
+ ]);
84
+ }
85
+ return null;
86
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerLoopPlaceholderCommands(loop: Command, io: ProgramIO): void;
@@ -0,0 +1,52 @@
1
+ // src/cli/commands/loop-placeholder-commands.ts
2
+ //
3
+ // `peaks loop preflight|detect-pattern|check-consistency` — the three 14.x
4
+ // placeholder facades. They differ only in their verb, the list of things the
5
+ // LLM-side UX layer should run instead, and the one-line note on the envelope;
6
+ // three copies of the same builder is what pushed `registerLoopCommands` past
7
+ // the per-function line cap. Extracted from `loop-commands.ts` as one table;
8
+ // every registered name, description, option and envelope is unchanged.
9
+ import { ok } from 'peaks-loop-shared/result';
10
+ import { addJsonOption, printResult } from '../cli-helpers.js';
11
+ const PLACEHOLDERS = [
12
+ {
13
+ verb: 'preflight',
14
+ command: 'loop.preflight',
15
+ description: '14.2: pre-run sanity checks (placeholder; future slice runs peaks doctor + peaks audit before each loop iter)',
16
+ nextSteps: [
17
+ 'For each L4 loop iteration, call peaks doctor + peaks audit to surface regressions.',
18
+ 'A future slice will inline the preflight checks (not just placeholder).'
19
+ ],
20
+ summary: 'loop.preflight is a thin facade; the LLM-side UX layer composes peaks doctor + peaks audit.'
21
+ },
22
+ {
23
+ verb: 'detect-pattern',
24
+ command: 'loop.detect-pattern',
25
+ description: '14.3: detect repeating patterns across past sessions (placeholder; future slice uses peaks retrospective search)',
26
+ nextSteps: [
27
+ 'Run peaks retrospective search --limit 50 to surface high-frequency patterns.',
28
+ 'A future slice will rank by frequency + LLM confidence.'
29
+ ],
30
+ summary: 'loop.detect-pattern is a thin facade; the LLM-side UX layer composes peaks retrospective search.'
31
+ },
32
+ {
33
+ verb: 'check-consistency',
34
+ command: 'loop.check-consistency',
35
+ description: '14.4: verify state consistency (placeholder; future slice compares .peaks/_runtime across sessions)',
36
+ nextSteps: [
37
+ 'Compare .peaks/_runtime/<sid>/session.json across recent sessions for drift.',
38
+ 'A future slice will report drift with severity (warn / fail).'
39
+ ],
40
+ summary: 'loop.check-consistency is a thin facade; the LLM-side UX layer composes the drift scan.'
41
+ }
42
+ ];
43
+ export function registerLoopPlaceholderCommands(loop, io) {
44
+ for (const spec of PLACEHOLDERS) {
45
+ addJsonOption(loop
46
+ .command(spec.verb)
47
+ .description(spec.description)
48
+ .requiredOption('--project <path>', 'target project root')).action((options) => {
49
+ printResult(io, ok(spec.command, { project: options.project, status: 'placeholder', nextSteps: [...spec.nextSteps] }, [], [spec.summary]), options.json);
50
+ });
51
+ }
52
+ }
@@ -0,0 +1,10 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ /** Absolute path of the MCP server's process entry. */
4
+ export declare function mcpServerEntryPath(): string;
5
+ /** The exact command this launcher will spawn, resolved without spawning it. */
6
+ export declare function mcpServeInvocation(entry?: string): {
7
+ command: string;
8
+ args: string[];
9
+ };
10
+ export declare function registerMcpCommands(program: Command, io: ProgramIO): void;
@@ -0,0 +1,157 @@
1
+ // src/cli/commands/mcp-commands.ts
2
+ //
3
+ // `peaks mcp` — the command family around the read-only MCP surface. This slice
4
+ // delivers `serve`; `install` / `uninstall` / `status` are the distribution
5
+ // slice's (spec §12, segment ③).
6
+ //
7
+ // WHY THIS FILE DOES NOT IMPORT THE SERVER. The design's load-bearing invariant
8
+ // is that `src/services/mcp/` is a DELETABLE PIPE (spec §1): remove it and the
9
+ // CLI is unchanged, the interceptor is unchanged, and a harness that used MCP
10
+ // simply falls back to Bash. That invariant is an assertion about import edges,
11
+ // and it is enforced by `tests/unit/standards/no-mcp-source-import.test.ts` —
12
+ // which reports an edge from any module outside the MCP root, this file
13
+ // included. So the server is reached the way the design says a server is
14
+ // reached: as a PROCESS, by path.
15
+ //
16
+ // The path is computed here rather than asked for, because asking would be the
17
+ // import. `SOURCE_TREE` / `TREE_DIR` are the same two facts every other
18
+ // self-spawn in this tree derives the same way (see `daemon-supervisor.ts`):
19
+ // this file's own extension says which tree it was loaded from, and its own
20
+ // directory says where that tree is.
21
+ import { spawn } from 'node:child_process';
22
+ import { dirname, extname, join, resolve } from 'node:path';
23
+ import { fileURLToPath } from 'node:url';
24
+ import { installMcpForAdapter, resolveMcpServerArgv, spawnMcpInstallRunner, uninstallMcpForAdapter } from '../../services/distribution/mcp-install.js';
25
+ import { detectIdeFromContext } from '../../services/ide/hook-translator.js';
26
+ import { resolveIdeOptionHelp, tryGetAdapter } from '../../services/ide/ide-registry.js';
27
+ import { interpreterArgs } from '../../services/web/daemon-supervisor.js';
28
+ import { printResult } from '../cli-helpers.js';
29
+ import { fail, ok } from 'peaks-loop-shared/result';
30
+ /** This file's directory — `<root>/src/cli/commands` or `<root>/dist/cli/commands`. */
31
+ const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
32
+ /** `<root>/src` or `<root>/dist`. */
33
+ const TREE_DIR = resolve(MODULE_DIR, '..', '..');
34
+ /** Compiled trees run `.js` under node; the source tree is TypeScript. */
35
+ const SOURCE_TREE = extname(fileURLToPath(import.meta.url)) === '.ts';
36
+ /** Absolute path of the MCP server's process entry. */
37
+ export function mcpServerEntryPath() {
38
+ return join(TREE_DIR, 'services', 'mcp', SOURCE_TREE ? 'server-main.ts' : 'server-main.js');
39
+ }
40
+ /** The exact command this launcher will spawn, resolved without spawning it. */
41
+ export function mcpServeInvocation(entry = mcpServerEntryPath()) {
42
+ return { command: process.execPath, args: interpreterArgs(entry) };
43
+ }
44
+ /**
45
+ * Hand the process over to the MCP server: the child inherits all three standard
46
+ * streams, so the harness's stdin/stdout pipe IS the server's pipe and this
47
+ * process adds a frame of indirection and nothing else.
48
+ */
49
+ function runMcpServe(io, options) {
50
+ const invocation = mcpServeInvocation();
51
+ const child = spawn(invocation.command, invocation.args, {
52
+ stdio: 'inherit',
53
+ cwd: options.project ?? process.cwd(),
54
+ // Windows contract: a spawned child must not allocate a console window.
55
+ windowsHide: true
56
+ });
57
+ child.on('error', (error) => {
58
+ printResult(io, fail('mcp.serve', 'MCP_SERVE_SPAWN_FAILED', `Could not start the MCP server: ${error.message}`, {
59
+ entry: invocation.args.at(-1) ?? ''
60
+ }, ['Check that the build is present, or run `pnpm build`']), options.json === true);
61
+ process.exitCode = 1;
62
+ });
63
+ child.on('exit', (code, signal) => {
64
+ // The child's status IS this command's status — an MCP client reads the
65
+ // server's exit, so masking it would be the only lie this launcher told.
66
+ if (signal !== null) {
67
+ process.exitCode = 1;
68
+ return;
69
+ }
70
+ process.exitCode = code ?? 0;
71
+ });
72
+ }
73
+ export function registerMcpCommands(program, io) {
74
+ const mcp = program
75
+ .command('mcp')
76
+ .description('Serve peaks-loop read-only capabilities over MCP (stdio)');
77
+ mcp
78
+ .command('serve')
79
+ .description('Run the read-only MCP server on stdio until the caller closes it')
80
+ .option('--project <path>', 'project the server runs the CLI in (default: current directory)')
81
+ .action((options) => {
82
+ runMcpServe(io, options);
83
+ });
84
+ registerMcpRegistrationCommands(mcp, io);
85
+ }
86
+ function resolveTargetAdapter(options) {
87
+ const ide = options.ide !== undefined && options.ide.length > 0
88
+ ? options.ide
89
+ : detectIdeFromContext({ env: process.env, cwd: process.cwd(), parsedStdin: null });
90
+ const adapter = tryGetAdapter(ide);
91
+ return adapter === undefined ? { kind: 'unsupported', ide } : { kind: 'adapter', adapter };
92
+ }
93
+ /** One envelope line per adapter: what was registered, or why nothing was. */
94
+ function reportRegistration(result, verb) {
95
+ if (result.skipped) {
96
+ return `${result.ideId}: skipped — ${result.reason}`;
97
+ }
98
+ const { report } = result;
99
+ return `${result.ideId}: ${verb} ${report.ok ? 'ok' : 'FAILED'} — ${report.detail}`;
100
+ }
101
+ /** The `data` BOTH envelopes carry, so the failure path is never a thinner shape. */
102
+ function registrationEnvelopeData(result, verb) {
103
+ return {
104
+ ide: result.ideId,
105
+ skipped: result.skipped,
106
+ summary: reportRegistration(result, verb),
107
+ registration: result
108
+ };
109
+ }
110
+ function runMcpRegistration(io, verb, options) {
111
+ const target = resolveTargetAdapter(options);
112
+ if (target.kind === 'unsupported') {
113
+ printResult(io, fail(`mcp.${verb}`, 'MCP_HARNESS_UNSUPPORTED', `No adapter is registered for harness '${target.ide}'.`, { ide: target.ide }, ['Pass --ide with a registered adapter id']), options.json === true);
114
+ process.exitCode = 1;
115
+ return;
116
+ }
117
+ const { adapter } = target;
118
+ const serverArgv = resolveMcpServerArgv();
119
+ const result = verb === 'install'
120
+ ? installMcpForAdapter(adapter, serverArgv, spawnMcpInstallRunner)
121
+ : uninstallMcpForAdapter(adapter, serverArgv, spawnMcpInstallRunner);
122
+ const report = result.skipped ? undefined : result.report;
123
+ if (report !== undefined && !report.ok) {
124
+ printResult(io, fail(`mcp.${verb}`, 'MCP_REGISTRATION_FAILED', report.detail, registrationEnvelopeData(result, verb), ['Run the harness command by hand to see its own error']), options.json === true);
125
+ process.exitCode = 1;
126
+ return;
127
+ }
128
+ printResult(io, ok(`mcp.${verb}`, registrationEnvelopeData(result, verb)), options.json === true);
129
+ }
130
+ /**
131
+ * `peaks mcp install` / `peaks mcp uninstall` — the distribution half of the MCP
132
+ * surface, and an explicit pair on purpose (spec §8.3 Q19): an uninstall that
133
+ * only ran from a package manager's hook is skipped whenever the manager decides
134
+ * to skip it, and the leftover registration then makes the NEXT install fail on
135
+ * a duplicate. Neither command starts a process; they register one.
136
+ */
137
+ function registerMcpRegistrationCommands(mcp, io) {
138
+ mcp
139
+ .command('install')
140
+ .description('Register the peaks MCP server with the detected harness. Removes the name ' +
141
+ 'from every declared scope first, because the harness registers non-idempotently. ' +
142
+ 'A harness whose adapter declares no registration entry is skipped, not failed.')
143
+ .option('--ide <id>', resolveIdeOptionHelp())
144
+ .option('--json', 'JSON envelope output')
145
+ .action((options) => {
146
+ runMcpRegistration(io, 'install', options);
147
+ });
148
+ mcp
149
+ .command('uninstall')
150
+ .description('Remove the peaks MCP registration from the harness, sweeping every scope it ' +
151
+ 'may hold. Explicit, because no package-manager hook is relied on.')
152
+ .option('--ide <id>', resolveIdeOptionHelp())
153
+ .option('--json', 'JSON envelope output')
154
+ .action((options) => {
155
+ runMcpRegistration(io, 'uninstall', options);
156
+ });
157
+ }