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,19 @@
1
+ import type { ModelProviderConfig, PeaksConfig } from './config-types.js';
2
+ export declare function isSensitiveConfigPath(path: string): boolean;
3
+ export declare function isLegacyConfigKey(path: string): boolean;
4
+ export declare function isProviderConfigPath(path: string): boolean;
5
+ export declare function isSecretKey(key: string): boolean;
6
+ export declare function isProviderBaseUrlPath(path: string): boolean;
7
+ export declare function validateProviderBaseUrl(value: unknown): void;
8
+ export declare function getProxyUrlCandidate(key: string, value: unknown): unknown;
9
+ export declare function isProxyConfigPath(path: string): boolean;
10
+ export declare function validateModelProviderConfig(providers: ModelProviderConfig): void;
11
+ export declare function validateProviderConfig(partial: Partial<PeaksConfig>): void;
12
+ export declare function isValidProxyUrl(value: string): boolean;
13
+ export declare function validateProxyUrl(value: unknown): void;
14
+ export declare function validateProxyConfig(partial: Partial<PeaksConfig>): void;
15
+ export declare function containsSensitiveConfigValue(value: unknown): boolean;
16
+ export type RedactedConfigValue = string | number | boolean | null | RedactedConfigValue[] | {
17
+ [key: string]: RedactedConfigValue;
18
+ };
19
+ export declare function redactConfigSecrets(value: unknown, path?: string): RedactedConfigValue;
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Config key/URL validators and the secret-redaction surface.
3
+ *
4
+ * Split out of `config-service.ts` (file-size cap campaign). The service
5
+ * re-exports every name declared here, so existing importers keep using
6
+ * `./config-service.js` unchanged.
7
+ */
8
+ import { isRecord } from './config-primitives.js';
9
+ export function isSensitiveConfigPath(path) {
10
+ const normalized = path.toLowerCase().replace(/[^a-z0-9]/g, '');
11
+ return (normalized.includes('apikey') ||
12
+ normalized.includes('accesskey') ||
13
+ normalized.includes('privatekey') ||
14
+ normalized.includes('token') ||
15
+ normalized.includes('secret') ||
16
+ normalized.includes('password') ||
17
+ normalized.includes('bearer') ||
18
+ normalized.includes('credential') ||
19
+ normalized.includes('auth'));
20
+ }
21
+ /**
22
+ * 2.0.1 slim-config contract: `~/.peaks/config.json` only stores
23
+ * `version` + `ocr.llm.*` placeholders. The 1.x → 2.0 migration
24
+ * moved per-project fields (`language`, `model`, `economyMode`,
25
+ * `swarmMode`) to `<project>/.peaks/preferences.json` (per spec
26
+ * §10.4). `setConfig` rejects writes to those keys and points the
27
+ * user to the preferences path; tokens / providers / proxy still
28
+ * live in `~/.peaks/config.json` (the loader is tolerant of them
29
+ * but does not synthesise defaults for them anymore).
30
+ */
31
+ const LEGACY_CONFIG_KEYS = new Set([
32
+ 'language',
33
+ 'model',
34
+ 'economyMode',
35
+ 'swarmMode'
36
+ ]);
37
+ export function isLegacyConfigKey(path) {
38
+ const topLevel = path.split(/[.[].*/, 1)[0] ?? '';
39
+ return LEGACY_CONFIG_KEYS.has(topLevel);
40
+ }
41
+ export function isProviderConfigPath(path) {
42
+ return path === 'providers' || path.startsWith('providers.');
43
+ }
44
+ export function isSecretKey(key) {
45
+ return isSensitiveConfigPath(key);
46
+ }
47
+ function sanitizeBaseUrlForDisplay(value) {
48
+ try {
49
+ const url = new URL(value);
50
+ url.username = '';
51
+ url.password = '';
52
+ url.search = '';
53
+ url.hash = '';
54
+ return url.toString();
55
+ }
56
+ catch {
57
+ return '[invalid-url-redacted]';
58
+ }
59
+ }
60
+ export function isProviderBaseUrlPath(path) {
61
+ return /^providers\.[^.]+\.baseUrl$/.test(path);
62
+ }
63
+ function isValidProviderBaseUrl(value) {
64
+ try {
65
+ const url = new URL(value);
66
+ return (url.protocol === 'https:' &&
67
+ url.username.length === 0 &&
68
+ url.password.length === 0 &&
69
+ url.search.length === 0 &&
70
+ url.hash.length === 0);
71
+ }
72
+ catch {
73
+ return false;
74
+ }
75
+ }
76
+ export function validateProviderBaseUrl(value) {
77
+ if (value !== undefined && (typeof value !== 'string' || !isValidProviderBaseUrl(value))) {
78
+ throw new Error('Provider base URL must be HTTPS without embedded credentials, query, or fragment');
79
+ }
80
+ }
81
+ export function getProxyUrlCandidate(key, value) {
82
+ if (key === 'proxy.httpProxy') {
83
+ return value;
84
+ }
85
+ if (key === 'proxy' && isRecord(value)) {
86
+ return value.httpProxy;
87
+ }
88
+ return undefined;
89
+ }
90
+ export function isProxyConfigPath(path) {
91
+ return path === 'proxy' || path.startsWith('proxy.');
92
+ }
93
+ export function validateModelProviderConfig(providers) {
94
+ for (const provider of Object.values(providers)) {
95
+ validateProviderBaseUrl(provider?.baseUrl);
96
+ }
97
+ }
98
+ export function validateProviderConfig(partial) {
99
+ validateModelProviderConfig(partial.providers ?? {});
100
+ }
101
+ export function isValidProxyUrl(value) {
102
+ try {
103
+ const url = new URL(value);
104
+ return ((url.protocol === 'http:' || url.protocol === 'https:') &&
105
+ url.username.length === 0 &&
106
+ url.password.length === 0 &&
107
+ url.pathname === '/' &&
108
+ url.search.length === 0 &&
109
+ url.hash.length === 0);
110
+ }
111
+ catch {
112
+ return false;
113
+ }
114
+ }
115
+ export function validateProxyUrl(value) {
116
+ if (value !== undefined && (typeof value !== 'string' || !isValidProxyUrl(value))) {
117
+ throw new Error('Proxy URL must be an HTTP or HTTPS URL without embedded credentials');
118
+ }
119
+ }
120
+ export function validateProxyConfig(partial) {
121
+ validateProxyUrl(partial.proxy?.httpProxy);
122
+ }
123
+ export function containsSensitiveConfigValue(value) {
124
+ if (Array.isArray(value)) {
125
+ return value.some(containsSensitiveConfigValue);
126
+ }
127
+ if (value === null || typeof value !== 'object') {
128
+ return false;
129
+ }
130
+ return Object.entries(value).some(([key, entry]) => isSecretKey(key) || containsSensitiveConfigValue(entry));
131
+ }
132
+ export function redactConfigSecrets(value, path = '') {
133
+ if (Array.isArray(value)) {
134
+ return value.map((item, index) => redactConfigSecrets(item, `${path}[${index}]`));
135
+ }
136
+ if (value === null || typeof value !== 'object') {
137
+ if (isProviderBaseUrlPath(path) && typeof value === 'string') {
138
+ return sanitizeBaseUrlForDisplay(value);
139
+ }
140
+ return value;
141
+ }
142
+ return Object.fromEntries(Object.entries(value).map(([key, entry]) => {
143
+ const nextPath = path ? `${path}.${key}` : key;
144
+ if (isSecretKey(key)) {
145
+ return [key, '***'];
146
+ }
147
+ if (isProviderBaseUrlPath(nextPath) && typeof entry === 'string') {
148
+ return [key, sanitizeBaseUrlForDisplay(entry)];
149
+ }
150
+ return [key, redactConfigSecrets(entry, nextPath)];
151
+ }));
152
+ }
@@ -0,0 +1,10 @@
1
+ import type { ConfigLayer, WorkspaceConfig } from './config-types.js';
2
+ export declare function getWorkspaceConfig(workspaceId: string, _projectRoot?: string | null): WorkspaceConfig | null;
3
+ export declare function addWorkspace(workspace: WorkspaceConfig, layer?: ConfigLayer): void;
4
+ export declare function removeWorkspace(workspaceId: string, layer?: ConfigLayer): boolean;
5
+ export declare function setCurrentWorkspace(workspaceId: string, layer?: ConfigLayer): boolean;
6
+ export declare function getCurrentWorkspaceConfig(): WorkspaceConfig | null;
7
+ export declare function getWorkspaceConfigForPath(path?: string): WorkspaceConfig | null;
8
+ export declare function ensureWorkspaceConfigForPath(path?: string): WorkspaceConfig | null;
9
+ export declare function getWorkspaceConfigForCurrentPath(): WorkspaceConfig | null;
10
+ export declare function ensureWorkspaceConfigForCurrentPath(): WorkspaceConfig | null;
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Workspace registry: the raw `workspaces` / `currentWorkspace` fields and the artifact marker.
3
+ *
4
+ * Split out of `config-service.ts` (file-size cap campaign). The service
5
+ * re-exports every name declared here, so existing importers keep using
6
+ * `./config-service.js` unchanged.
7
+ */
8
+ import { existsSync } from 'node:fs';
9
+ import { dirname, isAbsolute, resolve } from 'node:path';
10
+ import { stablePath } from '../../shared/path-utils.js';
11
+ import { getUserConfigPath, isInsidePath, resolveProjectRootForConfig, validateArtifactWorkspaceMarkerPath, validateArtifactWorkspaceRoot, validateProjectBootstrapConfigPathForWrite, validateUserConfigPathForWrite, writeConfigFileSafely, writeProjectConfigFile, writeUserConfigFile } from './config-safety.js';
12
+ import { toWorkspaceConfigs } from './config-coercion.js';
13
+ import { ensureDir, getProjectWriteTarget, readJsonFile } from './config-file-io.js';
14
+ import { getConfig } from './config-get.js';
15
+ import { isRecord, isSafeConfigSegment } from './config-primitives.js';
16
+ function readRawWorkspaceData(layer) {
17
+ const config = getConfig({ layer });
18
+ return isRecord(config)
19
+ ? {
20
+ currentWorkspace: typeof config.currentWorkspace === 'string' ? config.currentWorkspace : null,
21
+ workspaces: toWorkspaceConfigs(config.workspaces)
22
+ }
23
+ : { currentWorkspace: null, workspaces: [] };
24
+ }
25
+ function writeRawWorkspaceData(data, layer) {
26
+ const projectTarget = layer === 'project' ? getProjectWriteTarget() : null;
27
+ const targetPath = projectTarget?.configPath ?? getUserConfigPath();
28
+ ensureDir(dirname(targetPath));
29
+ const existing = projectTarget
30
+ ? (readJsonFile(targetPath, () => validateProjectBootstrapConfigPathForWrite(projectTarget.projectRoot, targetPath)) ?? {})
31
+ : (readJsonFile(targetPath, () => validateUserConfigPathForWrite(targetPath)) ?? {});
32
+ const merged = { ...existing, ...data };
33
+ const content = JSON.stringify(merged, null, 2);
34
+ if (projectTarget) {
35
+ writeProjectConfigFile(projectTarget.projectRoot, targetPath, content);
36
+ }
37
+ else {
38
+ writeUserConfigFile(targetPath, content);
39
+ }
40
+ }
41
+ function readAllWorkspaces() {
42
+ const userData = readRawWorkspaceData('user');
43
+ const projectData = readRawWorkspaceData('project');
44
+ const mergedWorkspaces = new Map();
45
+ for (const w of userData.workspaces)
46
+ mergedWorkspaces.set(w.workspaceId, w);
47
+ for (const w of projectData.workspaces)
48
+ mergedWorkspaces.set(w.workspaceId, w);
49
+ return {
50
+ currentWorkspace: projectData.currentWorkspace ?? userData.currentWorkspace,
51
+ workspaces: [...mergedWorkspaces.values()]
52
+ };
53
+ }
54
+ export function getWorkspaceConfig(workspaceId, _projectRoot) {
55
+ // Accepted for signature stability: the registry spans the user and project
56
+ // layers, so the id alone identifies the workspace.
57
+ void _projectRoot;
58
+ const { workspaces } = readAllWorkspaces();
59
+ return workspaces.find((w) => w.workspaceId === workspaceId) ?? null;
60
+ }
61
+ function readLayerConfig(layer) {
62
+ return readRawWorkspaceData(layer);
63
+ }
64
+ export function addWorkspace(workspace, layer = 'user') {
65
+ if (!isSafeConfigSegment(workspace.workspaceId)) {
66
+ throw new Error('Workspace id must only contain letters, numbers, dots, underscores, or hyphens and must not contain path traversal');
67
+ }
68
+ const config = readRawWorkspaceData(layer);
69
+ const workspaces = config.workspaces;
70
+ const existing = workspaces.findIndex((w) => w.workspaceId === workspace.workspaceId);
71
+ const updatedWorkspaces = existing >= 0
72
+ ? workspaces.map((existingWorkspace) => existingWorkspace.workspaceId === workspace.workspaceId ? workspace : existingWorkspace)
73
+ : [...workspaces, workspace];
74
+ writeRawWorkspaceData({ workspaces: updatedWorkspaces }, layer);
75
+ }
76
+ export function removeWorkspace(workspaceId, layer = 'user') {
77
+ if (!isSafeConfigSegment(workspaceId))
78
+ return false;
79
+ const config = readRawWorkspaceData(layer);
80
+ const workspaces = config.workspaces;
81
+ const idx = workspaces.findIndex((w) => w.workspaceId === workspaceId);
82
+ if (idx < 0)
83
+ return false;
84
+ const updatedWorkspaces = workspaces.filter((w) => w.workspaceId !== workspaceId);
85
+ const currentWorkspace = config.currentWorkspace === workspaceId
86
+ ? (updatedWorkspaces[0]?.workspaceId ?? null)
87
+ : (config.currentWorkspace ?? null);
88
+ writeRawWorkspaceData({ workspaces: updatedWorkspaces, currentWorkspace }, layer);
89
+ return true;
90
+ }
91
+ export function setCurrentWorkspace(workspaceId, layer = 'user') {
92
+ if (!isSafeConfigSegment(workspaceId))
93
+ return false;
94
+ const config = readRawWorkspaceData(layer);
95
+ const workspaces = config.workspaces;
96
+ const exists = workspaces.some((w) => w.workspaceId === workspaceId);
97
+ if (!exists)
98
+ return false;
99
+ writeRawWorkspaceData({ currentWorkspace: workspaceId }, layer);
100
+ return true;
101
+ }
102
+ export function getCurrentWorkspaceConfig() {
103
+ const { currentWorkspace, workspaces } = readAllWorkspaces();
104
+ if (!currentWorkspace)
105
+ return null;
106
+ return workspaces.find((w) => w.workspaceId === currentWorkspace) ?? null;
107
+ }
108
+ export function getWorkspaceConfigForPath(path = process.cwd()) {
109
+ const { workspaces } = readAllWorkspaces();
110
+ return findWorkspaceForPath(workspaces, path);
111
+ }
112
+ function findWorkspaceForPath(workspaces, path) {
113
+ const targetPath = stablePath(path);
114
+ const matches = workspaces.flatMap((workspace) => {
115
+ if (!isAbsolute(workspace.rootPath) || !existsSync(workspace.rootPath))
116
+ return [];
117
+ const rootPath = stablePath(workspace.rootPath);
118
+ return isInsidePath(targetPath, rootPath) ? [{ workspace, rootPath }] : [];
119
+ });
120
+ if (matches.length === 0)
121
+ return null;
122
+ return matches.reduce((best, match) => match.rootPath.length > best.rootPath.length ? match : best).workspace;
123
+ }
124
+ function getWorkspaceArtifactRoot(workspace) {
125
+ return workspace.artifactStorage?.localPath
126
+ ? resolve(workspace.artifactStorage.localPath)
127
+ : resolve(workspace.rootPath, '.peaks', 'artifacts');
128
+ }
129
+ function ensureArtifactWorkspaceMarker(workspace) {
130
+ const artifactRoot = getWorkspaceArtifactRoot(workspace);
131
+ const peaksPath = resolve(artifactRoot, '.peaks');
132
+ const markerPath = resolve(peaksPath, 'config.json');
133
+ ensureDir(artifactRoot);
134
+ validateArtifactWorkspaceRoot(artifactRoot, workspace.rootPath);
135
+ ensureDir(peaksPath);
136
+ validateArtifactWorkspaceMarkerPath(artifactRoot, peaksPath, markerPath);
137
+ if (!existsSync(markerPath)) {
138
+ writeConfigFileSafely(markerPath, '{}\n', () => validateArtifactWorkspaceMarkerPath(artifactRoot, peaksPath, markerPath), 'Artifact workspace marker must stay inside the artifact workspace');
139
+ }
140
+ }
141
+ export function ensureWorkspaceConfigForPath(path = process.cwd()) {
142
+ const projectRoot = resolveProjectRootForConfig(path);
143
+ if (!isAbsolute(projectRoot) || !existsSync(projectRoot))
144
+ return null;
145
+ const config = readLayerConfig('user');
146
+ const existingWorkspace = findWorkspaceForPath(config.workspaces, path);
147
+ if (existingWorkspace) {
148
+ ensureArtifactWorkspaceMarker(existingWorkspace);
149
+ return existingWorkspace;
150
+ }
151
+ return null;
152
+ }
153
+ export function getWorkspaceConfigForCurrentPath() {
154
+ return getWorkspaceConfigForPath(process.cwd());
155
+ }
156
+ export function ensureWorkspaceConfigForCurrentPath() {
157
+ return ensureWorkspaceConfigForPath(process.cwd());
158
+ }
@@ -0,0 +1,21 @@
1
+ import type { McpInstallCommand, McpInstallOutcome, McpInstallRunner } from './mcp-install.js';
2
+ /**
3
+ * Ceiling on ONE harness command. `spawnSync` without `timeout` has no ceiling
4
+ * at all, and the failure it lets through is measured, not hypothetical: a
5
+ * real harness binary on this host starts and then does not return within 25 s.
6
+ * Unbounded, that blocks `peaks mcp install` in the foreground forever. Same
7
+ * class the MCP CLI executor bounds (`cli-executor.ts`), set to twice its 15 s
8
+ * because the child is the harness's binary and its startup is its own to
9
+ * spend. A plan is at most three commands, so the install is bounded at 3x.
10
+ */
11
+ export declare const MCP_INSTALL_TIMEOUT_MS = 30000;
12
+ /**
13
+ * One harness command, with the deadline applied. `windowsHide` is the tree's
14
+ * spawn contract: a CLI that briefly runs a harness must not flash a console
15
+ * window on a desktop OS. `timeoutMs` is a parameter only so a test can watch
16
+ * the deadline fire without waiting out the production value — callers want
17
+ * `spawnMcpInstallRunner`, which fixes it.
18
+ */
19
+ export declare function spawnMcpInstallCommand(command: McpInstallCommand, timeoutMs?: number): McpInstallOutcome;
20
+ /** The production runner: the deadline above, and nothing else left to decide. */
21
+ export declare const spawnMcpInstallRunner: McpInstallRunner;
@@ -0,0 +1,59 @@
1
+ // src/services/distribution/mcp-install-runner.ts
2
+ //
3
+ // The production runner behind the vendor-neutral MCP registration engine
4
+ // (`mcp-install.ts`): it runs one harness command under a deadline and reports
5
+ // what the process said. It lives in its own module only so the engine keeps its
6
+ // size; the engine RE-EXPORTS it, so every caller still imports it from
7
+ // `mcp-install.js` and no import path moved.
8
+ //
9
+ // THE FIELD THIS MODULE EXISTS FOR. A run that exits non-zero ANSWERED the
10
+ // question — "no such registration" — and a run the deadline kills, or one that
11
+ // never launches, did not: `answered: false` is the only place that distinction
12
+ // is born, and it is what stops `peaks mcp uninstall` from reporting a hung
13
+ // harness's scope as "nothing was there".
14
+ import { spawnSync } from 'node:child_process';
15
+ /**
16
+ * Ceiling on ONE harness command. `spawnSync` without `timeout` has no ceiling
17
+ * at all, and the failure it lets through is measured, not hypothetical: a
18
+ * real harness binary on this host starts and then does not return within 25 s.
19
+ * Unbounded, that blocks `peaks mcp install` in the foreground forever. Same
20
+ * class the MCP CLI executor bounds (`cli-executor.ts`), set to twice its 15 s
21
+ * because the child is the harness's binary and its startup is its own to
22
+ * spend. A plan is at most three commands, so the install is bounded at 3x.
23
+ */
24
+ export const MCP_INSTALL_TIMEOUT_MS = 30_000;
25
+ /**
26
+ * One harness command, with the deadline applied. `windowsHide` is the tree's
27
+ * spawn contract: a CLI that briefly runs a harness must not flash a console
28
+ * window on a desktop OS. `timeoutMs` is a parameter only so a test can watch
29
+ * the deadline fire without waiting out the production value — callers want
30
+ * `spawnMcpInstallRunner`, which fixes it.
31
+ */
32
+ export function spawnMcpInstallCommand(command, timeoutMs = MCP_INSTALL_TIMEOUT_MS) {
33
+ const result = spawnSync(command.command, [...command.args], {
34
+ stdio: 'pipe',
35
+ windowsHide: true,
36
+ encoding: 'utf8',
37
+ timeout: timeoutMs
38
+ });
39
+ if (result.error !== undefined) {
40
+ // `spawnSync` kills the child at the deadline and reports its own timeout as
41
+ // ETIMEDOUT. A deadline and a launch failure are different facts, but they
42
+ // share the one that matters here: the harness never rendered a verdict.
43
+ const timedOut = result.error.code === 'ETIMEDOUT';
44
+ return {
45
+ ok: false,
46
+ answered: false,
47
+ detail: timedOut
48
+ ? `timed out after ${timeoutMs} ms and was killed: ${command.command} ${command.args.join(' ')}`
49
+ : result.error.message
50
+ };
51
+ }
52
+ if (result.status === 0) {
53
+ return { ok: true, detail: '' };
54
+ }
55
+ const stderr = (result.stderr ?? '').trim();
56
+ return { ok: false, detail: stderr.length > 0 ? stderr : `exit ${result.status ?? 'unknown'}` };
57
+ }
58
+ /** The production runner: the deadline above, and nothing else left to decide. */
59
+ export const spawnMcpInstallRunner = (command) => spawnMcpInstallCommand(command);
@@ -0,0 +1,95 @@
1
+ import type { IdeAdapter, IdeId } from '../ide/ide-types.js';
2
+ import { type IdeMcpInstallProfile } from '../ide/ide-mcp-install-types.js';
3
+ /** One process the plan wants run, as command + args. Never a joined string. */
4
+ export interface McpInstallCommand {
5
+ readonly command: string;
6
+ readonly args: readonly string[];
7
+ }
8
+ /** What one operation is for, so a report can say which step did what. */
9
+ export type McpInstallOperation = 'remove' | 'add';
10
+ export interface McpInstallStep {
11
+ readonly operation: McpInstallOperation;
12
+ /** The scope this step acts on; the target scope for an `add`. */
13
+ readonly scope: string;
14
+ readonly command: McpInstallCommand;
15
+ }
16
+ /** What a runner says happened. `detail` is surfaced verbatim when it did not. */
17
+ export interface McpInstallOutcome {
18
+ readonly ok: boolean;
19
+ readonly detail: string;
20
+ /**
21
+ * `false` only when the harness NEVER RENDERED A VERDICT — the deadline killed
22
+ * it, or it never launched. A non-zero exit answered ("no such registration"),
23
+ * so an absent value reads as `true`, as does every outcome that predates this
24
+ * field.
25
+ */
26
+ readonly answered?: boolean;
27
+ }
28
+ /** The seam: a test supplies one, the CLI supplies the spawning one below. */
29
+ export type McpInstallRunner = (command: McpInstallCommand) => McpInstallOutcome;
30
+ export interface McpInstallReport {
31
+ readonly serverName: string;
32
+ /** Scopes where the removal reported success — i.e. there was something to remove. */
33
+ readonly removed: readonly string[];
34
+ /** Scopes where the removal reported failure — normally "nothing was there". */
35
+ readonly absent: readonly string[];
36
+ /**
37
+ * Scopes whose removal never reached a verdict — the harness timed out or never
38
+ * launched — so it is neither `removed` nor honestly `absent`. Optional because
39
+ * the install sweep tolerates a failed removal (it is about to write) and never
40
+ * populates it; the uninstall sweep always does.
41
+ */
42
+ readonly unknown?: readonly string[];
43
+ readonly added: boolean;
44
+ readonly ok: boolean;
45
+ readonly detail: string;
46
+ }
47
+ /**
48
+ * The argv that launches THIS installation's read-only MCP server.
49
+ *
50
+ * An interpreter and an entry path, in array form: the same shape `mcp serve`
51
+ * spawns and the same one the read-only executor uses. A bare CLI name would be
52
+ * a `.cmd` shim on some platforms, and picking a spelling per platform is the
53
+ * branch this tree forbids — resolving the pair needs none.
54
+ */
55
+ export declare function resolveMcpServerArgv(): readonly string[];
56
+ /** The plan: one removal per declared scope, then the addition. Order is the contract. */
57
+ export declare function buildMcpInstallPlan(profile: IdeMcpInstallProfile, serverArgv: readonly string[]): readonly McpInstallStep[];
58
+ /** Every removal, then the addition. A failed removal is a fact, not a failure. */
59
+ export declare function runMcpInstallPlan(profile: IdeMcpInstallProfile, serverArgv: readonly string[], runner: McpInstallRunner): McpInstallReport;
60
+ /**
61
+ * The removal sweep on its own — what `uninstall` is, and all that it is.
62
+ *
63
+ * `exit 0` removed it, `exit != 0` answered "no" (absent, unchanged) — but a run the
64
+ * deadline killed, or one that never launched, ANSWERED NOTHING, and calling that
65
+ * "nothing was there" is the lie this sweep used to tell. Those scopes are `unknown`,
66
+ * and `ok` is false whenever any scope is unknown: with a scope the harness never
67
+ * spoke for, the removal is unconfirmed and the state is not known.
68
+ */
69
+ export declare function runMcpUninstallPlan(profile: IdeMcpInstallProfile, serverArgv: readonly string[], runner: McpInstallRunner): McpInstallReport;
70
+ /**
71
+ * One adapter's outcome. `skipped` is a FIRST-CLASS result and not an error: the
72
+ * install's contract with an adapter that declares no registration entry is
73
+ * silence, and a caller that has to distinguish "did nothing" from
74
+ * "failed" needs the distinction to be in the value, not in a log line.
75
+ */
76
+ export type AdapterMcpInstallResult = {
77
+ readonly ideId: IdeId;
78
+ readonly skipped: true;
79
+ readonly reason: string;
80
+ } | {
81
+ readonly ideId: IdeId;
82
+ readonly skipped: false;
83
+ readonly report: McpInstallReport;
84
+ };
85
+ export declare const NO_MCP_INSTALL_REASON = "adapter declares no mcpInstall profile";
86
+ /** Register this adapter's harness, or report that there is nothing to register. */
87
+ export declare function installMcpForAdapter(adapter: IdeAdapter, serverArgv: readonly string[], runner: McpInstallRunner): AdapterMcpInstallResult;
88
+ /** The same, for the removal side. */
89
+ export declare function uninstallMcpForAdapter(adapter: IdeAdapter, serverArgv: readonly string[], runner: McpInstallRunner): AdapterMcpInstallResult;
90
+ /**
91
+ * The production runner and its deadline live in `mcp-install-runner.ts` — split
92
+ * out only to keep this engine within the file-size cap. They are re-exported, so
93
+ * the boundary is invisible: every caller still imports them from here.
94
+ */
95
+ export { MCP_INSTALL_TIMEOUT_MS, spawnMcpInstallCommand, spawnMcpInstallRunner } from './mcp-install-runner.js';