peaks-loop 4.0.0-beta.9 → 4.0.1

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 (552) hide show
  1. package/CHANGELOG.md +910 -141
  2. package/README-en.md +26 -7
  3. package/README.md +75 -6
  4. package/agents/karpathy-reviewer.md +33 -0
  5. package/bin/peaks.js +0 -0
  6. package/dist/cli/cli-helpers.d.ts +31 -6
  7. package/dist/cli/cli-helpers.js +48 -25
  8. package/dist/cli/commands/_register.d.ts +3 -0
  9. package/dist/cli/commands/_register.js +139 -0
  10. package/dist/cli/commands/_super.d.ts +10 -0
  11. package/dist/cli/commands/_super.js +97 -0
  12. package/dist/cli/commands/adapter-commands-s2a.js +1 -1
  13. package/dist/cli/commands/asset-commands.js +33 -16
  14. package/dist/cli/commands/audit-commands.js +2 -2
  15. package/dist/cli/commands/autonomous-swarm-commands.d.ts +12 -0
  16. package/dist/cli/commands/autonomous-swarm-commands.js +120 -0
  17. package/dist/cli/commands/bee-commands.js +1 -1
  18. package/dist/cli/commands/capability-commands.js +1 -1
  19. package/dist/cli/commands/capability-worker-config-sc-commands.js +0 -2
  20. package/dist/cli/commands/changeset-commands.d.ts +13 -0
  21. package/dist/cli/commands/changeset-commands.js +46 -0
  22. package/dist/cli/commands/code-commands.d.ts +11 -1
  23. package/dist/cli/commands/code-commands.js +19 -699
  24. package/dist/cli/commands/code-job-shape-commands.d.ts +9 -0
  25. package/dist/cli/commands/code-job-shape-commands.js +164 -0
  26. package/dist/cli/commands/code-mode-gate-commands.d.ts +9 -0
  27. package/dist/cli/commands/code-mode-gate-commands.js +223 -0
  28. package/dist/cli/commands/code-review-commands.js +2 -2
  29. package/dist/cli/commands/code-run-command.d.ts +12 -0
  30. package/dist/cli/commands/code-run-command.js +68 -0
  31. package/dist/cli/commands/code-runtime-commands.d.ts +11 -0
  32. package/dist/cli/commands/code-runtime-commands.js +391 -0
  33. package/dist/cli/commands/codegraph-commands.js +1 -1
  34. package/dist/cli/commands/compact-command.js +53 -1
  35. package/dist/cli/commands/complexity-commands.js +1 -1
  36. package/dist/cli/commands/config-commands.js +4 -75
  37. package/dist/cli/commands/container-commands.d.ts +28 -0
  38. package/dist/cli/commands/container-commands.js +221 -0
  39. package/dist/cli/commands/context-commands.js +3 -2
  40. package/dist/cli/commands/core/artifacts-command.js +1 -1
  41. package/dist/cli/commands/core/binding-commands.js +1 -1
  42. package/dist/cli/commands/core/doctor-command.js +63 -3
  43. package/dist/cli/commands/core/memory-command.js +1 -1
  44. package/dist/cli/commands/core/profile-command.js +1 -1
  45. package/dist/cli/commands/core/proxy-command.js +1 -1
  46. package/dist/cli/commands/core/session-command.js +9 -7
  47. package/dist/cli/commands/core/skill-command.js +7 -4
  48. package/dist/cli/commands/core/standards-command.js +1 -1
  49. package/dist/cli/commands/cron-commands.d.ts +57 -0
  50. package/dist/cli/commands/cron-commands.js +257 -0
  51. package/dist/cli/commands/cron-scheduler-commands.d.ts +47 -0
  52. package/dist/cli/commands/cron-scheduler-commands.js +284 -0
  53. package/dist/cli/commands/dashboard-commands.d.ts +4 -0
  54. package/dist/cli/commands/dashboard-commands.js +10 -0
  55. package/dist/cli/commands/dashboard-long-run.d.ts +25 -0
  56. package/dist/cli/commands/dashboard-long-run.js +122 -0
  57. package/dist/cli/commands/dashboard-summary.d.ts +12 -0
  58. package/dist/cli/commands/dashboard-summary.js +58 -0
  59. package/dist/cli/commands/dispatch-commands.d.ts +0 -7
  60. package/dist/cli/commands/dispatch-commands.js +372 -8
  61. package/dist/cli/commands/dispatch-from-dag.js +4 -1
  62. package/dist/cli/commands/doc-commands.js +1 -1
  63. package/dist/cli/commands/ecc-commands.d.ts +30 -0
  64. package/dist/cli/commands/ecc-commands.js +119 -0
  65. package/dist/cli/commands/evolution-commands.js +1 -1
  66. package/dist/cli/commands/feedback-commands.js +1 -1
  67. package/dist/cli/commands/final-review-commands.js +1 -1
  68. package/dist/cli/commands/fixture-commands.js +1 -1
  69. package/dist/cli/commands/fork-commands.js +1 -1
  70. package/dist/cli/commands/gate-commands.js +128 -6
  71. package/dist/cli/commands/governance-classify-contract-commands.d.ts +21 -0
  72. package/dist/cli/commands/governance-classify-contract-commands.js +273 -0
  73. package/dist/cli/commands/heartbeat-commands.js +76 -5
  74. package/dist/cli/commands/heartbeat-watch-command.d.ts +31 -0
  75. package/dist/cli/commands/heartbeat-watch-command.js +146 -0
  76. package/dist/cli/commands/hook-handle.js +1 -1
  77. package/dist/cli/commands/hooks-commands.js +126 -10
  78. package/dist/cli/commands/ide-commands.js +1 -1
  79. package/dist/cli/commands/impact-commands.js +1 -1
  80. package/dist/cli/commands/job-commands.js +34 -1
  81. package/dist/cli/commands/lease-metrics-commands.d.ts +67 -0
  82. package/dist/cli/commands/lease-metrics-commands.js +231 -0
  83. package/dist/cli/commands/lease-stats-commands.d.ts +65 -0
  84. package/dist/cli/commands/lease-stats-commands.js +107 -0
  85. package/dist/cli/commands/legacy-commands.js +1 -1
  86. package/dist/cli/commands/log-commands.js +1 -1
  87. package/dist/cli/commands/loop-commands.js +1 -1
  88. package/dist/cli/commands/loop-eval-commands.js +1 -1
  89. package/dist/cli/commands/memory-commands.js +1 -1
  90. package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
  91. package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +1 -1
  92. package/dist/cli/commands/mut-commands.d.ts +1 -1
  93. package/dist/cli/commands/mut-commands.js +1 -5
  94. package/dist/cli/commands/observability-commands.js +1 -1
  95. package/dist/cli/commands/openspec-commands.js +65 -4
  96. package/dist/cli/commands/perf-audit-commands.js +3 -3
  97. package/dist/cli/commands/perf-commands.js +1 -1
  98. package/dist/cli/commands/polyrepo-commands.js +1 -1
  99. package/dist/cli/commands/prd-blocks-commands.js +1 -1
  100. package/dist/cli/commands/prd-commands.js +4 -2
  101. package/dist/cli/commands/preferences-commands.js +23 -3
  102. package/dist/cli/commands/project-commands.js +1 -1
  103. package/dist/cli/commands/qa-business-review-commands.js +1 -1
  104. package/dist/cli/commands/qa-commands.d.ts +1 -1
  105. package/dist/cli/commands/qa-commands.js +39 -3
  106. package/dist/cli/commands/release-commands.d.ts +15 -0
  107. package/dist/cli/commands/release-commands.js +113 -21
  108. package/dist/cli/commands/request-commands.js +1 -1
  109. package/dist/cli/commands/retrospective-commands.js +1 -1
  110. package/dist/cli/commands/reviewer-commands.js +1 -1
  111. package/dist/cli/commands/role-commands.js +1 -1
  112. package/dist/cli/commands/runtime-commands-helpers.d.ts +7 -0
  113. package/dist/cli/commands/runtime-commands-helpers.js +24 -0
  114. package/dist/cli/commands/runtime-commands.js +1 -2
  115. package/dist/cli/commands/sc-commands.js +4 -2
  116. package/dist/cli/commands/scan-commands.js +1 -1
  117. package/dist/cli/commands/security-audit-commands.js +3 -3
  118. package/dist/cli/commands/sediment-commands.js +10 -1
  119. package/dist/cli/commands/session-24h-mode.d.ts +26 -0
  120. package/dist/cli/commands/session-24h-mode.js +196 -0
  121. package/dist/cli/commands/share-commands.d.ts +19 -0
  122. package/dist/cli/commands/share-commands.js +121 -2
  123. package/dist/cli/commands/skill-conformance-commands.js +1 -1
  124. package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +1 -1
  125. package/dist/cli/commands/skill-search-commands.js +4 -1
  126. package/dist/cli/commands/slice-commands.js +1 -1
  127. package/dist/cli/commands/slice-integrate-commands.js +1 -1
  128. package/dist/cli/commands/slice-review-commands.js +1 -1
  129. package/dist/cli/commands/smoke-commands.js +1 -1
  130. package/dist/cli/commands/sop-commands.js +1 -1
  131. package/dist/cli/commands/spill-demo-command.d.ts +7 -0
  132. package/dist/cli/commands/spill-demo-command.js +29 -0
  133. package/dist/cli/commands/statusline-commands.d.ts +12 -0
  134. package/dist/cli/commands/statusline-commands.js +79 -17
  135. package/dist/cli/commands/sub-agent-commands.js +2 -1
  136. package/dist/cli/commands/sub-agent-shared.d.ts +10 -0
  137. package/dist/cli/commands/sub-agent-shared.js +24 -1
  138. package/dist/cli/commands/swarm-commands.d.ts +13 -0
  139. package/dist/cli/commands/swarm-commands.js +77 -0
  140. package/dist/cli/commands/tech-commands.d.ts +64 -0
  141. package/dist/cli/commands/tech-commands.js +195 -0
  142. package/dist/cli/commands/understand-commands.js +1 -1
  143. package/dist/cli/commands/upgrade-commands.d.ts +2 -0
  144. package/dist/cli/commands/upgrade-commands.js +40 -5
  145. package/dist/cli/commands/user-touchpoint-commands.js +1 -1
  146. package/dist/cli/commands/verdict-aggregate-command.js +1 -1
  147. package/dist/cli/commands/vm-commands.d.ts +31 -0
  148. package/dist/cli/commands/vm-commands.js +274 -0
  149. package/dist/cli/commands/workflow-commands.js +24 -1
  150. package/dist/cli/commands/workflow-plan-commands.js +1 -1
  151. package/dist/cli/commands/workspace/init-command.js +1 -1
  152. package/dist/cli/commands/workspace/migrate-command.js +1 -1
  153. package/dist/cli/commands/workspace/reconcile-command.js +1 -1
  154. package/dist/cli/commands/worktree-auth-commands.d.ts +29 -0
  155. package/dist/cli/commands/worktree-auth-commands.js +652 -0
  156. package/dist/cli/index.js +58 -13
  157. package/dist/cli/program.d.ts +2 -2
  158. package/dist/cli/program.js +86 -281
  159. package/dist/services/24h-mode/decider.d.ts +103 -0
  160. package/dist/services/24h-mode/decider.js +144 -0
  161. package/dist/services/24h-mode/index.d.ts +12 -0
  162. package/dist/services/24h-mode/index.js +12 -0
  163. package/dist/services/24h-mode/state.d.ts +48 -0
  164. package/dist/services/24h-mode/state.js +51 -0
  165. package/dist/services/24h-mode/store.d.ts +27 -0
  166. package/dist/services/24h-mode/store.js +119 -0
  167. package/dist/services/artifacts/artifact-prerequisites.js +1 -1
  168. package/dist/services/artifacts/request-artifact-service.js +1 -1
  169. package/dist/services/artifacts/workspace-service.js +1 -1
  170. package/dist/services/audit/enforcers/lint-bee-runtime-contract.d.ts +25 -0
  171. package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +91 -0
  172. package/dist/services/audit/enforcers/lint-peaks-code-runtime.d.ts +16 -0
  173. package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +31 -0
  174. package/dist/services/audit/enforcers/lint-peaks-skill-runtime.d.ts +23 -0
  175. package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +59 -0
  176. package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.d.ts +28 -0
  177. package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +86 -0
  178. package/dist/services/audit/enforcers/lint-prd-artifact-handoff.d.ts +16 -0
  179. package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +41 -0
  180. package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +27 -0
  181. package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +47 -0
  182. package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.d.ts +19 -0
  183. package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +47 -0
  184. package/dist/services/audit/enforcers/lint-rd-handoff-coverage.d.ts +18 -0
  185. package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +70 -0
  186. package/dist/services/audit/enforcers/lint-skill-presence-mandatory.d.ts +25 -0
  187. package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +53 -0
  188. package/dist/services/audit/red-line-catalog-p2-a.d.ts +0 -6
  189. package/dist/services/audit/red-line-catalog-p2-a.js +230 -1
  190. package/dist/services/audit/static-service.d.ts +32 -25
  191. package/dist/services/audit/static-service.js +30 -109
  192. package/dist/services/audit-independent/index.d.ts +2 -0
  193. package/dist/services/audit-independent/index.js +2 -0
  194. package/dist/services/autonomous-swarm/autonomous-swarm-service.d.ts +127 -0
  195. package/dist/services/autonomous-swarm/autonomous-swarm-service.js +446 -0
  196. package/dist/services/changeset/changeset-check-service.d.ts +22 -0
  197. package/dist/services/changeset/changeset-check-service.js +47 -0
  198. package/dist/services/code/auto-compact-modes.d.ts +30 -0
  199. package/dist/services/code/auto-compact-modes.js +38 -0
  200. package/dist/services/code/auto-compact-orchestrator.d.ts +43 -5
  201. package/dist/services/code/auto-compact-orchestrator.js +101 -21
  202. package/dist/services/code/dag-orchestrator.d.ts +30 -1
  203. package/dist/services/code/dag-orchestrator.js +106 -1
  204. package/dist/services/code/status-line-renderer.d.ts +2 -0
  205. package/dist/services/code/status-line-renderer.js +21 -3
  206. package/dist/services/code-review/ocr-service.d.ts +1 -1
  207. package/dist/services/code-review/ocr-service.js +6 -3
  208. package/dist/services/compact-history/compact-history-service.d.ts +41 -0
  209. package/dist/services/compact-history/compact-history-service.js +62 -0
  210. package/dist/services/compact-statusline/compact-statusline-service.d.ts +16 -0
  211. package/dist/services/compact-statusline/compact-statusline-service.js +83 -0
  212. package/dist/services/config/config-service.d.ts +1 -12
  213. package/dist/services/config/config-service.js +3 -72
  214. package/dist/services/config/config-types.d.ts +2 -4
  215. package/dist/services/config/config-types.js +1 -1
  216. package/dist/services/container/container-lease.d.ts +67 -0
  217. package/dist/services/container/container-lease.js +135 -0
  218. package/dist/services/context/auto-compact-dispatcher.d.ts +40 -5
  219. package/dist/services/context/auto-compact-dispatcher.js +32 -102
  220. package/dist/services/context/auto-compact-reader.js +1 -1
  221. package/dist/services/context/auto-compact-types.d.ts +27 -2
  222. package/dist/services/context/auto-compact-types.js +8 -1
  223. package/dist/services/context/build-dispatch-system-prompt.d.ts +75 -0
  224. package/dist/services/context/build-dispatch-system-prompt.js +117 -0
  225. package/dist/services/context/collector.d.ts +2 -2
  226. package/dist/services/context/context-builder.d.ts +4 -4
  227. package/dist/services/context/context-schema.d.ts +48 -48
  228. package/dist/services/context/ide-detect.d.ts +4 -0
  229. package/dist/services/context/ide-detect.js +24 -0
  230. package/dist/services/context/main-session-monitor.d.ts +1 -4
  231. package/dist/services/context/main-session-monitor.js +1 -24
  232. package/dist/services/context/memory-index-reader.d.ts +8 -0
  233. package/dist/services/context/memory-index-reader.js +57 -0
  234. package/dist/services/context/memory-lru-cache.d.ts +12 -0
  235. package/dist/services/context/memory-lru-cache.js +60 -0
  236. package/dist/services/context/memory-preflight-config.d.ts +19 -0
  237. package/dist/services/context/memory-preflight-config.js +25 -0
  238. package/dist/services/context/memory-preflight-service.d.ts +19 -0
  239. package/dist/services/context/memory-preflight-service.js +120 -0
  240. package/dist/services/context/spillover-store.d.ts +23 -0
  241. package/dist/services/context/spillover-store.js +155 -0
  242. package/dist/services/context/spillover-types.d.ts +18 -0
  243. package/dist/services/context/spillover-types.js +1 -0
  244. package/dist/services/crystallization/crystallization-service.d.ts +22 -5
  245. package/dist/services/crystallization/crystallization-service.js +8 -14
  246. package/dist/services/crystallization/crystallization-types.d.ts +6 -6
  247. package/dist/services/crystallization/evidence-brief-builder.d.ts +1 -1
  248. package/dist/services/crystallization/index.d.ts +13 -0
  249. package/dist/services/crystallization/index.js +13 -0
  250. package/dist/services/dashboard/project-dashboard-service.js +2 -2
  251. package/dist/services/dispatch/await-batch.d.ts +70 -0
  252. package/dist/services/dispatch/await-batch.js +272 -0
  253. package/dist/services/dispatch/batch-counter.js +1 -1
  254. package/dist/services/dispatch/dispatch-record-writer.d.ts +126 -4
  255. package/dist/services/dispatch/dispatch-record-writer.js +239 -9
  256. package/dist/services/dispatch/slice-dag.d.ts +46 -0
  257. package/dist/services/dispatch/slice-dag.js +6 -0
  258. package/dist/services/dispatch/stage-enum.d.ts +27 -0
  259. package/dist/services/dispatch/stage-enum.js +48 -0
  260. package/dist/services/dispatch/startup-timeout.d.ts +86 -0
  261. package/dist/services/dispatch/startup-timeout.js +97 -0
  262. package/dist/services/dispatch/sub-agent-dispatcher.js +40 -89
  263. package/dist/services/dispatch/test-tool-detection.d.ts +25 -1
  264. package/dist/services/dispatch/test-tool-detection.js +80 -0
  265. package/dist/services/doctor/doctor-service/checks/check-id-schema.d.ts +18 -0
  266. package/dist/services/doctor/doctor-service/checks/check-id-schema.js +64 -0
  267. package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +14 -0
  268. package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +69 -0
  269. package/dist/services/doctor/doctor-service/checks/dist-source-version.d.ts +32 -0
  270. package/dist/services/doctor/doctor-service/checks/dist-source-version.js +110 -0
  271. package/dist/services/doctor/doctor-service/checks/gateguard-conflict.d.ts +24 -0
  272. package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +164 -0
  273. package/dist/services/doctor/doctor-service/checks/l3-memory-health.d.ts +16 -0
  274. package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +57 -0
  275. package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.d.ts +19 -0
  276. package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +66 -0
  277. package/dist/services/doctor/doctor-service/checks/schema-validity.d.ts +10 -0
  278. package/dist/services/doctor/doctor-service/checks/schema-validity.js +33 -0
  279. package/dist/services/doctor/doctor-service/checks/skill-apply-note.d.ts +20 -0
  280. package/dist/services/doctor/doctor-service/checks/skill-apply-note.js +85 -0
  281. package/dist/services/doctor/doctor-service/checks/skill-existence.d.ts +13 -0
  282. package/dist/services/doctor/doctor-service/checks/skill-existence.js +30 -0
  283. package/dist/services/doctor/doctor-service/checks/skill-name-match.d.ts +10 -0
  284. package/dist/services/doctor/doctor-service/checks/skill-name-match.js +25 -0
  285. package/dist/services/doctor/doctor-service/checks/skill-parse.d.ts +10 -0
  286. package/dist/services/doctor/doctor-service/checks/skill-parse.js +19 -0
  287. package/dist/services/doctor/doctor-service/checks/skill-presence.d.ts +21 -0
  288. package/dist/services/doctor/doctor-service/checks/skill-presence.js +75 -0
  289. package/dist/services/doctor/doctor-service/checks/skill-runbook.d.ts +14 -0
  290. package/dist/services/doctor/doctor-service/checks/skill-runbook.js +47 -0
  291. package/dist/services/doctor/doctor-service/checks/statusline-install.d.ts +14 -0
  292. package/dist/services/doctor/doctor-service/checks/statusline-install.js +32 -0
  293. package/dist/services/doctor/doctor-service/checks/statusline-runtime.d.ts +13 -0
  294. package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +30 -0
  295. package/dist/services/doctor/doctor-service/checks/user-config.d.ts +11 -0
  296. package/dist/services/doctor/doctor-service/checks/user-config.js +27 -0
  297. package/dist/services/doctor/doctor-service/checks/workspace-init.d.ts +16 -0
  298. package/dist/services/doctor/doctor-service/checks/workspace-init.js +34 -0
  299. package/dist/services/doctor/doctor-service/checks/workspace-layout.d.ts +33 -0
  300. package/dist/services/doctor/doctor-service/checks/workspace-layout.js +180 -0
  301. package/dist/services/doctor/doctor-service/index.d.ts +48 -0
  302. package/dist/services/doctor/doctor-service/index.js +254 -0
  303. package/dist/services/doctor/doctor-service/plugin-registry.d.ts +41 -0
  304. package/dist/services/doctor/doctor-service/plugin-registry.js +77 -0
  305. package/dist/services/doctor/doctor-service/report/final-summary.d.ts +20 -0
  306. package/dist/services/doctor/doctor-service/report/final-summary.js +29 -0
  307. package/dist/services/doctor/doctor-service/types.d.ts +245 -0
  308. package/dist/services/doctor/doctor-service/types.js +15 -0
  309. package/dist/services/doctor/doctor-service.d.ts +15 -146
  310. package/dist/services/doctor/doctor-service.js +22 -926
  311. package/dist/services/doctor/index.d.ts +22 -0
  312. package/dist/services/doctor/index.js +22 -0
  313. package/dist/services/env/shell-probe.d.ts +71 -0
  314. package/dist/services/env/shell-probe.js +161 -0
  315. package/dist/services/evolution/evolution-types.d.ts +39 -39
  316. package/dist/services/final-review/final-review-service.d.ts +11 -1
  317. package/dist/services/final-review/index.d.ts +2 -0
  318. package/dist/services/final-review/index.js +1 -0
  319. package/dist/services/hooks/auto-compact-hook-install.d.ts +4 -5
  320. package/dist/services/hooks/auto-compact-hook-install.js +4 -5
  321. package/dist/services/hooks/worktree-authorization-gate.d.ts +205 -0
  322. package/dist/services/hooks/worktree-authorization-gate.js +492 -0
  323. package/dist/services/ide/adapters/claude-code-adapter.js +2 -2
  324. package/dist/services/ide/adapters/qoder-adapter.d.ts +25 -0
  325. package/dist/services/ide/adapters/qoder-adapter.js +57 -0
  326. package/dist/services/ide/adapters/tongyi-lingma-adapter.d.ts +16 -0
  327. package/dist/services/ide/adapters/tongyi-lingma-adapter.js +45 -0
  328. package/dist/services/ide/ide-registry.js +6 -0
  329. package/dist/services/ide/ide-types.d.ts +1 -1
  330. package/dist/services/job/job-types.d.ts +56 -56
  331. package/dist/services/job-snapshot/index.d.ts +8 -0
  332. package/dist/services/job-snapshot/index.js +7 -0
  333. package/dist/services/{job/job-resource-snapshot.d.ts → job-snapshot/snapshot.d.ts} +1 -1
  334. package/dist/services/job-snapshot/types.d.ts +7 -0
  335. package/dist/services/job-snapshot/types.js +1 -0
  336. package/dist/services/karpathy-cost/karpathy-cost-check-service.d.ts +67 -0
  337. package/dist/services/karpathy-cost/karpathy-cost-check-service.js +108 -0
  338. package/dist/services/log/retention.d.ts +16 -0
  339. package/dist/services/log/retention.js +17 -0
  340. package/dist/services/loop/loop-bee-relation-types.d.ts +6 -6
  341. package/dist/services/loop/loop-release-types.d.ts +24 -24
  342. package/dist/services/loop/monotonic-runner.d.ts +17 -11
  343. package/dist/services/loop/monotonic-runner.js +118 -79
  344. package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +8 -0
  345. package/dist/services/memory/project-memory-service/index/kind-dispatch.js +253 -0
  346. package/dist/services/memory/project-memory-service/index/ranking.d.ts +6 -0
  347. package/dist/services/memory/project-memory-service/index/ranking.js +171 -0
  348. package/dist/services/memory/project-memory-service/index/search.d.ts +34 -0
  349. package/dist/services/memory/project-memory-service/index/search.js +194 -0
  350. package/dist/services/memory/project-memory-service/index.d.ts +9 -0
  351. package/dist/services/memory/project-memory-service/index.js +24 -0
  352. package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +9 -0
  353. package/dist/services/memory/project-memory-service/parsers/frontmatter.js +106 -0
  354. package/dist/services/memory/project-memory-service/parsers/markdown-pure.d.ts +7 -0
  355. package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +96 -0
  356. package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +5 -0
  357. package/dist/services/memory/project-memory-service/store/atomic-write.js +56 -0
  358. package/dist/services/memory/project-memory-service/store/paths.d.ts +8 -0
  359. package/dist/services/memory/project-memory-service/store/paths.js +116 -0
  360. package/dist/services/memory/project-memory-service/types.d.ts +128 -0
  361. package/dist/services/memory/project-memory-service/types.js +9 -0
  362. package/dist/services/memory/project-memory-service.d.ts +1 -167
  363. package/dist/services/memory/project-memory-service.js +19 -816
  364. package/dist/services/migrate-skill-name/schema.d.ts +2 -2
  365. package/dist/services/observability/aggregation.d.ts +27 -0
  366. package/dist/services/observability/aggregation.js +72 -0
  367. package/dist/services/observability/observability-service.d.ts +73 -7
  368. package/dist/services/observability/observability-service.js +87 -1
  369. package/dist/services/openspec/artifact-boundary.d.ts +138 -0
  370. package/dist/services/openspec/artifact-boundary.js +150 -0
  371. package/dist/services/openspec/coverage-evidence-reader.d.ts +191 -0
  372. package/dist/services/openspec/coverage-evidence-reader.js +386 -0
  373. package/dist/services/openspec/openspec-archive-service.d.ts +70 -0
  374. package/dist/services/openspec/openspec-archive-service.js +320 -8
  375. package/dist/services/openspec/openspec-bridge-service.js +1 -1
  376. package/dist/services/openspec/openspec-init-service.js +1 -1
  377. package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
  378. package/dist/services/openspec/openspec-render-service.js +7 -4
  379. package/dist/services/openspec/openspec-scan-service.js +1 -1
  380. package/dist/services/openspec/openspec-validate-service.js +5 -4
  381. package/dist/services/preferences/preferences-service.js +10 -0
  382. package/dist/services/preferences/preferences-types.d.ts +13 -0
  383. package/dist/services/preferences/preferences-types.js +11 -0
  384. package/dist/services/qa/screenshot-archive-service.d.ts +51 -0
  385. package/dist/services/qa/screenshot-archive-service.js +134 -0
  386. package/dist/services/rd/rd-service.js +10 -11
  387. package/dist/services/rd/types.d.ts +32 -32
  388. package/dist/services/rd-swarm/rd-swarm-service.d.ts +60 -0
  389. package/dist/services/rd-swarm/rd-swarm-service.js +93 -0
  390. package/dist/services/recommendations/capability-seed-items.js +0 -1
  391. package/dist/services/recommendations/capability-seed-mappings.js +0 -1
  392. package/dist/services/recommendations/capability-seed-sources.js +0 -1
  393. package/dist/services/release/version-precheck-service.d.ts +51 -0
  394. package/dist/services/release/version-precheck-service.js +257 -0
  395. package/dist/services/scan/acceptance-coverage-service.js +1 -1
  396. package/dist/services/scan/archetype-service.js +1 -1
  397. package/dist/services/scan/existing-system-service.js +1 -1
  398. package/dist/services/scan/libraries-service.js +1 -1
  399. package/dist/services/sediment/json-schema.d.ts +40 -40
  400. package/dist/services/share/bundle-types.d.ts +12 -12
  401. package/dist/services/share/run-state-contract.d.ts +2 -2
  402. package/dist/services/skill/skill-search-service.d.ts +12 -7
  403. package/dist/services/skill/skill-search-service.js +8 -4
  404. package/dist/services/skillhub/migrations/001-initial.sql +71 -0
  405. package/dist/services/skillhub/migrations/002-loop-release.sql +32 -0
  406. package/dist/services/skillhub/migrations/003-loop-bee-relation.sql +35 -0
  407. package/dist/services/skillhub/migrations/004-loop-bee-extension.sql +65 -0
  408. package/dist/services/skillhub/migrations/005-evolution-evaluation.sql +81 -0
  409. package/dist/services/skillhub/migrations/006-crystallization-event.sql +92 -0
  410. package/dist/services/skills/hooks-settings-service.d.ts +75 -0
  411. package/dist/services/skills/hooks-settings-service.js +230 -2
  412. package/dist/services/skills/skill-registry.d.ts +1 -0
  413. package/dist/services/skills/skill-registry.js +6 -4
  414. package/dist/services/skills/skill-runbook-service.js +1 -1
  415. package/dist/services/slice/slice-check-service.js +1 -1
  416. package/dist/services/standards/main-session-monitor-ban-hook.d.ts +14 -0
  417. package/dist/services/standards/main-session-monitor-ban-hook.js +19 -0
  418. package/dist/services/standards/missing-standards-detector.d.ts +25 -0
  419. package/dist/services/standards/missing-standards-detector.js +43 -12
  420. package/dist/services/tech/tech-change-id-service.d.ts +82 -0
  421. package/dist/services/tech/tech-change-id-service.js +117 -0
  422. package/dist/services/understand/understand-hybrid-service.js +1 -1
  423. package/dist/services/understand/understand-scan-service.js +2 -2
  424. package/dist/services/upgrade/upgrade-service.js +4 -3
  425. package/dist/services/verdict/envelopes.d.ts +2 -2
  426. package/dist/services/verdict/envelopes.js +2 -2
  427. package/dist/services/verdict/verdict-aggregator.d.ts +3 -3
  428. package/dist/services/vm/vm-lease.d.ts +40 -0
  429. package/dist/services/vm/vm-lease.js +137 -0
  430. package/dist/services/workflow/autonomous-resume-writer.js +1 -1
  431. package/dist/services/workflow/pipeline-verify-gate-support.d.ts +47 -0
  432. package/dist/services/workflow/pipeline-verify-gate-support.js +194 -0
  433. package/dist/services/workflow/pipeline-verify-service.d.ts +17 -81
  434. package/dist/services/workflow/pipeline-verify-service.js +42 -218
  435. package/dist/services/workflow/pipeline-verify-types.d.ts +90 -0
  436. package/dist/services/workflow/pipeline-verify-types.js +10 -0
  437. package/dist/services/workflow/plan-reader.d.ts +1 -1
  438. package/dist/services/workflow/plan-reader.js +1 -1
  439. package/dist/services/workflow/plan-refresher.d.ts +1 -1
  440. package/dist/services/workflow/plan-refresher.js +1 -1
  441. package/dist/services/workflow/plan-trigger-detector.d.ts +1 -1
  442. package/dist/services/workflow/plan-trigger-detector.js +1 -1
  443. package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +1 -1
  444. package/dist/services/workflow/workflow-autonomous-service.d.ts +2 -98
  445. package/dist/services/workflow/workflow-autonomous-types.d.ts +114 -0
  446. package/dist/services/workflow/workflow-autonomous-types.js +21 -0
  447. package/dist/services/workflow/workflow-router-service.js +18 -16
  448. package/dist/services/workflow/workflow-spec-lint.d.ts +13 -0
  449. package/dist/services/workflow/workflow-spec-lint.js +75 -0
  450. package/dist/services/workflow/workflow-spec-types.d.ts +100 -0
  451. package/dist/services/workflow/workflow-spec-types.js +13 -0
  452. package/dist/services/workflow/workflow-spec-yaml.d.ts +17 -0
  453. package/dist/services/workflow/workflow-spec-yaml.js +88 -0
  454. package/dist/services/workflow/workflow-spec.d.ts +11 -91
  455. package/dist/services/workflow/workflow-spec.js +16 -145
  456. package/dist/services/workspace/migrate-service.js +1 -1
  457. package/dist/services/workspace/workspace-service.js +1 -1
  458. package/dist/services/worktree/worktree-lease.d.ts +170 -0
  459. package/dist/services/worktree/worktree-lease.js +242 -0
  460. package/package.json +47 -51
  461. package/scripts/clean-dist.mjs +31 -1
  462. package/scripts/copy-templates.mjs +16 -0
  463. package/scripts/sync-version.mjs +53 -2
  464. package/skills/bee/peaks-perf-audit/SKILL.md +17 -0
  465. package/skills/bee/peaks-prd/SKILL.md +16 -0
  466. package/skills/bee/peaks-prd/test-prompts.json +12 -0
  467. package/skills/bee/peaks-qa/SKILL.md +16 -1
  468. package/skills/bee/peaks-qa/references/qa-sub-agent-dispatch.md +22 -0
  469. package/skills/bee/peaks-qa/test-prompts.json +12 -0
  470. package/skills/bee/peaks-rd/SKILL.md +29 -20
  471. package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +39 -0
  472. package/skills/bee/peaks-rd/test-prompts.json +12 -0
  473. package/skills/bee/peaks-reviewer/SKILL.md +17 -0
  474. package/skills/bee/peaks-sc/SKILL.md +16 -0
  475. package/skills/bee/peaks-security-audit/SKILL.md +17 -0
  476. package/skills/bee/peaks-txt/SKILL.md +16 -0
  477. package/skills/bee/peaks-txt/test-prompts.json +12 -0
  478. package/skills/bee/peaks-ui/SKILL.md +49 -43
  479. package/skills/bee/peaks-ui/test-prompts.json +12 -0
  480. package/skills/peaks-code/SKILL.md +54 -109
  481. package/skills/peaks-code/references/boundaries.md +15 -1
  482. package/skills/peaks-code/references/cron-scheduler-deployment.md +313 -0
  483. package/skills/peaks-code/references/external-skill-invocation.md +27 -0
  484. package/skills/peaks-code/references/lease-dashboard.html +224 -0
  485. package/skills/peaks-code/references/lease-stats.sample.json +26 -0
  486. package/skills/peaks-code/references/peaks-worktree-l2-enforcers.md +208 -0
  487. package/skills/peaks-code/references/periodic-checkpoint.md +4 -4
  488. package/skills/peaks-code/references/runbook.md +63 -1
  489. package/skills/peaks-code/references/startup-sequence.md +110 -0
  490. package/skills/peaks-code/references/step-0-8-gate.md +1 -1
  491. package/skills/peaks-code/references/sub-agent-dispatch.md +92 -1
  492. package/skills/peaks-code/references/worktree-governance.md +123 -0
  493. package/skills/peaks-code/test-prompts.json +12 -0
  494. package/skills/peaks-doctor/SKILL.md +1 -1
  495. package/skills/peaks-ide/SKILL.md +1 -1
  496. package/skills/peaks-solo/SKILL.md +21 -0
  497. package/skills/peaks-solo/references/triage-decision-table.md +6 -0
  498. package/skills/peaks-sop/test-prompts.json +17 -0
  499. package/dist/cli/commands/agent-commands.d.ts +0 -20
  500. package/dist/cli/commands/agent-commands.js +0 -48
  501. package/dist/cli/commands/classify-classify-commands.d.ts +0 -19
  502. package/dist/cli/commands/classify-classify-commands.js +0 -151
  503. package/dist/cli/commands/contract-commands.d.ts +0 -26
  504. package/dist/cli/commands/contract-commands.js +0 -114
  505. package/dist/cli/commands/session-auto-compact-hook-command.d.ts +0 -37
  506. package/dist/cli/commands/session-auto-compact-hook-command.js +0 -127
  507. package/dist/cli/commands/worker-commands.d.ts +0 -3
  508. package/dist/cli/commands/worker-commands.js +0 -52
  509. package/dist/services/agent/ecc-agent-service.d.ts +0 -47
  510. package/dist/services/agent/ecc-agent-service.js +0 -143
  511. package/dist/services/config/provider-service.d.ts +0 -48
  512. package/dist/services/config/provider-service.js +0 -143
  513. package/dist/services/context/dispatch-context-guard.d.ts +0 -27
  514. package/dist/services/context/dispatch-context-guard.js +0 -192
  515. package/dist/services/context/shared-channel.d.ts +0 -93
  516. package/dist/services/context/shared-channel.js +0 -308
  517. package/dist/services/filesystem/file-lock.d.ts +0 -11
  518. package/dist/services/filesystem/file-lock.js +0 -152
  519. package/dist/services/mut/assert-scanner.d.ts +0 -6
  520. package/dist/services/mut/assert-scanner.js +0 -116
  521. package/dist/services/mut/index.d.ts +0 -8
  522. package/dist/services/mut/index.js +0 -7
  523. package/dist/services/mut/mut-runner.d.ts +0 -39
  524. package/dist/services/mut/mut-runner.js +0 -29
  525. package/dist/services/mut/production-stryker.d.ts +0 -2
  526. package/dist/services/mut/production-stryker.js +0 -75
  527. package/dist/services/mut/report-builder.d.ts +0 -11
  528. package/dist/services/mut/report-builder.js +0 -110
  529. package/dist/services/mut/report-loader.d.ts +0 -31
  530. package/dist/services/mut/report-loader.js +0 -78
  531. package/dist/services/mut/thresholds.d.ts +0 -21
  532. package/dist/services/mut/thresholds.js +0 -22
  533. package/dist/services/mut/types.d.ts +0 -336
  534. package/dist/services/mut/types.js +0 -59
  535. package/dist/services/providers/minimax-provider-service.d.ts +0 -24
  536. package/dist/services/providers/minimax-provider-service.js +0 -143
  537. package/dist/services/providers/minimax-worker-service.d.ts +0 -21
  538. package/dist/services/providers/minimax-worker-service.js +0 -83
  539. package/dist/shared/fs.d.ts +0 -4
  540. package/dist/shared/fs.js +0 -26
  541. package/dist/shared/paths.d.ts +0 -6
  542. package/dist/shared/paths.js +0 -50
  543. package/dist/shared/result.d.ts +0 -22
  544. package/dist/shared/result.js +0 -46
  545. package/dist/shared/version.d.ts +0 -1
  546. package/dist/shared/version.js +0 -1
  547. package/examples/video-demo/README.md +0 -142
  548. package/examples/video-demo/out/en-closing-960.png +0 -0
  549. package/examples/video-demo/out/zh-closing-960.png +0 -0
  550. package/examples/video-demo/preview/peaks-loop-demo-en.mp4 +0 -0
  551. package/examples/video-demo/preview/peaks-loop-demo.mp4 +0 -0
  552. /package/dist/services/{job/job-resource-snapshot.js → job-snapshot/snapshot.js} +0 -0
