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,25 @@
1
+ import { type ProgramIO } from '../../cli-helpers.js';
2
+ /** A `--dry-run --apply` refusal, resolved per verb. */
3
+ export type FlagConflict = {
4
+ readonly command: string;
5
+ readonly code: string;
6
+ readonly nextActions: readonly string[];
7
+ readonly json: boolean | undefined;
8
+ readonly dryRun: boolean | undefined;
9
+ readonly apply: boolean | undefined;
10
+ };
11
+ /**
12
+ * `--dry-run` and `--apply` are mutually exclusive: previewing and writing in
13
+ * one invocation has no defined meaning, so refuse before any work happens.
14
+ */
15
+ export declare function refuseBothFlags(io: ProgramIO, conflict: FlagConflict): boolean;
16
+ /** A verb whose lazy `memory-commands.ts` import or run failed. */
17
+ export type BootstrapFailure = {
18
+ readonly command: string;
19
+ readonly code: string;
20
+ readonly message: string;
21
+ readonly json: boolean | undefined;
22
+ readonly nextActions?: readonly string[] | undefined;
23
+ };
24
+ /** Print the `*_BOOTSTRAP_FAILED` envelope and mark the process failed. */
25
+ export declare function emitBootstrapFailure(io: ProgramIO, failure: BootstrapFailure): void;
@@ -0,0 +1,20 @@
1
+ import { fail } from 'peaks-loop-shared/result';
2
+ import { printResult } from '../../cli-helpers.js';
3
+ /**
4
+ * `--dry-run` and `--apply` are mutually exclusive: previewing and writing in
5
+ * one invocation has no defined meaning, so refuse before any work happens.
6
+ */
7
+ export function refuseBothFlags(io, conflict) {
8
+ if (!(conflict.dryRun === true && conflict.apply === true))
9
+ return false;
10
+ printResult(io, fail(conflict.command, conflict.code, 'Use either --dry-run or --apply, not both', {}, [
11
+ ...conflict.nextActions
12
+ ]), conflict.json);
13
+ process.exitCode = 1;
14
+ return true;
15
+ }
16
+ /** Print the `*_BOOTSTRAP_FAILED` envelope and mark the process failed. */
17
+ export function emitBootstrapFailure(io, failure) {
18
+ printResult(io, fail(failure.command, failure.code, failure.message, {}, [...(failure.nextActions ?? [])]), failure.json);
19
+ process.exitCode = 1;
20
+ }
@@ -1,3 +1,3 @@
1
1
  import type { Command } from 'commander';
2
- import { type ProgramIO } from '../../cli-helpers.js';
2
+ import type { ProgramIO } from '../../cli-helpers.js';
3
3
  export declare function registerMemoryCommand(program: Command, io: ProgramIO): void;
