peaks-loop 4.1.3 → 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 (402) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +56 -0
  3. package/README-en.md +1 -1
  4. package/README.md +1 -1
  5. package/dist/cli/commands/asset-command-shared.d.ts +12 -0
  6. package/dist/cli/commands/asset-command-shared.js +45 -0
  7. package/dist/cli/commands/asset-commands.d.ts +6 -1
  8. package/dist/cli/commands/asset-commands.js +11 -372
  9. package/dist/cli/commands/asset-crystallize-command.d.ts +3 -0
  10. package/dist/cli/commands/asset-crystallize-command.js +60 -0
  11. package/dist/cli/commands/asset-crystallize-payload.d.ts +47 -0
  12. package/dist/cli/commands/asset-crystallize-payload.js +85 -0
  13. package/dist/cli/commands/asset-crystallize-runner.d.ts +3 -0
  14. package/dist/cli/commands/asset-crystallize-runner.js +133 -0
  15. package/dist/cli/commands/asset-dispose-command.d.ts +3 -0
  16. package/dist/cli/commands/asset-dispose-command.js +99 -0
  17. package/dist/cli/commands/asset-status-command.d.ts +3 -0
  18. package/dist/cli/commands/asset-status-command.js +100 -0
  19. package/dist/cli/commands/baseline-audit-command.d.ts +3 -0
  20. package/dist/cli/commands/baseline-audit-command.js +64 -0
  21. package/dist/cli/commands/baseline-command-shared.d.ts +23 -0
  22. package/dist/cli/commands/baseline-command-shared.js +39 -0
  23. package/dist/cli/commands/baseline-commands.js +33 -313
  24. package/dist/cli/commands/baseline-freeze-commands.d.ts +4 -0
  25. package/dist/cli/commands/baseline-freeze-commands.js +81 -0
  26. package/dist/cli/commands/baseline-guard-command.d.ts +3 -0
  27. package/dist/cli/commands/baseline-guard-command.js +52 -0
  28. package/dist/cli/commands/baseline-read-commands.d.ts +5 -0
  29. package/dist/cli/commands/baseline-read-commands.js +72 -0
  30. package/dist/cli/commands/baseline-rollback-commands.d.ts +4 -0
  31. package/dist/cli/commands/baseline-rollback-commands.js +88 -0
  32. package/dist/cli/commands/classify-downgrade-command.d.ts +9 -0
  33. package/dist/cli/commands/classify-downgrade-command.js +21 -0
  34. package/dist/cli/commands/classify-run-command.d.ts +9 -0
  35. package/dist/cli/commands/classify-run-command.js +73 -0
  36. package/dist/cli/commands/classify-signals.d.ts +5 -0
  37. package/dist/cli/commands/classify-signals.js +104 -0
  38. package/dist/cli/commands/code-emit-handoff-command.js +40 -3
  39. package/dist/cli/commands/code-gate-step-08-command.js +25 -9
  40. package/dist/cli/commands/codegraph-command-options.d.ts +22 -0
  41. package/dist/cli/commands/codegraph-command-options.js +22 -0
  42. package/dist/cli/commands/codegraph-commands.d.ts +2 -2
  43. package/dist/cli/commands/codegraph-commands.js +14 -397
  44. package/dist/cli/commands/codegraph-config-restore-command.d.ts +3 -0
  45. package/dist/cli/commands/codegraph-config-restore-command.js +200 -0
  46. package/dist/cli/commands/codegraph-proxy-commands.d.ts +10 -0
  47. package/dist/cli/commands/codegraph-proxy-commands.js +159 -0
  48. package/dist/cli/commands/codegraph-repair-commands.d.ts +3 -0
  49. package/dist/cli/commands/codegraph-repair-commands.js +94 -0
  50. package/dist/cli/commands/codegraph-status-command.d.ts +1 -1
  51. package/dist/cli/commands/codegraph-status-command.js +27 -214
  52. package/dist/cli/commands/codegraph-status-integrity.d.ts +44 -0
  53. package/dist/cli/commands/codegraph-status-integrity.js +121 -0
  54. package/dist/cli/commands/codegraph-status-json.d.ts +5 -0
  55. package/dist/cli/commands/codegraph-status-json.js +127 -0
  56. package/dist/cli/commands/container-command-shared.d.ts +60 -0
  57. package/dist/cli/commands/container-command-shared.js +52 -0
  58. package/dist/cli/commands/container-commands.d.ts +1 -1
  59. package/dist/cli/commands/container-commands.js +4 -216
  60. package/dist/cli/commands/container-release-command.d.ts +3 -0
  61. package/dist/cli/commands/container-release-command.js +105 -0
  62. package/dist/cli/commands/container-spawn-command.d.ts +3 -0
  63. package/dist/cli/commands/container-spawn-command.js +148 -0
  64. package/dist/cli/commands/context-check-command.d.ts +3 -0
  65. package/dist/cli/commands/context-check-command.js +81 -0
  66. package/dist/cli/commands/context-commands.d.ts +2 -7
  67. package/dist/cli/commands/context-commands.js +6 -276
  68. package/dist/cli/commands/context-layer-command.d.ts +3 -0
  69. package/dist/cli/commands/context-layer-command.js +34 -0
  70. package/dist/cli/commands/context-layer-fetchers.d.ts +15 -0
  71. package/dist/cli/commands/context-layer-fetchers.js +162 -0
  72. package/dist/cli/commands/context-status-command.d.ts +17 -0
  73. package/dist/cli/commands/context-status-command.js +41 -0
  74. package/dist/cli/commands/contract-write-command.d.ts +3 -0
  75. package/dist/cli/commands/contract-write-command.js +144 -0
  76. package/dist/cli/commands/core/doctor-bindings.d.ts +17 -0
  77. package/dist/cli/commands/core/doctor-bindings.js +30 -0
  78. package/dist/cli/commands/core/doctor-command.d.ts +4 -18
  79. package/dist/cli/commands/core/doctor-command.js +2 -323
  80. package/dist/cli/commands/core/doctor-logs.d.ts +8 -0
  81. package/dist/cli/commands/core/doctor-logs.js +32 -0
  82. package/dist/cli/commands/core/doctor-probes.d.ts +3 -0
  83. package/dist/cli/commands/core/doctor-probes.js +55 -0
  84. package/dist/cli/commands/core/doctor-run-command.d.ts +12 -0
  85. package/dist/cli/commands/core/doctor-run-command.js +172 -0
  86. package/dist/cli/commands/core/doctor-summary.d.ts +7 -0
  87. package/dist/cli/commands/core/doctor-summary.js +39 -0
  88. package/dist/cli/commands/core/memory-command-shared.d.ts +25 -0
  89. package/dist/cli/commands/core/memory-command-shared.js +20 -0
  90. package/dist/cli/commands/core/memory-command.d.ts +1 -1
  91. package/dist/cli/commands/core/memory-command.js +6 -227
  92. package/dist/cli/commands/core/memory-delegated-verbs.d.ts +4 -0
  93. package/dist/cli/commands/core/memory-delegated-verbs.js +178 -0
  94. package/dist/cli/commands/core/memory-extract-command.d.ts +3 -0
  95. package/dist/cli/commands/core/memory-extract-command.js +90 -0
  96. package/dist/cli/commands/core/memory-sync-command.d.ts +3 -0
  97. package/dist/cli/commands/core/memory-sync-command.js +38 -0
  98. package/dist/cli/commands/core/session-command.d.ts +1 -1
  99. package/dist/cli/commands/core/session-command.js +12 -206
  100. package/dist/cli/commands/core/session-info-command.d.ts +3 -0
  101. package/dist/cli/commands/core/session-info-command.js +142 -0
  102. package/dist/cli/commands/core/session-verb-commands.d.ts +5 -0
  103. package/dist/cli/commands/core/session-verb-commands.js +58 -0
  104. package/dist/cli/commands/core/standards-command.d.ts +1 -24
  105. package/dist/cli/commands/core/standards-command.js +33 -201
  106. package/dist/cli/commands/core/standards-init-command.d.ts +3 -0
  107. package/dist/cli/commands/core/standards-init-command.js +87 -0
  108. package/dist/cli/commands/core/standards-lint.d.ts +24 -0
  109. package/dist/cli/commands/core/standards-lint.js +57 -0
  110. package/dist/cli/commands/core/standards-migrate-command.d.ts +3 -0
  111. package/dist/cli/commands/core/standards-migrate-command.js +57 -0
  112. package/dist/cli/commands/cron-scheduler-commands.d.ts +5 -1
  113. package/dist/cli/commands/cron-scheduler-commands.js +36 -206
  114. package/dist/cli/commands/cron-scheduler-run-once-command.d.ts +7 -0
  115. package/dist/cli/commands/cron-scheduler-run-once-command.js +35 -0
  116. package/dist/cli/commands/cron-scheduler-shared.d.ts +6 -0
  117. package/dist/cli/commands/cron-scheduler-shared.js +48 -0
  118. package/dist/cli/commands/cron-scheduler-start-command.d.ts +7 -0
  119. package/dist/cli/commands/cron-scheduler-start-command.js +65 -0
  120. package/dist/cli/commands/cron-scheduler-status-command.d.ts +7 -0
  121. package/dist/cli/commands/cron-scheduler-status-command.js +46 -0
  122. package/dist/cli/commands/cron-scheduler-stop-command.d.ts +7 -0
  123. package/dist/cli/commands/cron-scheduler-stop-command.js +61 -0
  124. package/dist/cli/commands/dispatch-dag-envelope.d.ts +41 -0
  125. package/dist/cli/commands/dispatch-dag-envelope.js +49 -0
  126. package/dist/cli/commands/dispatch-dag-failure.d.ts +18 -0
  127. package/dist/cli/commands/dispatch-dag-failure.js +16 -0
  128. package/dist/cli/commands/dispatch-dag-preflight.d.ts +51 -0
  129. package/dist/cli/commands/dispatch-dag-preflight.js +105 -0
  130. package/dist/cli/commands/dispatch-dag-runners.d.ts +48 -0
  131. package/dist/cli/commands/dispatch-dag-runners.js +73 -0
  132. package/dist/cli/commands/dispatch-from-dag.d.ts +27 -0
  133. package/dist/cli/commands/dispatch-from-dag.js +87 -257
  134. package/dist/cli/commands/final-review-command-envelopes.d.ts +44 -0
  135. package/dist/cli/commands/final-review-command-envelopes.js +100 -0
  136. package/dist/cli/commands/final-review-command-shared.d.ts +52 -0
  137. package/dist/cli/commands/final-review-command-shared.js +35 -0
  138. package/dist/cli/commands/final-review-commands.d.ts +7 -27
  139. package/dist/cli/commands/final-review-commands.js +13 -240
  140. package/dist/cli/commands/final-review-prepare-command.d.ts +3 -0
  141. package/dist/cli/commands/final-review-prepare-command.js +200 -0
  142. package/dist/cli/commands/governance-classify-contract-commands.d.ts +23 -9
  143. package/dist/cli/commands/governance-classify-contract-commands.js +26 -269
  144. package/dist/cli/commands/hooks-command-shared.d.ts +42 -0
  145. package/dist/cli/commands/hooks-command-shared.js +32 -0
  146. package/dist/cli/commands/hooks-commands.d.ts +20 -0
  147. package/dist/cli/commands/hooks-commands.js +75 -309
  148. package/dist/cli/commands/hooks-install-envelopes.d.ts +6 -0
  149. package/dist/cli/commands/hooks-install-envelopes.js +144 -0
  150. package/dist/cli/commands/hooks-status-command.d.ts +3 -0
  151. package/dist/cli/commands/hooks-status-command.js +93 -0
  152. package/dist/cli/commands/hooks-uninstall-command.d.ts +3 -0
  153. package/dist/cli/commands/hooks-uninstall-command.js +43 -0
  154. package/dist/cli/commands/loop-command-shared.d.ts +31 -0
  155. package/dist/cli/commands/loop-command-shared.js +15 -0
  156. package/dist/cli/commands/loop-commands.d.ts +12 -17
  157. package/dist/cli/commands/loop-commands.js +56 -238
  158. package/dist/cli/commands/loop-export-command.d.ts +3 -0
  159. package/dist/cli/commands/loop-export-command.js +73 -0
  160. package/dist/cli/commands/loop-goal-compose-command.d.ts +3 -0
  161. package/dist/cli/commands/loop-goal-compose-command.js +36 -0
  162. package/dist/cli/commands/loop-import-command.d.ts +3 -0
  163. package/dist/cli/commands/loop-import-command.js +86 -0
  164. package/dist/cli/commands/loop-placeholder-commands.d.ts +3 -0
  165. package/dist/cli/commands/loop-placeholder-commands.js +52 -0
  166. package/dist/cli/commands/memory-command-shared.d.ts +59 -0
  167. package/dist/cli/commands/memory-command-shared.js +39 -0
  168. package/dist/cli/commands/memory-commands.d.ts +6 -79
  169. package/dist/cli/commands/memory-commands.js +19 -309
  170. package/dist/cli/commands/memory-ingest-command.d.ts +3 -0
  171. package/dist/cli/commands/memory-ingest-command.js +50 -0
  172. package/dist/cli/commands/memory-list-command.d.ts +16 -0
  173. package/dist/cli/commands/memory-list-command.js +129 -0
  174. package/dist/cli/commands/memory-reindex-command.d.ts +9 -0
  175. package/dist/cli/commands/memory-reindex-command.js +78 -0
  176. package/dist/cli/commands/memory-rotate-command.d.ts +3 -0
  177. package/dist/cli/commands/memory-rotate-command.js +55 -0
  178. package/dist/cli/commands/memory-search-command.d.ts +7 -0
  179. package/dist/cli/commands/memory-search-command.js +46 -0
  180. package/dist/cli/commands/openspec-archive-command.d.ts +3 -0
  181. package/dist/cli/commands/openspec-archive-command.js +55 -0
  182. package/dist/cli/commands/openspec-command-shared.d.ts +62 -0
  183. package/dist/cli/commands/openspec-command-shared.js +135 -0
  184. package/dist/cli/commands/openspec-commands.d.ts +1 -1
  185. package/dist/cli/commands/openspec-commands.js +33 -306
  186. package/dist/cli/commands/openspec-from-doctor-command.d.ts +3 -0
  187. package/dist/cli/commands/openspec-from-doctor-command.js +66 -0
  188. package/dist/cli/commands/openspec-init-command.d.ts +3 -0
  189. package/dist/cli/commands/openspec-init-command.js +49 -0
  190. package/dist/cli/commands/openspec-list-command.d.ts +3 -0
  191. package/dist/cli/commands/openspec-list-command.js +27 -0
  192. package/dist/cli/commands/openspec-render-command.d.ts +3 -0
  193. package/dist/cli/commands/openspec-render-command.js +33 -0
  194. package/dist/cli/commands/openspec-show-command.d.ts +3 -0
  195. package/dist/cli/commands/openspec-show-command.js +33 -0
  196. package/dist/cli/commands/openspec-to-rd-command.d.ts +3 -0
  197. package/dist/cli/commands/openspec-to-rd-command.js +33 -0
  198. package/dist/cli/commands/openspec-validate-command.d.ts +3 -0
  199. package/dist/cli/commands/openspec-validate-command.js +45 -0
  200. package/dist/cli/commands/playwright-browser-command.d.ts +8 -0
  201. package/dist/cli/commands/playwright-browser-command.js +61 -0
  202. package/dist/cli/commands/playwright-commands.d.ts +10 -62
  203. package/dist/cli/commands/playwright-commands.js +77 -400
  204. package/dist/cli/commands/playwright-envelope.d.ts +8 -0
  205. package/dist/cli/commands/playwright-envelope.js +29 -0
  206. package/dist/cli/commands/playwright-ls-stop-commands.d.ts +4 -0
  207. package/dist/cli/commands/playwright-ls-stop-commands.js +74 -0
  208. package/dist/cli/commands/playwright-session-store.d.ts +65 -0
  209. package/dist/cli/commands/playwright-session-store.js +189 -0
  210. package/dist/cli/commands/project-commands.d.ts +19 -0
  211. package/dist/cli/commands/project-commands.js +98 -259
  212. package/dist/cli/commands/project-context-command.d.ts +3 -0
  213. package/dist/cli/commands/project-context-command.js +44 -0
  214. package/dist/cli/commands/project-dashboard-command.d.ts +3 -0
  215. package/dist/cli/commands/project-dashboard-command.js +74 -0
  216. package/dist/cli/commands/project-knowledge-command.d.ts +3 -0
  217. package/dist/cli/commands/project-knowledge-command.js +48 -0
  218. package/dist/cli/commands/project-memories-show-command.d.ts +3 -0
  219. package/dist/cli/commands/project-memories-show-command.js +87 -0
  220. package/dist/cli/commands/project-memory-index-command.d.ts +3 -0
  221. package/dist/cli/commands/project-memory-index-command.js +31 -0
  222. package/dist/cli/commands/qa-archive-screenshots-command.d.ts +3 -0
  223. package/dist/cli/commands/qa-archive-screenshots-command.js +53 -0
  224. package/dist/cli/commands/qa-commands.d.ts +14 -87
  225. package/dist/cli/commands/qa-commands.js +17 -315
  226. package/dist/cli/commands/qa-context-prestep.d.ts +1 -0
  227. package/dist/cli/commands/qa-context-prestep.js +34 -0
  228. package/dist/cli/commands/qa-run-command.d.ts +3 -0
  229. package/dist/cli/commands/qa-run-command.js +105 -0
  230. package/dist/cli/commands/qa-run-options.d.ts +23 -0
  231. package/dist/cli/commands/qa-run-options.js +31 -0
  232. package/dist/cli/commands/qa-run-slice.d.ts +41 -0
  233. package/dist/cli/commands/qa-run-slice.js +145 -0
  234. package/dist/cli/commands/release-canary-command.d.ts +28 -0
  235. package/dist/cli/commands/release-canary-command.js +129 -0
  236. package/dist/cli/commands/release-command-shared.d.ts +13 -0
  237. package/dist/cli/commands/release-command-shared.js +18 -0
  238. package/dist/cli/commands/release-commands.d.ts +10 -18
  239. package/dist/cli/commands/release-commands.js +25 -298
  240. package/dist/cli/commands/release-done-command.d.ts +3 -0
  241. package/dist/cli/commands/release-done-command.js +64 -0
  242. package/dist/cli/commands/release-hotfix-command.d.ts +3 -0
  243. package/dist/cli/commands/release-hotfix-command.js +50 -0
  244. package/dist/cli/commands/release-plan-command.d.ts +3 -0
  245. package/dist/cli/commands/release-plan-command.js +33 -0
  246. package/dist/cli/commands/release-precheck-command.d.ts +3 -0
  247. package/dist/cli/commands/release-precheck-command.js +28 -0
  248. package/dist/cli/commands/release-promote-command.d.ts +3 -0
  249. package/dist/cli/commands/release-promote-command.js +34 -0
  250. package/dist/cli/commands/release-rollback-command.d.ts +3 -0
  251. package/dist/cli/commands/release-rollback-command.js +33 -0
  252. package/dist/cli/commands/release-watch-command.d.ts +3 -0
  253. package/dist/cli/commands/release-watch-command.js +44 -0
  254. package/dist/cli/commands/sediment-argv-flags.d.ts +54 -0
  255. package/dist/cli/commands/sediment-argv-flags.js +116 -0
  256. package/dist/cli/commands/sediment-command-shared.d.ts +15 -0
  257. package/dist/cli/commands/sediment-command-shared.js +5 -0
  258. package/dist/cli/commands/sediment-commands.d.ts +35 -59
  259. package/dist/cli/commands/sediment-commands.js +36 -590
  260. package/dist/cli/commands/sediment-pool-commands.d.ts +9 -0
  261. package/dist/cli/commands/sediment-pool-commands.js +185 -0
  262. package/dist/cli/commands/sediment-query-commands.d.ts +4 -0
  263. package/dist/cli/commands/sediment-query-commands.js +94 -0
  264. package/dist/cli/commands/sediment-release-commands.d.ts +8 -0
  265. package/dist/cli/commands/sediment-release-commands.js +232 -0
  266. package/dist/cli/commands/sop-advance-command.d.ts +3 -0
  267. package/dist/cli/commands/sop-advance-command.js +160 -0
  268. package/dist/cli/commands/sop-check-command.d.ts +3 -0
  269. package/dist/cli/commands/sop-check-command.js +44 -0
  270. package/dist/cli/commands/sop-command-shared.d.ts +23 -0
  271. package/dist/cli/commands/sop-command-shared.js +18 -0
  272. package/dist/cli/commands/sop-commands.d.ts +15 -1
  273. package/dist/cli/commands/sop-commands.js +26 -240
  274. package/dist/cli/commands/sop-init-command.d.ts +3 -0
  275. package/dist/cli/commands/sop-init-command.js +51 -0
  276. package/dist/cli/commands/sop-lint-command.d.ts +3 -0
  277. package/dist/cli/commands/sop-lint-command.js +64 -0
  278. package/dist/cli/commands/sop-register-command.d.ts +3 -0
  279. package/dist/cli/commands/sop-register-command.js +48 -0
  280. package/dist/cli/commands/sop-registry-command.d.ts +3 -0
  281. package/dist/cli/commands/sop-registry-command.js +30 -0
  282. package/dist/cli/commands/statusline-command-shared.d.ts +73 -0
  283. package/dist/cli/commands/statusline-command-shared.js +90 -0
  284. package/dist/cli/commands/statusline-commands.d.ts +1 -19
  285. package/dist/cli/commands/statusline-commands.js +48 -287
  286. package/dist/cli/commands/statusline-compact-command.d.ts +4 -0
  287. package/dist/cli/commands/statusline-compact-command.js +54 -0
  288. package/dist/cli/commands/statusline-install-command.d.ts +3 -0
  289. package/dist/cli/commands/statusline-install-command.js +48 -0
  290. package/dist/cli/commands/statusline-render-command.d.ts +9 -0
  291. package/dist/cli/commands/statusline-render-command.js +55 -0
  292. package/dist/cli/commands/statusline-status-command.d.ts +3 -0
  293. package/dist/cli/commands/statusline-status-command.js +23 -0
  294. package/dist/cli/commands/statusline-uninstall-command.d.ts +3 -0
  295. package/dist/cli/commands/statusline-uninstall-command.js +23 -0
  296. package/dist/cli/commands/test-command-run-helpers.d.ts +27 -0
  297. package/dist/cli/commands/test-command-run-helpers.js +73 -0
  298. package/dist/cli/commands/test-command-runner-resolution.d.ts +57 -0
  299. package/dist/cli/commands/test-command-runner-resolution.js +183 -0
  300. package/dist/cli/commands/test-commands.d.ts +8 -56
  301. package/dist/cli/commands/test-commands.js +26 -249
  302. package/dist/cli/commands/vm-command-shared.d.ts +23 -0
  303. package/dist/cli/commands/vm-command-shared.js +23 -0
  304. package/dist/cli/commands/vm-commands.d.ts +1 -28
  305. package/dist/cli/commands/vm-commands.js +36 -270
  306. package/dist/cli/commands/vm-hypervisor-runtime.d.ts +15 -0
  307. package/dist/cli/commands/vm-hypervisor-runtime.js +64 -0
  308. package/dist/cli/commands/vm-release-command.d.ts +5 -0
  309. package/dist/cli/commands/vm-release-command.js +101 -0
  310. package/dist/cli/commands/vm-spawn-command.d.ts +5 -0
  311. package/dist/cli/commands/vm-spawn-command.js +177 -0
  312. package/dist/cli/commands/web-command-shared.d.ts +12 -0
  313. package/dist/cli/commands/web-command-shared.js +30 -0
  314. package/dist/cli/commands/web-commands.d.ts +7 -14
  315. package/dist/cli/commands/web-commands.js +6 -314
  316. package/dist/cli/commands/web-install-command.d.ts +10 -0
  317. package/dist/cli/commands/web-install-command.js +116 -0
  318. package/dist/cli/commands/web-lifecycle-commands.d.ts +9 -30
  319. package/dist/cli/commands/web-lifecycle-commands.js +14 -322
  320. package/dist/cli/commands/web-login-command.d.ts +14 -0
  321. package/dist/cli/commands/web-login-command.js +189 -0
  322. package/dist/cli/commands/web-op-payload.d.ts +22 -0
  323. package/dist/cli/commands/web-op-payload.js +89 -0
  324. package/dist/cli/commands/web-op-refusals.d.ts +37 -0
  325. package/dist/cli/commands/web-op-refusals.js +73 -0
  326. package/dist/cli/commands/web-op-runner.d.ts +14 -0
  327. package/dist/cli/commands/web-op-runner.js +166 -0
  328. package/dist/cli/commands/web-status-command.d.ts +4 -0
  329. package/dist/cli/commands/web-status-command.js +32 -0
  330. package/dist/cli/commands/web-stop-command.d.ts +10 -0
  331. package/dist/cli/commands/web-stop-command.js +59 -0
  332. package/dist/cli/commands/web-verb-specs.d.ts +18 -0
  333. package/dist/cli/commands/web-verb-specs.js +66 -0
  334. package/dist/cli/commands/workflow-command-shared.d.ts +102 -0
  335. package/dist/cli/commands/workflow-command-shared.js +74 -0
  336. package/dist/cli/commands/workflow-graph-commands.d.ts +3 -0
  337. package/dist/cli/commands/workflow-graph-commands.js +73 -0
  338. package/dist/cli/commands/workflow-init-command.d.ts +3 -0
  339. package/dist/cli/commands/workflow-init-command.js +68 -0
  340. package/dist/cli/commands/workflow-lifecycle-commands.d.ts +9 -59
  341. package/dist/cli/commands/workflow-lifecycle-commands.js +14 -348
  342. package/dist/cli/commands/workflow-node-commands.d.ts +3 -0
  343. package/dist/cli/commands/workflow-node-commands.js +154 -0
  344. package/dist/cli/commands/workflow-terminalize-command.d.ts +3 -0
  345. package/dist/cli/commands/workflow-terminalize-command.js +56 -0
  346. package/dist/services/code/auto-compact-artifacts.d.ts +54 -0
  347. package/dist/services/code/auto-compact-artifacts.js +135 -0
  348. package/dist/services/code/auto-compact-attempt.d.ts +46 -0
  349. package/dist/services/code/auto-compact-attempt.js +88 -0
  350. package/dist/services/code/auto-compact-decision.d.ts +74 -0
  351. package/dist/services/code/auto-compact-decision.js +149 -0
  352. package/dist/services/code/auto-compact-dispatch-gate.d.ts +36 -0
  353. package/dist/services/code/auto-compact-dispatch-gate.js +86 -0
  354. package/dist/services/code/auto-compact-envelopes.d.ts +33 -0
  355. package/dist/services/code/auto-compact-envelopes.js +134 -0
  356. package/dist/services/code/auto-compact-history.d.ts +46 -0
  357. package/dist/services/code/auto-compact-history.js +17 -0
  358. package/dist/services/code/auto-compact-orchestrator.d.ts +11 -240
  359. package/dist/services/code/auto-compact-orchestrator.js +165 -686
  360. package/dist/services/code/auto-compact-run-types.d.ts +123 -0
  361. package/dist/services/code/auto-compact-run-types.js +1 -0
  362. package/dist/services/code/emit-handoff.d.ts +35 -1
  363. package/dist/services/code/emit-handoff.js +128 -7
  364. package/dist/services/code/step-08-gate.d.ts +28 -19
  365. package/dist/services/code/step-08-gate.js +92 -35
  366. package/dist/services/config/config-coercion.d.ts +7 -0
  367. package/dist/services/config/config-coercion.js +156 -0
  368. package/dist/services/config/config-file-io.d.ts +11 -0
  369. package/dist/services/config/config-file-io.js +61 -0
  370. package/dist/services/config/config-get.d.ts +2 -0
  371. package/dist/services/config/config-get.js +36 -0
  372. package/dist/services/config/config-global-loader.d.ts +15 -0
  373. package/dist/services/config/config-global-loader.js +111 -0
  374. package/dist/services/config/config-nested-path.d.ts +3 -0
  375. package/dist/services/config/config-nested-path.js +53 -0
  376. package/dist/services/config/config-primitives.d.ts +16 -0
  377. package/dist/services/config/config-primitives.js +24 -0
  378. package/dist/services/config/config-service.d.ts +9 -33
  379. package/dist/services/config/config-service.js +16 -665
  380. package/dist/services/config/config-validation.d.ts +19 -0
  381. package/dist/services/config/config-validation.js +152 -0
  382. package/dist/services/config/config-workspace.d.ts +10 -0
  383. package/dist/services/config/config-workspace.js +158 -0
  384. package/dist/services/skills/hooks-settings-deny-list.d.ts +61 -0
  385. package/dist/services/skills/hooks-settings-deny-list.js +173 -0
  386. package/dist/services/skills/hooks-settings-envelopes.d.ts +20 -0
  387. package/dist/services/skills/hooks-settings-envelopes.js +79 -0
  388. package/dist/services/skills/hooks-settings-file-shape.d.ts +43 -0
  389. package/dist/services/skills/hooks-settings-file-shape.js +207 -0
  390. package/dist/services/skills/hooks-settings-paths.d.ts +34 -0
  391. package/dist/services/skills/hooks-settings-paths.js +75 -0
  392. package/dist/services/skills/hooks-settings-read-installed.d.ts +39 -0
  393. package/dist/services/skills/hooks-settings-read-installed.js +60 -0
  394. package/dist/services/skills/hooks-settings-service.d.ts +12 -212
  395. package/dist/services/skills/hooks-settings-service.js +71 -657
  396. package/dist/services/skills/hooks-settings-types.d.ts +139 -0
  397. package/dist/services/skills/hooks-settings-types.js +1 -0
  398. package/dist/services/workspace/claude-settings-template-merge.d.ts +89 -0
  399. package/dist/services/workspace/claude-settings-template-merge.js +243 -0
  400. package/dist/services/workspace/claude-settings-template.d.ts +29 -87
  401. package/dist/services/workspace/claude-settings-template.js +81 -236
  402. package/package.json +5 -5
