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,114 @@
1
+ /**
2
+ * peaks-workflow — public type declarations for autonomous workflow planning.
3
+ *
4
+ * Pure type module. No runtime helpers, no constants. The slimmed
5
+ * `workflow-autonomous-service.ts` re-exports the types so existing
6
+ * import paths compile unchanged (rid-006 split).
7
+ *
8
+ * Per PRD EC-1, this module is consumed by both
9
+ * `workflow-autonomous-service.ts` and
10
+ * `workflow-autonomous-resume-helpers.ts` via `import type`. Importing
11
+ * this types-only module breaks the existing
12
+ * resume-helpers ↔ autonomous-service runtime cycle (both modules
13
+ * previously re-exported `AutonomousResumePlan` from each other).
14
+ *
15
+ * File budget: ≤ 400 lines (rid-006 split).
16
+ */
17
+ import type { CapabilityItemType } from '../recommendations/recommendation-types.js';
18
+ import type { ModelProviderConfig, WorkspaceConfig } from '../config/config-types.js';
19
+ import type { RdPlanResult } from '../rd/rd-service.js';
20
+ import type { CodeMode, WorkflowMode, WorkflowRouterPlan } from './workflow-router-service.js';
21
+ export type CapabilitySurface = 'skill' | 'mcp' | 'plugin' | 'expert';
22
+ export type CapabilityPurpose = 'code-review' | 'security-review' | 'coding-standards' | 'docs-lookup' | 'browser-validation' | 'browser-debug' | 'design-context' | 'design-source' | 'code-search' | 'database-inspection' | 'browser-agent' | 'worker-guidance' | 'memory' | 'context-management' | 'ui-components' | 'spec-workflow' | 'repo-intelligence' | 'openspec' | 'workflow-methodology' | 'workflow-reference' | 'workflow-guidance' | 'product-guidance' | 'design-reference' | 'ui-reference' | 'engineering-guidance' | 'typescript-guidance' | 'quality-guidance' | 'skill-pack' | 'external-skill' | 'design-critique' | 'design-guidance' | 'cloud-skill-pack';
23
+ export type CapabilityActivation = 'available' | 'needs-install' | 'needs-credentials' | 'not-active';
24
+ export type CapabilityTrustLevel = 'local' | 'user-curated' | 'third-party';
25
+ export type CapabilityCandidate = {
26
+ readonly id: string;
27
+ readonly source: string;
28
+ readonly purpose: CapabilityPurpose;
29
+ readonly surface: CapabilitySurface;
30
+ readonly kind: CapabilitySurface;
31
+ readonly sourceType: CapabilityItemType;
32
+ readonly trustLevel: CapabilityTrustLevel;
33
+ readonly activation: CapabilityActivation;
34
+ readonly risk: readonly string[];
35
+ };
36
+ export type AutonomousWorkflowRequest = {
37
+ readonly mode: WorkflowMode;
38
+ readonly codeMode?: CodeMode;
39
+ readonly sessionId: string;
40
+ readonly goal: string;
41
+ readonly maxWorkers?: number;
42
+ readonly dryRun: true;
43
+ readonly artifactWorkspacePath?: string;
44
+ readonly workspace?: WorkspaceConfig;
45
+ readonly config?: {
46
+ readonly economyMode?: boolean;
47
+ readonly swarmMode?: boolean;
48
+ readonly providers?: ModelProviderConfig;
49
+ };
50
+ };
51
+ export type AutonomousGoalPackage = {
52
+ readonly sessionId: string;
53
+ readonly goal: string;
54
+ readonly nonGoals: readonly string[];
55
+ readonly preservedBehavior: readonly string[];
56
+ readonly acceptanceCriteria: readonly string[];
57
+ readonly doneCondition: string;
58
+ readonly resumeCondition: string;
59
+ readonly riskNotes: readonly string[];
60
+ };
61
+ export type AutonomousCapabilityPlan = {
62
+ readonly sources: readonly string[];
63
+ readonly policy: readonly string[];
64
+ readonly candidates: readonly CapabilityCandidate[];
65
+ readonly surfaces: readonly CapabilitySurface[];
66
+ readonly surfaceSummary: Record<CapabilitySurface, number>;
67
+ };
68
+ export type AutonomousResumePlan = {
69
+ readonly status: 'preview' | 'ready';
70
+ readonly checkpoints: readonly string[];
71
+ readonly requiredArtifacts: readonly string[];
72
+ readonly resumeInstructions: string;
73
+ };
74
+ export type AutonomousGoalCommand = {
75
+ readonly command: string;
76
+ readonly durable: false;
77
+ readonly reason: string;
78
+ };
79
+ export type AutonomousStoragePlan = {
80
+ readonly scope: 'user-local';
81
+ readonly artifactWorkspacePath: string | null;
82
+ readonly memoryBackupPath: string | null;
83
+ };
84
+ export type AutonomousMvpPackage = {
85
+ readonly mode: WorkflowMode;
86
+ readonly codeMode: CodeMode | undefined;
87
+ readonly executionMode: 'preview';
88
+ readonly dryRun: true;
89
+ readonly routePolicy: WorkflowRouterPlan['routePolicy'];
90
+ readonly rdWaveNames: readonly string[];
91
+ readonly capabilitySurfaces: readonly CapabilitySurface[];
92
+ readonly capabilityCountBySurface: Record<CapabilitySurface, number>;
93
+ readonly ready: boolean;
94
+ };
95
+ export type AutonomousWorkflowPlan = {
96
+ readonly available: boolean;
97
+ readonly behavior: 'preview' | 'ready';
98
+ readonly sessionId: string;
99
+ readonly goal: string;
100
+ readonly mode: WorkflowMode;
101
+ readonly dryRun: true;
102
+ readonly goalPackage: AutonomousGoalPackage;
103
+ readonly goalCommand: AutonomousGoalCommand;
104
+ readonly capabilityPlan: AutonomousCapabilityPlan;
105
+ readonly storagePlan: AutonomousStoragePlan;
106
+ readonly routePlan: WorkflowRouterPlan;
107
+ readonly modelAssignments: WorkflowRouterPlan['modelAssignments'];
108
+ readonly rdPlan: RdPlanResult;
109
+ readonly resumePlan: AutonomousResumePlan;
110
+ readonly mvpPackage: AutonomousMvpPackage;
111
+ readonly constraints: readonly string[];
112
+ readonly blockedReasons: readonly string[];
113
+ readonly nextActions: readonly string[];
114
+ };
@@ -0,0 +1,21 @@
1
+ /**
2
+ * peaks-workflow — public type declarations for autonomous workflow planning.
3
+ *
4
+ * Pure type module. No runtime helpers, no constants. The slimmed
5
+ * `workflow-autonomous-service.ts` re-exports the types so existing
6
+ * import paths compile unchanged (rid-006 split).
7
+ *
8
+ * Per PRD EC-1, this module is consumed by both
9
+ * `workflow-autonomous-service.ts` and
10
+ * `workflow-autonomous-resume-helpers.ts` via `import type`. Importing
11
+ * this types-only module breaks the existing
12
+ * resume-helpers ↔ autonomous-service runtime cycle (both modules
13
+ * previously re-exported `AutonomousResumePlan` from each other).
14
+ *
15
+ * File budget: ≤ 400 lines (rid-006 split).
16
+ */
17
+ export {};
18
+ // Note: `CapabilityAvailabilityStatus` is referenced by the orchestrator's
19
+ // helper functions. It is imported (not re-exported) from the
20
+ // recommendation-types module — keep this types module pure to the
21
+ // declarations originally declared in `workflow-autonomous-service.ts`.
@@ -78,30 +78,32 @@ function annotateSteps(steps, codeMode) {
78
78
  };