@@ -1,230 +1,9 @@
1
- import { describeMemoryBlockDrops, executeProjectMemoryBackup, executeProjectMemoryExtract, SENSITIVE_MEMORY_CHECKS, summarizeProjectMemoryBackupResult, summarizeProjectMemoryExtractResult, UnsafeMemoryError, VALID_PROJECT_MEMORY_KINDS } from '../../../services/memory/project-memory-service.js';
2
- import { fail, ok } from 'peaks-loop-shared/result';
3
- import { addJsonOption, getErrorMessage, printResult } from '../../cli-helpers.js';
4
- /** Derived from the canonical kind vocabulary — never hand-maintain a list here. */
5
- const KIND_HELP = VALID_PROJECT_MEMORY_KINDS.join(', ');
1
+ import { registerMemoryDelegatedVerbs } from './memory-delegated-verbs.js';
2
+ import { registerMemoryExtractCommand } from './memory-extract-command.js';
3
+ import { registerMemorySyncCommand } from './memory-sync-command.js';
6
4
  export function registerMemoryCommand(program, io) {
7
5
  const memory = program.command('memory').description('Manage project-local Peaks memory');
8
- addJsonOption(memory
9
- .command('extract')
10
- .description('Extract stable project memory from skill artifacts into project .peaks/memory')
11
- .requiredOption('--project <path>', 'target project root')
12
- .requiredOption('--artifact <path...>', 'skill artifact paths inside the project')
13
- .option('--dry-run', 'preview writes without changing files')
14
- .option('--apply', 'write extracted memories into project .peaks/memory')).action((options) => {
15
- if (options.dryRun === true && options.apply === true) {
16
- printResult(io, fail('memory.extract', 'INVALID_MEMORY_EXTRACT_FLAGS', 'Use either --dry-run or --apply, not both', {}, ['Run without --apply to preview writes, or pass --apply to write memories']), options.json);
17
- process.exitCode = 1;
18
- return;
19
- }
20
- try {
21
- const result = executeProjectMemoryExtract({
22
- projectRoot: options.project,
23
- artifactPaths: options.artifact,
24
- apply: options.apply === true
25
- });
26
- // A block that was found but not extracted must not vanish silently: the
27
- // parser's rejection reasons ride the envelope's existing `warnings`
28
- // channel (JSON: `warnings[]`; human: `warning: …` on stderr). `data` is
29
- // unchanged — this adds no field to the summary.
30
- printResult(io, ok('memory.extract', summarizeProjectMemoryExtractResult(result), describeMemoryBlockDrops(result.droppedBlocks)), options.json);
31
- }
32
- catch (error) {
33
- const refusal = error instanceof UnsafeMemoryError ? error : null;
34
- printResult(io, fail('memory.extract', 'MEMORY_EXTRACT_FAILED', getErrorMessage(error),
35
- // The check and the term are facts about the failure, so they ride
36
- // the envelope's data — not just its prose. `fail()` redacts
37
- // `message` (see `UnsafeMemoryError`), so the term would otherwise
38
- // reach the reader as `[redacted]`; `data` is passed through.
39
- refusal === null ? {} : { check: refusal.check, matchedTerm: refusal.matchedTerm }, memoryExtractNextActions(refusal)), options.json);
40
- process.exitCode = 1;
41
- }
42
- });
43
- addJsonOption(memory
44
- .command('sync')
45
- .description('Back up project .peaks/memory into the artifact workspace')
46
- .requiredOption('--project <path>', 'target project root')
47
- .requiredOption('--workspace <path>', 'artifact workspace path')
48
- .option('--dry-run', 'preview copies without changing files')
49
- .option('--apply', 'copy project .peaks/memory into artifact workspace backup')).action((options) => {
50
- if (options.dryRun === true && options.apply === true) {
51
- printResult(io, fail('memory.sync', 'INVALID_MEMORY_SYNC_FLAGS', 'Use either --dry-run or --apply, not both', {}, ['Run without --apply to preview copies, or pass --apply to back up memories']), options.json);
52
- process.exitCode = 1;
53
- return;
54
- }
55
- try {
56
- const result = executeProjectMemoryBackup({
57
- projectRoot: options.project,
58
- artifactWorkspacePath: options.workspace,
59
- apply: options.apply === true
60
- });
61
- printResult(io, ok('memory.sync', summarizeProjectMemoryBackupResult(result)), options.json);
62
- }
63
- catch (error) {
64
- printResult(io, fail('memory.sync', 'MEMORY_SYNC_FAILED', getErrorMessage(error), {}, [
65
- 'Use an artifact workspace outside the project root'
66
- ]), options.json);
67
- process.exitCode = 1;
68
- }
69
- });
70
- addJsonOption(memory
71
- .command('list')
72
- .description('List all memory entries from .peaks/memory/index.json. Pass --pick to spawn fzf for interactive multi-select; the picked subset is written to .peaks/memory/picked.json.')
73
- .option('--kind <kind>', `filter by memory kind (one of: ${KIND_HELP})`)
74
- .option('--pick', 'spawn fzf for interactive multi-select (requires fzf >= 0.38); writes picked.json')
75
- .option('--fzf-bin <path>', 'override fzf binary path (default: fzf on PATH)', 'fzf')
76
- .option('--summary', 'emit counts + names-of-first-N only (≤ 2 KB) instead of the full entry array; the default envelope is unchanged')
77
- .option('--project <path>', 'target project root (defaults to git root or cwd)')).action((options) => {
78
- void import('../memory-commands.js')
79
- .then(({ runMemoryList }) => {
80
- void runMemoryList(io, {
81
- ...(options.kind !== undefined ? { kind: options.kind } : {}),
82
- ...(options.pick === true ? { pick: true } : {}),
83
- ...(options.fzfBin ? { fzfBin: options.fzfBin } : {}),
84
- ...(options.project !== undefined ? { project: options.project } : {}),
85
- ...(options.summary === true ? { summary: true } : {}),
86
- ...(options.json !== undefined ? { json: options.json } : {})
87
- });
88
- })
89
- .catch((error) => {
90
- const msg = /brew install fzf|apt-get install fzf|older than required/.test(getErrorMessage(error))
91
- ? 'fzf binary not found or too old. Install with: brew install fzf (or apt: apt-get install fzf). peaks memory list --pick requires fzf >= 0.38.'
92
- : getErrorMessage(error);
93
- const code = /brew install fzf|apt-get install fzf|older than required/.test(msg)
94
- ? 'FZF_UNAVAILABLE'
95
- : 'MEMORY_LIST_BOOTSTRAP_FAILED';
96
- printResult(io, fail('memory.list', code, msg, {}, [
97
- 'Install fzf or run without --pick to list entries as JSON'
98
- ]), options.json);
99
- if (code === 'FZF_UNAVAILABLE')
100
- process.exitCode = 127;
101
- else
102
- process.exitCode = 1;
103
- });
104
- });
105
- addJsonOption(memory
106
- .command('reindex')
107
- .description('Rebuild .peaks/memory/index.json from every memory file on disk and regenerate MEMORY.md; reports unclassified files and orphans both ways. Dry-run by default; pass --apply to write.')
108
- .option('--project <path>', 'target project root (defaults to git root or cwd)')
109
- .option('--dry-run', 'report drift without writing (default)')
110
- .option('--apply', 'rebuild index.json and regenerate MEMORY.md')
111
- .option('--summary', 'emit drift counts + names-of-first-N only (≤ 2 KB) instead of the full arrays; the default envelope is unchanged')).action((options) => {
112
- void import('../memory-commands.js')
113
- .then(({ runMemoryReindex }) => {
114
- void runMemoryReindex(io, {
115
- ...(options.project !== undefined ? { project: options.project } : {}),
116
- ...(options.dryRun === true ? { dryRun: true } : {}),
117
- ...(options.apply === true ? { apply: true } : {}),
118
- ...(options.summary === true ? { summary: true } : {}),
119
- ...(options.json !== undefined ? { json: options.json } : {})
120
- });
121
- })
122
- .catch((error) => {
123
- printResult(io, fail('memory.reindex', 'MEMORY_REINDEX_BOOTSTRAP_FAILED', getErrorMessage(error), {}, []), options.json);
124
- process.exitCode = 1;
125
- });
126
- });
127
- addJsonOption(memory
128
- .command('ingest')
129
- .description('Import memories written by the IDE-side agent (~/.claude/projects/<hash>/memory/*.md) into the peaks-owned .peaks/memory store. The IDE-side dir is read-only. Dry-run by default; pass --apply to write.')
130
- .option('--project <path>', 'target project root (defaults to git root or cwd)')
131
- .option('--source-dir <path>', 'override the IDE-side memory directory')
132
- .option('--dry-run', 'preview imports without writing (default)')
133
- .option('--apply', 'write normalized memories into .peaks/memory')).action((options) => {
134
- void import('../memory-commands.js')
135
- .then(({ runMemoryIngest }) => {
136
- void runMemoryIngest(io, {
137
- ...(options.project !== undefined ? { project: options.project } : {}),
138
- ...(options.sourceDir !== undefined ? { sourceDir: options.sourceDir } : {}),
139
- ...(options.dryRun === true ? { dryRun: true } : {}),
140
- ...(options.apply === true ? { apply: true } : {}),
141
- ...(options.json !== undefined ? { json: options.json } : {})
142
- });
143
- })
144
- .catch((error) => {
145
- printResult(io, fail('memory.ingest', 'MEMORY_INGEST_BOOTSTRAP_FAILED', getErrorMessage(error), {}, []), options.json);
146
- process.exitCode = 1;
147
- });
148
- });
149
- addJsonOption(memory
150
- .command('rotate')
151
- .description('Tier-driven retention for .peaks/memory/ (sediment pruning policy, tier 1: archive only, never delete). Tier assignment: explicit `metadata.tier: A|B|C|D` wins; else files under archived/ are D, files pinned in MEMORY.md are B, kinds rule/convention/project-rule are A, kinds decision/reference/feedback/module/bug/investigation/technical-pattern are B, everything else is C. Tier C older than 6 months (frontmatter updatedAt/updated/modified, else file mtime) and not pinned is archived; tier D is reported as a delete-candidate only. Tier A/B are never selected, every candidate must pass a reference grep against src/ + skills/, and --apply refuses an empty plan or a failed gate. Dry-run by default.')
152
- .option('--project <path>', 'target project root (defaults to git root or cwd)')
153
- .option('--dry-run', 'report the rotation plan without moving anything (default)')
154
- .option('--apply', 'move tier-C candidates into .peaks/memory/archived/')).action((options) => {
155
- void import('../memory-commands.js')
156
- .then(({ runMemoryRotate }) => {
157
- void runMemoryRotate(io, {
158
- ...(options.project !== undefined ? { project: options.project } : {}),
159
- ...(options.dryRun === true ? { dryRun: true } : {}),
160
- ...(options.apply === true ? { apply: true } : {}),
161
- ...(options.json !== undefined ? { json: options.json } : {})
162
- });
163
- })
164
- .catch((error) => {
165
- printResult(io, fail('memory.rotate', 'MEMORY_ROTATE_BOOTSTRAP_FAILED', getErrorMessage(error), {}, []), options.json);
166
- process.exitCode = 1;
167
- });
168
- });
169
- addJsonOption(memory
170
- .command('search <query>')
171
- .description('Fuzzy-search the memory index (deterministic, local, zero-token). Default --limit 6.')
172
- .option('--kind <kind>', `filter by memory kind (one of: ${KIND_HELP})`)
173
- .option('--limit <n>', 'maximum number of matches to return', (value) => Number(value))
174
- .option('--project <path>', 'target project root (defaults to git root or cwd)')).action((query, options) => {
175
- // Lazy import avoids a top-of-file import cycle (memory-commands.ts
176
- // imports services that the rest of this file may also touch).
177
- void import('../memory-commands.js')
178
- .then(({ runMemorySearch }) => {
179
- void runMemorySearch(io, {
180
- query,
181
- ...(options.kind !== undefined ? { kind: options.kind } : {}),
182
- ...(options.limit !== undefined ? { limit: options.limit } : {}),
183
- ...(options.project !== undefined ? { project: options.project } : {}),
184
- ...(options.json !== undefined ? { json: options.json } : {})
185
- });
186
- })
187
- .catch((error) => {
188
- printResult(io, fail('memory.search', 'MEMORY_SEARCH_BOOTSTRAP_FAILED', getErrorMessage(error), {}, []), options.json);
189
- process.exitCode = 1;
190
- });
191
- });
192
- }
193
- /**
194
- * The remedy for a failed `memory extract`, chosen by the check that refused
195
- * the write — the same `SENSITIVE_MEMORY_CHECKS` values the refusal message
196
- * and envelope data are built from, so the message, the data and the advice
197
- * cannot drift apart.
198
- *
199
- * WHY IT IS NOT ONE STATIC STRING. Every failure used to get "Check artifact
200
- * paths and remove secrets before extracting memory" — including a refusal
201
- * raised only because a memory TITLE contained a word like `authority`
202
- * (slice C0). There was no secret anywhere in that memory, so the one thing
203
- * the hint told the user to do was the one thing that could not help: it sent
204
- * check that actually failed.
205
- *
206
- * `null` (a failure that is not a safety refusal — a path escape, a missing
207
- * artifact) keeps the pre-C0 hint, which is about paths and secrets rather
208
- * than about a check.
209
- */
210
- function memoryExtractNextActions(refusal) {
211
- if (refusal === null) {
212
- return ['Check artifact paths and remove secrets before extracting memory'];
213
- }
214
- if (refusal.check === SENSITIVE_MEMORY_CHECKS.title) {
215
- return [
216
- 'Retitle the memory so it is not named after a credential term, then re-run memory extract'
217
- ];
218
- }
219
- if (refusal.check === SENSITIVE_MEMORY_CHECKS.content) {
220
- // Name the rule, not just the family. `matchedTerm` is a closed id
221
- // (`credential-assignment`, `bearer-value`, `pem-private-key`, …), so the
222
- // reader can tell a credential in the text from a sentence that merely has
223
- // the shape of one — which is the difference between removing a value and
224
- // rewording prose.
225
- return [
226
- `Remove the credential value the "${refusal.matchedTerm}" pattern matched, then re-run memory extract`
227
- ];
228
- }
229
- return ['Remove the credential value from the memory content, then re-run memory extract'];
6
+ registerMemoryExtractCommand(memory, io);
7
+ registerMemorySyncCommand(memory, io);
8
+ registerMemoryDelegatedVerbs(memory, io);
230
9
  }
