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,104 @@
1
+ /**
2
+ * The REGISTRATION profile of one harness's MCP entry point (spec §8.3).
3
+ *
4
+ * WHY THIS IS NOT `IdeMcpProfile`. That profile (on `IdeAdapter.mcp`) answers
5
+ * "how does this harness SPELL a peaks tool name", which the pre-tool branch
6
+ * needs. This one answers "how does this harness register a server", which only
7
+ * the distribution path needs. One field would conflate two questions asked by
8
+ * two callers that never run together.
9
+ *
10
+ * WHY IT DECLARES ARGV AND NOT A COMMAND STRING. Registering is the HARNESS's
11
+ * own operation: `peaks mcp install` calls the harness's entry point rather than
12
+ * hand-editing the harness's config file, because that file is full of the
13
+ * user's state and hand-editing it is neither safe nor version-stable (§8.3).
14
+ * The entry is declared as an ARRAY with three placeholders, so the engine that
15
+ * consumes it substitutes values into an array and never builds a command line.
16
+ *
17
+ * WHY add AND remove ARE BOTH DECLARED. A harness's register verb is not
18
+ * idempotent — same name, same scope, and it fails, with no `--force` and no
19
+ * `update` — so the install is delete-then-add (§8.3). Both halves are therefore
20
+ * part of the contract, and `scopes` exists because the entry can already sit in
21
+ * more than one of them: the delete is a sweep, not a targeted call.
22
+ *
23
+ * WHAT IS DELIBERATELY ABSENT: any harness name, any platform name, and any
24
+ * branch on either. A vendor's own spellings belong in its adapter, which is the
25
+ * only module that fills this type in.
26
+ */
27
+ /** Placeholder for the server key the harness files peaks under. */
28
+ export const MCP_NAME_PLACEHOLDER = '<name>';
29
+ /** Placeholder for one scope the entry can live in; substituted once per removal. */
30
+ export const MCP_SCOPE_PLACEHOLDER = '<scope>';
31
+ /** Placeholder for the launched server argv — the command and every token after it. */
32
+ export const MCP_SERVER_ARGV_PLACEHOLDER = '<server-argv>';
33
+ /** The placeholders an argv template may carry, and nothing else may look like one. */
34
+ export const MCP_ARGV_PLACEHOLDERS = [
35
+ MCP_NAME_PLACEHOLDER,
36
+ MCP_SCOPE_PLACEHOLDER,
37
+ MCP_SERVER_ARGV_PLACEHOLDER
38
+ ];
39
+ /**
40
+ * One template's structural requirements: it must carry something, its
41
+ * bracket-shaped tokens must be ones the engine knows how to substitute, and the
42
+ * placeholders the caller needs in it must be there. An unknown placeholder is a
43
+ * refusal rather than a literal, because passing it through would hand the
44
+ * harness an argument that means nothing to it.
45
+ */
46
+ function assertArgvTemplate(label, argv, required, refuse) {
47
+ if (argv.length === 0)
48
+ refuse(`${label} is empty`);
49
+ for (const token of argv) {
50
+ const bracketShaped = token.startsWith('<') && token.endsWith('>');
51
+ const known = MCP_ARGV_PLACEHOLDERS.includes(token);
52
+ if (bracketShaped && !known)
53
+ refuse(`${label} carries unknown placeholder '${token}'`);
54
+ }
55
+ for (const placeholder of required) {
56
+ if (!argv.includes(placeholder))
57
+ refuse(`${label} does not carry ${placeholder}`);
58
+ }
59
+ }
60
+ /**
61
+ * A declaration that cannot drive an install is a defect in the adapter, and it
62
+ * is reported as one rather than silently producing an argv the harness will
63
+ * reject. That is the whole argument for throwing here: a profile missing its
64
+ * server-argv placeholder would install a registration that launches nothing,
65
+ * and nothing would say so.
66
+ */
67
+ export function assertMcpInstallProfile(profile) {
68
+ const refuse = (reason) => {
69
+ throw new Error(`IdeMcpInstallProfile is not installable: ${reason}`);
70
+ };
71
+ if (profile.serverName.length === 0)
72
+ refuse('serverName is empty');
73
+ if (profile.scopes.length === 0)
74
+ refuse('scopes is empty');
75
+ if (!profile.scopes.includes(profile.targetScope)) {
76
+ refuse(`targetScope '${profile.targetScope}' is not one of the declared scopes`);
77
+ }
78
+ assertArgvTemplate('addArgv', profile.addArgv, [MCP_NAME_PLACEHOLDER, MCP_SCOPE_PLACEHOLDER, MCP_SERVER_ARGV_PLACEHOLDER], refuse);
79
+ assertArgvTemplate('removeArgv', profile.removeArgv, [MCP_NAME_PLACEHOLDER, MCP_SCOPE_PLACEHOLDER], refuse);
80
+ }
81
+ /**
82
+ * Expand one argv template. A placeholder that stands for SEVERAL tokens expands
83
+ * to all of them, which is why this returns an array and why the launched server
84
+ * argv is passed as one: the caller never joins and never splits.
85
+ */
86
+ export function expandMcpArgv(argv, values) {
87
+ const expanded = [];
88
+ for (const token of argv) {
89
+ if (token === MCP_NAME_PLACEHOLDER) {
90
+ expanded.push(values.serverName);
91
+ continue;
92
+ }
93
+ if (token === MCP_SCOPE_PLACEHOLDER) {
94
+ expanded.push(values.scope);
95
+ continue;
96
+ }
97
+ if (token === MCP_SERVER_ARGV_PLACEHOLDER) {
98
+ expanded.push(...values.serverArgv);
99
+ continue;
100
+ }
101
+ expanded.push(token);
102
+ }
103
+ return expanded;
104
+ }
@@ -13,12 +13,13 @@
13
13
  */
