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
@@ -47,15 +47,15 @@ export declare const LoopBeeRelationInputSchema: z.ZodObject<{
47
47
  role: z.ZodEnum<["main", "supporting", "candidate", "retired"]>;
48
48
  reason: z.ZodString;
49
49
  }, "strip", z.ZodTypeAny, {
50
- role: "main" | "candidate" | "retired" | "supporting";
51
- reason: string;
52
50
  bee_release_id: number;
53
51
  loop_release_id: string;
54
- }, {
55
52
  role: "main" | "candidate" | "retired" | "supporting";
56
53
  reason: string;
54
+ }, {
57
55
  bee_release_id: number;
58
56
  loop_release_id: string;
57
+ role: "main" | "candidate" | "retired" | "supporting";
58
+ reason: string;
59
59
  }>;
60
60
  export type LoopBeeRelationInput = z.input<typeof LoopBeeRelationInputSchema>;
61
61
  /**
@@ -80,19 +80,19 @@ export declare const LoopBeeRelationSchema: z.ZodObject<{
80
80
  created_at: z.ZodString;
81
81
  }, "strip", z.ZodTypeAny, {
82
82
  schema_version: "peaks.loop-bee-relation/1";
83
- role: "main" | "candidate" | "retired" | "supporting";
84
- reason: string;
85
83
  id: number;
86
84
  created_at: string;
87
85
  bee_release_id: number;
88
86
  loop_release_id: string;
89
- }, {
90
87
  role: "main" | "candidate" | "retired" | "supporting";
91
88
  reason: string;
89
+ }, {
92
90
  id: number;
93
91
  created_at: string;
94
92
  bee_release_id: number;
95
93
  loop_release_id: string;
94
+ role: "main" | "candidate" | "retired" | "supporting";
95
+ reason: string;
96
96
  schema_version?: "peaks.loop-bee-relation/1" | undefined;
97
97
  }>;
98
98
  export type LoopBeeRelation = z.infer<typeof LoopBeeRelationSchema>;
@@ -69,15 +69,15 @@ export declare const LoopReleaseM3ExtensionSchema: z.ZodObject<{
69
69
  desktop_visible: z.ZodDefault<z.ZodBoolean>;
70
70
  export_bundle_format: z.ZodDefault<z.ZodLiteral<"peaks.bundle/1">>;
71
71
  }, "strip", z.ZodTypeAny, {
72
- export_bundle_format: "peaks.bundle/1";
73
72
  shareable: boolean;
74
73
  share_excluded_paths: string[];
75
74
  desktop_visible: boolean;
75
+ export_bundle_format: "peaks.bundle/1";
76
76
  }, {
77
- export_bundle_format?: "peaks.bundle/1" | undefined;
78
77
  shareable?: boolean | undefined;
79
78
  share_excluded_paths?: string[] | undefined;
80
79
  desktop_visible?: boolean | undefined;
80
+ export_bundle_format?: "peaks.bundle/1" | undefined;
81
81
  }>;
82
82
  /** Convenience type for the M3 share / desktop subset. */
83
83
  export type LoopReleaseM3Extension = z.infer<typeof LoopReleaseM3ExtensionSchema>;
@@ -110,41 +110,41 @@ export declare const LoopReleaseInputSchema: z.ZodObject<{
110
110
  }, "strip", z.ZodTypeAny, {
111
111
  version: string;
112
112
  name: string;
113
+ lifecycle_status: "candidate" | "stable" | "retired";
113
114
  id: string;
115
+ shareable: boolean;
116
+ share_excluded_paths: string[];
117
+ desktop_visible: boolean;
118
+ export_bundle_format: "peaks.bundle/1";
114
119
  scenario: string;
115
120
  trigger_policy: string;
121
+ success_criteria: string[];
116
122
  interaction_policy: string;
117
123
  feedback_policy: string;
118
124
  evolution_policy: string;
119
- lifecycle_status: "candidate" | "stable" | "retired";
120
- export_bundle_format: "peaks.bundle/1";
121
- success_criteria: string[];
122
125
  evaluator_policy: string[];
123
126
  linked_bees: string[];
124
127
  run_history: string[];
125
128
  crystallization_evidence: string[];
126
- shareable: boolean;
127
- share_excluded_paths: string[];
128
- desktop_visible: boolean;
129
129
  }, {
130
130
  version: string;
131
131
  name: string;
132
+ lifecycle_status: "candidate" | "stable" | "retired";
132
133
  id: string;
133
134
  scenario: string;
134
135
  trigger_policy: string;
136
+ success_criteria: string[];
135
137
  interaction_policy: string;
136
138
  feedback_policy: string;
137
139
  evolution_policy: string;
138
- lifecycle_status: "candidate" | "stable" | "retired";
139
- success_criteria: string[];
140
140
  evaluator_policy: string[];
141
+ shareable?: boolean | undefined;
142
+ share_excluded_paths?: string[] | undefined;
143
+ desktop_visible?: boolean | undefined;
141
144
  export_bundle_format?: "peaks.bundle/1" | undefined;
142
145
  linked_bees?: string[] | undefined;
143
146
  run_history?: string[] | undefined;
144
147
  crystallization_evidence?: string[] | undefined;
145
- shareable?: boolean | undefined;
146
- share_excluded_paths?: string[] | undefined;
147
- desktop_visible?: boolean | undefined;
148
148
  }>;