79
79
  });
80
80
  }
81
- function createSoloSteps(executionModelId, strongestModelId) {
81
+ function createSoloSteps(executionModelId, strongestModelId, economyMode) {
82
+ const executionTier = economyMode === false ? 'top-tier' : 'mid-tier';
82
83
  return [
83
84
  step({ id: 'code-product-direction', stage: 'product-direction', owner: 'peaks-code', modelTier: 'top-tier', reason: 'Product direction needs strong judgment before execution work is delegated.', dependsOn: [] }, executionModelId, strongestModelId),
84
85
  step({ id: 'code-design-direction', stage: 'design-direction', owner: 'peaks-code', modelTier: 'top-tier', reason: 'Design direction uses the recommended default before cheaper implementation work.', dependsOn: ['code-product-direction'] }, executionModelId, strongestModelId),
85
86
  step({ id: 'code-tech-direction', stage: 'tech-direction', owner: 'peaks-tech', modelTier: 'top-tier', reason: 'Technical boundaries and approval gates use the recommended default with high-confidence planning.', dependsOn: ['code-design-direction'] }, executionModelId, strongestModelId),
86
87
  step({ id: 'code-tech-review', stage: 'tech-review', owner: 'peaks-tech', modelTier: 'top-tier', reason: 'Tech artifacts and gate decisions require strong review and a recommended default path.', dependsOn: ['code-tech-direction'] }, executionModelId, strongestModelId),
87
88
  step({ id: 'code-rd-planning', stage: 'rd-planning', owner: 'peaks-rd', modelTier: 'top-tier', reason: 'RD task decomposition and acceptance criteria use the recommended default before execution delegation.', dependsOn: ['code-tech-review'] }, executionModelId, strongestModelId),
88
- step({ id: 'code-coding-execution', stage: 'coding-execution', owner: 'peaks-rd', modelTier: executionModelId === strongestModelId ? 'top-tier' : 'mid-tier', reason: `Coding and routine refactoring must use the configured execution worker model ${executionModelId}.`, dependsOn: ['code-rd-planning'] }, executionModelId, strongestModelId),
89
- step({ id: 'code-unit-test-execution', stage: 'unit-test-execution', owner: 'peaks-rd', modelTier: executionModelId === strongestModelId ? 'top-tier' : 'mid-tier', reason: `Unit test authoring and focused test runs must use the configured execution worker model ${executionModelId}.`, dependsOn: ['code-coding-execution'] }, executionModelId, strongestModelId),
89
+ step({ id: 'code-coding-execution', stage: 'coding-execution', owner: 'peaks-rd', modelTier: executionTier, reason: `Coding and routine refactoring must use the configured execution worker model ${executionModelId}.`, dependsOn: ['code-rd-planning'] }, executionModelId, strongestModelId),
90
+ step({ id: 'code-unit-test-execution', stage: 'unit-test-execution', owner: 'peaks-rd', modelTier: executionTier, reason: `Unit test authoring and focused test runs must use the configured execution worker model ${executionModelId}.`, dependsOn: ['code-coding-execution'] }, executionModelId, strongestModelId),
90
91
  step({ id: 'code-quality-review', stage: 'quality-review', owner: 'peaks-code', modelTier: 'top-tier', reason: 'Reducer and final quality gates need strong synthesis and risk review.', dependsOn: ['code-unit-test-execution'] }, executionModelId, strongestModelId)
91
92
  ];
92
93
  }
93
- function createSoloStepsForMode(codeMode, executionModelId, strongestModelId) {
94
- return annotateSteps(createSoloSteps(executionModelId, strongestModelId), codeMode);
94
+ function createSoloStepsForMode(codeMode, executionModelId, strongestModelId, economyMode) {
95
+ return annotateSteps(createSoloSteps(executionModelId, strongestModelId, economyMode), codeMode);
95
96
  }
96
- function createTeamSteps(executionModelId, strongestModelId) {
97
+ function createTeamSteps(executionModelId, strongestModelId, economyMode) {
98
+ const executionTier = economyMode === false ? 'top-tier' : 'mid-tier';
97
99
  return [
98
100
  step({ id: 'team-product-direction', stage: 'product-direction', owner: 'human', modelTier: 'top-tier', reason: 'Team product direction should stay on the governed planning path.', dependsOn: [] }, executionModelId, strongestModelId),
99
101
  step({ id: 'team-design-direction', stage: 'design-direction', owner: 'human', modelTier: 'top-tier', reason: 'Team design direction should preserve reviewability and accountability.', dependsOn: ['team-product-direction'] }, executionModelId, strongestModelId),
100
102
  step({ id: 'team-tech-direction', stage: 'tech-direction', owner: 'peaks-tech', modelTier: 'top-tier', reason: 'Team technical plans should remain strongly governed before RD execution.', dependsOn: ['team-design-direction'] }, executionModelId, strongestModelId),
101
103
  step({ id: 'team-tech-review', stage: 'tech-review', owner: 'peaks-tech', modelTier: 'top-tier', reason: 'Team tech approval requires strong review before execution.', dependsOn: ['team-tech-direction'] }, executionModelId, strongestModelId),
102
104
  step({ id: 'team-rd-planning', stage: 'rd-planning', owner: 'peaks-rd', modelTier: 'top-tier', reason: 'Team RD task decomposition remains on the governed strongest-model path.', dependsOn: ['team-tech-review'] }, executionModelId, strongestModelId),
103
- step({ id: 'team-coding-execution', stage: 'coding-execution', owner: 'peaks-rd', modelTier: executionModelId === strongestModelId ? 'top-tier' : 'mid-tier', reason: `Bounded coding tasks must use the configured execution worker model ${executionModelId}.`, dependsOn: ['team-rd-planning'] }, executionModelId, strongestModelId),
104
- step({ id: 'team-unit-test-execution', stage: 'unit-test-execution', owner: 'peaks-rd', modelTier: executionModelId === strongestModelId ? 'top-tier' : 'mid-tier', reason: `Unit-test tasks must use the configured execution worker model ${executionModelId}.`, dependsOn: ['team-coding-execution'] }, executionModelId, strongestModelId),
105
+ step({ id: 'team-coding-execution', stage: 'coding-execution', owner: 'peaks-rd', modelTier: executionTier, reason: `Bounded coding tasks must use the configured execution worker model ${executionModelId}.`, dependsOn: ['team-rd-planning'] }, executionModelId, strongestModelId),
106
+ step({ id: 'team-unit-test-execution', stage: 'unit-test-execution', owner: 'peaks-rd', modelTier: executionTier, reason: `Unit-test tasks must use the configured execution worker model ${executionModelId}.`, dependsOn: ['team-coding-execution'] }, executionModelId, strongestModelId),
105
107
  step({ id: 'team-quality-review', stage: 'quality-review', owner: 'peaks-rd', modelTier: 'top-tier', reason: 'Team RD outputs still need reducer and quality review gates.', dependsOn: ['team-unit-test-execution'] }, executionModelId, strongestModelId)
106
108
  ];
107
109
  }
@@ -176,13 +178,13 @@ export function createWorkflowRouterPlan(request) {
176
178
  // "enabled" (matches the pre-2.0.1 implicit default).
177
179
  const economyMode = request.config?.economyMode ?? true;
178
180
  const swarmMode = request.config?.swarmMode ?? true;
179
- // Pre-2.0.1 DEFAULT_CONFIG carried an implicit `minimax-2.7` provider
180
- // for test fixtures that did not pass `config.providers`. The slim
181
- // DEFAULT_CONFIG removed that field, so we re-supply it here only when
182
- // the caller did not pass any providers at all. An explicit empty
183
- // object (`config: { providers: {} }`) still surfaces the "must be
184
- // configured" error from `getConfiguredExecutionModelId`.
185
- const effectiveProviders = request.config?.providers ?? { minimax: { model: 'minimax-2.7' } };
181
+ // Pre-2.0.1 DEFAULT_CONFIG carried an implicit provider for test fixtures
182
+ // that did not pass `config.providers`. The slim DEFAULT_CONFIG removed that
183
+ // field, so we re-supply it here only when the caller did not pass any
184
+ // providers at all. An explicit empty object (`config: { providers: {} }`)
185
+ // still surfaces the "must be configured" error from
186
+ // `getConfiguredExecutionModelId`.
187
+ const effectiveProviders = request.config?.providers ?? { anthropic: { model: 'claude-opus-4-7' } };
186
188
  // Slice 2026-07-09 add-zcode-adapter (A.3): the strongest
187
189
  // planner/reviewer model is now resolved via `getStrongestModelId`,
188
190
  // which reads `config.model` (if present) or falls back to the
@@ -201,7 +203,7 @@ export function createWorkflowRouterPlan(request) {
201
203
  const techStatus = getTechStatus({ sessionId: request.sessionId, ...sharedWorkspaceOptions });
202
204
  const techPlan = createTechPlan({ sessionId: request.sessionId, goal, swarm: swarmMode, dryRun: true, ...sharedWorkspaceOptions });
203
205
  const rdPlan = createRdSwarmPlan({ skill: 'rd', sessionId: request.sessionId, goal, maxWorkers, swarmMode, executionModelId, dryRun: true, ...sharedWorkspaceOptions });
204
- const steps = codeMode ? createSoloStepsForMode(codeMode, executionModelId, strongestModelId) : createTeamSteps(executionModelId, strongestModelId);
206
+ const steps = codeMode ? createSoloStepsForMode(codeMode, executionModelId, strongestModelId, economyMode) : createTeamSteps(executionModelId, strongestModelId, economyMode);
205
207
  const blockedReasons = uniqueStrings([
206
208
  ...techStatus.blockedReasons,
207
209
  ...getTechPlanBlockedReasons(techPlan),
@@ -0,0 +1,13 @@
1
+ /**
2
+ * peaks-workflow v3.0.0 — `lintWorkflowSpec` (moved verbatim per rid-006)
3
+ *
4
+ * Pure lint over a typed `WorkflowSpec`. No parser/build helpers, no
5
+ * YAML helpers — lint is pure on the typed spec. The slimmed
6
+ * `workflow-spec.ts` re-exports `lintWorkflowSpec` under its original
7
+ * name so existing call sites compile unchanged.
8
+ *
9
+ * File budget: ≤ 400 lines (rid-006 split).
10
+ */
11
+ import type { WorkflowLintReport, WorkflowSpec } from './workflow-spec-types.js';
12
+ /** Lint a parsed spec — returns a report with semantic errors / warnings. */
13
+ export declare function lintWorkflowSpec(spec: WorkflowSpec): WorkflowLintReport;
@@ -0,0 +1,75 @@
1
+ /**
2
+ * peaks-workflow v3.0.0 — `lintWorkflowSpec` (moved verbatim per rid-006)
3
+ *
4
+ * Pure lint over a typed `WorkflowSpec`. No parser/build helpers, no
5
+ * YAML helpers — lint is pure on the typed spec. The slimmed
6
+ * `workflow-spec.ts` re-exports `lintWorkflowSpec` under its original
7
+ * name so existing call sites compile unchanged.
8
+ *
9
+ * File budget: ≤ 400 lines (rid-006 split).
10
+ */
11
+ /** Lint a parsed spec — returns a report with semantic errors / warnings. */
12
+ export function lintWorkflowSpec(spec) {
13
+ const errors = [];
14
+ const warnings = [];
15
+ // Phase ids must be unique.
16
+ const seen = new Set();
17
+ for (const phase of spec.phases) {
18
+ if (seen.has(phase.id))
19
+ errors.push(`duplicate phase id "${phase.id}"`);
20
+ seen.add(phase.id);
21
+ }
22
+ // Gate references in phases must exist in the gates list (or be a known
23
+ // built-in like "Gate B3").
24
+ const gateIds = new Set(spec.gates.map((g) => g.id));
25
+ for (const phase of spec.phases) {
26
+ for (const gateRef of phase.gates) {
27
+ if (!gateIds.has(gateRef) && !gateRef.startsWith('Gate ')) {
28
+ warnings.push(`phase "${phase.id}" references unknown gate "${gateRef}" (not in gates[] and not a built-in "Gate …" label)`);
29
+ }
30
+ }
31
+ }
32
+ // Evaluator gates must match a gate id when present.
33
+ for (const ev of spec.evaluators) {
34
+ if (ev.gate !== undefined && !gateIds.has(ev.gate) && !ev.gate.startsWith('Gate ')) {
35
+ warnings.push(`evaluator "${ev.type}" references unknown gate "${ev.gate}"`);
36
+ }
37
+ }
38
+ // dependsOn references must resolve.
39
+ const phaseIds = new Set(spec.phases.map((p) => p.id));
40
+ for (const phase of spec.phases) {
41
+ if (phase.dependsOn !== undefined) {
42
+ for (const dep of phase.dependsOn) {
43
+ if (!phaseIds.has(dep))
44
+ errors.push(`phase "${phase.id}" depends on missing phase "${dep}"`);
45
+ }
46
+ }
47
+ }
48
+ // Parallel groups must contain ≥2 phases.
49
+ const groupCounts = new Map();
50
+ for (const phase of spec.phases) {
51
+ if (phase.parallelGroup !== undefined) {
52
+ groupCounts.set(phase.parallelGroup, (groupCounts.get(phase.parallelGroup) ?? 0) + 1);
53
+ }
54
+ }
55
+ for (const [group, count] of groupCounts) {
56
+ if (count < 2)
57
+ warnings.push(`parallelGroup "${group}" has only ${count} phase(s); parallelism requires ≥2`);
58
+ }
59
+ // Budget sanity.
60
+ if (spec.budget.cycles !== undefined && spec.budget.cycles < 1) {
61
+ errors.push(`budget.cycles must be ≥1 when set (got ${spec.budget.cycles})`);
62
+ }
63
+ if (spec.budget.tokens !== undefined && spec.budget.tokens < 1) {
64
+ errors.push(`budget.tokens must be ≥1 when set (got ${spec.budget.tokens})`);
65
+ }
66
+ if (spec.budget.wallSeconds !== undefined && spec.budget.wallSeconds < 1) {
67
+ errors.push(`budget.wallSeconds must be ≥1 when set (got ${spec.budget.wallSeconds})`);
68
+ }
69
+ return {
70
+ ok: errors.length === 0,
71
+ errors,
72
+ warnings,
73
+ normalizedSpec: spec
74
+ };
75
+ }
@@ -0,0 +1,100 @@
1
+ /**
2
+ * peaks-workflow v3.0.0 — Slice A.1 + Slice B.1
3
+ *
4
+ * Public type and interface declarations for the workflow spec schema.
5
+ * Pure data shapes only — no constants, no runtime helpers, no
6
+ * implementations. Constants (`ID_PATTERN`, `VALID_EVALUATORS`)
7
+ * remain private to `workflow-spec.ts`; the YAML field helpers
8
+ * live in `workflow-spec-yaml.ts`; the lint function lives in
9
+ * `workflow-spec-lint.ts`.
10
+ *
11
+ * File budget: ≤ 400 lines (rid-006 split).
12
+ */
13
+ /** A workflow phase = a single step the runtime executes. */
14
+ export interface WorkflowPhase {
15
+ /** Stable id within the workflow (kebab-case). Used as the SOP gate key. */
16
+ readonly id: string;
17
+ /** peaks-* role that runs the phase (e.g. "peaks-rd"). */
18
+ readonly role: string;
19
+ /** Free-text prompt template sent to the role. */
20
+ readonly promptTemplate: string;
21
+ /** Phase-level gate references; runtime looks up the SOP gate by id. */
22
+ readonly gates: readonly string[];
23
+ /** Output contract — keys the runtime should expect in the role's verdict. */
24
+ readonly outputContract: readonly string[];
25
+ /** Optional ordered list of sibling phase ids that must complete first. */
26
+ readonly dependsOn?: readonly string[];
27
+ /** When true, runtime may run this phase in parallel with siblings at the same depth. */
28
+ readonly parallelGroup?: string;
29
+ }
30
+ /** A gate entry is a thin pointer to a peaks-sop gate; the gate definition
31
+ * itself lives in peaks-sop, never in the workflow yaml. */
32
+ export interface WorkflowGate {
33
+ /** Gate id (matches peaks-sop gate-id). */
34
+ readonly id: string;
35
+ /** SOP id that owns the gate definition. */
36
+ readonly sopId: string;
37
+ /** Optional human-readable hint shown when the gate fails. */
38
+ readonly description?: string;
39
+ }
40
+ /** Native evaluator types — the 4 reviewer fan-out members + verdict aggregator
41
+ * + Slice C monotonic-improvement guard + Slice D G13/G14/G15 quality-loop
42
+ * primitives. Sketch-grade: the 3 quality-loop evaluators shell out to
43
+ * existing `peaks impact scan`, `peaks smoke run`, and
44
+ * `peaks release canary` CLI surfaces. The authoritative score
45
+ * conversion for the monotonic guard lives in
46
+ * `src/services/loop/monotonic-guard.ts`. */
47
+ export type EvaluatorKind = 'karpathy' | 'code-review' | 'security-review' | 'perf-baseline' | 'verdict-aggregate' | 'monotonic-improvement' | 'impact-scan' | 'smoke-run' | 'canary-watch';
48
+ /** Evaluator binding — runtime calls `peaks loop eval` directly, no LLM scheduling. */
49
+ export interface WorkflowEvaluator {
50
+ readonly type: EvaluatorKind;
51
+ /** Optional gate id this evaluator produces evidence for (e.g. "Gate B3"). */
52
+ readonly gate?: string;
53
+ /** Optional scope expression (path or glob) — kept as string for v3.0.0. */
54
+ readonly scope?: string;
55
+ /** Optional SLA threshold (evaluator-specific; evaluators interpret their own scale). */
56
+ readonly threshold?: string;
57
+ }
58
+ /** Context snapshot — files + scope the role/worker should preload. */
59
+ export interface WorkflowContextSnapshot {
60
+ /** Files the role should read before running (paths, relative to project root). */
61
+ readonly files: readonly string[];
62
+ /** Optional memory anchors (e.g. ".peaks/memory/parked-peaks-workflow-primitive.md"). */
63
+ readonly memory: readonly string[];
64
+ }
65
+ /** Budget caps — runtime stops the loop when any cap is exceeded. */
66
+ export interface WorkflowBudget {
67
+ /** Hard token cap (sum of role invocations + evaluator outputs). */
68
+ readonly tokens?: number;
69
+ /** Wall-clock cap in seconds. */
70
+ readonly wallSeconds?: number;
71
+ /** Cycle cap — maximum repair iterations before guard aborts. */
72
+ readonly cycles?: number;
73
+ }
74
+ export interface WorkflowSpec {
75
+ /** Schema version; always 1 for v3.0.0. */
76
+ readonly schemaVersion: 1;
77
+ /** Stable id (matches filename `<id>.yaml`). */
78
+ readonly id: string;
79
+ /** Human-readable label shown in `peaks workflow list`. */
80
+ readonly label: string;
81
+ /** Description; one short paragraph. */
82
+ readonly description: string;
83
+ /** Phases in declaration order; runtime may parallelize siblings within a group. */
84
+ readonly phases: readonly WorkflowPhase[];
85
+ /** Gates referenced by phases; runtime resolves them via peaks-sop. */
86
+ readonly gates: readonly WorkflowGate[];
87
+ /** Native evaluators the runtime should invoke. */
88
+ readonly evaluators: readonly WorkflowEvaluator[];
89
+ /** Context snapshot for the workflow. */
90
+ readonly contextSnapshot: WorkflowContextSnapshot;
91
+ /** Budget caps. */
92
+ readonly budget: WorkflowBudget;
93
+ }
94
+ /** Result of `lintWorkflowSpec` — pure data, never throws. */
95
+ export interface WorkflowLintReport {
96
+ readonly ok: boolean;
97
+ readonly errors: readonly string[];
98
+ readonly warnings: readonly string[];
99
+ readonly normalizedSpec?: WorkflowSpec;
100
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * peaks-workflow v3.0.0 — Slice A.1 + Slice B.1
3
+ *
4
+ * Public type and interface declarations for the workflow spec schema.
5
+ * Pure data shapes only — no constants, no runtime helpers, no
6
+ * implementations. Constants (`ID_PATTERN`, `VALID_EVALUATORS`)
7
+ * remain private to `workflow-spec.ts`; the YAML field helpers
8
+ * live in `workflow-spec-yaml.ts`; the lint function lives in
9
+ * `workflow-spec-lint.ts`.
10
+ *
11
+ * File budget: ≤ 400 lines (rid-006 split).
12
+ */
13
+ export {};
@@ -0,0 +1,17 @@
1
+ /**
2
+ * peaks-workflow v3.0.0 — YAML field helpers
3
+ *
4
+ * Private helpers used by the parser in `workflow-spec.ts`. NOT publicly
5
+ * re-exported; not part of the public API surface. Kept in a sibling
6
+ * file so the slimmed `workflow-spec.ts` can stay under the 400-line
7
+ * file-size cap (rid-006 split).
8
+ *
9
+ * File budget: ≤ 400 lines (rid-006 split).
10
+ */
11
+ export declare function leadingSpaces(line: string): number;
12
+ export declare function parseScalar(raw: string): unknown;
13
+ export declare function stringField(obj: Record<string, unknown>, key: string, fallback?: string): string;
14
+ export declare function numberField(obj: Record<string, unknown>, key: string, fallback?: number): number;
15
+ export declare function arrayField(obj: Record<string, unknown>, key: string): unknown[];
16
+ export declare function objectField(obj: Record<string, unknown>, key: string): Record<string, unknown>;
17
+ export declare function stringArrayField(obj: Record<string, unknown>, key: string): readonly string[];
@@ -0,0 +1,88 @@
1
+ /**
2
+ * peaks-workflow v3.0.0 — YAML field helpers
3
+ *
4
+ * Private helpers used by the parser in `workflow-spec.ts`. NOT publicly
5
+ * re-exported; not part of the public API surface. Kept in a sibling
6
+ * file so the slimmed `workflow-spec.ts` can stay under the 400-line
7
+ * file-size cap (rid-006 split).
8
+ *
9
+ * File budget: ≤ 400 lines (rid-006 split).
10
+ */
11
+ export function leadingSpaces(line) {
12
+ let n = 0;
13
+ for (const ch of line) {
14
+ if (ch === ' ')
15
+ n++;
16
+ else
17
+ break;
18
+ }
19
+ return n;
20
+ }
21
+ export function parseScalar(raw) {
22
+ if (raw === '')
23
+ return '';
24
+ if (raw === 'true')
25
+ return true;
26
+ if (raw === 'false')
27
+ return false;
28
+ if (raw === 'null' || raw === '~')
29
+ return null;
30
+ // Inline array form `[a, b, c]`
31
+ if (raw.startsWith('[') && raw.endsWith(']')) {
32
+ const inner = raw.slice(1, -1).trim();
33
+ if (inner === '')
34
+ return [];
35
+ return inner.split(',').map((s) => parseScalar(s.trim()));
36
+ }
37
+ // Strip optional surrounding quotes.
38
+ if ((raw.startsWith('"') && raw.endsWith('"')) || (raw.startsWith("'") && raw.endsWith("'"))) {
39
+ return raw.slice(1, -1);
40
+ }
41
+ // Number?
42
+ if (/^-?\d+$/.test(raw))
43
+ return parseInt(raw, 10);
44
+ if (/^-?\d+\.\d+$/.test(raw))
45
+ return parseFloat(raw);
46
+ return raw;
47
+ }
48
+ export function stringField(obj, key, fallback) {
49
+ const v = obj[key];
50
+ if (typeof v === 'string')
51
+ return v;
52
+ if (fallback !== undefined)
53
+ return fallback;
54
+ throw new Error(`workflow yaml: missing required string field "${key}"`);
55
+ }
56
+ export function numberField(obj, key, fallback) {
57
+ const v = obj[key];
58
+ if (typeof v === 'number' && Number.isFinite(v))
59
+ return v;
60
+ if (fallback !== undefined)
61
+ return fallback;
62
+ throw new Error(`workflow yaml: missing required number field "${key}"`);
63
+ }
64
+ export function arrayField(obj, key) {
65
+ const v = obj[key];
66
+ if (v === undefined)
67
+ return [];
68
+ if (!Array.isArray(v))
69
+ throw new Error(`workflow yaml: field "${key}" must be an array`);
70
+ return v;
71
+ }
72
+ export function objectField(obj, key) {
73
+ const v = obj[key];
74
+ if (v === undefined)
75
+ return {};
76
+ if (v === null || typeof v !== 'object' || Array.isArray(v)) {
77
+ throw new Error(`workflow yaml: field "${key}" must be an object`);
78
+ }
79
+ return v;
80
+ }
81
+ export function stringArrayField(obj, key) {
82
+ const v = obj[key];
83
+ if (v === undefined)
84
+ return [];
85
+ if (!Array.isArray(v))
86
+ throw new Error(`workflow yaml: field "${key}" must be an array of strings`);
87
+ return v.map((s) => String(s));
88
+ }
@@ -19,98 +19,18 @@
19
19
  * pair. Anything more elaborate (e.g. conditionals on outputs) belongs
20
20
  * in a future minor.
21
21
  *
22
- * File budget: ≤ 800 lines (Karpathy §2).
22
+ * File budget: ≤ 400 lines (rid-006 split). This file now holds the
23
+ * parser + private constants + private build helpers; types live in
24
+ * `workflow-spec-types.ts`; YAML field helpers live in
25
+ * `workflow-spec-yaml.ts`; lint lives in `workflow-spec-lint.ts`.
26
+ * The re-export shim at the bottom preserves the original public
27
+ * surface so external callers (`workflow-loader.ts`,
28
+ * `loop-eval-commands.ts`, `evaluator-dispatcher.ts`) compile
29
+ * unchanged.
23
30
  */
24
- /** A workflow phase = a single step the runtime executes. */
25
- export interface WorkflowPhase {
26
- /** Stable id within the workflow (kebab-case). Used as the SOP gate key. */
27
- readonly id: string;
28
- /** peaks-* role that runs the phase (e.g. "peaks-rd"). */
29
- readonly role: string;
30
- /** Free-text prompt template sent to the role. */
31
- readonly promptTemplate: string;
32
- /** Phase-level gate references; runtime looks up the SOP gate by id. */
33
- readonly gates: readonly string[];
34
- /** Output contract — keys the runtime should expect in the role's verdict. */
35
- readonly outputContract: readonly string[];
36
- /** Optional ordered list of sibling phase ids that must complete first. */
37
- readonly dependsOn?: readonly string[];
38
- /** When true, runtime may run this phase in parallel with siblings at the same depth. */
39
- readonly parallelGroup?: string;
40
- }
41
- /** A gate entry is a thin pointer to a peaks-sop gate; the gate definition
42
- * itself lives in peaks-sop, never in the workflow yaml. */
43
- export interface WorkflowGate {
44
- /** Gate id (matches peaks-sop gate-id). */
45
- readonly id: string;
46
- /** SOP id that owns the gate definition. */
47
- readonly sopId: string;
48
- /** Optional human-readable hint shown when the gate fails. */
49
- readonly description?: string;
50
- }
51
- /** Native evaluator types — the 4 reviewer fan-out members + verdict aggregator
52
- * + Slice C monotonic-improvement guard + Slice D G13/G14/G15 quality-loop
53
- * primitives. Sketch-grade: the 3 quality-loop evaluators shell out to
54
- * existing `peaks impact scan`, `peaks smoke run`, and
55
- * `peaks release canary` CLI surfaces. The authoritative score
56
- * conversion for the monotonic guard lives in
57
- * `src/services/loop/monotonic-guard.ts`. */
58
- export type EvaluatorKind = 'karpathy' | 'code-review' | 'security-review' | 'perf-baseline' | 'verdict-aggregate' | 'monotonic-improvement' | 'impact-scan' | 'smoke-run' | 'canary-watch';
59
- /** Evaluator binding — runtime calls `peaks loop eval` directly, no LLM scheduling. */
60
- export interface WorkflowEvaluator {
61
- readonly type: EvaluatorKind;
62
- /** Optional gate id this evaluator produces evidence for (e.g. "Gate B3"). */
63
- readonly gate?: string;
64
- /** Optional scope expression (path or glob) — kept as string for v3.0.0. */
65
- readonly scope?: string;
66
- /** Optional SLA threshold (evaluator-specific; evaluators interpret their own scale). */
67
- readonly threshold?: string;
68
- }
69
- /** Context snapshot — files + scope the role/worker should preload. */
70
- export interface WorkflowContextSnapshot {
71
- /** Files the role should read before running (paths, relative to project root). */
72
- readonly files: readonly string[];
73
- /** Optional memory anchors (e.g. ".peaks/memory/parked-peaks-workflow-primitive.md"). */
74
- readonly memory: readonly string[];
75
- }
76
- /** Budget caps — runtime stops the loop when any cap is exceeded. */
77
- export interface WorkflowBudget {
78
- /** Hard token cap (sum of role invocations + evaluator outputs). */
79
- readonly tokens?: number;
80
- /** Wall-clock cap in seconds. */
81
- readonly wallSeconds?: number;
82
- /** Cycle cap — maximum repair iterations before guard aborts. */
83
- readonly cycles?: number;
84
- }
85
- export interface WorkflowSpec {
86
- /** Schema version; always 1 for v3.0.0. */
87
- readonly schemaVersion: 1;
88
- /** Stable id (matches filename `<id>.yaml`). */
89
- readonly id: string;
90
- /** Human-readable label shown in `peaks workflow list`. */
91
- readonly label: string;
92
- /** Description; one short paragraph. */
93
- readonly description: string;
94
- /** Phases in declaration order; runtime may parallelize siblings within a group. */
95
- readonly phases: readonly WorkflowPhase[];
96
- /** Gates referenced by phases; runtime resolves them via peaks-sop. */
97
- readonly gates: readonly WorkflowGate[];
98
- /** Native evaluators the runtime should invoke. */
99
- readonly evaluators: readonly WorkflowEvaluator[];
100
- /** Context snapshot for the workflow. */
101
- readonly contextSnapshot: WorkflowContextSnapshot;
102
- /** Budget caps. */
103
- readonly budget: WorkflowBudget;
104
- }
105
- /** Result of `lintWorkflowSpec` — pure data, never throws. */
106
- export interface WorkflowLintReport {
107
- readonly ok: boolean;
108
- readonly errors: readonly string[];
109
- readonly warnings: readonly string[];
110
- readonly normalizedSpec?: WorkflowSpec;
111
- }
31
+ import type { WorkflowSpec } from './workflow-spec-types.js';
112
32
  /** Parse a raw yaml string into a workflow spec. Pure (no IO), throws on
113
33
  * unparseable input. Use `lintWorkflowSpec` after parsing for semantic checks. */
114
34
  export declare function parseWorkflowYaml(raw: string, expectedId: string): WorkflowSpec;
115
- /** Lint a parsed spec — returns a report with semantic errors / warnings. */
116
- export declare function lintWorkflowSpec(spec: WorkflowSpec): WorkflowLintReport;
35
+ export { lintWorkflowSpec } from './workflow-spec-lint.js';
36
+ export type { EvaluatorKind, WorkflowBudget, WorkflowContextSnapshot, WorkflowEvaluator, WorkflowGate, WorkflowLintReport, WorkflowPhase, WorkflowSpec } from './workflow-spec-types.js';