@@ -0,0 +1,97 @@
1
+ const ROUTES = {
2
+ make: [
3
+ { skill: 'peaks-code', words: ['code', 'implement', 'refactor', 'cli', 'bug', 'feature'] },
4
+ { skill: 'peaks-content', words: ['blog', 'article', 'post', 'newsletter', 'copy'] },
5
+ { skill: 'peaks-doctor', words: ['audit', 'health', 'doctor', 'project health'] },
6
+ { skill: 'peaks-issue-fix-orchestrator', words: ['fix issues', 'open issues', 'issue sweep'] }
7
+ ],
8
+ learn: [
9
+ { skill: 'peaks-sop', words: ['sop', 'procedure', 'checklist', 'runbook'] },
10
+ { skill: 'peaks-solo sediment', words: ['lesson', 'memory', 'sediment', 'learn from'] }
11
+ ],
12
+ check: [
13
+ { skill: 'peaks-audit', words: ['red-lines', 'red lines', 'audit'] },
14
+ { skill: 'peaks-doctor', words: ['doctor', 'health', 'health check'] },
15
+ { skill: 'peaks-security-audit', words: ['security', 'vulnerability', 'vuln', 'secret'] }
16
+ ],
17
+ run: [
18
+ { skill: 'peaks-workflow', words: ['workflow', 'pipeline', 'flow'] },
19
+ { skill: 'peaks-job', words: ['job', 'slice', 'batch'] },
20
+ { skill: 'peaks-dispatch', words: ['dispatch', 'sub-agent', 'sub agent', 'agent'] }
21
+ ]
22
+ };
23
+ function envelope(command, data) {
24
+ return JSON.stringify({ ok: true, data, warnings: [], nextActions: data.nextActions });
25
+ }
26
+ function route(command, input) {
27
+ const normalized = input.trim().toLowerCase();
28
+ const candidates = ROUTES[command] ?? [];
29
+ const selected = candidates.find((candidate) => candidate.words.some((word) => normalized.includes(word)));
30
+ const chosen = selected ?? candidates[0];
31
+ if (chosen === undefined) {
32
+ return {
33
+ routedSkill: 'peaks-solo',
34
+ confidence: 0,
35
+ alternatives: [],
36
+ rationale: 'No route candidates are configured',
37
+ nextActions: ['LLM: dispatch peaks-solo with this goal']
38
+ };
39
+ }
40
+ const alternatives = candidates.filter((candidate) => candidate !== chosen).map((candidate) => candidate.skill);
41
+ const confidence = selected === undefined ? 0.25 : 0.92;
42
+ const rationale = selected === undefined
43
+ ? 'No route keyword matched; default candidate selected for LLM arbitration'
44
+ : `Natural-language ${command} intent matches the ${chosen.skill} route`;
45
+ return {
46
+ routedSkill: chosen.skill,
47
+ confidence,
48
+ alternatives,
49
+ rationale,
50
+ nextActions: [`LLM: dispatch ${chosen.skill} sub-agent with this goal`]
51
+ };
52
+ }
53
+ function registerRouted(program, io, name, argument) {
54
+ program.command(`${name} <${argument}>`).description(`Route a natural-language ${argument} to the appropriate Peaks skill`).action((value) => {
55
+ const input = value.trim();
56
+ if (!input) {
57
+ io.stdout(JSON.stringify({ ok: false, command: `super.${name}`, code: 'MISSING_ARG', message: `${argument} must not be blank`, data: {}, warnings: [], nextActions: [] }));
58
+ process.exitCode = 1;
59
+ return;
60
+ }
61
+ const data = route(name, input);
62
+ io.stdout(envelope(`super.${name}`, data));
63
+ });
64
+ }
65
+ function registerFixed(program, io, name, skill, description) {
66
+ program.command(name).description(description).action(() => {
67
+ const data = {
68
+ routedSkill: skill,
69
+ confidence: 1,
70
+ alternatives: [],
71
+ rationale: `Fixed operator handoff for ${skill}`,
72
+ nextActions: [`LLM: dispatch ${skill} sub-agent`]
73
+ };
74
+ io.stdout(envelope(`super.${name}`, data));
75
+ });
76
+ }
77
+ function registerAsk(program, io) {
78
+ program.command('ask <question>').description('Route a free-form question to the Peaks solo dispatcher').action((question) => {
79
+ const input = question.trim();
80
+ if (!input) {
81
+ io.stdout(JSON.stringify({ ok: false, command: 'super.ask', code: 'MISSING_ARG', message: 'question must not be blank', data: {}, warnings: [], nextActions: [] }));
82
+ process.exitCode = 1;
83
+ return;
84
+ }
85
+ io.stdout(envelope('super.ask', { routedSkill: 'peaks-solo', confidence: 1, alternatives: [], rationale: 'Free-form question delegated to the Peaks solo dispatcher', nextActions: ['LLM: dispatch peaks-solo with this question'] }));
86
+ });
87
+ }
88
+ export function registerSuperCommands(program, io) {
89
+ registerRouted(program, io, 'make', 'goal');
90
+ registerRouted(program, io, 'learn', 'kind');
91
+ registerRouted(program, io, 'check', 'target');
92
+ registerRouted(program, io, 'run', 'workflow');
93
+ registerFixed(program, io, 'share', 'peaks-sub-agent-share', 'Hand off a sharing operation');
94
+ registerFixed(program, io, 'version', 'peaks-version', 'Return the current Peaks version');
95
+ registerAsk(program, io);
96
+ registerFixed(program, io, 'status', 'peaks-status', 'Show current Peaks workflow status');
97
+ }
@@ -1,6 +1,6 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { addJsonOption, printResult } from '../cli-helpers.js';
3
- import { fail, ok, getErrorMessage } from '../../shared/result.js';
3
+ import { fail, ok, getErrorMessage } from 'peaks-loop-shared/result';
4
4
  import { AdapterRegistry } from '../../services/adapter/adapter-registry.js';
