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,137 @@
1
+ // src/services/mcp/tool-core.ts
2
+ //
3
+ // What both tool handlers are made of: the result shape, the argument-to-argv
4
+ // step, and the one place a CLI execution becomes an outcome. Split out of
5
+ // `tools.ts` because that file had grown past the repo's 300-line cap, and the
6
+ // cap is measured per file rather than per concept.
7
+ //
8
+ // ERRORS ARE NEVER FLATTENED HERE, either. A CLI failure becomes a `failure`
9
+ // string on the outcome, never an absent value: a read tool that answers
10
+ // "nothing there" when it actually failed is worse than one that errors, because
11
+ // the reader believes the empty answer (spec §9 rule 3).
12
+ import { executeCliArgv } from './cli-executor.js';
13
+ /** How much of one memory note's description travels back. */
14
+ export const MEMORY_EXCERPT_CHARS = 120;
15
+ /** Hard ceiling on matches returned, independent of what the CLI was asked for. */
16
+ export const MEMORY_MAX_RETURNED = 50;
17
+ /**
18
+ * Hand-written parameter defaults — the one place this module can drift from the
19
+ * whitelist (spec §8.1 asks such places to be visible). `project` is a MANDATORY
20
+ * option of `peaks request show`, and a status caller should not have to repeat
21
+ * the directory the server already runs in. Nothing else is defaulted: every
22
+ * other placeholder is either required by the caller or defaulted in the data.
23
+ */
24
+ function defaultFor(param, context) {
25
+ return param === 'project' ? (context.cwd ?? process.cwd()) : undefined;
26
+ }
27
+ /**
28
+ * A transported argument as the guard's input. The JSON transport carries
29
+ * numbers for integer parameters and the guard can only judge a string, so
30
+ * coercion happens here, at the boundary — and a wrong JSON type is NOT
31
+ * stringified into something that looks like data: it becomes the empty string,
32
+ * which the guard already refuses by name (`EMPTY`).
33
+ */
34
+ function asGuardInput(supplied) {
35
+ if (typeof supplied === 'string')
36
+ return supplied;
37
+ if (typeof supplied === 'number')
38
+ return String(supplied);
39
+ return '';
40
+ }
41
+ /**
42
+ * The values to render one entry with, or `undefined` when the caller did not
43
+ * supply enough for this entry to run. A value the caller DID supply is always
44
+ * present — it is handed to the guard, which is what decides whether it is
45
+ * allowed, so nothing supplied can be silently skipped.
46
+ */
47
+ export function valuesForEntry(entry, args, context) {
48
+ const values = {};
49
+ for (const [name, spec] of Object.entries(entry.params)) {
50
+ const supplied = args[name];
51
+ if (supplied !== undefined) {
52
+ values[name] = asGuardInput(supplied);
53
+ continue;
54
+ }
55
+ const fallback = spec.default === undefined ? defaultFor(name, context) : String(spec.default);
56
+ if (fallback === undefined)
57
+ return undefined;
58
+ values[name] = fallback;
59
+ }
60
+ return values;
61
+ }
62
+ /** True when the CLI process itself failed, or its stdout was not a JSON envelope. */
63
+ function failureReasonOf(execution, envelope) {
64
+ const called = `peaks ${execution.argv.join(' ')}`;
65
+ if (execution.launchError !== undefined) {
66
+ return `The peaks CLI could not be started: ${execution.launchError}`;
67
+ }
68
+ if (execution.timedOut) {
69
+ return `The peaks CLI did not finish in time and was killed: ${called}`;
70
+ }
71
+ if (execution.exitCode !== 0) {
72
+ return `The peaks CLI exited with code ${String(execution.exitCode)}: ${called}`;
73
+ }
74
+ if (envelope === undefined) {
75
+ return `The peaks CLI printed no JSON on stdout: ${called}`;
76
+ }
77
+ if (isFailedEnvelope(envelope)) {
78
+ return `The peaks CLI reported failure: ${called}`;
79
+ }
80
+ return undefined;
81
+ }
82
+ function isFailedEnvelope(value) {
83
+ return typeof value === 'object' && value !== null && 'ok' in value && value.ok === false;
84
+ }
85
+ function parseStdout(stdout) {
86
+ try {
87
+ return { parsed: true, value: JSON.parse(stdout) };
88
+ }
89
+ catch {
90
+ return { parsed: false };
91
+ }
92
+ }
93
+ /** Render the outcomes as a tool result, failing the call when any argv failed. */
94
+ export function resultOf(outcomes) {
95
+ const payload = {};
96
+ for (const outcome of outcomes) {
97
+ payload[outcome.key] =
98
+ outcome.envelope === undefined
99
+ ? { ok: false, message: outcome.failure ?? 'no output', argv: outcome.execution.argv }
100
+ : outcome.envelope;
101
+ }
102
+ const failures = outcomes.filter((outcome) => outcome.failure !== undefined);
103
+ if (failures.length === 0) {
104
+ return { content: [{ type: 'text', text: JSON.stringify(payload) }] };
105
+ }
106
+ return {
107
+ content: [
108
+ {
109
+ type: 'text',
110
+ text: JSON.stringify({
111
+ ...payload,
112
+ failures: failures.map((outcome) => ({ key: outcome.key, reason: outcome.failure }))
113
+ })
114
+ }
115
+ ],
116
+ isError: true
117
+ };
118
+ }
119
+ /** A refused call: the parameter guard said no, before anything was executed. */
120
+ export function rejectedResult(entry, reason) {
121
+ return {
122
+ content: [{ type: 'text', text: JSON.stringify({ entry: entry.id, reason }) }],
123
+ isError: true
124
+ };
125
+ }
126
+ /** Execute one already-validated argv and keep its whole outcome. */
127
+ export async function runArgv(key, argv, context) {
128
+ const execute = context.execute ??
129
+ ((args) => executeCliArgv(args, context.cwd === undefined ? {} : { cwd: context.cwd }));
130
+ const execution = await execute(argv);
131
+ const parsed = parseStdout(execution.stdout);
132
+ const envelope = parsed.parsed ? parsed.value : undefined;
133
+ const failure = failureReasonOf(execution, envelope);
134
+ return failure === undefined
135
+ ? { key, execution, envelope }
136
+ : { key, execution, envelope, failure };
137
+ }
@@ -0,0 +1,13 @@
1
+ import type { McpToolDefinition } from './surface.js';
2
+ import { type ToolCallContext, type ToolCallResult } from './tool-core.js';
3
+ /**
4
+ * `peaks_status`: run every argv the caller supplied enough for, and return each
5
+ * CLI envelope verbatim under the id of the whitelist entry that produced it.
6
+ */
7
+ export declare function callStatusTool(tool: McpToolDefinition, args: Readonly<Record<string, unknown>>, context: ToolCallContext): Promise<ToolCallResult>;
8
+ type ToolHandler = (tool: McpToolDefinition, args: Readonly<Record<string, unknown>>, context: ToolCallContext) => Promise<ToolCallResult>;
9
+ /** Tools the surface declares that no handler can serve. Non-empty = refuse to start. */
10
+ export declare function missingHandlers(tools: readonly McpToolDefinition[]): readonly string[];
11
+ /** Route a `tools/call` to its handler, or `undefined` for a tool nobody serves. */
12
+ export declare function handlerFor(name: string): ToolHandler | undefined;
13
+ export {};
@@ -0,0 +1,58 @@
1
+ // src/services/mcp/tools.ts
2
+ //
3
+ // `peaks_status`, and the table that routes a `tools/call` to its handler. The
4
+ // result shape, the argument-to-argv step and the outcome rendering live in
5
+ // `tool-core.ts`; the bounded memory tool lives in `memory-tool.ts`.
6
+ //
7
+ // The composite is a pipe with a shape, never a judge (spec §3.2): "a composite
8
+ // tool may arrange and reshape; it may not CONCLUDE." Each CLI envelope is
9
+ // embedded VERBATIM under the whitelist entry id that produced it, so the whole
10
+ // result is an identity transform of the calls it ran. A key is absent when its
11
+ // argv did not run — exactly "subset"; no branch fabricates a value no argv
12
+ // returned.
13
+ import { buildArgv } from '../readonly-surface/argv-guard.js';
14
+ import { callMemorySearchTool } from './memory-tool.js';
15
+ import { rejectedResult, resultOf, runArgv, valuesForEntry } from './tool-core.js';
16
+ /**
17
+ * `peaks_status`: run every argv the caller supplied enough for, and return each
18
+ * CLI envelope verbatim under the id of the whitelist entry that produced it.
19
+ */
20
+ export async function callStatusTool(tool, args, context) {
21
+ // Every argv is BUILT before any is run. Executing as we go meant a refused
22
+ // placeholder left the earlier argv of the same call already executed — a
23
+ // caller's malformed input would have reached the CLI's read path anyway.
24
+ const plan = [];
25
+ for (const entry of tool.entries) {
26
+ const values = valuesForEntry(entry, args, context);
27
+ if (values === undefined)
28
+ continue;
29
+ const built = buildArgv(entry, values);
30
+ if (!built.ok) {
31
+ return rejectedResult(entry, `Parameter ${built.param} was refused: ${built.message}`);
32
+ }
33
+ plan.push({ id: entry.id, argv: built.argv });
34
+ }
35
+ const outcomes = [];
36
+ for (const step of plan) {
37
+ outcomes.push(await runArgv(step.id, step.argv, context));
38
+ }
39
+ return resultOf(outcomes);
40
+ }
41
+ /**
42
+ * Tool name -> handler, spelled out rather than derived. A tool the whitelist
43
+ * declares but this table does not name cannot be served, and `missingHandlers`
44
+ * below turns that into a refusal to start instead of a call that answers with
45
+ * whatever the fallback branch happened to do.
46
+ */
47
+ const TOOL_HANDLERS = {
48
+ peaks_status: callStatusTool,
49
+ peaks_memory_search: callMemorySearchTool
50
+ };
51
+ /** Tools the surface declares that no handler can serve. Non-empty = refuse to start. */
52
+ export function missingHandlers(tools) {
53
+ return tools.map((tool) => tool.name).filter((name) => !(name in TOOL_HANDLERS));
54
+ }
55
+ /** Route a `tools/call` to its handler, or `undefined` for a tool nobody serves. */
56
+ export function handlerFor(name) {
57
+ return TOOL_HANDLERS[name];
58
+ }
@@ -0,0 +1,32 @@
1
+ import type { PlaceholderSpec, ReadOnlyWhitelistEntry } from './readonly-whitelist.js';
2
+ /** Upper bound on any single placeholder value, whatever its type. */
3
+ export declare const READONLY_VALUE_MAX_LENGTH = 200;
4
+ export type GuardRejection = {
5
+ readonly ok: false;
6
+ readonly param: string;
7
+ readonly code: GuardRejectionCode;
8
+ readonly message: string;
9
+ };
10
+ export type GuardRejectionCode = 'NOT_A_STRING' | 'EMPTY' | 'TOO_LONG' | 'FLAG_SHAPED' | 'CONTROL_CHARACTER' | 'WHITESPACE' | 'PATTERN_MISMATCH' | 'NOT_IN_ENUM' | 'NOT_AN_INTEGER' | 'OUT_OF_RANGE' | 'NOT_ABSOLUTE';
11
+ export type GuardResult = {
12
+ readonly ok: true;
13
+ readonly value: string;
14
+ } | GuardRejection;
15
+ /** The process options that keep the array from being re-parsed by a shell. */
16
+ export declare function readonlySpawnOptions(): {
17
+ readonly shell: false;
18
+ };
19
+ /** Validate one placeholder value against its spec. */
20
+ export declare function validatePlaceholderValue(param: string, spec: PlaceholderSpec, raw: unknown): GuardResult;
21
+ export type BuildArgvResult = {
22
+ readonly ok: true;
23
+ readonly argv: string[];
24
+ } | GuardRejection;
25
+ /**
26
+ * Render a whitelist entry into a concrete argv ARRAY.
27
+ *
28
+ * The output is never a string: literals and validated values are pushed as
29
+ * separate elements, so no value can contribute token boundaries. A parameter the
30
+ * entry does not declare is refused rather than appended.
31
+ */
32
+ export declare function buildArgv(entry: ReadOnlyWhitelistEntry, values: Readonly<Record<string, string>>): BuildArgvResult;
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Parameter-injection guard for the read-only surface.
3
+ *
4
+ * THE ATTACK. An argv template has placeholder slots (`request show <rid>`). If a
5
+ * placeholder value is pasted into a command LINE, the value `--apply` stops being
6
+ * a request id and becomes a flag - the semantics of the call are inverted by its
7
+ * own data. Two independent defences, both required (spec §8.1):
8
+ *
9
+ * 1. TYPE WHITELIST - every placeholder declares a type, and the value must
10
+ * satisfy it. No type admits a leading `-`, so a flag-shaped value is never a
11
+ * legal value of any placeholder.
12
+ * 2. ARRAY PASSING - `buildArgv` returns `string[]`. The caller passes the array
13
+ * to the process API with shell parsing disabled (`readonlySpawnOptions`), so
14
+ * no value is ever re-tokenized by a shell.
15
+ *
16
+ * Defence 2 alone is not enough: `spawn(..., {shell:false})` still hands `--apply`
17
+ * to the CLI as a real flag. Defence 1 alone is not enough: a caller that joins
18
+ * the array into a string reintroduces the shell. Hence both.
19
+ */
20
+ import { isAbsolute } from 'node:path';
21
+ /** Fallback pattern for a `slug` placeholder that declares none. */
22
+ const DEFAULT_SLUG_PATTERN = '^[a-z0-9][a-z0-9-]*$';
23
+ /** Upper bound on any single placeholder value, whatever its type. */
24
+ export const READONLY_VALUE_MAX_LENGTH = 200;
25
+ /** The process options that keep the array from being re-parsed by a shell. */
26
+ export function readonlySpawnOptions() {
27
+ return { shell: false };
28
+ }
29
+ function reject(param, code, message) {
30
+ return { ok: false, param, code, message };
31
+ }
32
+ /**
33
+ * Control characters, matched by Unicode category rather than by a literal range:
34
+ * a hand-written `\x00-\x1f` class is a lint error (`no-control-regex`) precisely
35
+ * because such a range in a pattern is usually a bug, and `\p{Cc}` says what is
36
+ * meant without spelling out code points.
37
+ */
38
+ function hasControlCharacter(value) {
39
+ return /\p{Cc}/u.test(value);
40
+ }
41
+ /**
42
+ * The rules that hold for EVERY type, before any type-specific rule runs. A
43
+ * leading `-` is refused here, so no type can carry a flag into the argv.
44
+ */
45
+ function precheckCommon(param, raw) {
46
+ if (typeof raw !== 'string') {
47
+ return reject(param, 'NOT_A_STRING', `Parameter ${param} must be a string.`);
48
+ }
49
+ if (raw.length === 0)
50
+ return reject(param, 'EMPTY', `Parameter ${param} must not be empty.`);
51
+ if (raw.length > READONLY_VALUE_MAX_LENGTH) {
52
+ return reject(param, 'TOO_LONG', `Parameter ${param} exceeds ${READONLY_VALUE_MAX_LENGTH} characters.`);
53
+ }
54
+ if (raw.startsWith('-')) {
55
+ return reject(param, 'FLAG_SHAPED', `Parameter ${param} must not look like a flag: ${raw}`);
56
+ }
57
+ if (hasControlCharacter(raw)) {
58
+ return reject(param, 'CONTROL_CHARACTER', `Parameter ${param} must not contain control characters.`);
59
+ }
60
+ return { ok: true, value: raw };
61
+ }
62
+ function checkToken(param, value) {
63
+ if (/\s/.test(value)) {
64
+ return reject(param, 'WHITESPACE', `Parameter ${param} must be a single token.`);
65
+ }
66
+ return { ok: true, value };
67
+ }
68
+ function checkSlug(param, value, spec) {
69
+ const asToken = checkToken(param, value);
70
+ if (!asToken.ok)
71
+ return asToken;
72
+ const pattern = new RegExp(spec.pattern ?? DEFAULT_SLUG_PATTERN);
73
+ if (!pattern.test(value)) {
74
+ return reject(param, 'PATTERN_MISMATCH', `Parameter ${param} must match ${pattern.source}: ${value}`);
75
+ }
76
+ return { ok: true, value };
77
+ }
78
+ function checkEnum(param, value, spec) {
79
+ if (spec.values === undefined || !spec.values.includes(value)) {
80
+ return reject(param, 'NOT_IN_ENUM', `Parameter ${param} must be one of: ${(spec.values ?? []).join(', ')}`);
81
+ }
82
+ return { ok: true, value };
83
+ }
84
+ function checkInteger(param, value, spec) {
85
+ if (!/^[0-9]+$/.test(value)) {
86
+ return reject(param, 'NOT_AN_INTEGER', `Parameter ${param} must be an integer: ${value}`);
87
+ }
88
+ const parsed = Number.parseInt(value, 10);
89
+ const min = spec.min ?? 0;
90
+ const max = spec.max ?? Number.MAX_SAFE_INTEGER;
91
+ if (parsed < min || parsed > max) {
92
+ return reject(param, 'OUT_OF_RANGE', `Parameter ${param} must be between ${min} and ${max}.`);
93
+ }
94
+ return { ok: true, value };
95
+ }
96
+ function checkPath(param, value) {
97
+ // Spaces are legal in a path and irrelevant under array passing; the absolute
98
+ // check is what keeps `--apply` and a bare word out.
99
+ if (!isAbsolute(value)) {
100
+ return reject(param, 'NOT_ABSOLUTE', `Parameter ${param} must be an absolute path.`);
101
+ }
102
+ return { ok: true, value };
103
+ }
104
+ const TYPE_CHECKS = {
105
+ token: (param, value) => checkToken(param, value),
106
+ slug: (param, value, spec) => checkSlug(param, value, spec),
107
+ enum: (param, value, spec) => checkEnum(param, value, spec),
108
+ integer: (param, value, spec) => checkInteger(param, value, spec),
109
+ path: (param, value) => checkPath(param, value)
110
+ };
111
+ /** Validate one placeholder value against its spec. */
112
+ export function validatePlaceholderValue(param, spec, raw) {
113
+ const prechecked = precheckCommon(param, raw);
114
+ if (!prechecked.ok)
115
+ return prechecked;
116
+ return TYPE_CHECKS[spec.type](param, prechecked.value, spec);
117
+ }
118
+ function missingParam(param) {
119
+ return reject(param, 'EMPTY', `Parameter ${param} was not supplied.`);
120
+ }
121
+ /** A value is required for every placeholder present in the template. */
122
+ function resolveParamValue(param, declared, values) {
123
+ if (declared === undefined)
124
+ return missingParam(param);
125
+ const supplied = values[param];
126
+ // Every placeholder in this surface is required (introspected), and a missing
127
+ // OPTIONAL value could only be honoured by also dropping the flag literal the
128
+ // loop has already pushed. Refusing is the honest answer.
129
+ if (supplied === undefined)
130
+ return missingParam(param);
131
+ return validatePlaceholderValue(param, declared, supplied);
132
+ }
133
+ function unknownParams(entry, values) {
134
+ for (const name of Object.keys(values)) {
135
+ if (!(name in entry.params)) {
136
+ return reject(name, 'NOT_A_STRING', `Entry ${entry.id} declares no parameter ${name}.`);
137
+ }
138
+ }
139
+ return undefined;
140
+ }
141
+ /**
142
+ * Render a whitelist entry into a concrete argv ARRAY.
143
+ *
144
+ * The output is never a string: literals and validated values are pushed as
145
+ * separate elements, so no value can contribute token boundaries. A parameter the
146
+ * entry does not declare is refused rather than appended.
147
+ */
148
+ export function buildArgv(entry, values) {
149
+ const unexpected = unknownParams(entry, values);
150
+ if (unexpected !== undefined)
151
+ return unexpected;
152
+ const argv = [];
153
+ for (const segment of entry.argv) {
154
+ if (segment.kind === 'literal') {
155
+ argv.push(segment.value);
156
+ continue;
157
+ }
158
+ const resolved = resolveParamValue(segment.name, entry.params[segment.name], values);
159
+ if (!resolved.ok)
160
+ return resolved;
161
+ argv.push(resolved.value);
162
+ }
163
+ return { ok: true, argv };
164
+ }
@@ -0,0 +1,147 @@
1
+ import { z } from 'zod';
2
+ /** Where the generator writes the artifact, relative to the package root. */
3
+ export declare const READONLY_WHITELIST_RELATIVE_PATH = "contracts/readonly-argv-whitelist.json";
4
+ declare const PlaceholderSpecSchema: z.ZodObject<{
5
+ type: z.ZodEnum<{
6
+ enum: "enum";
7
+ path: "path";
8
+ token: "token";
9
+ slug: "slug";
10
+ integer: "integer";
11
+ }>;
12
+ pattern: z.ZodOptional<z.ZodString>;
13
+ values: z.ZodOptional<z.ZodArray<z.ZodString>>;
14
+ min: z.ZodOptional<z.ZodNumber>;
15
+ max: z.ZodOptional<z.ZodNumber>;
16
+ default: z.ZodOptional<z.ZodNumber>;
17
+ binding: z.ZodObject<{
18
+ kind: z.ZodEnum<{
19
+ option: "option";
20
+ positional: "positional";
21
+ }>;
22
+ token: z.ZodString;
23
+ required: z.ZodBoolean;
24
+ }, z.core.$strip>;
25
+ constraintSource: z.ZodEnum<{
26
+ introspected: "introspected";
27
+ handwritten: "handwritten";
28
+ }>;
29
+ }, z.core.$strip>;
30
+ declare const EntrySchema: z.ZodObject<{
31
+ id: z.ZodString;
32
+ tool: z.ZodString;
33
+ commandPath: z.ZodArray<z.ZodString>;
34
+ argv: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
35
+ kind: z.ZodLiteral<"literal">;
36
+ value: z.ZodString;
37
+ }, z.core.$strip>, z.ZodObject<{
38
+ kind: z.ZodLiteral<"param">;
39
+ name: z.ZodString;
40
+ }, z.core.$strip>]>>;
41
+ params: z.ZodRecord<z.ZodString, z.ZodObject<{
42
+ type: z.ZodEnum<{
43
+ enum: "enum";
44
+ path: "path";
45
+ token: "token";
46
+ slug: "slug";
47
+ integer: "integer";
48
+ }>;
49
+ pattern: z.ZodOptional<z.ZodString>;
50
+ values: z.ZodOptional<z.ZodArray<z.ZodString>>;
51
+ min: z.ZodOptional<z.ZodNumber>;
52
+ max: z.ZodOptional<z.ZodNumber>;
53
+ default: z.ZodOptional<z.ZodNumber>;
54
+ binding: z.ZodObject<{
55
+ kind: z.ZodEnum<{
56
+ option: "option";
57
+ positional: "positional";
58
+ }>;
59
+ token: z.ZodString;
60
+ required: z.ZodBoolean;
61
+ }, z.core.$strip>;
62
+ constraintSource: z.ZodEnum<{
63
+ introspected: "introspected";
64
+ handwritten: "handwritten";
65
+ }>;
66
+ }, z.core.$strip>>;
67
+ introspection: z.ZodObject<{
68
+ optionTokens: z.ZodArray<z.ZodString>;
69
+ positionalCount: z.ZodNumber;
70
+ }, z.core.$strip>;
71
+ }, z.core.$strip>;
72
+ declare const WhitelistSchema: z.ZodObject<{
73
+ schemaVersion: z.ZodLiteral<1>;
74
+ source: z.ZodString;
75
+ readOnlyDefinition: z.ZodString;
76
+ entries: z.ZodArray<z.ZodObject<{
77
+ id: z.ZodString;
78
+ tool: z.ZodString;
79
+ commandPath: z.ZodArray<z.ZodString>;
80
+ argv: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
81
+ kind: z.ZodLiteral<"literal">;
82
+ value: z.ZodString;
83
+ }, z.core.$strip>, z.ZodObject<{
84
+ kind: z.ZodLiteral<"param">;
85
+ name: z.ZodString;
86
+ }, z.core.$strip>]>>;
87
+ params: z.ZodRecord<z.ZodString, z.ZodObject<{
88
+ type: z.ZodEnum<{
89
+ enum: "enum";
90
+ path: "path";
91
+ token: "token";
92
+ slug: "slug";
93
+ integer: "integer";
94
+ }>;
95
+ pattern: z.ZodOptional<z.ZodString>;
96
+ values: z.ZodOptional<z.ZodArray<z.ZodString>>;
97
+ min: z.ZodOptional<z.ZodNumber>;
98
+ max: z.ZodOptional<z.ZodNumber>;
99
+ default: z.ZodOptional<z.ZodNumber>;
100
+ binding: z.ZodObject<{
101
+ kind: z.ZodEnum<{
102
+ option: "option";
103
+ positional: "positional";
104
+ }>;
105
+ token: z.ZodString;
106
+ required: z.ZodBoolean;
107
+ }, z.core.$strip>;
108
+ constraintSource: z.ZodEnum<{
109
+ introspected: "introspected";
110
+ handwritten: "handwritten";
111
+ }>;
112
+ }, z.core.$strip>>;
113
+ introspection: z.ZodObject<{
114
+ optionTokens: z.ZodArray<z.ZodString>;
115
+ positionalCount: z.ZodNumber;
116
+ }, z.core.$strip>;
117
+ }, z.core.$strip>>;
118
+ }, z.core.$strip>;
119
+ export type PlaceholderSpec = z.infer<typeof PlaceholderSpecSchema>;
120
+ export type ReadOnlyWhitelistEntry = z.infer<typeof EntrySchema>;
121
+ export type ReadOnlyWhitelist = z.infer<typeof WhitelistSchema>;
122
+ /** Absolute path of the generated artifact for a package root. */
123
+ export declare function resolveReadOnlyWhitelistPath(root?: string): string;
124
+ /** Parse + validate the artifact text. Throws a zod error when the shape drifts. */
125
+ export declare function parseReadOnlyWhitelist(text: string): ReadOnlyWhitelist;
126
+ /** Read + validate the artifact. The only supported way to obtain it. */
127
+ export declare function loadReadOnlyWhitelist(root?: string): ReadOnlyWhitelist;
128
+ /** The param names an entry expects, in argv order. */
129
+ export declare function paramNamesOf(entry: ReadOnlyWhitelistEntry): string[];
130
+ /**
131
+ * The tool names the surface declares, in first-appearance order.
132
+ *
133
+ * This is the pre-tool interceptor's view of "what may be called", and it is
134
+ * computed HERE rather than in the MCP module on purpose: the interceptor must
135
+ * keep working when `src/services/mcp/` is deleted (spec §1), so it cannot reach
136
+ * into it for the answer. Grouping the entries by their `tool` field is the whole
137
+ * computation, and both readers do it from the same DATA.
138
+ */
139
+ export declare function toolIdsOf(whitelist: ReadOnlyWhitelist): string[];
140
+ /**
141
+ * Match a CONCRETE argv against the entries. A param slot consumes exactly one
142
+ * token, so `--apply` in a param slot still MATCHES here - refusing it is the
143
+ * validator's job (`argv-guard.ts`), not the matcher's. Keeping the two separate
144
+ * is what stops a rejected value from silently re-routing to another entry.
145
+ */
146
+ export declare function matchReadOnlyEntry(whitelist: ReadOnlyWhitelist, argv: readonly string[]): ReadOnlyWhitelistEntry | undefined;
147
+ export {};
@@ -0,0 +1,107 @@
1
+ /**
2
+ * The read-only argv whitelist, as DATA.
3
+ *
4
+ * WHY THIS IS A LOADER AND NOT AN IMPORT. The generated whitelist is read by two
5
+ * consumers that must survive the removal of the MCP module (spec §1): the
6
+ * pre-tool interceptor and, later, the MCP server. If either `import`ed the
7
+ * generated artifact it would become a static edge between them, and deleting
8
+ * the MCP module would break the gate. So the artifact stays a `.json` file and
9
+ * every reader goes through the filesystem. `tests/unit/standards/no-mcp-source-import.test.ts`
10
+ * pins that no module may `import` it.
11
+ *
12
+ * The shape is `{ schemaVersion, source, readOnlyDefinition, entries[] }`. Each
13
+ * entry is a full argv template (flags included) plus typed placeholders - the
14
+ * key is the WHOLE argv, never the top-level verb, because each named command
15
+ * family mixes read and write subcommands.
16
+ */
17
+ import { readFileSync } from 'node:fs';
18
+ import { join } from 'node:path';
19
+ import { z } from 'zod';
20
+ import { repoRoot } from 'peaks-loop-shared/paths';
21
+ /** Where the generator writes the artifact, relative to the package root. */
22
+ export const READONLY_WHITELIST_RELATIVE_PATH = 'contracts/readonly-argv-whitelist.json';
23
+ const PlaceholderBindingSchema = z.object({
24
+ /** `option` when the value is the argument of a flag, `positional` otherwise. */
25
+ kind: z.enum(['option', 'positional']),
26
+ /** The flag token (`--role`) or the positional name (`request-id`). */
27
+ token: z.string().min(1),
28
+ required: z.boolean()
29
+ });
30
+ const PlaceholderSpecSchema = z.object({
31
+ type: z.enum(['slug', 'enum', 'token', 'integer', 'path']),
32
+ pattern: z.string().min(1).optional(),
33
+ values: z.array(z.string().min(1)).min(1).optional(),
34
+ min: z.number().int().optional(),
35
+ max: z.number().int().optional(),
36
+ default: z.number().int().optional(),
37
+ /**
38
+ * Where the placeholder lives and whether the REGISTRY makes it mandatory.
39
+ * A placeholder present in the template is always supplied a value; this
40
+ * field carries the introspected fact, not the template's demand.
41
+ */
42
+ binding: PlaceholderBindingSchema,
43
+ /** `introspected` when the registry supplied the constraint, else `handwritten`. */
44
+ constraintSource: z.enum(['introspected', 'handwritten'])
45
+ });
46
+ const ArgvSegmentSchema = z.union([
47
+ z.object({ kind: z.literal('literal'), value: z.string().min(1) }),
48
+ z.object({ kind: z.literal('param'), name: z.string().min(1) })
49
+ ]);
50
+ const EntrySchema = z.object({
51
+ id: z.string().min(1),
52
+ tool: z.string().min(1),
53
+ commandPath: z.array(z.string().min(1)).min(1),
54
+ argv: z.array(ArgvSegmentSchema).min(1),
55
+ params: z.record(z.string(), PlaceholderSpecSchema),
56
+ introspection: z.object({
57
+ optionTokens: z.array(z.string().min(1)),
58
+ positionalCount: z.number().int().gte(0)
59
+ })
60
+ });
61
+ const WhitelistSchema = z.object({
62
+ schemaVersion: z.literal(1),
63
+ source: z.string().min(1),
64
+ readOnlyDefinition: z.string().min(1),
65
+ entries: z.array(EntrySchema).min(1)
66
+ });
67
+ /** Absolute path of the generated artifact for a package root. */
68
+ export function resolveReadOnlyWhitelistPath(root = repoRoot) {
69
+ return join(root, READONLY_WHITELIST_RELATIVE_PATH);
70
+ }
71
+ /** Parse + validate the artifact text. Throws a zod error when the shape drifts. */
72
+ export function parseReadOnlyWhitelist(text) {
73
+ return WhitelistSchema.parse(JSON.parse(text));
74
+ }
75
+ /** Read + validate the artifact. The only supported way to obtain it. */
76
+ export function loadReadOnlyWhitelist(root = repoRoot) {
77
+ return parseReadOnlyWhitelist(readFileSync(resolveReadOnlyWhitelistPath(root), 'utf8'));
78
+ }
79
+ /** The param names an entry expects, in argv order. */
80
+ export function paramNamesOf(entry) {
81
+ return entry.argv.flatMap((segment) => (segment.kind === 'param' ? [segment.name] : []));
82
+ }
83
+ /**
84
+ * The tool names the surface declares, in first-appearance order.
85
+ *
86
+ * This is the pre-tool interceptor's view of "what may be called", and it is
87
+ * computed HERE rather than in the MCP module on purpose: the interceptor must
88
+ * keep working when `src/services/mcp/` is deleted (spec §1), so it cannot reach
89
+ * into it for the answer. Grouping the entries by their `tool` field is the whole
90
+ * computation, and both readers do it from the same DATA.
91
+ */
92
+ export function toolIdsOf(whitelist) {
93
+ return [...new Set(whitelist.entries.map((entry) => entry.tool))];
94
+ }
95
+ /**
96
+ * Match a CONCRETE argv against the entries. A param slot consumes exactly one
97
+ * token, so `--apply` in a param slot still MATCHES here - refusing it is the
98
+ * validator's job (`argv-guard.ts`), not the matcher's. Keeping the two separate
99
+ * is what stops a rejected value from silently re-routing to another entry.
100
+ */
101
+ export function matchReadOnlyEntry(whitelist, argv) {
102
+ return whitelist.entries.find((entry) => {
103
+ if (entry.argv.length !== argv.length)
104
+ return false;
105
+ return entry.argv.every((segment, index) => segment.kind === 'literal' ? segment.value === argv[index] : true);
106
+ });
107
+ }