@@ -1,281 +1,38 @@
1
1
  /**
2
+ * The `peaks contract` / `peaks classify` entry point.
2
3
  *
3
4
  * Pre-merge originals (now deleted):
4
- * - src/cli/commands/contract-commands.ts (167 lines)
5
+ * - src/cli/commands/contract-commands.ts (167 lines)
5
6
  * - src/cli/commands/classify-classify-commands.ts (190 lines)
6
7
  *
7
- * Both exported `register*Commands` functions are preserved **verbatim**
8
- * (function name, signature, body). The merge is a structural refactor
9
- * only — no behavior change. `autoRegisterAllCommands` discovers both
10
- * exports from this single file.
8
+ * Both `register*Commands` functions are preserved **verbatim** (function name,
9
+ * signature, body). The merge was a structural refactor only — no behavior
10
+ * change — and `autoRegisterAllCommands` discovers both exports from this single
11
+ * file. This module is now the entry point and no longer holds the verbs:
11
12
  *
12
- * minimum; Family 1 is the cleanest demonstration because both inputs
13
- * sit under 200 lines and the merged file lands at ~360 lines — well
13
+ * `contract-write-command.ts` `peaks contract write`
14
+ * `classify-run-command.ts` `peaks classify run`
15
+ * `classify-downgrade-command.ts` `peaks classify downgrade` (always refused)
16
+ * `classify-signals.ts` the diff signals + the audit log
17
+ */
18
+ import { registerClassifyDowngradeCommand } from './classify-downgrade-command.js';
19
+ import { registerClassifyRunCommand } from './classify-run-command.js';
20
+ export { registerContractCommands } from './contract-write-command.js';
21
+ /**
22
+ * peaks classify CLI (Slice L1a + L1b).
23
+ *
24
+ * Subcommands:
25
+ * - peaks classify run --project <path> [--override <level> --reason "<text>"]
26
+ * Classify the current diff via the heuristic + return a JSON envelope
27
+ * with the chosen level, gate set, and audit log.
28
+ * - peaks classify downgrade --level <level> --reason "<text>" --project <path>
29
+ * Always refused (per spec §4: "peaks classify downgrade" always errors
30
+ * out). LLM may ask; the CLI never grants.
14
31
  */