5
5
  import { registryFileFor } from './runtime-commands.js';
6
6
  function resolveProjectRoot(explicit) {
@@ -43,12 +43,14 @@
43
43
  import { existsSync, mkdirSync } from "node:fs";
44
44
  import { join } from "node:path";
45
45
  import { openStateDb } from "../../services/skillhub/sqlite-store.js";
46
- import { CrystallizationService, CrystallizationIntegrityError, } from "../../services/crystallization/crystallization-service.js";
47
- import { CRYSTALLIZATION_TRIGGERS, parseEvidenceBrief, } from "../../services/crystallization/crystallization-types.js";
48
- import { BriefSectionError, safeRenderRecommendationPayload, } from "../../services/crystallization/evidence-brief-builder.js";
46
+ import { CrystallizationService, CrystallizationIntegrityError, BriefSectionError, safeRenderRecommendationPayload, CRYSTALLIZATION_TRIGGERS, parseEvidenceBrief, } from "../../services/crystallization/index.js";
47
+ import { LoopReleaseSchema, } from "../../services/loop/loop-release-types.js";
48
+ import { insertLoopRelease, } from "../../services/loop/loop-release-store.js";
49
+ import { insertLoopBeeRelation, } from "../../services/loop/loop-bee-relation-store.js";
50
+ import { LoopBeeRelationSchema, } from "../../services/loop/loop-bee-relation-types.js";
49
51
  import { findProjectRoot } from "../../services/config/config-safety.js";
50
52
  import { addJsonOption, getErrorMessage, printResult } from "../cli-helpers.js";
51
- import { fail, ok } from "../../shared/result.js";
53
+ import { fail, ok } from 'peaks-loop-shared/result';
52
54
  function collectRepeatable(value, previous) {
53
55
  if (Array.isArray(previous))
54
56
  return [...previous, value];
@@ -120,7 +122,8 @@ export function registerAssetCommands(program, io) {
120
122
  }
121
123
  catch (err) {
122
124
  if (err instanceof BriefSectionError) {
123
- printResult(io, fail("asset.crystallize", "MISSING_BRIEF_SECTION", err.message, { findings: [...err.findings], flagsProvided: Object.keys(candidateBrief) }, [
125
+ const briefErr = err;
126
+ printResult(io, fail("asset.crystallize", "MISSING_BRIEF_SECTION", briefErr.message, { findings: [...briefErr.findings], flagsProvided: Object.keys(candidateBrief) }, [
124
127
  "Pass ALL FOUR brief sections via --brief-what-happened / --brief-why-it-matters / --brief-what-learned / --brief-what-action.",
125
128
  "The CLI refuses to render a recommendation without a complete 4-section brief (spec §4.7 / RL-7).",
126
129
  ]), options.json);
@@ -155,7 +158,12 @@ export function registerAssetCommands(program, io) {
155
158
  }
156
159
  const db = openStateDb(join(projectRoot, ".peaks", "state.db"));
157
160
  try {
158
- const svc = new CrystallizationService(db);
161
+ const svc = new CrystallizationService(db, {
162
+ loopReleaseSchema: LoopReleaseSchema,
163
+ loopBeeRelationSchema: LoopBeeRelationSchema,
164
+ insertLoopRelease: insertLoopRelease,
165
+ insertLoopBeeRelation: insertLoopBeeRelation,
166
+ });
159
167
  const result = svc.crystallize({
160
168
  task: {
161
169
  task_id: options.fromTask,
@@ -217,10 +225,11 @@ export function registerAssetCommands(program, io) {
217
225
  }
218
226
  catch (err) {
219
227
  if (err instanceof CrystallizationIntegrityError) {
220
- printResult(io, fail("asset.crystallize", err.code, err.message, { findings: [...err.findings] }, [
221
- err.code === "CRYSTALLIZATION_PRE_RUN"
228
+ const integrityErr = err;
229
+ printResult(io, fail("asset.crystallize", integrityErr.code, integrityErr.message, { findings: [...integrityErr.findings] }, [
230
+ integrityErr.code === "CRYSTALLIZATION_PRE_RUN"
222
231
  ? "Re-shape the candidate task so task_status=completed AND gates_passed=true AND evidence_collected=true (spec §5 / RL-2)."
223
- : err.code === "MISSING_BRIEF_SECTION"
232
+ : integrityErr.code === "MISSING_BRIEF_SECTION"
224
233
  ? "Pass ALL FOUR brief sections (RL-7); the CLI refuses to render a recommendation without them."
225
234
  : "Inspect the failure findings and re-shape the payload.",
226
235
  ]), options.json);
@@ -228,14 +237,12 @@ export function registerAssetCommands(program, io) {
228
237
  return;
229
238
  }
230
239
  if (err instanceof BriefSectionError) {
231
- printResult(io, fail("asset.crystallize", "MISSING_BRIEF_SECTION", err.message, { findings: [...err.findings] }, ["Pass all 4 brief sections (RL-7)."]), options.json);
240
+ const briefErr = err;
241
+ printResult(io, fail("asset.crystallize", "MISSING_BRIEF_SECTION", briefErr.message, { findings: [...briefErr.findings] }, ["Pass all 4 brief sections (RL-7)."]), options.json);
232
242
  process.exitCode = 1;
233
243
  return;
234
244
  }
235
- printResult(io, fail("asset.crystallize", "ASSET_CRYSTALLIZE_FAILED", getErrorMessage(err), {}, [
236
- "Verify the brief flags and the loop/bee identifiers are valid.",
237
- ]), options.json);
238
- process.exitCode = 1;
245
+ throw err;
239
246
  }
240
247
  });
241
248
  // ---------- peaks asset dispose ----------
@@ -258,7 +265,12 @@ export function registerAssetCommands(program, io) {
258
265
  }
259
266
  const db = openStateDb(join(projectRoot, ".peaks", "state.db"));
260
267
  try {
261
- const svc = new CrystallizationService(db);
268
+ const svc = new CrystallizationService(db, {
269
+ loopReleaseSchema: LoopReleaseSchema,
270
+ loopBeeRelationSchema: LoopBeeRelationSchema,
271
+ insertLoopRelease: insertLoopRelease,
272
+ insertLoopBeeRelation: insertLoopBeeRelation,
273
+ });
262
274
  const existing = svc.read(options.crystallizationEvent);
263
275
  if (!existing) {
264
276
  printResult(io, fail("asset.dispose", "ASSET_EVENT_NOT_FOUND", `crystallization event '${options.crystallizationEvent}' not found`, { eventId: options.crystallizationEvent }, ["Verify the event id."]), options.json);
@@ -331,7 +343,12 @@ export function registerAssetCommands(program, io) {
331
343
  }
332
344
  const db = openStateDb(join(projectRoot, ".peaks", "state.db"));
333
345
  try {
334
- const svc = new CrystallizationService(db);
346
+ const svc = new CrystallizationService(db, {
347
+ loopReleaseSchema: LoopReleaseSchema,
348
+ loopBeeRelationSchema: LoopBeeRelationSchema,
349
+ insertLoopRelease: insertLoopRelease,
350
+ insertLoopBeeRelation: insertLoopBeeRelation,
351
+ });
335
352
  let events = [];
336
353
  if (options.loop) {
337
354
  events = [
@@ -12,7 +12,7 @@ import { resolve } from 'node:path';
12
12
  import { runRedLinesAudit } from '../../services/audit/red-lines-service.js';
13
13
  import { runStaticAudit } from '../../services/audit/static-service.js';
14
14
  import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
15
- import { fail, ok } from '../../shared/result.js';
15
+ import { fail, ok } from 'peaks-loop-shared/result';
16
16
  import { writeAuditDecision } from '../../services/audit/decision-writer.js';
17
17
  import { computeProseRatio } from '../../services/audit/prose-ratio-calculator.js';
18
18
  import { writeMachineOutput, writeNarrative, writePrompt, } from '../../services/audit/artifact-writer.js';
@@ -49,7 +49,7 @@ function validateProjectRoot(projectArg) {
49
49
  }
50
50
  export function registerAuditCommands(program, io) {
51
51
  const audit = program
52
- .command('audit')
52
+ .command('audit', { hidden: true })
53
53
  .description('Audit a project for compliance with peaks-loop red lines (P0 / P1 / P2 tiers)');
54
54
  addJsonOption(audit
55
55
  .command('red-lines')
@@ -0,0 +1,12 @@
1
+ import { Command } from 'commander';
2
+ import { type ProgramIO } from '../cli-helpers.js';
3
+ export type AutonomousPlanOptions = {
4
+ mode: string;
5
+ changeId: string;
6
+ goal: string;
7
+ maxWorkers?: string;
8
+ dryRun?: boolean;
9
+ json?: boolean;
10
+ };
11
+ export declare function runAutonomousSwarmPlan(io: ProgramIO, options: AutonomousPlanOptions): void;
12
+ export declare function registerAutonomousSwarmCommands(program: Command, io: ProgramIO): void;
@@ -0,0 +1,120 @@
1
+ import { fail, ok } from 'peaks-loop-shared/result';
2
+ import { getWorkspaceConfigForPath } from '../../services/config/config-service.js';
3
+ import { getLocalArtifactPath } from '../../services/artifacts/workspace-service.js';
4
+ import { findProjectRoot } from '../../services/config/config-safety.js';
5
+ import { planAutonomousRdSwarm, buildAutonomousGoalPackage, buildResumeInstructions, } from '../../services/autonomous-swarm/autonomous-swarm-service.js';
6
+ import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
7
+ import { mapServiceError } from './_cli-error-envelope.js';
8
+ const SUPPORTED_AUTONOMOUS_MODES = ['code', 'team'];
9
+ function isAutonomousMode(value) {
10
+ return SUPPORTED_AUTONOMOUS_MODES.includes(value);
11
+ }
12
+ function projectContext() {
13
+ const projectRoot = findProjectRoot(process.cwd()) ?? process.cwd();
14
+ const workspace = getWorkspaceConfigForPath(projectRoot);
15
+ return {
16
+ workspaceRoot: workspace ? getLocalArtifactPath(workspace) : projectRoot,
17
+ };
18
+ }
19
+ function autonomousWorkspaceRoot() {
20
+ return projectContext().workspaceRoot;
21
+ }
22
+ export function runAutonomousSwarmPlan(io, options) {
23
+ if (options.dryRun === false) {
24
+ printResult(io, fail('workflow.autonomous', 'NON_DRY_RUN_UNSUPPORTED', 'Only dry-run planning is supported', {}, ['Rerun with --dry-run or omit --no-dry-run']), options.json);
25
+ process.exitCode = 1;
26
+ return;
27
+ }
28
+ if (!isAutonomousMode(options.mode)) {
29
+ printResult(io, fail('workflow.autonomous', 'UNSUPPORTED_AUTONOMOUS_MODE', `Unsupported autonomous mode ${options.mode}`, {}, ['Use --mode code or --mode team']), options.json);
30
+ process.exitCode = 1;
31
+ return;
32
+ }
33
+ const maxWorkers = Number(options.maxWorkers ?? '40');
34
+ if (!Number.isInteger(maxWorkers) || maxWorkers < 1) {
35
+ printResult(io, fail('workflow.autonomous', 'INVALID_MAX_WORKERS', 'max-workers must be a positive integer', {}, ['Use --max-workers with a positive integer value']), options.json);
36
+ process.exitCode = 1;
37
+ return;
38
+ }
39
+ const workspaceRoot = autonomousWorkspaceRoot();
40
+ try {
41
+ // Validate inputs that the service enforces as throws so we surface
42
+ // them as typed envelope codes rather than generic INTERNAL_ERROR.
43
+ if (!options.goal.trim()) {
44
+ throw new Error('Goal must be non-empty');
45
+ }
46
+ const goalPackage = buildAutonomousGoalPackage({
47
+ changeId: options.changeId,
48
+ goal: options.goal,
49
+ mode: options.mode,
50
+ maxWorkers,
51
+ dryRun: true,
52
+ workspaceRoot,
53
+ });
54
+ const plan = planAutonomousRdSwarm({
55
+ changeId: options.changeId,
56
+ goal: options.goal,
57
+ mode: options.mode,
58
+ maxWorkers,
59
+ dryRun: true,
60
+ workspaceRoot,
61
+ requiresTechApproval: false,
62
+ });
63
+ const resumeInstructions = buildResumeInstructions(plan);
64
+ printResult(io, ok('workflow.autonomous', {
65
+ goalPackage,
66
+ capabilityReuse: plan.capabilityReuse,
67
+ checkpoints: plan.checkpoints,
68
+ workerQueue: plan.workerQueue,
69
+ evidence: plan.evidence,
70
+ artifactRoot: plan.artifactRoot,
71
+ gateStatus: plan.gateStatus,
72
+ blockedReasons: plan.blockedReasons,
73
+ nextActions: plan.nextActions,
74
+ resumeInstructions,
75
+ autonomyMode: plan.autonomyMode,
76
+ available: plan.available,
77
+ }), options.json);
78
+ }
79
+ catch (error) {
80
+ const mapping = mapServiceError(error);
81
+ // Re-label change-id validation errors so the envelope code matches
82
+ // the typed `code` we want to surface to the user (rather than the
83
+ // generic INTERNAL_ERROR fallback).
84
+ if (error instanceof Error && /changeId|change-id/.test(error.message)) {
85
+ if (error.message.includes('empty')) {
86
+ printResult(io, fail('workflow.autonomous', 'change-id-empty', error.message, {}, ['Provide a change-id matching [A-Za-z0-9][A-Za-z0-9._-]*']), options.json);
87
+ }
88
+ else {
89
+ printResult(io, fail('workflow.autonomous', 'change-id-format', error.message, {}, ['Provide a change-id matching [A-Za-z0-9][A-Za-z0-9._-]*']), options.json);
90
+ }
91
+ process.exitCode = 1;
92
+ return;
93
+ }
94
+ printResult(io, fail('workflow.autonomous', mapping.code, getErrorMessage(error), {}, [...mapping.nextActions]), options.json);
95
+ process.exitCode = 1;
96
+ }
97
+ }
98
+ function addAutonomousPlanOptions(command) {
99
+ return addJsonOption(command
100
+ .description('Plan an autonomous RD swarm dry-run (slice rid-014).')
101
+ .requiredOption('--mode <mode>', 'autonomous mode: code or team')
102
+ .requiredOption('--change-id <id>', 'change id matching [A-Za-z0-9][A-Za-z0-9._-]*')
103
+ .requiredOption('--goal <goal>', 'planning goal')
104
+ .option('--max-workers <count>', 'maximum worker count', '40')
105
+ .option('--dry-run', 'preview without writing files', true)
106
+ .option('--no-dry-run', 'unsupported: do not execute autonomous planning from this CLI'));
107
+ }
108
+ export function registerAutonomousSwarmCommands(program, io) {
109
+ // Register the new rid-014 dry-run planner under
110
+ // `peaks workflow autonomous-swarm` (the existing `peaks workflow
111
+ // autonomous` registration owns the bare `autonomous` name and is
112
+ // untouched). The legacy `registerSwarmCommands` and
113
+ // `registerTechCommands` calls in `workflow-commands.ts` are
114
+ // byte-for-byte untouched.
115
+ const workflow = program.commands.find((candidate) => candidate.name() === 'workflow');
116
+ if (workflow) {
117
+ addAutonomousPlanOptions(workflow.command('autonomous-swarm')).action((options) => runAutonomousSwarmPlan(io, options));
118
+ }
119
+ addAutonomousPlanOptions(program.command('autonomous-swarm')).action((options) => runAutonomousSwarmPlan(io, options));
120
+ }
@@ -24,7 +24,7 @@
24
24
  import { existsSync, mkdirSync } from 'node:fs';
25
25
  import { join } from 'node:path';
26
26
  import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
27
- import { fail, ok } from '../../shared/result.js';
27
+ import { fail, ok } from 'peaks-loop-shared/result';
28
28
  import { findProjectRoot } from '../../services/config/config-safety.js';
29
29
  import { openStateDb } from '../../services/skillhub/sqlite-store.js';
30
30
  import { writeBundle, BundleNotShareableError, BundleAssetNotFoundError, } from '../../services/share/bundle-writer.js';
@@ -2,7 +2,7 @@ import { readConfig } from '../../services/config/config-service.js';
2
2
  import { resolveCapabilityAvailability } from '../../services/recommendations/capability-availability.js';
3
3
  import { createCapabilityMapPlan } from '../../services/recommendations/capability-map-service.js';
4
4
  import { seedCapabilityItems, seedCapabilitySources } from '../../services/recommendations/seed-capability-catalog.js';
5
- import { fail, ok } from '../../shared/result.js';
5
+ import { fail, ok } from 'peaks-loop-shared/result';
6
6
  import { addJsonOption, printResult } from '../cli-helpers.js';
7
7
  const CAPABILITY_SOURCE_FILTERS = new Set(['all', 'access-repo', 'mcp-server']);
8
8
  export function registerCapabilityCommands(program, io) {
@@ -1,10 +1,8 @@
1
1
  import { registerCapabilityCommands } from './capability-commands.js';
2
2
  import { registerConfigCommands } from './config-commands.js';
3
3
  import { registerSCCommands } from './sc-commands.js';
4
- import { registerWorkerCommands } from './worker-commands.js';
5
4
  export function registerCapabilityWorkerConfigAndSCCommands(program, io) {
6
5
  registerCapabilityCommands(program, io);
7
- registerWorkerCommands(program, io);
8
6
  registerConfigCommands(program, io);
9
7
  registerSCCommands(program, io);
10
8
  }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * rid-011 — peaks changeset check (Phase 4 slice 2).
3
+ *
4
+ * - `peaks changeset check` — hard gate, exit non-zero if any staged
5
+ * .changeset/*.md exists. No warning mode, no --strict, no
6
+ * --skip-changeset-check.
7
+ *
8
+ * Wired into `_register.ts` via the rid-007 auto-registration barrel;
9
+ * do NOT add a second registration call in `program.ts`.
10
+ */
11
+ import type { Command } from 'commander';
12
+ import { type ProgramIO } from '../cli-helpers.js';
13
+ export declare function registerChangesetCommands(program: Command, io: ProgramIO): void;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * rid-011 — peaks changeset check (Phase 4 slice 2).
3
+ *
4
+ * - `peaks changeset check` — hard gate, exit non-zero if any staged
5
+ * .changeset/*.md exists. No warning mode, no --strict, no
6
+ * --skip-changeset-check.
7
+ *
8
+ * Wired into `_register.ts` via the rid-007 auto-registration barrel;
9
+ * do NOT add a second registration call in `program.ts`.
10
+ */
11
+ import { findProjectRoot } from '../../services/config/config-safety.js';
12
+ import { runChangesetHardGate } from '../../services/changeset/changeset-check-service.js';
13
+ import { fail, ok } from 'peaks-loop-shared/result';
14
+ import { addJsonOption, printResult } from '../cli-helpers.js';
15
+ export function registerChangesetCommands(program, io) {
16
+ const changeset = program
17
+ .command('changeset')
18
+ .description('rid-011 — changeset hard gate (no warning mode, no skip).');
19
+ addJsonOption(changeset
20
+ .command('check')
21
+ .description('Hard-gate check: exit non-zero if any .changeset/*.md file is staged ' +
22
+ '(excluding README.md). Mirrors publish.yml gate-changeset step.')
23
+ .option('--project <path>', 'project root (default: cwd)')).action((opts) => {
24
+ const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
25
+ const gate = runChangesetHardGate(projectRoot);
26
+ if (gate.ok) {
27
+ printResult(io, ok('changeset.check', {
28
+ root: gate.root,
29
+ state: gate.state,
30
+ stagedFiles: gate.stagedFiles,
31
+ snapshotAt: gate.snapshotAt
32
+ }, [], []), opts.json ?? false);
33
+ return;
34
+ }
35
+ process.exitCode = 1;
36
+ printResult(io, fail('changeset.check', 'CHANGESET_BLOCKED', `${gate.stagedFiles.length} staged .changeset/*.md file(s) — refusing to proceed`, {
37
+ root: gate.root,
38
+ state: gate.state,
39
+ stagedFiles: gate.stagedFiles,
40
+ snapshotAt: gate.snapshotAt
41
+ }, [
42
+ `Drain pending changesets before proceeding: drain `.concat(gate.stagedFiles.join(', '), ' via the coordinating LLM (e.g. `pnpm changeset version` or `peaks changeset publish` if installed).'),
43
+ 'Then re-run `peaks changeset check` to confirm a clean state.'
44
+ ]), opts.json ?? false);
45
+ });
46
+ }
@@ -14,9 +14,16 @@
14
14
  * v2.11.0 Group F (Tier 9) — D5 / D7 additions:
15
15
  * - `peaks code should-pause --step <step> --mode <mode>` (D5)
16
16
  * - `peaks code post-compact-detect --project <path>` (D7)
17
+ *
18
+ * rid-024: 7 sub-commands extracted into 3 sibling files:
19
+ * - code-mode-gate-commands.ts (plan + should-pause)
20
+ * - code-job-shape-commands.ts (detect-job + read-job-shape)
21
+ * - code-runtime-commands.ts (post-compact-detect + auto-compact + context-now + gate-step-08 + emit-handoff)
22
+ * This file keeps the public API: types, buildCodePlan, runCodeFast,
23
+ * registerCodeCommands (now a thin orchestrator).
17
24
  */
18
25
  import type { Command } from 'commander';
19
- import { type ProgramIO } from '../cli-helpers.js';
26
+ import type { ProgramIO } from '../cli-helpers.js';
20
27
  export type CodeStepKind = 'memory' | 'preflight' | 'rd' | 'qa' | 'emit';
21
28
  export interface CodeStep {
22
29
  readonly id: 'load-memory' | 'standards-preflight' | 'rd-cycle' | 'qa-cycle' | 'emit-txt';
@@ -76,5 +83,8 @@ export declare function runCodeFast(opts: {
76
83
  * LLM-side orchestration is driven by the SKILL.md (LLM-side), so this
77
84
  * CLI command is a thin surface that builds the plan and emits a JSON
78
85
  * envelope for downstream tooling.
86
+ *
87
+ * rid-024: this function is now a thin orchestrator that delegates to 3
88
+ * sibling register functions + the rid-020b run register.
79
89
  */
80
90
  export declare function registerCodeCommands(program: Command, io: ProgramIO): void;