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,41 @@
1
+ import { fail } from 'peaks-loop-shared/result';
2
+ import { addJsonOption, printResult } from '../cli-helpers.js';
3
+ import { getCurrentSessionId } from '../../services/skills/skill-presence-service.js';
4
+ import { buildCostCheckEnvelope, runKarpathyCostCheck } from '../../services/karpathy-cost/karpathy-cost-check-service.js';
5
+ import { read24hState } from '../../services/24h-mode/store.js';
6
+ import { asJson, failResult, projectRoot } from './job-command-shared.js';
7
+ import { SESSION_ID_HELP } from './job-state-root.js';
8
+ const COST_CHECK_DESCRIPTION = "Read the slice's rd/karpathy-review.md and decide whether to downgrade a block gateAction to warn (slice 2026-07-30-karpathy-cost-self-review).";
9
+ const COST_CHECK_REVIEW_FILE_HELP = 'path to rd/karpathy-review.md (or its .json sibling if the file is JSON)';
10
+ function runJobCostCheck(opts, io) {
11
+ const project = projectRoot(opts);
12
+ const sessionId = opts.sessionId ?? process.env.PEAKS_SESSION_ID ?? getCurrentSessionId(project);
13
+ if (!sessionId) {
14
+ return failResult(io, fail('karpathy-cost-check', 'NO_ACTIVE_SESSION', 'karpathy-cost-check requires --session-id (or an active peaks-code session)', { project }, [
15
+ 'Re-run with --session-id <sid>',
16
+ 'Or run `peaks workspace init` to create a session first'
17
+ ]), opts);
18
+ }
19
+ const is24hModeActive = () => {
20
+ try {
21
+ const snapshot = read24hState(project, sessionId);
22
+ return snapshot.state === '24H_ACTIVE';
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ };
28
+ const out = runKarpathyCostCheck({
29
+ reviewFilePath: opts.reviewFile,
30
+ is24hModeActive
31
+ });
32
+ printResult(io, buildCostCheckEnvelope(out), asJson(opts));
33
+ }
34
+ export function registerJobCostCheckCommand(job, io) {
35
+ addJsonOption(job
36
+ .command('karpathy-cost-check')
37
+ .description(COST_CHECK_DESCRIPTION)
38
+ .requiredOption('--review-file <path>', COST_CHECK_REVIEW_FILE_HELP)
39
+ .option('--project <repo>')
40
+ .option('--session-id <sid>', SESSION_ID_HELP)).action((opts) => runJobCostCheck(opts, io));
41
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerJobInitStatusCommands(job: Command, io: ProgramIO): void;
@@ -0,0 +1,149 @@
1
+ import { ok, fail } from 'peaks-loop-shared/result';
2
+ import { addJsonOption, printResult } from '../cli-helpers.js';
3
+ import { JobStateStore } from '../../services/job/job-state-store.js';
4
+ import { JobOrchestrator } from '../../services/job/job-orchestrator.js';
5
+ import { emitJobEvent } from '../../services/job/job-event-emitter.js';
6
+ import { JobInitInputSchema } from '../../services/job/job-types.js';
7
+ import { getCurrentSessionId } from '../../services/skills/skill-presence-service.js';
8
+ import { asJson, failResult, projectRoot } from './job-command-shared.js';
9
+ import { SESSION_ID_HELP, resolveJobStateRoot } from './job-state-root.js';
10
+ /**
11
+ * `job init` resolves its own session id (the schema needs it before the state
12
+ * root exists), so it repeats the D6 precedence rather than reusing
13
+ * `resolveJobStateRoot`.
14
+ */
15
+ function resolveInitSessionId(opts, project) {
16
+ return opts.sessionId ?? process.env.PEAKS_SESSION_ID ?? getCurrentSessionId(project);
17
+ }
18
+ /**
19
+ * ADVISORY (F1, 2026-09-17) — deliberately exits 0. Event emission is a
20
+ * telemetry side effect; a failed emit does not mean `job init` failed (the
21
+ * state file was already written). This catch must NOT be routed through
22
+ * `failResult`. Pinned by the "advisory stays 0" control in
23
+ * tests/unit/cli/job-exit-code.test.ts.
24
+ */
25
+ function emitJobStarted(state) {
26
+ try {
27
+ emitJobEvent({
28
+ kind: 'job-started',
29
+ jobId: state.jobId,
30
+ total: state.slices.length,
31
+ strategy: state.mainLoopStrategy
32
+ });
33
+ }
34
+ catch (e) {
35
+ void e;
36
+ }
37
+ }
38
+ function failInitNoActiveSession(io, opts, project) {
39
+ failResult(io, fail('init', 'NO_ACTIVE_SESSION', 'peaks job init requires --session-id (or an active peaks-code session via peaks workspace init)', { project }, ['Re-run with --session-id <sid>', 'Or run `peaks workspace init` to create a session first']), opts);
40
+ }
41
+ function parseJobInitInput(opts, sessionId, project) {
42
+ return JobInitInputSchema.safeParse({
43
+ jobId: opts.jobId,
44
+ sessionId,
45
+ sliceList: opts.sliceList
46
+ .split(',')
47
+ .map((s) => s.trim())
48
+ .filter(Boolean),
49
+ parallelismHint: opts.parallelismHint,
50
+ exitPolicy: opts.exitPolicy,
51
+ mainLoopStrategy: opts.mainLoopStrategy,
52
+ rotateEvery: Number(opts.rotateEvery),
53
+ project,
54
+ json: opts.json
55
+ });
56
+ }
57
+ function runJobInit(opts, io) {
58
+ const project = projectRoot(opts);
59
+ // Resolve sessionId: explicit flag > PEAKS_SESSION_ID > caller-first session binding
60
+ // (this caller's binding, else the project-global session.json) > FAIL.
61
+ // Per spec §3.3, Job state lives at .peaks/_runtime/<sessionId>/job/<jobId>/state.json —
62
+ // a random UUID would scatter state across dirs and break resume/auto-compact.
63
+ let sessionId = resolveInitSessionId(opts, project);
64
+ if (!sessionId) {
65
+ failInitNoActiveSession(io, opts, project);
66
+ return;
67
+ }
68
+ const parsed = parseJobInitInput(opts, sessionId, project);
69
+ if (!parsed.success)
70
+ return failResult(io, fail('init', 'INVALID_INIT', parsed.error.message, {}), opts);
71
+ const jobRoot = resolveJobStateRoot(opts);
72
+ const store = new JobStateStore(jobRoot.rootDir);
73
+ const orch = new JobOrchestrator(store);
74
+ const state = orch.init({
75
+ jobId: parsed.data.jobId,
76
+ sessionId: parsed.data.sessionId,
77
+ sliceList: parsed.data.sliceList,
78
+ parallelismHint: parsed.data.parallelismHint,
79
+ exitPolicy: parsed.data.exitPolicy,
80
+ mainLoopStrategy: parsed.data.mainLoopStrategy,
81
+ rotateEvery: parsed.data.rotateEvery
82
+ });
83
+ emitJobStarted(state);
84
+ printResult(io, ok('init', {
85
+ jobId: state.jobId,
86
+ sliceCount: state.slices.length,
87
+ statePath: `${jobRoot.rootDir}/${state.jobId}/state.json`
88
+ }), asJson(opts));
89
+ }
90
+ function runJobStatus(opts, io) {
91
+ const store = new JobStateStore(resolveJobStateRoot(opts, opts.jobId).rootDir);
92
+ const orch = new JobOrchestrator(store);
93
+ const s = orch.status(opts.jobId);
94
+ if (opts.watch) {
95
+ const draw = () => {
96
+ const bar = `[${'='.repeat(s.done)}${' '.repeat(s.total - s.done)}]`;
97
+ process.stdout.write(`\rjob ${opts.jobId}: ${bar} ${s.done}/${s.total}${s.currentSlice ? ` next=${s.currentSlice}` : ''} `);
98
+ };
99
+ draw();
100
+ const iv = setInterval(() => {
101
+ const u = orch.status(opts.jobId);
102
+ Object.assign(s, u);
103
+ draw();
104
+ if (u.done + u.failed + u.skipped + u.blocked >= u.total)
105
+ clearInterval(iv);
106
+ }, 3000);
107
+ process.on('SIGINT', () => {
108
+ clearInterval(iv);
109
+ process.stdout.write('\n');
110
+ process.exit(0);
111
+ });
112
+ return;
113
+ }
114
+ try {
115
+ emitJobEvent({
116
+ kind: 'job-progress',
117
+ jobId: opts.jobId,
118
+ done: s.done,
119
+ total: s.total,
120
+ ...(s.currentSlice ? { currentSlice: s.currentSlice } : {})
121
+ });
122
+ }
123
+ catch (e) {
124
+ // ADVISORY (F1, 2026-09-17) — deliberately exits 0. The status itself
125
+ // was already read successfully; the emit is telemetry. Same rule as
126
+ // the `job init` catch above: do NOT route through `failResult`.
127
+ void e;
128
+ }
129
+ printResult(io, ok('status', s), asJson(opts));
130
+ }
131
+ export function registerJobInitStatusCommands(job, io) {
132
+ addJsonOption(job
133
+ .command('init')
134
+ .requiredOption('--job-id <jid>')
135
+ .requiredOption('--slice-list <list>')
136
+ .option('--parallelism-hint <serial|llm-decides>', 'llm-decides')
137
+ .option('--exit-policy <strict|best-effort>', 'strict')
138
+ .option('--main-loop-strategy <single|rotating>', 'rotating')
139
+ .option('--rotate-every <n>', 'rotate every N slices (rotating mode)', '3')
140
+ .option('--session-id <sid>', SESSION_ID_HELP)
141
+ .option('--project <repo>')).action((opts) => runJobInit(opts, io));
142
+ addJsonOption(job
143
+ .command('status')
144
+ .requiredOption('--job-id <jid>')
145
+ .option('--watch', 'poll every 3s')
146
+ .option('--show-cost', 'overlay cost from peaks budget')
147
+ .option('--session-id <sid>', SESSION_ID_HELP)
148
+ .option('--project <repo>')).action((opts) => runJobStatus(opts, io));
149
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerJobRunCommands(job: Command, io: ProgramIO): void;
@@ -0,0 +1,97 @@
1
+ import { ok, fail } from 'peaks-loop-shared/result';
2
+ import { addJsonOption, printResult } from '../cli-helpers.js';
3
+ import { JobStateStore } from '../../services/job/job-state-store.js';
4
+ import { JobOrchestrator } from '../../services/job/job-orchestrator.js';
5
+ import { readJobProgress, tryReadJobProgress, describeNextSlice } from '../../services/job/job-progress-store.js';
6
+ import { asJson, failResult, projectRoot } from './job-command-shared.js';
7
+ import { SESSION_ID_HELP, resolveJobStateRoot } from './job-state-root.js';
8
+ const PROGRESS_DESCRIPTION = 'v3.1.2: read the on-disk slice progress mirror (.peaks/_runtime/<sid>/job/<jid>/progress.json). ' +
9
+ 'Returns { jobId, done, total, currentSlice, lastCommitSha, updatedAt }.';
10
+ // "return done=0/total=0 envelope instead of failing when progress.json is
11
+ // absent". No code path has ever returned such an envelope — the option was
12
+ // born in `d9a1a098` with `process.exitCode = 1` on the same branch — so it
13
+ // described a contract that never existed, and `--allow-missing` appeared to
14
+ // be broken. It is not: its job is to pick WHICH structured code reports the
15
+ // absence. The help text was the side that was wrong; it now says what the
16
+ // flag does. See `rd/requests/013-…-exit-code-root-cause.md` for why the
17
+ // alternative reading was rejected (the literal promise is also
18
+ // unimplementable without a new absent-vs-corrupt distinction:
19
+ // `tryReadJobProgress` returns `null` for a corrupt file too, so "done=0"
20
+ // there would report unreadable state as empty state).
21
+ const PROGRESS_ALLOW_MISSING_HELP = 'report an absent progress.json as NO_PROGRESS (expected absence) rather than PROGRESS_READ_FAILED (read error); the command still exits non-zero';
22
+ function runJobContinue(opts, io) {
23
+ const store = new JobStateStore(resolveJobStateRoot(opts, opts.jobId).rootDir);
24
+ const orch = new JobOrchestrator(store);
25
+ const r = orch.continueNow(opts.jobId);
26
+ printResult(io, ok('continue', r), asJson(opts));
27
+ }
28
+ function runJobResume(opts, io) {
29
+ const store = new JobStateStore(resolveJobStateRoot(opts, opts.jobId).rootDir);
30
+ const orch = new JobOrchestrator(store);
31
+ const s = orch.status(opts.jobId);
32
+ printResult(io, ok('resume', { resumed: opts.jobId, ...s }), asJson(opts));
33
+ }
34
+ // v3.1.2: read the on-disk slice progress mirror written by `peaks job
35
+ // checkpoint --state done`; gate-step-08 and Step 0.7 (resume) read it too. The
36
+ // `next:` sentence comes from describeNextSlice, never re-derived from state.json.
37
+ function runJobProgress(opts, io) {
38
+ try {
39
+ const jobRoot = resolveJobStateRoot(opts, opts.jobId);
40
+ const sessId = jobRoot.sessionId;
41
+ const project = projectRoot(opts);
42
+ const progress = opts.allowMissing === true
43
+ ? tryReadJobProgress(project, sessId, opts.jobId)
44
+ : readJobProgress(project, sessId, opts.jobId);
45
+ if (progress === null) {
46
+ // F1: this site already set `process.exitCode = 1` by hand; it is
47
+ // routed through `failResult` so all nine failure sites in this file
48
+ // share one rule instead of this one being the lone precedent.
49
+ failResult(io, fail('progress', 'NO_PROGRESS', `No progress.json for job ${opts.jobId} at .peaks/_runtime/${sessId}/job/${opts.jobId}/progress.json`, { jobId: opts.jobId, sessionId: sessId }, [
50
+ 'Run `peaks job checkpoint --state done ...` at least once to seed progress.json.',
51
+ // return a zero-progress envelope." That line could only ever be
52
+ // printed when `--allow-missing` had ALREADY been passed — this
53
+ // `progress === null` branch is unreachable otherwise, because the
54
+ // no-flag path throws into the catch below and reports
55
+ // PROGRESS_READ_FAILED. So the CLI was advising the caller to pass
56
+ // the flag they had just passed, to obtain an envelope that does
57
+ // not exist. Replaced with the fact the caller actually needs.
58
+ '--allow-missing selects this NO_PROGRESS envelope over a PROGRESS_READ_FAILED read error; it does not change the exit code.'
59
+ ]), opts);
60
+ return;
61
+ }
62
+ printResult(io, ok('progress', progress, [], [`Next: ${describeNextSlice(progress, progress.jobId)}`]), asJson(opts));
63
+ }
64
+ catch (err) {
65
+ failResult(io, fail('progress', 'PROGRESS_READ_FAILED', err instanceof Error ? err.message : String(err), { jobId: opts.jobId }, ['Verify the job id and try again']), opts);
66
+ }
67
+ }
68
+ function runJobHandoff(opts, io) {
69
+ const store = new JobStateStore(resolveJobStateRoot(opts, opts.jobId).rootDir);
70
+ const orch = new JobOrchestrator(store);
71
+ const s = orch.status(opts.jobId);
72
+ printResult(io, ok('handoff', { handoffFor: opts.jobId, ...s }), asJson(opts));
73
+ }
74
+ export function registerJobRunCommands(job, io) {
75
+ addJsonOption(job
76
+ .command('continue')
77
+ .requiredOption('--job-id <jid>')
78
+ .option('--session-id <sid>', SESSION_ID_HELP)
79
+ .option('--project <repo>')).action((opts) => runJobContinue(opts, io));
80
+ addJsonOption(job
81
+ .command('resume')
82
+ .requiredOption('--job-id <jid>')
83
+ .option('--session-id <sid>', SESSION_ID_HELP)
84
+ .option('--project <repo>')).action((opts) => runJobResume(opts, io));
85
+ addJsonOption(job
86
+ .command('progress')
87
+ .description(PROGRESS_DESCRIPTION)
88
+ .requiredOption('--job-id <jid>')
89
+ .option('--session-id <sid>', SESSION_ID_HELP)
90
+ .option('--project <repo>')
91
+ .option('--allow-missing', PROGRESS_ALLOW_MISSING_HELP)).action((opts) => runJobProgress(opts, io));
92
+ addJsonOption(job
93
+ .command('handoff')
94
+ .requiredOption('--job-id <jid>')
95
+ .option('--session-id <sid>', SESSION_ID_HELP)
96
+ .option('--project <repo>')).action((opts) => runJobHandoff(opts, io));
97
+ }
@@ -0,0 +1,35 @@
1
+ import { type JobRootOpts } from './job-command-shared.js';
2
+ /**
3
+ * D6: every job subcommand resolves a job root, so every one of them must be
4
+ * able to name the session that holds the job. Same precedence as the rest of
5
+ * the CLI (`peaks sub-agent dispatch`, `peaks web *`, `peaks share *`), except
6
+ * that job state has no "unknown-sid" location to land in — an unresolvable
7
+ * session is an error, not a silent fallback.
8
+ */
9
+ export declare const SESSION_ID_HELP = "session id (default: resolve from .peaks/_runtime/session.json; falls back to PEAKS_SESSION_ID env var; final fallback: NO_ACTIVE_SESSION error)";
10
+ /**
11
+ * Resolves the on-disk root for Job state files.
12
+ *
13
+ * Per spec §3.3 + §4.5 (2.7.1 single-scope-axis layout), Job state lives at:
14
+ * `<projectRoot>/.peaks/_runtime/<sessionId>/job/<jobId>/state.json`
15
+ *
16
+ * The `JobStateStore` itself only knows its `rootDir` + `jobId` and joins them. We
17
+ * compute the canonical root here (per-call) so the store can stay layout-agnostic.
18
+ *
19
+ * Resolution order (D6 — a job must stay addressable while the single per-project
20
+ * `.peaks/_runtime/session.json` binding points at another session):
21
+ * 1. `--session-id` flag (explicit override)
22
+ * 2. `PEAKS_SESSION_ID` env var
23
+ * 3. `getCurrentSessionId(project)` — this caller's session binding, falling back
24
+ * to `.peaks/_runtime/session.json` when no caller binding is resolvable
25
+ * 4. Error (NO_ACTIVE_SESSION) — must never silently fall back to a random uuid
26
+ *
27
+ * When `jobId` is passed and it is absent from the resolved session, the thrown
28
+ * error names the session that does hold it (if any), instead of leaving the
29
+ * caller with a bare "no state for <job> at <other-sid>" path.
30
+ */
31
+ export declare function resolveJobStateRoot(opts: JobRootOpts, jobId?: string): {
32
+ rootDir: string;
33
+ sessionId: string;
34
+ projectRoot: string;
35
+ };
@@ -0,0 +1,76 @@
1
+ // Split out of `job-commands.ts`: the D6
2
+ // session-id resolution every `job` subcommand runs before it can address
3
+ // `<project>/.peaks/_runtime/<sessionId>/job/<jobId>/state.json`.
4
+ import { existsSync, readdirSync } from 'node:fs';
5
+ import { join } from 'node:path';
6
+ import { isUnsafePathInput } from '../../shared/path-safety.js';
7
+ import { getCurrentSessionId } from '../../services/skills/skill-presence-service.js';
8
+ import { projectRoot } from './job-command-shared.js';
9
+ /**
10
+ * D6: every job subcommand resolves a job root, so every one of them must be
11
+ * able to name the session that holds the job. Same precedence as the rest of
12
+ * the CLI (`peaks sub-agent dispatch`, `peaks web *`, `peaks share *`), except
13
+ * that job state has no "unknown-sid" location to land in — an unresolvable
14
+ * session is an error, not a silent fallback.
15
+ */
16
+ export const SESSION_ID_HELP = 'session id (default: resolve from .peaks/_runtime/session.json; falls back to PEAKS_SESSION_ID env var; final fallback: NO_ACTIVE_SESSION error)';
17
+ /**
18
+ * The session (a direct child of `<project>/.peaks/_runtime/`) that holds
19
+ * `jobId`, or null. Only used to explain a miss: a job that lives in another
20
+ * session must be reported by name so the caller can re-run with --session-id.
21
+ */
22
+ function findSessionHoldingJob(project, jobId) {
23
+ const runtimeDir = join(project, '.peaks', '_runtime');
24
+ if (!existsSync(runtimeDir))
25
+ return null;
26
+ for (const entry of readdirSync(runtimeDir, { withFileTypes: true })) {
27
+ if (entry.isDirectory() &&
28
+ existsSync(join(runtimeDir, entry.name, 'job', jobId, 'state.json'))) {
29
+ return entry.name;
30
+ }
31
+ }
32
+ return null;
33
+ }
34
+ /**
35
+ * Resolves the on-disk root for Job state files.
36
+ *
37
+ * Per spec §3.3 + §4.5 (2.7.1 single-scope-axis layout), Job state lives at:
38
+ * `<projectRoot>/.peaks/_runtime/<sessionId>/job/<jobId>/state.json`
39
+ *
40
+ * The `JobStateStore` itself only knows its `rootDir` + `jobId` and joins them. We
41
+ * compute the canonical root here (per-call) so the store can stay layout-agnostic.
42
+ *
43
+ * Resolution order (D6 — a job must stay addressable while the single per-project
44
+ * `.peaks/_runtime/session.json` binding points at another session):
45
+ * 1. `--session-id` flag (explicit override)
46
+ * 2. `PEAKS_SESSION_ID` env var
47
+ * 3. `getCurrentSessionId(project)` — this caller's session binding, falling back
48
+ * to `.peaks/_runtime/session.json` when no caller binding is resolvable
49
+ * 4. Error (NO_ACTIVE_SESSION) — must never silently fall back to a random uuid
50
+ *
51
+ * When `jobId` is passed and it is absent from the resolved session, the thrown
52
+ * error names the session that does hold it (if any), instead of leaving the
53
+ * caller with a bare "no state for <job> at <other-sid>" path.
54
+ */
55
+ export function resolveJobStateRoot(opts, jobId) {
56
+ const project = projectRoot(opts);
57
+ const sessionId = opts.sessionId ?? process.env.PEAKS_SESSION_ID ?? getCurrentSessionId(project);
58
+ if (!sessionId) {
59
+ throw new Error('NO_ACTIVE_SESSION: peaks job requires --session-id or an active peaks-code session via peaks workspace init');
60
+ }
61
+ // Sid axis — the sibling of the jobId guard in `JobStateStore.jobDir`. A
62
+ // caller-supplied `--session-id` reaches this join unmodified, so a
63
+ // traversal value lands `job/<id>/state.json` outside every project root
64
+ // while the envelope still reads `ok: true`.
65
+ if (isUnsafePathInput(sessionId)) {
66
+ throw new Error(`Invalid session id: ${sessionId} (must be a single path segment)`);
67
+ }
68
+ const rootDir = join(project, '.peaks', '_runtime', sessionId, 'job');
69
+ if (jobId && !existsSync(join(rootDir, jobId, 'state.json'))) {
70
+ const other = findSessionHoldingJob(project, jobId);
71
+ throw new Error(other
72
+ ? `JOB_NOT_IN_SESSION: no job "${jobId}" in session "${sessionId}"; it lives in session "${other}" — re-run with --session-id ${other}`
73
+ : `JOB_NOT_IN_SESSION: no job "${jobId}" in session "${sessionId}" (and no other session under .peaks/_runtime/ has it)`);
74
+ }
75
+ return { rootDir, sessionId, projectRoot: project };
76
+ }
@@ -0,0 +1,31 @@
1
+ import type { Command } from 'commander';
2
+ export type GoalComposeOptions = {
3
+ project: string;
4
+ goal: string;
5
+ json?: boolean;
6
+ };
7
+ export type LoopDistillOptions = {
8
+ project: string;
9
+ apply: boolean;
10
+ json?: boolean;
11
+ };
12
+ export type LoopPlaceholderOptions = {
13
+ project: string;
14
+ json?: boolean;
15
+ };
16
+ export type LoopExportOptions = {
17
+ loop: string;
18
+ out: string;
19
+ project?: string;
20
+ json?: boolean;
21
+ };
22
+ export type LoopImportOptions = {
23
+ in: string;
24
+ as?: string;
25
+ project?: string;
26
+ json?: boolean;
27
+ };
28
+ /** `--project`, else the nearest project root above cwd, else cwd. */
29
+ export declare function resolveLoopProjectRoot(project: string | undefined): string;
30
+ /** `--project` + `--json`, the option chain `loop export` and `loop import` share. */
31
+ export declare const LOOP_EXPORT_IMPORT_OPTS: (cmd: Command) => Command;
@@ -0,0 +1,15 @@
1
+ // src/cli/commands/loop-command-shared.ts
2
+ //
3
+ // What the `peaks loop` verbs share: the option types, the `--project` /
4
+ // `--json` chain `export` and `import` both declare, and the project-root
5
+ // resolution. Split out of `loop-commands.ts` so the bundle verbs can live in
6
+ // their own modules without repeating the same eight-line construction.
7
+ import { findProjectRoot } from '../../services/config/config-safety.js';
8
+ /** `--project`, else the nearest project root above cwd, else cwd. */
9
+ export function resolveLoopProjectRoot(project) {
10
+ return project ?? findProjectRoot(process.cwd()) ?? process.cwd();
11
+ }
12
+ /** `--project` + `--json`, the option chain `loop export` and `loop import` share. */
13
+ export const LOOP_EXPORT_IMPORT_OPTS = (cmd) => cmd
14
+ .option('--project <path>', 'target project root (defaults to cwd)')
15
+ .option('--json', 'print machine-readable JSON envelope');
@@ -1,26 +1,21 @@
1
1
  /**
2
2
  * peaks loop * CLI (Slice #14 + M7 add).
3
3
  *
4
- * Slices:
5
4
  * #14 sub-features (L4 Agent Loop integration): distill / preflight /
6
- * detect-pattern / check-consistency / peaks goal compose.
5
+ * detect-pattern / check-consistency, plus `peaks goal compose`.
7
6
  *
8
- * M7 (2026-07-07 spec §7A.2):
9
- * peaks loop export --loop <id> --out <path.tar.gz>
10
- * peaks loop import --in <path.tar.gz> [--as <loop-id>]
7
+ * M7 (2026-07-07 spec §7A.2): `peaks loop export --loop <id> --out <p.tar.gz>`
8
+ * and `peaks loop import --in <p.tar.gz> [--as <loop-id>]`. `export` reads
9
+ * the loop_release + relations + bees + evidence briefs and hard-blocks on
10
+ * `shareable=false`; `import` validates `format_version_major=1` and lands
11
+ * the release as `candidate` (spec §7A.2) — the receiver must run an
12
+ * independent evaluation before promoting to `stable`. M7 only ADDs these
13
+ * two verbs; the existing 14.x surface is not modified.
11
14
  *
12
- * `peaks loop export` reads the source loop_release + relations +
13
- * related bees + evidence briefs and emits a `peaks.bundle/1`
14
- * tar.gz. Hard-blocks when the source has `shareable=false`.
15
- *
16
- * `peaks loop import` extracts a bundle, validates
17
- * format_version_major=1, and lands the release as `candidate`
18
- * (mandatory landing status per spec §7A.2). The receiver must run
19
- * an independent evaluation before promoting to `stable`.
20
- *
21
- * The existing 14.x commands are kept under the same `loop` parent;
22
- * M7 only ADDs export / import — it does not modify the existing
23
- * surface.
15
+ * This module owns the `loop` parent, the registrar order, and `distill` — the
16
+ * one verb that spawns a child process, kept here so the `node:child_process`
17
+ * import stays on the module `tests/unit/spawn-windows-hide-guard.test.ts`
18
+ * pins it to. Every other verb lives beside this file, one module per verb.
24
19
  */
25
20
  import type { Command } from 'commander';
26
21
  import { type ProgramIO } from '../cli-helpers.js';