peaks-loop 4.0.0-beta.9 → 4.0.3

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 +572 -234
  2. package/README-en.md +67 -30
  3. package/README.md +67 -30
  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 +91 -51
  461. package/scripts/clean-dist.mjs +31 -1
  462. package/scripts/copy-templates.mjs +16 -0
  463. package/scripts/sync-version.mjs +53 -2
  464. package/skills/bee/peaks-perf-audit/SKILL.md +17 -0
  465. package/skills/bee/peaks-prd/SKILL.md +16 -0
  466. package/skills/bee/peaks-prd/test-prompts.json +12 -0
  467. package/skills/bee/peaks-qa/SKILL.md +16 -1
  468. package/skills/bee/peaks-qa/references/qa-sub-agent-dispatch.md +22 -0
  469. package/skills/bee/peaks-qa/test-prompts.json +12 -0
  470. package/skills/bee/peaks-rd/SKILL.md +29 -20
  471. package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +39 -0
  472. package/skills/bee/peaks-rd/test-prompts.json +12 -0
  473. package/skills/bee/peaks-reviewer/SKILL.md +17 -0
  474. package/skills/bee/peaks-sc/SKILL.md +16 -0
  475. package/skills/bee/peaks-security-audit/SKILL.md +17 -0
  476. package/skills/bee/peaks-txt/SKILL.md +16 -0
  477. package/skills/bee/peaks-txt/test-prompts.json +12 -0
  478. package/skills/bee/peaks-ui/SKILL.md +49 -43
  479. package/skills/bee/peaks-ui/test-prompts.json +12 -0
  480. package/skills/peaks-code/SKILL.md +54 -109
  481. package/skills/peaks-code/references/boundaries.md +15 -1
  482. package/skills/peaks-code/references/cron-scheduler-deployment.md +313 -0
  483. package/skills/peaks-code/references/external-skill-invocation.md +27 -0
  484. package/skills/peaks-code/references/lease-dashboard.html +224 -0
  485. package/skills/peaks-code/references/lease-stats.sample.json +26 -0
  486. package/skills/peaks-code/references/peaks-worktree-l2-enforcers.md +208 -0
  487. package/skills/peaks-code/references/periodic-checkpoint.md +4 -4
  488. package/skills/peaks-code/references/runbook.md +63 -1
  489. package/skills/peaks-code/references/startup-sequence.md +110 -0
  490. package/skills/peaks-code/references/step-0-8-gate.md +1 -1
  491. package/skills/peaks-code/references/sub-agent-dispatch.md +92 -1
  492. package/skills/peaks-code/references/worktree-governance.md +123 -0
  493. package/skills/peaks-code/test-prompts.json +12 -0
  494. package/skills/peaks-doctor/SKILL.md +1 -1
  495. package/skills/peaks-ide/SKILL.md +1 -1
  496. package/skills/peaks-solo/SKILL.md +21 -0
  497. package/skills/peaks-solo/references/triage-decision-table.md +6 -0
  498. package/skills/peaks-sop/test-prompts.json +17 -0
  499. package/dist/cli/commands/agent-commands.d.ts +0 -20
  500. package/dist/cli/commands/agent-commands.js +0 -48
  501. package/dist/cli/commands/classify-classify-commands.d.ts +0 -19
  502. package/dist/cli/commands/classify-classify-commands.js +0 -151
  503. package/dist/cli/commands/contract-commands.d.ts +0 -26
  504. package/dist/cli/commands/contract-commands.js +0 -114
  505. package/dist/cli/commands/session-auto-compact-hook-command.d.ts +0 -37
  506. package/dist/cli/commands/session-auto-compact-hook-command.js +0 -127
  507. package/dist/cli/commands/worker-commands.d.ts +0 -3
  508. package/dist/cli/commands/worker-commands.js +0 -52
  509. package/dist/services/agent/ecc-agent-service.d.ts +0 -47
  510. package/dist/services/agent/ecc-agent-service.js +0 -143
  511. package/dist/services/config/provider-service.d.ts +0 -48
  512. package/dist/services/config/provider-service.js +0 -143
  513. package/dist/services/context/dispatch-context-guard.d.ts +0 -27
  514. package/dist/services/context/dispatch-context-guard.js +0 -192
  515. package/dist/services/context/shared-channel.d.ts +0 -93
  516. package/dist/services/context/shared-channel.js +0 -308
  517. package/dist/services/filesystem/file-lock.d.ts +0 -11
  518. package/dist/services/filesystem/file-lock.js +0 -152
  519. package/dist/services/mut/assert-scanner.d.ts +0 -6
  520. package/dist/services/mut/assert-scanner.js +0 -116
  521. package/dist/services/mut/index.d.ts +0 -8
  522. package/dist/services/mut/index.js +0 -7
  523. package/dist/services/mut/mut-runner.d.ts +0 -39
  524. package/dist/services/mut/mut-runner.js +0 -29
  525. package/dist/services/mut/production-stryker.d.ts +0 -2
  526. package/dist/services/mut/production-stryker.js +0 -75
  527. package/dist/services/mut/report-builder.d.ts +0 -11
  528. package/dist/services/mut/report-builder.js +0 -110
  529. package/dist/services/mut/report-loader.d.ts +0 -31
  530. package/dist/services/mut/report-loader.js +0 -78
  531. package/dist/services/mut/thresholds.d.ts +0 -21
  532. package/dist/services/mut/thresholds.js +0 -22
  533. package/dist/services/mut/types.d.ts +0 -336
  534. package/dist/services/mut/types.js +0 -59
  535. package/dist/services/providers/minimax-provider-service.d.ts +0 -24
  536. package/dist/services/providers/minimax-provider-service.js +0 -143
  537. package/dist/services/providers/minimax-worker-service.d.ts +0 -21
  538. package/dist/services/providers/minimax-worker-service.js +0 -83
  539. package/dist/shared/fs.d.ts +0 -4
  540. package/dist/shared/fs.js +0 -26
  541. package/dist/shared/paths.d.ts +0 -6
  542. package/dist/shared/paths.js +0 -50
  543. package/dist/shared/result.d.ts +0 -22
  544. package/dist/shared/result.js +0 -46
  545. package/dist/shared/version.d.ts +0 -1
  546. package/dist/shared/version.js +0 -1
  547. package/examples/video-demo/README.md +0 -142
  548. package/examples/video-demo/out/en-closing-960.png +0 -0
  549. package/examples/video-demo/out/zh-closing-960.png +0 -0
  550. package/examples/video-demo/preview/peaks-loop-demo-en.mp4 +0 -0
  551. package/examples/video-demo/preview/peaks-loop-demo.mp4 +0 -0
  552. /package/dist/services/{job/job-resource-snapshot.js → job-snapshot/snapshot.js} +0 -0
