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,58 @@
1
+ import { type WorkspaceInitReport } from '../../../services/workspace/workspace-service.js';
2
+ import { type BootstrapProjectScanEnvelope } from '../../../services/prd/project-scan-bootstrap-service.js';
3
+ import type { WorkspaceInitOptions, WorkspaceInitRotation } from './init-options.js';
4
+ /** Everything one `peaks workspace init` run carries into its envelope phase. */
5
+ export type WorkspaceInitContext = {
6
+ options: WorkspaceInitOptions;
7
+ projectRoot: string;
8
+ sessionId: string;
9
+ rotation: WorkspaceInitRotation;
10
+ report: WorkspaceInitReport;
11
+ projectScanEnvelope: BootstrapProjectScanEnvelope | null;
12
+ projectScanError: string | null;
13
+ };
14
+ type InitTarget = {
15
+ projectRoot: string;
16
+ sessionId: string;
17
+ rotation: WorkspaceInitRotation;
18
+ };
19
+ /**
20
+ * Resolve the project root and the session id. Two paths:
21
+ * - explicit --session-id: use it as the requested binding target
22
+ * (ConflictingSessionError fires if it conflicts with an in-flight
23
+ * session, unless --allow-session-rebind is set)
24
+ * - omitted: defer to ensureSession(), which reuses an existing
25
+ * binding or auto-generates a fresh one. The init then writes
26
+ * .peaks/_runtime/session.json so the binding sticks.
27
+ *
28
+ * Before that: canonicalise the project root. If the user (or the
29
+ * LLM via "$(pwd)") passed a sub-directory of a real git repo
30
+ * (e.g. prompt-project/prompt-project/ inside the outer
31
+ * prompt-project/.git), promote the path to the git root. Without
32
+ * this, peaks would build a parallel .peaks/ tree under the
33
+ * nested sub-folder and silently break the project-binding model
34
+ * (the same regression that produced prompt-project/.peaks/ in
35
+ * the 5/27-5/29 sessions). When startPath is not inside any
36
+ * git repo, the helper falls through to the cwd verbatim.
37
+ * `resolveWritableProjectRoot` = `resolveCanonicalProjectRoot` plus the
38
+ * home-directory refusal. It has to be this one, and it has to run here:
39
+ * `ensureSessionWithRotation` below WRITES (it mints/binds a session), so
40
+ * a guard placed after it would leave a `.peaks/_runtime/` tree in the
41
+ * user's home even though the init was refused.
42
+ */
43
+ export declare function resolveInitTarget(options: WorkspaceInitOptions): Promise<InitTarget>;
44
+ export declare function runInitWorkspace(options: WorkspaceInitOptions, projectRoot: string, sessionId: string): Promise<WorkspaceInitReport>;
45
+ /**
46
+ * After the workspace dir is initialized, also bootstrap the
47
+ * `.peaks/project-scan/` artifact tree (project-scan.md + 4
48
+ * bundled audit/business templates). Idempotent — when the user
49
+ * re-runs `workspace init`, the existing files are kept (their
50
+ * sediment is user-authored). Pass `--no-project-scan-bootstrap`
51
+ * to skip, or `--force-project-scan-templates` to overwrite the
52
+ * 4 bundled templates anyway.
53
+ */
54
+ export declare function bootstrapProjectScanForInit(options: WorkspaceInitOptions, projectRoot: string): Promise<{
55
+ envelope: BootstrapProjectScanEnvelope | null;
56
+ error: string | null;
57
+ }>;
58
+ export {};
@@ -0,0 +1,121 @@
1
+ // Split out of `workspace/init-command.ts`:
2
+ // project-root + session resolution, the `initWorkspace` call itself, and the
3
+ // optional `.peaks/project-scan/` bootstrap.
4
+ import { resolveWritableProjectRoot } from '../../../services/config/config-safety.js';
5
+ import { initWorkspace } from '../../../services/workspace/workspace-service.js';
6
+ import { ensureSessionWithRotation } from '../../../services/session/session-manager.js';
7
+ import { bootstrapProjectScan } from '../../../services/prd/project-scan-bootstrap-service.js';
8
+ import { getErrorMessage } from '../../cli-helpers.js';
9
+ /**
10
+ * Resolve the project root and the session id. Two paths:
11
+ * - explicit --session-id: use it as the requested binding target
12
+ * (ConflictingSessionError fires if it conflicts with an in-flight
13
+ * session, unless --allow-session-rebind is set)
14
+ * - omitted: defer to ensureSession(), which reuses an existing
15
+ * binding or auto-generates a fresh one. The init then writes
16
+ * .peaks/_runtime/session.json so the binding sticks.
17
+ *
18
+ * Before that: canonicalise the project root. If the user (or the
19
+ * LLM via "$(pwd)") passed a sub-directory of a real git repo
20
+ * (e.g. prompt-project/prompt-project/ inside the outer
21
+ * prompt-project/.git), promote the path to the git root. Without
22
+ * this, peaks would build a parallel .peaks/ tree under the
23
+ * nested sub-folder and silently break the project-binding model
24
+ * (the same regression that produced prompt-project/.peaks/ in
25
+ * the 5/27-5/29 sessions). When startPath is not inside any
26
+ * git repo, the helper falls through to the cwd verbatim.
27
+ * `resolveWritableProjectRoot` = `resolveCanonicalProjectRoot` plus the
28
+ * home-directory refusal. It has to be this one, and it has to run here:
29
+ * `ensureSessionWithRotation` below WRITES (it mints/binds a session), so
30
+ * a guard placed after it would leave a `.peaks/_runtime/` tree in the
31
+ * user's home even though the init was refused.
32
+ */
33
+ export async function resolveInitTarget(options) {
34
+ const projectRoot = resolveWritableProjectRoot(options.project);
35
+ let sessionId;
36
+ let rotation = {
37
+ previousSessionId: null,
38
+ reason: null
39
+ };
40
+ if (options.sessionId !== undefined && options.sessionId.length > 0) {
41
+ sessionId = options.sessionId;
42
+ }
43
+ else {
44
+ const result = await ensureSessionWithRotation(projectRoot, {
45
+ // Commander translates `--no-rotate-on-outer-mismatch` into
46
+ // `options.rotateOnOuterMismatch = false` (the `--no-` prefix
47
+ // is consumed and the remainder becomes the JS property name,
48
+ // with the boolean value flipped). The pre-slice-014 anti-
49
+ // pattern (reading `options.<flag-with-no-prefix> === true`)
50
+ // is NOT used here. The default (no flag) leaves
51
+ // `options.rotateOnOuterMismatch` undefined, which is not
52
+ // equal to `false`, so the default is "rotate on mismatch"
53
+ // (the new auto-roll).
54
+ skipRotateOnOuterMismatch: options.rotateOnOuterMismatch === false
55
+ });
56
+ sessionId = result.sessionId;
57
+ rotation = {
58
+ previousSessionId: result.previousSessionId,
59
+ reason: result.rotationReason
60
+ };
61
+ }
62
+ return { projectRoot, sessionId, rotation };
63
+ }
64
+ export async function runInitWorkspace(options, projectRoot, sessionId) {
65
+ return initWorkspace({
66
+ projectRoot,
67
+ sessionId,
68
+ allowSessionRebind: options.allowSessionRebind === true,
69
+ // Commander translates `--no-claude-hooks` into
70
+ // `options.claudeHooks = false`. The default (no flag) leaves
71
+ // `options.claudeHooks` undefined, which is not equal to
72
+ // `false`, so the default is "install hooks" (the bypass is
73
+ // on). Pass `--no-claude-hooks` to opt out.
74
+ noClaudeHooks: options.claudeHooks === false,
75
+ // auto-apply for the missing-standards scaffold. Default false
76
+ // — only the diagnostic is emitted. Pass --init-standards to
77
+ // also run `executeProjectStandardsInit({ apply: true })`.
78
+ initStandards: options.initStandards === true
79
+ });
80
+ }
81
+ /**
82
+ * After the workspace dir is initialized, also bootstrap the
83
+ * `.peaks/project-scan/` artifact tree (project-scan.md + 4
84
+ * bundled audit/business templates). Idempotent — when the user
85
+ * re-runs `workspace init`, the existing files are kept (their
86
+ * sediment is user-authored). Pass `--no-project-scan-bootstrap`
87
+ * to skip, or `--force-project-scan-templates` to overwrite the
88
+ * 4 bundled templates anyway.
89
+ */
90
+ export async function bootstrapProjectScanForInit(options, projectRoot) {
91
+ if (options.projectScanBootstrap === false) {
92
+ // Explicit opt-out. The envelope stays null; the JSON
93
+ // response carries `projectScan: { skipped: true, ... }` so
94
+ // callers can distinguish "skipped by flag" from "skipped by
95
+ // idempotency".
96
+ return {
97
+ envelope: {
98
+ created: false,
99
+ skipped: true,
100
+ templatesBooted: 0,
101
+ templatesSkipped: 0,
102
+ projectScanPath: `${projectRoot}/.peaks/project-scan/project-scan.md`,
103
+ durationMs: 0
104
+ },
105
+ error: null
106
+ };
107
+ }
108
+ try {
109
+ const envelope = await bootstrapProjectScan({
110
+ projectRoot,
111
+ ...(options.forceProjectScanTemplates === true ? { forceTemplates: true } : {})
112
+ });
113
+ return { envelope, error: null };
114
+ }
115
+ catch (error) {
116
+ // Don't fail init over a project-scan issue — the workspace
117
+ // is already initialized and the user has the JSON envelope.
118
+ // Surface the failure as a warning so the LLM can decide.
119
+ return { envelope: null, error: getErrorMessage(error) };
120
+ }
121
+ }
@@ -0,0 +1,3 @@
1
+ import type { WorkspaceInitContext } from './init-context.js';
2
+ import type { CodegraphAutoStakeOutcome, FirstTimeHooksInstallOutcome } from './init-options.js';
3
+ export declare function buildInitEnvelopeData(ctx: WorkspaceInitContext, hooksOutcome: FirstTimeHooksInstallOutcome, codegraphAutoOutcome: CodegraphAutoStakeOutcome | null): Record<string, unknown>;
@@ -0,0 +1,34 @@
1
+ export function buildInitEnvelopeData(ctx, hooksOutcome, codegraphAutoOutcome) {
2
+ const { report, rotation, projectScanEnvelope, projectScanError } = ctx;
3
+ return {
4
+ ...report,
5
+ // JSON envelope so the LLM and the human both see the swap.
6
+ // Field is omitted (not null) when no rotation fired.
7
+ ...(rotation.previousSessionId !== null && rotation.reason !== null
8
+ ? {
9
+ rotation: {
10
+ previousSessionId: rotation.previousSessionId,
11
+ reason: rotation.reason
12
+ }
13
+ }
14
+ : {}),
15
+ hooksInstall: {
16
+ decision: hooksOutcome.decision,
17
+ action: hooksOutcome.action,
18
+ scope: hooksOutcome.scope,
19
+ ...(hooksOutcome.reason !== undefined ? { reason: hooksOutcome.reason } : {})
20
+ },
21
+ ...(codegraphAutoOutcome !== null ? { codegraphAutoStake: codegraphAutoOutcome } : {}),
22
+ // for the .peaks/project-scan/ bootstrap. Always present
23
+ // (even when skipped / errored) so downstream readers can
24
+ // rely on the shape.
25
+ ...(projectScanEnvelope !== null
26
+ ? {
27
+ projectScan: {
28
+ ...projectScanEnvelope,
29
+ ...(projectScanError !== null ? { error: projectScanError } : {})
30
+ }
31
+ }
32
+ : {})
33
+ };
34
+ }
@@ -0,0 +1,3 @@
1
+ import { type ProgramIO } from '../../cli-helpers.js';
2
+ import type { WorkspaceInitOptions } from './init-options.js';
3
+ export declare function reportWorkspaceInitFailure(io: ProgramIO, error: unknown, options: WorkspaceInitOptions): void;
@@ -0,0 +1,84 @@
1
+ // Split out of `workspace/init-command.ts`: the
2
+ // typed failure arms of `peaks workspace init`. Each arm is a printer +
3
+ // exit-code pair; the dispatcher preserves the original branch order.
4
+ import { InvalidSessionIdError, ConflictingSessionError, LegacyChangeIdSiblingError } from '../../../services/workspace/workspace-service.js';
5
+ import { UnsafeProjectRootError } from '../../../services/config/config-safety.js';
6
+ import { fail } from 'peaks-loop-shared/result';
7
+ import { getErrorMessage, printResult } from '../../cli-helpers.js';
8
+ /**
9
+ * A typed refusal, not a crash: "you are standing in your home directory, which
10
+ * is not a project" is a thing the caller can fix in one step, and the envelope
11
+ * has to say which directory was refused and what to pass instead.
12
+ * `WORKSPACE_INIT_FAILED` below would have buried it as an unexplained failure.
13
+ */
14
+ function reportUnsafeProjectRoot(io, error, options) {
15
+ printResult(io, fail('workspace.init', 'UNSAFE_PROJECT_ROOT', error.message, {
16
+ resolvedProjectRoot: error.projectRoot,
17
+ projectOption: options.project ?? null
18
+ }, [
19
+ 'Pass --project <path-to-your-project> instead of a path that resolves to your home directory.',
20
+ 'This command creates .peaks/, .gitignore, .claude/settings.local.json and a codegraph index; none of those belong in $HOME.',
21
+ 'If you meant to initialize the current directory, cd into a project directory first — peaks will not write into the home directory itself.'
22
+ ]), options.json);
23
+ process.exitCode = 1;
24
+ }
25
+ function reportInvalidSessionId(io, error, options) {
26
+ printResult(io, fail('workspace.init', error.code, error.message, { sessionId: options.sessionId }, [
27
+ 'Use a date-prefixed kebab slug like 2026-05-25-add-user-auth'
28
+ ]), options.json);
29
+ process.exitCode = 1;
30
+ }
31
+ function reportConflictingSession(io, error, options) {
32
+ printResult(io, fail('workspace.init', error.code, error.message, {
33
+ existingSessionId: error.existingSessionId,
34
+ requestedSessionId: error.requestedSessionId
35
+ }, [
36
+ `Finish or abandon session "${error.existingSessionId}" first, then re-run workspace init.`,
37
+ 'Or pass --allow-session-rebind to override the binding (overwrites the prior binding).'
38
+ ]), options.json);
39
+ process.exitCode = 1;
40
+ }
41
+ /**
42
+ * Slice 2.8.3: a 2.8.0-era orphan `.peaks/_runtime/<change-id>/` was found at
43
+ * top level. The CLI surfaces the migration steps verbatim from the error
44
+ * message plus three concrete nextActions so the user (or LLM driver) has an
45
+ * unambiguous recovery path. We do NOT auto-migrate because the legacy sibling
46
+ * dir may contain user-authored content.
47
+ */
48
+ function reportLegacyChangeIdSibling(io, error, options) {
49
+ printResult(io, fail('workspace.init', error.code, error.message, {
50
+ sessionId: error.sessionId,
51
+ legacyPath: error.legacyPath
52
+ }, [
53
+ `Inspect ${error.legacyPath} for any user-authored content you want to keep.`,
54
+ `Move any desired files into .peaks/_runtime/<sessionId>/<role>/ (gitignored), then delete ${error.legacyPath}.`,
55
+ `Re-run \`peaks workspace init --project <path>\` to bind a fresh session.`
56
+ ]), options.json);
57
+ process.exitCode = 1;
58
+ }
59
+ function reportGenericInitFailure(io, error, options) {
60
+ // The `LegacyChangeIdBindingError` catch branch is gone — the change-id
61
+ // binding file at `.peaks/_runtime/current-change` is no longer written by
62
+ // init, so there is no legacy binding to detect.
63
+ printResult(io, fail('workspace.init', 'WORKSPACE_INIT_FAILED', getErrorMessage(error), { projectRoot: options.project, sessionId: options.sessionId }, ['Verify the project path exists and is writable']), options.json);
64
+ process.exitCode = 1;
65
+ }
66
+ export function reportWorkspaceInitFailure(io, error, options) {
67
+ if (error instanceof UnsafeProjectRootError) {
68
+ reportUnsafeProjectRoot(io, error, options);
69
+ return;
70
+ }
71
+ if (error instanceof InvalidSessionIdError) {
72
+ reportInvalidSessionId(io, error, options);
73
+ return;
74
+ }
75
+ if (error instanceof ConflictingSessionError) {
76
+ reportConflictingSession(io, error, options);
77
+ return;
78
+ }
79
+ if (error instanceof LegacyChangeIdSiblingError) {
80
+ reportLegacyChangeIdSibling(io, error, options);
81
+ return;
82
+ }
83
+ reportGenericInitFailure(io, error, options);
84
+ }
@@ -0,0 +1,24 @@
1
+ import type { FirstTimeHooksInstallOutcome, ResolveFirstTimeHooksInstallOptions } from './init-options.js';
2
+ /**
3
+ * Resolve the first-time "install peaks hooks" decision for this project.
4
+ * Decision tree:
5
+ *
6
+ * 1. Read the sticky marker.
7
+ * - Marker present:
8
+ * - marker.decision === 'installed' AND hooks are present → action: marker-honored, no side effects
9
+ * - marker.decision === 'installed' AND hooks are MISSING → re-install, action: reinstalled
10
+ * - marker.decision === 'skipped' → action: marker-honored, no install
11
+ * - Marker absent:
12
+ * - hooks already present → write a fresh 'installed' marker, action: already-installed
13
+ * - otherwise:
14
+ * - explicit --install-hooks=auto → install + marker, action: first-decision
15
+ * - explicit --install-hooks=skip → marker only, action: first-decision
16
+ * - explicit --install-hooks=ask OR default in TTY:
17
+ * - jsonMode → silently auto-install (LLM cannot answer), action: first-decision
18
+ * - TTY → prompt; on yes install + marker, on no marker-only
19
+ * - default in non-TTY → auto-install, action: first-decision
20
+ *
21
+ * Project scope is the only supported scope here; global scope is reserved
22
+ * for explicit `peaks hooks install --global` invocations.
23
+ */
24
+ export declare function resolveFirstTimeHooksInstall(options: ResolveFirstTimeHooksInstallOptions): Promise<FirstTimeHooksInstallOutcome>;
@@ -0,0 +1,189 @@
1
+ // Split out of `workspace/init-command.ts`:
2
+ // the first-time "install peaks hooks" decision. The original function was 127
3
+ // code lines with a complexity of 19; the marker / auto / prompt paths are now
4
+ // one function each so every branch stays inside the 50-code-line cap.
5
+ import { applyHookInstall, readHookStatus } from '../../../services/skills/hooks-settings-service.js';
6
+ import { getErrorMessage } from '../../cli-helpers.js';
7
+ import { readDecisionMarker, writeDecisionMarker, promptYesNo } from './helpers.js';
8
+ const PROMPT_TEXT = '\nPeaks-Cli: install the PreToolUse hooks for this project now?\n' +
9
+ ' → Bash matcher: `peaks gate enforce` (SOP gate enforcement)\n' +
10
+ 'The gate-enforce hook runs on every Claude Code tool call without further prompting. The decision is sticky\n' +
11
+ '(recorded in .peaks/.peaks-init-hooks-decision.json) and re-runs of `workspace init` will\n' +
12
+ 'honour it. Re-run with --install-hooks=skip or --install-hooks=auto to override.\n\n' +
13
+ 'Install now? [Y/n]: ';
14
+ /**
15
+ * readHookStatus can throw (e.g. .claude is a symlink → safety check rejects).
16
+ * Treat any throw as "hooks status unknown → treat as not-installed" so the
17
+ * function still reaches the install path; the install will surface the same
18
+ * error in a more specific reason field.
19
+ */
20
+ function readHookStatusOrUnknown(projectRoot) {
21
+ try {
22
+ return readHookStatus('project', projectRoot);
23
+ }
24
+ catch (error) {
25
+ // Fall through to the install path; the failure will be captured below.
26
+ void error;
27
+ return { installed: false };
28
+ }
29
+ }
30
+ function resolveWithExistingMarker(projectRoot, existingMarker, hookStatus) {
31
+ if (existingMarker.decision === 'installed' && !hookStatus.installed) {
32
+ try {
33
+ applyHookInstall('project', projectRoot);
34
+ return {
35
+ decision: 'installed',
36
+ action: 'reinstalled',
37
+ scope: 'project',
38
+ reason: 'marker-said-installed-hooks-missing'
39
+ };
40
+ }
41
+ catch (error) {
42
+ return {
43
+ decision: existingMarker.decision,
44
+ action: 'marker-honored',
45
+ scope: 'project',
46
+ reason: `reinstall-failed: ${getErrorMessage(error)}`
47
+ };
48
+ }
49
+ }
50
+ return {
51
+ decision: existingMarker.decision,
52
+ action: 'marker-honored',
53
+ scope: existingMarker.scope
54
+ };
55
+ }
56
+ /**
57
+ * The reason code distinguishes the path the user took to reach auto-install:
58
+ * - explicit-auto: user passed --install-hooks=auto
59
+ * - json-mode: no --install-hooks flag, but --json was set
60
+ * - non-tty-default: no flag, no --json, stdin is not a TTY
61
+ */
62
+ function autoInstallHooks(projectRoot, explicitMode, jsonMode) {
63
+ let autoReason;
64
+ if (explicitMode === 'auto') {
65
+ autoReason = 'explicit-auto';
66
+ }
67
+ else if (jsonMode) {
68
+ autoReason = 'json-mode';
69
+ }
70
+ else {
71
+ autoReason = 'non-tty-default';
72
+ }
73
+ try {
74
+ applyHookInstall('project', projectRoot);
75
+ writeDecisionMarker(projectRoot, 'installed');
76
+ return {
77
+ decision: 'installed',
78
+ action: 'first-decision',
79
+ scope: 'project',
80
+ reason: autoReason
81
+ };
82
+ }
83
+ catch (error) {
84
+ // Auto-install failed: still record the decision so we do not keep retrying
85
+ // every workspace init. The user can fix the underlying problem and run
86
+ // `peaks hooks install` manually.
87
+ writeDecisionMarker(projectRoot, 'installed');
88
+ return {
89
+ decision: 'installed',
90
+ action: 'first-decision',
91
+ scope: 'project',
92
+ reason: `install-failed: ${getErrorMessage(error)}`
93
+ };
94
+ }
95
+ }
96
+ /** `ask` mode in a TTY: prompt once and record the answer sticky. */
97
+ async function promptForHooksInstall(projectRoot) {
98
+ process.stderr.write(PROMPT_TEXT);
99
+ const answer = await promptYesNo('');
100
+ if (answer === null) {
101
+ // TTY disappeared mid-prompt (rare): treat as skip + write marker.
102
+ writeDecisionMarker(projectRoot, 'skipped');
103
+ return {
104
+ decision: 'skipped',
105
+ action: 'first-decision',
106
+ scope: 'project',
107
+ reason: 'tty-prompt-aborted'
108
+ };
109
+ }
110
+ if (!answer) {
111
+ writeDecisionMarker(projectRoot, 'skipped');
112
+ return {
113
+ decision: 'skipped',
114
+ action: 'first-decision',
115
+ scope: 'project',
116
+ reason: 'user-answered-no'
117
+ };
118
+ }
119
+ try {
120
+ applyHookInstall('project', projectRoot);
121
+ writeDecisionMarker(projectRoot, 'installed');
122
+ return {
123
+ decision: 'installed',
124
+ action: 'first-decision',
125
+ scope: 'project',
126
+ reason: 'user-answered-yes'
127
+ };
128
+ }
129
+ catch (error) {
130
+ writeDecisionMarker(projectRoot, 'installed');
131
+ return {
132
+ decision: 'installed',
133
+ action: 'first-decision',
134
+ scope: 'project',
135
+ reason: `install-failed: ${getErrorMessage(error)}`
136
+ };
137
+ }
138
+ }
139
+ /**
140
+ * Resolve the first-time "install peaks hooks" decision for this project.
141
+ * Decision tree:
142
+ *
143
+ * 1. Read the sticky marker.
144
+ * - Marker present:
145
+ * - marker.decision === 'installed' AND hooks are present → action: marker-honored, no side effects
146
+ * - marker.decision === 'installed' AND hooks are MISSING → re-install, action: reinstalled
147
+ * - marker.decision === 'skipped' → action: marker-honored, no install
148
+ * - Marker absent:
149
+ * - hooks already present → write a fresh 'installed' marker, action: already-installed
150
+ * - otherwise:
151
+ * - explicit --install-hooks=auto → install + marker, action: first-decision
152
+ * - explicit --install-hooks=skip → marker only, action: first-decision
153
+ * - explicit --install-hooks=ask OR default in TTY:
154
+ * - jsonMode → silently auto-install (LLM cannot answer), action: first-decision
155
+ * - TTY → prompt; on yes install + marker, on no marker-only
156
+ * - default in non-TTY → auto-install, action: first-decision
157
+ *
158
+ * Project scope is the only supported scope here; global scope is reserved
159
+ * for explicit `peaks hooks install --global` invocations.
160
+ */
161
+ export async function resolveFirstTimeHooksInstall(options) {
162
+ const { projectRoot, jsonMode } = options;
163
+ const existingMarker = readDecisionMarker(projectRoot);
164
+ const hookStatus = readHookStatusOrUnknown(projectRoot);
165
+ if (existingMarker !== null) {
166
+ return resolveWithExistingMarker(projectRoot, existingMarker, hookStatus);
167
+ }
168
+ // No marker yet — first decision.
169
+ if (hookStatus.installed) {
170
+ writeDecisionMarker(projectRoot, 'installed');
171
+ return { decision: 'installed', action: 'already-installed', scope: 'project' };
172
+ }
173
+ // Determine effective mode (explicit flag wins; default depends on TTY + jsonMode).
174
+ const explicitMode = options.explicitMode;
175
+ const effectiveMode = explicitMode ?? (jsonMode ? 'auto' : process.stdin.isTTY === true ? 'ask' : 'auto');
176
+ if (effectiveMode === 'skip') {
177
+ writeDecisionMarker(projectRoot, 'skipped');
178
+ return {
179
+ decision: 'skipped',
180
+ action: 'first-decision',
181
+ scope: 'project',
182
+ reason: 'explicit-skip'
183
+ };
184
+ }
185
+ if (effectiveMode === 'auto' || jsonMode) {
186
+ return autoInstallHooks(projectRoot, explicitMode, jsonMode);
187
+ }
188
+ return promptForHooksInstall(projectRoot);
189
+ }
@@ -0,0 +1,102 @@
1
+ import type { HooksDecision } from './helpers.js';
2
+ export type WorkspaceInitOptions = {
3
+ project: string;
4
+ sessionId?: string;
5
+ json?: boolean;
6
+ allowSessionRebind?: boolean;
7
+ /**
8
+ * flag is `--no-rotate-on-outer-mismatch`; commander strips the
9
+ * `--no-` prefix and assigns the boolean to this property (default
10
+ * `true`, set to `false` when the flag is passed). The wrapper
11
+ * reads this as `=== false` to opt out. The presence file still
12
+ * records `outerSessionMismatch` regardless of the flag's value.
13
+ */
14
+ rotateOnOuterMismatch?: boolean;
15
+ /**
16
+ * How to handle the first-time "install peaks hooks" prompt.
17
+ * - ask (default in TTY): prompt the user once, sticky-marker the answer
18
+ * - auto (default in --json / non-TTY): install silently, sticky-marker installed
19
+ * - skip: write sticky-marker skipped, do not install
20
+ * After the first decision the sticky marker wins, regardless of --install-hooks
21
+ * (re-runs respect the recorded decision; only re-install when the marker says
22
+ * installed but the hooks have been removed out from under us).
23
+ */
24
+ installHooks?: 'ask' | 'auto' | 'skip';
25
+ /**
26
+ * Slice 2.0.1-bug3-fact-forcing-bypass: opt out of writing the
27
+ * consumer-project `.claude/settings.local.json` file. Default
28
+ * (commander `--no-` prefix) is `true`; pass `--no-claude-hooks` to
29
+ * set this to `false`. The wrapper reads this as `=== false` to
30
+ * skip the materialization. The bypass is documented in
31
+ * `peaks-code/references/anchoring-and-session-info.md`.
32
+ */
33
+ claudeHooks?: boolean;
34
+ /**
35
+ * auto-scaffold `.claude/rules/{common,<language>}/` when missing.
36
+ * Default `false` — the diagnostic fires but no write happens.
37
+ * Set to `true` (via `--init-standards`) to also run
38
+ * `executeProjectStandardsInit({ projectRoot, apply: true })`.
39
+ */
40
+ initStandards?: boolean;
41
+ /**
42
+ * commander-style `--no-project-scan-bootstrap` opt-out. Default
43
+ * (no flag) leaves this `undefined` (treated as `true`). Pass the
44
+ * flag to set `options.projectScanBootstrap === false`, which the
45
+ * caller reads as `=== false` to skip the bootstrap call.
46
+ */
47
+ projectScanBootstrap?: boolean;
48
+ /**
49
+ * `--force-project-scan-templates` flag. Default (no flag)
50
+ * leaves this `undefined`. Pass the flag to set
51
+ * `options.forceProjectScanTemplates === true`, which forces the
52
+ * bootstrap service to overwrite the 4 bundled audit/business
53
+ * templates even when they already exist (sediment is preserved
54
+ * otherwise).
55
+ */
56
+ forceProjectScanTemplates?: boolean;
57
+ };
58
+ /**
59
+ * Outcome of the first-time "install peaks hooks" decision attached to
60
+ * `peaks workspace init`. Reported in the response data so the LLM and
61
+ * the human both see what happened.
62
+ */
63
+ export type FirstTimeHooksInstallOutcome = {
64
+ /** The decision recorded (or already on file) in the sticky marker. */
65
+ decision: HooksDecision;
66
+ /**
67
+ * What the install path actually did this call.
68
+ * - first-decision: we recorded a brand-new sticky marker (and may have installed)
69
+ * - reinstalled: the marker said installed but the hooks were missing — we re-applied
70
+ * - marker-honored: the marker already existed; we did not touch the hooks
71
+ * - already-installed: the hooks were already present and the marker does not exist yet
72
+ * (we write a fresh marker to lock in the answer for next time)
73
+ */
74
+ action: 'first-decision' | 'reinstalled' | 'marker-honored' | 'already-installed';
75
+ scope: 'project' | 'global';
76
+ /**
77
+ * Why the action was the way it was (e.g. "stdin-not-tty", "user-answered-no",
78
+ * "marker-installed-hooks-missing"). Surfaced for forensics.
79
+ */
80
+ reason?: string;
81
+ };
82
+ export type ResolveFirstTimeHooksInstallOptions = {
83
+ projectRoot: string;
84
+ /**
85
+ * Explicit mode from the --install-hooks flag. When omitted, the default
86
+ * is "ask" in TTY mode and "auto" otherwise (see `defaultMode` logic).
87
+ */
88
+ explicitMode?: 'ask' | 'auto' | 'skip' | undefined;
89
+ /**
90
+ * Whether the caller is in --json mode. In --json mode we never prompt
91
+ * (the LLM cannot answer an interactive question) — we silently treat
92
+ * "ask" as "auto" and proceed.
93
+ */
94
+ jsonMode: boolean;
95
+ };
96
+ export type WorkspaceInitRotation = {
97
+ previousSessionId: string | null;
98
+ reason: 'outer-session-mismatch' | null;
99
+ };
100
+ export type CodegraphAutoStakeOutcome = {
101
+ status: 'fresh' | 'noop' | 'conflict';
102
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -9,13 +9,17 @@
9
9
  * list / gc / lease-status read and mutate the same on-disk lease store.
10
10
  * They coexist with `peaks worktree auth grant|revoke|status` (the L2 hook
11
11
  * gate surface) on the shared `peaks worktree` parent command.
12
+ *
13
+ * Each sub-command now lives in its own `worktree-lease-<name>-command.ts`
14
+ * sibling (registrar + runner + helpers), with the shared pieces in
15
+ * `worktree-lease-session.ts` (session / project-root resolution),
16
+ * `worktree-lease-load.ts` (single-lease loader), `worktree-lease-store.ts`
17
+ * (lease-store reader) and `worktree-lease-git.ts` (best-effort git
18
+ * helpers). This module keeps the registration entry point and re-exports
19
+ * the two resolvers the rest of the CLI imports from this path. Command
20
+ * names, options, envelopes, error codes and exit codes are unchanged.
12
21
  */
13
22
  import type { Command } from 'commander';
14
23
  import { type ProgramIO } from '../cli-helpers.js';
15
- export declare function resolveSessionId(options: {
16
- session?: string;
17
- }, projectRoot: string): string;
18
- export declare function resolveProjectRoot(options: {
19
- project?: string;
20
- }): string;
24
+ export { resolveProjectRoot, resolveSessionId } from './worktree-lease-session.js';
21
25
  export declare function registerWorktreeLeaseCommands(auth: Command, io: ProgramIO): void;