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,156 @@
1
+ /**
2
+ * Coercion of untrusted JSON into the typed config shapes.
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, isSafeConfigSegment } from './config-primitives.js';
9
+ import { isValidProxyUrl } from './config-validation.js';
10
+ function toArtifactRemoteRepoConfig(value) {
11
+ if (!isRecord(value) ||
12
+ (value.provider !== 'github' && value.provider !== 'gitlab') ||
13
+ typeof value.owner !== 'string' ||
14
+ typeof value.name !== 'string') {
15
+ return null;
16
+ }
17
+ if (!isSafeConfigSegment(value.owner) || !isSafeConfigSegment(value.name)) {
18
+ return null;
19
+ }
20
+ return { provider: value.provider, owner: value.owner, name: value.name };
21
+ }
22
+ function toArtifactStorageConfig(value) {
23
+ if (!isRecord(value))
24
+ return null;
25
+ const localPath = typeof value.localPath === 'string' ? { localPath: value.localPath } : {};
26
+ if (value.mode === 'local') {
27
+ return { mode: 'local', ...localPath };
28
+ }
29
+ const remote = toArtifactRemoteRepoConfig(value.remote);
30
+ if (value.mode === 'local-with-remote-sync' && remote) {
31
+ return { mode: 'local-with-remote-sync', ...localPath, remote };
32
+ }
33
+ return null;
34
+ }
35
+ function toWorkspaceConfig(value) {
36
+ if (!isRecord(value))
37
+ return null;
38
+ const { workspaceId, name, rootPath, installedCapabilityIds } = value;
39
+ if (typeof workspaceId !== 'string' ||
40
+ !isSafeConfigSegment(workspaceId) ||
41
+ typeof name !== 'string' ||
42
+ typeof rootPath !== 'string' ||
43
+ !Array.isArray(installedCapabilityIds) ||
44
+ !installedCapabilityIds.every((id) => typeof id === 'string')) {
45
+ return null;
46
+ }
47
+ const artifactRepo = toArtifactRemoteRepoConfig(value.artifactRepo);
48
+ const artifactStorage = toArtifactStorageConfig(value.artifactStorage);
49
+ return {
50
+ workspaceId,
51
+ name,
52
+ rootPath,
53
+ installedCapabilityIds,
54
+ ...(artifactRepo ? { artifactRepo } : {}),
55
+ ...(artifactStorage ? { artifactStorage } : {})
56
+ };
57
+ }
58
+ export function toWorkspaceConfigs(value) {
59
+ return Array.isArray(value)
60
+ ? value
61
+ .map(toWorkspaceConfig)
62
+ .filter((workspace) => workspace !== null)
63
+ : [];
64
+ }
65
+ export function toProviderModelConfig(value) {
66
+ if (!isRecord(value))
67
+ return {};
68
+ return {
69
+ ...(typeof value.model === 'string' && value.model.trim().length > 0
70
+ ? { model: value.model.trim() }
71
+ : {}),
72
+ ...(typeof value.baseUrl === 'string' ? { baseUrl: value.baseUrl } : {}),
73
+ ...(typeof value.apiKey === 'string' ? { apiKey: value.apiKey } : {})
74
+ };
75
+ }
76
+ const TOKEN_CONFIG_KEYS = new Set([
77
+ 'AnthropicApiKey',
78
+ 'OpenAiApiKey',
79
+ 'GitHubToken',
80
+ 'GitLabToken'
81
+ ]);
82
+ function toTokenRef(value) {
83
+ if (!isRecord(value))
84
+ return null;
85
+ const env = typeof value.env === 'string' ? value.env.trim() : '';
86
+ const keychain = typeof value.keychain === 'string' ? value.keychain.trim() : '';
87
+ if (env.length > 0) {
88
+ return { env };
89
+ }
90
+ if (keychain.length > 0) {
91
+ return { keychain };
92
+ }
93
+ if (value.ghCli === true) {
94
+ return { ghCli: true };
95
+ }
96
+ return null;
97
+ }
98
+ export function toTokenConfig(value) {
99
+ if (!isRecord(value))
100
+ return {};
101
+ const tokens = {};
102
+ for (const [key, entry] of Object.entries(value)) {
103
+ if (!TOKEN_CONFIG_KEYS.has(key))
104
+ continue;
105
+ const tokenRef = toTokenRef(entry);
106
+ if (tokenRef) {
107
+ tokens[key] = tokenRef;
108
+ }
109
+ }
110
+ return tokens;
111
+ }
112
+ export function toModelProviderConfig(value) {
113
+ if (!isRecord(value))
114
+ return {};
115
+ return Object.fromEntries(Object.entries(value).map(([providerId, providerConfig]) => [
116
+ providerId,
117
+ toProviderModelConfig(providerConfig)
118
+ ]));
119
+ }
120
+ function toProxyConfig(value) {
121
+ if (!isRecord(value))
122
+ return null;
123
+ return typeof value.httpProxy === 'string' && isValidProxyUrl(value.httpProxy)
124
+ ? { httpProxy: value.httpProxy }
125
+ : null;
126
+ }
127
+ export function inferHumanLanguage(value) {
128
+ const normalized = value.trim();
129
+ if (!normalized) {
130
+ throw new Error('Language must be non-empty');
131
+ }
132
+ if (/^zh(?:-|$)/i.test(normalized) || /[㐀-鿿]/u.test(normalized)) {
133
+ return 'zh-CN';
134
+ }
135
+ if (/^en(?:-|$)/i.test(normalized)) {
136
+ return 'en';
137
+ }
138
+ return 'en';
139
+ }
140
+ export function toPeaksConfig(value) {
141
+ if (!isRecord(value))
142
+ return {};
143
+ const proxy = toProxyConfig(value.proxy);
144
+ return {
145
+ ...(typeof value.version === 'string' ? { version: value.version } : {}),
146
+ ...(typeof value.language === 'string' ? { language: value.language } : {}),
147
+ ...(typeof value.model === 'string' && ['haiku', 'sonnet', 'opus'].includes(value.model)
148
+ ? { model: value.model }
149
+ : {}),
150
+ ...(typeof value.economyMode === 'boolean' ? { economyMode: value.economyMode } : {}),
151
+ ...(typeof value.swarmMode === 'boolean' ? { swarmMode: value.swarmMode } : {}),
152
+ ...(isRecord(value.tokens) ? { tokens: toTokenConfig(value.tokens) } : {}),
153
+ ...(isRecord(value.providers) ? { providers: toModelProviderConfig(value.providers) } : {}),
154
+ ...(proxy ? { proxy } : {})
155
+ };
156
+ }
@@ -0,0 +1,11 @@
1
+ import type { PeaksConfig } from './config-types.js';
2
+ export declare function readJsonFile(path: string | null, validateBeforeRead?: () => void, errorMessage?: string): Partial<PeaksConfig> | null;
3
+ export declare function readExistingJsonFile(path: string, errorMessage: string, validateBeforeRead?: () => void): Partial<PeaksConfig> | null;
4
+ export declare function readUserJsonFile(): Partial<PeaksConfig> | null;
5
+ export declare function readProjectJsonFile(projectRoot: string | null): Partial<PeaksConfig> | null;
6
+ export declare function ensureDir(dirPath: string): void;
7
+ export declare function getProjectWriteTarget(): {
8
+ projectRoot: string;
9
+ configPath: string;
10
+ };
11
+ export declare function removeProjectSensitiveConfig(config: Partial<PeaksConfig>): Partial<PeaksConfig>;
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Safe config-file reads/writes and the project-layer write target.
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, mkdirSync } from 'node:fs';
9
+ import { findProjectRoot, getProjectConfigPath, getUserConfigPath, readConfigFileSafely, validateProjectBootstrapConfigPathForWrite, validateUserConfigPathForWrite } from './config-safety.js';
10
+ import { containsSensitiveConfigValue, isSecretKey } from './config-validation.js';
11
+ export function readJsonFile(path, validateBeforeRead, errorMessage = 'Config path must stay inside the config root') {
12
+ if (!path || !existsSync(path))
13
+ return null;
14
+ validateBeforeRead?.();
15
+ const content = readConfigFileSafely(path, errorMessage);
16
+ try {
17
+ return JSON.parse(content);
18
+ }
19
+ catch {
20
+ // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
21
+ return null;
22
+ }
23
+ }
24
+ export function readExistingJsonFile(path, errorMessage, validateBeforeRead) {
25
+ if (!existsSync(path))
26
+ return null;
27
+ validateBeforeRead?.();
28
+ try {
29
+ return JSON.parse(readConfigFileSafely(path, errorMessage));
30
+ }
31
+ catch {
32
+ throw new Error(errorMessage);
33
+ }
34
+ }
35
+ export function readUserJsonFile() {
36
+ const userPath = getUserConfigPath();
37
+ return readJsonFile(userPath, () => validateUserConfigPathForWrite(userPath), 'User config path must stay inside the user root');
38
+ }
39
+ export function readProjectJsonFile(projectRoot) {
40
+ const projectPath = getProjectConfigPath(projectRoot);
41
+ return readJsonFile(projectPath, projectRoot && projectPath
42
+ ? () => validateProjectBootstrapConfigPathForWrite(projectRoot, projectPath)
43
+ : undefined, 'Project config path must stay inside the project root');
44
+ }
45
+ export function ensureDir(dirPath) {
46
+ if (!existsSync(dirPath)) {
47
+ mkdirSync(dirPath, { recursive: true });
48
+ }
49
+ }
50
+ export function getProjectWriteTarget() {
51
+ const projectRoot = findProjectRoot(process.cwd());
52
+ const configPath = getProjectConfigPath(projectRoot);
53
+ if (!projectRoot || !configPath) {
54
+ throw new Error('Project config not found');
55
+ }
56
+ return { projectRoot, configPath };
57
+ }
58
+ export function removeProjectSensitiveConfig(config) {
59
+ const OMITTED_KEYS = new Set(['providers', 'proxy', 'tokens']);
60
+ return Object.fromEntries(Object.entries(config).filter(([key, value]) => !OMITTED_KEYS.has(key) && !isSecretKey(key) && !containsSensitiveConfigValue(value)));
61
+ }
@@ -0,0 +1,2 @@
1
+ import type { ConfigGetOptions } from './config-types.js';
2
+ export declare function getConfig(options?: ConfigGetOptions): unknown;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * The layered `peaks config get` reader.
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 { findProjectRoot } from './config-safety.js';
9
+ import { getNestedValue } from './config-nested-path.js';
10
+ import { isRecord, omitProxy } from './config-primitives.js';
11
+ import { toTokenConfig } from './config-coercion.js';
12
+ import { readProjectJsonFile, readUserJsonFile, removeProjectSensitiveConfig } from './config-file-io.js';
13
+ export function getConfig(options = {}) {
14
+ const projectRoot = findProjectRoot(process.cwd());
15
+ const userConfig = readUserJsonFile() ?? {};
16
+ const projectConfig = removeProjectSensitiveConfig(readProjectJsonFile(projectRoot) ?? {});
17
+ const projectConfigWithoutProxy = omitProxy(projectConfig);
18
+ const source = options.layer === 'user'
19
+ ? userConfig
20
+ : options.layer === 'project'
21
+ ? projectConfig
22
+ : {
23
+ ...userConfig,
24
+ ...projectConfigWithoutProxy
25
+ };
26
+ const config = isRecord(source)
27
+ ? {
28
+ ...source,
29
+ ...(source.tokens !== undefined ? { tokens: toTokenConfig(source.tokens) } : {})
30
+ }
31
+ : source;
32
+ if (options.key !== undefined) {
33
+ return getNestedValue(config, options.key);
34
+ }
35
+ return config;
36
+ }
@@ -0,0 +1,15 @@
1
+ import { type ConfigV2 } from './config-types.js';
2
+ /**
3
+ * Load the slim 2.0 `~/.peaks/config.json` file. Returns the parsed
4
+ * object when the file is at schema 2.0.0; returns null when the
5
+ * file is absent (fresh install, no global config yet).
6
+ *
7
+ * Throws `CONFIG_LEGACY_VERSION` when the file exists at a 1.x
8
+ * schema version — the caller is expected to run
9
+ * `peaks config migrate --apply` to bring it forward before
10
+ * continuing. This gate is intentional: a slim 2.0 reader must
11
+ * not silently pass through a 1.x shape, because every field it
12
+ * ignores is a field the caller is going to look for elsewhere
13
+ * (preferences.json, .bak, _state/).
14
+ */
15
+ export declare function loadGlobalConfig(): ConfigV2 | null;
@@ -0,0 +1,111 @@
1
+ /**
2
+ * The slim 2.0 `~/.peaks/config.json` loader and its legacy promotion.
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 { CONFIG_SCHEMA_VERSION_V2, globalConfigPath } from './config-migration.js';
10
+ import { readConfigFileSafely, writeUserConfigFile } from './config-safety.js';
11
+ import { isRecord } from './config-primitives.js';
12
+ import { SIDECAR_SCHEMA_VERSION, providersConfigPath, proxyConfigPath, readSidecarJson, sidecarExists, workspacesConfigPath, writeSidecarJson } from './sidecar-store.js';
13
+ import { isConfigV2 } from './config-types.js';
14
+ /**
15
+ * Load the slim 2.0 `~/.peaks/config.json` file. Returns the parsed
16
+ * object when the file is at schema 2.0.0; returns null when the
17
+ * file is absent (fresh install, no global config yet).
18
+ *
19
+ * Throws `CONFIG_LEGACY_VERSION` when the file exists at a 1.x
20
+ * schema version — the caller is expected to run
21
+ * `peaks config migrate --apply` to bring it forward before
22
+ * continuing. This gate is intentional: a slim 2.0 reader must
23
+ * not silently pass through a 1.x shape, because every field it
24
+ * ignores is a field the caller is going to look for elsewhere
25
+ * (preferences.json, .bak, _state/).
26
+ */
27
+ export function loadGlobalConfig() {
28
+ const path = globalConfigPath();
29
+ if (!existsSync(path))
30
+ return null;
31
+ const content = readConfigFileSafely(path, 'Global config path must stay inside the user root');
32
+ const raw = JSON.parse(content);
33
+ if (isConfigV2(raw)) {
34
+ if (hasLegacyGlobalFields(raw)) {
35
+ promoteLegacyGlobalFieldsToSidecars(raw);
36
+ rewriteSlimGlobalConfig();
37
+ }
38
+ return readSlimGlobalConfig();
39
+ }
40
+ const detected = typeof raw.version === 'string' ? raw.version : 'unknown';
41
+ throw new Error(`CONFIG_LEGACY_VERSION: ~/.peaks/config.json is at version "${detected}", expected ${CONFIG_SCHEMA_VERSION_V2}. Run \`peaks config migrate --apply\`.`);
42
+ }
43
+ /**
44
+ * Slim 2.0 schema allows `version` + `ocr`. Any other top-level
45
+ * field is a legacy artifact that needs to be promoted to a
46
+ * sidecar file.
47
+ */
48
+ function hasLegacyGlobalFields(raw) {
49
+ const allowed = new Set(['version', 'ocr']);
50
+ return Object.keys(raw).some((k) => !allowed.has(k));
51
+ }
52
+ /**
53
+ * One-shot promotion of legacy fields into their dedicated sidecar
54
+ * files. Idempotent: if the sidecar already has the field, the
55
+ * legacy value is dropped (sidecar is the new source of truth).
56
+ */
57
+ function promoteLegacyGlobalFieldsToSidecars(raw) {
58
+ if (isRecord(raw.providers)) {
59
+ const existing = readSidecarJson(providersConfigPath(), {
60
+ version: SIDECAR_SCHEMA_VERSION,
61
+ providers: {}
62
+ });
63
+ const mergedProviders = {
64
+ ...(existing.providers ?? {}),
65
+ ...raw.providers
66
+ };
67
+ writeSidecarJson(providersConfigPath(), {
68
+ version: SIDECAR_SCHEMA_VERSION,
69
+ providers: mergedProviders
70
+ });
71
+ }
72
+ if (isRecord(raw.proxy) && typeof raw.proxy.httpProxy === 'string') {
73
+ const httpProxy = raw.proxy.httpProxy;
74
+ if (!sidecarExists(proxyConfigPath())) {
75
+ writeSidecarJson(proxyConfigPath(), { version: SIDECAR_SCHEMA_VERSION, httpProxy });
76
+ }
77
+ }
78
+ if (Array.isArray(raw.workspaces) || typeof raw.currentWorkspace === 'string') {
79
+ if (!sidecarExists(workspacesConfigPath())) {
80
+ writeSidecarJson(workspacesConfigPath(), {
81
+ version: SIDECAR_SCHEMA_VERSION,
82
+ workspaces: Array.isArray(raw.workspaces) ? raw.workspaces : [],
83
+ currentWorkspace: typeof raw.currentWorkspace === 'string' ? raw.currentWorkspace : null
84
+ });
85
+ }
86
+ }
87
+ }
88
+ function readSlimGlobalConfig() {
89
+ const path = globalConfigPath();
90
+ if (!existsSync(path)) {
91
+ return { version: CONFIG_SCHEMA_VERSION_V2 };
92
+ }
93
+ const content = readConfigFileSafely(path, 'Global config path must stay inside the user root');
94
+ return JSON.parse(content);
95
+ }
96
+ function rewriteSlimGlobalConfig() {
97
+ const path = globalConfigPath();
98
+ const ocr = readOcrFromRawConfigFile();
99
+ const slim = { version: CONFIG_SCHEMA_VERSION_V2 };
100
+ if (ocr !== null)
101
+ slim['ocr'] = ocr;
102
+ writeUserConfigFile(path, JSON.stringify(slim, null, 2) + '\n');
103
+ }
104
+ function readOcrFromRawConfigFile() {
105
+ const path = globalConfigPath();
106
+ if (!existsSync(path))
107
+ return null;
108
+ const content = readConfigFileSafely(path, 'Global config path must stay inside the user root');
109
+ const raw = JSON.parse(content);
110
+ return isRecord(raw.ocr) ? raw.ocr : null;
111
+ }
@@ -0,0 +1,3 @@
1
+ export declare function getNestedPathParts(path: string): string[];
2
+ export declare function getNestedValue(obj: Record<string, unknown>, path: string): unknown;
3
+ export declare function setNestedValue(obj: Record<string, unknown>, path: string, value: unknown): void;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Dotted-path access into a raw config object, with prototype-pollution guards.
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
+ const UNSAFE_NESTED_PATH_SEGMENTS = new Set(['__proto__', 'constructor', 'prototype']);
9
+ export function getNestedPathParts(path) {
10
+ return path
11
+ .replace(/\[(\d+)\]/g, '.$1')
12
+ .split('.')
13
+ .filter(Boolean);
14
+ }
15
+ function hasUnsafeNestedPathSegment(parts) {
16
+ return parts.some((part) => UNSAFE_NESTED_PATH_SEGMENTS.has(part));
17
+ }
18
+ export function getNestedValue(obj, path) {
19
+ const parts = getNestedPathParts(path);
20
+ if (parts.length === 0 || hasUnsafeNestedPathSegment(parts)) {
21
+ return undefined;
22
+ }
23
+ let current = obj;
24
+ for (const part of parts) {
25
+ if (current === null ||
26
+ current === undefined ||
27
+ typeof current !== 'object' ||
28
+ !Object.prototype.hasOwnProperty.call(current, part)) {
29
+ return undefined;
30
+ }
31
+ current = current[part];
32
+ }
33
+ return current;
34
+ }
35
+ export function setNestedValue(obj, path, value) {
36
+ const parts = getNestedPathParts(path);
37
+ if (parts.length === 0 || hasUnsafeNestedPathSegment(parts)) {
38
+ throw new Error('Unsafe config path');
39
+ }
40
+ let current = obj;
41
+ for (let i = 0; i < parts.length - 1; i++) {
42
+ const part = parts[i];
43
+ if (!Object.prototype.hasOwnProperty.call(current, part) ||
44
+ typeof current[part] !== 'object' ||
45
+ current[part] === null ||
46
+ Array.isArray(current[part])) {
47
+ current[part] = {};
48
+ }
49
+ current = current[part];
50
+ }
51
+ const last = parts[parts.length - 1];
52
+ current[last] = value;
53
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Shape predicates shared by the config reader/writer family.
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
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
9
+ export declare function isSafeConfigSegment(value: string): boolean;
10
+ /**
11
+ * A shallow copy of `value` with the `proxy` key removed. The project layer's
12
+ * config is always consumed without its `proxy` (the proxy belongs to the user
13
+ * layer), and spreading around a named rest sibling left a binding no reader
14
+ * needs.
15
+ */
16
+ export declare function omitProxy<T extends object>(value: T): Omit<T, 'proxy'>;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Shape predicates shared by the config reader/writer family.
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
+ export function isRecord(value) {
9
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
10
+ }
11
+ export function isSafeConfigSegment(value) {
12
+ return (/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(value) && !value.includes('..') && !value.endsWith('.'));
13
+ }
14
+ /**
15
+ * A shallow copy of `value` with the `proxy` key removed. The project layer's
16
+ * config is always consumed without its `proxy` (the proxy belongs to the user
17
+ * layer), and spreading around a named rest sibling left a binding no reader
18
+ * needs.
19
+ */
20
+ export function omitProxy(value) {
21
+ const copy = { ...value };
22
+ delete copy['proxy'];
23
+ return copy;
24
+ }
@@ -1,19 +1,12 @@
1
- import { type ConfigGetOptions, type ConfigLayer, type ConfigSetOptions, type ConfigV2, type PeaksConfig, type TokenRef, type WorkspaceConfig } from './config-types.js';
1
+ import { type ConfigLayer, type ConfigSetOptions, type PeaksConfig, type TokenRef, type WorkspaceConfig } from './config-types.js';
2
+ import { getUserConfigPath } from './config-safety.js';
3
+ import { containsSensitiveConfigValue, isLegacyConfigKey, isSensitiveConfigPath, redactConfigSecrets, type RedactedConfigValue } from './config-validation.js';
2
4
  export { resolveProjectRootForConfig, resolveCanonicalProjectRoot } from './config-safety.js';
3
- /**
4
- * Load the slim 2.0 `~/.peaks/config.json` file. Returns the parsed
5
- * object when the file is at schema 2.0.0; returns null when the
6
- * file is absent (fresh install, no global config yet).
7
- *
8
- * Throws `CONFIG_LEGACY_VERSION` when the file exists at a 1.x
9
- * schema version — the caller is expected to run
10
- * `peaks config migrate --apply` to bring it forward before
11
- * continuing. This gate is intentional: a slim 2.0 reader must
12
- * not silently pass through a 1.x shape, because every field it
13
- * ignores is a field the caller is going to look for elsewhere
14
- * (preferences.json, .bak, _state/).
15
- */
16
- export declare function loadGlobalConfig(): ConfigV2 | null;
5
+ export { getConfig } from './config-get.js';
6
+ export { loadGlobalConfig } from './config-global-loader.js';
7
+ export { addWorkspace, ensureWorkspaceConfigForCurrentPath, ensureWorkspaceConfigForPath, getCurrentWorkspaceConfig, getWorkspaceConfig, getWorkspaceConfigForCurrentPath, getWorkspaceConfigForPath, removeWorkspace, setCurrentWorkspace } from './config-workspace.js';
8
+ export { containsSensitiveConfigValue, isLegacyConfigKey, isSensitiveConfigPath, redactConfigSecrets };
9
+ export type { RedactedConfigValue };
17
10
  export declare function isConfigLayer(value: string): value is ConfigLayer;
18
11
  /**
19
12
  * Machine-scoped context-window override key, the config twin of the
@@ -31,27 +24,10 @@ export declare const CONTEXT_WINDOW_TOKENS_CONFIG_KEY = "context.windowTokens";
31
24
  * never throws (a corrupt config must not crash a context probe).
32
25
  */
33
26
  export declare function readContextWindowTokensOverride(projectRoot?: string | null): unknown;
34
- export declare function isSensitiveConfigPath(path: string): boolean;
35
- export declare function isLegacyConfigKey(path: string): boolean;
36
- export declare function containsSensitiveConfigValue(value: unknown): boolean;
37
- export type RedactedConfigValue = string | number | boolean | null | RedactedConfigValue[] | {
38
- [key: string]: RedactedConfigValue;
39
- };
40
- export declare function redactConfigSecrets(value: unknown, path?: string): RedactedConfigValue;
41
27
  export declare function bootstrapProjectLanguageConfig(projectRoot: string, language: string): void;
42
28
  export declare function readConfig(projectRoot?: string | null): PeaksConfig;
43
29
  export declare function writeConfig(partial: Partial<PeaksConfig>, layer?: ConfigLayer): void;
44
- export declare function getConfig(options?: ConfigGetOptions): unknown;
45
30
  export declare function setConfig(options: ConfigSetOptions): void;
46
- export declare function getWorkspaceConfig(workspaceId: string, _projectRoot?: string | null): WorkspaceConfig | null;
47
- export declare function addWorkspace(workspace: WorkspaceConfig, layer?: ConfigLayer): void;
48
- export declare function removeWorkspace(workspaceId: string, layer?: ConfigLayer): boolean;
49
- export declare function setCurrentWorkspace(workspaceId: string, layer?: ConfigLayer): boolean;
50
- export declare function getCurrentWorkspaceConfig(): WorkspaceConfig | null;
51
- export declare function getWorkspaceConfigForPath(path?: string): WorkspaceConfig | null;
52
- export declare function ensureWorkspaceConfigForPath(path?: string): WorkspaceConfig | null;
53
- export declare function getWorkspaceConfigForCurrentPath(): WorkspaceConfig | null;
54
- export declare function ensureWorkspaceConfigForCurrentPath(): WorkspaceConfig | null;
55
31
  export type { TokenRef, WorkspaceConfig, PeaksConfig, ConfigLayer };
56
- export { getUserConfigPath } from './config-safety.js';
32
+ export { getUserConfigPath };
57
33
  export { globalConfigPath } from './config-migration.js';