149
149
  /**
150
150
  * `LoopReleaseInput` is the *input* shape clients supply: defaulted
@@ -191,42 +191,42 @@ export declare const LoopReleaseSchema: z.ZodObject<{
191
191
  schema_version: "peaks.loop/1";
192
192
  version: string;
193
193
  name: string;
194
+ lifecycle_status: "candidate" | "stable" | "retired";
194
195
  id: string;
196
+ shareable: boolean;
197
+ share_excluded_paths: string[];
198
+ desktop_visible: boolean;
199
+ export_bundle_format: "peaks.bundle/1";
195
200
  scenario: string;
196
201
  trigger_policy: string;
202
+ success_criteria: string[];
197
203
  interaction_policy: string;
198
204
  feedback_policy: string;
199
205
  evolution_policy: string;
200
- lifecycle_status: "candidate" | "stable" | "retired";
201
- export_bundle_format: "peaks.bundle/1";
202
- success_criteria: string[];
203
206
  evaluator_policy: string[];
204
207
  linked_bees: string[];
205
208
  run_history: string[];
206
209
  crystallization_evidence: string[];
207
- shareable: boolean;
208
- share_excluded_paths: string[];
209
- desktop_visible: boolean;
210
210
  }, {
211
211
  version: string;
212
212
  name: string;
213
+ lifecycle_status: "candidate" | "stable" | "retired";
213
214
  id: string;
214
215
  scenario: string;
215
216
  trigger_policy: string;
217
+ success_criteria: string[];
216
218
  interaction_policy: string;
217
219
  feedback_policy: string;
218
220
  evolution_policy: string;
219
- lifecycle_status: "candidate" | "stable" | "retired";
220
- success_criteria: string[];
221
221
  evaluator_policy: string[];
222
222
  schema_version?: "peaks.loop/1" | undefined;
223
+ shareable?: boolean | undefined;
224
+ share_excluded_paths?: string[] | undefined;
225
+ desktop_visible?: boolean | undefined;
223
226
  export_bundle_format?: "peaks.bundle/1" | undefined;
224
227
  linked_bees?: string[] | undefined;
225
228
  run_history?: string[] | undefined;
226
229
  crystallization_evidence?: string[] | undefined;
227
- shareable?: boolean | undefined;
228
- share_excluded_paths?: string[] | undefined;
229
- desktop_visible?: boolean | undefined;
230
230
  }>;
231
231
  export type LoopRelease = z.infer<typeof LoopReleaseSchema>;
232
232
  /**
@@ -26,23 +26,29 @@ export interface RunMonotonicResult {
26
26
  readonly persistedAt: string | null;
27
27
  readonly rows: readonly MonotonicScoreRow[];
28
28
  readonly report: MonotonicReport;
29
- /** Additive surface for non-fatal persistence warnings (e.g. mkdir
29
+ /** Additive surface for non-fatal persistence warnings (e.g. append
30
30
  * failure). Optional so existing destructures keep compiling. */
31
31
  readonly warnings?: readonly string[];
32
32
  }
33
- /** Resolve the slice dir used by both writer + reader — keeps tests
34
- * insulated from real sessions. */
33
+ /** Resolve the slice dir — kept for API/BC (run-driver.ts uses it to
34
+ * derive `cyclesDir`). The monotonic-runner writer no longer writes
35
+ * here; the jsonl-store is the new persistence layer. */
35
36
  export declare function sliceDir(projectRoot: string, sid: string, rid: string): string;
