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
@@ -1,37 +0,0 @@
1
- /**
2
- * `peaks session auto-compact-hook` — slice 2026-07-02-auto-compact-zero-pause.
3
- *
4
- * The Bash entrypoint the PreToolUse hook fires on every Bash/Task
5
- * tool call from the Claude Code runner. Behaviour:
6
- *
7
- * 1. Read `CLAUDE_CONTEXT_USAGE_PERCENT` (or any adapter-declared
8
- * env-var via the registry — claude-code MVP). If ratio is below
9
- * the red-line threshold (0.95), exit 0 silent — the runner's
10
- * normal flow continues.
11
- * 2. If ratio is ≥ 0.95 (red line), write a one-line stderr hint
12
- * so the human sees what happened, then in-band spawn
13
- * `claude --compact` so the **current** runner's context
14
- * window collapses (not a new claude process).
15
- * 3. Always exit 0. The hook is a probe, not a gate — the gate is
16
- * `claude --compact` itself returning 0.
17
- *
18
- * Idempotency: re-running the hook is safe; if `claude --compact`
19
- * is already in flight, the new process just exits 0 immediately
20
- * (Claude Code's compact is a one-shot operation against the
21
- * current runner).
22
- *
23
- * Why a CLI subcommand instead of an inline JS hook:
24
- * - Keeps the hook payload in `.claude/settings.local.json` small
25
- * (one line: `peaks session auto-compact-hook`).
26
- * - Lets the heavy lifting (ratio parsing, IDE-aware env-var
27
- * resolution, spawning `claude --compact`) live in TypeScript
28
- * where it's unit-testable.
29
- * - Discoverable via `peaks session --help` — future LLM sessions
30
- * see the primitive exists.
31
- *
32
- * Karpathy §2: 50 lines, no abstractions, no speculative error
33
- * handling. The hook command is a single-purpose muscle; if it
34
- * grows beyond ~80 lines, that's a signal to split.
35
- */
36
- import type { Command } from 'commander';
37
- export declare function registerSessionAutoCompactHookCommand(session: Command): void;
@@ -1,127 +0,0 @@
1
- /**
2
- * `peaks session auto-compact-hook` — slice 2026-07-02-auto-compact-zero-pause.
3
- *
4
- * The Bash entrypoint the PreToolUse hook fires on every Bash/Task
5
- * tool call from the Claude Code runner. Behaviour:
6
- *
7
- * 1. Read `CLAUDE_CONTEXT_USAGE_PERCENT` (or any adapter-declared
8
- * env-var via the registry — claude-code MVP). If ratio is below
9
- * the red-line threshold (0.95), exit 0 silent — the runner's
10
- * normal flow continues.
11
- * 2. If ratio is ≥ 0.95 (red line), write a one-line stderr hint
12
- * so the human sees what happened, then in-band spawn
13
- * `claude --compact` so the **current** runner's context
14
- * window collapses (not a new claude process).
15
- * 3. Always exit 0. The hook is a probe, not a gate — the gate is
16
- * `claude --compact` itself returning 0.
17
- *
18
- * Idempotency: re-running the hook is safe; if `claude --compact`
19
- * is already in flight, the new process just exits 0 immediately
20
- * (Claude Code's compact is a one-shot operation against the
21
- * current runner).
22
- *
23
- * Why a CLI subcommand instead of an inline JS hook:
24
- * - Keeps the hook payload in `.claude/settings.local.json` small
25
- * (one line: `peaks session auto-compact-hook`).
26
- * - Lets the heavy lifting (ratio parsing, IDE-aware env-var
27
- * resolution, spawning `claude --compact`) live in TypeScript
28
- * where it's unit-testable.
29
- * - Discoverable via `peaks session --help` — future LLM sessions
30
- * see the primitive exists.
31
- *
32
- * Karpathy §2: 50 lines, no abstractions, no speculative error
33
- * handling. The hook command is a single-purpose muscle; if it
34
- * grows beyond ~80 lines, that's a signal to split.
35
- */
36
- import { spawn } from 'node:child_process';
37
- import { detectIdeFromEnv } from '../../services/context/main-session-monitor.js';
38
- import { getAdapter } from '../../services/ide/ide-registry.js';
39
- /**
40
- * Red-line ratio threshold. Must match the orchestrator's
41
- * AUTO_COMPACT_RED_LINE_RATIO constant (0.95). Kept here as a
42
- * literal so the hook command stays self-contained — a future
43
- * slice may move this to a shared constant module if the value
44
- * starts drifting.
45
- */
46
- const RED_LINE_RATIO = 0.95;
47
- /**
48
- * Parse `CLAUDE_CONTEXT_USAGE_PERCENT` (or the adapter-declared
49
- * env-var) into a ratio in [0, 1]. Returns null on missing /
50
- * malformed input. Mirrors `readEnvPercent` in
51
- * `auto-compact-reader.ts` so the hook command and the
52
- * orchestrator agree on parsing semantics.
53
- */
54
- function readRatioFromEnv(env) {
55
- const detected = detectIdeFromEnv(env);
56
- const ideId = (detected === 'unknown' ? 'claude-code' : detected);
57
- const adapter = getAdapter(ideId);
58
- if (!adapter.compact)
59
- return null;
60
- const varName = adapter.compact.envVarForContextPercent;
61
- const raw = env[varName];
62
- if (typeof raw !== 'string' || raw.length === 0)
63
- return null;
64
- const parsed = Number.parseFloat(raw);
65
- if (!Number.isFinite(parsed))
66
- return null;
67
- // Allow either "0..1" or "0..100" encoding. Claude Code writes
68
- // "0..1" today; statusline tools sometimes write "0..100". Normalize.
69
- const ratio = parsed > 1.5 ? parsed / 100 : Math.max(0, Math.min(1, parsed));
70
- return { ratio, varName };
71
- }
72
- export function registerSessionAutoCompactHookCommand(session) {
73
- session
74
- .command('auto-compact-hook')
75
- .description('PreToolUse hook entrypoint — read CLAUDE_CONTEXT_USAGE_PERCENT and, ' +
76
- 'at ratio ≥ 0.95, in-band spawn `claude --compact` against the current ' +
77
- 'runner. Designed for invocation from `.claude/settings.local.json` ' +
78
- 'PreToolUse hooks; safe to re-run.')
79
- .action(() => {
80
- const probe = readRatioFromEnv(process.env);
81
- if (probe === null) {
82
- // No signal → exit 0 silent. The hook must never block the
83
- // runner's normal flow on a missing env-var.
84
- return;
85
- }
86
- if (probe.ratio < RED_LINE_RATIO) {
87
- // Below red line → exit 0 silent. The orchestrator's
88
- // pre-compact zone (0.85–0.95) is handled out-of-band by
89
- // the LLM firing `peaks code auto-compact --execute`; the
90
- // hook only fires on the synchronous red-line path.
91
- return;
92
- }
93
- // Red line reached — compact the current runner in-band.
94
- // The `detached: true` + `unref()` pair lets the hook return
95
- // immediately while Claude Code's own slash-command processor
96
- // picks up `claude --compact` against the runner's session.
97
- // This is the fix for the shell-exec-spawns-a-child-process
98
- // bug documented in `.peaks/memory/2026-06-27-auto-compact-design.md:139-152`.
99
- //
100
- // Dogfood 2026-07-02 fix: when `claude` is not on PATH (the
101
- // user runs Claude Code as an MCP rather than via the CLI
102
- // binary), `spawn` raises ENOENT. Catching this MUST NOT crash
103
- // the runner's tool call — the hook must exit 0 silently with
104
- // a one-line stderr hint so the runner keeps working. The user
105
- // can then run `/compact` manually (or `peaks code auto-compact`
106
- // from another terminal).
107
- try {
108
- const child = spawn('claude', ['--compact'], {
109
- stdio: 'ignore',
110
- detached: true,
111
- env: process.env
112
- });
113
- child.on('error', () => {
114
- // Spawn failed (ENOENT or EPERM). Exit 0 silently with a
115
- // stderr hint — the hook contract is "never crash the
116
- // runner's tool call".
117
- process.stderr.write('[peaks:auto-compact-hook] claude CLI not on PATH; cannot fire in-band. Run `/compact` manually or set up the Claude Code CLI binary.\n');
118
- });
119
- child.unref();
120
- process.stderr.write(`[peaks:auto-compact-hook] ratio=${(probe.ratio * 100).toFixed(1)}% ≥ ${(RED_LINE_RATIO * 100).toFixed(0)}%; firing claude --compact in-band\n`);
121
- }
122
- catch {
123
- // Defensive: `spawn` can throw synchronously on some platforms.
124
- process.stderr.write('[peaks:auto-compact-hook] failed to spawn claude --compact; run `/compact` manually.\n');
125
- }
126
- });
127
- }
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- import { type ProgramIO } from '../cli-helpers.js';
3
- export declare function registerWorkerCommands(program: Command, io: ProgramIO): void;
@@ -1,52 +0,0 @@
1
- import { getMiniMaxProviderConfig } from '../../services/config/config-service.js';
2
- import { runMiniMaxWorker } from '../../services/providers/minimax-worker-service.js';
3
- import { fail, ok } from '../../shared/result.js';
4
- import { addJsonOption, getErrorMessage, printResult, redactSensitiveErrorMessage, summarizeMiniMaxWorkerResult } from '../cli-helpers.js';
5
- function addMiniMaxWorkerOptions(command) {
6
- return addJsonOption(command
7
- .description('Run a single MiniMax coding and unit-test execution worker')
8
- .requiredOption('--session-id <id>', 'session identifier (the single-axis workspace binding after the change-id root removal)')
9
- .requiredOption('--goal <goal>', 'execution goal')
10
- .requiredOption('--coding-task <task>', 'coding execution task')
11
- .requiredOption('--unit-test-task <task>', 'unit-test execution task')
12
- .option('--model <model>', 'model name for the worker', 'MiniMax-M2.7')
13
- .option('--confirm', 'confirm that worker inputs may be sent to the external MiniMax provider once and only return a review handoff', false));
14
- }
15
- async function runMiniMaxWorkerCommand(io, options) {
16
- if (!options.confirm) {
17
- printResult(io, fail('worker.minimax', 'CONFIRMATION_REQUIRED', 'This worker only runs with explicit confirmation because inputs may be sent to the external MiniMax provider', {}, ['Rerun with --confirm after removing secrets from worker inputs']), options.json);
18
- process.exitCode = 1;
19
- return;
20
- }
21
- const sessionId = options.sessionId.trim();
22
- const goal = options.goal.trim();
23
- const codingTask = options.codingTask.trim();
24
- const unitTestTask = options.unitTestTask.trim();
25
- if (!sessionId || !goal || !codingTask || !unitTestTask) {
26
- printResult(io, fail('worker.minimax', 'INVALID_WORKER_INPUT', 'Worker inputs must be non-empty', {}, ['Provide non-empty values for --session-id, --goal, --coding-task, and --unit-test-task']), options.json);
27
- process.exitCode = 1;
28
- return;
29
- }
30
- try {
31
- const result = await runMiniMaxWorker(getMiniMaxProviderConfig(), { sessionId, goal, codingTask, unitTestTask, model: options.model });
32
- const safeResult = summarizeMiniMaxWorkerResult(result);
33
- if (!result.provider.configured) {
34
- printResult(io, fail('worker.minimax', 'MINIMAX_PROVIDER_NOT_CONFIGURED', 'MiniMax provider requires baseUrl and apiKey in user config', safeResult, ['Run peaks config provider minimax set --base-url <url> and either MINIMAX_API_KEY']), options.json);
35
- process.exitCode = 1;
36
- return;
37
- }
38
- printResult(io, result.provider.ok ? ok('worker.minimax', safeResult) : fail('worker.minimax', 'MINIMAX_WORKER_FAILED', 'MiniMax worker execution failed', safeResult, ['Check the MiniMax base URL, API key, and worker tasks']), options.json);
39
- if (!result.provider.ok) {
40
- process.exitCode = 1;
41
- }
42
- }
43
- catch (error) {
44
- printResult(io, fail('worker.minimax', 'MINIMAX_WORKER_FAILED', redactSensitiveErrorMessage(getErrorMessage(error)), {}, ['Check the MiniMax base URL, API key, and worker tasks']), options.json);
45
- process.exitCode = 1;
46
- }
47
- }
48
- export function registerWorkerCommands(program, io) {
49
- const worker = program.command('worker').description('Run controlled execution workers');
50
- addMiniMaxWorkerOptions(worker.command('minimax')).action(async (options) => runMiniMaxWorkerCommand(io, options));
51
- addMiniMaxWorkerOptions(program.command('minimax-worker')).action(async (options) => runMiniMaxWorkerCommand(io, options));
52
- }
@@ -1,47 +0,0 @@
1
- /**
2
- * The 12 most-used ECC agents per the upstream
3
- * everything-claude-code catalog. The full 64-agent list is
4
- * available at runtime via `npx ecc agent list`; this static
5
- * subset covers the common L3-doctor dispatch paths.
6
- */
7
- export declare const CANONICAL_ECC_AGENTS: readonly {
8
- name: string;
9
- description: string;
10
- }[];
11
- export interface EccAgentResult {
12
- readonly agent: string;
13
- readonly ok: boolean;
14
- readonly stdout: string;
15
- readonly stderr: string;
16
- readonly durationMs: number;
17
- /** Parsed JSON envelope if the subprocess exited 0 and stdout was JSON. */
18
- readonly parsed?: unknown;
19
- readonly error?: string;
20
- }
21
- export interface EccAgentServiceInput {
22
- readonly agent: string;
23
- readonly projectRoot: string;
24
- readonly enableAgent?: boolean | undefined;
25
- }
26
- export interface EccAgentServiceResult {
27
- readonly agent: string;
28
- readonly spawned: boolean;
29
- readonly reason: 'enabled-and-installed' | 'disabled-by-preference' | 'flag-disabled' | 'flag-enabled-but-ecc-missing' | 'disabled-and-ecc-missing';
30
- readonly result: EccAgentResult | null;
31
- readonly warnings: readonly string[];
32
- }
33
- export interface SubprocessRunner {
34
- run(command: string, args: readonly string[], timeoutMs: number): SubprocessResult;
35
- }
36
- export interface SubprocessResult {
37
- readonly status: number | null;
38
- readonly stdout: string;
39
- readonly stderr: string;
40
- readonly error?: Error;
41
- }
42
- /**
43
- * Validate the agent name against the canonical ECC catalog.
44
- * Returns `null` if the agent is known; an error message otherwise.
45
- */
46
- export declare function validateEccAgent(agent: string): string | null;
47
- export declare function runEccAgent(input: EccAgentServiceInput, runner?: SubprocessRunner): EccAgentServiceResult;
@@ -1,143 +0,0 @@
1
- /**
2
- * ECC 64 agents soft-optional integration — `peaks agent run`.
3
- *
4
- * Per spec §7.2 line 818: "64 agents — Soft Optional — 装了 L3
5
- * 直接调; 不装 L3 退化到 peaks-loop 自有少数核心诊断". The
6
- * canonical ECC subprocess contract is:
7
- *
8
- * npx ecc consult "<topic>" --target claude
9
- * npx ecc agent run <agent-name> --target <path> --json
10
- *
11
- * The peaks-loop `peaks agent run <name> --target <path> --json`
12
- * CLI shells out to the second form. When ECC is missing OR
13
- * `agentShieldEnabled: false`, the audit completes with a
14
- * peaks-loop-only envelope.
15
- *
16
- * Mirrors `static-service.ts` (the ECC AgentShield wrapper from
17
- * L2.3 P2-a): same `subprocessRunner` injection point, same
18
- * 5-state reason enum, same soft-fail policy.
19
- */
20
- import { spawnSync } from 'node:child_process';
21
- /**
22
- * The 12 most-used ECC agents per the upstream
23
- * everything-claude-code catalog. The full 64-agent list is
24
- * available at runtime via `npx ecc agent list`; this static
25
- * subset covers the common L3-doctor dispatch paths.
26
- */
27
- export const CANONICAL_ECC_AGENTS = [
28
- { name: 'security-reviewer', description: 'Audit trust boundary + OWASP top-10' },
29
- { name: 'code-reviewer', description: 'General-purpose code review' },
30
- { name: 'typescript-reviewer', description: 'TypeScript-specific review' },
31
- { name: 'python-reviewer', description: 'Python-specific review' },
32
- { name: 'golang-reviewer', description: 'Go-specific review' },
33
- { name: 'rust-reviewer', description: 'Rust-specific review' },
34
- { name: 'java-reviewer', description: 'Java-specific review' },
35
- { name: 'cpp-reviewer', description: 'C/C++-specific review' },
36
- { name: 'backend-patterns', description: 'Backend service patterns' },
37
- { name: 'frontend-patterns', description: 'Frontend patterns' },
38
- { name: 'database-migrations', description: 'DB migration safety' },
39
- { name: 'deployment-patterns', description: 'Deployment / CI-CD patterns' },
40
- ];
41
- const ECC_DETECT_TIMEOUT_MS = 5000;
42
- const ECC_RUN_TIMEOUT_MS = 60000;
43
- const defaultSubprocessRunner = {
44
- run(command, args, timeoutMs) {
45
- try {
46
- const r = spawnSync(command, args, {
47
- timeout: timeoutMs,
48
- encoding: 'utf8',
49
- stdio: ['ignore', 'pipe', 'pipe'],
50
- maxBuffer: 16 * 1024 * 1024,
51
- });
52
- return {
53
- status: r.status,
54
- stdout: r.stdout ?? '',
55
- stderr: r.stderr ?? '',
56
- };
57
- }
58
- catch (err) {
59
- return {
60
- status: null,
61
- stdout: '',
62
- stderr: '',
63
- error: err,
64
- };
65
- }
66
- },
67
- };
68
- function isEccInstalled(runner) {
69
- const result = runner.run('npx', ['ecc', '--version'], ECC_DETECT_TIMEOUT_MS);
70
- if (result.error)
71
- return false;
72
- return result.status === 0;
73
- }
74
- /**
75
- * Validate the agent name against the canonical ECC catalog.
76
- * Returns `null` if the agent is known; an error message otherwise.
77
- */
78
- export function validateEccAgent(agent) {
79
- if (typeof agent !== 'string' || agent.length === 0) {
80
- return 'peaks agent run: agent name must be a non-empty string';
81
- }
82
- if (!/^[a-z][a-z0-9-]*$/.test(agent)) {
83
- return `peaks agent run: agent name "${agent}" is invalid (must match [a-z][a-z0-9-]*)`;
84
- }
85
- return null;
86
- }
87
- export function runEccAgent(input, runner = defaultSubprocessRunner) {
88
- const enableAgent = input.enableAgent === true;
89
- const warnings = [];
90
- let result = null;
91
- // Resolve the effective "should spawn" decision.
92
- // flagEnabled (CLI override) > preference (always-on for now; L3+ future) > false
93
- const shouldSpawn = enableAgent;
94
- const installed = isEccInstalled(runner);
95
- let reason;
96
- let spawned;
97
- if (!shouldSpawn) {
98
- reason = 'flag-disabled';
99
- spawned = false;
100
- }
101
- else if (!installed) {
102
- reason = 'flag-enabled-but-ecc-missing';
103
- spawned = false;
104
- warnings.push('`npx ecc --version` failed. Run `npx ecc --help` to install ECC, ' +
105
- 'then re-run `peaks agent run`. The peaks-loop native diagnostic ' +
106
- 'still runs via `peaks doctor scan`.');
107
- }
108
- else {
109
- reason = 'enabled-and-installed';
110
- spawned = true;
111
- const start = Date.now();
112
- const subResult = runner.run('npx', ['ecc', 'agent', 'run', input.agent, '--target', input.projectRoot, '--json'], ECC_RUN_TIMEOUT_MS);
113
- let parsed;
114
- let error;
115
- if (subResult.error) {
116
- error = subResult.error.message;
117
- }
118
- else if (subResult.status !== 0) {
119
- error = `ecc agent run exited with status ${subResult.status}: ${subResult.stderr}`;
120
- }
121
- else {
122
- try {
123
- parsed = JSON.parse(subResult.stdout);
124
- }
125
- catch {
126
- // Non-JSON output is allowed; peaks-loop surfaces the raw
127
- // stdout for the human reader and treats the run as
128
- // ok=true (the subprocess exited 0).
129
- parsed = undefined;
130
- }
131
- }
132
- result = {
133
- agent: input.agent,
134
- ok: error === undefined,
135
- stdout: subResult.stdout,
136
- stderr: subResult.stderr,
137
- durationMs: Date.now() - start,
138
- ...(parsed !== undefined ? { parsed } : {}),
139
- ...(error !== undefined ? { error } : {}),
140
- };
141
- }
142
- return { agent: input.agent, spawned, reason, result, warnings };
143
- }
@@ -1,48 +0,0 @@
1
- /**
2
- * Provider configs (MiniMax and other custom providers) live in
3
- * `~/.peaks/providers.json` — NOT in the slim `~/.peaks/config.json`.
4
- * The slim config only carries `version` + `ocr.llm.*`; provider
5
- * model selection, base URLs, and API keys live here in a dedicated
6
- * sidecar so the user has one discoverable location for runtime
7
- * model-routing settings.
8
- *
9
- * This module is the only owner of the providers.json file. Reads
10
- * from `~/.peaks/config.json.providers` are tolerated as a one-time
11
- * back-compat fallback so an unmigrated 1.x-style config still
12
- * returns the user's existing MiniMax configuration; the next
13
- * `setMiniMaxProviderConfig` call promotes the value into
14
- * `~/.peaks/providers.json` and the legacy `~/.peaks/config.json`
15
- * field is stripped by `loadGlobalConfig` governance.
16
- */
17
- export declare const MINIMAX_API_HOST = "api.minimaxi.com";
18
- export type MiniMaxProviderConfig = {
19
- model?: string;
20
- baseUrl?: string;
21
- apiKey?: string;
22
- };
23
- export type ProviderModelConfig = MiniMaxProviderConfig;
24
- export type ModelProviderId = 'minimax' | string;
25
- export type ExecutionModelId = string;
26
- export type ModelPreference = 'haiku' | 'sonnet' | 'opus' | 'minimax';
27
- export type ModelProviderConfig = {
28
- minimax?: MiniMaxProviderConfig;
29
- [providerId: string]: ProviderModelConfig | undefined;
30
- };
31
- export declare function isValidProviderBaseUrl(value: string): boolean;
32
- export declare function isValidMiniMaxBaseUrl(value: string): boolean;
33
- export declare function validateMiniMaxBaseUrl(value: unknown): void;
34
- export declare function validateProviderBaseUrl(value: unknown): void;
35
- export declare function validateModelProviderConfig(providers: ModelProviderConfig): void;
36
- export type MiniMaxProviderStatus = {
37
- provider: 'minimax';
38
- configured: boolean;
39
- baseUrlConfigured: boolean;
40
- apiKeyConfigured: boolean;
41
- storage: 'sidecar-v1';
42
- nextActions: string[];
43
- };
44
- export declare function getMiniMaxProviderConfig(): MiniMaxProviderConfig;
45
- export declare function getMiniMaxProviderStatus(): MiniMaxProviderStatus;
46
- export declare function setMiniMaxProviderConfig(input: MiniMaxProviderConfig): MiniMaxProviderStatus;
47
- export declare function getAllProviders(): ModelProviderConfig;
48
- export declare function setProviderConfig(providerId: string, input: ProviderModelConfig): ModelProviderConfig;
@@ -1,143 +0,0 @@
1
- import { SIDECAR_SCHEMA_VERSION, ensureSidecarVersion, providersConfigPath, readSidecarJson, writeSidecarJson } from './sidecar-store.js';
2
- /**
3
- * Provider configs (MiniMax and other custom providers) live in
4
- * `~/.peaks/providers.json` — NOT in the slim `~/.peaks/config.json`.
5
- * The slim config only carries `version` + `ocr.llm.*`; provider
6
- * model selection, base URLs, and API keys live here in a dedicated
7
- * sidecar so the user has one discoverable location for runtime
8
- * model-routing settings.
9
- *
10
- * This module is the only owner of the providers.json file. Reads
11
- * from `~/.peaks/config.json.providers` are tolerated as a one-time
12
- * back-compat fallback so an unmigrated 1.x-style config still
13
- * returns the user's existing MiniMax configuration; the next
14
- * `setMiniMaxProviderConfig` call promotes the value into
15
- * `~/.peaks/providers.json` and the legacy `~/.peaks/config.json`
16
- * field is stripped by `loadGlobalConfig` governance.
17
- */
18
- export const MINIMAX_API_HOST = 'api.minimaxi.com';
19
- function loadProvidersSidecar() {
20
- const fallback = { version: SIDECAR_SCHEMA_VERSION, providers: {} };
21
- const raw = readSidecarJson(providersConfigPath(), fallback);
22
- const version = ensureSidecarVersion(raw).version;
23
- const providers = sanitizeProviders(raw.providers);
24
- return { version, providers };
25
- }
26
- function saveProvidersSidecar(providers) {
27
- writeSidecarJson(providersConfigPath(), {
28
- version: SIDECAR_SCHEMA_VERSION,
29
- providers
30
- });
31
- }
32
- function sanitizeProviders(value) {
33
- if (value === null || typeof value !== 'object' || Array.isArray(value))
34
- return {};
35
- const out = {};
36
- for (const [id, cfg] of Object.entries(value)) {
37
- if (cfg === null || typeof cfg !== 'object' || Array.isArray(cfg))
38
- continue;
39
- const sanitized = sanitizeMiniMaxLike(cfg);
40
- if (Object.keys(sanitized).length > 0) {
41
- out[id] = sanitized;
42
- }
43
- }
44
- return out;
45
- }
46
- function sanitizeMiniMaxLike(value) {
47
- if (value === null || typeof value !== 'object' || Array.isArray(value))
48
- return {};
49
- const v = value;
50
- const out = {};
51
- if (typeof v.model === 'string' && v.model.trim().length > 0)
52
- out.model = v.model.trim();
53
- if (typeof v.baseUrl === 'string' && v.baseUrl.length > 0)
54
- out.baseUrl = v.baseUrl;
55
- if (typeof v.apiKey === 'string' && v.apiKey.length > 0)
56
- out.apiKey = v.apiKey;
57
- return out;
58
- }
59
- export function isValidProviderBaseUrl(value) {
60
- try {
61
- const url = new URL(value);
62
- return url.protocol === 'https:' && url.username.length === 0 && url.password.length === 0 && url.search.length === 0 && url.hash.length === 0;
63
- }
64
- catch {
65
- return false;
66
- }
67
- }
68
- export function isValidMiniMaxBaseUrl(value) {
69
- try {
70
- const url = new URL(value);
71
- 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;
72
- }
73
- catch {
74
- return false;
75
- }
76
- }
77
- export function validateMiniMaxBaseUrl(value) {
78
- if (value !== undefined && (typeof value !== 'string' || !isValidMiniMaxBaseUrl(value))) {
79
- throw new Error('MiniMax base URL must be the MiniMax HTTPS endpoint without embedded credentials');
80
- }
81
- }
82
- export function validateProviderBaseUrl(value) {
83
- if (value !== undefined && (typeof value !== 'string' || !isValidProviderBaseUrl(value))) {
84
- throw new Error('Provider base URL must be HTTPS without embedded credentials, query, or fragment');
85
- }
86
- }
87
- export function validateModelProviderConfig(providers) {
88
- validateMiniMaxBaseUrl(providers.minimax?.baseUrl);
89
- for (const [providerId, provider] of Object.entries(providers)) {
90
- if (providerId !== 'minimax') {
91
- validateProviderBaseUrl(provider?.baseUrl);
92
- }
93
- }
94
- }
95
- function createMiniMaxProviderStatus(config) {
96
- const baseUrl = config.baseUrl?.trim();
97
- const apiKey = config.apiKey?.trim();
98
- const baseUrlConfigured = typeof baseUrl === 'string' && baseUrl.length > 0 && isValidMiniMaxBaseUrl(baseUrl);
99
- const apiKeyConfigured = typeof apiKey === 'string' && apiKey.length > 0;
100
- return {
101
- provider: 'minimax',
102
- configured: baseUrlConfigured && apiKeyConfigured,
103
- baseUrlConfigured,
104
- apiKeyConfigured,
105
- storage: 'sidecar-v1',
106
- nextActions: baseUrlConfigured && apiKeyConfigured ? [] : ['Export MINIMAX_API_KEY and rerun peaks config provider minimax set --base-url <url>']
107
- };
108
- }
109
- export function getMiniMaxProviderConfig() {
110
- return loadProvidersSidecar().providers.minimax ?? {};
111
- }
112
- export function getMiniMaxProviderStatus() {
113
- return createMiniMaxProviderStatus(getMiniMaxProviderConfig());
114
- }
115
- export function setMiniMaxProviderConfig(input) {
116
- validateMiniMaxBaseUrl(input.baseUrl);
117
- const current = loadProvidersSidecar().providers;
118
- const next = {
119
- ...current,
120
- minimax: {
121
- ...current.minimax,
122
- ...input
123
- }
124
- };
125
- validateMiniMaxBaseUrl(next.minimax?.baseUrl);
126
- saveProvidersSidecar(next);
127
- return createMiniMaxProviderStatus(next.minimax ?? {});
128
- }
129
- export function getAllProviders() {
130
- return loadProvidersSidecar().providers;
131
- }
132
- export function setProviderConfig(providerId, input) {
133
- if (providerId === 'minimax') {
134
- throw new Error('Use setMiniMaxProviderConfig for the minimax provider');
135
- }
136
- validateProviderBaseUrl(input.baseUrl);
137
- const current = loadProvidersSidecar().providers;
138
- const sanitized = sanitizeMiniMaxLike(input);
139
- const next = { ...current, [providerId]: sanitized };
140
- validateProviderBaseUrl(sanitized.baseUrl);
141
- saveProvidersSidecar(next);
142
- return next;
143
- }
@@ -1,27 +0,0 @@
1
- /** Build the canonical artifact path for a given session/rid/role/idx/ext. */
2
- export declare function artifactPath(projectRoot: string, sid: string, rid: string, role: string, idx: number, ext?: string): string;
3
- /** Build the canonical shared channel path. */
4
- export declare function sharedChannelPath(projectRoot: string, sid: string, rid: string, batchId: string): string;
5
- /**
6
- * Assert that `artifactPath` lives under
7
- * `projectRoot/.peaks/_sub_agents/<sid>/artifacts/`. Rejects
8
- * symlink/junction escapes and `..` segments.
9
- *
10
- * Throws an Error with `.code = 'INVALID_ARTIFACT_PATH'` on rejection.
11
- */
12
- export declare function assertSafeArtifactPath(artifactPathInput: string, projectRoot: string): string;
13
- /**
14
- * Assert that `channelPath` lives under
15
- * `projectRoot/.peaks/_sub_agents/<sid>/shared/`. Same R-2 logic as
16
- * `assertSafeArtifactPath` but with a different canonical subdir.
17
- *
18
- * Throws an Error with `.code = 'INVALID_SHARED_CHANNEL_PATH'` on rejection.
19
- */
20
- export declare function assertSafeSharedChannelPath(channelPathInput: string, projectRoot: string): string;
21
- /**
22
- * Soft-warn check on the artifact file name pattern. Returns null if
23
- * the name matches `<rid>-<role>-<idx>.<ext>`, otherwise returns a
24
- * warning string. Does NOT reject (the path is still in the canonical
25
- * dir; the warning is for human/audit readability per G7.4.c).
26
- */
27
- export declare function checkArtifactNameConvention(artifactPathInput: string): string | null;