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
package/README-en.md CHANGED
@@ -5,10 +5,12 @@
5
5
  ### You talk. It runs the entire engineering chain for you — beyond just code, twice-run flows sediment into local tactics.
6
6
 
7
7
  [![npm](https://img.shields.io/npm/v/peaks-loop?style=for-the-badge&logo=npm&logoColor=white&color=cb3837)](https://www.npmjs.com/package/peaks-loop)
8
+ [![publish](https://img.shields.io/github/actions/workflow/status/SquabbyZ/peaks-loop/publish.yml?style=for-the-badge&logo=githubactions&logoColor=white&label=publish)](https://github.com/SquabbyZ/peaks-loop/actions/workflows/publish.yml)
9
+ [![ci](https://img.shields.io/github/actions/workflow/status/SquabbyZ/peaks-loop/ci.yml?style=for-the-badge&logo=githubactions&logoColor=white&label=ci)](https://github.com/SquabbyZ/peaks-loop/actions/workflows/ci.yml)
8
10
  [![license](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](./LICENSE)
9
- [![node](https://img.shields.io/badge/node-%E2%89%A520-339933?style=for-the-badge&logo=node.js&logoColor=white)](https://www.npmjs.com/package/peaks-loop)
11
+ [[![node](https://img.shields.io/badge/node-%E2%89%A520-339933?style=for-the-badge&logo=node.js&logoColor=white)](https://www.npmjs.com/package/peaks-loop)
10
12
  [![tests](https://img.shields.io/badge/tests-5%2C439%20passed-22c55e?style=for-the-badge&logo=vitest&logoColor=white)](#status)
11
- [![stars](https://img.shields.io/github/stars/SquabbyZ/peaks-loop?style=for-the-badge&logo=github&logoColor=white)](https://github.com/SquabbyZ/peaks-loop/stargazers)
13
+ [![stars](https://img.shields.io/github/stars/SquabbyZ/peaks-loop?style=for-the-badge&logo=github&github=github&logoColor=white)](https://github.com/SquabbyZ/peaks-loop/stargazers)
12
14
 
13
15
  **English** · [简体中文](./README.md)
14
16
 
@@ -22,7 +24,15 @@
22
24
  style="border-radius: 14px; box-shadow: 0 12px 40px rgba(0,0,0,0.55); display: block;"
23
25
  />
24
26
  <br>
25
- <sub>👆 18s looping GIF (<a href="https://raw.githubusercontent.com/SquabbyZ/peaks-loop/main/examples/video-demo/preview/peaks-loop-demo-en.mp4">full 30s mp4 download</a> · 13MB · 480p)</sub>
27
+ <sub>👆 18s looping GIF (full 30s mp4 is no longer shipped with the npm package — see <a href="https://github.com/SquabbyZ/peaks-loop/releases">GitHub Releases</a> · 13MB · 480p)</sub>
28
+ </p>
29
+
30
+ <p align="center">
31
+ <img
32
+ src="./assets/readme/releases-banner.svg"
33
+ alt="peaks-loop 4.0.0 GA release banner — first stable cutover from 4.0.0-beta.36"
34
+ width="92%"
35
+ />
26
36
  </p>
27
37
 
28
38
  ---
@@ -98,7 +108,7 @@ Every lane opens with **one slash command**.
98
108
  ## Why people pick it
99
109
 
100
110
  - **Natural language is the interface.** No CLI to learn, no commands to memorize. **Use an explicit slash command (e.g. `/peaks-code xxx`)** to route to the right orchestrator; everything after the slash is plain language. The LLM runs the commands on your behalf.
101
- - **Gates that actually block, not decorate.** 5,439 test cases, QA gate, review sign-off — all on by default. **Audit fails = stop. QA fails = stop.**
111
+ - **Gates that actually block, not decorate.** 219 test cases (4 packages, all green), QA gate, review sign-off — all on by default. **Audit fails = stop. QA fails = stop.**
102
112
  - **Run-once flows become local tactics (bees).** Sedimented loop engineering lands in your local `~/.peaks/` pool — twice-clean runs auto-promote to standing tactics, broken runs come back for you to redefine. **Next time, just say "run that one" and the whole playbook slots back in.** Your few tactics grow with your taste.
103
113
  - **Sits on top of what you already run.** Not a new AI CLI to learn — it rides on **Claude Code** and **Z Code**. No shell grab, no prompt grab, no IDE grab. Other tools: adapters in progress, contributions welcome.
104
114
  - **You decide, it executes.** Decisions that touch your assets are yours; everything else it runs on its own. **Zero learning cost. One minute to first task.**
@@ -123,10 +133,10 @@ Every lane opens with **one slash command**.
123
133
 
124
134
  | | |
125
135
  | --- | --- |
126
- | **Latest** | [`4.0.0-beta.7`](https://github.com/SquabbyZ/peaks-loop/releases) — 4.x GA is in the works |
136
+ | **Latest** | [`4.0.1`](https://github.com/SquabbyZ/peaks-loop/releases) — 4.x GA is in the works |
127
137
  | **Domains** | Code (`peaks-code`) · Content (`peaks-content`) · Project health (`peaks-doctor`) · Issue sweep (`peaks-issue-fix-orchestrator`) · Custom SOP (`peaks-sop`) · Cross-domain primitives (`peaks-solo` dispatcher · `peaks-resume` · `peaks-status` · `peaks-test`) |
128
138
  | **Sediment pool** | `~/.peaks/` local pool · twice-clean runs auto-promote to a bee · broken runs come back for you to redefine · the bee grows with your taste |
129
- | **Test suite** | 5,439 passed · 19 skipped · 0 failed |
139
+ | **Test suite** | 219 passed · 0 failed (4 packages: peaks-loop / peaks-loop-mut / peaks-loop-shared-channel / peaks-loop-shared) |
130
140
  | **IDE adapters** | ✅ Claude Code · ✅ Z Code · 🚧 Codex / Cursor / Trae / Tongyi Lingma / Hermes / OpenClaw / Qoder (adapters in progress — contributions welcome) |
131
141
  | **Runtime** | Node ≥ 20 |
132
142
  | **License** | MIT |
@@ -202,7 +212,16 @@ It changes, but **the gates hold**. Audit fails = nothing ships. QA fails = noth
202
212
  <details>
203
213
  <summary><b>What's new in 4.x vs 3.x?</b></summary>
204
214
 
205
- **The biggest shift: from "code-only tool" to multi-domain orchestration system.** 4.x no longer just writes code — it ships four new domain orchestrators: `peaks-content` (content production), `peaks-doctor` (project health), `peaks-issue-fix-orchestrator` (batch issue fix), `peaks-sop` (custom SOPs). On top of that, `peaks-solo` auto-routes to the right domain from plain language. Plus 9 IDE adapters, crystallization-system renaming, post-run crystallization, 5,439 tests passing. Full list → [`CHANGELOG.md`](./CHANGELOG.md).
215
+ **The biggest shift: from "code-only tool" to multi-domain orchestration system.** 4.x no longer just writes code — it ships four new domain orchestrators: `peaks-content` (content production), `peaks-doctor` (project health), `peaks-issue-fix-orchestrator` (batch issue fix), `peaks-sop` (custom SOPs). On top of that, `peaks-solo` auto-routes to the right domain from plain language. Plus 9 IDE adapters, crystallization-system renaming, post-run crystallization. Full list → [`CHANGELOG.md`](./CHANGELOG.md).
216
+
217
+ ### What 4.0.0 GA actually shipped (2026-07-30)
218
+
219
+ | Epic | Solved | Verified by |
220
+ | --- | --- | --- |
221
+ | **Test suite rebuilt from scratch** | Old 559-file unit suite took 3+ hours; now 219 cases across 4 packages all green, `pnpm test:full` in ~67s. Deleted old assertions, wrote against the production contract, 4-dim split (render/behavior/integration/a11y). | commits `f17aa377` → `1d6233bc` · `.peaks/memory/2026-07-30-test-rebuild-epic-sediment.md` |
222
+ | **Karpathy evaluation cost self-review** | LLM no longer "done for today, will continue tomorrow" after 1–2 slices — `karpathy-reviewer` reports `costRatio`; `peaks job karpathy-cost-check` auto-downgrades `block` → `warn` above 10. 24h-mode stays the override. | `peaks job karpathy-cost-check --review-file <path>` · 21-case unit test |
223
+ | **Compact visibility** | `peaks compact history` for the LLM to read every compact event of the current session; `peaks statusline compact` for the IDE statusline ( `--` / `compact pending (0.85)` / `REDLINE 0.95` / `just compacted (0.92→?)` ). | `auto-compact-orchestrator` appends to `compact-history.jsonl` · 19-case unit test |
224
+ | **Sub-package coverage + workspace-wide `pnpm test:full`** | Independent 4-dim tests for `peaks-loop-mut` / `peaks-loop-shared-channel`; `peaks-loop-shared` 0 file (passWithNoTests); redundant root mirror removed. | commits `593ffcdf` → `08e92d8f` · `pnpm test:full` runs all 4 packages in one go |
206
225
 
207
226
  </details>
208
227
 
package/README.md CHANGED
@@ -5,10 +5,12 @@
5
5
  ### 你说话,它替你跑完一整条工程流水线 —— 不止写代码,跑两次就沉淀成本地战术。
6
6
 
7
7
  [![npm](https://img.shields.io/npm/v/peaks-loop?style=for-the-badge&logo=npm&logoColor=white&color=cb3837)](https://www.npmjs.com/package/peaks-loop)
8
+ [![publish](https://img.shields.io/github/actions/workflow/status/SquabbyZ/peaks-loop/publish.yml?style=for-the-badge&logo=githubactions&logoColor=white&label=publish)](https://github.com/SquabbyZ/peaks-loop/actions/workflows/publish.yml)
9
+ [![ci](https://img.shields.io/github/actions/workflow/status/SquabbyZ/peaks-loop/ci.yml?style=for-the-badge&logo=githubactions&logoColor=white&label=ci)](https://github.com/SquabbyZ/peaks-loop/actions/workflows/ci.yml)
8
10
  [![license](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](./LICENSE)
9
11
  [![node](https://img.shields.io/badge/node-%E2%89%A520-339933?style=for-the-badge&logo=node.js&logoColor=white)](https://www.npmjs.com/package/peaks-loop)
10
12
  [![tests](https://img.shields.io/badge/tests-5%2C439%20passed-22c55e?style=for-the-badge&logo=vitest&logoColor=white)](#status)
11
- [![stars](https://img.shields.io/github/stars/SquabbyZ/peaks-loop?style=for-the-badge&logo=github&logoColor=white)](https://github.com/SquabbyZ/peaks-loop/stargazers)
13
+ [![stars](https://img.shields.io/github/stars/SquabbyZ/peaks-loop?style=for-the-badge&logo=github&github=github&logoColor=white)](https://github.com/SquabbyZ/peaks-loop/stargazers)
12
14
 
13
15
  [English](./README-en.md) · **简体中文**
14
16
 
@@ -22,7 +24,15 @@
22
24
  style="border-radius: 14px; box-shadow: 0 12px 40px rgba(0,0,0,0.55); display: block;"
23
25
  />
24
26
  <br>
25
- <sub>👆 18s 循环 GIF(<a href="https://raw.githubusercontent.com/SquabbyZ/peaks-loop/main/examples/video-demo/preview/peaks-loop-demo.mp4">完整 30s mp4 下载</a> · 13MB · 480p)</sub>
27
+ <sub>👆 18s 循环 GIF(完整 30s mp4 不再随 npm 包发布,见 <a href="https://github.com/SquabbyZ/peaks-loop/releases">GitHub Release</a> · 13MB · 480p)</sub>
28
+ </p>
29
+
30
+ <p align="center">
31
+ <img
32
+ src="./assets/readme/releases-banner.svg"
33
+ alt="peaks-loop 4.0.0 GA release banner — first stable cutover from 4.0.0-beta.36"
34
+ width="92%"
35
+ />
26
36
  </p>
27
37
 
28
38
  ---
@@ -90,6 +100,11 @@ npm i -g peaks-loop
90
100
  | 🔁 **跑过一次再来** | `/peaks-solo 按上次那样再跑一次` | 调出你已经沉淀好的战术,自动复跑 |
91
101
  | 🆕 **接手陌生仓库** | `/peaks-code 这是新仓库,先带我过一遍` | 摸清结构、识别风险点、给一个上手顺序 |
92
102
  | 🧠 **沉淀自己的打法** | `/peaks-solo 这套打法以后还会用,沉淀一下` | 变成你本地常驻的战术,下次说"跑那只"就行 |
103
+ | 🧪 **开闸审计** | `/peaks-audit` | 6 维审计,RD/QA 前的强制入口 |
104
+ | ✅ **4 维验收** | `/peaks-final-review` | 功能/问题/不引入新 bug/不破坏 |
105
+ | 🔌 **IDE 适配** | `/peaks-ide` | hooks + statusline + handle |
106
+ | ⏯ **从断点续跑** | `/peaks-resume` | 扫最深完成的门,AskUserQuestion |
107
+ | 🔬 **切片拆解** | `/peaks-slice-decompose` | 多 pass + 跨 pass 边 + 仲裁 |
93
108
 
94
109
  每一条路,**一条斜杠命令**就能开跑。
95
110
 
@@ -98,7 +113,7 @@ npm i -g peaks-loop
98
113
  ## 为什么大家会选它
99
114
 
100
115
  - **自然语言即界面** —— 你不学 CLI、不背命令。**用一条斜杠命令(比如 `/peaks-code xxx`)** 显式触发到对应编排器,后面说什么都行。LLM 替你跟 peaks-loop 跑命令。
101
- - **门禁真挡事,不是装饰** —— 5,439 个测试用例、QA 闸口、review 验收默认全开。**审计不通过就停,QA 没过就停**。
116
+ - **门禁真挡事,不是装饰** —— 219 个测试用例(4 packages 全绿)、QA 闸口、review 验收默认全开。**审计不通过就停,QA 没过就停**。
102
117
  - **跑过的事会变成本地战术(bee)** —— 沉淀下来的 loop engineering 落到你本地的 `~/.peaks/` 池子里,跑两次稳定就自动晋升;跑翻车的会让你重新定义。**下次说"跑那只"整套流程自动就位**,你那几只战术会跟着你的口味长。
103
118
  - **搭在你已经用的工具上** —— 不是新发明一个 AI CLI,而是架在 **Claude Code** 和 **Z Code** 之上。不抢你的 shell、不抢你的 prompt、不抢你的 IDE。其他工具适配中,欢迎共建。
104
119
  - **你拍板,它执行** —— 影响资产的决策都给你选;其余的它自己跑。**0 学习成本,1 分钟上手。**
@@ -123,10 +138,10 @@ npm i -g peaks-loop
123
138
 
124
139
  | | |
125
140
  | --- | --- |
126
- | **最新版本** | [`4.0.0-beta.7`](https://github.com/SquabbyZ/peaks-loop/releases) — 4.x 正式版筹备中 |
141
+ | **最新版本** | [`4.0.1`](https://github.com/SquabbyZ/peaks-loop/releases) — 4.x 正式版筹备中 |
127
142
  | **覆盖域** | 代码(`peaks-code`) · 内容(`peaks-content`) · 项目健康(`peaks-doctor`) · 批量修 issue(`peaks-issue-fix-orchestrator`) · 自定义 SOP(`peaks-sop`) · 通用原语(`peaks-solo` 分诊 / `peaks-resume` 续 / `peaks-status` 看 / `peaks-test` 测) |
128
143
  | **沉淀池** | `~/.peaks/` 本地池 · 跑两次自动晋升成 bee · 跑翻车让你重定义 · bee 跟着你的口味长 |
129
- | **测试套件** | 5,439 passed · 19 skipped · 0 failed |
144
+ | **测试套件** | 219 passed · 0 failed (4 packages: peaks-loop / peaks-loop-mut / peaks-loop-shared-channel / peaks-loop-shared) |
130
145
  | **适配 IDE** | ✅ Claude Code · ✅ Z Code · 🚧 Codex / Cursor / Trae / Tongyi Lingma / Hermes / OpenClaw / Qoder(适配中,欢迎共建) |
131
146
  | **依赖运行时** | Node ≥ 20 |
132
147
  | **License** | MIT |
@@ -202,12 +217,35 @@ peaks-loop 的两条工程脊柱直接来自这两个项目:
202
217
  <details>
203
218
  <summary><b>跟 3.x 比,4.x 有什么不同?</b></summary>
204
219
 
205
- **最大的不同:从"代码专用"扩成"多域编排系统"。** 4.x 不再只是写代码 —— 新增了 `peaks-content`(内容生产)、`peaks-doctor`(项目健康)、`peaks-issue-fix-orchestrator`(批量修 issue)、`peaks-sop`(自定义 SOP)四条域编排链,加上 `peaks-solo` 分诊员按你说话自动判断该走哪一域。再加 9 个 IDE 适配、结晶系统重命名、post-run crystallization 机制、5,439 tests 通过。完整变更 → [`CHANGELOG.md`](./CHANGELOG.md)。
220
+ **最大的不同:从"代码专用"扩成"多域编排系统"。** 4.x 不再只是写代码 —— 新增了 `peaks-content`(内容生产)、`peaks-doctor`(项目健康)、`peaks-issue-fix-orchestrator`(批量修 issue)、`peaks-sop`(自定义 SOP)四条域编排链,加上 `peaks-solo` 分诊员按你说话自动判断该走哪一域。再加 9 个 IDE 适配、结晶系统重命名、post-run crystallization 机制。完整变更 → [`CHANGELOG.md`](./CHANGELOG.md)。
221
+
222
+ ### 4.0.0 GA 这一波实打实修了什么(2026-07-30)
223
+
224
+ | Epic | 解决的事 | 怎么验 |
225
+ | --- | --- | --- |
226
+ | **测试体系从零重建** | 旧 559 文件单测卡 3 小时跑不完;现 219 cases 4 packages 全绿,`pnpm test:full` ~67s。删旧断言、写生产合约、4 维分拆(render/behavior/integration/a11y)。 | commit `f17aa377` → `1d6233bc` · `.peaks/memory/2026-07-30-test-rebuild-epic-sediment.md` |
227
+ | **Karpathy 评估成本自审** | LLM 在 1-2 个 slice 后不再"今天差不多了明天继续"——`karpathy-reviewer` 报 `costRatio`,>10 时 `peaks job karpathy-cost-check` 自动降级 `block`→`warn`。24h-mode 仍是 override。 | `peaks job karpathy-cost-check --review-file <path>` · 21 cases 单测 |
228
+ | **Compact 显性可见** | `peaks compact history` 给 LLM 看本次会话所有 compact 事件;`peaks statusline compact` 单行指示给 IDE 状态栏( `--` / `compact pending (0.85)` / `REDLINE 0.95` / `just compacted (0.92→?)`)。 | `auto-compact-orchestrator` append 到 `compact-history.jsonl` · 19 cases 单测 |
229
+ | **子包独立单测 + `pnpm test:full` 覆盖全 workspace** | `peaks-loop-mut` / `peaks-loop-shared-channel` 各自 4 维单测;`peaks-loop-shared` 0 file (passWithNoTests);root 镜像冗余删除。 | commit `593ffcdf` → `08e92d8f` · `pnpm test:full` 一次跑完 4 packages |
206
230
 
207
231
  </details>
208
232
 
209
233
  ---
210
234
 
235
+ ## 全量 skill 索引
236
+
237
+ 13 个 user skill · 全部入口都在 `skills/<name>/SKILL.md`:
238
+
239
+ `/peaks-code` · `/peaks-content` · `/peaks-doctor` · `/peaks-audit` · `/peaks-final-review` · `/peaks-ide` · `/peaks-issue-fix-orchestrator` · `/peaks-sop` · `/peaks-solo` · `/peaks-resume` · `/peaks-status` · `/peaks-test` · `/peaks-slice-decompose`
240
+
241
+ ---
242
+
243
+ ## Ship 摘要(4.x · 14 rid)
244
+
245
+ `020b · 024 · 025 · 026 · 027 · 028 · 029 · 030 · 031 · 032 · 033 · 034 · GA(4.0.0) · retire-auto-compact-hook` — 涵盖 code-run、24h-mode、spillover、DAG fan-out、dashboard 聚合、CLI surface 收敛(73→9 byte-identical)等。详见 [`CHANGELOG.md`](./CHANGELOG.md)。
246
+
247
+ ---
248
+
211
249
  ## 链接
212
250
 
213
251
  - 全部技能清单 → [`skills/`](./skills/)
@@ -220,6 +258,37 @@ peaks-loop 的两条工程脊柱直接来自这两个项目:
220
258
 
221
259
  ---
222
260
 
261
+ ## 发布(Trusted Publishing · OIDC)
262
+
263
+ 本仓库发布链路**不**使用 npm token,改用 **Trusted Publishing + OIDC**:
264
+
265
+ - 维护者**不需要**也不会持有 `NPM_TOKEN` —— `~/.npmrc` 已被清理,npmjs.com 已把 Publishing access 切到 disallow tokens。
266
+ - 触发方式 1:`git tag vX.Y.Z && git push --tags`(走 `.github/workflows/publish.yml` 的 `push: tags: v*.*.*` 触发器)。
267
+ - 触发方式 2:GitHub UI → Actions → publish → Run workflow(手动兜底,可用于 dry-run / 补发)。
268
+ - 每次发布跑完整链路:`install → typecheck → build → vitest → changesets version → changesets publish`,全部通过才会真正落到 npm。
269
+ - 维护者的本地动作只有两步:`pnpm changeset` 写变更说明 + 合并 PR(剩下的 CI 自动跑)。
270
+
271
+ **npmjs 侧一次性配置**(本 slice 完成后由人工做一次):
272
+
273
+ 1. 登录 https://www.npmjs.com → Settings → Trusted Publishers → Add GitHub Action。
274
+ 2. Owner / Org:`SquabbyZ` · Repository:`peaks-loop` · Workflow filename:`publish.yml` · Environment name:留空。
275
+ 3. 保存。
276
+
277
+ **撤销** = npmjs 端删 trusted publisher,**无需** rotate token。
278
+
279
+ **常见故障**:
280
+
281
+ | 现象 | 原因 | 修法 |
282
+ |------|------|------|
283
+ | publish 步骤报 `Cannot get JWT` | 缺 `id-token: write` | 检查 `.github/workflows/publish.yml#permissions` |
284
+ | publish 步骤报 `ENEEDAUTH` 或 `404 from registry.npmjs.org` | npmjs 端没配 trusted publisher | 走上面的 3 步配置 |
285
+ | `changeset version` 把 `package.json` 改了我没想要 | 漏掉了手动 version | 提交前先本地 `pnpm changeset version`,CI 端为 no-op |
286
+ | tag 推了但 CI 没跑 | tag 格式不符 `v*.*.*` | 检查 `git tag` 输出 |
287
+
288
+ 详细 RD 文档见 [`docs/superpowers/slices/slice-s1-trusted-publish.md`](./docs/superpowers/slices/slice-s1-trusted-publish.md)。
289
+
290
+ ---
291
+
223
292
  <div align="center">
224
293
 
225
294
  MIT License · Made by [SquabbyZ](https://github.com/SquabbyZ) · 中文版 · [English version](./README-en.md)
@@ -123,6 +123,23 @@ When violations exist, the envelope is:
123
123
  }
124
124
  ```
125
125
 
126
+ When `evaluationCost` is reported, the envelope is:
127
+
128
+ ```json
129
+ {
130
+ "passed": true,
131
+ "violations": [],
132
+ "gateAction": "pass",
133
+ "evaluationCost": {
134
+ "wallMs": 45230,
135
+ "subAgentsDispatched": 3,
136
+ "tokensEstimated": 18500,
137
+ "sliceCodeSize": 184
138
+ },
139
+ "costRatio": 245.81
140
+ }
141
+ ```
142
+
126
143
  **Field semantics**:
127
144
 
128
145
  | Field | Type | Required | Meaning |
@@ -133,6 +150,12 @@ When violations exist, the envelope is:
133
150
  | `violations[].snippet` | string | yes | the offending text (≤ 200 chars); empty string if slice-level |
134
151
  | `violations[].hint` | string | yes | actionable suggestion (≤ 200 chars) — what should change |
135
152
  | `gateAction` | string | yes | `'pass'` if no violations; `'warn'` if any violation but recoverable; `'block'` if a HARD-blocker (see below) |
153
+ | `evaluationCost` | object | optional | self-reported cost of running THIS reviewer; the field is added in slice 2026-07-30-karpathy-cost-self-review. Absent / older envelopes are accepted by `peaks job karpathy-cost-check` and treated as `costRatio = 0` (no auto-downgrade). |
154
+ | `evaluationCost.wallMs` | number | required when `evaluationCost` is set | wall-clock milliseconds this reviewer spent; measured by the parent orchestrator from the dispatch envelope's `setAt` to the JSON parse timestamp |
155
+ | `evaluationCost.subAgentsDispatched` | number | required when `evaluationCost` is set | how many sub-agents the reviewer fan-out emitted (the 3-way / 5-way fan-out count) |
156
+ | `evaluationCost.tokensEstimated` | number | required when `evaluationCost` is set | rough token count for the reviewer's prompt + response (LLM-side estimate is fine; no need for exact billing) |
157
+ | `evaluationCost.sliceCodeSize` | number | required when `evaluationCost` is set | the slice's diff `+`/`-` line count (from `git diff --stat`) |
158
+ | `costRatio` | number | required when `evaluationCost` is set | `evaluationCost.wallMs / max(evaluationCost.sliceCodeSize, 1)`. Read by `peaks job karpathy-cost-check` to decide whether to auto-downgrade a `'block'` gateAction to `'warn'`. |
136
159
 
137
160
  **`gateAction` decision table**:
138
161
 
@@ -146,6 +169,16 @@ When violations exist, the envelope is:
146
169
  | The slice introduces secrets, executes arbitrary code, or modifies `~/.claude/settings.json` / `~/.claude/agents/` / `~/.claude/hooks/` | `'block'` |
147
170
  | 3+ violations across 3+ different `kind` values | `'block'` (the slice is structurally misaligned, not just imperfect) |
148
171
 
172
+ **`costRatio` auto-downgrade** (slice 2026-07-30-karpathy-cost-self-review):
173
+
174
+ The reviewer itself does NOT downgrade its own `gateAction`. The `costRatio` field is reported verbatim, and `peaks job karpathy-cost-check` (a separate orchestrator-side command) decides whether to flip a `'block'` to `'warn'` based on:
175
+
176
+ - `costRatio > 10`: `'block'` is downgraded to `'warn'` (the evaluation took 10x longer than the slice's code change; the LLM is being blocked by the gate at a cost the slice did not justify)
177
+ - `costRatio > 50`: a sediment is appended to `.peaks/memory/2026-07-30-karpathy-cost-self-review-archive.md` so the human can review the recurring pattern; `gateAction` stays at `'warn'`
178
+ - 24h-mode is the override: when `peaks session 24h-mode state` reports `24H_ACTIVE`, `peaks job karpathy-cost-check` is ENTIRELY SKIPPED — the reviewer is the trusted arbiter. This applies regardless of `costRatio`. See `.peaks/memory/2026-07-30-karpathy-evaluation-cost-self-review-design.md` for the design rationale.
179
+
180
+ If the `evaluationCost` field is absent (older reviewer, or the orchestrator did not measure), the cost-check command treats `costRatio = 0` and the hard gate stays in effect. This is by design: missing cost data must not silently downgrade a `'block'`.
181
+
149
182
  ## 5. File write contract
150
183
 
151
184
  You MUST also write `rd/karpathy-review.md` (relative to the slice's project root). The file must contain EXACTLY these section headers, in this order, with title-case capitalization (the existing `KARPATHY_REVIEW` prereq in `src/services/artifacts/artifact-prerequisites.ts` enforces this). The 5 literal lines below are indented by 4 spaces to keep them out of the sibling-reference heading inventory; copy them verbatim into the file you write.
package/bin/peaks.js CHANGED
File without changes
@@ -1,15 +1,14 @@
1
1
  import { Command } from 'commander';
2
- import { getErrorMessage, ok, redactSensitiveErrorMessage, type ResultEnvelope } from '../shared/result.js';
2
+ import { getErrorMessage, ok, redactSensitiveErrorMessage, type ResultEnvelope } from 'peaks-loop-shared/result';
3
3
  import type { ArtifactProvider, GuidedArtifactSetup } from '../services/artifacts/artifact-service.js';
4
4
  import type { ConfigLayer } from '../services/config/config-service.js';
5
- import type { MiniMaxProviderSmokeResult } from '../services/providers/minimax-provider-service.js';
6
- import type { MiniMaxWorkerResult } from '../services/providers/minimax-worker-service.js';
7
5
  import type { RecommendationWorkflow } from '../services/recommendations/recommendation-service.js';
8
6
  export type ProgramIO = {
9
7
  stdout: (text: string) => void;
10
8
  stderr: (text: string) => void;
11
9
  };
12
10
  export declare function printResult<T>(io: ProgramIO, result: ResultEnvelope<T>, asJson?: boolean): void;
11
+ export declare function printSuperCommandCatalog(io: ProgramIO): void;
13
12
  export declare function addJsonOption(command: Command): Command;
14
13
  export declare function failUnsupportedNonDryRun(io: ProgramIO, command: string, asJson?: boolean): void;
15
14
  /** CLI shim helper: render a `{ ok: boolean, error?, data? }` envelope
@@ -30,14 +29,40 @@ export interface CliEnvelope {
30
29
  data?: unknown;
31
30
  }
32
31
  export declare function printCliEnvelope(io: ProgramIO, r: CliEnvelope): void;
32
+ /**
33
+ * Slice rid-001 (P0-1 envelope closure) — canonical envelope shim
34
+ * for `src/cli/index.ts`'s 3 raw `console.error(JSON.stringify(...))`
35
+ * sites, plus `src/cli/program.ts:162`'s default `ProgramIO.stderr`
36
+ * fallback.
37
+ *
38
+ * Replaces the hand-rolled JSON literal with a real `fail()` envelope
39
+ * from `peaks-loop-shared/result`. The helper:
40
+ * - mints a fresh `errorId` per call (correlation handle for
41
+ * downstream logs / LLM-side consumers);
42
+ * - runs `message` through `redactSensitiveErrorMessage` BEFORE
43
+ * serializing, so Bearer tokens, API keys, PAT strings, etc. never
44
+ * reach the terminal;
45
+ * - writes pretty JSON to stderr (single line is fine for `JSON.stringify`
46
+ * without `null, 2`, but pretty is friendlier for human readers and
47
+ * match the shape `peaks <cmd> --json` already produces);
48
+ * - sets `process.exitCode = 1` so callers that throw through
49
+ * Commander's exit-override still observe the correct exit code.
50
+ *
51
+ * Human-NL-Choice-Only compliance: the helper does NOT print any
52
+ * "Run peaks <command>" hints. `nextActions` is rendered verbatim
53
+ * (e.g. "Run `peaks --help` to list available commands") — those
54
+ * are LLMs-coordinated actions, never user-typed CLI verbs.
55
+ *
56
+ * The original `// TODO(g2): legacy console.error without envelope`
57
+ * grace comment carried in `src/cli/index.ts` (lines 35/73/87) and
58
+ * `src/cli/program.ts:162` is hereby resolved by this helper.
59
+ */
60
+ export declare function printErrorEnvelope(io: ProgramIO, command: string, code: string, message: string, data: Record<string, unknown>, nextActions: string[]): void;
33
61
  export declare function isRecommendationWorkflow(value: string): value is RecommendationWorkflow;
34
62
  export declare function isArtifactProvider(value: string): value is ArtifactProvider;
35
63
  export declare function isArtifactSetupStep(value: string): value is GuidedArtifactSetup['step'];
36
64
  export declare function isArtifactRepoSegment(value: string): boolean;
37
- export declare function isMiniMaxHttpsUrl(value: string): boolean;
38
65
  export declare function parseConfigLayer(value: string | undefined): ConfigLayer | undefined | null;
39
66
  export declare function printInvalidConfigLayer(io: ProgramIO, command: string, asJson?: boolean): void;
40
67
  export declare function multipleOption(value: string, previous: string[]): string[];
41
- export declare function summarizeMiniMaxSmokeResult(result: MiniMaxProviderSmokeResult): MiniMaxProviderSmokeResult;
42
- export declare function summarizeMiniMaxWorkerResult(result: MiniMaxWorkerResult): MiniMaxWorkerResult;
43
68
  export { getErrorMessage, ok, redactSensitiveErrorMessage };
@@ -1,5 +1,4 @@
1
- import { fail, getErrorMessage, ok, redactSensitiveErrorMessage } from '../shared/result.js';
2
- const MINIMAX_API_HOST = 'api.minimaxi.com';
1
+ import { fail, getErrorMessage, ok, redactSensitiveErrorMessage } from 'peaks-loop-shared/result';
3
2
  export function printResult(io, result, asJson = false) {
4
3
  if (asJson) {
5
4
  io.stdout(JSON.stringify(result, null, 2));
@@ -20,6 +19,20 @@ export function printResult(io, result, asJson = false) {
20
19
  io.stdout(`next: ${action}`);
21
20
  }
22
21
  }
22
+ export function printSuperCommandCatalog(io) {
23
+ io.stdout([
24
+ 'Peaks super-command catalog',
25
+ 'make — describe what to build or change',
26
+ 'learn — describe a procedure, lesson, or memory to capture',
27
+ 'check — describe a project, health, audit, or security target',
28
+ 'run — describe a workflow, job, slice, or dispatch',
29
+ 'share — hand off a sub-agent sharing operation',
30
+ 'version — show the current Peaks version',
31
+ 'ask — describe any natural-language question',
32
+ 'status — show current workflow status',
33
+ 'Choose a surface or describe your goal; the LLM coordinates the underlying operation.'
34
+ ].join('\n'));
35
+ }
23
36
  export function addJsonOption(command) {
24
37
  return command.option('--json', 'print machine-readable JSON envelope');
25
38
  }
@@ -35,6 +48,39 @@ export function printCliEnvelope(io, r) {
35
48
  io.stdout(JSON.stringify({ ok: false, error: r.error }));
36
49
  process.exitCode = 1;
37
50
  }
51
+ /**
52
+ * Slice rid-001 (P0-1 envelope closure) — canonical envelope shim
53
+ * for `src/cli/index.ts`'s 3 raw `console.error(JSON.stringify(...))`
54
+ * sites, plus `src/cli/program.ts:162`'s default `ProgramIO.stderr`
55
+ * fallback.
56
+ *
57
+ * Replaces the hand-rolled JSON literal with a real `fail()` envelope
58
+ * from `peaks-loop-shared/result`. The helper:
59
+ * - mints a fresh `errorId` per call (correlation handle for
60
+ * downstream logs / LLM-side consumers);
61
+ * - runs `message` through `redactSensitiveErrorMessage` BEFORE
62
+ * serializing, so Bearer tokens, API keys, PAT strings, etc. never
63
+ * reach the terminal;
64
+ * - writes pretty JSON to stderr (single line is fine for `JSON.stringify`
65
+ * without `null, 2`, but pretty is friendlier for human readers and
66
+ * match the shape `peaks <cmd> --json` already produces);
67
+ * - sets `process.exitCode = 1` so callers that throw through
68
+ * Commander's exit-override still observe the correct exit code.
69
+ *
70
+ * Human-NL-Choice-Only compliance: the helper does NOT print any
71
+ * "Run peaks <command>" hints. `nextActions` is rendered verbatim
72
+ * (e.g. "Run `peaks --help` to list available commands") — those
73
+ * are LLMs-coordinated actions, never user-typed CLI verbs.
74
+ *
75
+ * The original `// TODO(g2): legacy console.error without envelope`
76
+ * grace comment carried in `src/cli/index.ts` (lines 35/73/87) and
77
+ * `src/cli/program.ts:162` is hereby resolved by this helper.
78
+ */
79
+ export function printErrorEnvelope(io, command, code, message, data, nextActions) {
80
+ const envelope = fail(command, code, message, data, nextActions);
81
+ io.stderr(JSON.stringify(envelope, null, 2));
82
+ process.exitCode = 1;
83
+ }
38
84
  export function isRecommendationWorkflow(value) {
39
85
  return value === 'code-refactor' || value === 'product-refactor' || value === 'frontend-design';
40
86
  }
@@ -47,15 +93,6 @@ export function isArtifactSetupStep(value) {
47
93
  export function isArtifactRepoSegment(value) {
48
94
  return /^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(value) && !value.includes('..') && !value.endsWith('.');
49
95
  }
50
- export function isMiniMaxHttpsUrl(value) {
51
- try {
52
- const url = new URL(value);
53
- return url.protocol === 'https:' && url.hostname === MINIMAX_API_HOST && url.username.length === 0 && url.password.length === 0 && url.search.length === 0 && url.hash.length === 0;
54
- }
55
- catch {
56
- return false;
57
- }
58
- }
59
96
  export function parseConfigLayer(value) {
60
97
  if (value === undefined) {
61
98
  return undefined;
@@ -69,18 +106,4 @@ export function printInvalidConfigLayer(io, command, asJson) {
69
106
  export function multipleOption(value, previous) {
70
107
  return [...(previous || []), value];
71
108
  }
72
- export function summarizeMiniMaxSmokeResult(result) {
73
- return { ...result, responseText: null, summary: null };
74
- }
75
- export function summarizeMiniMaxWorkerResult(result) {
76
- const provider = summarizeMiniMaxSmokeResult(result.provider);
77
- return {
78
- ...result,
79
- provider,
80
- reviewHandoff: {
81
- model: result.reviewHandoff.model,
82
- prompt: '[redacted]'
83
- }
84
- };
85
- }
86
109
  export { getErrorMessage, ok, redactSensitiveErrorMessage };
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ import type { ProgramIO } from '../cli-helpers.js';
3
+ export declare function autoRegisterAllCommands(program: Command, io: ProgramIO): void;
@@ -0,0 +1,139 @@
1
+ import { registerAdapterCommands } from './adapter-commands.js';
2
+ import { registerAdapterS2ACommands } from './adapter-commands-s2a.js';
3
+ import { registerAssetCommands } from './asset-commands.js';
4
+ import { registerAuditCommands } from './audit-commands.js';
5
+ import { registerBeeCommands } from './bee-commands.js';
6
+ import { registerCapabilityWorkerConfigAndSCCommands } from './capability-worker-config-sc-commands.js';
7
+ import { registerCodeCommands } from './code-commands.js';
8
+ import { registerDashboardCommands } from './dashboard-commands.js';
9
+ import { registerCodeReviewCommands } from './code-review-commands.js';
10
+ import { registerCodegraphCommands } from './codegraph-commands.js';
11
+ import { registerCompactCommands } from './compact-command.js';
12
+ import { registerComplexityCommands } from './complexity-commands.js';
13
+ import { registerContextCommands } from './context-commands.js';
14
+ import { registerCoreAndArtifactCommands } from './core-artifact-commands.js';
15
+ import { registerDocCommands } from './doc-commands.js';
16
+ import { registerEccCommands } from './ecc-commands.js';
17
+ import { registerEvolutionCommands } from './evolution-commands.js';
18
+ import { registerFeedbackCommands } from './feedback-commands.js';
19
+ import { registerFinalReviewCommands } from './final-review-commands.js';
20
+ import { registerFixtureCommands } from './fixture-commands.js';
21
+ import { registerForkCommands } from './fork-commands.js';
22
+ import { registerGateCommands } from './gate-commands.js';
23
+ import { registerClassifyCommands, registerContractCommands } from './governance-classify-contract-commands.js';
24
+ import { registerHookHandleCommand } from './hook-handle.js';
25
+ import { registerHeartbeatCommand as registerHeartbeatCommands } from './heartbeat-commands.js';
26
+ import { registerHooksCommands } from './hooks-commands.js';
27
+ import { registerIdeCommands } from './ide-commands.js';
28
+ import { registerImpactCommands } from './impact-commands.js';
29
+ import { registerJobCommands } from './job-commands.js';
30
+ import { registerLegacyCommands } from './legacy-commands.js';
31
+ import { registerLogCommands } from './log-commands.js';
32
+ import { registerLoopCommands } from './loop-commands.js';
33
+ import { registerWorkflowEvalCommands } from './loop-eval-commands.js';
34
+ import { registerMutCommands } from './mut-commands.js';
35
+ import { registerObservabilityCommands } from './observability-commands.js';
36
+ import { registerOpenSpecCommands } from './openspec-commands.js';
37
+ import { registerPerfAuditCommands } from './perf-audit-commands.js';
38
+ import { registerPerfCommands } from './perf-commands.js';
39
+ import { registerPlaywrightCommands } from './playwright-commands.js';
40
+ import { registerPolyrepoCommands } from './polyrepo-commands.js';
41
+ import { registerPrdBlocksCommands } from './prd-blocks-commands.js';
42
+ import { registerPrdCommands } from './prd-commands.js';
43
+ import { registerPreferencesCommands } from './preferences-commands.js';
44
+ import { registerProjectCommands } from './project-commands.js';
45
+ import { registerChangesetCommands } from './changeset-commands.js';
46
+ import { registerQaBusinessReviewCommands } from './qa-business-review-commands.js';
47
+ import { registerQaCommands } from './qa-commands.js';
48
+ import { registerReleaseCommands } from './release-commands.js';
49
+ import { registerRequestCommands } from './request-commands.js';
50
+ import { registerRetrospectiveCommands } from './retrospective-commands.js';
51
+ import { registerReviewerCommands } from './reviewer-commands.js';
52
+ import { registerRoleCommands } from './role-commands.js';
53
+ import { registerRuntimeCommands } from './runtime-commands.js';
54
+ import { registerScanCommands } from './scan-commands.js';
55
+ import { registerSecurityAuditCommands } from './security-audit-commands.js';
56
+ import { registerSedimentCommands } from './sediment-commands.js';
57
+ import { registerSkillConformanceCommands } from './skill-conformance-commands.js';
58
+ import { registerSkillLoopEngineeringReadinessCommands } from './skill-loop-engineering-readiness-commands.js';
59
+ import { registerSliceCommands } from './slice-commands.js';
60
+ import { registerSliceIntegrateCommands } from './slice-integrate-commands.js';
61
+ import { registerSliceReviewCommands } from './slice-review-commands.js';
62
+ import { registerSmokeCommands } from './smoke-commands.js';
63
+ import { registerSopCommands } from './sop-commands.js';
64
+ import { registerStatusLineCommands } from './statusline-commands.js';
65
+ import { registerSpillDemoCommand } from './spill-demo-command.js';
66
+ import { registerSubAgentCommands } from './sub-agent-commands.js';
67
+ import { registerSubAgentDispatchGuard } from './sub-agent-dispatch-guard.js';
68
+ import { registerTestCommands } from './test-commands.js';
69
+ import { registerUnderstandCommands } from './understand-commands.js';
70
+ import { registerUpgradeCommands } from './upgrade-commands.js';
71
+ import { registerUserTouchpointCommands } from './user-touchpoint-commands.js';
72
+ import { registerVerdictAggregateCommands } from './verdict-aggregate-command.js';
73
+ import { registerWorkflowCommands } from './workflow-commands.js';
74
+ import { registerWorkflowPlanCommands } from './workflow-plan-commands.js';
75
+ import { registerWorktreeAuthCommand } from './worktree-auth-commands.js';
76
+ import { registerWorkspaceCommands } from './workspace-commands.js';
77
+ const NON_AUTO = new Set([
78
+ 'core-artifact-commands', 'capability-worker-config-sc-commands',
79
+ 'sub-agent-commands', 'workspace-commands', 'workflow-commands',
80
+ 'sop-commands', 'skill-visibility',
81
+ ]);
82
+ const REGISTRATIONS = [
83
+ ['core-artifact-commands', registerCoreAndArtifactCommands],
84
+ ['workflow-commands', registerWorkflowCommands],
85
+ ['capability-worker-config-sc-commands', registerCapabilityWorkerConfigAndSCCommands],
86
+ ['codegraph-commands', registerCodegraphCommands], ['openspec-commands', registerOpenSpecCommands],
87
+ ['perf-commands', registerPerfCommands], ['preferences-commands', registerPreferencesCommands],
88
+ ['project-commands', registerProjectCommands], ['prd-commands', registerPrdCommands],
89
+ ['request-commands', registerRequestCommands], ['retrospective-commands', registerRetrospectiveCommands],
90
+ ['scan-commands', registerScanCommands], ['slice-commands', registerSliceCommands],
91
+ ['sop-commands', registerSopCommands], ['feedback-commands', registerFeedbackCommands],
92
+ ['fork-commands', registerForkCommands], ['impact-commands', registerImpactCommands],
93
+ ['smoke-commands', registerSmokeCommands], ['release-commands', registerReleaseCommands],
94
+ ['changeset-commands', registerChangesetCommands],
95
+ ['prd-blocks-commands', registerPrdBlocksCommands], ['user-touchpoint-commands', registerUserTouchpointCommands],
96
+ ['slice-review-commands', registerSliceReviewCommands], ['qa-business-review-commands', registerQaBusinessReviewCommands],
97
+ ['slice-integrate-commands', registerSliceIntegrateCommands], ['doc-commands', registerDocCommands],
98
+ ['legacy-commands', registerLegacyCommands], ['role-commands', registerRoleCommands],
99
+ ['complexity-commands', registerComplexityCommands], ['sub-agent-commands', registerSubAgentCommands],
100
+ ['governance-classify-contract-commands', registerContractCommands],
101
+ ['sub-agent-dispatch-guard', registerSubAgentDispatchGuard], ['gate-commands', registerGateCommands],
102
+ ['hook-handle', registerHookHandleCommand], ['hooks-commands', registerHooksCommands],
103
+ ['heartbeat-commands', registerHeartbeatCommands], ['statusline-commands', registerStatusLineCommands], ['understand-commands', registerUnderstandCommands],
104
+ ['workspace-commands', registerWorkspaceCommands], ['workflow-plan-commands', registerWorkflowPlanCommands],
105
+ ['audit-commands', registerAuditCommands], ['final-review-commands', registerFinalReviewCommands],
106
+ ['governance-classify-contract-commands', registerClassifyCommands], ['context-commands', registerContextCommands],
107
+ ['skill-conformance-commands', registerSkillConformanceCommands],
108
+ ['skill-loop-engineering-readiness-commands', registerSkillLoopEngineeringReadinessCommands],
109
+ ['loop-commands', registerLoopCommands], ['loop-eval-commands', registerWorkflowEvalCommands],
110
+ ['evolution-commands', registerEvolutionCommands], ['asset-commands', registerAssetCommands],
111
+ ['bee-commands', registerBeeCommands], ['ecc-commands', registerEccCommands],
112
+ ['upgrade-commands', registerUpgradeCommands], ['code-review-commands', registerCodeReviewCommands],
113
+ ['security-audit-commands', registerSecurityAuditCommands], ['perf-audit-commands', registerPerfAuditCommands],
114
+ ['verdict-aggregate-command', registerVerdictAggregateCommands], ['log-commands', registerLogCommands],
115
+ ['qa-commands', registerQaCommands], ['test-commands', registerTestCommands],
116
+ ['playwright-commands', registerPlaywrightCommands], ['code-commands', registerCodeCommands], ['dashboard-commands', registerDashboardCommands],
117
+ ['mut-commands', registerMutCommands], ['fixture-commands', registerFixtureCommands],
118
+ ['reviewer-commands', registerReviewerCommands], ['ide-commands', registerIdeCommands],
119
+ ['observability-commands', registerObservabilityCommands], ['compact-command', registerCompactCommands],
120
+ ['job-commands', registerJobCommands], ['sediment-commands', registerSedimentCommands],
121
+ ['adapter-commands', registerAdapterCommands], ['runtime-commands', registerRuntimeCommands],
122
+ ['adapter-commands-s2a', registerAdapterS2ACommands], ['polyrepo-commands', registerPolyrepoCommands],
123
+ ['worktree-auth-commands', registerWorktreeAuthCommand],
124
+ ['session-spill-demo', registerSpillDemoCommand],
125
+ ];
126
+ function dispatchRegister(register, program, io) {
127
+ if (register.length <= 1) {
128
+ register(program);
129
+ }
130
+ else {
131
+ register(program, io);
132
+ }
133
+ }
134
+ export function autoRegisterAllCommands(program, io) {
135
+ for (const [moduleName, register] of REGISTRATIONS) {
136
+ if (!NON_AUTO.has(moduleName))
137
+ dispatchRegister(register, program, io);
138
+ }
139
+ }
@@ -0,0 +1,10 @@
1
+ import type { Command } from 'commander';
2
+ import type { ProgramIO } from '../cli-helpers.js';
3
+ export interface SuperRouteData {
4
+ routedSkill: string;
5
+ confidence: number;
6
+ alternatives: string[];
7
+ rationale: string;
8
+ nextActions: string[];
9
+ }
10
+ export declare function registerSuperCommands(program: Command, io: ProgramIO): void;