15
- // ===========================================================================
16
- // Shared imports (consolidated; both originals pulled names from these
17
- // same modules — `cli-helpers.ts` re-exports `getErrorMessage` from
18
- // `peaks-loop-shared/result`, so the single canonical import is
19
- // functionally identical to either original line.)
20
- // ===========================================================================
21
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
22
- import { join } from 'node:path';
23
- import { fail, ok, getErrorMessage } from 'peaks-loop-shared/result';
24
- import { addJsonOption, printResult } from '../cli-helpers.js';
25
- import { writeContract } from '../../services/dispatch/contract-store.js';
26
- import { getCurrentSessionId } from '../../services/skills/skill-presence-service.js';
27
- import { classifyTask } from '../../services/classify/classify-service.js';
28
- import { TASK_LEVELS } from '../../services/classify/classify-types.js';
29
- import { loadPreferences } from '../../services/preferences/preferences-service.js';
30
- // ===========================================================================
31
- // Section 1: `peaks contract` CLI commands (was contract-commands.ts).
32
- // ===========================================================================
33
- const INPUT_LIMIT_BYTES = 256 * 1024;
34
- /** Split a comma-separated flag value into a trimmed string array. */
35
- function splitCsv(value) {
36
- if (value === undefined)
37
- return [];
38
- return value
39
- .split(',')
40
- .map((s) => s.trim())
41
- .filter((s) => s.length > 0);
42
- }
43
- export function registerContractCommands(program, io) {
44
- const contract = program
45
- .command('contract')
46
- .description('Slice contract store (skill-first / CLI-auxiliary). These commands ' +
47
- 'are primitives that peaks-code / peaks-rd SKILL.md compose. The LLM-side ' +
48
- 'runner (the IDE-resident sub-agent that finished a slice) calls ' +
49
- "`peaks contract write` to persist the slice's public surface; the " +
50
- 'orchestrator picks it up on the next dispatch run via listContracts() ' +
51
- 'and splices it into downstream prompts via formatContractInjection().');
52
- // ─────────────────────────────────────────────────────────────────
53
- // peaks contract write --project <root> --session-id <sid>
54
- // --slice-id <id> --exports <a,b> --types <x,y> --signatures <s1,s2>
55
- // [--broadcast-to <b1,b2>] [--completed-at <iso>]
56
- // ─────────────────────────────────────────────────────────────────
57
- addJsonOption(contract
58
- .command('write')
59
- .description("2.7.0 slice-dag-dispatcher MVP: persist a finished slice's public " +
60
- 'surface (exports / types / publicSignatures) to disk at ' +
61
- '.peaks/_runtime/<sessionId>/dispatch/contracts/<slice-id>.json. ' +
62
- 'The orchestrator picks it up on the next dispatch run. Idempotent: ' +
63
- 're-running with the same inputs overwrites in place; the SHA-256 ' +
64
- 'contractHash is content-derived so a contract write from a different ' +
65
- 'runner (re-execution) is detected as a content change.')
66
- .option('--project <path>', 'target project root (defaults to cwd)')
67
- .option('--session-id <sid>', 'session id (default: resolve from .peaks/_runtime/session.json; falls back to PEAKS_SESSION_ID env var; final fallback "unknown-sid")')
68
- .requiredOption('--slice-id <id>', 'slice id; must be non-empty; used as the contract filename basename')
69
- .option('--exports <list>', 'comma-separated public export names (e.g. "validateDag,topologicalLevels")')
70
- .option('--types <list>', 'comma-separated public type names (e.g. "SliceDag,SliceNode")')
71
- .option('--signatures <list>', 'comma-separated public function/method signatures (e.g. "validateDag(dag: SliceDag): void")')
72
- .option('--broadcast-to <list>', 'comma-separated downstream slice ids that should auto-inherit this contract (e.g. "B,C")')
73
- .option('--completed-at <iso>', 'ISO 8601 timestamp; defaults to now()')).action((options) => {
74
- const asJson = options.json === true;
75
- const projectRoot = options.project ?? process.cwd();
76
- const sid = options.sessionId ??
77
- process.env.PEAKS_SESSION_ID ??
78
- getCurrentSessionId(projectRoot) ??
79
- 'unknown-sid';
80
- const sliceId = options.sliceId;
81
- if (sliceId === undefined || sliceId.length === 0) {
82
- printResult(io, fail('contract.write', 'MISSING_SLICE_ID', '--slice-id is required', { path: null, contract: null }, [
83
- 'Re-run with --slice-id <id> (must be non-empty; used as the contract filename basename).'
84
- ]), asJson);
85
- process.exitCode = 1;
86
- return;
87
- }
88
- const exports = splitCsv(options.exports);
89
- const types = splitCsv(options.types);
90
- const signatures = splitCsv(options.signatures);
91
- const broadcastTo = splitCsv(options.broadcastTo);
92
- // Cap the combined input to protect the file IO from runaway values
93
- // (e.g. a 10MB comma-separated --signatures flag).
94
- const inputSize = sliceId.length +
95
- sid.length +
96
- exports.join(',').length +
97
- types.join(',').length +
98
- signatures.join(',').length +
99
- broadcastTo.join(',').length +
100
- (options.completedAt?.length ?? 0);
101
- if (inputSize > INPUT_LIMIT_BYTES) {
102
- printResult(io, fail('contract.write', 'INPUT_TOO_LARGE', `combined input size ${inputSize} bytes exceeds ${INPUT_LIMIT_BYTES} (likely oversized --exports/--types/--signatures lists)`, { path: null, contract: null }, ['Split the slice into smaller surfaces or omit optional fields.']), asJson);
103
- process.exitCode = 1;
104
- return;
105
- }
106
- try {
107
- const input = {
108
- sliceId,
109
- sessionId: sid,
110
- exports,
111
- types,
112
- publicSignatures: signatures,
113
- ...(broadcastTo.length > 0 ? { broadcastTo } : {}),
114
- ...(options.completedAt !== undefined ? { completedAt: options.completedAt } : {})
115
- };
116
- const result = writeContract(projectRoot, sid, input);
117
- printResult(io, ok('contract.write', {
118
- path: result.path,
119
- contractHash: result.contract.contractHash,
120
- sliceId: result.contract.sliceId,
121
- sessionId: result.contract.sessionId,
122
- completedAt: result.contract.completedAt,
123
- exportCount: result.contract.exports.length,
124
- typeCount: result.contract.types.length,
125
- signatureCount: result.contract.publicSignatures.length,
126
- broadcastTo: result.contract.broadcastTo ?? []
127
- }, [], [
128
- `Contract written; orchestrator will pick it up on the next \`peaks sub-agent dispatch --from-dag\` run.`,
129
- `Re-running with the same inputs is idempotent (overwrites in place).`
130
- ]), asJson);
131
- }
132
- catch (err) {
133
- printResult(io, fail('contract.write', 'WRITE_ERROR', getErrorMessage(err), { path: null, contract: null }, [
134
- 'See error message; check that --project is a writable directory and --slice-id is a valid filename basename (no path separators).'
135
- ]), asJson);
136
- process.exitCode = 1;
137
- }
138
- });
139
- }
140
- const CLASSIFY_AUDIT_FILE = 'classify-audit.jsonl';
141
- function getSignalsFromGitDiff(projectRoot) {
142
- // Use git diff --stat to extract file count + line count. Fall back to
143
- // zeros if git is unavailable (e.g. fresh repo with no commits).
144
- let stdout;
145
- try {
146
- const { execFileSync } = require('node:child_process');
147
- stdout = execFileSync('git', ['diff', '--shortstat', 'HEAD'], {
148
- cwd: projectRoot,
149
- stdio: ['ignore', 'pipe', 'ignore'],
150
- maxBuffer: 32 * 1024 * 1024,
151
- windowsHide: true
152
- }).toString('utf8');
153
- }
154
- catch {
155
- return {
156
- filesChanged: 0,
157
- linesChanged: 0,
158
- touchesDependencies: false,
159
- touchesMigrationScripts: false,
160
- isPureRefactor: true,
161
- keywords: []
162
- };
163
- }
164
- const lines = stdout.split('\n').filter((l) => l.trim().length > 0);
165
- const filesChanged = lines.length;
166
- let added = 0;
167
- let removed = 0;
168
- let touchesDependencies = false;
169
- let touchesMigrationScripts = false;
170
- for (const line of lines) {
171
- const match = /(\d+)\s+insertion.*?(\d+)\s+deletion/.exec(line);
172
- if (match) {
173
- added += Number(match[1]);
174
- removed += Number(match[2]);
175
- }
176
- if (/(package\.json|pnpm-lock\.yaml|yarn\.lock|requirements\.txt|go\.mod)/.test(line)) {
177
- touchesDependencies = true;
178
- }
179
- if (/(migrate|codemod|backfill|schema)/.test(line)) {
180
- touchesMigrationScripts = true;
181
- }
182
- }
183
- // isPureRefactor: heuristic — if added lines / removed lines < 0.1 OR
184
- // no new exports were added, treat as refactor. For L2.2 the signal is
185
- // binary (true/false). Default: true (no behavior change is the safe
186
- // assumption; flip to false when keyword 'add' / 'new' / 'feature' present).
187
- const isPureRefactor = true;
188
- return {
189
- filesChanged,
190
- linesChanged: added + removed,
191
- touchesDependencies,
192
- touchesMigrationScripts,
193
- isPureRefactor,
194
- keywords: []
195
- };
196
- }
197
- function appendAuditEntry(projectRoot, entry) {
198
- const auditDir = join(projectRoot, '.peaks/_runtime');
199
- if (!existsSync(auditDir)) {
200
- try {
201
- mkdirSync(auditDir, { recursive: true });
202
- }
203
- catch {
204
- /* ignore */
205
- } // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
206
- }
207
- const auditPath = join(auditDir, CLASSIFY_AUDIT_FILE);
208
- let body = '';
209
- try {
210
- if (existsSync(auditPath)) {
211
- body = readFileSync(auditPath, 'utf8');
212
- }
213
- }
214
- catch {
215
- /* ignore */
216
- } // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
217
- body += JSON.stringify(entry) + '\n';
218
- try {
219
- writeFileSync(auditPath, body);
220
- }
221
- catch {
222
- /* best-effort */
223
- } // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
224
- }
225
- function isTaskLevel(value) {
226
- return TASK_LEVELS.includes(value);
227
- }
228
32
  export function registerClassifyCommands(program, io) {
229
33
  const classify = program
230
34
  .command('classify')
231
35
  .description('L1a task classification: 5-level heuristic (typo/bug/feature/refactor/migration) + override/upgrade + audit log');
232
- addJsonOption(classify
233
- .command('run')
234
- .description('Classify the current diff (git diff HEAD) into one of 5 task levels')
235
- .requiredOption('--project <path>', 'target project root')
236
- .option('--override <level>', 'force a level (one of typo|bug|feature|refactor|migration); requires --reason')
237
- .option('--reason <text>', 'reason for the override (mandatory when --override is set)')).action(async (options) => {
238
- try {
239
- const prefs = await loadPreferences(options.project);
240
- const signals = getSignalsFromGitDiff(options.project);
241
- let override;
242
- if (options.override !== undefined) {
243
- if (!isTaskLevel(options.override)) {
244
- printResult(io, fail('classify.run', 'INVALID_LEVEL', `level must be one of: ${TASK_LEVELS.join(', ')}`, { provided: options.override }, ['Pass one of typo, bug, feature, refactor, migration']), options.json);
245
- process.exitCode = 1;
246
- return;
247
- }
248
- if (options.reason === undefined || options.reason.length === 0) {
249
- printResult(io, fail('classify.run', 'REASON_REQUIRED', '--reason is required when --override is set', {}, ['Provide a non-empty reason for the override']), options.json);
250
- process.exitCode = 1;
251
- return;
252
- }
253
- override = { level: options.override, reason: options.reason };
254
- }
255
- const result = classifyTask(override !== undefined
256
- ? { signals, conservatism: prefs.classifyConservatism, override }
257
- : { signals, conservatism: prefs.classifyConservatism }, prefs.classifyRules.feature_threshold_files, prefs.classifyRules.feature_threshold_lines);
258
- appendAuditEntry(options.project, result.audit);
259
- printResult(io, ok('classify.run', result, [], [
260
- `gate set for level "${result.level}": ${result.gateSet.stages.join(', ')}`,
261
- `audit log: .peaks/_runtime/${CLASSIFY_AUDIT_FILE}`
262
- ]), options.json);
263
- }
264
- catch (error) {
265
- printResult(io, fail('classify.run', 'CLASSIFY_RUN_FAILED', getErrorMessage(error), { projectRoot: options.project }, ['Run peaks classify --help for usage']), options.json);
266
- process.exitCode = 1;
267
- }
268
- });
269
- // Downgrade is REFUSED per spec §4. Surface this as a hard fail.
270
- classify
271
- .command('downgrade')
272
- .description('REFUSED per spec §4 — peaks-loop never downgrades a classification; ask the user to override explicitly')
273
- .requiredOption('--level <level>', 'attempted level')
274
- .requiredOption('--reason <text>', 'reason for the attempt (always rejected)')
275
- .requiredOption('--project <path>', 'target project root')
276
- .option('--json', 'print machine-readable JSON envelope')
277
- .action((options) => {
278
- printResult(io, fail('classify.downgrade', 'DOWNGRADE_REFUSED', 'peaks classify downgrade is refused per spec §4. Use --override (with reason) on `classify run` to force a level; the CLI never downgrades a classification unilaterally.', { attemptedLevel: options.level, reason: options.reason }, ['Use `peaks classify run --override <level> --reason "<text>"` instead']), options.json);
279
- process.exitCode = 2;
280
- });
36
+ registerClassifyRunCommand(classify, io);
37
+ registerClassifyDowngradeCommand(classify, io);
281
38
  }
