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,93 @@
1
+ // src/cli/commands/hooks-status-command.ts
2
+ //
3
+ // `peaks hooks status` — report which peaks-managed hook entries are installed.
4
+ // Split out of `hooks-commands.ts`; the verb name, its options, the
5
+ // "read the ACTUAL on-disk entries, not the expected list" ruling and the
6
+ // envelope shape are unchanged.
7
+ import { existsSync } from 'node:fs';
8
+ import { listSuperpowersDenyEntries, readHookStatus, readInstalledEntriesFromSettings } from '../../services/skills/hooks-settings-service.js';
9
+ import { readJsonObjectFile } from '../../services/ide/shared/atomic-json.js';
10
+ import { resolveIdeOptionHelp } from '../../services/ide/ide-registry.js';
11
+ import { fail, ok } from 'peaks-loop-shared/result';
12
+ import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
13
+ import { resolveIdeForCommand, resolveProjectRoot, resolveScope } from './hooks-command-shared.js';
14
+ /**
15
+ * `permissions.deny` block from a settings.json object and return
16
+ * every peaks-managed entry currently present. Used by `hooks status`
17
+ * to surface Layer 3 governance state without forcing the caller to
18
+ * re-read the file. Tolerant of missing / malformed `permissions` —
19
+ * a missing field returns an empty array, never throws.
20
+ */
21
+ function readOnDiskDenyEntries(settings) {
22
+ const permissions = settings.permissions;
23
+ if (!permissions || typeof permissions !== 'object' || Array.isArray(permissions))
24
+ return [];
25
+ const deny = permissions.deny;
26
+ if (!Array.isArray(deny))
27
+ return [];
28
+ return deny.filter((d) => typeof d === 'string');
29
+ }
30
+ function runHooksStatus(io, options) {
31
+ const scope = resolveScope(options);
32
+ const projectRoot = resolveProjectRoot(scope, options.project);
33
+ const ide = resolveIdeForCommand(options, projectRoot);
34
+ try {
35
+ const status = readHookStatus(scope, projectRoot, { ide });
36
+ // Slice #014: read the ACTUAL on-disk entries (post-install shape),
37
+ // not the IDE-EXPECTED list. Pre-#014 `listInstalledEntriesForIde`
38
+ // returned the expected list and reported `entries: [Bash, Task]`
39
+ // even when the file only had `Bash`. The new helper reads the
40
+ // file and reports whatever peaks-managed entries are present,
41
+ // including any legacy progress-start entry that a pre-#014
42
+ // install left behind.
43
+ const settingsPath = status.settingsPath;
44
+ const settings = existsSync(settingsPath) ? readJsonObjectFile(settingsPath) : {};
45
+ // The gate-enforce entry is materialized into the machine-local
46
+ // settings file (see `resolveHookTargets`), so the on-disk entry list
47
+ // must be read from both files or `status` would report it missing.
48
+ const localSettings = status.localSettingsPath !== undefined && existsSync(status.localSettingsPath)
49
+ ? readJsonObjectFile(status.localSettingsPath)
50
+ : {};
51
+ // entries actually on disk. We read the existing settings.json
52
+ // (above) and surface its `permissions.deny` block. Any entry
53
+ // that matches the current `SUPERPOWERS_DENIED_SKILLS` set is
54
+ // considered "peaks-managed"; user-written entries are passed
55
+ // through verbatim so the envelope reflects reality. The desired
56
+ // list is also included for parity with install / uninstall.
57
+ const onDiskDeny = readOnDiskDenyEntries(settings);
58
+ // `status` reports the state of the world; for an IDE that cannot host a
59
+ // hook the state of the world is "none, and none is possible". The exit
60
+ // code stays 0 (the query succeeded) and the payload carries the finding
61
+ // — `supportsHooks: false` on the data, plus a warning naming the IDE, so
62
+ // the negative fact is not confused with "supported IDE, nothing
63
+ // installed yet".
64
+ const warnings = status.supportsHooks
65
+ ? []
66
+ : [
67
+ `IDE '${ide}' cannot host peaks hooks (no HOOK_COMMAND_BY_IDE entry); nothing can be installed for it, which is why none is.`
68
+ ];
69
+ printResult(io, ok('hooks.status', {
70
+ ...status,
71
+ ide,
72
+ entries: [
73
+ ...readInstalledEntriesFromSettings(settings, ide),
74
+ ...readInstalledEntriesFromSettings(localSettings, ide)
75
+ ],
76
+ permissionsDenyEntries: listSuperpowersDenyEntries(),
77
+ permissionsDenyOnDisk: onDiskDeny
78
+ }, warnings), options.json);
79
+ }
80
+ catch (error) {
81
+ const message = getErrorMessage(error);
82
+ printResult(io, fail('hooks.status', 'HOOKS_STATUS_FAILED', message, { scope, ide }, [message]), options.json);
83
+ process.exitCode = 1;
84
+ }
85
+ }
86
+ export function registerHooksStatusCommand(hooks, io) {
87
+ addJsonOption(hooks
88
+ .command('status')
89
+ .description('Report which peaks-managed hook entries are installed.')
90
+ .option('--global', 'inspect the user-level ~/.claude/settings.json instead of the project')
91
+ .option('--project <path>', 'project root path (auto-detected from cwd when omitted)')
92
+ .option('--ide <id>', resolveIdeOptionHelp())).action((options) => runHooksStatus(io, options));
93
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerHooksUninstallCommand(hooks: Command, io: ProgramIO): void;
@@ -0,0 +1,43 @@
1
+ // src/cli/commands/hooks-uninstall-command.ts
2
+ //
3
+ // `peaks hooks uninstall` — remove the peaks-managed gate-enforce hook entry
4
+ // (and any legacy progress-start entry a pre-#014 install left behind). Split
5
+ // out of `hooks-commands.ts`; the verb name, its options and the envelope shape
6
+ // are unchanged.
7
+ import { listSuperpowersDenyEntries, removeHookInstall } from '../../services/skills/hooks-settings-service.js';
8
+ import { resolveIdeOptionHelp } from '../../services/ide/ide-registry.js';
9
+ import { fail, ok } from 'peaks-loop-shared/result';
10
+ import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
11
+ import { resolveIdeForCommand, resolveProjectRoot, resolveScope } from './hooks-command-shared.js';
12
+ function runHooksUninstall(io, options) {
13
+ const scope = resolveScope(options);
14
+ const projectRoot = resolveProjectRoot(scope, options.project);
15
+ const ide = resolveIdeForCommand(options, projectRoot);
16
+ try {
17
+ const result = removeHookInstall(scope, projectRoot, { ide });
18
+ // bookkeeping. `permissionsDenyRemoved` mirrors `removed` (the
19
+ // service strips deny entries on the same atomic write that
20
+ // strips the hook entries; they share the same boolean).
21
+ printResult(io, ok('hooks.uninstall', {
22
+ ...result,
23
+ ide,
24
+ permissionsDenyRemoved: result.removed,
25
+ permissionsDenyEntries: listSuperpowersDenyEntries()
26
+ }), options.json);
27
+ }
28
+ catch (error) {
29
+ const message = getErrorMessage(error);
30
+ printResult(io, fail('hooks.uninstall', 'HOOKS_UNINSTALL_FAILED', message, { scope, ide, removed: false }, [
31
+ message
32
+ ]), options.json);
33
+ process.exitCode = 1;
34
+ }
35
+ }
36
+ export function registerHooksUninstallCommand(hooks, io) {
37
+ addJsonOption(hooks
38
+ .command('uninstall')
39
+ .description('Remove the peaks-managed gate-enforce hook entry from the target settings.json. Any legacy progress-start entry that a pre-#014 install left behind is also removed (sentinel-based scan). Third-party hooks are preserved.')
40
+ .option('--global', 'remove from the user-level ~/.claude/settings.json instead of the project')
41
+ .option('--project <path>', 'project root path (auto-detected from cwd when omitted)')
42
+ .option('--ide <id>', resolveIdeOptionHelp())).action((options) => runHooksUninstall(io, options));
43
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerJobCheckpointCommands(job: Command, io: ProgramIO): void;
@@ -0,0 +1,157 @@
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 { writeJobProgress } from '../../services/job/job-progress-store.js';
6
+ import { JobCheckpointInputSchema, JobBlockInputSchema } from '../../services/job/job-types.js';
7
+ import { codegraphRefreshNotice, refreshCodegraphAfterSlice } from '../../services/codegraph/codegraph-autorefresh.js';
8
+ import { asJson, failResult, projectRoot, resolveSliceId } from './job-command-shared.js';
9
+ import { SESSION_ID_HELP, resolveJobStateRoot } from './job-state-root.js';
10
+ const SLICE_NOT_FOUND_HINTS = ['Re-run with one of the valid slice ids'];
11
+ const NO_REFRESH = { codegraph: null, codegraphWarning: null };
12
+ /**
13
+ * Auto codegraph refresh at the slice-complete boundary. Best-effort:
14
+ * a refresh failure must never fail the checkpoint.
15
+ *
16
+ * A2 (2026-09-17): "must never fail the checkpoint" is not "must never be
17
+ * seen". A refresh that did not happen while a codegraph store IS in use is now
18
+ * a warning line (stderr, `warning: ` prefix, via printResult) naming the reason
19
+ * and the remedy. See `codegraphRefreshNotice` for why `no-codegraph-dir` stays
20
+ * silent.
21
+ *
22
+ * ADVISORY (F1, 2026-09-17) — deliberately exits 0, and the reach of that word
23
+ * is exactly here. The checkpoint itself SUCCEEDED (the slice flipped to done
24
+ * and progress.json was mirrored above); the refresh is a derived index,
25
+ * rebuildable on demand. So the outcome is reported through `ok(...)` + a
26
+ * `warning:` line, never through `failResult`, and `process.exitCode` is left
27
+ * alone even when the refresh throws. Raising it would turn an advisory rebuild
28
+ * into a build breaker for every CI that runs `peaks job checkpoint`. Pinned by
29
+ * the "advisory stays 0" control in tests/unit/cli/job-exit-code.test.ts.
30
+ */
31
+ async function applyCheckpointDone(ctx) {
32
+ const { orch, jobRoot, opts, data, sliceId } = ctx;
33
+ await orch.checkpointDone({
34
+ jobId: data.jobId,
35
+ sliceId,
36
+ ...(data.commitSha ? { commitSha: data.commitSha } : {})
37
+ });
38
+ // v3.1.2: after each --state done, mirror slice progress to
39
+ // .peaks/_runtime/<sessionId>/job/<jid>/progress.json so the
40
+ // next LLM turn (or peaks code gate-step-08 hook) can read it.
41
+ const project = projectRoot(opts);
42
+ const sessId = jobRoot.sessionId;
43
+ const state = orch.status(data.jobId);
44
+ writeJobProgress(project, sessId, {
45
+ jobId: data.jobId,
46
+ done: state.done,
47
+ total: state.total,
48
+ currentSlice: state.currentSlice,
49
+ lastCommitSha: data.commitSha ?? null,
50
+ updatedAt: new Date().toISOString()
51
+ });
52
+ let codegraph;
53
+ try {
54
+ codegraph = await refreshCodegraphAfterSlice(project);
55
+ }
56
+ catch (e) {
57
+ codegraph = {
58
+ refreshed: false,
59
+ reason: 'unavailable',
60
+ note: `auto codegraph refresh failed: ${e instanceof Error ? e.message : String(e)}`
61
+ };
62
+ }
63
+ return { codegraph, codegraphWarning: codegraphRefreshNotice(codegraph) };
64
+ }
65
+ async function applyCheckpointState(ctx) {
66
+ const { orch, data, sliceId } = ctx;
67
+ if (data.state === 'done')
68
+ return applyCheckpointDone(ctx);
69
+ if (data.state === 'skipped') {
70
+ await orch.checkpointSkipped({ jobId: data.jobId, sliceId, reason: data.reason });
71
+ }
72
+ else {
73
+ await orch.checkpointFailed({ jobId: data.jobId, sliceId, reason: data.reason });
74
+ }
75
+ return NO_REFRESH;
76
+ }
77
+ function failCheckpointSliceNotFound(io, opts, data, slice) {
78
+ failResult(io, fail('checkpoint', 'SLICE_NOT_FOUND', slice.message, { jobId: data.jobId, sliceId: data.sliceId, validSliceIds: slice.validSliceIds }, SLICE_NOT_FOUND_HINTS), opts);
79
+ }
80
+ async function runJobCheckpoint(opts, io) {
81
+ const parsed = JobCheckpointInputSchema.safeParse({
82
+ jobId: opts.jobId,
83
+ sliceId: opts.sliceId,
84
+ state: opts.state,
85
+ commitSha: opts.commitSha,
86
+ reason: opts.reason,
87
+ project: projectRoot(opts),
88
+ json: opts.json
89
+ });
90
+ if (!parsed.success)
91
+ return failResult(io, fail('checkpoint', 'INVALID_CHECKPOINT', parsed.error.message, {}), opts);
92
+ const jobRoot = resolveJobStateRoot(opts, opts.jobId);
93
+ const store = new JobStateStore(jobRoot.rootDir);
94
+ // D7: `--slice-id` accepts the canonical `slice-NNN` or the slice's label
95
+ // ("S1"); an id that matches no slice is rejected here, BEFORE any write,
96
+ // so progress.json is never touched by a checkpoint that matched nothing.
97
+ const slice = resolveSliceId(store, parsed.data.jobId, parsed.data.sliceId);
98
+ if ('message' in slice) {
99
+ failCheckpointSliceNotFound(io, opts, parsed.data, slice);
100
+ return;
101
+ }
102
+ const orch = new JobOrchestrator(store);
103
+ const outcome = await applyCheckpointState({
104
+ orch,
105
+ jobRoot,
106
+ opts,
107
+ data: parsed.data,
108
+ sliceId: slice.sliceId
109
+ });
110
+ printResult(io, ok('checkpoint', { sliceId: slice.sliceId, status: parsed.data.state, codegraph: outcome.codegraph }, outcome.codegraphWarning === null ? [] : [outcome.codegraphWarning]), asJson(opts));
111
+ }
112
+ async function runJobBlock(opts, io) {
113
+ const parsed = JobBlockInputSchema.safeParse({
114
+ jobId: opts.jobId,
115
+ sliceId: opts.sliceId,
116
+ reason: opts.reason,
117
+ project: projectRoot(opts),
118
+ json: opts.json
119
+ });
120
+ if (!parsed.success)
121
+ return failResult(io, fail('block', 'INVALID_BLOCK', parsed.error.message, {}), opts);
122
+ const store = new JobStateStore(resolveJobStateRoot(opts, opts.jobId).rootDir);
123
+ // D7 (same silent no-op as checkpoint): resolve label → sliceId, reject a
124
+ // miss before any write.
125
+ const slice = resolveSliceId(store, parsed.data.jobId, parsed.data.sliceId);
126
+ if ('message' in slice) {
127
+ return failResult(io, fail('block', 'SLICE_NOT_FOUND', slice.message, {
128
+ jobId: parsed.data.jobId,
129
+ sliceId: parsed.data.sliceId,
130
+ validSliceIds: slice.validSliceIds
131
+ }, SLICE_NOT_FOUND_HINTS), opts);
132
+ }
133
+ const orch = new JobOrchestrator(store);
134
+ await orch.blockSlice({ ...parsed.data, sliceId: slice.sliceId });
135
+ printResult(io, ok('block', { blocked: slice.sliceId, reason: parsed.data.reason }), asJson(opts));
136
+ }
137
+ // M3.2: wire the remaining 5 subcommand slots — block, checkpoint, continue,
138
+ // handoff, resume. `block` is registered first here, before `continue` /
139
+ // `resume` / `progress` / `handoff`, to keep the `job` help order stable.
140
+ export function registerJobCheckpointCommands(job, io) {
141
+ addJsonOption(job
142
+ .command('checkpoint')
143
+ .requiredOption('--job-id <jid>')
144
+ .requiredOption('--slice-id <rid>')
145
+ .requiredOption('--state <done|failed|skipped>')
146
+ .option('--commit-sha <sha>')
147
+ .option('--reason <text>')
148
+ .option('--session-id <sid>', SESSION_ID_HELP)
149
+ .option('--project <repo>')).action((opts) => runJobCheckpoint(opts, io));
150
+ addJsonOption(job
151
+ .command('block')
152
+ .requiredOption('--job-id <jid>')
153
+ .requiredOption('--slice-id <rid>')
154
+ .requiredOption('--reason <text>')
155
+ .option('--session-id <sid>', SESSION_ID_HELP)
156
+ .option('--project <repo>')).action((opts) => runJobBlock(opts, io));
157
+ }
@@ -0,0 +1,109 @@
1
+ import type { ResultEnvelope } from 'peaks-loop-shared/result';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ import type { JobStateStore } from '../../services/job/job-state-store.js';
4
+ export declare function asJson(opts: JobJsonOpts): boolean;
5
+ /**
6
+ * process exit non-zero.
7
+ *
8
+ * WHY THIS EXISTS. `printResult` (`src/cli/cli-helpers.ts`) renders a failed
9
+ * envelope — `CODE: message` + `nextActions` on stderr — but it does NOT set
10
+ * `process.exitCode`. Measured with the real CLI before this fix:
11
+ * `peaks job block --job-id j1 --slice-id nope --reason why` printed
12
+ * `SLICE_NOT_FOUND: …` on stderr and exited **0**, so CI and every script
13
+ * wrapping `peaks job` read the failure as success. Seven of this file's nine
14
+ * failure-reporting sites had that gap; only `job progress` set the code, and
15
+ * that was the file's one accidental precedent rather than a rule.
16
+ *
17
+ * Every `fail(...)` envelope in this file now goes through here, so "reported a
18
+ * failure" and "exited non-zero" cannot drift apart again. The helper takes the
19
+ * Commander `opts` object and calls `asJson(opts)` itself — it must never be
20
+ * handed a bare `opts.json`-less boolean, and it must never pass `opts` to
21
+ * `printResult` (see the `asJson` comment above for that bug's history).
22
+ *
23
+ * DELIBERATELY NOT APPLIED TO THE ADVISORY PATHS. Three sites in this file
24
+ * report a non-fatal outcome through an `ok(...)` envelope and MUST keep
25
+ * exiting 0: the two `emitJobEvent` best-effort catches (`job init`,
26
+ * `job status`) and the post-slice codegraph refresh in `job checkpoint`, whose
27
+ * stated design is "a refresh failure must never fail the checkpoint". Those
28
+ * are annotated in place; `tests/unit/cli/job-exit-code.test.ts` pins both
29
+ * directions so a future blanket "every warning exits 1" edit turns red.
30
+ */
31
+ export declare function failResult(io: ProgramIO, result: ResultEnvelope<unknown>, opts: JobJsonOpts): void;
32
+ export declare function projectRoot(opts: JobProjectOpts): string;
33
+ /**
34
+ * D7: slices are keyed `slice-NNN`, but `peaks job init --slice-list "S1,…"`
35
+ * takes labels, so the natural string to pass back to `--slice-id` is that same
36
+ * label. Resolve an exact sliceId OR an exact label to the canonical sliceId;
37
+ * anything else is a hard error listing the valid ids, so a mistyped
38
+ * `slice-04` can never be accepted as a silent no-op that leaves the slice
39
+ * pending.
40
+ */
41
+ export declare function resolveSliceId(store: JobStateStore, jobId: string, sliceId: string): {
42
+ sliceId: string;
43
+ } | {
44
+ message: string;
45
+ validSliceIds: string[];
46
+ };
47
+ /**
48
+ * S10 (2026-09-20) — the option shapes the `job` subcommands read.
49
+ *
50
+ * WHY. Commander types an action's `opts` as `any`, so every `opts.<field>`
51
+ * access in this file was an `any` access: 109 `no-unsafe-*` findings, the
52
+ * largest single TS root in the S10 census. The root is the *entrance* — the
53
+ * untyped `opts` parameter — not the 109 sites, so the fix is to declare it.
54
+ *
55
+ * Each interface names exactly the options its own command READS, plus `--json`
56
+ * (added by `addJsonOption`). So a field absent here is a field that command
57
+ * does not read, and reading it is now a compile error instead of an `any`
58
+ * access. (A command may declare more than it reads — `job status` declares
59
+ * `--show-cost` and never looks at it; that option is deliberately not listed.)
60
+ * `readonly` is honest: these are read-only inputs; Commander owns the object.
61
+ *
62
+ * The four helpers above (`asJson`, `failResult`, `projectRoot`,
63
+ * `resolveJobStateRoot`) take the narrowest structural type each one actually
64
+ * reads, so all eleven action callbacks remain assignable to them.
65
+ */
66
+ export interface JobJsonOpts {
67
+ readonly json?: boolean;
68
+ }
69
+ export interface JobProjectOpts {
70
+ readonly project?: string;
71
+ }
72
+ export interface JobRootOpts extends JobProjectOpts {
73
+ readonly sessionId?: string;
74
+ }
75
+ export interface JobInitOpts extends JobRootOpts, JobJsonOpts {
76
+ readonly jobId: string;
77
+ readonly sliceList: string;
78
+ readonly parallelismHint?: string;
79
+ readonly exitPolicy?: string;
80
+ readonly mainLoopStrategy?: string;
81
+ readonly rotateEvery?: string;
82
+ }
83
+ export interface JobStatusOpts extends JobRootOpts, JobJsonOpts {
84
+ readonly jobId: string;
85
+ readonly watch?: boolean;
86
+ }
87
+ export interface JobIdOnlyOpts extends JobRootOpts, JobJsonOpts {
88
+ readonly jobId: string;
89
+ }
90
+ export interface JobSubagentCleanupOpts extends JobIdOnlyOpts {
91
+ readonly batchId: string;
92
+ readonly force?: boolean;
93
+ }
94
+ export interface JobCheckpointOpts extends JobIdOnlyOpts {
95
+ readonly sliceId: string;
96
+ readonly state: string;
97
+ readonly commitSha?: string;
98
+ readonly reason?: string;
99
+ }
100
+ export interface JobBlockOpts extends JobIdOnlyOpts {
101
+ readonly sliceId: string;
102
+ readonly reason: string;
103
+ }
104
+ export interface JobProgressOpts extends JobIdOnlyOpts {
105
+ readonly allowMissing?: boolean;
106
+ }
107
+ export interface JobCostCheckOpts extends JobRootOpts, JobJsonOpts {
108
+ readonly reviewFile: string;
109
+ }
@@ -0,0 +1,72 @@
1
+ import { printResult } from '../cli-helpers.js';
2
+ // `printResult`'s third parameter is `asJson: boolean`. Each `job` subcommand
3
+ // registers `--json` (see the `addJsonOption` calls below), so the flag to pass
4
+ // it is `opts.json` — NEVER the whole options object. Commander types an
5
+ // action's `opts` as `any`, so `printResult(io, envelope, opts)` type-checks
6
+ // and is ALWAYS truthy: it forces the envelope branch and makes the
7
+ // `warning: ` / `next: ` human rendering in `cli-helpers.ts` unreachable. That
8
+ // is how the A2 codegraph-refresh warning ended up inside the JSON stdout
9
+ // envelope instead of on stderr as `warning: `. `job progress` always passed
10
+ // `opts.json`; the rest of this file did not, and E1 (2026-09-17) brought them
11
+ // in line. Do not reintroduce the object form.
12
+ //
13
+ // S10 (2026-09-20): the parameter is now `JobJsonOpts` rather than `any`. The
14
+ // gate above is about which VALUE is passed, not about the parameter's type —
15
+ // declaring the one field this function reads is what stops every `opts.<x>`
16
+ // call site in the file from being an `any` access. See the option-interface
17
+ // block above `registerJobCommands`.
18
+ export function asJson(opts) {
19
+ return opts.json === true;
20
+ }
21
+ /**
22
+ * process exit non-zero.
23
+ *
24
+ * WHY THIS EXISTS. `printResult` (`src/cli/cli-helpers.ts`) renders a failed
25
+ * envelope — `CODE: message` + `nextActions` on stderr — but it does NOT set
26
+ * `process.exitCode`. Measured with the real CLI before this fix:
27
+ * `peaks job block --job-id j1 --slice-id nope --reason why` printed
28
+ * `SLICE_NOT_FOUND: …` on stderr and exited **0**, so CI and every script
29
+ * wrapping `peaks job` read the failure as success. Seven of this file's nine
30
+ * failure-reporting sites had that gap; only `job progress` set the code, and
31
+ * that was the file's one accidental precedent rather than a rule.
32
+ *
33
+ * Every `fail(...)` envelope in this file now goes through here, so "reported a
34
+ * failure" and "exited non-zero" cannot drift apart again. The helper takes the
35
+ * Commander `opts` object and calls `asJson(opts)` itself — it must never be
36
+ * handed a bare `opts.json`-less boolean, and it must never pass `opts` to
37
+ * `printResult` (see the `asJson` comment above for that bug's history).
38
+ *
39
+ * DELIBERATELY NOT APPLIED TO THE ADVISORY PATHS. Three sites in this file
40
+ * report a non-fatal outcome through an `ok(...)` envelope and MUST keep
41
+ * exiting 0: the two `emitJobEvent` best-effort catches (`job init`,
42
+ * `job status`) and the post-slice codegraph refresh in `job checkpoint`, whose
43
+ * stated design is "a refresh failure must never fail the checkpoint". Those
44
+ * are annotated in place; `tests/unit/cli/job-exit-code.test.ts` pins both
45
+ * directions so a future blanket "every warning exits 1" edit turns red.
46
+ */
47
+ export function failResult(io, result, opts) {
48
+ printResult(io, result, asJson(opts));
49
+ process.exitCode = 1;
50
+ }
51
+ export function projectRoot(opts) {
52
+ // Reuse the workspace root resolver from peaks CLI; for now, CWD as a safe placeholder.
53
+ return opts.project ?? process.cwd();
54
+ }
55
+ /**
56
+ * D7: slices are keyed `slice-NNN`, but `peaks job init --slice-list "S1,…"`
57
+ * takes labels, so the natural string to pass back to `--slice-id` is that same
58
+ * label. Resolve an exact sliceId OR an exact label to the canonical sliceId;
59
+ * anything else is a hard error listing the valid ids, so a mistyped
60
+ * `slice-04` can never be accepted as a silent no-op that leaves the slice
61
+ * pending.
62
+ */
63
+ export function resolveSliceId(store, jobId, sliceId) {
64
+ const slices = store.load(jobId).slices;
65
+ const hit = slices.find((sl) => sl.sliceId === sliceId || sl.label === sliceId);
66
+ if (hit)
67
+ return { sliceId: hit.sliceId };
68
+ return {
69
+ message: `no slice "${sliceId}" in job ${jobId}; valid ids: ${slices.map((sl) => `${sl.sliceId} (${sl.label})`).join(', ')}`,
70
+ validSliceIds: slices.map((sl) => sl.sliceId)
71
+ };
72
+ }
@@ -1,67 +1,7 @@
1
1
  import { Command } from 'commander';
2
2
  import { type ProgramIO } from '../cli-helpers.js';
3
- export declare function asJson(opts: JobJsonOpts): boolean;
4
- /**
5
- * D6: every job subcommand resolves a job root, so every one of them must be
6
- * able to name the session that holds the job. Same precedence as the rest of
7
- * the CLI (`peaks sub-agent dispatch`, `peaks web *`, `peaks share *`), except
8
- * that job state has no "unknown-sid" location to land in — an unresolvable
9
- * session is an error, not a silent fallback.
10
- */
11
- 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)";
12
- /**
13
- * Resolves the on-disk root for Job state files.
14
- *
15
- * Per spec §3.3 + §4.5 (2.7.1 single-scope-axis layout), Job state lives at:
16
- * `<projectRoot>/.peaks/_runtime/<sessionId>/job/<jobId>/state.json`
17
- *
18
- * The `JobStateStore` itself only knows its `rootDir` + `jobId` and joins them. We
19
- * compute the canonical root here (per-call) so the store can stay layout-agnostic.
20
- *
21
- * Resolution order (D6 — a job must stay addressable while the single per-project
22
- * `.peaks/_runtime/session.json` binding points at another session):
23
- * 1. `--session-id` flag (explicit override)
24
- * 2. `PEAKS_SESSION_ID` env var
25
- * 3. `getCurrentSessionId(project)` — this caller's session binding, falling back
26
- * to `.peaks/_runtime/session.json` when no caller binding is resolvable
27
- * 4. Error (NO_ACTIVE_SESSION) — must never silently fall back to a random uuid
28
- *
29
- * When `jobId` is passed and it is absent from the resolved session, the thrown
30
- * error names the session that does hold it (if any), instead of leaving the
31
- * caller with a bare "no state for <job> at <other-sid>" path.
32
- */
33
- export declare function resolveJobStateRoot(opts: JobRootOpts, jobId?: string): {
34
- rootDir: string;
35
- sessionId: string;
36
- projectRoot: string;
37
- };
38
- /**
39
- * S10 (2026-09-20) — the option shapes the `job` subcommands read.
40
- *
41
- * WHY. Commander types an action's `opts` as `any`, so every `opts.<field>`
42
- * access in this file was an `any` access: 109 `no-unsafe-*` findings, the
43
- * largest single TS root in the S10 census. The root is the *entrance* — the
44
- * untyped `opts` parameter — not the 109 sites, so the fix is to declare it.
45
- *
46
- * Each interface names exactly the options its own command READS, plus `--json`
47
- * (added by `addJsonOption`). So a field absent here is a field that command
48
- * does not read, and reading it is now a compile error instead of an `any`
49
- * access. (A command may declare more than it reads — `job status` declares
50
- * `--show-cost` and never looks at it; that option is deliberately not listed.)
51
- * `readonly` is honest: these are read-only inputs; Commander owns the object.
52
- *
53
- * The four helpers above (`asJson`, `failResult`, `projectRoot`,
54
- * `resolveJobStateRoot`) take the narrowest structural type each one actually
55
- * reads, so all eleven action callbacks remain assignable to them.
56
- */
57
- export interface JobJsonOpts {
58
- readonly json?: boolean;
59
- }
60
- interface JobProjectOpts {
61
- readonly project?: string;
62
- }
63
- export interface JobRootOpts extends JobProjectOpts {
64
- readonly sessionId?: string;
65
- }
3
+ import { asJson } from './job-command-shared.js';
4
+ import { SESSION_ID_HELP, resolveJobStateRoot } from './job-state-root.js';
5
+ export { asJson, SESSION_ID_HELP, resolveJobStateRoot };
6
+ export type { JobJsonOpts, JobRootOpts, JobProjectOpts } from './job-command-shared.js';
66
7
  export declare function registerJobCommands(program: Command, io?: ProgramIO): void;
67
- export {};