36
- /** Load the most recent prior cycle (highest-N `cycle-N.json`) for
37
- * `(sid, rid)` from the slice dir; falls back to the
38
- * `.peaks/_sub_agents/<sid>/shared/` dir when no slice-level prior
39
- * cycle exists. Returns `null` on any read error. */
37
+ /** Load the most recent prior cycle for `(sid, rid)` from the
38
+ * per-session jsonl store (tail scan, O(N) where N = total jsonl
39
+ * lines, ~50-100 for a 24h run). Falls back to the legacy
40
+ * `.peaks/_sub_agents/<sid>/shared/` dir for cross-session signal.
41
+ * Returns `null` on any read error. */
40
42
  export declare function loadPreviousCycle(projectRoot: string, sid: string, rid: string): MonotonicCycle | null;
41
- /** Determine the next cycle index — `max(prior) + 1`, or `1` when none exist. */
43
+ /** Determine the next cycle index — reads the most recent jsonl
44
+ * cycle line's `cycle` field + 1 (or `1` when none exist). `rid`
45
+ * retained for API compatibility — the jsonl-store is per-session,
46
+ * but the line tag carries `rid` so the reader filters to this rid.
47
+ */
42
48
  export declare function nextCycleIndex(projectRoot: string, sid: string, rid: string): number;
43
- /** Run the guard end-to-end: walk the 4 evaluators, persist the current
44
- * cycle score rows, compare against the prior cycle, return a
45
- * structured report. */
49
+ /** Run the guard end-to-end: walk the 4 evaluators, persist the
50
+ * current cycle to the jsonl store, compare against the prior cycle,
51
+ * return a structured report. */
46
52
  export declare function runMonotonicCheck(options: RunMonotonicOptions): RunMonotonicResult;
47
53
  /** Helper for tests + CLI — resolve project root + sid consistently. */