@@ -0,0 +1,22 @@
1
+ /**
2
+ * peaks-loop-doctor area (consolidated into peaks-loop).
3
+ *
4
+ * Re-exports the runDoctor check pipeline plus the public type
5
+ * contract (DoctorCheck / DoctorReport / DoctorOptions and the
6
+ * injectable probe types).
7
+ *
8
+ * Main peaks-loop package consumes via `workspace:*` dep:
9
+ *
10
+ * import { runDoctor } from './doctor/index.js';
11
+ *
12
+ * The doctor service is probe-driven: cross-domain utilities
13
+ * (loadSkillRegistry, getSkillPresence, planStatusLineInstall,
14
+ * findProjectRoot, isValidSessionId) are injected at the
15
+ * call-site in main `src/cli/commands/core/doctor-command.ts`,
16
+ * so this package stays standalone and does NOT depend on
17
+ * the main peaks-loop package (avoiding circular deps).
18
+ *
19
+ * See .peaks/_runtime/2026-07-17-session-1d5ac0/rd/slice-3b-doctor.md
20
+ * for the slice-3b Option C decision rationale.
21
+ */
22
+ export { runDoctor, isWorkspaceInitializedAt, compareDistVersion, inspectWorkspaceLayout, collectGateguardEntries, type DoctorCheck, type DoctorReport, type DoctorOptions, type CodegraphCapabilityProbe, type DistVersionComparison, type DistVersionProbe, type WorkspaceLayoutInspection, type WorkspaceLayoutProbe, type GateguardHookLocation, type GateguardProbeResult, type GateguardProbe, } from './doctor-service.js';
@@ -0,0 +1,22 @@
1
+ /**
2
+ * peaks-loop-doctor area (consolidated into peaks-loop).
3
+ *
4
+ * Re-exports the runDoctor check pipeline plus the public type
5
+ * contract (DoctorCheck / DoctorReport / DoctorOptions and the
6
+ * injectable probe types).
7
+ *
8
+ * Main peaks-loop package consumes via `workspace:*` dep:
9
+ *
10
+ * import { runDoctor } from './doctor/index.js';
11
+ *
12
+ * The doctor service is probe-driven: cross-domain utilities
13
+ * (loadSkillRegistry, getSkillPresence, planStatusLineInstall,
14
+ * findProjectRoot, isValidSessionId) are injected at the
15
+ * call-site in main `src/cli/commands/core/doctor-command.ts`,
16
+ * so this package stays standalone and does NOT depend on
17
+ * the main peaks-loop package (avoiding circular deps).
18
+ *
19
+ * See .peaks/_runtime/2026-07-17-session-1d5ac0/rd/slice-3b-doctor.md
20
+ * for the slice-3b Option C decision rationale.
21
+ */
22
+ export { runDoctor, isWorkspaceInitializedAt, compareDistVersion, inspectWorkspaceLayout, collectGateguardEntries, } from './doctor-service.js';
@@ -0,0 +1,71 @@
1
+ export type ShellKind = 'bash' | 'pwsh' | 'powershell' | 'cmd' | 'unknown';
2
+ export interface ShellProbeReport {
3
+ /** Whether a usable bash was located. `false` ⇒ caller MUST NOT silently fall back to PowerShell. */
4
+ readonly available: boolean;
5
+ /** The recommended shell command name. `'bash'` on success, `'pwsh'` / `'powershell'` only as an explicit non-silent fallback (with available=false). */
6
+ readonly shell: ShellKind;
7
+ /** Absolute path to the resolved binary, when found. `null` otherwise. */
8
+ readonly path: string | null;
9
+ /**
10
+ * Why the probe returned what it returned. Always populated —
11
+ * `null` reasons are forbidden. `'unavailable'` carries a single-
12
+ * line explanation the orchestrator can render to the user.
13
+ */
14
+ readonly reason: string;
15
+ /** Wall-clock duration of the probe (ms). Useful for the dispatch envelope's `notes[]`. */
16
+ readonly elapsedMs: number;
17
+ /** Probe platform — `win32` triggers the Git-Bash preference. */
18
+ readonly platform: NodeJS.Platform;
19
+ }
20
+ export interface ShellProbeOptions {
21
+ /**
22
+ * Override `process.platform`. Tests use this to simulate Windows
23
+ * hosts on Linux CI (and vice versa) without mutating process.
24
+ */
25
+ readonly platform?: NodeJS.Platform;
26
+ /**
27
+ * Override the runner that performs the `which bash` / `where
28
+ * bash` probe. The default delegates to `child_process.spawn`; the
29
+ * test seam injects a fake.
30
+ */
31
+ readonly runner?: ShellProbeRunner;
32
+ /**
33
+ * Override the process env. Default: process.env.
34
+ */
35
+ readonly env?: NodeJS.ProcessEnv;
36
+ /**
37
+ * Probe timeout (ms). Default: 3000. A sub-agent that hangs the
38
+ * probe would itself be a stall; bounded so the call site fails
39
+ * fast and the orchestrator can surface `available: false`.
40
+ */
41
+ readonly timeoutMs?: number;
42
+ /**
43
+ * Wall clock for tests.
44
+ */
45
+ readonly now?: () => number;
46
+ /**
47
+ * Test seam: override the literal-path probe. The default
48
+ * delegates to `node:fs#existsSync`; the test seam injects a
49
+ * fake so the Windows-no-bash scenario can be exercised on a
50
+ * host that has Git Bash installed (and vice versa).
51
+ */
52
+ readonly probeFile?: (absPath: string) => Promise<boolean> | boolean;
53
+ }
54
+ export interface ShellProbeRunner {
55
+ /**
56
+ * Run a command. Returns the captured stdout on success and
57
+ * throws (or returns `null`) on failure. The probe treats
58
+ * `null`-returns the same as thrown errors.
59
+ */
60
+ run(command: string, args: readonly string[], opts: {
61
+ timeoutMs: number;
62
+ }): Promise<{
63
+ stdout: string;
64
+ } | null>;
65
+ }
66
+ /**
67
+ * Probe the host shell. The returned report is the single source of
68
+ * truth: callers MUST surface `reason` when `available: false` rather
69
+ * than silently falling back to PowerShell.
70
+ */
71
+ export declare function probeShell(options?: ShellProbeOptions): Promise<ShellProbeReport>;
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Slice 2026-07-29-dispatch-stall-governance / S6 — typed shell probe.
3
+ *
4
+ * Codifies the prose-only red rule recorded in
5
+ * .peaks/memory/2026-07-27-windows-shell-pref.md: on Windows, a
6
+ * sub-agent must probe `which bash` and prefer Git Bash; an
7
+ * unavailable bash must surface as an explicit `ShellProbeReport`
8
+ * (with `available: false` + a `reason`), not as a silent fallback
9
+ * to PowerShell.
10
+ *
11
+ * Pre-S6, the rule was *only* documented in `.peaks/memory/`; nothing
12
+ * in the code path enforced it, so a sub-agent could silently land on
13
+ * PowerShell, emit a bash-syntax command, and hang on a parser error —
14
+ * which the orchestrator would observe as a stall (PRD §1.6).
15
+ *
16
+ * Public surface:
17
+ * - `probeShell(opts)` → `Promise<ShellProbeReport>`
18
+ * - `ShellProbeReport` (typed, JSON-serializable)
19
+ * - `ShellProbeRunner` (test seam: inject a fake runner)
20
+ *
21
+ * The probe is **lazy**: it only spawns a process when the caller
22
+ * actually invokes `probeShell`. Calling `formatTestToolDetection()`
23
+ * or any other dispatch hot path does NOT trigger a shell probe. The
24
+ * probe is opt-in at the dispatch / tool boundary; we do NOT
25
+ * broadcast-probe every dispatch (that would add a 50–200ms hit to
26
+ * the hot path).
27
+ *
28
+ * On non-Windows platforms the probe is a passthrough: `available:
29
+ * true`, `shell: 'bash'`, `reason: 'non-windows passthrough'`. Linux
30
+ * and macOS hosts already have a usable shell, so the Windows-only
31
+ * Git-Bash probe is unnecessary.
32
+ */
33
+ import { spawn } from 'node:child_process';
34
+ const DEFAULT_TIMEOUT_MS = 3_000;
35
+ /** Default runner: child_process.spawn, with a 3s ceiling. */
36
+ const defaultRunner = {
37
+ async run(command, args, opts) {
38
+ return await new Promise((resolveRun) => {
39
+ let resolved = false;
40
+ const finish = (value) => {
41
+ if (resolved)
42
+ return;
43
+ resolved = true;
44
+ resolveRun(value);
45
+ };
46
+ try {
47
+ const child = spawn(command, args, { stdio: ['ignore', 'pipe', 'pipe'] });
48
+ let stdout = '';
49
+ child.stdout?.on('data', (chunk) => {
50
+ stdout += chunk.toString('utf8');
51
+ });
52
+ child.on('error', () => finish(null));
53
+ child.on('close', (code) => {
54
+ if (code === 0 && stdout.trim().length > 0) {
55
+ finish({ stdout });
56
+ }
57
+ else {
58
+ finish(null);
59
+ }
60
+ });
61
+ const t = setTimeout(() => {
62
+ child.kill();
63
+ finish(null);
64
+ }, opts.timeoutMs);
65
+ t.unref?.();
66
+ }
67
+ catch {
68
+ finish(null);
69
+ }
70
+ });
71
+ }
72
+ };
73
+ /**
74
+ * Probe the host shell. The returned report is the single source of
75
+ * truth: callers MUST surface `reason` when `available: false` rather
76
+ * than silently falling back to PowerShell.
77
+ */
78
+ export async function probeShell(options = {}) {
79
+ const platform = options.platform ?? process.platform;
80
+ const runner = options.runner ?? defaultRunner;
81
+ const env = options.env ?? process.env;
82
+ const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
83
+ const now = options.now ?? (() => Date.now());
84
+ const probeFileFn = options.probeFile ?? defaultProbeFile;
85
+ const startedAt = now();
86
+ if (platform !== 'win32') {
87
+ return {
88
+ available: true,
89
+ shell: 'bash',
90
+ path: '/bin/bash',
91
+ reason: 'non-windows passthrough',
92
+ elapsedMs: now() - startedAt,
93
+ platform
94
+ };
95
+ }
96
+ // 1. Prefer Git Bash explicitly. Git for Windows installs at
97
+ // `C:\Program Files\Git\bin\bash.exe` (or `C:\nvm4w\nodejs\git-
98
+ // bash.exe` on the nvm4w layout). The env var `PEAKS_GIT_BASH`
99
+ // lets an operator pin a non-default path without code change.
100
+ const pinnedGitBash = env.PEAKS_GIT_BASH;
101
+ const gitBashCandidates = pinnedGitBash
102
+ ? [pinnedGitBash]
103
+ : [
104
+ 'C:\\Program Files\\Git\\bin\\bash.exe',
105
+ 'C:\\Program Files (x86)\\Git\\bin\\bash.exe',
106
+ 'C:\\nvm4w\\nodejs\\git-bash.exe',
107
+ 'C:\\Program Files\\Git\\usr\\bin\\bash.exe'
108
+ ];
109
+ for (const candidate of gitBashCandidates) {
110
+ if (await probeFileFn(candidate)) {
111
+ return {
112
+ available: true,
113
+ shell: 'bash',
114
+ path: candidate,
115
+ reason: 'Git Bash located at pinned or default path',
116
+ elapsedMs: now() - startedAt,
117
+ platform
118
+ };
119
+ }
120
+ }
121
+ // 2. Fall back to PATH lookup (`where bash` on Windows). This
122
+ // catches portable Git installs that land in a non-default
123
+ // directory.
124
+ const where = await runner.run('where', ['bash'], { timeoutMs });
125
+ if (where !== null && where.stdout.trim().length > 0) {
126
+ const first = where.stdout.split(/\r?\n/).map((l) => l.trim()).find((l) => l.length > 0);
127
+ if (first !== undefined) {
128
+ return {
129
+ available: true,
130
+ shell: 'bash',
131
+ path: first,
132
+ reason: 'bash located via `where bash` (PATH lookup)',
133
+ elapsedMs: now() - startedAt,
134
+ platform
135
+ };
136
+ }
137
+ }
138
+ // 3. Explicit unavailable report — the orchestrator MUST surface
139
+ // this rather than silently falling back to PowerShell.
140
+ return {
141
+ available: false,
142
+ shell: 'unknown',
143
+ path: null,
144
+ reason: 'No bash found on this Windows host. Install Git for Windows ' +
145
+ '(https://git-scm.com/download/win) or set PEAKS_GIT_BASH to the ' +
146
+ 'absolute path of a bash.exe binary. Per .peaks/memory/2026-07-27-' +
147
+ 'windows-shell-pref.md, PowerShell is NOT a silent fallback.',
148
+ elapsedMs: now() - startedAt,
149
+ platform
150
+ };
151
+ }
152
+ /**
153
+ * Default literal-path probe. Uses Node's `fs.existsSync` (a single
154
+ * stat call, no spawn). Tests inject a custom `probeFile` through
155
+ * `ShellProbeOptions.probeFile` to simulate a no-bash Windows host
156
+ * without needing a host-specific override.
157
+ */
158
+ async function defaultProbeFile(absPath) {
159
+ const { existsSync } = await import('node:fs');
160
+ return existsSync(absPath);
161
+ }
@@ -73,12 +73,12 @@ export declare const EvolutionProposalInputSchema: z.ZodObject<{
73
73
  red_lines: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
74
74
  source_traces: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
75
75
  }, "strip", z.ZodTypeAny, {
76
- diff: Record<string, unknown>;
77
- target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
76
+ target_kind: "loop" | "bee" | "gate" | "policy" | "evaluator";
78
77
  target_release_id: string;
79
78
  optimization_dimension: string;
80
79
  before_snapshot: Record<string, unknown>;
81
80
  after_snapshot: Record<string, unknown>;
81
+ diff: Record<string, unknown>;
82
82
  before_score: number;
83
83
  after_score: number;
84
84
  score_delta_min: number;
@@ -89,7 +89,7 @@ export declare const EvolutionProposalInputSchema: z.ZodObject<{
89
89
  red_lines: string[];
90
90
  source_traces: string[];
91
91
  }, {
92
- target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
92
+ target_kind: "loop" | "bee" | "gate" | "policy" | "evaluator";
93
93
  target_release_id: string;
94
94
  optimization_dimension: string;
95
95
  before_score: number;
@@ -97,9 +97,9 @@ export declare const EvolutionProposalInputSchema: z.ZodObject<{
97
97
  author_id: string;
98
98
  single_object: true;
99
99
  single_optimization_dimension: true;
100
- diff?: Record<string, unknown> | undefined;
101
100
  before_snapshot?: Record<string, unknown> | undefined;
102
101
  after_snapshot?: Record<string, unknown> | undefined;
102
+ diff?: Record<string, unknown> | undefined;
103
103
  score_delta_min?: number | undefined;
104
104
  rubric?: Record<string, unknown> | undefined;
105
105
  red_lines?: string[] | undefined;
@@ -153,13 +153,13 @@ export declare const EvolutionProposalSchema: z.ZodObject<{
153
153
  }, "strip", z.ZodTypeAny, {
154
154
  schema_version: "peaks.evolution/1";
155
155
  id: string;
156
- diff: Record<string, unknown>;
157
156
  created_at: string;
158
- target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
157
+ target_kind: "loop" | "bee" | "gate" | "policy" | "evaluator";
159
158
  target_release_id: string;
160
159
  optimization_dimension: string;
161
160
  before_snapshot: Record<string, unknown>;
162
161
  after_snapshot: Record<string, unknown>;
162
+ diff: Record<string, unknown>;
163
163
  before_score: number;
164
164
  after_score: number;
165
165
  score_delta_min: number;
@@ -175,7 +175,7 @@ export declare const EvolutionProposalSchema: z.ZodObject<{
175
175
  }, {
176
176
  id: string;
177
177
  created_at: string;
178
- target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
178
+ target_kind: "loop" | "bee" | "gate" | "policy" | "evaluator";
179
179
  target_release_id: string;
180
180
  optimization_dimension: string;
181
181
  before_score: number;
@@ -187,9 +187,9 @@ export declare const EvolutionProposalSchema: z.ZodObject<{
187
187
  target_count: 1;
188
188
  score_delta: number;
189
189
  schema_version?: "peaks.evolution/1" | undefined;
190
- diff?: Record<string, unknown> | undefined;
191
190
  before_snapshot?: Record<string, unknown> | undefined;
192
191
  after_snapshot?: Record<string, unknown> | undefined;
192
+ diff?: Record<string, unknown> | undefined;
193
193
  score_delta_min?: number | undefined;
194
194
  rubric?: Record<string, unknown> | undefined;
195
195
  red_lines?: string[] | undefined;
@@ -229,10 +229,10 @@ export declare const RegressionSkepticResultSchema: z.ZodObject<{
229
229
  safetyRegressionRisks: string[];
230
230
  blocker?: string | undefined;
231
231
  }, {
232
- blocker?: string | undefined;
233
232
  driftRisks?: string[] | undefined;
234
233
  overfitRisks?: string[] | undefined;
235
234
  safetyRegressionRisks?: string[] | undefined;
235
+ blocker?: string | undefined;
236
236
  }>;
237
237
  export type RegressionSkepticResult = z.infer<typeof RegressionSkepticResultSchema>;
238
238
  /**
@@ -292,13 +292,13 @@ export declare const EvolutionEvaluationInputSchema: z.ZodObject<{
292
292
  }, "strip", z.ZodTypeAny, {
293
293
  schema_version: "peaks.evolution/1";
294
294
  id: string;
295
- diff: Record<string, unknown>;
296
295
  created_at: string;
297
- target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
296
+ target_kind: "loop" | "bee" | "gate" | "policy" | "evaluator";
298
297
  target_release_id: string;
299
298
  optimization_dimension: string;
300
299
  before_snapshot: Record<string, unknown>;
301
300
  after_snapshot: Record<string, unknown>;
301
+ diff: Record<string, unknown>;
302
302
  before_score: number;
303
303
  after_score: number;
304
304
  score_delta_min: number;
@@ -314,7 +314,7 @@ export declare const EvolutionEvaluationInputSchema: z.ZodObject<{
314
314
  }, {
315
315
  id: string;
316
316
  created_at: string;
317
- target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
317
+ target_kind: "loop" | "bee" | "gate" | "policy" | "evaluator";
318
318
  target_release_id: string;
319
319
  optimization_dimension: string;
320
320
  before_score: number;
@@ -326,9 +326,9 @@ export declare const EvolutionEvaluationInputSchema: z.ZodObject<{
326
326
  target_count: 1;
327
327
  score_delta: number;
328
328
  schema_version?: "peaks.evolution/1" | undefined;
329
- diff?: Record<string, unknown> | undefined;
330
329
  before_snapshot?: Record<string, unknown> | undefined;
331
330
  after_snapshot?: Record<string, unknown> | undefined;
331
+ diff?: Record<string, unknown> | undefined;
332
332
  score_delta_min?: number | undefined;
333
333
  rubric?: Record<string, unknown> | undefined;
334
334
  red_lines?: string[] | undefined;
@@ -360,10 +360,10 @@ export declare const EvolutionEvaluationInputSchema: z.ZodObject<{
360
360
  safetyRegressionRisks: string[];
361
361
  blocker?: string | undefined;
362
362
  }, {
363
- blocker?: string | undefined;
364
363
  driftRisks?: string[] | undefined;
365
364
  overfitRisks?: string[] | undefined;
366
365
  safetyRegressionRisks?: string[] | undefined;
366
+ blocker?: string | undefined;
367
367
  }>;
368
368
  verdict: z.ZodEnum<["keep", "revert", "needs-user-decision"]>;
369
369
  user_confirmation_pointer: z.ZodOptional<z.ZodString>;
@@ -373,16 +373,17 @@ export declare const EvolutionEvaluationInputSchema: z.ZodObject<{
373
373
  }, "strip", z.ZodTypeAny, {
374
374
  schema_version: "peaks.evolution/1";
375
375
  id: string;
376
+ created_at: string;
376
377
  proposal: {
377
378
  schema_version: "peaks.evolution/1";
378
379
  id: string;
379
- diff: Record<string, unknown>;
380
380
  created_at: string;
381
- target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
381
+ target_kind: "loop" | "bee" | "gate" | "policy" | "evaluator";
382
382
  target_release_id: string;
383
383
  optimization_dimension: string;
384
384
  before_snapshot: Record<string, unknown>;
385
385
  after_snapshot: Record<string, unknown>;
386
+ diff: Record<string, unknown>;
386
387
  before_score: number;
387
388
  after_score: number;
388
389
  score_delta_min: number;
@@ -396,8 +397,6 @@ export declare const EvolutionEvaluationInputSchema: z.ZodObject<{
396
397
  target_count: 1;
397
398
  score_delta: number;
398
399
  };
399
- created_at: string;
400
- verdict: "revert" | "keep" | "needs-user-decision";
401
400
  evaluator_id: string;
402
401
  skeptic_id: string;
403
402
  evaluator_result: {
@@ -411,14 +410,16 @@ export declare const EvolutionEvaluationInputSchema: z.ZodObject<{
411
410
  safetyRegressionRisks: string[];
412
411
  blocker?: string | undefined;
413
412
  };
413
+ verdict: "keep" | "revert" | "needs-user-decision";
414
414
  user_confirmation_pointer?: string | undefined;
415
415
  brief_pointer?: string | undefined;
416
416
  }, {
417
417
  id: string;
418
+ created_at: string;
418
419
  proposal: {
419
420
  id: string;
420
421
  created_at: string;
421
- target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
422
+ target_kind: "loop" | "bee" | "gate" | "policy" | "evaluator";
422
423
  target_release_id: string;
423
424
  optimization_dimension: string;
424
425
  before_score: number;
@@ -430,16 +431,14 @@ export declare const EvolutionEvaluationInputSchema: z.ZodObject<{
430
431
  target_count: 1;
431
432
  score_delta: number;
432
433
  schema_version?: "peaks.evolution/1" | undefined;
433
- diff?: Record<string, unknown> | undefined;
434
434
  before_snapshot?: Record<string, unknown> | undefined;
435
435
  after_snapshot?: Record<string, unknown> | undefined;
436
+ diff?: Record<string, unknown> | undefined;
436
437
  score_delta_min?: number | undefined;
437
438
  rubric?: Record<string, unknown> | undefined;
438
439
  red_lines?: string[] | undefined;
439
440
  source_traces?: string[] | undefined;
440
441
  };
441
- created_at: string;
442
- verdict: "revert" | "keep" | "needs-user-decision";
443
442
  evaluator_id: string;
444
443
  skeptic_id: string;
445
444
  evaluator_result: {
@@ -448,11 +447,12 @@ export declare const EvolutionEvaluationInputSchema: z.ZodObject<{
448
447
  riskTags?: string[] | undefined;
449
448
  };
450
449
  skeptic_result: {
451
- blocker?: string | undefined;
452
450
  driftRisks?: string[] | undefined;
453
451
  overfitRisks?: string[] | undefined;
454
452
  safetyRegressionRisks?: string[] | undefined;
453
+ blocker?: string | undefined;
455
454
  };
455
+ verdict: "keep" | "revert" | "needs-user-decision";
456
456
  schema_version?: "peaks.evolution/1" | undefined;
457
457
  user_confirmation_pointer?: string | undefined;
458
458
  brief_pointer?: string | undefined;
@@ -505,13 +505,13 @@ export declare const EvolutionEvaluationSchema: z.ZodObject<{
505
505
  }, "strip", z.ZodTypeAny, {
506
506
  schema_version: "peaks.evolution/1";
507
507
  id: string;
508
- diff: Record<string, unknown>;
509
508
  created_at: string;
510
- target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
509
+ target_kind: "loop" | "bee" | "gate" | "policy" | "evaluator";
511
510
  target_release_id: string;
512
511
  optimization_dimension: string;
513
512
  before_snapshot: Record<string, unknown>;
514
513
  after_snapshot: Record<string, unknown>;
514
+ diff: Record<string, unknown>;
515
515
  before_score: number;
516
516
  after_score: number;
517
517
  score_delta_min: number;
@@ -527,7 +527,7 @@ export declare const EvolutionEvaluationSchema: z.ZodObject<{
527
527
  }, {
528
528
  id: string;
529
529
  created_at: string;
530
- target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
530
+ target_kind: "loop" | "bee" | "gate" | "policy" | "evaluator";
531
531
  target_release_id: string;
532
532
  optimization_dimension: string;
533
533
  before_score: number;
@@ -539,9 +539,9 @@ export declare const EvolutionEvaluationSchema: z.ZodObject<{
539
539
  target_count: 1;
540
540
  score_delta: number;
541
541
  schema_version?: "peaks.evolution/1" | undefined;
542
- diff?: Record<string, unknown> | undefined;
543
542
  before_snapshot?: Record<string, unknown> | undefined;
544
543
  after_snapshot?: Record<string, unknown> | undefined;
544
+ diff?: Record<string, unknown> | undefined;
545
545
  score_delta_min?: number | undefined;
546
546
  rubric?: Record<string, unknown> | undefined;
547
547
  red_lines?: string[] | undefined;
@@ -573,10 +573,10 @@ export declare const EvolutionEvaluationSchema: z.ZodObject<{
573
573
  safetyRegressionRisks: string[];
574
574
  blocker?: string | undefined;
575
575
  }, {
576
- blocker?: string | undefined;
577
576
  driftRisks?: string[] | undefined;
578
577
  overfitRisks?: string[] | undefined;
579
578
  safetyRegressionRisks?: string[] | undefined;
579
+ blocker?: string | undefined;
580
580
  }>;
581
581
  verdict: z.ZodEnum<["keep", "revert", "needs-user-decision"]>;
582
582
  user_confirmation_pointer: z.ZodOptional<z.ZodString>;
@@ -588,16 +588,18 @@ export declare const EvolutionEvaluationSchema: z.ZodObject<{
588
588
  }, "strip", z.ZodTypeAny, {
589
589
  schema_version: "peaks.evolution/1";
590
590
  id: string;
591
+ created_at: string;
592
+ score_delta: number;
591
593
  proposal: {
592
594
  schema_version: "peaks.evolution/1";
593
595
  id: string;
594
- diff: Record<string, unknown>;
595
596
  created_at: string;
596
- target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
597
+ target_kind: "loop" | "bee" | "gate" | "policy" | "evaluator";
597
598
  target_release_id: string;
598
599
  optimization_dimension: string;
599
600
  before_snapshot: Record<string, unknown>;
600
601
  after_snapshot: Record<string, unknown>;
602
+ diff: Record<string, unknown>;
601
603
  before_score: number;
602
604
  after_score: number;
603
605
  score_delta_min: number;
@@ -611,9 +613,6 @@ export declare const EvolutionEvaluationSchema: z.ZodObject<{
611
613
  target_count: 1;
612
614
  score_delta: number;
613
615
  };
614
- created_at: string;
615
- verdict: "revert" | "keep" | "needs-user-decision";
616
- score_delta: number;
617
616
  evaluator_id: string;
618
617
  skeptic_id: string;
619
618
  evaluator_result: {
@@ -627,14 +626,17 @@ export declare const EvolutionEvaluationSchema: z.ZodObject<{
627
626
  safetyRegressionRisks: string[];
628
627
  blocker?: string | undefined;
629
628
  };
629
+ verdict: "keep" | "revert" | "needs-user-decision";
630
630
  user_confirmation_pointer?: string | undefined;
631
631
  brief_pointer?: string | undefined;
632
632
  }, {
633
633
  id: string;
634
+ created_at: string;
635
+ score_delta: number;
634
636
  proposal: {
635
637
  id: string;
636
638
  created_at: string;
637
- target_kind: "bee" | "gate" | "loop" | "evaluator" | "policy";
639
+ target_kind: "loop" | "bee" | "gate" | "policy" | "evaluator";
638
640
  target_release_id: string;
639
641
  optimization_dimension: string;
640
642
  before_score: number;
@@ -646,17 +648,14 @@ export declare const EvolutionEvaluationSchema: z.ZodObject<{
646
648
  target_count: 1;
647
649
  score_delta: number;
648
650
  schema_version?: "peaks.evolution/1" | undefined;
649
- diff?: Record<string, unknown> | undefined;
650
651
  before_snapshot?: Record<string, unknown> | undefined;
651
652
  after_snapshot?: Record<string, unknown> | undefined;
653
+ diff?: Record<string, unknown> | undefined;
652
654
  score_delta_min?: number | undefined;
653
655
  rubric?: Record<string, unknown> | undefined;
654
656
  red_lines?: string[] | undefined;
655
657
  source_traces?: string[] | undefined;
656
658
  };
657
- created_at: string;
658
- verdict: "revert" | "keep" | "needs-user-decision";
659
- score_delta: number;
660
659
  evaluator_id: string;
661
660
  skeptic_id: string;
662
661
  evaluator_result: {
@@ -665,11 +664,12 @@ export declare const EvolutionEvaluationSchema: z.ZodObject<{
665
664
  riskTags?: string[] | undefined;
666
665
  };
667
666
  skeptic_result: {
668
- blocker?: string | undefined;
669
667
  driftRisks?: string[] | undefined;
670
668
  overfitRisks?: string[] | undefined;
671
669
  safetyRegressionRisks?: string[] | undefined;
670
+ blocker?: string | undefined;
672
671
  };
672
+ verdict: "keep" | "revert" | "needs-user-decision";
673
673
  schema_version?: "peaks.evolution/1" | undefined;
674
674
  user_confirmation_pointer?: string | undefined;
675
675
  brief_pointer?: string | undefined;
@@ -1,4 +1,14 @@
1
- import type { LlmRunner } from '../audit/audit-goal-service.js';
1
+ export interface LlmRunner {
2
+ call(systemPrompt: string, userPrompt: string, opts: {
3
+ maxTokens: number;
4
+ }): Promise<{
5
+ output: string;
6
+ tokens: {
7
+ input: number;
8
+ output: number;
9
+ };
10
+ }>;
11
+ }
2
12
  import type { FinalReviewOutput } from './final-review-types.js';
3
13
  export interface PrepareFinalReviewOptions {
4
14
  readonly projectRoot: string;
@@ -0,0 +1,2 @@
1
+ export { prepareFinalReview, type PrepareFinalReviewOptions, type LlmRunner, IncompleteFinalReviewError, } from './final-review-service.js';
2
+ export type { DimensionKind, DimensionVerdict, EvidenceKind, DimensionConfidence, EvidenceItem, DimensionEvidence, FinalReviewOutput, } from './final-review-types.js';
@@ -0,0 +1 @@
1
+ export { prepareFinalReview, IncompleteFinalReviewError, } from './final-review-service.js';
@@ -37,17 +37,16 @@
37
37
  */
38
38
  export declare const AUTO_COMPACT_HOOK_MATCHER = "Bash|Task";
39
39
  /**
40
- * Stable command the hook fires. Wraps `peaks session
41
- * auto-compact-hook` so the heavy lifting (ratio probe + in-band
42
- * `claude --compact` spawn) lives in the CLI surface, not inlined
43
- * into the hook.
40
+ * Stable command the hook fires. Wraps `peaks compact auto` so the
41
+ * heavy lifting (ratio probe + in-band `claude --compact` spawn)
42
+ * lives in the CLI surface, not inlined into the hook.
44
43
  *
45
44
  * `npx peaks` is deliberately omitted: the project-local install
46
45
  * puts `peaks` on PATH inside the consumer repo (postinstall step),
47
46
  * so the unqualified command works in the same shell the runner
48
47
  * is using.
49
48
  */
50
- export declare const AUTO_COMPACT_HOOK_COMMAND = "peaks session auto-compact-hook";
49
+ export declare const AUTO_COMPACT_HOOK_COMMAND = "peaks compact auto";
51
50
  /**
52
51
  * Magic comment marker that fences the auto-compatchook block.
53
52
  * Both install (writes the marker) and remove (matches on it) use