@@ -0,0 +1,4 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../../cli-helpers.js';
3
+ /** The five verbs whose bodies live in `memory-commands.ts`, in shipping order. */
4
+ export declare function registerMemoryDelegatedVerbs(memory: Command, io: ProgramIO): void;
@@ -0,0 +1,178 @@
1
+ import { addJsonOption, getErrorMessage, printResult } from '../../cli-helpers.js';
2
+ import { fail } from 'peaks-loop-shared/result';
3
+ import { VALID_PROJECT_MEMORY_KINDS } from '../../../services/memory/project-memory-service.js';
4
+ import { emitBootstrapFailure } from './memory-command-shared.js';
5
+ /** Derived from the canonical kind vocabulary — never hand-maintain a list here. */
6
+ const KIND_HELP = VALID_PROJECT_MEMORY_KINDS.join(', ');
7
+ /**
8
+ * Call a run function from the lazily imported `memory-commands.js`.
9
+ *
10
+ * The dynamic import avoids a top-of-file import cycle (memory-commands.ts
11
+ * imports services the rest of this family also touches).
12
+ */
13
+ function delegateMemoryRun(args) {
14
+ void import('../memory-commands.js')
15
+ .then((mod) => {
16
+ void args.build(mod)(args.io, args.options);
17
+ })
18
+ .catch((error) => {
19
+ emitBootstrapFailure(args.io, {
20
+ command: args.spec.command,
21
+ code: args.spec.code,
22
+ message: getErrorMessage(error),
23
+ json: args.spec.json,
24
+ nextActions: args.spec.nextActions
25
+ });
26
+ });
27
+ }
28
+ /** The bootstrap hint `memory list --pick` gives when fzf is missing or old. */
29
+ const FZF_UNAVAILABLE = /brew install fzf|apt-get install fzf|older than required/;
30
+ const FZF_MESSAGE = 'fzf binary not found or too old. Install with: brew install fzf (or apt: apt-get install fzf). peaks memory list --pick requires fzf >= 0.38.';
31
+ /**
32
+ * `--pick` needs a real fzf, so a missing binary is its own refusal with its
33
+ * own exit code (127, the shell's "command not found") rather than a generic
34
+ * bootstrap failure.
35
+ */
36
+ function listBootstrapFailure(io, options, error) {
37
+ const msg = FZF_UNAVAILABLE.test(getErrorMessage(error)) ? FZF_MESSAGE : getErrorMessage(error);
38
+ const code = FZF_UNAVAILABLE.test(msg) ? 'FZF_UNAVAILABLE' : 'MEMORY_LIST_BOOTSTRAP_FAILED';
39
+ printResult(io, fail('memory.list', code, msg, {}, [
40
+ 'Install fzf or run without --pick to list entries as JSON'
41
+ ]), options.json);
42
+ if (code === 'FZF_UNAVAILABLE')
43
+ process.exitCode = 127;
44
+ else
45
+ process.exitCode = 1;
46
+ }
47
+ function registerMemoryList(memory, io) {
48
+ addJsonOption(memory
49
+ .command('list')
50
+ .description('List all memory entries from .peaks/memory/index.json. Pass --pick to spawn fzf for interactive multi-select; the picked subset is written to .peaks/memory/picked.json.')
51
+ .option('--kind <kind>', `filter by memory kind (one of: ${KIND_HELP})`)
52
+ .option('--pick', 'spawn fzf for interactive multi-select (requires fzf >= 0.38); writes picked.json')
53
+ .option('--fzf-bin <path>', 'override fzf binary path (default: fzf on PATH)', 'fzf')
54
+ .option('--summary', 'emit counts + names-of-first-N only (≤ 2 KB) instead of the full entry array; the default envelope is unchanged')
55
+ .option('--project <path>', 'target project root (defaults to git root or cwd)')).action((options) => {
56
+ void import('../memory-commands.js')
57
+ .then(({ runMemoryList }) => {
58
+ void runMemoryList(io, {
59
+ ...(options.kind !== undefined ? { kind: options.kind } : {}),
60
+ ...(options.pick === true ? { pick: true } : {}),
61
+ ...(options.fzfBin ? { fzfBin: options.fzfBin } : {}),
62
+ ...(options.project !== undefined ? { project: options.project } : {}),
63
+ ...(options.summary === true ? { summary: true } : {}),
64
+ ...(options.json !== undefined ? { json: options.json } : {})
65
+ });
66
+ })
67
+ .catch((error) => listBootstrapFailure(io, options, error));
68
+ });
69
+ }
70
+ function registerMemoryReindex(memory, io) {
71
+ addJsonOption(memory
72
+ .command('reindex')
73
+ .description('Rebuild .peaks/memory/index.json from every memory file on disk and regenerate MEMORY.md; reports unclassified files and orphans both ways. Dry-run by default; pass --apply to write.')
74
+ .option('--project <path>', 'target project root (defaults to git root or cwd)')
75
+ .option('--dry-run', 'report drift without writing (default)')
76
+ .option('--apply', 'rebuild index.json and regenerate MEMORY.md')
77
+ .option('--summary', 'emit drift counts + names-of-first-N only (≤ 2 KB) instead of the full arrays; the default envelope is unchanged')).action((options) => {
78
+ delegateMemoryRun({
79
+ io,
80
+ spec: {
81
+ command: 'memory.reindex',
82
+ code: 'MEMORY_REINDEX_BOOTSTRAP_FAILED',
83
+ json: options.json
84
+ },
85
+ options: {
86
+ ...(options.project !== undefined ? { project: options.project } : {}),
87
+ ...(options.dryRun === true ? { dryRun: true } : {}),
88
+ ...(options.apply === true ? { apply: true } : {}),
89
+ ...(options.summary === true ? { summary: true } : {}),
90
+ ...(options.json !== undefined ? { json: options.json } : {})
91
+ },
92
+ build: (mod) => mod.runMemoryReindex
93
+ });
94
+ });
95
+ }
96
+ function registerMemoryIngest(memory, io) {
97
+ addJsonOption(memory
98
+ .command('ingest')
99
+ .description('Import memories written by the IDE-side agent (~/.claude/projects/<hash>/memory/*.md) into the peaks-owned .peaks/memory store. The IDE-side dir is read-only. Dry-run by default; pass --apply to write.')
100
+ .option('--project <path>', 'target project root (defaults to git root or cwd)')
101
+ .option('--source-dir <path>', 'override the IDE-side memory directory')
102
+ .option('--dry-run', 'preview imports without writing (default)')
103
+ .option('--apply', 'write normalized memories into .peaks/memory')).action((options) => {
104
+ delegateMemoryRun({
105
+ io,
106
+ spec: {
107
+ command: 'memory.ingest',
108
+ code: 'MEMORY_INGEST_BOOTSTRAP_FAILED',
109
+ json: options.json
110
+ },
111
+ options: {
112
+ ...(options.project !== undefined ? { project: options.project } : {}),
113
+ ...(options.sourceDir !== undefined ? { sourceDir: options.sourceDir } : {}),
114
+ ...(options.dryRun === true ? { dryRun: true } : {}),
115
+ ...(options.apply === true ? { apply: true } : {}),
116
+ ...(options.json !== undefined ? { json: options.json } : {})
117
+ },
118
+ build: (mod) => mod.runMemoryIngest
119
+ });
120
+ });
121
+ }
122
+ function registerMemoryRotate(memory, io) {
123
+ addJsonOption(memory
124
+ .command('rotate')
125
+ .description('Tier-driven retention for .peaks/memory/ (sediment pruning policy, tier 1: archive only, never delete). Tier assignment: explicit `metadata.tier: A|B|C|D` wins; else files under archived/ are D, files pinned in MEMORY.md are B, kinds rule/convention/project-rule are A, kinds decision/reference/feedback/module/bug/investigation/technical-pattern are B, everything else is C. Tier C older than 6 months (frontmatter updatedAt/updated/modified, else file mtime) and not pinned is archived; tier D is reported as a delete-candidate only. Tier A/B are never selected, every candidate must pass a reference grep against src/ + skills/, and --apply refuses an empty plan or a failed gate. Dry-run by default.')
126
+ .option('--project <path>', 'target project root (defaults to git root or cwd)')
127
+ .option('--dry-run', 'report the rotation plan without moving anything (default)')
128
+ .option('--apply', 'move tier-C candidates into .peaks/memory/archived/')).action((options) => {
129
+ delegateMemoryRun({
130
+ io,
131
+ spec: {
132
+ command: 'memory.rotate',
133
+ code: 'MEMORY_ROTATE_BOOTSTRAP_FAILED',
134
+ json: options.json
135
+ },
136
+ options: {
137
+ ...(options.project !== undefined ? { project: options.project } : {}),
138
+ ...(options.dryRun === true ? { dryRun: true } : {}),
139
+ ...(options.apply === true ? { apply: true } : {}),
140
+ ...(options.json !== undefined ? { json: options.json } : {})
141
+ },
142
+ build: (mod) => mod.runMemoryRotate
143
+ });
144
+ });
145
+ }
146
+ function registerMemorySearch(memory, io) {
147
+ addJsonOption(memory
148
+ .command('search <query>')
149
+ .description('Fuzzy-search the memory index (deterministic, local, zero-token). Default --limit 6.')
150
+ .option('--kind <kind>', `filter by memory kind (one of: ${KIND_HELP})`)
151
+ .option('--limit <n>', 'maximum number of matches to return', (value) => Number(value))
152
+ .option('--project <path>', 'target project root (defaults to git root or cwd)')).action((query, options) => {
153
+ delegateMemoryRun({
154
+ io,
155
+ spec: {
156
+ command: 'memory.search',
157
+ code: 'MEMORY_SEARCH_BOOTSTRAP_FAILED',
158
+ json: options.json
159
+ },
160
+ options: {
161
+ query,
162
+ ...(options.kind !== undefined ? { kind: options.kind } : {}),
163
+ ...(options.limit !== undefined ? { limit: options.limit } : {}),
164
+ ...(options.project !== undefined ? { project: options.project } : {}),
165
+ ...(options.json !== undefined ? { json: options.json } : {})
166
+ },
167
+ build: (mod) => mod.runMemorySearch
168
+ });
169
+ });
170
+ }
171
+ /** The five verbs whose bodies live in `memory-commands.ts`, in shipping order. */
172
+ export function registerMemoryDelegatedVerbs(memory, io) {
173
+ registerMemoryList(memory, io);
174
+ registerMemoryReindex(memory, io);
175
+ registerMemoryIngest(memory, io);
176
+ registerMemoryRotate(memory, io);
177
+ registerMemorySearch(memory, io);
178
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../../cli-helpers.js';
3
+ export declare function registerMemoryExtractCommand(memory: Command, io: ProgramIO): void;
@@ -0,0 +1,90 @@
1
+ import { describeMemoryBlockDrops, executeProjectMemoryExtract, SENSITIVE_MEMORY_CHECKS, summarizeProjectMemoryExtractResult, UnsafeMemoryError } from '../../../services/memory/project-memory-service.js';
2
+ import { fail, ok } from 'peaks-loop-shared/result';
3
+ import { addJsonOption, getErrorMessage, printResult } from '../../cli-helpers.js';
4
+ import { refuseBothFlags } from './memory-command-shared.js';
5
+ /**
6
+ * The remedy for a failed `memory extract`, chosen by the check that refused
7
+ * the write — the same `SENSITIVE_MEMORY_CHECKS` values the refusal message
8
+ * and envelope data are built from, so the message, the data and the advice
9
+ * cannot drift apart.
10
+ *
11
+ * WHY IT IS NOT ONE STATIC STRING. Every failure used to get "Check artifact
12
+ * paths and remove secrets before extracting memory" — including a refusal
13
+ * raised only because a memory TITLE contained a word like `authority`
14
+ * (slice C0). There was no secret anywhere in that memory, so the one thing
15
+ * the hint told the user to do was the one thing that could not help: it sent
16
+ * check that actually failed.
17
+ *
18
+ * `null` (a failure that is not a safety refusal — a path escape, a missing
19
+ * artifact) keeps the pre-C0 hint, which is about paths and secrets rather
20
+ * than about a check.
21
+ */
22
+ function memoryExtractNextActions(refusal) {
23
+ if (refusal === null) {
24
+ return ['Check artifact paths and remove secrets before extracting memory'];
25
+ }
26
+ if (refusal.check === SENSITIVE_MEMORY_CHECKS.title) {
27
+ return [
28
+ 'Retitle the memory so it is not named after a credential term, then re-run memory extract'
29
+ ];
30
+ }
31
+ if (refusal.check === SENSITIVE_MEMORY_CHECKS.content) {
32
+ // Name the rule, not just the family. `matchedTerm` is a closed id
33
+ // (`credential-assignment`, `bearer-value`, `pem-private-key`, …), so the
34
+ // reader can tell a credential in the text from a sentence that merely has
35
+ // the shape of one — which is the difference between removing a value and
36
+ // rewording prose.
37
+ return [
38
+ `Remove the credential value the "${refusal.matchedTerm}" pattern matched, then re-run memory extract`
39
+ ];
40
+ }
41
+ return ['Remove the credential value from the memory content, then re-run memory extract'];
42
+ }
43
+ function runExtract(io, options) {
44
+ const result = executeProjectMemoryExtract({
45
+ projectRoot: options.project,
46
+ artifactPaths: options.artifact,
47
+ apply: options.apply === true
48
+ });
49
+ // A block that was found but not extracted must not vanish silently: the
50
+ // parser's rejection reasons ride the envelope's existing `warnings`
51
+ // channel (JSON: `warnings[]`; human: `warning: …` on stderr). `data` is
52
+ // unchanged — this adds no field to the summary.
53
+ printResult(io, ok('memory.extract', summarizeProjectMemoryExtractResult(result), describeMemoryBlockDrops(result.droppedBlocks)), options.json);
54
+ }
55
+ function emitExtractFailure(io, options, error) {
56
+ const refusal = error instanceof UnsafeMemoryError ? error : null;
57
+ printResult(io, fail('memory.extract', 'MEMORY_EXTRACT_FAILED', getErrorMessage(error),
58
+ // The check and the term are facts about the failure, so they ride
59
+ // the envelope's data — not just its prose. `fail()` redacts
60
+ // `message` (see `UnsafeMemoryError`), so the term would otherwise
61
+ // reach the reader as `[redacted]`; `data` is passed through.
62
+ refusal === null ? {} : { check: refusal.check, matchedTerm: refusal.matchedTerm }, memoryExtractNextActions(refusal)), options.json);
63
+ process.exitCode = 1;
64
+ }
65
+ export function registerMemoryExtractCommand(memory, io) {
66
+ addJsonOption(memory
67
+ .command('extract')
68
+ .description('Extract stable project memory from skill artifacts into project .peaks/memory')
69
+ .requiredOption('--project <path>', 'target project root')
70
+ .requiredOption('--artifact <path...>', 'skill artifact paths inside the project')
71
+ .option('--dry-run', 'preview writes without changing files')
72
+ .option('--apply', 'write extracted memories into project .peaks/memory')).action((options) => {
73
+ const refused = refuseBothFlags(io, {
74
+ command: 'memory.extract',
75
+ code: 'INVALID_MEMORY_EXTRACT_FLAGS',
76
+ nextActions: ['Run without --apply to preview writes, or pass --apply to write memories'],
77
+ json: options.json,
78
+ dryRun: options.dryRun,
79
+ apply: options.apply
80
+ });
81
+ if (refused)
82
+ return;
83
+ try {
84
+ runExtract(io, options);
85
+ }
86
+ catch (error) {
87
+ emitExtractFailure(io, options, error);
88
+ }
89
+ });
90
+ }
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import { type ProgramIO } from '../../cli-helpers.js';
3
+ export declare function registerMemorySyncCommand(memory: Command, io: ProgramIO): void;
@@ -0,0 +1,38 @@
1
+ import { executeProjectMemoryBackup, summarizeProjectMemoryBackupResult } from '../../../services/memory/project-memory-service.js';
2
+ import { fail, ok } from 'peaks-loop-shared/result';
3
+ import { addJsonOption, getErrorMessage, printResult } from '../../cli-helpers.js';
4
+ import { refuseBothFlags } from './memory-command-shared.js';
5
+ export function registerMemorySyncCommand(memory, io) {
6
+ addJsonOption(memory
7
+ .command('sync')
8
+ .description('Back up project .peaks/memory into the artifact workspace')
9
+ .requiredOption('--project <path>', 'target project root')
10
+ .requiredOption('--workspace <path>', 'artifact workspace path')
11
+ .option('--dry-run', 'preview copies without changing files')
12
+ .option('--apply', 'copy project .peaks/memory into artifact workspace backup')).action((options) => {
13
+ const refused = refuseBothFlags(io, {
14
+ command: 'memory.sync',
15
+ code: 'INVALID_MEMORY_SYNC_FLAGS',
16
+ nextActions: ['Run without --apply to preview copies, or pass --apply to back up memories'],
17
+ json: options.json,
18
+ dryRun: options.dryRun,
19
+ apply: options.apply
20
+ });
21
+ if (refused)
22
+ return;
23
+ try {
24
+ const result = executeProjectMemoryBackup({
25
+ projectRoot: options.project,
26
+ artifactWorkspacePath: options.workspace,
27
+ apply: options.apply === true
28
+ });
29
+ printResult(io, ok('memory.sync', summarizeProjectMemoryBackupResult(result)), options.json);
30
+ }
31
+ catch (error) {
32
+ printResult(io, fail('memory.sync', 'MEMORY_SYNC_FAILED', getErrorMessage(error), {}, [
33
+ 'Use an artifact workspace outside the project root'
34
+ ]), options.json);
35
+ process.exitCode = 1;
36
+ }
37
+ });
38
+ }
@@ -1,3 +1,3 @@
1
1
  import type { Command } from 'commander';
2
- import { type ProgramIO } from '../../cli-helpers.js';
2
+ import type { ProgramIO } from '../../cli-helpers.js';
3
3
  export declare function registerSessionCommand(program: Command, io: ProgramIO): void;