@@ -0,0 +1,42 @@
1
+ import type { IdeId } from '../../services/ide/ide-types.js';
2
+ import type { HookScope } from '../../services/skills/hooks-settings-service.js';
3
+ export type HookCliOptions = {
4
+ global?: boolean;
5
+ project?: string;
6
+ dryRun?: boolean;
7
+ json?: boolean;
8
+ ide?: string;
9
+ progress?: boolean;
10
+ };
11
+ /** What a hook-script copy reported back: whether it landed, and where from / to. */
12
+ export type HookScriptCopy = {
13
+ copied: boolean;
14
+ source: string;
15
+ target: string;
16
+ };
17
+ /** Both copies one install makes, for whichever scope it was asked about. */
18
+ export type HookScriptCopies = {
19
+ bridgeCopy: HookScriptCopy;
20
+ codeGateCopy: HookScriptCopy;
21
+ };
22
+ /** Everything the install verb derived once and hands to both of its envelopes. */
23
+ export type InstallContext = {
24
+ scope: HookScope;
25
+ projectRoot: string | undefined;
26
+ ide: IdeId;
27
+ skipProgress: boolean;
28
+ };
29
+ export declare function resolveScope(options: {
30
+ global?: boolean;
31
+ }): HookScope;
32
+ export declare function resolveProjectRoot(scope: HookScope, project: string | undefined): string | undefined;
33
+ /**
34
+ * Resolve the IDE the install should target. The CLI user can override with
35
+ * `--ide <id>`. Otherwise we delegate to `detectIdeFromContext` which checks
36
+ * `process.env[adapter.envVar]` → stdin shape → cwd `.trae`/`.claude` →
37
+ * fallback `'claude-code'`. Pass `parsedStdin: null` since `peaks hooks
38
+ * install` is not invoked from inside an IDE hook — there's no stdin payload.
39
+ */
40
+ export declare function resolveIdeForCommand(options: {
41
+ ide?: string;
42
+ }, projectRoot: string | undefined): IdeId;
@@ -0,0 +1,32 @@
1
+ // src/cli/commands/hooks-command-shared.ts
2
+ //
3
+ // What every `peaks hooks *` verb shares: the option bag, the scope switch and
4
+ // the project-root / IDE resolution. Split out of `hooks-commands.ts`; the
5
+ // defaults and the detection order are unchanged.
6
+ import { findProjectRoot } from '../../services/config/config-safety.js';
7
+ import { detectIdeFromContext } from '../../services/ide/hook-translator.js';
8
+ export function resolveScope(options) {
9
+ return options.global ? 'global' : 'project';
10
+ }
11
+ export function resolveProjectRoot(scope, project) {
12
+ return scope === 'project'
13
+ ? (project ?? findProjectRoot(process.cwd()) ?? process.cwd())
14
+ : undefined;
15
+ }
16
+ /**
17
+ * Resolve the IDE the install should target. The CLI user can override with
18
+ * `--ide <id>`. Otherwise we delegate to `detectIdeFromContext` which checks
19
+ * `process.env[adapter.envVar]` → stdin shape → cwd `.trae`/`.claude` →
20
+ * fallback `'claude-code'`. Pass `parsedStdin: null` since `peaks hooks
21
+ * install` is not invoked from inside an IDE hook — there's no stdin payload.
22
+ */
23
+ export function resolveIdeForCommand(options, projectRoot) {
24
+ if (options.ide !== undefined && options.ide.length > 0) {
25
+ return options.ide;
26
+ }
27
+ return detectIdeFromContext({
28
+ env: process.env,
29
+ cwd: projectRoot ?? process.cwd(),
30
+ parsedStdin: null
31
+ });
32
+ }
@@ -1,3 +1,23 @@
1
+ /**
2
+ * `peaks hooks *` — the Peaks-managed hook entry in the adapter's settings.json.
3
+ *
4
+ * The `install` verb and the hook-script distribution stay in this file because
5
+ * three source-scanning guards pin file-level facts to this exact path:
6
+ *
7
+ * - `tests/unit/cli/ide-option-help-lists-the-registry.test.ts` needs an
8
+ * `--ide` option declaration here whose help is derived from the registry;
9
+ * - `tests/unit/runtime/vendor-neutral-identity-guard.test.ts` pins the two
10
+ * user-global Claude Code skill-bridge copy targets to this file
11
+ * (`settingsPaths: 2` in its `KNOWN_DEBT` census);
12
+ * - `tests/unit/hooks/gate-enforce-machine-local-shell.test.ts` scans this
13
+ * file for the CJS module-directory global, because this is where the hook
14
+ * script sources are resolved.
15
+ *
16
+ * The other verbs live beside it: `hooks-uninstall-command.ts`,
17
+ * `hooks-status-command.ts`, the two install envelopes in
18
+ * `hooks-install-envelopes.ts`, and the scope / IDE resolution in
19
+ * `hooks-command-shared.ts`.
20
+ */
1
21
  import type { Command } from 'commander';
2
22
  import { type ProgramIO } from '../cli-helpers.js';
3
23
  export declare function registerHooksCommands(program: Command, io: ProgramIO): void;