48
54
  export declare function resolveMonotonicContext(opts: {
@@ -5,22 +5,26 @@
5
5
  * cycle's score rows (per evaluator), invokes each evaluator against
6
6
  * the current rid + project, then compares adjacent cycles.
7
7
  *
8
- * - current cycle score rows are stored at
9
- * .peaks/_runtime/<sid>/loop/<rid>/cycle-<N>.json
10
- * - previous cycle rows are loaded from the same directory
11
- * (or from `.peaks/_sub_agents/<sid>/shared/cycle-<M>.json`
12
- * if the slice directory is empty).
8
+ * - current cycle score rows are appended to the per-session jsonl
9
+ * store at `.peaks/_runtime/<sid>/metrics/slices.jsonl` with the
10
+ * tag `{"kind":"monotonic-cycle","rid":"<rid>","cycle":N,"scores":[...]}`.
11
+ * - previous cycle rows are read from the same jsonl store (last
12
+ * matching tag, O(1) tail scan). When no jsonl record exists, the
13
+ * reader falls back to the legacy `.peaks/_sub_agents/<sid>/shared/`
14
+ * dir (still reads cycle-N.json) for cross-batch/session signal.
13
15
  * - missing previous cycle → skip (not abort).
14
16
  *
15
- * Karpathy §2 Simplicity First: shell-out to existing
16
- * `dispatchEvaluator`, persist JSON to disk; no new deps.
17
+ * Karpathy §2 Simplicity First: reuse `appendMetricLine` +
18
+ * `readMetricLines` from `observability/jsonl-store.ts`. One append per
19
+ * cycle replaces N cycle-N.json files; tail scan replaces readdirSync +
20
+ * regex.
17
21
  *
18
22
  * File budget: ≤ 800 lines (Karpathy §2).
19
23
  */
20
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
21
24
  import { join } from 'node:path';
22
25
  import { dispatchEvaluator } from './evaluator-dispatcher.js';
23
26
  import { checkMonotonicImprovement, toScoreRow, DEFAULT_MONOTONIC_THRESHOLD } from './monotonic-guard.js';
27
+ import { appendMetricLine, readMetricLines } from '../observability/jsonl-store.js';
24
28
  import { findProjectRoot } from '../config/config-safety.js';
25
29
  function classifyFsError(err) {
26
30
  const code = err?.code;
@@ -28,6 +32,8 @@ function classifyFsError(err) {
28
32
  return 'NOT_FOUND';
29
33
  return 'IO_ERROR';
30
34
  }
35
+ /** Tag for cycle lines in the jsonl-store. */
36
+ const MONOTONIC_CYCLE_KIND = 'monotonic-cycle';
31
37
  /** Set of evaluator kinds the loop walker actually scores — keeps the
32
38
  * guard surface tight (the verdict-aggregate is the cross-source merge
33
39
  * and not a per-cycle input). */
@@ -37,29 +43,94 @@ const WALKED_EVALUATORS = [
37
43
  'security-review',
38
44
  'perf-baseline'
39
45
  ];
40
- /** Resolve the slice dir used by both writer + reader — keeps tests
41
- * insulated from real sessions. */
46
+ /** Resolve the slice dir — kept for API/BC (run-driver.ts uses it to
47
+ * derive `cyclesDir`). The monotonic-runner writer no longer writes
48
+ * here; the jsonl-store is the new persistence layer. */
42
49
  export function sliceDir(projectRoot, sid, rid) {
43
50
  return join(projectRoot, '.peaks', '_runtime', sid, 'loop', rid);
44
51
  }
45
- /** Load the most recent prior cycle (highest-N `cycle-N.json`) for
46
- * `(sid, rid)` from the slice dir; falls back to the
47
- * `.peaks/_sub_agents/<sid>/shared/` dir when no slice-level prior
48
- * cycle exists. Returns `null` on any read error. */
52
+ /** Load the most recent prior cycle for `(sid, rid)` from the
53
+ * per-session jsonl store (tail scan, O(N) where N = total jsonl
54
+ * lines, ~50-100 for a 24h run). Falls back to the legacy
55
+ * `.peaks/_sub_agents/<sid>/shared/` dir for cross-session signal.
56
+ * Returns `null` on any read error. */
49
57
  export function loadPreviousCycle(projectRoot, sid, rid) {
50
- return loadMostRecentCycle(sliceDir(projectRoot, sid, rid))
51
- ?? loadMostRecentCycleFromSubAgents(projectRoot, sid);
58
+ return loadMostRecentCycleFromJsonl(projectRoot, sid, rid)
59
+ ?? loadMostRecentCycleFromSubAgents(projectRoot, sid, rid);
52
60
  }
53
- function loadMostRecentCycleFromSubAgents(projectRoot, sid) {
61
+ /** Scan the jsonl-store from tail backwards for the most recent
62
+ * `monotonic-cycle` line matching `rid`. Returns `null` when no
63
+ * matching line exists or any line is malformed. */
64
+ function loadMostRecentCycleFromJsonl(projectRoot, sid, rid) {
65
+ const lines = readMetricLines(projectRoot, sid);
66
+ for (let i = lines.length - 1; i >= 0; i--) {
67
+ const line = lines[i] ?? '';
68
+ const parsed = parseCycleLine(line, rid);
69
+ if (parsed !== null)
70
+ return parsed;
71
+ }
72
+ return null;
73
+ }
74
+ function parseCycleLine(raw, rid) {
75
+ let obj;
76
+ try {
77
+ const v = JSON.parse(raw);
78
+ if (v === null || typeof v !== 'object')
79
+ return null;
80
+ obj = v;
81
+ }
82
+ catch {
83
+ return null;
84
+ }
85
+ if (obj['kind'] !== MONOTONIC_CYCLE_KIND)
86
+ return null;
87
+ if (typeof obj['rid'] !== 'string' || obj['rid'] !== rid)
88
+ return null;
89
+ const cycle = typeof obj['cycle'] === 'number' ? obj['cycle'] : 0;
90
+ const scores = parseScoreRows(obj['scores']);
91
+ return { cycle, scores };
92
+ }
93
+ function parseScoreRows(raw) {
94
+ if (!Array.isArray(raw))
95
+ return [];
96
+ const out = [];
97
+ for (const s of raw) {
98
+ if (s === null || typeof s !== 'object')
99
+ continue;
100
+ const r = s;
101
+ if (typeof r['evaluator'] !== 'string')
102
+ continue;
103
+ const gate = r['gateAction'];
104
+ if (gate !== 'pass' && gate !== 'warn' && gate !== 'block')
105
+ continue;
106
+ const observedAt = typeof r['observedAt'] === 'string' ? r['observedAt'] : new Date(0).toISOString();
107
+ out.push({
108
+ evaluator: r['evaluator'],
109
+ score: typeof r['score'] === 'number' ? r['score'] : (gate === 'pass' ? 1.0 : gate === 'warn' ? 0.5 : 0.0),
110
+ gateAction: gate,
111
+ degraded: r['degraded'] === true,
112
+ observedAt
113
+ });
114
+ }
115
+ return out;
116
+ }
117
+ /** Legacy fallback: read the most recent `cycle-N.json` from the
118
+ * `.peaks/_sub_agents/<sid>/shared/` dir (cross-session signal).
119
+ * Kept verbatim so existing cross-batch signals remain readable. */
120
+ function loadMostRecentCycleFromSubAgents(projectRoot, sid, rid) {
54
121
  const dir = join(projectRoot, '.peaks', '_sub_agents', sid, 'shared');
55
- return loadMostRecentCycle(dir);
122
+ return loadMostRecentCycleFromDir(dir, rid);
56
123
  }
57
- function loadMostRecentCycle(dir) {
58
- if (!existsSync(dir))
124
+ function loadMostRecentCycleFromDir(dir, rid) {
125
+ // Lazily import so unit tests in non-windows environments don't pull
126
+ // node:fs through a static `import`.
127
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
128
+ const fs = require('node:fs');
129
+ if (!fs.existsSync(dir))
59
130
  return null;
60
131
  const readdir = (() => {
61
132
  try {
62
- return { ok: true, value: require('node:fs').readdirSync(dir) };
133
+ return { ok: true, value: fs.readdirSync(dir) };
63
134
  }
64
135
  catch (err) {
65
136
  return { ok: false, reason: classifyFsError(err) };
@@ -82,7 +153,7 @@ function loadMostRecentCycle(dir) {
82
153
  const target = join(dir, `cycle-${bestCycle}.json`);
83
154
  const readFile = (() => {
84
155
  try {
85
- return { ok: true, value: readFileSync(target, 'utf8') };
156
+ return { ok: true, value: fs.readFileSync(target, 'utf8') };
86
157
  }
87
158
  catch (err) {
88
159
  return { ok: false, reason: classifyFsError(err) };
@@ -90,9 +161,14 @@ function loadMostRecentCycle(dir) {
90
161
  })();
91
162
  if (!readFile.ok)
92
163
  return null;
93
- return parseCycle(readFile.value, bestCycle);
164
+ const parsed = parseLegacyCycleFile(readFile.value, bestCycle);
165
+ // `rid` param retained for BC with the legacy dir shape (legacy
166
+ // files are shared across rids); include it in the parsed object so
167
+ // future cross-rid reads stay consistent.
168
+ void rid;
169
+ return parsed;
94
170
  }
95
- function parseCycle(raw, fallbackCycle) {
171
+ function parseLegacyCycleFile(raw, fallbackCycle) {
96
172
  const parse = (() => {
97
173
  try {
98
174
  return { ok: true, value: JSON.parse(raw) };
@@ -107,38 +183,23 @@ function parseCycle(raw, fallbackCycle) {
107
183
  if (parsed === null || typeof parsed !== 'object')
108
184
  return null;
109
185
  const obj = parsed;
110
- const scores = Array.isArray(obj['scores']) ? obj['scores'] : [];
111
- const rows = [];
112
- for (const s of scores) {
113
- if (s === null || typeof s !== 'object')
114
- continue;
115
- const r = s;
116
- if (typeof r['evaluator'] !== 'string')
117
- continue;
118
- const gate = r['gateAction'];
119
- if (gate !== 'pass' && gate !== 'warn' && gate !== 'block')
120
- continue;
121
- const observedAt = typeof r['observedAt'] === 'string' ? r['observedAt'] : new Date(0).toISOString();
122
- rows.push({
123
- evaluator: r['evaluator'],
124
- score: typeof r['score'] === 'number' ? r['score'] : (gate === 'pass' ? 1.0 : gate === 'warn' ? 0.5 : 0.0),
125
- gateAction: gate,
126
- degraded: r['degraded'] === true,
127
- observedAt
128
- });
129
- }
130
- return { cycle: typeof obj['cycle'] === 'number' ? obj['cycle'] : fallbackCycle, scores: rows };
186
+ const scores = parseScoreRows(obj['scores']);
187
+ return { cycle: typeof obj['cycle'] === 'number' ? obj['cycle'] : fallbackCycle, scores };
131
188
  }
132
- /** Determine the next cycle index — `max(prior) + 1`, or `1` when none exist. */
189
+ /** Determine the next cycle index — reads the most recent jsonl
190
+ * cycle line's `cycle` field + 1 (or `1` when none exist). `rid`
191
+ * retained for API compatibility — the jsonl-store is per-session,
192
+ * but the line tag carries `rid` so the reader filters to this rid.
193
+ */
133
194
  export function nextCycleIndex(projectRoot, sid, rid) {
134
195
  const prev = loadPreviousCycle(projectRoot, sid, rid);
135
196
  if (prev === null)
136
197
  return 1;
137
198
  return prev.cycle + 1;
138
199
  }
139
- /** Run the guard end-to-end: walk the 4 evaluators, persist the current
140
- * cycle score rows, compare against the prior cycle, return a
141
- * structured report. */
200
+ /** Run the guard end-to-end: walk the 4 evaluators, persist the
201
+ * current cycle to the jsonl store, compare against the prior cycle,
202
+ * return a structured report. */
142
203
  export function runMonotonicCheck(options) {
143
204
  const threshold = options.threshold ?? DEFAULT_MONOTONIC_THRESHOLD;
144
205
  const persist = options.persist !== false;
@@ -174,42 +235,20 @@ export function runMonotonicCheck(options) {
174
235
  let persistedAt = null;
175
236
  const envelopeWarns = [];
176
237
  if (persist) {
177
- const dir = sliceDir(options.projectRoot, options.sid, options.rid);
178
- const mkdir = (() => {
179
- try {
180
- mkdirSync(dir, { recursive: true });
181
- return { ok: true, value: undefined };
182
- }
183
- catch (err) {
184
- return { ok: false, reason: classifyFsError(err) };
185
- }
186
- })();
187
- if (!mkdir.ok) {
188
- envelopeWarns.push(`mkdir-failed: ${dir} (${mkdir.reason})`);
189
- }
190
- const path = join(dir, `cycle-${cycle}.json`);
191
- const payload = JSON.stringify({
192
- cycle,
238
+ const line = {
239
+ kind: MONOTONIC_CYCLE_KIND,
193
240
  rid: options.rid,
194
- sid: options.sid,
241
+ cycle,
195
242
  persistedAt: new Date().toISOString(),
196
243
  scores: rows
197
- });
198
- const writeFile = (() => {
199
- try {
200
- writeFileSync(path, payload, 'utf8');
201
- return { ok: true, value: undefined };
202
- }
203
- catch (err) {
204
- return { ok: false, reason: classifyFsError(err) };
205
- }
206
- })();
207
- if (writeFile.ok) {
208
- persistedAt = path;
244
+ };
245
+ const ok = appendMetricLine(options.projectRoot, options.sid, JSON.stringify(line));
246
+ if (ok) {
247
+ persistedAt = `jsonl:${options.sid}#cycle=${cycle}`;
209
248
  }
210
249
  else {
211
250
  persistedAt = null;
212
- envelopeWarns.push(`write-failed: ${path} (${writeFile.reason})`);
251
+ envelopeWarns.push(`append-failed: jsonl-store for sid=${options.sid} cycle=${cycle}`);
213
252
  }
214
253
  }
215
254
  return {
@@ -0,0 +1,8 @@
1
+ import type { BackupPlanOptions, ExtractPlanOptions, ExtractSessionMemoriesOptions, ExtractSessionMemoriesResult, ProjectMemoryBackupPlan, ProjectMemoryBackupResult, ProjectMemoryBackupSummary, ProjectMemoryExtractPlan, ProjectMemoryExtractResult, ProjectMemoryExtractSummary } from '../types.js';
2
+ export declare function createProjectMemoryExtractPlan(options: ExtractPlanOptions): ProjectMemoryExtractPlan;
3
+ export declare function executeProjectMemoryExtract(options: ExtractPlanOptions): ProjectMemoryExtractResult;
4
+ export declare function createProjectMemoryBackupPlan(options: BackupPlanOptions): ProjectMemoryBackupPlan;
5
+ export declare function executeProjectMemoryBackup(options: BackupPlanOptions): ProjectMemoryBackupResult;
6
+ export declare function summarizeProjectMemoryExtractResult(result: ProjectMemoryExtractResult): ProjectMemoryExtractSummary;
7
+ export declare function summarizeProjectMemoryBackupResult(result: ProjectMemoryBackupResult): ProjectMemoryBackupSummary;
8
+ export declare function extractSessionMemories(options: ExtractSessionMemoriesOptions): ExtractSessionMemoriesResult;