14
14
  import type { SubAgentDispatcher } from '../dispatch/sub-agent-dispatcher.js';
15
15
  import type { ContextPercentFallbackInput, IdeCompactProfile } from './ide-compact-types.js';
16
+ import type { IdeMcpInstallProfile } from './ide-mcp-install-types.js';
16
17
  /**
17
18
  * Re-exported so every importer of `./ide-types.js` keeps seeing the whole
18
19
  * adapter type surface from the original path (b1 file-size campaign: the two
19
20
  * declarations now live in `./ide-compact-types.js`).
20
21
  */
21
- export type { ContextPercentFallbackInput, IdeCompactProfile };
22
+ export type { ContextPercentFallbackInput, IdeCompactProfile, IdeMcpInstallProfile };
22
23
  export type IdeId = 'claude-code' | 'trae' | 'codex' | 'cursor' | 'qoder' | 'tongyi-lingma' | 'hermes' | 'openclaw' | 'zcode';
23
24
  export interface IdeCapabilities {
24
25
  /** peaks gate enforce 是否适用该 IDE(必备) */
@@ -171,6 +172,49 @@ export interface IdeAdapter {
171
172
  * funnelling all vendor signal through this method.
172
173
  */
173
174
  readonly resolveCallerId: (env?: NodeJS.ProcessEnv) => string;
175
+ /**
176
+ * How this harness SPELLS the MCP tool names of a peaks server.
177
+ *
178
+ * Optional, like `skillInstall?` / `standardsProfile?` / `compact?`: an adapter
179
+ * that leaves it undefined declares "this harness has no MCP tool surface I can
180
+ * name", and every consumer treats that as "nothing to match" rather than as an
181
+ * error.
182
+ *
183
+ * It exists because one tool has SEVERAL spellings. A server registered
184
+ * directly and the same server arriving through a plugin produce different
185
+ * tool names, and an enforcement matcher written against one of them does not
186
+ * fire on the other — silently. Declaring them here is what lets the
187
+ * pre-tool branch and the installed hook entry agree on the full set.
188
+ *
189
+ * `resolveCallerId` above is the precedent for the placement rule: a vendor's
190
+ * naming convention is vendor signal, and vendor signal is funnelled through
191
+ * the adapter so no other module has to know it.
192
+ */
193
+ readonly mcp?: IdeMcpProfile;
194
+ /**
195
+ * How this harness REGISTERS an MCP server (spec §8.3), consumed by
196
+ * `peaks mcp install/uninstall`. Optional, like `mcp` above: leaving it
197
+ * undefined declares "no registration entry peaks may call", and the install
198
+ * reads that as "nothing to do". See `ide-mcp-install-types.ts`.
199
+ */
200
+ readonly mcpInstall?: IdeMcpInstallProfile;
201
+ }
202
+ /**
203
+ * The MCP naming profile of one harness.
204
+ *
205
+ * Deliberately ONE field. Templates both MATCH a concrete tool name and
206
+ * CONSTRUCT one, which is what lets a conformance test build a call for a
207
+ * channel it has never seen (spec §6.3) instead of restating the harness's
208
+ * naming in the test — a restatement that would go stale the moment a channel
209
+ * is added.
210
+ */
211
+ export interface IdeMcpProfile {
212
+ /**
213
+ * Tool-name templates. `*` is replaced by the bare MCP tool id, so
214
+ * `mcp__peaks__*` describes every tool of a server registered under the name
215
+ * `peaks` on the direct channel.
216
+ */
217
+ readonly toolNameTemplates: readonly string[];
174
218
  }
175
219
  /**
176
220
  * Per-IDE standards-file location + format profile. Used by the
@@ -0,0 +1,34 @@
1
+ import type { IdeAdapter, IdeMcpProfile } from './ide-types.js';
2
+ /** The placeholder an adapter's tool-name template uses for the bare tool id. */
3
+ export declare const TOOL_ID_PLACEHOLDER = "*";
4
+ /** A concrete tool name matched back to the adapter template that produced it. */
5
+ export interface McpToolMatch {
6
+ /** The bare tool id — the part the template's placeholder stood for. */
7
+ readonly toolId: string;
8
+ /** The template that matched, so a caller can report which channel fired. */
9
+ readonly template: string;
10
+ }
11
+ /** The declared profile, or an empty one for an adapter that opts out. */
12
+ export declare function mcpProfileOf(adapter: IdeAdapter): IdeMcpProfile | undefined;
13
+ /** Every tool-name template the adapter declares, in declaration order. */
14
+ export declare function mcpToolNameTemplates(adapter: IdeAdapter): readonly string[];
15
+ /** The concrete harness tool name for a tool id under one template. */
16
+ export declare function mcpToolName(template: string, toolId: string): string;
17
+ /**
18
+ * The tool id a concrete name carries under one template, or `undefined`. The
19
+ * template is anchored: an unanchored match would let a longer name smuggle the
20
+ * id (and would make `matchMcpToolName` order-dependent).
21
+ */
22
+ export declare function mcpToolIdFrom(template: string, toolName: string): string | undefined;
23
+ /**
24
+ * Match a concrete harness tool name against every template the adapter
25
+ * declares, in declaration order. This is the ONE entry point the enforcement
26
+ * branch uses, so "which channels are covered" is answered by the adapter alone.
27
+ */
28
+ export declare function matchMcpToolName(adapter: IdeAdapter, toolName: string): McpToolMatch | undefined;
29
+ /**
30
+ * The PreToolUse `matcher` source covering every declared channel, ready to be
31
+ * joined into a hook entry's matcher field. `*` becomes `.*` and everything else
32
+ * is escaped, so the source matches exactly the names the templates describe.
33
+ */
34
+ export declare function mcpHookMatcher(adapter: IdeAdapter): string | undefined;
@@ -0,0 +1,84 @@
1
+ // src/services/ide/mcp-tool-matcher.ts
2
+ //
3
+ // The vendor-translation layer for MCP tool NAMES (spec §6.3, §13).
4
+ //
5
+ // An MCP tool's name is harness-specific AND channel-specific: the very same
6
+ // `peaks_status` tool is spelled one way when the server is registered directly
7
+ // and another way when it arrives through a plugin. A matcher hard-coded against
8
+ // one spelling keeps working on the channel it was written for and SILENTLY
9
+ // stops firing on the other — the failure mode is an enforcement layer that
10
+ // reports nothing because it never ran. So the spellings are declared by the
11
+ // adapter (`IdeAdapter.mcp`) and this module is the only place that turns a
12
+ // declaration into (a) a match against a concrete tool name and (b) the
13
+ // PreToolUse matcher written into the harness's settings.
14
+ //
15
+ // Vendor names do not belong here: every string below is either generic syntax
16
+ // or comes from the adapter. The isolation zone lives in `adapters/`.
17
+ /** The placeholder an adapter's tool-name template uses for the bare tool id. */
18
+ export const TOOL_ID_PLACEHOLDER = '*';
19
+ /** The declared profile, or an empty one for an adapter that opts out. */
20
+ export function mcpProfileOf(adapter) {
21
+ return adapter.mcp;
22
+ }
23
+ /** Every tool-name template the adapter declares, in declaration order. */
24
+ export function mcpToolNameTemplates(adapter) {
25
+ return adapter.mcp?.toolNameTemplates ?? [];
26
+ }
27
+ /** Escape a literal segment so it cannot act as a pattern metacharacter. */
28
+ function escapeLiteral(value) {
29
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
30
+ }
31
+ /**
32
+ * Split a template on its placeholder. A template must carry EXACTLY one
33
+ * placeholder: zero would make the tool id unaddressable, and two would make the
34
+ * captured id ambiguous. Both are adapter bugs, so they throw with the template
35
+ * in the message rather than degrading to a matcher that matches nothing.
36
+ */
37
+ function splitTemplate(template) {
38
+ const parts = template.split(TOOL_ID_PLACEHOLDER);
39
+ if (parts.length !== 2 || parts[0] === undefined || parts[1] === undefined) {
40
+ throw new Error(`MCP tool-name template '${template}' must contain exactly one '${TOOL_ID_PLACEHOLDER}' placeholder.`);
41
+ }
42
+ return [parts[0], parts[1]];
43
+ }
44
+ /** The concrete harness tool name for a tool id under one template. */
45
+ export function mcpToolName(template, toolId) {
46
+ const [prefix, suffix] = splitTemplate(template);
47
+ return `${prefix}${toolId}${suffix}`;
48
+ }
49
+ /**
50
+ * The tool id a concrete name carries under one template, or `undefined`. The
51
+ * template is anchored: an unanchored match would let a longer name smuggle the
52
+ * id (and would make `matchMcpToolName` order-dependent).
53
+ */
54
+ export function mcpToolIdFrom(template, toolName) {
55
+ const [prefix, suffix] = splitTemplate(template);
56
+ const pattern = new RegExp(`^${escapeLiteral(prefix)}(.*)${escapeLiteral(suffix)}$`);
57
+ const matched = pattern.exec(toolName);
58
+ return matched?.[1];
59
+ }
60
+ /**
61
+ * Match a concrete harness tool name against every template the adapter
62
+ * declares, in declaration order. This is the ONE entry point the enforcement
63
+ * branch uses, so "which channels are covered" is answered by the adapter alone.
64
+ */
65
+ export function matchMcpToolName(adapter, toolName) {
66
+ for (const template of mcpToolNameTemplates(adapter)) {
67
+ const toolId = mcpToolIdFrom(template, toolName);
68
+ if (toolId !== undefined)
69
+ return { toolId, template };
70
+ }
71
+ return undefined;
72
+ }
73
+ /**
74
+ * The PreToolUse `matcher` source covering every declared channel, ready to be
75
+ * joined into a hook entry's matcher field. `*` becomes `.*` and everything else
76
+ * is escaped, so the source matches exactly the names the templates describe.
77
+ */
78
+ export function mcpHookMatcher(adapter) {
79
+ const sources = mcpToolNameTemplates(adapter).map((template) => {
80
+ const [prefix, suffix] = splitTemplate(template);
81
+ return `${escapeLiteral(prefix)}.*${escapeLiteral(suffix)}`;
82
+ });
83
+ return sources.length === 0 ? undefined : sources.join('|');
84
+ }
@@ -17,6 +17,13 @@ import process from 'node:process';
17
17
  function locateNpmCliScript(scriptFile) {
18
18
  const candidates = process.platform === 'win32'
19
19
  ? [
20
+ // Standard Windows layout — the installer, the zip, and
21
+ // nvm-for-windows all put `node_modules/npm` beside `node.exe`, so the
22
+ // install is ONE level up from `process.execPath`, not two. This is the
23
+ // `npm` belonging to the very `node` that will run the script, so it is
24
+ // tried first; the three entries after it are the backstop for an `npm`
25
+ // installed elsewhere.
26
+ join(process.execPath, '..', 'node_modules', 'npm', 'bin', scriptFile),
20
27
  join(process.execPath, '..', '..', 'node_modules', 'npm', 'bin', scriptFile),
21
28
  `C:/nvm4w/nodejs/node_modules/npm/bin/${scriptFile}`,
22
29
  `C:/Program Files/nodejs/node_modules/npm/bin/${scriptFile}`
@@ -0,0 +1,36 @@
1
+ /** Ceiling on one CLI execution. Generous for a read, far short of "forever". */
2
+ export declare const DEFAULT_EXECUTION_TIMEOUT_MS = 15000;
3
+ /** How to start this tree's own CLI. */
4
+ export interface CliLaunch {
5
+ readonly command: string;
6
+ readonly argsPrefix: readonly string[];
7
+ }
8
+ /**
9
+ * Resolve the platform-neutral launch shape. Uses the shared daemon-supervisor
10
+ * resolvers rather than a second copy of them: the entry path and the
11
+ * TypeScript-loader flags have to agree with every other self-spawn in this
12
+ * tree, and the file that owns them says so in as many words.
13
+ */
14
+ export declare function resolveCliLaunch(): CliLaunch;
15
+ export interface CliExecution {
16
+ /** The concrete argv that was handed to the CLI, without the launch prefix. */
17
+ readonly argv: readonly string[];
18
+ /** Exit status, or `null` when the process died on a signal or was killed. */
19
+ readonly exitCode: number | null;
20
+ readonly stdout: string;
21
+ readonly stderr: string;
22
+ /** True when the deadline fired and the child was killed. */
23
+ readonly timedOut: boolean;
24
+ /** Set ONLY when the process could not be started at all. Never set on timeout. */
25
+ readonly launchError?: string;
26
+ }
27
+ export interface ExecuteOptions {
28
+ readonly launch?: CliLaunch;
29
+ readonly timeoutMs?: number;
30
+ readonly cwd?: string;
31
+ }
32
+ /**
33
+ * Run one argv. Always resolves: a failure is a described outcome, never a
34
+ * rejection, because the caller has to report it to the harness either way.
35
+ */
36
+ export declare function executeCliArgv(argv: readonly string[], options?: ExecuteOptions): Promise<CliExecution>;
@@ -0,0 +1,97 @@
1
+ // src/services/mcp/cli-executor.ts
2
+ //
3
+ // The one place the MCP server touches the outside world: it runs a concrete
4
+ // argv against the peaks CLI and hands back what happened.
5
+ //
6
+ // THREE RULES, EACH MEASURED INTO THE SHAPE BELOW.
7
+ //
8
+ // 1. NO SHELL, NO PLATFORM BRANCH (spec §8.2). The launch is
9
+ // `node <this tree's CLI entry>` — `process.execPath` plus the argument list
10
+ // that makes this Node interpret that entry. Naming the CLI as a command
11
+ // (`peaks`) is measurably wrong on a platform whose CLI is a batch shim:
12
+ // Node refuses to spawn `.cmd`/`.bat` without a shell, and with a shell the
13
+ // argv array stops being an argv array. `process.execPath` needs neither, so
14
+ // one shape serves every platform and no `if (platform)` exists.
15
+ //
16
+ // 2. THE TIMEOUT IS MANDATORY, NOT OPTIONAL. `peaks job status --watch` never
17
+ // returns. It is outside the read-only surface, but it proves the class: a
18
+ // server that waits forever on a hung child gives its caller no recovery
19
+ // path. A timeout therefore returns a NAMED failure, never an empty success
20
+ // (spec §7.2 + §9 rule 3).
21
+ //
22
+ // 3. THE CHILD GETS NO STDIN. Our stdin is the JSON-RPC transport; a child that
23
+ // inherited it would read our protocol stream and answer the harness itself.
24
+ import { spawn } from 'node:child_process';
25
+ import { readonlySpawnOptions } from '../readonly-surface/argv-guard.js';
26
+ import { cliEntryPath, interpreterArgs } from '../web/daemon-supervisor.js';
27
+ /** Ceiling on one CLI execution. Generous for a read, far short of "forever". */
28
+ export const DEFAULT_EXECUTION_TIMEOUT_MS = 15_000;
29
+ /**
30
+ * Resolve the platform-neutral launch shape. Uses the shared daemon-supervisor
31
+ * resolvers rather than a second copy of them: the entry path and the
32
+ * TypeScript-loader flags have to agree with every other self-spawn in this
33
+ * tree, and the file that owns them says so in as many words.
34
+ */
35
+ export function resolveCliLaunch() {
36
+ return { command: process.execPath, argsPrefix: interpreterArgs(cliEntryPath()) };
37
+ }
38
+ /** The spawn + drain half: one child, one settlement, whatever happens to it. */
39
+ function runChild(launch, argv, cwd, timeoutMs) {
40
+ return new Promise((resolve) => {
41
+ let stdout = '';
42
+ let stderr = '';
43
+ let timedOut = false;
44
+ let settled = false;
45
+ let launchError;
46
+ const child = spawn(launch.command, [...launch.argsPrefix, ...argv], {
47
+ ...readonlySpawnOptions(),
48
+ cwd,
49
+ // stdin must stay ours; stdout/stderr are read as data.
50
+ stdio: ['ignore', 'pipe', 'pipe'],
51
+ // Windows contract: a spawned child must not allocate a console window.
52
+ windowsHide: true
53
+ });
54
+ const deadline = setTimeout(() => {
55
+ timedOut = true;
56
+ child.kill();
57
+ }, timeoutMs);
58
+ const settle = (exitCode) => {
59
+ if (settled)
60
+ return;
61
+ settled = true;
62
+ clearTimeout(deadline);
63
+ const outcome = { argv, exitCode, stdout, stderr, timedOut };
64
+ resolve(launchError === undefined ? outcome : { ...outcome, launchError });
65
+ };
66
+ child.stdout.setEncoding('utf8');
67
+ child.stdout.on('data', (chunk) => {
68
+ stdout += chunk;
69
+ });
70
+ child.stderr.setEncoding('utf8');
71
+ child.stderr.on('data', (chunk) => {
72
+ stderr += chunk;
73
+ });
74
+ child.on('error', (error) => {
75
+ launchError = error.message;
76
+ });
77
+ // `close` (not `exit`) so both pipes are drained before we read them.
78
+ child.on('close', (code) => {
79
+ settle(code);
80
+ });
81
+ });
82
+ }
83
+ /**
84
+ * Run one argv. Always resolves: a failure is a described outcome, never a
85
+ * rejection, because the caller has to report it to the harness either way.
86
+ */
87
+ export async function executeCliArgv(argv, options = {}) {
88
+ let launch;
89
+ try {
90
+ launch = options.launch ?? resolveCliLaunch();
91
+ }
92
+ catch (error) {
93
+ const message = error instanceof Error ? error.message : String(error);
94
+ return { argv, exitCode: null, stdout: '', stderr: '', timedOut: false, launchError: message };
95
+ }
96
+ return runChild(launch, argv, options.cwd ?? process.cwd(), options.timeoutMs ?? DEFAULT_EXECUTION_TIMEOUT_MS);
97
+ }
@@ -0,0 +1,81 @@
1
+ /** The only JSON-RPC version this server speaks. */
2
+ export declare const JSON_RPC_VERSION: "2.0";
3
+ /** A request/response correlation id. `null` is legal and means "unknown". */
4
+ export type JsonRpcId = string | number | null;
5
+ export interface JsonRpcErrorObject {
6
+ readonly code: number;
7
+ readonly message: string;
8
+ readonly data?: unknown;
9
+ }
10
+ export interface JsonRpcRequest {
11
+ readonly jsonrpc: typeof JSON_RPC_VERSION;
12
+ readonly id: JsonRpcId;
13
+ readonly method: string;
14
+ readonly params?: unknown;
15
+ }
16
+ /** A request WITHOUT an id. JSON-RPC forbids replying to one. */
17
+ export interface JsonRpcNotification {
18
+ readonly jsonrpc: typeof JSON_RPC_VERSION;
19
+ readonly method: string;
20
+ readonly params?: unknown;
21
+ }
22
+ export interface JsonRpcSuccess {
23
+ readonly jsonrpc: typeof JSON_RPC_VERSION;
24
+ readonly id: JsonRpcId;
25
+ readonly result: unknown;
26
+ }
27
+ export interface JsonRpcFailure {
28
+ readonly jsonrpc: typeof JSON_RPC_VERSION;
29
+ readonly id: JsonRpcId;
30
+ readonly error: JsonRpcErrorObject;
31
+ }
32
+ export type JsonRpcResponse = JsonRpcSuccess | JsonRpcFailure;
33
+ /** Standard JSON-RPC codes. The server adds no private codes of its own. */
34
+ export declare const JSON_RPC_PARSE_ERROR = -32700;
35
+ export declare const JSON_RPC_INVALID_REQUEST = -32600;
36
+ export declare const JSON_RPC_METHOD_NOT_FOUND = -32601;
37
+ export declare const JSON_RPC_INVALID_PARAMS = -32602;
38
+ export declare const JSON_RPC_INTERNAL_ERROR = -32603;
39
+ export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
40
+ /** What one decoded line turned out to be. */
41
+ export type DecodedMessage = {
42
+ readonly kind: 'request';
43
+ readonly request: JsonRpcRequest;
44
+ } | {
45
+ readonly kind: 'notification';
46
+ readonly notification: JsonRpcNotification;
47
+ } | {
48
+ readonly kind: 'invalid';
49
+ readonly id: JsonRpcId;
50
+ readonly error: JsonRpcErrorObject;
51
+ };
52
+ export declare function makeError(code: number, message: string, data?: unknown): JsonRpcErrorObject;
53
+ export declare function successResponse(id: JsonRpcId, result: unknown): JsonRpcSuccess;
54
+ export declare function failureResponse(id: JsonRpcId, error: JsonRpcErrorObject): JsonRpcFailure;
55
+ /**
56
+ * Decode one frame.
57
+ *
58
+ * `undefined` means "nothing to answer" — an empty line, which is legal padding
59
+ * and must not be reported as a parse error (an empty line is not a message the
60
+ * peer sent; it is whitespace between messages).
61
+ */
62
+ export declare function decodeMessage(line: string): DecodedMessage | undefined;
63
+ /**
64
+ * Encode one frame for the wire. `JSON.stringify` escapes every newline inside
65
+ * a string, which is what keeps one message on one line.
66
+ */
67
+ export declare function encodeMessage(message: JsonRpcResponse | JsonRpcNotification): string;
68
+ /**
69
+ * The buffer that turns an arbitrary chunking of bytes into whole lines.
70
+ *
71
+ * Needed because a pipe delivers no framing of its own: one `data` event may
72
+ * carry half a message or three of them, and a server that parsed each event as
73
+ * a message would work on a fast local pipe and fail on a loaded one.
74
+ */
75
+ export declare class LineDecoder {
76
+ private buffer;
77
+ /** Feed a chunk; get back the complete lines it completed (no trailing newline). */
78
+ push(chunk: string): string[];
79
+ /** Whatever is left when the stream ends. A peer that never sent a newline still sent a message. */
80
+ flush(): string[];
81
+ }
@@ -0,0 +1,116 @@
1
+ // src/services/mcp/json-rpc.ts
2
+ //
3
+ // JSON-RPC 2.0 message shapes plus the stdio framing MCP uses, implemented in
4
+ // this tree rather than pulled in as a dependency.
5
+ //
6
+ // WHY NOT THE SDK. peaks-loop ships 12 runtime dependencies to every user
7
+ // globally, and the protocol surface this server needs is four methods and five
8
+ // error codes — all frozen since the first MCP revision. A dependency would be
9
+ // the larger commitment. See the slice report for the exact surface list.
10
+ //
11
+ // THE FRAMING IS NEWLINE-DELIMITED JSON, not LSP's `Content-Length` headers.
12
+ // That is the MCP stdio transport's rule, and it is also why a message may not
13
+ // contain a raw newline: this module therefore serializes with `JSON.stringify`
14
+ // (which escapes newlines inside strings) and never pretty-prints.
15
+ /** The only JSON-RPC version this server speaks. */
16
+ export const JSON_RPC_VERSION = '2.0';
17
+ /** Standard JSON-RPC codes. The server adds no private codes of its own. */
18
+ export const JSON_RPC_PARSE_ERROR = -32700;
19
+ export const JSON_RPC_INVALID_REQUEST = -32600;
20
+ export const JSON_RPC_METHOD_NOT_FOUND = -32601;
21
+ export const JSON_RPC_INVALID_PARAMS = -32602;
22
+ export const JSON_RPC_INTERNAL_ERROR = -32603;
23
+ export function isPlainObject(value) {
24
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
25
+ }
26
+ function isJsonRpcId(value) {
27
+ return typeof value === 'string' || typeof value === 'number' || value === null;
28
+ }
29
+ export function makeError(code, message, data) {
30
+ return data === undefined ? { code, message } : { code, message, data };
31
+ }
32
+ export function successResponse(id, result) {
33
+ return { jsonrpc: JSON_RPC_VERSION, id, result };
34
+ }
35
+ export function failureResponse(id, error) {
36
+ return { jsonrpc: JSON_RPC_VERSION, id, error };
37
+ }
38
+ function invalid(id, code, message) {
39
+ return { kind: 'invalid', id, error: makeError(code, message) };
40
+ }
41
+ /** The message's id when it carries a legal one, else the protocol's `null`. */
42
+ function idOf(parsed) {
43
+ const id = parsed['id'];
44
+ return isJsonRpcId(id) ? id : null;
45
+ }
46
+ /**
47
+ * Build the message from a well-formed envelope. The presence of the `id` KEY is
48
+ * the only thing separating a request from a notification — `id: null` is a legal
49
+ * id, so this cannot be written as a null check.
50
+ */
51
+ function buildMessage(parsed, method) {
52
+ const params = parsed['params'];
53
+ const head = { jsonrpc: JSON_RPC_VERSION, method, ...(params === undefined ? {} : { params }) };
54
+ return 'id' in parsed
55
+ ? { kind: 'request', request: { ...head, id: idOf(parsed) } }
56
+ : { kind: 'notification', notification: head };
57
+ }
58
+ /**
59
+ * Decode one frame.
60
+ *
61
+ * `undefined` means "nothing to answer" — an empty line, which is legal padding
62
+ * and must not be reported as a parse error (an empty line is not a message the
63
+ * peer sent; it is whitespace between messages).
64
+ */
65
+ export function decodeMessage(line) {
66
+ if (line.trim().length === 0)
67
+ return undefined;
68
+ let parsed;
69
+ try {
70
+ parsed = JSON.parse(line);
71
+ }
72
+ catch {
73
+ return invalid(null, JSON_RPC_PARSE_ERROR, 'Invalid JSON received on the transport.');
74
+ }
75
+ if (!isPlainObject(parsed) || parsed['jsonrpc'] !== JSON_RPC_VERSION) {
76
+ const id = isPlainObject(parsed) ? idOf(parsed) : null;
77
+ return invalid(id, JSON_RPC_INVALID_REQUEST, `Messages must declare jsonrpc "${JSON_RPC_VERSION}".`);
78
+ }
79
+ const method = parsed['method'];
80
+ if (typeof method !== 'string' || method.length === 0) {
81
+ return invalid(idOf(parsed), JSON_RPC_INVALID_REQUEST, 'Messages must carry a non-empty "method".');
82
+ }
83
+ return buildMessage(parsed, method);
84
+ }
85
+ /**
86
+ * Encode one frame for the wire. `JSON.stringify` escapes every newline inside
87
+ * a string, which is what keeps one message on one line.
88
+ */
89
+ export function encodeMessage(message) {
90
+ return `${JSON.stringify(message)}\n`;
91
+ }
92
+ /**
93
+ * The buffer that turns an arbitrary chunking of bytes into whole lines.
94
+ *
95
+ * Needed because a pipe delivers no framing of its own: one `data` event may
96
+ * carry half a message or three of them, and a server that parsed each event as
97
+ * a message would work on a fast local pipe and fail on a loaded one.
98
+ */
99
+ export class LineDecoder {
100
+ buffer = '';
101
+ /** Feed a chunk; get back the complete lines it completed (no trailing newline). */
102
+ push(chunk) {
103
+ this.buffer += chunk;
104
+ const lines = this.buffer.split('\n');
105
+ // The last element is either an incomplete line or '' when the chunk ended
106
+ // on a newline. Either way it stays buffered for the next push.
107
+ this.buffer = lines.pop() ?? '';
108
+ return lines;
109
+ }
110
+ /** Whatever is left when the stream ends. A peer that never sent a newline still sent a message. */
111
+ flush() {
112
+ const remainder = this.buffer.trim().length > 0 ? [this.buffer] : [];
113
+ this.buffer = '';
114
+ return remainder;
115
+ }
116
+ }
@@ -0,0 +1,3 @@
1
+ import type { McpToolDefinition } from './surface.js';
2
+ import { type ToolCallContext, type ToolCallResult } from './tool-core.js';
3
+ export declare function callMemorySearchTool(tool: McpToolDefinition, args: Readonly<Record<string, unknown>>, context: ToolCallContext): Promise<ToolCallResult>;