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,65 @@
1
+ // `peaks scan archetype` and `peaks scan existing-system` — the two
2
+ // filesystem-only project scans. Each `.action()` body lives here as a
3
+ // module-level named runner; registerScanProjectCommands keeps the command
4
+ // declarations (names, options, help text) in their original order.
5
+ import { fail, ok } from 'peaks-loop-shared/result';
6
+ import { scanArchetype } from '../../services/scan/archetype-service.js';
7
+ import { scanExistingSystem } from '../../services/scan/existing-system-service.js';
8
+ import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
9
+ import { parsePositiveInt } from './scan-command-shared.js';
10
+ const DEFAULT_MAX_TOKENS = 40;
11
+ const DEFAULT_MAX_SAMPLES = 5;
12
+ const ARCHETYPE_DESCRIPTION = 'Detect project archetype, integration mode (three scenarios), frontend-only mode, and supporting signals from the filesystem (read-only)';
13
+ const EXISTING_SYSTEM_DESCRIPTION = 'Extract visual tokens (colors/spacing/typography/radii) and code conventions from a legacy project (read-only)';
14
+ async function runScanArchetype(options, io) {
15
+ try {
16
+ const report = await scanArchetype({ projectRoot: options.project });
17
+ const nextActions = [];
18
+ if (report.archetype === 'unknown') {
19
+ nextActions.push('Archetype could not be determined; surface to user before proceeding.');
20
+ }
21
+ else if (report.archetype === 'legacy-frontend' ||
22
+ report.archetype === 'legacy-fullstack' ||
23
+ report.archetype === 'frontend-monorepo') {
24
+ nextActions.push('Run `peaks scan existing-system --project <path>` to extract visual tokens and conventions.');
25
+ }
26
+ printResult(io, ok('scan.archetype', report, [], nextActions), options.json);
27
+ }
28
+ catch (error) {
29
+ printResult(io, fail('scan.archetype', 'SCAN_ARCHETYPE_FAILED', getErrorMessage(error), { projectRoot: options.project }, ['Verify the project path exists and is readable']), options.json);
30
+ process.exitCode = 1;
31
+ }
32
+ }
33
+ async function runScanExistingSystem(options, io) {
34
+ try {
35
+ const report = await scanExistingSystem({
36
+ projectRoot: options.project,
37
+ maxTokens: parsePositiveInt(options.maxTokens, DEFAULT_MAX_TOKENS),
38
+ maxSamplesPerKind: parsePositiveInt(options.maxSamples, DEFAULT_MAX_SAMPLES)
39
+ });
40
+ const nextActions = [];
41
+ if (!report.scanned) {
42
+ nextActions.push(report.scanSkippedReason ?? 'Extraction skipped.');
43
+ }
44
+ else if (report.inconsistencies.length > 0) {
45
+ nextActions.push('Surface inconsistencies in the TXT handoff before proceeding.');
46
+ }
47
+ printResult(io, ok('scan.existing-system', report, [], nextActions), options.json);
48
+ }
49
+ catch (error) {
50
+ printResult(io, fail('scan.existing-system', 'SCAN_EXISTING_SYSTEM_FAILED', getErrorMessage(error), { projectRoot: options.project }, ['Verify the project path exists and is readable']), options.json);
51
+ process.exitCode = 1;
52
+ }
53
+ }
54
+ export function registerScanProjectCommands(scan, io) {
55
+ addJsonOption(scan
56
+ .command('archetype')
57
+ .description(ARCHETYPE_DESCRIPTION)
58
+ .requiredOption('--project <path>', 'target project root')).action((options) => runScanArchetype(options, io));
59
+ addJsonOption(scan
60
+ .command('existing-system')
61
+ .description(EXISTING_SYSTEM_DESCRIPTION)
62
+ .requiredOption('--project <path>', 'target project root')
63
+ .option('--max-tokens <n>', 'maximum tokens to return per category (default 40)')
64
+ .option('--max-samples <n>', 'maximum convention samples per kind (default 5)')).action((options) => runScanExistingSystem(options, io));
65
+ }
@@ -0,0 +1,3 @@
1
+ import { type Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerScanScopeCommands(scan: Command, io: ProgramIO): void;
@@ -0,0 +1,149 @@
1
+ // The four scope-check subcommands: `scan request-type-sanity`,
2
+ // `scan acceptance-coverage`, `scan diff-vs-scope` and `scan file-size`. Each
3
+ // `.action()` body is a module-level named runner here; the next-action
4
+ // builders and lookup-failure envelopes they use live in scan-scope-helpers.ts.
5
+ import { InvalidArgumentError } from 'commander';
6
+ import { fail, ok } from 'peaks-loop-shared/result';
7
+ import { getAcceptanceCoverage, isAcceptanceCoverageError } from '../../services/scan/acceptance-coverage-service.js';
8
+ import { checkTypeSanity } from '../../services/scan/type-sanity-service.js';
9
+ import { getDiffVsScope, isDiffScopeError } from '../../services/scan/diff-scope-service.js';
10
+ import { scanFileSize } from '../../services/scan/file-size-scan.js';
11
+ import { FILE_SIZE_CAP_DEFAULT, FILE_SIZE_CAP_TESTS } from '../../services/scan/file-size-policy.js';
12
+ import { VALID_REQUEST_TYPES } from '../../services/artifacts/artifact-prerequisites.js';
13
+ import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
14
+ import { parseOptionalNonNegativeInt, parseRequestType } from './scan-command-shared.js';
15
+ import { acceptanceCoverageNextActions, diffVsScopeNextActions, printAcceptanceCoverageLookupFailure, printDiffVsScopeLookupFailure } from './scan-scope-helpers.js';
16
+ const REQUEST_TYPE_SANITY_DESCRIPTION = 'Cross-verify a declared --type against the actual git diff file mix (catches "feature mis-declared as docs" workflow violations)';
17
+ const ACCEPTANCE_COVERAGE_DESCRIPTION = 'Verify every PRD "Acceptance criteria" item has at least one linked QA test case (via `- **Acceptance:** A1, A2` field in qa/test-cases/<rid>.md)';
18
+ const DIFF_VS_SCOPE_DESCRIPTION = 'Verify every file in the git diff matches the RD artifact "Red-line scope" patterns; flags out-of-scope writes and unclassified files';
19
+ const FILE_SIZE_DESCRIPTION = 'Check git diff for files exceeding a line count threshold (karpathy-skills "Simplicity First"; tool output, lockfiles and append-only records such as CHANGELOG.md excluded)';
20
+ function runScanRequestTypeSanity(options, io) {
21
+ try {
22
+ const serviceOptions = {
23
+ projectRoot: options.project,
24
+ declaredType: options.type
25
+ };
26
+ if (options.baseRef !== undefined) {
27
+ serviceOptions.baseRef = options.baseRef;
28
+ }
29
+ const report = checkTypeSanity(serviceOptions);
30
+ const nextActions = [];
31
+ if (!report.consistent) {
32
+ nextActions.push(`Re-classify the request — likely correct type: ${report.suggestedTypes.join(' | ')}`);
33
+ nextActions.push('Or, if the declared type is correct, surface the mismatch reason to the user in the TXT handoff.');
34
+ }
35
+ if (!report.gitAvailable) {
36
+ nextActions.push('git not available; manual cross-check required.');
37
+ }
38
+ printResult(io, ok('scan.request-type-sanity', report, [], nextActions), options.json);
39
+ if (!report.consistent) {
40
+ process.exitCode = 1;
41
+ }
42
+ }
43
+ catch (error) {
44
+ if (error instanceof InvalidArgumentError)
45
+ throw error;
46
+ printResult(io, fail('scan.request-type-sanity', 'REQUEST_TYPE_SANITY_FAILED', getErrorMessage(error), { projectRoot: options.project, type: options.type }, ['Verify the project path is a git repository or omit the check']), options.json);
47
+ process.exitCode = 1;
48
+ }
49
+ }
50
+ async function runScanAcceptanceCoverage(options, io) {
51
+ try {
52
+ const coverageOptions = {
53
+ projectRoot: options.project,
54
+ requestId: options.rid
55
+ };
56
+ if (options.sessionId !== undefined) {
57
+ coverageOptions.sessionId = options.sessionId;
58
+ }
59
+ const result = await getAcceptanceCoverage(coverageOptions);
60
+ if (isAcceptanceCoverageError(result)) {
61
+ printAcceptanceCoverageLookupFailure(io, options, result);
62
+ return;
63
+ }
64
+ const nextActions = acceptanceCoverageNextActions(result);
65
+ printResult(io, ok('scan.acceptance-coverage', result, [], nextActions), options.json);
66
+ if (!result.ok) {
67
+ process.exitCode = 1;
68
+ }
69
+ }
70
+ catch (error) {
71
+ printResult(io, fail('scan.acceptance-coverage', 'ACCEPTANCE_COVERAGE_FAILED', getErrorMessage(error), { requestId: options.rid }, ['Verify the project path and artifacts before retrying']), options.json);
72
+ process.exitCode = 1;
73
+ }
74
+ }
75
+ async function runScanDiffVsScope(options, io) {
76
+ try {
77
+ const scopeOptions = {
78
+ projectRoot: options.project,
79
+ requestId: options.rid
80
+ };
81
+ if (options.sessionId !== undefined)
82
+ scopeOptions.sessionId = options.sessionId;
83
+ if (options.baseRef !== undefined)
84
+ scopeOptions.baseRef = options.baseRef;
85
+ const result = await getDiffVsScope(scopeOptions);
86
+ if (isDiffScopeError(result)) {
87
+ printDiffVsScopeLookupFailure(io, options);
88
+ return;
89
+ }
90
+ const nextActions = diffVsScopeNextActions(result);
91
+ printResult(io, ok('scan.diff-vs-scope', result, [], nextActions), options.json);
92
+ if (!result.ok) {
93
+ process.exitCode = 1;
94
+ }
95
+ }
96
+ catch (error) {
97
+ printResult(io, fail('scan.diff-vs-scope', 'DIFF_VS_SCOPE_FAILED', getErrorMessage(error), { requestId: options.rid }, ['Verify the project path is a git repository and the RD artifact exists']), options.json);
98
+ process.exitCode = 1;
99
+ }
100
+ }
101
+ function runScanFileSize(options, io) {
102
+ try {
103
+ const threshold = parseOptionalNonNegativeInt(options.threshold);
104
+ const result = scanFileSize({
105
+ projectRoot: options.project,
106
+ ...(options.baseRef !== undefined ? { baseRef: options.baseRef } : {}),
107
+ ...(threshold !== undefined ? { threshold } : {})
108
+ });
109
+ const nextActions = [];
110
+ if (!result.ok) {
111
+ nextActions.push(`${result.violations.length} file(s) exceed their file-size cap. Split into smaller modules.`);
112
+ }
113
+ printResult(io, ok('scan.file-size', result, [], nextActions), options.json);
114
+ if (!result.ok) {
115
+ process.exitCode = 1;
116
+ }
117
+ }
118
+ catch (error) {
119
+ printResult(io, fail('scan.file-size', 'FILE_SIZE_SCAN_FAILED', getErrorMessage(error), { projectRoot: options.project }, ['Verify the project path is a git repository']), options.json);
120
+ process.exitCode = 1;
121
+ }
122
+ }
123
+ export function registerScanScopeCommands(scan, io) {
124
+ addJsonOption(scan
125
+ .command('request-type-sanity')
126
+ .description(REQUEST_TYPE_SANITY_DESCRIPTION)
127
+ .requiredOption('--project <path>', 'target project root')
128
+ .requiredOption('--type <type>', `declared request type (${VALID_REQUEST_TYPES.join(' | ')})`, parseRequestType)
129
+ .option('--base-ref <ref>', 'compare working tree against this git ref (default: HEAD)')).action((options) => runScanRequestTypeSanity(options, io));
130
+ addJsonOption(scan
131
+ .command('acceptance-coverage')
132
+ .description(ACCEPTANCE_COVERAGE_DESCRIPTION)
133
+ .requiredOption('--rid <request-id>', 'request id')
134
+ .requiredOption('--project <path>', 'target project root')
135
+ .option('--session-id <session>', 'restrict to a specific session id')).action((options) => runScanAcceptanceCoverage(options, io));
136
+ addJsonOption(scan
137
+ .command('diff-vs-scope')
138
+ .description(DIFF_VS_SCOPE_DESCRIPTION)
139
+ .requiredOption('--rid <request-id>', 'request id')
140
+ .requiredOption('--project <path>', 'target project root')
141
+ .option('--session-id <session>', 'restrict to a specific session id')
142
+ .option('--base-ref <ref>', 'compare working tree against this git ref (default: HEAD)')).action((options) => runScanDiffVsScope(options, io));
143
+ addJsonOption(scan
144
+ .command('file-size')
145
+ .description(FILE_SIZE_DESCRIPTION)
146
+ .requiredOption('--project <path>', 'target project root')
147
+ .option('--base-ref <ref>', 'compare working tree against this git ref (default: HEAD)')
148
+ .option('--threshold <n>', `line count applied to EVERY file (default: the file-size policy's per-directory cap — ${FILE_SIZE_CAP_DEFAULT} raw lines, ${FILE_SIZE_CAP_TESTS} under root tests/)`)).action((options) => runScanFileSize(options, io));
149
+ }
@@ -0,0 +1,8 @@
1
+ import type { AcceptanceCoverageError, AcceptanceCoverageReport } from '../../services/scan/acceptance-coverage-service.js';
2
+ import type { DiffScopeReport } from '../../services/scan/diff-scope-service.js';
3
+ import { type ProgramIO } from '../cli-helpers.js';
4
+ import type { AcceptanceCoverageOptions, DiffVsScopeOptions } from './scan-command-shared.js';
5
+ export declare function acceptanceCoverageNextActions(result: AcceptanceCoverageReport): string[];
6
+ export declare function printAcceptanceCoverageLookupFailure(io: ProgramIO, options: AcceptanceCoverageOptions, result: AcceptanceCoverageError): void;
7
+ export declare function diffVsScopeNextActions(result: DiffScopeReport): string[];
8
+ export declare function printDiffVsScopeLookupFailure(io: ProgramIO, options: DiffVsScopeOptions): void;
@@ -0,0 +1,54 @@
1
+ // Next-action builders and "artifact not found" envelopes for the scope-check
2
+ // subcommands (`scan acceptance-coverage`, `scan diff-vs-scope`). They live in
3
+ // their own module so the command/runners file stays a declaration + runner
4
+ // file: every message here is a pure function of the report it is handed.
5
+ import { fail } from 'peaks-loop-shared/result';
6
+ import { printResult } from '../cli-helpers.js';
7
+ export function acceptanceCoverageNextActions(result) {
8
+ const nextActions = [];
9
+ if (result.acceptanceItems.length === 0) {
10
+ nextActions.push('PRD has no "## Acceptance criteria" bullets. Fill them in before running the coverage check.');
11
+ }
12
+ if (result.uncovered.length > 0) {
13
+ nextActions.push(`${result.uncovered.length} acceptance item(s) have no linked test case. Add a "- **Acceptance:** ${result.uncovered.map((u) => u.id).join(', ')}" field to the relevant test cases.`);
14
+ }
15
+ if (result.invalidReferences.length > 0) {
16
+ nextActions.push(`${result.invalidReferences.length} test case(s) reference an acceptance id that does not exist in the PRD. Fix or remove these references.`);
17
+ }
18
+ if (result.unlinkedTestCases.length > 0) {
19
+ nextActions.push(`${result.unlinkedTestCases.length} test case(s) have no Acceptance: field. Link them to acceptance items, or document why they exist (e.g. defense-in-depth regressions).`);
20
+ }
21
+ return nextActions;
22
+ }
23
+ export function printAcceptanceCoverageLookupFailure(io, options, result) {
24
+ const code = result.kind === 'prd-not-found' ? 'PRD_NOT_FOUND' : 'TEST_CASES_NOT_FOUND';
25
+ const message = result.kind === 'prd-not-found'
26
+ ? `PRD artifact for requestId=${options.rid} not found`
27
+ : `QA test-cases file not found at ${result.expectedPath}`;
28
+ printResult(io, fail('scan.acceptance-coverage', code, message, { requestId: options.rid }, [
29
+ result.kind === 'prd-not-found'
30
+ ? 'Run `peaks request init --role prd --id <rid> --apply --type <type>` first.'
31
+ : 'Generate qa/test-cases/<rid>.md before running this check.'
32
+ ]), options.json);
33
+ process.exitCode = 1;
34
+ }
35
+ export function diffVsScopeNextActions(result) {
36
+ const nextActions = [];
37
+ if (!result.gitAvailable) {
38
+ nextActions.push('git not available; scope check skipped. Cross-check the diff manually.');
39
+ }
40
+ if (!result.patternsDeclared) {
41
+ nextActions.push('RD artifact has no in-scope or out-of-scope patterns under "## Red-line scope". Add concrete path/glob patterns (e.g. `src/services/login/**`) before re-running.');
42
+ }
43
+ if (result.violations.length > 0) {
44
+ nextActions.push(`${result.violations.length} file(s) match an explicit out-of-scope pattern. Revert these or expand the RD red-line scope with PRD approval.`);
45
+ }
46
+ if (result.unclassified.length > 0) {
47
+ nextActions.push(`${result.unclassified.length} changed file(s) do not match any declared scope pattern. Either add them to the in-scope list (if intentional) or revert them.`);
48
+ }
49
+ return nextActions;
50
+ }
51
+ export function printDiffVsScopeLookupFailure(io, options) {
52
+ printResult(io, fail('scan.diff-vs-scope', 'RD_NOT_FOUND', `RD artifact for requestId=${options.rid} not found`, { requestId: options.rid }, ['Run `peaks request init --role rd --id <rid> --apply --type <type>` first.']), options.json);
53
+ process.exitCode = 1;
54
+ }
@@ -0,0 +1,3 @@
1
+ import { type Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export declare function registerScanStructuralCommands(scan: Command, io: ProgramIO): void;
@@ -0,0 +1,113 @@
1
+ // `peaks scan orphan` and `peaks scan karpathy` — the structural scans that
2
+ // report orphan kinds and Karpathy-guideline coverage. Both `.action()` bodies
3
+ // are module-level named runners; the format/json/markdown output tail is the
4
+ // shared emitScanReport.
5
+ import { InvalidArgumentError } from 'commander';
6
+ import { fail } from 'peaks-loop-shared/result';
7
+ import { scanOrphans, formatOrphanMarkdown } from '../../services/scan/orphan-service.js';
8
+ import { scanKarpathy, formatKarpathyMarkdown } from '../../services/scan/karpathy-service.js';
9
+ import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
10
+ import { emitScanReport, parseKarpathyScope, parseOrphanScope, parseScanOutputFormat } from './scan-command-shared.js';
11
+ const ORPHAN_DESCRIPTION = 'Detect 4 kinds of orphans (export / import / CLI subcommand / doc endpoint) — karpathy §3 Surgical Changes';
12
+ const KARPATHY_DESCRIPTION = 'Surface-level scan of rd/karpathy-review.md for the 4 Karpathy guidelines (Think / Simplicity / Surgical / Goal) — karpathy §1 + §3';
13
+ function orphanNextActions(report) {
14
+ const nextActions = [];
15
+ const totalOrphans = report.counts.export +
16
+ report.counts.import +
17
+ report.counts.cliSubcommand +
18
+ report.counts.docEndpoint;
19
+ if (totalOrphans === 0) {
20
+ nextActions.push('No orphans detected in the requested scope. RD may proceed to commit.');
21
+ }
22
+ else {
23
+ nextActions.push(`Found ${totalOrphans} orphan(s): export=${report.counts.export} import=${report.counts.import} cliSubcommand=${report.counts.cliSubcommand} docEndpoint=${report.counts.docEndpoint}.`);
24
+ nextActions.push('Clean up before commit (karpathy §3 — remove what your changes made unused).');
25
+ nextActions.push('Re-run `peaks scan orphan --project <path>` after cleanup to confirm zero.');
26
+ }
27
+ return nextActions;
28
+ }
29
+ function karpathyNextActions(report) {
30
+ const nextActions = [];
31
+ if (report.gateAction === 'block') {
32
+ nextActions.push('Karpathy review file missing under scope=all. Per karpathy §1 Think Before Coding, the rd:qa-handoff gate wants rd/karpathy-review-<rid>.md; this scanner has no rid and reads only the back-compat name rd/karpathy-review.md, so it cannot go green on the rid-scoped name alone. `peaks request transition --state qa-handoff` is the authoritative gate.');
33
+ }
34
+ else if (report.gateAction === 'warn') {
35
+ nextActions.push(`Karpathy review emitted ${report.totalViolations} violation(s). Review the warnings and re-run after cleanup (karpathy §3 Surgical Changes).`);
36
+ }
37
+ else {
38
+ nextActions.push('Karpathy-Gate passes. All 4 guideline sections present and no anti-patterns detected.');
39
+ }
40
+ return nextActions;
41
+ }
42
+ async function runScanOrphan(options, io) {
43
+ try {
44
+ const report = await scanOrphans({
45
+ projectRoot: options.project,
46
+ ...(options.scope !== undefined ? { scope: options.scope } : {}),
47
+ ...(options.strict !== undefined ? { strict: options.strict } : {})
48
+ });
49
+ emitScanReport(io, {
50
+ command: 'scan.orphan',
51
+ format: options.format,
52
+ json: options.json,
53
+ report,
54
+ nextActions: orphanNextActions(report),
55
+ renderMarkdown: () => formatOrphanMarkdown(report, {})
56
+ });
57
+ }
58
+ catch (error) {
59
+ if (error instanceof InvalidArgumentError)
60
+ throw error;
61
+ printResult(io, fail('scan.orphan', 'SCAN_ORPHAN_FAILED', getErrorMessage(error), { projectRoot: options.project }, [
62
+ 'Verify the project path exists and is readable',
63
+ 'Verify the project is a git repository (working-tree scope)'
64
+ ]), options.json);
65
+ process.exitCode = 1;
66
+ }
67
+ }
68
+ async function runScanKarpathy(options, io) {
69
+ try {
70
+ const report = await scanKarpathy({
71
+ projectRoot: options.project,
72
+ ...(options.scope !== undefined ? { scope: options.scope } : {})
73
+ });
74
+ emitScanReport(io, {
75
+ command: 'scan.karpathy',
76
+ format: options.format,
77
+ json: options.json,
78
+ report,
79
+ nextActions: karpathyNextActions(report),
80
+ renderMarkdown: () => formatKarpathyMarkdown(report, {})
81
+ });
82
+ }
83
+ catch (error) {
84
+ if (error instanceof InvalidArgumentError)
85
+ throw error;
86
+ printResult(io, fail('scan.karpathy', 'SCAN_KARPATHY_FAILED', getErrorMessage(error), { projectRoot: options.project }, [
87
+ 'Verify the project path exists and is readable',
88
+ 'Verify the project is a readable directory'
89
+ ]), options.json);
90
+ process.exitCode = 1;
91
+ }
92
+ }
93
+ export function registerScanStructuralCommands(scan, io) {
94
+ // Slice 4/6 — karpathy-enforcement orphan-scan-cli
95
+ // Detects 4 kinds of orphans: export / import / CLI subcommand / doc
96
+ // endpoint. Read-only; never writes. karpathy §3 Surgical Changes.
97
+ addJsonOption(scan
98
+ .command('orphan')
99
+ .description(ORPHAN_DESCRIPTION)
100
+ .requiredOption('--project <path>', 'target project root')
101
+ .option('--format <fmt>', 'output format: md (default) | json', parseScanOutputFormat)
102
+ .option('--scope <scope>', 'scope: working-tree (default) | git-diff | all', parseOrphanScope)
103
+ .option('--strict', 'strict mode: report exportOrphans even outside working tree', false)).action((options) => runScanOrphan(options, io));
104
+ // Karpathy structural scan (Slice 5/6 — karpathy-enforcement 5-way fanout +
105
+ // hard Karpathy-Gate). Detects violation counts and section coverage for
106
+ // the 4 Karpathy-guidelines. Read-only; never writes. karpathy §3.
107
+ addJsonOption(scan
108
+ .command('karpathy')
109
+ .description(KARPATHY_DESCRIPTION)
110
+ .requiredOption('--project <path>', 'target project root')
111
+ .option('--format <fmt>', 'output format: md (default) | json', parseScanOutputFormat)
112
+ .option('--scope <scope>', 'scope: working-tree (default) | all', parseKarpathyScope)).action((options) => runScanKarpathy(options, io));
113
+ }
@@ -0,0 +1,54 @@
1
+ /** Typed accessor over the flag map produced by `parseFlags`.
2
+ *
3
+ * `parseFlags` internally stores every flag with at least one value as a
4
+ * `string[]`. A flag with no following non-flag token (e.g. `--apply`,
5
+ * `--dry-run`) is recorded as `true`. This helper exposes three typed
6
+ * accessors so call-sites don't have to re-narrow `unknown` or
7
+ * `string | boolean | string[]` on every read:
8
+ *
9
+ * - `flags.list(name)` → `string[]` (always an array; a single
10
+ * occurrence is wrapped to a 1-element
11
+ * array at parse time)
12
+ * - `flags.bool(name)` → `boolean` (presence-of flag; missing
13
+ * flag is `false`)
14
+ * - `flags.maybeString(name)` → `string | undefined` (first value,
15
+ * or `undefined` if the flag was given
16
+ * as a bare boolean with no value)
17
+ *
18
+ * The dispatch layer (runSediment) was previously peppered with
19
+ * `typeof flags.x === "string"` / `Array.isArray(flags.x)` narrowing.
20
+ * With this helper the call-sites collapse to one-line reads and the
21
+ * raw flag map stops leaking across the runSediment boundary.
22
+ */
23
+ export declare class ParsedFlags {
24
+ private readonly raw;
25
+ constructor(raw: Record<string, string[] | true>);
26
+ /** Always returns an array. Missing flag → []. Single-occurrence
27
+ * flag → a 1-element array (parseFlags normalizes this). */
28
+ list(name: string): string[];
29
+ /** Presence-of a bare boolean flag. Missing → false. */
30
+ bool(name: string): boolean;
31
+ /** First value of a flag, or `undefined` if the flag is absent or
32
+ * was given as a bare boolean. */
33
+ maybeString(name: string): string | undefined;
34
+ }
35
+ /** Parse an argv tail into positional args + flag map.
36
+ *
37
+ * Supports:
38
+ * --flag value → flags[flag] = [value, ...] (advance i by 1)
39
+ * --flag → flags[flag] = true (when next token starts with `--` or is undefined)
40
+ * --flag v1 --flag v2 → repeated `--flag` values are accumulated
41
+ *
42
+ * Internally stores all values as `string[]` (or `true` for a bare
43
+ * boolean flag). Use the `ParsedFlags` helper to read typed accessors.
44
+ *
45
+ * Repeatable flag handling (Task 15b): when the same `--key` appears
46
+ * consecutively (e.g. `--segment a --segment b --segment c`), values
47
+ * are accumulated into a single `string[]`. A single occurrence is
48
+ * normalized to a 1-element array so callers can use `.list(name)`
49
+ * uniformly without shape-narrowing on the call-site.
50
+ */
51
+ export declare function parseFlags(argv: string[]): {
52
+ positional: string[];
53
+ flags: ParsedFlags;
54
+ };
@@ -0,0 +1,116 @@
1
+ // src/cli/commands/sediment-argv-flags.ts
2
+ //
3
+ // The argv tail parser `peaks skill sediment` drives every verb with: the raw
4
+ // flag map and the typed accessors over it. Split out of
5
+ // `sediment-commands.ts`, which re-exports both symbols so its public surface
6
+ // is unchanged.
7
+ /** Typed accessor over the flag map produced by `parseFlags`.
8
+ *
9
+ * `parseFlags` internally stores every flag with at least one value as a
10
+ * `string[]`. A flag with no following non-flag token (e.g. `--apply`,
11
+ * `--dry-run`) is recorded as `true`. This helper exposes three typed
12
+ * accessors so call-sites don't have to re-narrow `unknown` or
13
+ * `string | boolean | string[]` on every read:
14
+ *
15
+ * - `flags.list(name)` → `string[]` (always an array; a single
16
+ * occurrence is wrapped to a 1-element
17
+ * array at parse time)
18
+ * - `flags.bool(name)` → `boolean` (presence-of flag; missing
19
+ * flag is `false`)
20
+ * - `flags.maybeString(name)` → `string | undefined` (first value,
21
+ * or `undefined` if the flag was given
22
+ * as a bare boolean with no value)
23
+ *
24
+ * The dispatch layer (runSediment) was previously peppered with
25
+ * `typeof flags.x === "string"` / `Array.isArray(flags.x)` narrowing.
26
+ * With this helper the call-sites collapse to one-line reads and the
27
+ * raw flag map stops leaking across the runSediment boundary.
28
+ */
29
+ export class ParsedFlags {
30
+ raw;
31
+ constructor(raw) {
32
+ this.raw = raw;
33
+ }
34
+ /** Always returns an array. Missing flag → []. Single-occurrence
35
+ * flag → a 1-element array (parseFlags normalizes this). */
36
+ list(name) {
37
+ const v = this.raw[name];
38
+ if (v === undefined)
39
+ return [];
40
+ if (v === true)
41
+ return [];
42
+ return v;
43
+ }
44
+ /** Presence-of a bare boolean flag. Missing → false. */
45
+ bool(name) {
46
+ const v = this.raw[name];
47
+ if (v === undefined)
48
+ return false;
49
+ // A flag given as `--name <value>` is also "present" (it just happens
50
+ // to carry values too). Existing call-sites that want `--dry-run`
51
+ // semantics care about presence, not whether values are attached.
52
+ return true;
53
+ }
54
+ /** First value of a flag, or `undefined` if the flag is absent or
55
+ * was given as a bare boolean. */
56
+ maybeString(name) {
57
+ const v = this.raw[name];
58
+ if (v === undefined)
59
+ return undefined;
60
+ if (v === true)
61
+ return undefined;
62
+ return v[0];
63
+ }
64
+ }
65
+ /** Parse an argv tail into positional args + flag map.
66
+ *
67
+ * Supports:
68
+ * --flag value → flags[flag] = [value, ...] (advance i by 1)
69
+ * --flag → flags[flag] = true (when next token starts with `--` or is undefined)
70
+ * --flag v1 --flag v2 → repeated `--flag` values are accumulated
71
+ *
72
+ * Internally stores all values as `string[]` (or `true` for a bare
73
+ * boolean flag). Use the `ParsedFlags` helper to read typed accessors.
74
+ *
75
+ * Repeatable flag handling (Task 15b): when the same `--key` appears
76
+ * consecutively (e.g. `--segment a --segment b --segment c`), values
77
+ * are accumulated into a single `string[]`. A single occurrence is
78
+ * normalized to a 1-element array so callers can use `.list(name)`
79
+ * uniformly without shape-narrowing on the call-site.
80
+ */
81
+ export function parseFlags(argv) {
82
+ const positional = [];
83
+ const rawFlags = {};
84
+ for (let i = 0; i < argv.length; i++) {
85
+ // `as string`, not `!`: the loop bound is `argv.length`, so these reads are
86
+ // in range — the toolchain just cannot see that through the index signature.
87
+ const a = argv[i];
88
+ if (a.startsWith('--')) {
89
+ const k = a.slice(2);
90
+ const v = argv[i + 1];
91
+ if (v === undefined || v.startsWith('--')) {
92
+ rawFlags[k] = true;
93
+ }
94
+ else {
95
+ // Capture first value, then look ahead for `--k <value>` repeats.
96
+ const values = [v];
97
+ i += 2;
98
+ while (i < argv.length &&
99
+ argv[i] === `--${k}` &&
100
+ i + 1 < argv.length &&
101
+ !argv[i + 1].startsWith('--')) {
102
+ values.push(argv[i + 1]);
103
+ i += 2;
104
+ }
105
+ // Back up one — the outer for-loop will i++ past the flag, so the
106
+ // next iteration sees the next real token.
107
+ i--;
108
+ rawFlags[k] = values;
109
+ }
110
+ }
111
+ else {
112
+ positional.push(a);
113
+ }
114
+ }
115
+ return { positional, flags: new ParsedFlags(rawFlags) };
116
+ }
@@ -0,0 +1,15 @@
1
+ import type { ParsedFlags } from './sediment-argv-flags.js';
2
+ /** The `{ ok, error?, data? }` envelope every sediment verb returns. */
3
+ export interface CliResult {
4
+ ok: boolean;
5
+ error?: string;
6
+ data?: unknown;
7
+ }
8
+ /** One parsed argv tail: the pool home, the positionals and the flag accessors. */
9
+ export type SedimentContext = {
10
+ readonly home: string;
11
+ readonly positional: string[];
12
+ readonly flags: ParsedFlags;
13
+ };
14
+ /** A verb implementation. `runSediment` owns the error envelope around it. */
15
+ export type SedimentVerb = (ctx: SedimentContext) => CliResult | Promise<CliResult>;
@@ -0,0 +1,5 @@
1
+ // src/cli/commands/sediment-command-shared.ts
2
+ //
3
+ // The envelope and dispatch shapes every `peaks skill sediment` verb handler
4
+ // shares. Split out of `sediment-commands.ts`.
5
+ export {};