peaks-loop 4.0.0-beta.8 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1293) hide show
  1. package/CHANGELOG.md +955 -141
  2. package/README-en.md +26 -7
  3. package/README.md +75 -6
  4. package/agents/karpathy-reviewer.md +33 -0
  5. package/bin/peaks.js +1 -1
  6. package/dist/cli/cli-helpers.d.ts +68 -0
  7. package/dist/cli/cli-helpers.js +109 -0
  8. package/dist/cli/commands/_cli-error-envelope.d.ts +19 -0
  9. package/dist/cli/commands/_cli-error-envelope.js +50 -0
  10. package/dist/cli/commands/_register.d.ts +3 -0
  11. package/dist/cli/commands/_register.js +139 -0
  12. package/dist/cli/commands/_super.d.ts +10 -0
  13. package/dist/cli/commands/_super.js +97 -0
  14. package/dist/cli/commands/adapter-commands-s2a.d.ts +34 -0
  15. package/dist/cli/commands/adapter-commands-s2a.js +92 -0
  16. package/dist/cli/commands/adapter-commands.d.ts +30 -0
  17. package/dist/cli/commands/adapter-commands.js +35 -0
  18. package/dist/cli/commands/asset-commands.d.ts +45 -0
  19. package/dist/cli/commands/asset-commands.js +421 -0
  20. package/dist/cli/commands/audit-commands.d.ts +28 -0
  21. package/dist/cli/commands/audit-commands.js +437 -0
  22. package/dist/cli/commands/autonomous-swarm-commands.d.ts +12 -0
  23. package/dist/cli/commands/autonomous-swarm-commands.js +120 -0
  24. package/dist/cli/commands/bee-commands.d.ts +26 -0
  25. package/dist/cli/commands/bee-commands.js +169 -0
  26. package/dist/cli/commands/capability-commands.d.ts +16 -0
  27. package/dist/cli/commands/capability-commands.js +45 -0
  28. package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +3 -0
  29. package/dist/cli/commands/capability-worker-config-sc-commands.js +8 -0
  30. package/dist/cli/commands/changeset-commands.d.ts +13 -0
  31. package/dist/cli/commands/changeset-commands.js +46 -0
  32. package/dist/cli/commands/code-commands.d.ts +90 -0
  33. package/dist/cli/commands/code-commands.js +118 -0
  34. package/dist/cli/commands/code-job-shape-commands.d.ts +9 -0
  35. package/dist/cli/commands/code-job-shape-commands.js +164 -0
  36. package/dist/cli/commands/code-mode-gate-commands.d.ts +9 -0
  37. package/dist/cli/commands/code-mode-gate-commands.js +223 -0
  38. package/dist/cli/commands/code-review-commands.d.ts +34 -0
  39. package/dist/cli/commands/code-review-commands.js +83 -0
  40. package/dist/cli/commands/code-run-command.d.ts +12 -0
  41. package/dist/cli/commands/code-run-command.js +68 -0
  42. package/dist/cli/commands/code-runtime-commands.d.ts +11 -0
  43. package/dist/cli/commands/code-runtime-commands.js +391 -0
  44. package/dist/cli/commands/codegraph-commands.d.ts +3 -0
  45. package/dist/cli/commands/codegraph-commands.js +99 -0
  46. package/dist/cli/commands/compact-command.d.ts +21 -0
  47. package/dist/cli/commands/compact-command.js +304 -0
  48. package/dist/cli/commands/complexity-commands.d.ts +9 -0
  49. package/dist/cli/commands/complexity-commands.js +34 -0
  50. package/dist/cli/commands/config-commands.d.ts +3 -0
  51. package/dist/cli/commands/config-commands.js +149 -0
  52. package/dist/cli/commands/container-commands.d.ts +28 -0
  53. package/dist/cli/commands/container-commands.js +221 -0
  54. package/dist/cli/commands/context-builder-commands.d.ts +11 -0
  55. package/dist/cli/commands/context-builder-commands.js +85 -0
  56. package/dist/cli/commands/context-commands.d.ts +21 -0
  57. package/dist/cli/commands/context-commands.js +255 -0
  58. package/dist/cli/commands/core/artifacts-command.d.ts +3 -0
  59. package/dist/cli/commands/core/artifacts-command.js +62 -0
  60. package/dist/cli/commands/core/binding-commands.d.ts +3 -0
  61. package/dist/cli/commands/core/binding-commands.js +58 -0
  62. package/dist/cli/commands/core/doctor-command.d.ts +11 -0
  63. package/dist/cli/commands/core/doctor-command.js +264 -0
  64. package/dist/cli/commands/core/memory-command.d.ts +3 -0
  65. package/dist/cli/commands/core/memory-command.js +98 -0
  66. package/dist/cli/commands/core/profile-command.d.ts +3 -0
  67. package/dist/cli/commands/core/profile-command.js +9 -0
  68. package/dist/cli/commands/core/proxy-command.d.ts +3 -0
  69. package/dist/cli/commands/core/proxy-command.js +26 -0
  70. package/dist/cli/commands/core/session-command.d.ts +3 -0
  71. package/dist/cli/commands/core/session-command.js +243 -0
  72. package/dist/cli/commands/core/skill-command.d.ts +3 -0
  73. package/dist/cli/commands/core/skill-command.js +303 -0
  74. package/dist/cli/commands/core/standards-command.d.ts +3 -0
  75. package/dist/cli/commands/core/standards-command.js +95 -0
  76. package/dist/cli/commands/core-artifact-commands.d.ts +15 -0
  77. package/dist/cli/commands/core-artifact-commands.js +31 -0
  78. package/dist/cli/commands/cron-commands.d.ts +57 -0
  79. package/dist/cli/commands/cron-commands.js +257 -0
  80. package/dist/cli/commands/cron-scheduler-commands.d.ts +47 -0
  81. package/dist/cli/commands/cron-scheduler-commands.js +284 -0
  82. package/dist/cli/commands/dashboard-commands.d.ts +4 -0
  83. package/dist/cli/commands/dashboard-commands.js +10 -0
  84. package/dist/cli/commands/dashboard-long-run.d.ts +25 -0
  85. package/dist/cli/commands/dashboard-long-run.js +122 -0
  86. package/dist/cli/commands/dashboard-summary.d.ts +12 -0
  87. package/dist/cli/commands/dashboard-summary.js +58 -0
  88. package/dist/cli/commands/dispatch-commands.d.ts +3 -0
  89. package/dist/cli/commands/dispatch-commands.js +715 -0
  90. package/dist/cli/commands/dispatch-from-dag.d.ts +3 -0
  91. package/dist/cli/commands/dispatch-from-dag.js +254 -0
  92. package/dist/cli/commands/doc-commands.d.ts +11 -0
  93. package/dist/cli/commands/doc-commands.js +65 -0
  94. package/dist/cli/commands/ecc-commands.d.ts +30 -0
  95. package/dist/cli/commands/ecc-commands.js +119 -0
  96. package/dist/cli/commands/evolution-commands.d.ts +27 -0
  97. package/dist/cli/commands/evolution-commands.js +393 -0
  98. package/dist/cli/commands/feedback-commands.d.ts +18 -0
  99. package/dist/cli/commands/feedback-commands.js +145 -0
  100. package/dist/cli/commands/final-review-commands.d.ts +31 -0
  101. package/dist/cli/commands/final-review-commands.js +161 -0
  102. package/dist/cli/commands/fixture-commands.d.ts +32 -0
  103. package/dist/cli/commands/fixture-commands.js +91 -0
  104. package/dist/cli/commands/fork-commands.d.ts +16 -0
  105. package/dist/cli/commands/fork-commands.js +163 -0
  106. package/dist/cli/commands/gate-commands.d.ts +3 -0
  107. package/dist/cli/commands/gate-commands.js +239 -0
  108. package/dist/cli/commands/governance-classify-contract-commands.d.ts +21 -0
  109. package/dist/cli/commands/governance-classify-contract-commands.js +273 -0
  110. package/dist/cli/commands/heartbeat-commands.d.ts +3 -0
  111. package/dist/cli/commands/heartbeat-commands.js +206 -0
  112. package/dist/cli/commands/heartbeat-watch-command.d.ts +31 -0
  113. package/dist/cli/commands/heartbeat-watch-command.js +146 -0
  114. package/dist/cli/commands/hook-handle.d.ts +17 -0
  115. package/dist/cli/commands/hook-handle.js +157 -0
  116. package/dist/cli/commands/hooks-commands.d.ts +3 -0
  117. package/dist/cli/commands/hooks-commands.js +272 -0
  118. package/dist/cli/commands/ide-commands.d.ts +25 -0
  119. package/dist/cli/commands/ide-commands.js +42 -0
  120. package/dist/cli/commands/impact-commands.d.ts +15 -0
  121. package/dist/cli/commands/impact-commands.js +62 -0
  122. package/dist/cli/commands/job-commands.d.ts +3 -0
  123. package/dist/cli/commands/job-commands.js +322 -0
  124. package/dist/cli/commands/lease-metrics-commands.d.ts +67 -0
  125. package/dist/cli/commands/lease-metrics-commands.js +231 -0
  126. package/dist/cli/commands/lease-stats-commands.d.ts +65 -0
  127. package/dist/cli/commands/lease-stats-commands.js +107 -0
  128. package/dist/cli/commands/legacy-commands.d.ts +11 -0
  129. package/dist/cli/commands/legacy-commands.js +32 -0
  130. package/dist/cli/commands/log-commands.d.ts +17 -0
  131. package/dist/cli/commands/log-commands.js +64 -0
  132. package/dist/cli/commands/loop-commands.d.ts +27 -0
  133. package/dist/cli/commands/loop-commands.js +262 -0
  134. package/dist/cli/commands/loop-eval-commands.d.ts +20 -0
  135. package/dist/cli/commands/loop-eval-commands.js +526 -0
  136. package/dist/cli/commands/memory-commands.d.ts +23 -0
  137. package/dist/cli/commands/memory-commands.js +129 -0
  138. package/dist/cli/commands/migrate-1-4-1-command.d.ts +11 -0
  139. package/dist/cli/commands/migrate-1-4-1-command.js +34 -0
  140. package/dist/cli/commands/migrate-v2-10-to-v2-11-command.d.ts +20 -0
  141. package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +52 -0
  142. package/dist/cli/commands/mut-commands.d.ts +20 -0
  143. package/dist/cli/commands/mut-commands.js +235 -0
  144. package/dist/cli/commands/observability-commands.d.ts +22 -0
  145. package/dist/cli/commands/observability-commands.js +201 -0
  146. package/dist/cli/commands/openspec-commands.d.ts +3 -0
  147. package/dist/cli/commands/openspec-commands.js +298 -0
  148. package/dist/cli/commands/perf-audit-commands.d.ts +22 -0
  149. package/dist/cli/commands/perf-audit-commands.js +132 -0
  150. package/dist/cli/commands/perf-commands.d.ts +3 -0
  151. package/dist/cli/commands/perf-commands.js +41 -0
  152. package/dist/cli/commands/playwright-commands.d.ts +95 -0
  153. package/dist/cli/commands/playwright-commands.js +432 -0
  154. package/dist/cli/commands/polyrepo-commands.d.ts +37 -0
  155. package/dist/cli/commands/polyrepo-commands.js +155 -0
  156. package/dist/cli/commands/prd-blocks-commands.d.ts +18 -0
  157. package/dist/cli/commands/prd-blocks-commands.js +50 -0
  158. package/dist/cli/commands/prd-commands.d.ts +18 -0
  159. package/dist/cli/commands/prd-commands.js +143 -0
  160. package/dist/cli/commands/preferences-commands.d.ts +2 -0
  161. package/dist/cli/commands/preferences-commands.js +217 -0
  162. package/dist/cli/commands/project-commands.d.ts +3 -0
  163. package/dist/cli/commands/project-commands.js +253 -0
  164. package/dist/cli/commands/qa-business-review-commands.d.ts +17 -0
  165. package/dist/cli/commands/qa-business-review-commands.js +148 -0
  166. package/dist/cli/commands/qa-commands.d.ts +94 -0
  167. package/dist/cli/commands/qa-commands.js +307 -0
  168. package/dist/cli/commands/release-commands.d.ts +39 -0
  169. package/dist/cli/commands/release-commands.js +323 -0
  170. package/dist/cli/commands/request-commands.d.ts +3 -0
  171. package/dist/cli/commands/request-commands.js +548 -0
  172. package/dist/cli/commands/retrospective-commands.d.ts +12 -0
  173. package/dist/cli/commands/retrospective-commands.js +175 -0
  174. package/dist/cli/commands/reviewer-commands.d.ts +14 -0
  175. package/dist/cli/commands/reviewer-commands.js +64 -0
  176. package/dist/cli/commands/role-commands.d.ts +13 -0
  177. package/dist/cli/commands/role-commands.js +85 -0
  178. package/dist/cli/commands/runtime-commands-helpers.d.ts +7 -0
  179. package/dist/cli/commands/runtime-commands-helpers.js +24 -0
  180. package/dist/cli/commands/runtime-commands.d.ts +52 -0
  181. package/dist/cli/commands/runtime-commands.js +149 -0
  182. package/dist/cli/commands/sc-commands.d.ts +3 -0
  183. package/dist/cli/commands/sc-commands.js +47 -0
  184. package/dist/cli/commands/scan-commands.d.ts +3 -0
  185. package/dist/cli/commands/scan-commands.js +445 -0
  186. package/dist/cli/commands/security-audit-commands.d.ts +23 -0
  187. package/dist/cli/commands/security-audit-commands.js +132 -0
  188. package/dist/cli/commands/sediment-commands.d.ts +80 -0
  189. package/dist/cli/commands/sediment-commands.js +658 -0
  190. package/dist/cli/commands/session-24h-mode.d.ts +26 -0
  191. package/dist/cli/commands/session-24h-mode.js +196 -0
  192. package/dist/cli/commands/session-checkpoint-command.d.ts +10 -0
  193. package/dist/cli/commands/session-checkpoint-command.js +100 -0
  194. package/dist/cli/commands/session-migrate-skill-name.d.ts +17 -0
  195. package/dist/cli/commands/session-migrate-skill-name.js +41 -0
  196. package/dist/cli/commands/session-resume-command.d.ts +11 -0
  197. package/dist/cli/commands/session-resume-command.js +83 -0
  198. package/dist/cli/commands/share-commands.d.ts +36 -0
  199. package/dist/cli/commands/share-commands.js +415 -0
  200. package/dist/cli/commands/skill-conformance-commands.d.ts +9 -0
  201. package/dist/cli/commands/skill-conformance-commands.js +39 -0
  202. package/dist/cli/commands/skill-loop-engineering-readiness-commands.d.ts +67 -0
  203. package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +173 -0
  204. package/dist/cli/commands/skill-search-commands.d.ts +25 -0
  205. package/dist/cli/commands/skill-search-commands.js +71 -0
  206. package/dist/cli/commands/skill-visibility.d.ts +8 -0
  207. package/dist/cli/commands/skill-visibility.js +63 -0
  208. package/dist/cli/commands/slice-commands.d.ts +24 -0
  209. package/dist/cli/commands/slice-commands.js +492 -0
  210. package/dist/cli/commands/slice-integrate-commands.d.ts +11 -0
  211. package/dist/cli/commands/slice-integrate-commands.js +74 -0
  212. package/dist/cli/commands/slice-review-commands.d.ts +23 -0
  213. package/dist/cli/commands/slice-review-commands.js +162 -0
  214. package/dist/cli/commands/smoke-commands.d.ts +21 -0
  215. package/dist/cli/commands/smoke-commands.js +203 -0
  216. package/dist/cli/commands/sop-commands.d.ts +3 -0
  217. package/dist/cli/commands/sop-commands.js +215 -0
  218. package/dist/cli/commands/spill-demo-command.d.ts +7 -0
  219. package/dist/cli/commands/spill-demo-command.js +29 -0
  220. package/dist/cli/commands/statusline-commands.d.ts +15 -0
  221. package/dist/cli/commands/statusline-commands.js +231 -0
  222. package/dist/cli/commands/sub-agent-commands.d.ts +22 -0
  223. package/dist/cli/commands/sub-agent-commands.js +20 -0
  224. package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +55 -0
  225. package/dist/cli/commands/sub-agent-dispatch-guard.js +57 -0
  226. package/dist/cli/commands/sub-agent-shared.d.ts +109 -0
  227. package/dist/cli/commands/sub-agent-shared.js +90 -0
  228. package/dist/cli/commands/swarm-commands.d.ts +13 -0
  229. package/dist/cli/commands/swarm-commands.js +77 -0
  230. package/dist/cli/commands/tech-commands.d.ts +64 -0
  231. package/dist/cli/commands/tech-commands.js +195 -0
  232. package/dist/cli/commands/test-commands.d.ts +47 -0
  233. package/dist/cli/commands/test-commands.js +204 -0
  234. package/dist/cli/commands/understand-commands.d.ts +3 -0
  235. package/dist/cli/commands/understand-commands.js +148 -0
  236. package/dist/cli/commands/upgrade-commands.d.ts +25 -0
  237. package/dist/cli/commands/upgrade-commands.js +154 -0
  238. package/dist/cli/commands/user-touchpoint-commands.d.ts +18 -0
  239. package/dist/cli/commands/user-touchpoint-commands.js +78 -0
  240. package/dist/cli/commands/verdict-aggregate-command.d.ts +14 -0
  241. package/dist/cli/commands/verdict-aggregate-command.js +106 -0
  242. package/dist/cli/commands/vm-commands.d.ts +31 -0
  243. package/dist/cli/commands/vm-commands.js +274 -0
  244. package/dist/cli/commands/workflow-commands.d.ts +3 -0
  245. package/dist/cli/commands/workflow-commands.js +567 -0
  246. package/dist/cli/commands/workflow-plan-commands.d.ts +39 -0
  247. package/dist/cli/commands/workflow-plan-commands.js +163 -0
  248. package/dist/cli/commands/workspace/clean-command.d.ts +14 -0
  249. package/dist/cli/commands/workspace/clean-command.js +49 -0
  250. package/dist/cli/commands/workspace/helpers.d.ts +28 -0
  251. package/dist/cli/commands/workspace/helpers.js +87 -0
  252. package/dist/cli/commands/workspace/init-command.d.ts +139 -0
  253. package/dist/cli/commands/workspace/init-command.js +505 -0
  254. package/dist/cli/commands/workspace/migrate-command.d.ts +11 -0
  255. package/dist/cli/commands/workspace/migrate-command.js +91 -0
  256. package/dist/cli/commands/workspace/reconcile-command.d.ts +14 -0
  257. package/dist/cli/commands/workspace/reconcile-command.js +103 -0
  258. package/dist/cli/commands/workspace-commands.d.ts +18 -0
  259. package/dist/cli/commands/workspace-commands.js +50 -0
  260. package/dist/cli/commands/worktree-auth-commands.d.ts +29 -0
  261. package/dist/cli/commands/worktree-auth-commands.js +652 -0
  262. package/dist/cli/index.d.ts +1 -0
  263. package/dist/cli/index.js +75 -0
  264. package/dist/cli/program.d.ts +5 -0
  265. package/dist/cli/program.js +213 -0
  266. package/dist/hooks/pre-tool-use-sub-agent.d.ts +28 -0
  267. package/dist/hooks/pre-tool-use-sub-agent.js +105 -0
  268. package/dist/lib/render/message-renderer.d.ts +20 -0
  269. package/dist/lib/render/message-renderer.js +80 -0
  270. package/dist/services/24h-mode/decider.d.ts +103 -0
  271. package/dist/services/24h-mode/decider.js +144 -0
  272. package/dist/services/24h-mode/index.d.ts +12 -0
  273. package/dist/services/24h-mode/index.js +12 -0
  274. package/dist/services/24h-mode/state.d.ts +48 -0
  275. package/dist/services/24h-mode/state.js +51 -0
  276. package/dist/services/24h-mode/store.d.ts +27 -0
  277. package/dist/services/24h-mode/store.js +119 -0
  278. package/dist/services/adapter/adapter-registry.d.ts +48 -0
  279. package/dist/services/adapter/adapter-registry.js +186 -0
  280. package/dist/services/adapter/adapter.d.ts +27 -0
  281. package/dist/services/adapter/adapter.js +5 -0
  282. package/dist/services/adapter/auto-adapter.d.ts +11 -0
  283. package/dist/services/adapter/auto-adapter.js +15 -0
  284. package/dist/services/adapter/claude-adapter.d.ts +14 -0
  285. package/dist/services/adapter/claude-adapter.js +40 -0
  286. package/dist/services/adapter/codex-adapter.d.ts +14 -0
  287. package/dist/services/adapter/codex-adapter.js +14 -0
  288. package/dist/services/adapter/copilot-adapter.d.ts +14 -0
  289. package/dist/services/adapter/copilot-adapter.js +14 -0
  290. package/dist/services/artifacts/artifact-lint-service.d.ts +23 -0
  291. package/dist/services/artifacts/artifact-lint-service.js +99 -0
  292. package/dist/services/artifacts/artifact-prerequisites.d.ts +78 -0
  293. package/dist/services/artifacts/artifact-prerequisites.js +491 -0
  294. package/dist/services/artifacts/artifact-service.d.ts +43 -0
  295. package/dist/services/artifacts/artifact-service.js +98 -0
  296. package/dist/services/artifacts/artifact-templates.d.ts +30 -0
  297. package/dist/services/artifacts/artifact-templates.js +302 -0
  298. package/dist/services/artifacts/repair-cycle-service.d.ts +23 -0
  299. package/dist/services/artifacts/repair-cycle-service.js +52 -0
  300. package/dist/services/artifacts/request-artifact-service.d.ts +116 -0
  301. package/dist/services/artifacts/request-artifact-service.js +451 -0
  302. package/dist/services/artifacts/request-artifact-state-helpers.d.ts +51 -0
  303. package/dist/services/artifacts/request-artifact-state-helpers.js +114 -0
  304. package/dist/services/artifacts/workspace-service.d.ts +34 -0
  305. package/dist/services/artifacts/workspace-service.js +272 -0
  306. package/dist/services/audit/artifact-writer.d.ts +93 -0
  307. package/dist/services/audit/artifact-writer.js +303 -0
  308. package/dist/services/audit/audit-goal-service.d.ts +35 -0
  309. package/dist/services/audit/audit-goal-service.js +75 -0
  310. package/dist/services/audit/audit-goal-types.d.ts +40 -0
  311. package/dist/services/audit/audit-goal-types.js +15 -0
  312. package/dist/services/audit/backing-detector.d.ts +24 -0
  313. package/dist/services/audit/backing-detector.js +59 -0
  314. package/dist/services/audit/classifier.d.ts +38 -0
  315. package/dist/services/audit/classifier.js +134 -0
  316. package/dist/services/audit/decision-writer.d.ts +76 -0
  317. package/dist/services/audit/decision-writer.js +217 -0
  318. package/dist/services/audit/enforcers/active-skill-resolver.d.ts +29 -0
  319. package/dist/services/audit/enforcers/active-skill-resolver.js +71 -0
  320. package/dist/services/audit/enforcers/code-ban.d.ts +23 -0
  321. package/dist/services/audit/enforcers/code-ban.js +27 -0
  322. package/dist/services/audit/enforcers/design-draft-confirm.d.ts +24 -0
  323. package/dist/services/audit/enforcers/design-draft-confirm.js +58 -0
  324. package/dist/services/audit/enforcers/lint-audit-regression.d.ts +21 -0
  325. package/dist/services/audit/enforcers/lint-audit-regression.js +86 -0
  326. package/dist/services/audit/enforcers/lint-bee-runtime-contract.d.ts +25 -0
  327. package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +91 -0
  328. package/dist/services/audit/enforcers/lint-catalog-governance.d.ts +32 -0
  329. package/dist/services/audit/enforcers/lint-catalog-governance.js +48 -0
  330. package/dist/services/audit/enforcers/lint-cli-back.d.ts +16 -0
  331. package/dist/services/audit/enforcers/lint-cli-back.js +35 -0
  332. package/dist/services/audit/enforcers/lint-output-style.d.ts +11 -0
  333. package/dist/services/audit/enforcers/lint-output-style.js +94 -0
  334. package/dist/services/audit/enforcers/lint-peaks-code-runtime.d.ts +16 -0
  335. package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +31 -0
  336. package/dist/services/audit/enforcers/lint-peaks-skill-runtime.d.ts +23 -0
  337. package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +59 -0
  338. package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.d.ts +28 -0
  339. package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +86 -0
  340. package/dist/services/audit/enforcers/lint-prd-artifact-handoff.d.ts +16 -0
  341. package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +41 -0
  342. package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +27 -0
  343. package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +47 -0
  344. package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.d.ts +19 -0
  345. package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +47 -0
  346. package/dist/services/audit/enforcers/lint-rd-handoff-coverage.d.ts +18 -0
  347. package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +70 -0
  348. package/dist/services/audit/enforcers/lint-reference-integrity.d.ts +6 -0
  349. package/dist/services/audit/enforcers/lint-reference-integrity.js +83 -0
  350. package/dist/services/audit/enforcers/lint-reference-shape.d.ts +30 -0
  351. package/dist/services/audit/enforcers/lint-reference-shape.js +272 -0
  352. package/dist/services/audit/enforcers/lint-skill-presence-mandatory.d.ts +25 -0
  353. package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +53 -0
  354. package/dist/services/audit/enforcers/lint-style.d.ts +49 -0
  355. package/dist/services/audit/enforcers/lint-style.js +173 -0
  356. package/dist/services/audit/enforcers/lint-workflow-shape.d.ts +4 -0
  357. package/dist/services/audit/enforcers/lint-workflow-shape.js +100 -0
  358. package/dist/services/audit/enforcers/login-gate.d.ts +23 -0
  359. package/dist/services/audit/enforcers/login-gate.js +40 -0
  360. package/dist/services/audit/enforcers/mock-placement.d.ts +25 -0
  361. package/dist/services/audit/enforcers/mock-placement.js +48 -0
  362. package/dist/services/audit/enforcers/no-root-pollution.d.ts +21 -0
  363. package/dist/services/audit/enforcers/no-root-pollution.js +56 -0
  364. package/dist/services/audit/enforcers/pre-rd-scan.d.ts +22 -0
  365. package/dist/services/audit/enforcers/pre-rd-scan.js +23 -0
  366. package/dist/services/audit/enforcers/prototype-fidelity.d.ts +25 -0
  367. package/dist/services/audit/enforcers/prototype-fidelity.js +75 -0
  368. package/dist/services/audit/enforcers/resume-detection.d.ts +21 -0
  369. package/dist/services/audit/enforcers/resume-detection.js +52 -0
  370. package/dist/services/audit/enforcers/sub-agent-sid.d.ts +25 -0
  371. package/dist/services/audit/enforcers/sub-agent-sid.js +63 -0
  372. package/dist/services/audit/prose-ratio-calculator.d.ts +45 -0
  373. package/dist/services/audit/prose-ratio-calculator.js +52 -0
  374. package/dist/services/audit/red-line-catalog-p2-a.d.ts +15 -0
  375. package/dist/services/audit/red-line-catalog-p2-a.js +458 -0
  376. package/dist/services/audit/red-line-catalog-p2-b.d.ts +19 -0
  377. package/dist/services/audit/red-line-catalog-p2-b.js +225 -0
  378. package/dist/services/audit/red-line-catalog.d.ts +51 -0
  379. package/dist/services/audit/red-line-catalog.js +195 -0
  380. package/dist/services/audit/red-lines-service.d.ts +23 -0
  381. package/dist/services/audit/red-lines-service.js +464 -0
  382. package/dist/services/audit/scanners/openspec-scanner.d.ts +15 -0
  383. package/dist/services/audit/scanners/openspec-scanner.js +55 -0
  384. package/dist/services/audit/scanners/rules-tree-scanner.d.ts +16 -0
  385. package/dist/services/audit/scanners/rules-tree-scanner.js +56 -0
  386. package/dist/services/audit/scanners/skills-tree-scanner.d.ts +17 -0
  387. package/dist/services/audit/scanners/skills-tree-scanner.js +68 -0
  388. package/dist/services/audit/static-service.d.ts +67 -0
  389. package/dist/services/audit/static-service.js +51 -0
  390. package/dist/services/audit/types.d.ts +86 -0
  391. package/dist/services/audit/types.js +13 -0
  392. package/dist/services/audit-independent/index.d.ts +2 -0
  393. package/dist/services/audit-independent/index.js +2 -0
  394. package/dist/services/audit-independent/perf-audit-service.d.ts +151 -0
  395. package/dist/services/audit-independent/perf-audit-service.js +316 -0
  396. package/dist/services/audit-independent/security-audit-service.d.ts +155 -0
  397. package/dist/services/audit-independent/security-audit-service.js +316 -0
  398. package/dist/services/autonomous-swarm/autonomous-swarm-service.d.ts +127 -0
  399. package/dist/services/autonomous-swarm/autonomous-swarm-service.js +446 -0
  400. package/dist/services/changeset/changeset-check-service.d.ts +22 -0
  401. package/dist/services/changeset/changeset-check-service.js +47 -0
  402. package/dist/services/classify/classify-service.d.ts +42 -0
  403. package/dist/services/classify/classify-service.js +122 -0
  404. package/dist/services/classify/classify-types.d.ts +79 -0
  405. package/dist/services/classify/classify-types.js +90 -0
  406. package/dist/services/code/auto-compact-modes.d.ts +30 -0
  407. package/dist/services/code/auto-compact-modes.js +38 -0
  408. package/dist/services/code/auto-compact-orchestrator.d.ts +136 -0
  409. package/dist/services/code/auto-compact-orchestrator.js +423 -0
  410. package/dist/services/code/batch-heartbeat-poller.d.ts +51 -0
  411. package/dist/services/code/batch-heartbeat-poller.js +88 -0
  412. package/dist/services/code/dag-orchestrator.d.ts +157 -0
  413. package/dist/services/code/dag-orchestrator.js +409 -0
  414. package/dist/services/code/emit-handoff.d.ts +49 -0
  415. package/dist/services/code/emit-handoff.js +79 -0
  416. package/dist/services/code/job-shape-decision.d.ts +71 -0
  417. package/dist/services/code/job-shape-decision.js +151 -0
  418. package/dist/services/code/mode-gate.d.ts +163 -0
  419. package/dist/services/code/mode-gate.js +212 -0
  420. package/dist/services/code/post-compact-detector.d.ts +61 -0
  421. package/dist/services/code/post-compact-detector.js +240 -0
  422. package/dist/services/code/status-line-renderer.d.ts +36 -0
  423. package/dist/services/code/status-line-renderer.js +73 -0
  424. package/dist/services/code/step-08-gate.d.ts +90 -0
  425. package/dist/services/code/step-08-gate.js +136 -0
  426. package/dist/services/code/user-touchpoint-classifier.d.ts +44 -0
  427. package/dist/services/code/user-touchpoint-classifier.js +145 -0
  428. package/dist/services/code-review/ecc-bridge.d.ts +148 -0
  429. package/dist/services/code-review/ecc-bridge.js +242 -0
  430. package/dist/services/code-review/ocr-service.d.ts +129 -0
  431. package/dist/services/code-review/ocr-service.js +372 -0
  432. package/dist/services/codegraph/codegraph-process-runner.d.ts +2 -0
  433. package/dist/services/codegraph/codegraph-process-runner.js +93 -0
  434. package/dist/services/codegraph/codegraph-service.d.ts +43 -0
  435. package/dist/services/codegraph/codegraph-service.js +160 -0
  436. package/dist/services/compact/decision-tables.d.ts +66 -0
  437. package/dist/services/compact/decision-tables.js +127 -0
  438. package/dist/services/compact/request-transition-hook.d.ts +20 -0
  439. package/dist/services/compact/request-transition-hook.js +110 -0
  440. package/dist/services/compact/suggest-service.d.ts +74 -0
  441. package/dist/services/compact/suggest-service.js +203 -0
  442. package/dist/services/compact-history/compact-history-service.d.ts +41 -0
  443. package/dist/services/compact-history/compact-history-service.js +62 -0
  444. package/dist/services/compact-statusline/compact-statusline-service.d.ts +16 -0
  445. package/dist/services/compact-statusline/compact-statusline-service.js +83 -0
  446. package/dist/services/complexity/complexity-estimator.d.ts +34 -0
  447. package/dist/services/complexity/complexity-estimator.js +64 -0
  448. package/dist/services/config/config-migration.d.ts +45 -0
  449. package/dist/services/config/config-migration.js +154 -0
  450. package/dist/services/config/config-restore.d.ts +10 -0
  451. package/dist/services/config/config-restore.js +47 -0
  452. package/dist/services/config/config-rollback.d.ts +13 -0
  453. package/dist/services/config/config-rollback.js +26 -0
  454. package/dist/services/config/config-safety.d.ts +40 -0
  455. package/dist/services/config/config-safety.js +359 -0
  456. package/dist/services/config/config-service.d.ts +58 -0
  457. package/dist/services/config/config-service.js +745 -0
  458. package/dist/services/config/config-types.d.ts +117 -0
  459. package/dist/services/config/config-types.js +18 -0
  460. package/dist/services/config/model-routing.d.ts +66 -0
  461. package/dist/services/config/model-routing.js +105 -0
  462. package/dist/services/config/proxy-service.d.ts +21 -0
  463. package/dist/services/config/proxy-service.js +44 -0
  464. package/dist/services/config/sidecar-store.d.ts +25 -0
  465. package/dist/services/config/sidecar-store.js +61 -0
  466. package/dist/services/config/workspace-state-service.d.ts +30 -0
  467. package/dist/services/config/workspace-state-service.js +142 -0
  468. package/dist/services/container/container-lease.d.ts +67 -0
  469. package/dist/services/container/container-lease.js +135 -0
  470. package/dist/services/context/artifact-meta.d.ts +72 -0
  471. package/dist/services/context/artifact-meta.js +105 -0
  472. package/dist/services/context/auto-compact-dispatcher.d.ts +72 -0
  473. package/dist/services/context/auto-compact-dispatcher.js +170 -0
  474. package/dist/services/context/auto-compact-reader.d.ts +51 -0
  475. package/dist/services/context/auto-compact-reader.js +164 -0
  476. package/dist/services/context/auto-compact-types.d.ts +168 -0
  477. package/dist/services/context/auto-compact-types.js +43 -0
  478. package/dist/services/context/build-dispatch-system-prompt.d.ts +75 -0
  479. package/dist/services/context/build-dispatch-system-prompt.js +117 -0
  480. package/dist/services/context/collector.d.ts +24 -0
  481. package/dist/services/context/collector.js +133 -0
  482. package/dist/services/context/context-builder.d.ts +30 -0
  483. package/dist/services/context/context-builder.js +78 -0
  484. package/dist/services/context/context-guard.d.ts +49 -0
  485. package/dist/services/context/context-guard.js +91 -0
  486. package/dist/services/context/context-schema.d.ts +415 -0
  487. package/dist/services/context/context-schema.js +73 -0
  488. package/dist/services/context/doc-retriever.d.ts +26 -0
  489. package/dist/services/context/doc-retriever.js +51 -0
  490. package/dist/services/context/headroom-client.d.ts +34 -0
  491. package/dist/services/context/headroom-client.js +117 -0
  492. package/dist/services/context/headroom-fetcher.d.ts +6 -0
  493. package/dist/services/context/headroom-fetcher.js +28 -0
  494. package/dist/services/context/headroom-prefs.d.ts +46 -0
  495. package/dist/services/context/headroom-prefs.js +34 -0
  496. package/dist/services/context/ide-detect.d.ts +4 -0
  497. package/dist/services/context/ide-detect.js +24 -0
  498. package/dist/services/context/index.d.ts +7 -0
  499. package/dist/services/context/index.js +6 -0
  500. package/dist/services/context/main-session-monitor.d.ts +86 -0
  501. package/dist/services/context/main-session-monitor.js +119 -0
  502. package/dist/services/context/memory-index-reader.d.ts +8 -0
  503. package/dist/services/context/memory-index-reader.js +57 -0
  504. package/dist/services/context/memory-lru-cache.d.ts +12 -0
  505. package/dist/services/context/memory-lru-cache.js +60 -0
  506. package/dist/services/context/memory-preflight-config.d.ts +19 -0
  507. package/dist/services/context/memory-preflight-config.js +25 -0
  508. package/dist/services/context/memory-preflight-service.d.ts +19 -0
  509. package/dist/services/context/memory-preflight-service.js +120 -0
  510. package/dist/services/context/renderer.d.ts +20 -0
  511. package/dist/services/context/renderer.js +30 -0
  512. package/dist/services/context/spillover-store.d.ts +23 -0
  513. package/dist/services/context/spillover-store.js +155 -0
  514. package/dist/services/context/spillover-types.d.ts +18 -0
  515. package/dist/services/context/spillover-types.js +1 -0
  516. package/dist/services/context/threshold.d.ts +35 -0
  517. package/dist/services/context/threshold.js +76 -0
  518. package/dist/services/context/tokenizer.d.ts +12 -0
  519. package/dist/services/context/tokenizer.js +43 -0
  520. package/dist/services/context/types.d.ts +93 -0
  521. package/dist/services/context/types.js +9 -0
  522. package/dist/services/crystallization/crystallization-service.d.ts +256 -0
  523. package/dist/services/crystallization/crystallization-service.js +391 -0
  524. package/dist/services/crystallization/crystallization-store.d.ts +75 -0
  525. package/dist/services/crystallization/crystallization-store.js +193 -0
  526. package/dist/services/crystallization/crystallization-types.d.ts +313 -0
  527. package/dist/services/crystallization/crystallization-types.js +299 -0
  528. package/dist/services/crystallization/evidence-brief-builder.d.ts +237 -0
  529. package/dist/services/crystallization/evidence-brief-builder.js +240 -0
  530. package/dist/services/crystallization/index.d.ts +13 -0
  531. package/dist/services/crystallization/index.js +13 -0
  532. package/dist/services/dashboard/project-dashboard-service.d.ts +91 -0
  533. package/dist/services/dashboard/project-dashboard-service.js +147 -0
  534. package/dist/services/dispatch/await-batch.d.ts +70 -0
  535. package/dist/services/dispatch/await-batch.js +272 -0
  536. package/dist/services/dispatch/batch-counter.d.ts +27 -0
  537. package/dist/services/dispatch/batch-counter.js +102 -0
  538. package/dist/services/dispatch/contract-store.d.ts +63 -0
  539. package/dist/services/dispatch/contract-store.js +157 -0
  540. package/dist/services/dispatch/dispatch-record-writer.d.ts +260 -0
  541. package/dist/services/dispatch/dispatch-record-writer.js +690 -0
  542. package/dist/services/dispatch/heartbeat-truncator.d.ts +26 -0
  543. package/dist/services/dispatch/heartbeat-truncator.js +13 -0
  544. package/dist/services/dispatch/leak-detector.d.ts +11 -0
  545. package/dist/services/dispatch/leak-detector.js +72 -0
  546. package/dist/services/dispatch/slice-dag.d.ts +127 -0
  547. package/dist/services/dispatch/slice-dag.js +244 -0
  548. package/dist/services/dispatch/stage-enum.d.ts +27 -0
  549. package/dist/services/dispatch/stage-enum.js +48 -0
  550. package/dist/services/dispatch/startup-timeout.d.ts +86 -0
  551. package/dist/services/dispatch/startup-timeout.js +97 -0
  552. package/dist/services/dispatch/sub-agent-dispatcher.d.ts +239 -0
  553. package/dist/services/dispatch/sub-agent-dispatcher.js +333 -0
  554. package/dist/services/dispatch/test-tool-detection.d.ts +60 -0
  555. package/dist/services/dispatch/test-tool-detection.js +126 -0
  556. package/dist/services/doc/doc-generator.d.ts +38 -0
  557. package/dist/services/doc/doc-generator.js +122 -0
  558. package/dist/services/doctor/doctor-service/checks/check-id-schema.d.ts +18 -0
  559. package/dist/services/doctor/doctor-service/checks/check-id-schema.js +64 -0
  560. package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +14 -0
  561. package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +69 -0
  562. package/dist/services/doctor/doctor-service/checks/dist-source-version.d.ts +32 -0
  563. package/dist/services/doctor/doctor-service/checks/dist-source-version.js +110 -0
  564. package/dist/services/doctor/doctor-service/checks/gateguard-conflict.d.ts +24 -0
  565. package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +164 -0
  566. package/dist/services/doctor/doctor-service/checks/l3-memory-health.d.ts +16 -0
  567. package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +57 -0
  568. package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.d.ts +19 -0
  569. package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +66 -0
  570. package/dist/services/doctor/doctor-service/checks/schema-validity.d.ts +10 -0
  571. package/dist/services/doctor/doctor-service/checks/schema-validity.js +33 -0
  572. package/dist/services/doctor/doctor-service/checks/skill-apply-note.d.ts +20 -0
  573. package/dist/services/doctor/doctor-service/checks/skill-apply-note.js +85 -0
  574. package/dist/services/doctor/doctor-service/checks/skill-existence.d.ts +13 -0
  575. package/dist/services/doctor/doctor-service/checks/skill-existence.js +30 -0
  576. package/dist/services/doctor/doctor-service/checks/skill-name-match.d.ts +10 -0
  577. package/dist/services/doctor/doctor-service/checks/skill-name-match.js +25 -0
  578. package/dist/services/doctor/doctor-service/checks/skill-parse.d.ts +10 -0
  579. package/dist/services/doctor/doctor-service/checks/skill-parse.js +19 -0
  580. package/dist/services/doctor/doctor-service/checks/skill-presence.d.ts +21 -0
  581. package/dist/services/doctor/doctor-service/checks/skill-presence.js +75 -0
  582. package/dist/services/doctor/doctor-service/checks/skill-runbook.d.ts +14 -0
  583. package/dist/services/doctor/doctor-service/checks/skill-runbook.js +47 -0
  584. package/dist/services/doctor/doctor-service/checks/statusline-install.d.ts +14 -0
  585. package/dist/services/doctor/doctor-service/checks/statusline-install.js +32 -0
  586. package/dist/services/doctor/doctor-service/checks/statusline-runtime.d.ts +13 -0
  587. package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +30 -0
  588. package/dist/services/doctor/doctor-service/checks/user-config.d.ts +11 -0
  589. package/dist/services/doctor/doctor-service/checks/user-config.js +27 -0
  590. package/dist/services/doctor/doctor-service/checks/workspace-init.d.ts +16 -0
  591. package/dist/services/doctor/doctor-service/checks/workspace-init.js +34 -0
  592. package/dist/services/doctor/doctor-service/checks/workspace-layout.d.ts +33 -0
  593. package/dist/services/doctor/doctor-service/checks/workspace-layout.js +180 -0
  594. package/dist/services/doctor/doctor-service/index.d.ts +48 -0
  595. package/dist/services/doctor/doctor-service/index.js +254 -0
  596. package/dist/services/doctor/doctor-service/plugin-registry.d.ts +41 -0
  597. package/dist/services/doctor/doctor-service/plugin-registry.js +77 -0
  598. package/dist/services/doctor/doctor-service/report/final-summary.d.ts +20 -0
  599. package/dist/services/doctor/doctor-service/report/final-summary.js +29 -0
  600. package/dist/services/doctor/doctor-service/types.d.ts +245 -0
  601. package/dist/services/doctor/doctor-service/types.js +15 -0
  602. package/dist/services/doctor/doctor-service.d.ts +18 -0
  603. package/dist/services/doctor/doctor-service.js +25 -0
  604. package/dist/services/doctor/index.d.ts +22 -0
  605. package/dist/services/doctor/index.js +22 -0
  606. package/dist/services/env/shell-probe.d.ts +71 -0
  607. package/dist/services/env/shell-probe.js +161 -0
  608. package/dist/services/evolution/evolution-service.d.ts +137 -0
  609. package/dist/services/evolution/evolution-service.js +281 -0
  610. package/dist/services/evolution/evolution-store.d.ts +57 -0
  611. package/dist/services/evolution/evolution-store.js +232 -0
  612. package/dist/services/evolution/evolution-types.d.ts +706 -0
  613. package/dist/services/evolution/evolution-types.js +286 -0
  614. package/dist/services/evolution/independent-evaluator-runner.d.ts +90 -0
  615. package/dist/services/evolution/independent-evaluator-runner.js +106 -0
  616. package/dist/services/evolution/regression-skeptic-runner.d.ts +64 -0
  617. package/dist/services/evolution/regression-skeptic-runner.js +113 -0
  618. package/dist/services/feedback/feedback-promotion-service.d.ts +123 -0
  619. package/dist/services/feedback/feedback-promotion-service.js +300 -0
  620. package/dist/services/final-review/final-review-service.d.ts +22 -0
  621. package/dist/services/final-review/final-review-service.js +52 -0
  622. package/dist/services/final-review/final-review-types.d.ts +42 -0
  623. package/dist/services/final-review/final-review-types.js +18 -0
  624. package/dist/services/final-review/index.d.ts +2 -0
  625. package/dist/services/final-review/index.js +1 -0
  626. package/dist/services/fixture/fixture-capture-service.d.ts +87 -0
  627. package/dist/services/fixture/fixture-capture-service.js +317 -0
  628. package/dist/services/fixture/fixture-sanitize-service.d.ts +117 -0
  629. package/dist/services/fixture/fixture-sanitize-service.js +161 -0
  630. package/dist/services/fixture/index.d.ts +8 -0
  631. package/dist/services/fixture/index.js +8 -0
  632. package/dist/services/fork/fork-sync-state.d.ts +85 -0
  633. package/dist/services/fork/fork-sync-state.js +130 -0
  634. package/dist/services/fuzzy-matching/fuzzy-match-service.d.ts +15 -0
  635. package/dist/services/fuzzy-matching/fuzzy-match-service.js +56 -0
  636. package/dist/services/fuzzy-matching/fzf-pick-service.d.ts +68 -0
  637. package/dist/services/fuzzy-matching/fzf-pick-service.js +158 -0
  638. package/dist/services/fuzzy-matching/types.d.ts +20 -0
  639. package/dist/services/fuzzy-matching/types.js +1 -0
  640. package/dist/services/handoff/handoff-parser.d.ts +28 -0
  641. package/dist/services/handoff/handoff-parser.js +69 -0
  642. package/dist/services/handoff/handoff-types.d.ts +39 -0
  643. package/dist/services/handoff/handoff-types.js +19 -0
  644. package/dist/services/handoff/handoff-writer.d.ts +23 -0
  645. package/dist/services/handoff/handoff-writer.js +30 -0
  646. package/dist/services/hooks/auto-compact-hook-install.d.ts +103 -0
  647. package/dist/services/hooks/auto-compact-hook-install.js +156 -0
  648. package/dist/services/hooks/output.d.ts +92 -0
  649. package/dist/services/hooks/output.js +111 -0
  650. package/dist/services/hooks/presence-marker-detector.d.ts +16 -0
  651. package/dist/services/hooks/presence-marker-detector.js +105 -0
  652. package/dist/services/hooks/worktree-authorization-gate.d.ts +205 -0
  653. package/dist/services/hooks/worktree-authorization-gate.js +492 -0
  654. package/dist/services/ide/adapters/claude-code-adapter.d.ts +18 -0
  655. package/dist/services/ide/adapters/claude-code-adapter.js +103 -0
  656. package/dist/services/ide/adapters/codex-adapter.d.ts +46 -0
  657. package/dist/services/ide/adapters/codex-adapter.js +97 -0
  658. package/dist/services/ide/adapters/cursor-adapter.d.ts +36 -0
  659. package/dist/services/ide/adapters/cursor-adapter.js +84 -0
  660. package/dist/services/ide/adapters/hermes-adapter.d.ts +21 -0
  661. package/dist/services/ide/adapters/hermes-adapter.js +51 -0
  662. package/dist/services/ide/adapters/openclaw-adapter.d.ts +14 -0
  663. package/dist/services/ide/adapters/openclaw-adapter.js +42 -0
  664. package/dist/services/ide/adapters/qoder-adapter.d.ts +25 -0
  665. package/dist/services/ide/adapters/qoder-adapter.js +57 -0
  666. package/dist/services/ide/adapters/tongyi-lingma-adapter.d.ts +16 -0
  667. package/dist/services/ide/adapters/tongyi-lingma-adapter.js +45 -0
  668. package/dist/services/ide/adapters/trae-adapter.d.ts +42 -0
  669. package/dist/services/ide/adapters/trae-adapter.js +83 -0
  670. package/dist/services/ide/adapters/zcode-adapter.d.ts +40 -0
  671. package/dist/services/ide/adapters/zcode-adapter.js +220 -0
  672. package/dist/services/ide/current-model-detector.d.ts +14 -0
  673. package/dist/services/ide/current-model-detector.js +60 -0
  674. package/dist/services/ide/hook-protocol.d.ts +47 -0
  675. package/dist/services/ide/hook-protocol.js +74 -0
  676. package/dist/services/ide/hook-translator.d.ts +72 -0
  677. package/dist/services/ide/hook-translator.js +128 -0
  678. package/dist/services/ide/ide-detector.d.ts +10 -0
  679. package/dist/services/ide/ide-detector.js +19 -0
  680. package/dist/services/ide/ide-registry.d.ts +14 -0
  681. package/dist/services/ide/ide-registry.js +69 -0
  682. package/dist/services/ide/ide-types.d.ts +253 -0
  683. package/dist/services/ide/ide-types.js +2 -0
  684. package/dist/services/ide/resource-profile.d.ts +52 -0
  685. package/dist/services/ide/resource-profile.js +33 -0
  686. package/dist/services/ide/shared/atomic-json.d.ts +15 -0
  687. package/dist/services/ide/shared/atomic-json.js +58 -0
  688. package/dist/services/ide/shared/safe-path.d.ts +11 -0
  689. package/dist/services/ide/shared/safe-path.js +29 -0
  690. package/dist/services/impact/impact-scan-service.d.ts +66 -0
  691. package/dist/services/impact/impact-scan-service.js +197 -0
  692. package/dist/services/job/job-event-emitter.d.ts +30 -0
  693. package/dist/services/job/job-event-emitter.js +5 -0
  694. package/dist/services/job/job-orchestrator.d.ts +50 -0
  695. package/dist/services/job/job-orchestrator.js +104 -0
  696. package/dist/services/job/job-progress-store.d.ts +60 -0
  697. package/dist/services/job/job-progress-store.js +70 -0
  698. package/dist/services/job/job-rotation.d.ts +17 -0
  699. package/dist/services/job/job-rotation.js +30 -0
  700. package/dist/services/job/job-state-store.d.ts +24 -0
  701. package/dist/services/job/job-state-store.js +60 -0
  702. package/dist/services/job/job-types.d.ts +444 -0
  703. package/dist/services/job/job-types.js +87 -0
  704. package/dist/services/job/subagent-job-wrapper.d.ts +35 -0
  705. package/dist/services/job/subagent-job-wrapper.js +30 -0
  706. package/dist/services/job-snapshot/index.d.ts +8 -0
  707. package/dist/services/job-snapshot/index.js +7 -0
  708. package/dist/services/job-snapshot/snapshot.d.ts +7 -0
  709. package/dist/services/job-snapshot/snapshot.js +75 -0
  710. package/dist/services/job-snapshot/types.d.ts +7 -0
  711. package/dist/services/job-snapshot/types.js +1 -0
  712. package/dist/services/karpathy-cost/karpathy-cost-check-service.d.ts +67 -0
  713. package/dist/services/karpathy-cost/karpathy-cost-check-service.js +108 -0
  714. package/dist/services/legacy/legacy-detector.d.ts +34 -0
  715. package/dist/services/legacy/legacy-detector.js +111 -0
  716. package/dist/services/log/log-commands-service.d.ts +54 -0
  717. package/dist/services/log/log-commands-service.js +83 -0
  718. package/dist/services/log/logger.d.ts +103 -0
  719. package/dist/services/log/logger.js +224 -0
  720. package/dist/services/log/redact.d.ts +32 -0
  721. package/dist/services/log/redact.js +89 -0
  722. package/dist/services/log/retention.d.ts +50 -0
  723. package/dist/services/log/retention.js +95 -0
  724. package/dist/services/loop/evaluator-dispatcher.d.ts +50 -0
  725. package/dist/services/loop/evaluator-dispatcher.js +552 -0
  726. package/dist/services/loop/loop-bee-relation-service.d.ts +107 -0
  727. package/dist/services/loop/loop-bee-relation-service.js +211 -0
  728. package/dist/services/loop/loop-bee-relation-store.d.ts +53 -0
  729. package/dist/services/loop/loop-bee-relation-store.js +130 -0
  730. package/dist/services/loop/loop-bee-relation-types.d.ts +118 -0
  731. package/dist/services/loop/loop-bee-relation-types.js +114 -0
  732. package/dist/services/loop/loop-release-service.d.ts +46 -0
  733. package/dist/services/loop/loop-release-service.js +66 -0
  734. package/dist/services/loop/loop-release-store.d.ts +55 -0
  735. package/dist/services/loop/loop-release-store.js +134 -0
  736. package/dist/services/loop/loop-release-types.d.ts +250 -0
  737. package/dist/services/loop/loop-release-types.js +162 -0
  738. package/dist/services/loop/monotonic-guard.d.ts +80 -0
  739. package/dist/services/loop/monotonic-guard.js +232 -0
  740. package/dist/services/loop/monotonic-runner.d.ts +64 -0
  741. package/dist/services/loop/monotonic-runner.js +270 -0
  742. package/dist/services/loop/run-driver.d.ts +70 -0
  743. package/dist/services/loop/run-driver.js +400 -0
  744. package/dist/services/loop/spec-service.d.ts +90 -0
  745. package/dist/services/loop/spec-service.js +497 -0
  746. package/dist/services/memory/llm-reranker.d.ts +174 -0
  747. package/dist/services/memory/llm-reranker.js +284 -0
  748. package/dist/services/memory/memory-search-service.d.ts +93 -0
  749. package/dist/services/memory/memory-search-service.js +117 -0
  750. package/dist/services/memory/project-context-service.d.ts +21 -0
  751. package/dist/services/memory/project-context-service.js +161 -0
  752. package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +8 -0
  753. package/dist/services/memory/project-memory-service/index/kind-dispatch.js +253 -0
  754. package/dist/services/memory/project-memory-service/index/ranking.d.ts +6 -0
  755. package/dist/services/memory/project-memory-service/index/ranking.js +171 -0
  756. package/dist/services/memory/project-memory-service/index/search.d.ts +34 -0
  757. package/dist/services/memory/project-memory-service/index/search.js +194 -0
  758. package/dist/services/memory/project-memory-service/index.d.ts +9 -0
  759. package/dist/services/memory/project-memory-service/index.js +24 -0
  760. package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +9 -0
  761. package/dist/services/memory/project-memory-service/parsers/frontmatter.js +106 -0
  762. package/dist/services/memory/project-memory-service/parsers/markdown-pure.d.ts +7 -0
  763. package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +96 -0
  764. package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +5 -0
  765. package/dist/services/memory/project-memory-service/store/atomic-write.js +56 -0
  766. package/dist/services/memory/project-memory-service/store/paths.d.ts +8 -0
  767. package/dist/services/memory/project-memory-service/store/paths.js +116 -0
  768. package/dist/services/memory/project-memory-service/types.d.ts +128 -0
  769. package/dist/services/memory/project-memory-service/types.js +9 -0
  770. package/dist/services/memory/project-memory-service.d.ts +1 -0
  771. package/dist/services/memory/project-memory-service.js +20 -0
  772. package/dist/services/migrate-skill-name/migrate.d.ts +17 -0
  773. package/dist/services/migrate-skill-name/migrate.js +152 -0
  774. package/dist/services/migrate-skill-name/schema.d.ts +42 -0
  775. package/dist/services/migrate-skill-name/schema.js +25 -0
  776. package/dist/services/migration/v2-10-to-v2-11-service.d.ts +44 -0
  777. package/dist/services/migration/v2-10-to-v2-11-service.js +190 -0
  778. package/dist/services/migration/v2-10-to-v2-11-types.d.ts +41 -0
  779. package/dist/services/migration/v2-10-to-v2-11-types.js +23 -0
  780. package/dist/services/mode/bypass-tracker.d.ts +4 -0
  781. package/dist/services/mode/bypass-tracker.js +31 -0
  782. package/dist/services/mode/mode-enforcement.d.ts +14 -0
  783. package/dist/services/mode/mode-enforcement.js +84 -0
  784. package/dist/services/observability/aggregation.d.ts +91 -0
  785. package/dist/services/observability/aggregation.js +289 -0
  786. package/dist/services/observability/jsonl-store.d.ts +59 -0
  787. package/dist/services/observability/jsonl-store.js +120 -0
  788. package/dist/services/observability/observability-service.d.ts +161 -0
  789. package/dist/services/observability/observability-service.js +205 -0
  790. package/dist/services/observability/report-formatter.d.ts +42 -0
  791. package/dist/services/observability/report-formatter.js +156 -0
  792. package/dist/services/openspec/artifact-boundary.d.ts +138 -0
  793. package/dist/services/openspec/artifact-boundary.js +150 -0
  794. package/dist/services/openspec/coverage-evidence-reader.d.ts +191 -0
  795. package/dist/services/openspec/coverage-evidence-reader.js +386 -0
  796. package/dist/services/openspec/openspec-archive-service.d.ts +82 -0
  797. package/dist/services/openspec/openspec-archive-service.js +340 -0
  798. package/dist/services/openspec/openspec-bridge-service.d.ts +16 -0
  799. package/dist/services/openspec/openspec-bridge-service.js +76 -0
  800. package/dist/services/openspec/openspec-init-service.d.ts +23 -0
  801. package/dist/services/openspec/openspec-init-service.js +122 -0
  802. package/dist/services/openspec/openspec-propose-from-doctor-service.d.ts +31 -0
  803. package/dist/services/openspec/openspec-propose-from-doctor-service.js +95 -0
  804. package/dist/services/openspec/openspec-render-service.d.ts +38 -0
  805. package/dist/services/openspec/openspec-render-service.js +133 -0
  806. package/dist/services/openspec/openspec-scan-service.d.ts +6 -0
  807. package/dist/services/openspec/openspec-scan-service.js +123 -0
  808. package/dist/services/openspec/openspec-types.d.ts +39 -0
  809. package/dist/services/openspec/openspec-types.js +1 -0
  810. package/dist/services/openspec/openspec-validate-service.d.ts +27 -0
  811. package/dist/services/openspec/openspec-validate-service.js +78 -0
  812. package/dist/services/perf/perf-baseline-service.d.ts +70 -0
  813. package/dist/services/perf/perf-baseline-service.js +214 -0
  814. package/dist/services/polyrepo/polyrepo-dispatcher.d.ts +34 -0
  815. package/dist/services/polyrepo/polyrepo-dispatcher.js +119 -0
  816. package/dist/services/polyrepo/polyrepo-scanner.d.ts +9 -0
  817. package/dist/services/polyrepo/polyrepo-scanner.js +94 -0
  818. package/dist/services/polyrepo/polyrepo-service.d.ts +34 -0
  819. package/dist/services/polyrepo/polyrepo-service.js +49 -0
  820. package/dist/services/polyrepo/polyrepo-types.d.ts +55 -0
  821. package/dist/services/polyrepo/polyrepo-types.js +1 -0
  822. package/dist/services/prd/handoff-auto-regen.d.ts +22 -0
  823. package/dist/services/prd/handoff-auto-regen.js +73 -0
  824. package/dist/services/prd/handoff-service.d.ts +54 -0
  825. package/dist/services/prd/handoff-service.js +142 -0
  826. package/dist/services/prd/handoff-types.d.ts +64 -0
  827. package/dist/services/prd/handoff-types.js +22 -0
  828. package/dist/services/prd/prd-blocks-checker.d.ts +51 -0
  829. package/dist/services/prd/prd-blocks-checker.js +130 -0
  830. package/dist/services/prd/project-scan-bootstrap-service.d.ts +52 -0
  831. package/dist/services/prd/project-scan-bootstrap-service.js +445 -0
  832. package/dist/services/prd/project-scan-reader.d.ts +24 -0
  833. package/dist/services/prd/project-scan-reader.js +150 -0
  834. package/dist/services/prd/project-scan-sediment.d.ts +97 -0
  835. package/dist/services/prd/project-scan-sediment.js +445 -0
  836. package/dist/services/prd/project-scan-types.d.ts +66 -0
  837. package/dist/services/prd/project-scan-types.js +20 -0
  838. package/dist/services/preferences/preferences-service.d.ts +38 -0
  839. package/dist/services/preferences/preferences-service.js +208 -0
  840. package/dist/services/preferences/preferences-types.d.ts +161 -0
  841. package/dist/services/preferences/preferences-types.js +64 -0
  842. package/dist/services/profiles/profile-service.d.ts +6 -0
  843. package/dist/services/profiles/profile-service.js +19 -0
  844. package/dist/services/progress/progress-service.d.ts +125 -0
  845. package/dist/services/progress/progress-service.js +192 -0
  846. package/dist/services/proxy/proxy-service.d.ts +7 -0
  847. package/dist/services/proxy/proxy-service.js +31 -0
  848. package/dist/services/qa/browser-event-logger.d.ts +40 -0
  849. package/dist/services/qa/browser-event-logger.js +54 -0
  850. package/dist/services/qa/browser-restart-detector.d.ts +74 -0
  851. package/dist/services/qa/browser-restart-detector.js +138 -0
  852. package/dist/services/qa/browser-reuse-hint.d.ts +18 -0
  853. package/dist/services/qa/browser-reuse-hint.js +18 -0
  854. package/dist/services/qa/browser-wrapper-service.d.ts +37 -0
  855. package/dist/services/qa/browser-wrapper-service.js +88 -0
  856. package/dist/services/qa/qa-business-review-state.d.ts +47 -0
  857. package/dist/services/qa/qa-business-review-state.js +96 -0
  858. package/dist/services/qa/screenshot-archive-service.d.ts +51 -0
  859. package/dist/services/qa/screenshot-archive-service.js +134 -0
  860. package/dist/services/rd/ast-gate.d.ts +19 -0
  861. package/dist/services/rd/ast-gate.js +71 -0
  862. package/dist/services/rd/impl.d.ts +9 -0
  863. package/dist/services/rd/impl.js +57 -0
  864. package/dist/services/rd/rd-service.d.ts +129 -0
  865. package/dist/services/rd/rd-service.js +440 -0
  866. package/dist/services/rd/reviewer-dispatch-policy.d.ts +122 -0
  867. package/dist/services/rd/reviewer-dispatch-policy.js +148 -0
  868. package/dist/services/rd/standards-diagnostic.d.ts +76 -0
  869. package/dist/services/rd/standards-diagnostic.js +166 -0
  870. package/dist/services/rd/strategic-stage.d.ts +4 -0
  871. package/dist/services/rd/strategic-stage.js +15 -0
  872. package/dist/services/rd/strategy.d.ts +13 -0
  873. package/dist/services/rd/strategy.js +60 -0
  874. package/dist/services/rd/tactical-stage.d.ts +33 -0
  875. package/dist/services/rd/tactical-stage.js +62 -0
  876. package/dist/services/rd/types.d.ts +252 -0
  877. package/dist/services/rd/types.js +47 -0
  878. package/dist/services/rd-swarm/rd-swarm-service.d.ts +60 -0
  879. package/dist/services/rd-swarm/rd-swarm-service.js +93 -0
  880. package/dist/services/recommendations/capability-availability.d.ts +5 -0
  881. package/dist/services/recommendations/capability-availability.js +40 -0
  882. package/dist/services/recommendations/capability-map-service.d.ts +7 -0
  883. package/dist/services/recommendations/capability-map-service.js +131 -0
  884. package/dist/services/recommendations/capability-seed-items.d.ts +2 -0
  885. package/dist/services/recommendations/capability-seed-items.js +139 -0
  886. package/dist/services/recommendations/capability-seed-mappings.d.ts +2 -0
  887. package/dist/services/recommendations/capability-seed-mappings.js +53 -0
  888. package/dist/services/recommendations/capability-seed-sources.d.ts +2 -0
  889. package/dist/services/recommendations/capability-seed-sources.js +34 -0
  890. package/dist/services/recommendations/recommendation-service.d.ts +8 -0
  891. package/dist/services/recommendations/recommendation-service.js +106 -0
  892. package/dist/services/recommendations/recommendation-types.d.ts +129 -0
  893. package/dist/services/recommendations/recommendation-types.js +1 -0
  894. package/dist/services/recommendations/seed-capability-catalog.d.ts +3 -0
  895. package/dist/services/recommendations/seed-capability-catalog.js +3 -0
  896. package/dist/services/refactor/refactor-service.d.ts +9 -0
  897. package/dist/services/refactor/refactor-service.js +36 -0
  898. package/dist/services/release/release-state.d.ts +70 -0
  899. package/dist/services/release/release-state.js +140 -0
  900. package/dist/services/release/version-precheck-service.d.ts +51 -0
  901. package/dist/services/release/version-precheck-service.js +257 -0
  902. package/dist/services/retrospective/retrospective-index.d.ts +37 -0
  903. package/dist/services/retrospective/retrospective-index.js +110 -0
  904. package/dist/services/retrospective/retrospective-search-service.d.ts +55 -0
  905. package/dist/services/retrospective/retrospective-search-service.js +107 -0
  906. package/dist/services/retrospective/retrospective-show.d.ts +40 -0
  907. package/dist/services/retrospective/retrospective-show.js +109 -0
  908. package/dist/services/reviewer/model-family.d.ts +18 -0
  909. package/dist/services/reviewer/model-family.js +70 -0
  910. package/dist/services/reviewer/providers/anthropic.d.ts +2 -0
  911. package/dist/services/reviewer/providers/anthropic.js +61 -0
  912. package/dist/services/reviewer/providers/ollama.d.ts +26 -0
  913. package/dist/services/reviewer/providers/ollama.js +38 -0
  914. package/dist/services/reviewer/providers/openai.d.ts +2 -0
  915. package/dist/services/reviewer/providers/openai.js +63 -0
  916. package/dist/services/reviewer/reviewer-config.d.ts +34 -0
  917. package/dist/services/reviewer/reviewer-config.js +100 -0
  918. package/dist/services/reviewer/reviewer-service.d.ts +56 -0
  919. package/dist/services/reviewer/reviewer-service.js +263 -0
  920. package/dist/services/reviewer/selection-strategies.d.ts +27 -0
  921. package/dist/services/reviewer/selection-strategies.js +53 -0
  922. package/dist/services/role/role-registry.d.ts +38 -0
  923. package/dist/services/role/role-registry.js +83 -0
  924. package/dist/services/runtime/runtime-detector.d.ts +15 -0
  925. package/dist/services/runtime/runtime-detector.js +62 -0
  926. package/dist/services/runtime/runtime-service.d.ts +59 -0
  927. package/dist/services/runtime/runtime-service.js +51 -0
  928. package/dist/services/runtime/vendor-adapter.d.ts +59 -0
  929. package/dist/services/runtime/vendor-adapter.js +1 -0
  930. package/dist/services/runtime/vendors/claude-code.d.ts +7 -0
  931. package/dist/services/runtime/vendors/claude-code.js +39 -0
  932. package/dist/services/runtime/vendors/codex.d.ts +7 -0
  933. package/dist/services/runtime/vendors/codex.js +43 -0
  934. package/dist/services/runtime/vendors/copilot.d.ts +7 -0
  935. package/dist/services/runtime/vendors/copilot.js +40 -0
  936. package/dist/services/sc/index.d.ts +1 -0
  937. package/dist/services/sc/index.js +1 -0
  938. package/dist/services/sc/sc-service.d.ts +131 -0
  939. package/dist/services/sc/sc-service.js +552 -0
  940. package/dist/services/scan/acceptance-coverage-service.d.ts +42 -0
  941. package/dist/services/scan/acceptance-coverage-service.js +140 -0
  942. package/dist/services/scan/api-surface-service.d.ts +69 -0
  943. package/dist/services/scan/api-surface-service.js +239 -0
  944. package/dist/services/scan/archetype-service.d.ts +5 -0
  945. package/dist/services/scan/archetype-service.js +254 -0
  946. package/dist/services/scan/diff-scope-service.d.ts +40 -0
  947. package/dist/services/scan/diff-scope-service.js +198 -0
  948. package/dist/services/scan/existing-system-service.d.ts +7 -0
  949. package/dist/services/scan/existing-system-service.js +300 -0
  950. package/dist/services/scan/file-size-scan.d.ts +23 -0
  951. package/dist/services/scan/file-size-scan.js +68 -0
  952. package/dist/services/scan/karpathy-service.d.ts +60 -0
  953. package/dist/services/scan/karpathy-service.js +228 -0
  954. package/dist/services/scan/libraries-service.d.ts +24 -0
  955. package/dist/services/scan/libraries-service.js +419 -0
  956. package/dist/services/scan/libraries-types.d.ts +59 -0
  957. package/dist/services/scan/libraries-types.js +9 -0
  958. package/dist/services/scan/orphan-service.d.ts +76 -0
  959. package/dist/services/scan/orphan-service.js +538 -0
  960. package/dist/services/scan/scan-types.d.ts +59 -0
  961. package/dist/services/scan/scan-types.js +1 -0
  962. package/dist/services/scan/type-sanity-service.d.ts +23 -0
  963. package/dist/services/scan/type-sanity-service.js +116 -0
  964. package/dist/services/security/safe-settings-path.d.ts +12 -0
  965. package/dist/services/security/safe-settings-path.js +104 -0
  966. package/dist/services/sediment/dispose-confirm.d.ts +9 -0
  967. package/dist/services/sediment/dispose-confirm.js +5 -0
  968. package/dist/services/sediment/json-schema.d.ts +247 -0
  969. package/dist/services/sediment/json-schema.js +26 -0
  970. package/dist/services/sediment/manifest-lint.d.ts +13 -0
  971. package/dist/services/sediment/manifest-lint.js +11 -0
  972. package/dist/services/sediment/pool-paths.d.ts +22 -0
  973. package/dist/services/sediment/pool-paths.js +25 -0
  974. package/dist/services/sediment/pool-read.d.ts +20 -0
  975. package/dist/services/sediment/pool-read.js +73 -0
  976. package/dist/services/sediment/pool-rebuild-index.d.ts +15 -0
  977. package/dist/services/sediment/pool-rebuild-index.js +28 -0
  978. package/dist/services/sediment/pool-write.d.ts +14 -0
  979. package/dist/services/sediment/pool-write.js +25 -0
  980. package/dist/services/sediment/promotion-gate.d.ts +12 -0
  981. package/dist/services/sediment/promotion-gate.js +20 -0
  982. package/dist/services/sediment/types.d.ts +52 -0
  983. package/dist/services/sediment/types.js +1 -0
  984. package/dist/services/session/binding-status-service.d.ts +56 -0
  985. package/dist/services/session/binding-status-service.js +106 -0
  986. package/dist/services/session/binding-store.d.ts +161 -0
  987. package/dist/services/session/binding-store.js +509 -0
  988. package/dist/services/session/caller-binding-service.d.ts +70 -0
  989. package/dist/services/session/caller-binding-service.js +148 -0
  990. package/dist/services/session/caller-id-types.d.ts +77 -0
  991. package/dist/services/session/caller-id-types.js +46 -0
  992. package/dist/services/session/getSessionDir.d.ts +1 -0
  993. package/dist/services/session/getSessionDir.js +27 -0
  994. package/dist/services/session/index.d.ts +6 -0
  995. package/dist/services/session/index.js +7 -0
  996. package/dist/services/session/platform-fallbacks.d.ts +31 -0
  997. package/dist/services/session/platform-fallbacks.js +35 -0
  998. package/dist/services/session/resolve-caller-id.d.ts +57 -0
  999. package/dist/services/session/resolve-caller-id.js +88 -0
  1000. package/dist/services/session/session-binding-bridge.d.ts +76 -0
  1001. package/dist/services/session/session-binding-bridge.js +247 -0
  1002. package/dist/services/session/session-checkpoint-service.d.ts +57 -0
  1003. package/dist/services/session/session-checkpoint-service.js +143 -0
  1004. package/dist/services/session/session-manager.d.ts +168 -0
  1005. package/dist/services/session/session-manager.js +502 -0
  1006. package/dist/services/session/session-resume-service.d.ts +25 -0
  1007. package/dist/services/session/session-resume-service.js +101 -0
  1008. package/dist/services/share/bundle-reader.d.ts +100 -0
  1009. package/dist/services/share/bundle-reader.js +434 -0
  1010. package/dist/services/share/bundle-types.d.ts +392 -0
  1011. package/dist/services/share/bundle-types.js +318 -0
  1012. package/dist/services/share/bundle-writer.d.ts +97 -0
  1013. package/dist/services/share/bundle-writer.js +429 -0
  1014. package/dist/services/share/run-state-contract.d.ts +133 -0
  1015. package/dist/services/share/run-state-contract.js +138 -0
  1016. package/dist/services/signal/cancel-handler.d.ts +14 -0
  1017. package/dist/services/signal/cancel-handler.js +76 -0
  1018. package/dist/services/skill/resume-detector.d.ts +54 -0
  1019. package/dist/services/skill/resume-detector.js +334 -0
  1020. package/dist/services/skill/skill-scheduler.d.ts +40 -0
  1021. package/dist/services/skill/skill-scheduler.js +53 -0
  1022. package/dist/services/skill/skill-search-service.d.ts +93 -0
  1023. package/dist/services/skill/skill-search-service.js +232 -0
  1024. package/dist/services/skillhub/migrations/001-initial.sql +71 -0
  1025. package/dist/services/skillhub/migrations/002-loop-release.sql +32 -0
  1026. package/dist/services/skillhub/migrations/003-loop-bee-relation.sql +35 -0
  1027. package/dist/services/skillhub/migrations/004-loop-bee-extension.sql +65 -0
  1028. package/dist/services/skillhub/migrations/005-evolution-evaluation.sql +81 -0
  1029. package/dist/services/skillhub/migrations/006-crystallization-event.sql +92 -0
  1030. package/dist/services/skillhub/release-diff.d.ts +18 -0
  1031. package/dist/services/skillhub/release-diff.js +38 -0
  1032. package/dist/services/skillhub/release-export.d.ts +8 -0
  1033. package/dist/services/skillhub/release-export.js +31 -0
  1034. package/dist/services/skillhub/release-gc-blobs.d.ts +13 -0
  1035. package/dist/services/skillhub/release-gc-blobs.js +32 -0
  1036. package/dist/services/skillhub/release-import.d.ts +7 -0
  1037. package/dist/services/skillhub/release-import.js +64 -0
  1038. package/dist/services/skillhub/release-retain.d.ts +23 -0
  1039. package/dist/services/skillhub/release-retain.js +94 -0
  1040. package/dist/services/skillhub/sqlite-store.d.ts +22 -0
  1041. package/dist/services/skillhub/sqlite-store.js +63 -0
  1042. package/dist/services/skillhub/tar-runtime.d.ts +21 -0
  1043. package/dist/services/skillhub/tar-runtime.js +91 -0
  1044. package/dist/services/skillhub/types.d.ts +115 -0
  1045. package/dist/services/skillhub/types.js +1 -0
  1046. package/dist/services/skills/hooks-settings-service.d.ts +212 -0
  1047. package/dist/services/skills/hooks-settings-service.js +624 -0
  1048. package/dist/services/skills/skill-conformance-service.d.ts +40 -0
  1049. package/dist/services/skills/skill-conformance-service.js +139 -0
  1050. package/dist/services/skills/skill-presence-service.d.ts +158 -0
  1051. package/dist/services/skills/skill-presence-service.js +474 -0
  1052. package/dist/services/skills/skill-registry.d.ts +18 -0
  1053. package/dist/services/skills/skill-registry.js +69 -0
  1054. package/dist/services/skills/skill-runbook-service.d.ts +11 -0
  1055. package/dist/services/skills/skill-runbook-service.js +128 -0
  1056. package/dist/services/skills/skill-statusline-renderer.d.ts +6 -0
  1057. package/dist/services/skills/skill-statusline-renderer.js +55 -0
  1058. package/dist/services/skills/skill-statusline-service.d.ts +24 -0
  1059. package/dist/services/skills/skill-statusline-service.js +110 -0
  1060. package/dist/services/skills/statusline-settings-service.d.ts +59 -0
  1061. package/dist/services/skills/statusline-settings-service.js +141 -0
  1062. package/dist/services/skills/sync-service.d.ts +86 -0
  1063. package/dist/services/skills/sync-service.js +271 -0
  1064. package/dist/services/slice/calibration-store.d.ts +39 -0
  1065. package/dist/services/slice/calibration-store.js +68 -0
  1066. package/dist/services/slice/cross-pass-edge-merger.d.ts +53 -0
  1067. package/dist/services/slice/cross-pass-edge-merger.js +246 -0
  1068. package/dist/services/slice/granularity-decider.d.ts +37 -0
  1069. package/dist/services/slice/granularity-decider.js +40 -0
  1070. package/dist/services/slice/llm-arbitrator.d.ts +35 -0
  1071. package/dist/services/slice/llm-arbitrator.js +63 -0
  1072. package/dist/services/slice/multi-pass-orchestrator.d.ts +67 -0
  1073. package/dist/services/slice/multi-pass-orchestrator.js +225 -0
  1074. package/dist/services/slice/schema-router.d.ts +44 -0
  1075. package/dist/services/slice/schema-router.js +61 -0
  1076. package/dist/services/slice/slice-archive-service.d.ts +20 -0
  1077. package/dist/services/slice/slice-archive-service.js +111 -0
  1078. package/dist/services/slice/slice-benchmark-service.d.ts +19 -0
  1079. package/dist/services/slice/slice-benchmark-service.js +60 -0
  1080. package/dist/services/slice/slice-check-service.d.ts +2 -0
  1081. package/dist/services/slice/slice-check-service.js +459 -0
  1082. package/dist/services/slice/slice-check-types.d.ts +104 -0
  1083. package/dist/services/slice/slice-check-types.js +28 -0
  1084. package/dist/services/slice/slice-decompose-runners.d.ts +23 -0
  1085. package/dist/services/slice/slice-decompose-runners.js +174 -0
  1086. package/dist/services/slice/slice-decompose-service.d.ts +24 -0
  1087. package/dist/services/slice/slice-decompose-service.js +532 -0
  1088. package/dist/services/slice/slice-decompose-types.d.ts +263 -0
  1089. package/dist/services/slice/slice-decompose-types.js +30 -0
  1090. package/dist/services/slice/slice-integration.d.ts +43 -0
  1091. package/dist/services/slice/slice-integration.js +106 -0
  1092. package/dist/services/slice/slice-pick-service.d.ts +32 -0
  1093. package/dist/services/slice/slice-pick-service.js +75 -0
  1094. package/dist/services/slice/slice-review-state.d.ts +70 -0
  1095. package/dist/services/slice/slice-review-state.js +109 -0
  1096. package/dist/services/slice/slice-topology-types.d.ts +115 -0
  1097. package/dist/services/slice/slice-topology-types.js +20 -0
  1098. package/dist/services/smoke/smoke-paths-state.d.ts +73 -0
  1099. package/dist/services/smoke/smoke-paths-state.js +117 -0
  1100. package/dist/services/sop/gate-enforce-service.d.ts +33 -0
  1101. package/dist/services/sop/gate-enforce-service.js +168 -0
  1102. package/dist/services/sop/sop-advance-service.d.ts +74 -0
  1103. package/dist/services/sop/sop-advance-service.js +115 -0
  1104. package/dist/services/sop/sop-check-service.d.ts +45 -0
  1105. package/dist/services/sop/sop-check-service.js +181 -0
  1106. package/dist/services/sop/sop-paths.d.ts +62 -0
  1107. package/dist/services/sop/sop-paths.js +92 -0
  1108. package/dist/services/sop/sop-registry-service.d.ts +46 -0
  1109. package/dist/services/sop/sop-registry-service.js +89 -0
  1110. package/dist/services/sop/sop-service.d.ts +55 -0
  1111. package/dist/services/sop/sop-service.js +222 -0
  1112. package/dist/services/sop/sop-types.d.ts +95 -0
  1113. package/dist/services/sop/sop-types.js +11 -0
  1114. package/dist/services/standards/ide-aware-standards-service.d.ts +94 -0
  1115. package/dist/services/standards/ide-aware-standards-service.js +91 -0
  1116. package/dist/services/standards/loop-engineering-lint.d.ts +38 -0
  1117. package/dist/services/standards/loop-engineering-lint.js +101 -0
  1118. package/dist/services/standards/loop-engineering-readiness-lint.d.ts +111 -0
  1119. package/dist/services/standards/loop-engineering-readiness-lint.js +248 -0
  1120. package/dist/services/standards/main-session-monitor-ban-hook.d.ts +14 -0
  1121. package/dist/services/standards/main-session-monitor-ban-hook.js +19 -0
  1122. package/dist/services/standards/migrate-claude-rules-service.d.ts +19 -0
  1123. package/dist/services/standards/migrate-claude-rules-service.js +214 -0
  1124. package/dist/services/standards/migrate-service.d.ts +63 -0
  1125. package/dist/services/standards/migrate-service.js +193 -0
  1126. package/dist/services/standards/missing-standards-detector.d.ts +106 -0
  1127. package/dist/services/standards/missing-standards-detector.js +170 -0
  1128. package/dist/services/standards/project-context.d.ts +24 -0
  1129. package/dist/services/standards/project-context.js +314 -0
  1130. package/dist/services/standards/project-standards-service.d.ts +114 -0
  1131. package/dist/services/standards/project-standards-service.js +693 -0
  1132. package/dist/services/tech/tech-change-id-service.d.ts +82 -0
  1133. package/dist/services/tech/tech-change-id-service.js +117 -0
  1134. package/dist/services/tech/tech-service.d.ts +69 -0
  1135. package/dist/services/tech/tech-service.js +299 -0
  1136. package/dist/services/test-cache/test-cache-service.d.ts +70 -0
  1137. package/dist/services/test-cache/test-cache-service.js +175 -0
  1138. package/dist/services/understand/hybrid-types.d.ts +32 -0
  1139. package/dist/services/understand/hybrid-types.js +1 -0
  1140. package/dist/services/understand/understand-hybrid-service.d.ts +10 -0
  1141. package/dist/services/understand/understand-hybrid-service.js +100 -0
  1142. package/dist/services/understand/understand-scan-service.d.ts +28 -0
  1143. package/dist/services/understand/understand-scan-service.js +170 -0
  1144. package/dist/services/understand/understand-types.d.ts +50 -0
  1145. package/dist/services/understand/understand-types.js +1 -0
  1146. package/dist/services/upgrade/1x-detector-service.d.ts +7 -0
  1147. package/dist/services/upgrade/1x-detector-service.js +94 -0
  1148. package/dist/services/upgrade/gitignore-migrate-service.d.ts +56 -0
  1149. package/dist/services/upgrade/gitignore-migrate-service.js +170 -0
  1150. package/dist/services/upgrade/upgrade-service.d.ts +81 -0
  1151. package/dist/services/upgrade/upgrade-service.js +404 -0
  1152. package/dist/services/verdict/envelopes.d.ts +93 -0
  1153. package/dist/services/verdict/envelopes.js +349 -0
  1154. package/dist/services/verdict/verdict-aggregator.d.ts +94 -0
  1155. package/dist/services/verdict/verdict-aggregator.js +112 -0
  1156. package/dist/services/vm/vm-lease.d.ts +40 -0
  1157. package/dist/services/vm/vm-lease.js +137 -0
  1158. package/dist/services/workflow/artifact-paths.d.ts +59 -0
  1159. package/dist/services/workflow/artifact-paths.js +166 -0
  1160. package/dist/services/workflow/autonomous-resume-writer.d.ts +16 -0
  1161. package/dist/services/workflow/autonomous-resume-writer.js +170 -0
  1162. package/dist/services/workflow/pipeline-verify-gate-support.d.ts +47 -0
  1163. package/dist/services/workflow/pipeline-verify-gate-support.js +194 -0
  1164. package/dist/services/workflow/pipeline-verify-service.d.ts +26 -0
  1165. package/dist/services/workflow/pipeline-verify-service.js +273 -0
  1166. package/dist/services/workflow/pipeline-verify-types.d.ts +90 -0
  1167. package/dist/services/workflow/pipeline-verify-types.js +10 -0
  1168. package/dist/services/workflow/plan-reader.d.ts +29 -0
  1169. package/dist/services/workflow/plan-reader.js +174 -0
  1170. package/dist/services/workflow/plan-refresher.d.ts +32 -0
  1171. package/dist/services/workflow/plan-refresher.js +353 -0
  1172. package/dist/services/workflow/plan-trigger-detector.d.ts +55 -0
  1173. package/dist/services/workflow/plan-trigger-detector.js +142 -0
  1174. package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +19 -0
  1175. package/dist/services/workflow/workflow-autonomous-resume-helpers.js +300 -0
  1176. package/dist/services/workflow/workflow-autonomous-service.d.ts +4 -0
  1177. package/dist/services/workflow/workflow-autonomous-service.js +306 -0
  1178. package/dist/services/workflow/workflow-autonomous-types.d.ts +114 -0
  1179. package/dist/services/workflow/workflow-autonomous-types.js +21 -0
  1180. package/dist/services/workflow/workflow-loader.d.ts +63 -0
  1181. package/dist/services/workflow/workflow-loader.js +168 -0
  1182. package/dist/services/workflow/workflow-router-service.d.ts +85 -0
  1183. package/dist/services/workflow/workflow-router-service.js +235 -0
  1184. package/dist/services/workflow/workflow-skip-service.d.ts +106 -0
  1185. package/dist/services/workflow/workflow-skip-service.js +209 -0
  1186. package/dist/services/workflow/workflow-spec-lint.d.ts +13 -0
  1187. package/dist/services/workflow/workflow-spec-lint.js +75 -0
  1188. package/dist/services/workflow/workflow-spec-types.d.ts +100 -0
  1189. package/dist/services/workflow/workflow-spec-types.js +13 -0
  1190. package/dist/services/workflow/workflow-spec-yaml.d.ts +17 -0
  1191. package/dist/services/workflow/workflow-spec-yaml.js +88 -0
  1192. package/dist/services/workflow/workflow-spec.d.ts +36 -0
  1193. package/dist/services/workflow/workflow-spec.js +302 -0
  1194. package/dist/services/workflow/workflow-state-store.d.ts +27 -0
  1195. package/dist/services/workflow/workflow-state-store.js +95 -0
  1196. package/dist/services/workspace/claude-settings-template.d.ts +101 -0
  1197. package/dist/services/workspace/claude-settings-template.js +254 -0
  1198. package/dist/services/workspace/migrate-1-4-1-service.d.ts +44 -0
  1199. package/dist/services/workspace/migrate-1-4-1-service.js +195 -0
  1200. package/dist/services/workspace/migrate-service.d.ts +2 -0
  1201. package/dist/services/workspace/migrate-service.js +613 -0
  1202. package/dist/services/workspace/migrate-types.d.ts +127 -0
  1203. package/dist/services/workspace/migrate-types.js +21 -0
  1204. package/dist/services/workspace/reconcile-service.d.ts +188 -0
  1205. package/dist/services/workspace/reconcile-service.js +683 -0
  1206. package/dist/services/workspace/reconcile-types.d.ts +130 -0
  1207. package/dist/services/workspace/reconcile-types.js +13 -0
  1208. package/dist/services/workspace/sid-naming-guard.d.ts +17 -0
  1209. package/dist/services/workspace/sid-naming-guard.js +34 -0
  1210. package/dist/services/workspace/templates/project-scan/audit-output-schema.md +100 -0
  1211. package/dist/services/workspace/templates/project-scan/business-knowledge.md +44 -0
  1212. package/dist/services/workspace/templates/project-scan/index.d.ts +34 -0
  1213. package/dist/services/workspace/templates/project-scan/index.js +60 -0
  1214. package/dist/services/workspace/templates/project-scan/perf-template.md +109 -0
  1215. package/dist/services/workspace/templates/project-scan/security-template.md +99 -0
  1216. package/dist/services/workspace/workspace-claude-settings-materializer.d.ts +45 -0
  1217. package/dist/services/workspace/workspace-claude-settings-materializer.js +194 -0
  1218. package/dist/services/workspace/workspace-clean-service.d.ts +28 -0
  1219. package/dist/services/workspace/workspace-clean-service.js +46 -0
  1220. package/dist/services/workspace/workspace-service.d.ts +177 -0
  1221. package/dist/services/workspace/workspace-service.js +432 -0
  1222. package/dist/services/workspace/workspace-state-service.d.ts +7 -0
  1223. package/dist/services/workspace/workspace-state-service.js +43 -0
  1224. package/dist/services/worktree/worktree-lease.d.ts +170 -0
  1225. package/dist/services/worktree/worktree-lease.js +242 -0
  1226. package/dist/shared/format-md-compact.d.ts +32 -0
  1227. package/dist/shared/format-md-compact.js +297 -0
  1228. package/dist/shared/frontmatter.d.ts +6 -0
  1229. package/dist/shared/frontmatter.js +165 -0
  1230. package/dist/shared/fs-utils.d.ts +4 -0
  1231. package/dist/shared/fs-utils.js +16 -0
  1232. package/dist/shared/incrementing-number.d.ts +23 -0
  1233. package/dist/shared/incrementing-number.js +68 -0
  1234. package/dist/shared/json-schema-mini.d.ts +10 -0
  1235. package/dist/shared/json-schema-mini.js +113 -0
  1236. package/dist/shared/path-safety.d.ts +21 -0
  1237. package/dist/shared/path-safety.js +54 -0
  1238. package/dist/shared/path-utils.d.ts +13 -0
  1239. package/dist/shared/path-utils.js +56 -0
  1240. package/dist/shared/planner-response.d.ts +21 -0
  1241. package/dist/shared/planner-response.js +26 -0
  1242. package/dist/shared/platform.d.ts +6 -0
  1243. package/dist/shared/platform.js +11 -0
  1244. package/dist/shared/process.d.ts +5 -0
  1245. package/dist/shared/process.js +12 -0
  1246. package/dist/shared/stale-policy.d.ts +67 -0
  1247. package/dist/shared/stale-policy.js +85 -0
  1248. package/dist/skills/peaks-maker/index.d.ts +5 -0
  1249. package/dist/skills/peaks-maker/index.js +32 -0
  1250. package/package.json +51 -54
  1251. package/scripts/clean-dist.mjs +31 -1
  1252. package/scripts/copy-templates.mjs +17 -1
  1253. package/scripts/sync-version.mjs +53 -2
  1254. package/skills/bee/peaks-perf-audit/SKILL.md +17 -0
  1255. package/skills/bee/peaks-prd/SKILL.md +16 -0
  1256. package/skills/bee/peaks-prd/test-prompts.json +12 -0
  1257. package/skills/bee/peaks-qa/SKILL.md +16 -1
  1258. package/skills/bee/peaks-qa/references/qa-sub-agent-dispatch.md +22 -0
  1259. package/skills/bee/peaks-qa/test-prompts.json +12 -0
  1260. package/skills/bee/peaks-rd/SKILL.md +29 -20
  1261. package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +39 -0
  1262. package/skills/bee/peaks-rd/test-prompts.json +12 -0
  1263. package/skills/bee/peaks-reviewer/SKILL.md +17 -0
  1264. package/skills/bee/peaks-sc/SKILL.md +16 -0
  1265. package/skills/bee/peaks-security-audit/SKILL.md +17 -0
  1266. package/skills/bee/peaks-txt/SKILL.md +16 -0
  1267. package/skills/bee/peaks-txt/test-prompts.json +12 -0
  1268. package/skills/bee/peaks-ui/SKILL.md +49 -43
  1269. package/skills/bee/peaks-ui/test-prompts.json +12 -0
  1270. package/skills/peaks-code/SKILL.md +54 -109
  1271. package/skills/peaks-code/references/boundaries.md +15 -1
  1272. package/skills/peaks-code/references/cron-scheduler-deployment.md +313 -0
  1273. package/skills/peaks-code/references/external-skill-invocation.md +27 -0
  1274. package/skills/peaks-code/references/lease-dashboard.html +224 -0
  1275. package/skills/peaks-code/references/lease-stats.sample.json +26 -0
  1276. package/skills/peaks-code/references/peaks-worktree-l2-enforcers.md +208 -0
  1277. package/skills/peaks-code/references/periodic-checkpoint.md +4 -4
  1278. package/skills/peaks-code/references/runbook.md +63 -1
  1279. package/skills/peaks-code/references/startup-sequence.md +110 -0
  1280. package/skills/peaks-code/references/step-0-8-gate.md +1 -1
  1281. package/skills/peaks-code/references/sub-agent-dispatch.md +92 -1
  1282. package/skills/peaks-code/references/worktree-governance.md +123 -0
  1283. package/skills/peaks-code/test-prompts.json +12 -0
  1284. package/skills/peaks-doctor/SKILL.md +1 -1
  1285. package/skills/peaks-ide/SKILL.md +1 -1
  1286. package/skills/peaks-solo/SKILL.md +21 -0
  1287. package/skills/peaks-solo/references/triage-decision-table.md +6 -0
  1288. package/skills/peaks-sop/test-prompts.json +17 -0
  1289. package/examples/video-demo/README.md +0 -142
  1290. package/examples/video-demo/out/en-closing-960.png +0 -0
  1291. package/examples/video-demo/out/zh-closing-960.png +0 -0
  1292. package/examples/video-demo/preview/peaks-loop-demo-en.mp4 +0 -0
  1293. package/examples/video-demo/preview/peaks-loop-demo.mp4 +0 -0
@@ -0,0 +1,690 @@
1
+ /**
2
+ * Dispatch record writer — slice 2026-06-07-sub-agent-dispatch-decouple (G2 + G5 + G6).
3
+ *
4
+ * Owns the on-disk format of `.peaks/_sub_agents/<sid>/dispatch-<rid>-<ts>.json`:
5
+ * - G2: atomic write helper (mkdirSync recursive + tmp + rename) and
6
+ * R-2 guard (path must live under `.peaks/_sub_agents/<sid>/`).
7
+ * - G5: lifecycle schema (`createdAt` / `completedAt` / `outcome` /
8
+ * `artifactPaths` / `disposed` / `disposedAt`) per AC-26 + RL-6..RL-9.
9
+ * - G6: heartbeat schema upgrade per AC-33/AC-34 — `heartbeats[]` +
10
+ * `lastBeatAt` + `status` aggregate. Read-side backward compat
11
+ * supplies defaults for old records missing the G6 fields.
12
+ *
13
+ * The write helpers are intentionally small and pure:
14
+ * - `writeInitialDispatchRecord`: append a new dispatch record at the
15
+ * start of a sub-agent dispatch (called by `peaks sub-agent dispatch`).
16
+ * - `appendHeartbeat`: append one heartbeat to an existing record
17
+ * (called by `peaks sub-agent heartbeat`).
18
+ * - `markCompleted` / `markFailed` / `markCancelled` / `markNoExecution`:
19
+ * lifecycle transitions called by the reducer.
20
+ *
21
+ * All writes are atomic (tmp + rename) so a process crash mid-write
22
+ * cannot leave a half-truncated JSON file. All reads tolerate missing
23
+ * G6 fields (backward compat) and the G5 schema fields default to
24
+ * `null` / `false` / `'no-execution'` if the file was written by an
25
+ * older peaks build.
26
+ */
27
+ import { existsSync, mkdirSync, readFileSync, renameSync, statSync, writeFileSync } from 'node:fs';
28
+ import { dirname, resolve } from 'node:path';
29
+ import { assertSafeDispatchRecordPath, dispatchRecordPath } from '../security/safe-settings-path.js';
30
+ import { withFileLockSync } from 'peaks-loop-shared-channel';
31
+ import { isStageLabel } from './stage-enum.js';
32
+ import { emitLeaseEvent } from '../observability/observability-service.js';
33
+ const MAX_PROMPT_BYTES = 256 * 1024;
34
+ /** Write a new dispatch record (G2 + G5 + G6). Returns the absolute path. */
35
+ export function writeInitialDispatchRecord(input) {
36
+ const { projectRoot, sessionId, requestId, role, prompt, toolCall, batchId } = input;
37
+ const now = input.now ?? (() => new Date());
38
+ if (prompt.length > MAX_PROMPT_BYTES) {
39
+ const err = new Error(`prompt exceeds ${MAX_PROMPT_BYTES} bytes (got ${prompt.length}); ` +
40
+ `truncate or split into multiple dispatches`);
41
+ err.code = 'PROMPT_TOO_LARGE';
42
+ throw err;
43
+ }
44
+ const path = dispatchRecordPath(projectRoot, sessionId, requestId, now());
45
+ const safePath = assertSafeDispatchRecordPath(path, projectRoot);
46
+ const record = {
47
+ version: '3.1',
48
+ createdAt: now().toISOString(),
49
+ completedAt: null,
50
+ outcome: 'no-execution',
51
+ artifactPaths: [],
52
+ disposed: false,
53
+ disposedAt: null,
54
+ role,
55
+ requestId,
56
+ sessionId,
57
+ prompt,
58
+ // Slice 2026-06-23-audit-4th #C2: propagate toolCallVersion.
59
+ // The dispatcher's buildToolCall already stamps it (claude-code 2.0.0
60
+ // etc.); we re-default to '2.0.0' if absent so the on-disk record
61
+ // is self-describing without reading the dispatcher source.
62
+ toolCall: { ...toolCall, toolCallVersion: toolCall.toolCallVersion ?? '2.0.0' },
63
+ batchId,
64
+ heartbeats: [],
65
+ lastBeatAt: null,
66
+ status: 'queued',
67
+ // Slice 2026-07-29-dispatch-stall-governance / S5 (AC-5.1) — new
68
+ // records start with `stage: null`; the sub-agent promotes it
69
+ // through `setStage` / the heartbeat CLI's `--stage` flag.
70
+ stage: null,
71
+ // Slice 2026-07-29-worktree-l2-extended Part 3.A: when the
72
+ // dispatch was issued with --isolation worktree, persist the
73
+ // lease id so the finalize-time release hook in markCompleted
74
+ // can fire. Validation is the same 16-hex regex the gate uses
75
+ // (gate-commands.ts), so an attacker-controlled toolCall.env
76
+ // cannot inject a non-hex value and get the release path to
77
+ // misfire.
78
+ leaseId: typeof input.leaseId === 'string' && /^[a-f0-9]{16}$/.test(input.leaseId)
79
+ ? input.leaseId
80
+ : null,
81
+ // Slice 2026-07-29-worktree-l2-extended Part 7: v3.1 field.
82
+ // ISO timestamp when the isolation mode was set up. Default
83
+ // null when the dispatch did not request isolation. We do
84
+ // NOT validate the format — the writer is the source of
85
+ // truth here, and any ISO 8601 string Date.parse() can
86
+ // handle is acceptable for the dashboard.
87
+ isolationStartedAt: typeof input.isolationStartedAt === 'string' && input.isolationStartedAt.length > 0
88
+ ? input.isolationStartedAt
89
+ : null
90
+ };
91
+ writeAtomic(safePath, record);
92
+ // Slice 2026-06-23-audit-4th #A4: register the path in the
93
+ // session's active-dispatches index so a future restart can
94
+ // discover in-flight records without scanning the directory.
95
+ // The index is best-effort (no lock): the on-disk record is the
96
+ // source of truth; the index is purely a hint for the LLM-side
97
+ // runner. A crash between writeAtomic and the index write is
98
+ // non-fatal — the next restart scans the directory anyway.
99
+ registerActiveDispatch({
100
+ projectRoot,
101
+ sessionId,
102
+ recordPath: safePath,
103
+ requestId,
104
+ role,
105
+ batchId,
106
+ now
107
+ });
108
+ return { path: safePath, record };
109
+ }
110
+ function activeDispatchIndexPath(projectRoot, sessionId) {
111
+ return resolve(projectRoot, '.peaks', '_sub_agents', sessionId, 'active-dispatches.json');
112
+ }
113
+ function registerActiveDispatch(input) {
114
+ const indexPath = activeDispatchIndexPath(input.projectRoot, input.sessionId);
115
+ const dir = dirname(indexPath);
116
+ if (!existsSync(dir)) {
117
+ mkdirSync(dir, { recursive: true });
118
+ }
119
+ let index = {};
120
+ try {
121
+ if (existsSync(indexPath)) {
122
+ const raw = readFileSync(indexPath, 'utf8');
123
+ const parsed = JSON.parse(raw);
124
+ if (typeof parsed === 'object' && parsed !== null) {
125
+ for (const [k, v] of Object.entries(parsed)) {
126
+ if (typeof v === 'object' && v !== null && 'recordPath' in v) {
127
+ index[k] = v;
128
+ }
129
+ }
130
+ }
131
+ }
132
+ }
133
+ catch {
134
+ // Corrupt index — start fresh. The on-disk record is the source of truth.
135
+ index = {};
136
+ }
137
+ index[input.recordPath] = {
138
+ recordPath: input.recordPath,
139
+ requestId: input.requestId,
140
+ role: input.role,
141
+ batchId: input.batchId,
142
+ createdAt: input.now().toISOString(),
143
+ status: 'queued'
144
+ };
145
+ const tmp = `${indexPath}.tmp-${process.pid}-${Date.now()}`;
146
+ writeFileSync(tmp, JSON.stringify(index, null, 2) + '\n', 'utf8');
147
+ renameSync(tmp, indexPath);
148
+ }
149
+ function unregisterActiveDispatch(input) {
150
+ const indexPath = activeDispatchIndexPath(input.projectRoot, input.sessionId);
151
+ if (!existsSync(indexPath))
152
+ return;
153
+ let index = {};
154
+ try {
155
+ const raw = readFileSync(indexPath, 'utf8');
156
+ const parsed = JSON.parse(raw);
157
+ if (typeof parsed === 'object' && parsed !== null) {
158
+ for (const [k, v] of Object.entries(parsed)) {
159
+ if (typeof v === 'object' && v !== null && 'recordPath' in v) {
160
+ index[k] = v;
161
+ }
162
+ }
163
+ }
164
+ }
165
+ catch {
166
+ return;
167
+ }
168
+ if (input.recordPath in index) {
169
+ index[input.recordPath] = { ...index[input.recordPath], status: input.status };
170
+ // Slice 2026-07-29-dispatch-stall-governance / S1 — `never-started`
171
+ // and `unreadable` are terminal (the startup-timeout service writes
172
+ // them as terminal markers). Unregister on the full terminal set.
173
+ if (input.status === 'done' ||
174
+ input.status === 'failed' ||
175
+ input.status === 'cancelled' ||
176
+ input.status === 'no-execution' ||
177
+ input.status === 'never-started' ||
178
+ input.status === 'unreadable') {
179
+ delete index[input.recordPath];
180
+ }
181
+ const tmp = `${indexPath}.tmp-${process.pid}-${Date.now()}`;
182
+ writeFileSync(tmp, JSON.stringify(index, null, 2) + '\n', 'utf8');
183
+ renameSync(tmp, indexPath);
184
+ }
185
+ }
186
+ /**
187
+ * Slice 2026-06-23-audit-4th #A4: read the active-dispatches index
188
+ * for a session. Returns the current map<recordPath, entry>. Used
189
+ * by the LLM-side runner to discover in-flight records on restart.
190
+ * Returns an empty map when the index file is missing or corrupt
191
+ * (the on-disk records directory is the next fallback).
192
+ */
193
+ export function readActiveDispatchIndex(projectRoot, sessionId) {
194
+ const indexPath = activeDispatchIndexPath(projectRoot, sessionId);
195
+ if (!existsSync(indexPath))
196
+ return {};
197
+ try {
198
+ const raw = readFileSync(indexPath, 'utf8');
199
+ const parsed = JSON.parse(raw);
200
+ if (typeof parsed !== 'object' || parsed === null)
201
+ return {};
202
+ const out = {};
203
+ for (const [k, v] of Object.entries(parsed)) {
204
+ if (typeof v === 'object' && v !== null && 'recordPath' in v && 'role' in v) {
205
+ out[k] = v;
206
+ }
207
+ }
208
+ return out;
209
+ }
210
+ catch {
211
+ return {};
212
+ }
213
+ }
214
+ /** Slice 2026-06-23-audit-4th #A3: default TTL for dispatch records. */
215
+ export const DISPATCH_RECORD_TTL_DAYS = 30;
216
+ /**
217
+ * Slice 2026-06-23-audit-4th #A3: is this dispatch record an orphan
218
+ * (older than DISPATCH_RECORD_TTL_DAYS or already GC'd)? Mirrors
219
+ * `isOrphanChannel` in shared-channel.ts so a future
220
+ * `peaks sub-agent cleanup` umbrella can run all three sweeps
221
+ * (shared channel + dispatch record + contract) in one pass.
222
+ */
223
+ export function isOrphanDispatchRecord(opts) {
224
+ if (!existsSync(opts.recordPath))
225
+ return true;
226
+ const s = statSync(opts.recordPath);
227
+ const now = opts.now ?? new Date();
228
+ const ageMs = now.getTime() - s.mtimeMs;
229
+ const ttlMs = DISPATCH_RECORD_TTL_DAYS * 24 * 60 * 60 * 1000;
230
+ return ageMs > ttlMs;
231
+ }
232
+ /** Append a heartbeat (G6). Idempotent on (at, status) — append-only. */
233
+ export function appendHeartbeat(input) {
234
+ const { recordPath, status, progress, note } = input;
235
+ const now = input.now ?? (() => new Date());
236
+ if (!Number.isInteger(progress) || progress < 0 || progress > 100) {
237
+ const err = new Error(`progress must be integer 0..100 (got ${progress})`);
238
+ err.code = 'INVALID_PROGRESS';
239
+ throw err;
240
+ }
241
+ if (note !== undefined && note.length > 200) {
242
+ const err = new Error(`note must be ≤ 200 chars (got ${note.length})`);
243
+ err.code = 'NOTE_TOO_LONG';
244
+ throw err;
245
+ }
246
+ const existing = readRecord(recordPath);
247
+ const entry = {
248
+ at: now().toISOString(),
249
+ status,
250
+ progress,
251
+ note: note ?? null
252
+ };
253
+ const { heartbeats, truncated } = applyTruncation([...existing.heartbeats, entry]);
254
+ const next = {
255
+ ...existing,
256
+ heartbeats,
257
+ lastBeatAt: entry.at,
258
+ status: mapStatusToAggregate(status, existing.status)
259
+ };
260
+ // Slice 2026-06-23-audit-3rd #3: wrap the read-then-write in a file
261
+ // lock. Without the lock, a heartbeat arriving 100ms before
262
+ // markCompleted can be silently discarded — the parent's view of the
263
+ // sub-agent shows "completed" but the last progress update is lost.
264
+ return withFileLockSync(recordPath, () => {
265
+ // Re-read under the lock — the file may have been mutated between
266
+ // our pre-lock `readRecord` above and lock acquisition (heartbeats
267
+ // and markCompleted share the same record file).
268
+ const lockedExisting = readRecord(recordPath);
269
+ const lockedHeartbeats = applyTruncation([
270
+ ...lockedExisting.heartbeats,
271
+ entry
272
+ ]).heartbeats;
273
+ const lockedNext = {
274
+ ...lockedExisting,
275
+ heartbeats: lockedHeartbeats,
276
+ lastBeatAt: entry.at,
277
+ status: mapStatusToAggregate(status, lockedExisting.status)
278
+ };
279
+ writeAtomic(recordPath, lockedNext);
280
+ // Recompute truncated flag from the locked-read result so the
281
+ // caller sees the actual post-lock truncation state.
282
+ return {
283
+ record: lockedNext,
284
+ truncated: lockedHeartbeats.length < lockedExisting.heartbeats.length + 1
285
+ };
286
+ });
287
+ }
288
+ /** Apply truncation: keep most recent 100, mark truncated flag. */
289
+ export function applyTruncation(entries) {
290
+ if (entries.length <= 100) {
291
+ return { heartbeats: [...entries], truncated: false };
292
+ }
293
+ return { heartbeats: entries.slice(-100), truncated: true };
294
+ }
295
+ function mapStatusToAggregate(latest, current) {
296
+ // 'stale' is a poller-driven warning and must not be overwritten by
297
+ // a normal heartbeat that arrives after the stale flag was set.
298
+ if (current === 'stale') {
299
+ return 'stale';
300
+ }
301
+ return latest;
302
+ }
303
+ /**
304
+ * Slice 2026-07-29-worktree-l2-extended Part 3.A: fire-and-forget
305
+ * auto-release for the lease owned by a dispatch. Called from
306
+ * `markCompleted` (terminal status) and from the heartbeat CLI
307
+ * (`--status done`).
308
+ *
309
+ * Design:
310
+ * - The release subprocess is spawned ASYNC and detached. The
311
+ * finalize-time caller (heartbeat / share / dispatch reducer)
312
+ * does NOT await it; the caller's job is to record the
313
+ * finalization, not to wait for the lease cleanup.
314
+ * - Failures are swallowed (best-effort, same as `git worktree
315
+ * remove` inside `peaks worktree release` itself). The next
316
+ * `peaks worktree gc` pass is the safety net.
317
+ * - Idempotent: re-calling with the same leaseId is a no-op on
318
+ * the release side (the CLI refuses to re-release an already-
319
+ * released lease; see Part 1 release command).
320
+ * - The leaseId MUST be 16-hex (same regex the gate uses). Any
321
+ * other value is silently ignored — we never shell out to
322
+ * `peaks worktree release` with attacker-controlled input.
323
+ */
324
+ export function tryAutoReleaseLease(args) {
325
+ if (typeof args.leaseId !== 'string' || !/^[a-f0-9]{16}$/.test(args.leaseId)) {
326
+ return;
327
+ }
328
+ if (typeof args.projectRoot !== 'string' || args.projectRoot.length === 0) {
329
+ return;
330
+ }
331
+ // Spawn detached. The CLI itself runs `git worktree remove` and
332
+ // marks the lease released; we trust its at-least-once semantics.
333
+ // `node:child_process` is loaded via dynamic import so this module
334
+ // remains ESM-compatible (the compiled heartbeat CLI throws
335
+ // `require is not defined` if we use `require` here).
336
+ void (async () => {
337
+ let spawned = false;
338
+ try {
339
+ const cp = await import('node:child_process');
340
+ const child = cp.spawn(process.execPath, [
341
+ process.argv[1] ?? '',
342
+ 'worktree', 'release',
343
+ '--lease-id', args.leaseId,
344
+ '--project', args.projectRoot,
345
+ '--session', args.sessionId,
346
+ '--json'
347
+ ],
348
+ // `pipe` rather than `ignore` so a spawn failure (e.g. ENOENT
349
+ // on process.argv[1] in a test) shows up on stderr instead
350
+ // of vanishing into the void. The release CLI is short-lived
351
+ // so buffering is irrelevant.
352
+ { stdio: ['ignore', 'pipe', 'pipe'], windowsHide: true, detached: true });
353
+ spawned = true;
354
+ if (process.env.PEAKS_WORKTREE_LEASE_DEBUG) {
355
+ child.stderr?.on('data', (d) => process.stderr.write(`[release] ${d.toString('utf8')}`));
356
+ child.stdout?.on('data', (d) => process.stderr.write(`[release] ${d.toString('utf8')}`));
357
+ child.on('error', (e) => process.stderr.write(`[release error] ${e.message}\n`));
358
+ child.on('exit', (code) => process.stderr.write(`[release exit] code=${code}\n`));
359
+ }
360
+ else {
361
+ child.stderr?.on('data', () => { });
362
+ child.stdout?.on('data', () => { });
363
+ child.on('error', () => { });
364
+ }
365
+ child.unref();
366
+ }
367
+ catch (e) {
368
+ // Slice 2026-07-29-worktree-l2-extended Part 4.A: surface
369
+ // auto-release failures to the observability stream so the
370
+ // dashboard can alert. The spawn-attempt itself threw (not
371
+ // a child-process exit-code failure — those are not
372
+ // catchable from the parent because the child is detached
373
+ // and unref'd). emitLeaseEvent is fire-and-forget; it
374
+ // returns a result we don't inspect.
375
+ emitLeaseEvent({
376
+ sessionId: args.sessionId,
377
+ projectRoot: args.projectRoot,
378
+ kind: 'autoRelease-failed',
379
+ leaseId: args.leaseId,
380
+ reason: e.message
381
+ });
382
+ }
383
+ if (spawned) {
384
+ // Record the success path. Idempotent with the manual
385
+ // `peaks worktree release` metric — the release CLI itself
386
+ // emits a 'release' event when it runs and lands. Two
387
+ // events for one logical release is acceptable; the
388
+ // dashboard can dedup or count both under
389
+ // lease.autoRelease.count.
390
+ emitLeaseEvent({
391
+ sessionId: args.sessionId,
392
+ projectRoot: args.projectRoot,
393
+ kind: 'autoRelease',
394
+ leaseId: args.leaseId
395
+ });
396
+ }
397
+ })();
398
+ // NB: we deliberately do NOT log per-call here — every heartbeat
399
+ // that reports done in a busy session would otherwise spam the
400
+ // log. The release CLI itself emits a structured envelope on
401
+ // success; that's the audit record.
402
+ if (args.logger !== undefined) {
403
+ args.logger(`peaks.worktree.autoRelease leaseId=${args.leaseId} sessionId=${args.sessionId}`);
404
+ }
405
+ }
406
+ /** Mark a record as completed (success / failed / cancelled / no-execution). */
407
+ export function markCompleted(input) {
408
+ // Slice 2026-06-23-audit-3rd #3: lock + re-read so a concurrent
409
+ // heartbeat arriving just before markCompleted is preserved in the
410
+ // final record.
411
+ const result = withFileLockSync(input.recordPath, () => {
412
+ const existing = readRecord(input.recordPath);
413
+ const next = {
414
+ ...existing,
415
+ completedAt: (input.now ?? (() => new Date()))().toISOString(),
416
+ outcome: input.outcome,
417
+ status: input.status,
418
+ artifactPaths: input.artifactPaths ?? existing.artifactPaths
419
+ };
420
+ writeAtomic(input.recordPath, next);
421
+ return { record: next };
422
+ });
423
+ // Slice 2026-06-23-audit-4th #A4: update the active-dispatches
424
+ // index. Best-effort (the on-disk record is the source of truth);
425
+ // we only attempt the update when the trusted projectRoot is
426
+ // available so a malicious recordPath cannot redirect the index
427
+ // write (audit-3rd #1 anti-pattern).
428
+ if (typeof input.projectRoot === 'string' && input.projectRoot.length > 0) {
429
+ try {
430
+ unregisterActiveDispatch({
431
+ projectRoot: input.projectRoot,
432
+ sessionId: result.record.sessionId,
433
+ recordPath: input.recordPath,
434
+ status: input.status
435
+ });
436
+ }
437
+ catch { // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
438
+ /* best-effort */
439
+ }
440
+ }
441
+ // Slice 2026-07-29-worktree-l2-extended Part 3.A: finalize-time
442
+ // lease release. The terminal status (done/failed/cancelled/
443
+ // no-execution) means the sub-agent is no longer using the
444
+ // worktree; auto-release closes the loop. The release is detached
445
+ // and best-effort; a crash here cannot roll back the markCompleted
446
+ // write (we already returned from the lock). The next gc pass is
447
+ // the safety net.
448
+ if (result.record.leaseId !== null && typeof input.projectRoot === 'string' && input.projectRoot.length > 0) {
449
+ try {
450
+ tryAutoReleaseLease({
451
+ projectRoot: input.projectRoot,
452
+ sessionId: result.record.sessionId,
453
+ leaseId: result.record.leaseId
454
+ });
455
+ }
456
+ catch { // best-effort; release is async anyway
457
+ /* swallow */
458
+ }
459
+ }
460
+ return result;
461
+ }
462
+ /** Mark a record as disposed (reducer ran). */
463
+ export function markDisposed(recordPath, now = () => new Date()) {
464
+ // Lock + re-read (see markCompleted).
465
+ return withFileLockSync(recordPath, () => {
466
+ const existing = readRecord(recordPath);
467
+ const next = {
468
+ ...existing,
469
+ disposed: true,
470
+ disposedAt: now().toISOString()
471
+ };
472
+ writeAtomic(recordPath, next);
473
+ return { record: next };
474
+ });
475
+ }
476
+ /**
477
+ * Slice 2026-07-29-dispatch-stall-governance / S5 (AC-5.1) — promote
478
+ * the record's `stage` field. Rejects unknown values with
479
+ * `INVALID_STAGE`; the LLM-side runner surfaces the error so the
480
+ * sub-agent can pick from the bounded enum in ./stage-enum.ts.
481
+ *
482
+ * Atomic via the same `withFileLockSync` lock as `appendHeartbeat` /
483
+ * `markCompleted`. `null` is a valid argument ("clear the stage")
484
+ * but unknown strings are not.
485
+ */
486
+ export function setStage(input) {
487
+ if (input.stage !== null && !isStageLabel(input.stage)) {
488
+ const err = new Error(`stage must be one of the bounded stage labels (got: ${JSON.stringify(input.stage)})`);
489
+ err.code = 'INVALID_STAGE';
490
+ throw err;
491
+ }
492
+ return withFileLockSync(input.recordPath, () => {
493
+ const existing = readRecord(input.recordPath);
494
+ const next = {
495
+ ...existing,
496
+ stage: input.stage
497
+ };
498
+ writeAtomic(input.recordPath, next);
499
+ return { record: next };
500
+ });
501
+ }
502
+ /**
503
+ * Read a dispatch record with backward-compat defaults. Old records
504
+ * missing G5 / G6 fields are upgraded on read (no error, no overwrite).
505
+ */
506
+ export function readRecord(recordPath) {
507
+ if (!existsSync(recordPath)) {
508
+ const err = new Error(`Dispatch record not found: ${recordPath}`);
509
+ err.code = 'RECORD_NOT_FOUND';
510
+ err.path = recordPath;
511
+ throw err;
512
+ }
513
+ const raw = readFileSync(recordPath, 'utf8');
514
+ let parsed;
515
+ try {
516
+ parsed = JSON.parse(raw);
517
+ }
518
+ catch (error) {
519
+ const err = new Error(`Invalid dispatch record JSON: ${error.message}`);
520
+ err.code = 'INVALID_RECORD_JSON';
521
+ throw err;
522
+ }
523
+ return upgradeRecord(parsed);
524
+ }
525
+ /** Read multiple records from a list of paths. Tolerates missing files. */
526
+ export function readRecords(paths) {
527
+ const out = [];
528
+ for (const p of paths) {
529
+ try {
530
+ out.push(readRecord(p));
531
+ }
532
+ catch (error) {
533
+ const code = error.code;
534
+ if (code === 'RECORD_NOT_FOUND') {
535
+ continue;
536
+ }
537
+ throw error;
538
+ }
539
+ }
540
+ return out;
541
+ }
542
+ function upgradeRecord(parsed) {
543
+ if (!isObject(parsed)) {
544
+ throw new Error('Dispatch record root must be an object');
545
+ }
546
+ const obj = parsed;
547
+ // Slice 2026-07-29-rid-prose-only-sweep Part 34: the version
548
+ // field is now the literal '3.1'. Legacy v2 and v3 records
549
+ // (version: 2 or version: 3) are accepted transparently and
550
+ // upgraded to v3.1 on read. The forward-compat check rejects
551
+ // records with an unknown version string (which would
552
+ // indicate either a much-older build or a much-newer one
553
+ // with a schema we have not implemented). v1 records
554
+ // (pre-audit-trail) must be regenerated.
555
+ const rawVersion = obj.version;
556
+ if (rawVersion !== '3.1' && rawVersion !== 3 && rawVersion !== 2 && rawVersion !== 1) {
557
+ throw new Error(`Dispatch record version mismatch: expected '3.1', 3, 2, or 1, got ${JSON.stringify(rawVersion)}. ` +
558
+ 'The v1 → v3.1 migration is in-file; records from much older or newer builds must be regenerated.');
559
+ }
560
+ const role = stringField(obj, 'role');
561
+ const requestId = stringField(obj, 'requestId');
562
+ const sessionId = stringField(obj, 'sessionId');
563
+ const prompt = stringField(obj, 'prompt');
564
+ // Slice 2026-06-23-audit-4th #C2: preserve toolCallVersion on read.
565
+ // Pre-versioning records default to '2.0.0' (the pre-#C2 implicit
566
+ // shape; matches the version stamped by every current dispatcher).
567
+ const rawToolCall = obj.toolCall;
568
+ if (!isObject(rawToolCall) || typeof rawToolCall.name !== 'string') {
569
+ throw new Error('Dispatch record toolCall must be { name, args }');
570
+ }
571
+ const toolCall = {
572
+ name: rawToolCall.name,
573
+ args: (isObject(rawToolCall.args) ? rawToolCall.args : {}),
574
+ ...(typeof rawToolCall.toolCallVersion === 'string' ? { toolCallVersion: rawToolCall.toolCallVersion } : { toolCallVersion: '2.0.0' })
575
+ };
576
+ const createdAt = stringField(obj, 'createdAt');
577
+ const heartbeats = Array.isArray(obj.heartbeats)
578
+ ? obj.heartbeats.filter(isValidHeartbeat)
579
+ : [];
580
+ const lastBeatAt = typeof obj.lastBeatAt === 'string' ? obj.lastBeatAt : null;
581
+ // Slice 2026-07-29-dispatch-stall-governance / S1 (UQ-1) — `no-execution`
582
+ // keeps its natural "dispatched, never executed" reading; an unparseable
583
+ // status field now resolves to a *distinct* `unreadable` label so the
584
+ // caller can tell "corrupt record" apart from "record written, no first
585
+ // heartbeat" (which is the new `never-started` state).
586
+ const status = isDispatchStatus(obj.status)
587
+ ? obj.status
588
+ : 'unreadable';
589
+ const completedAt = typeof obj.completedAt === 'string' ? obj.completedAt : null;
590
+ const outcome = isOutcome(obj.outcome) ? obj.outcome : 'no-execution';
591
+ const artifactPaths = Array.isArray(obj.artifactPaths)
592
+ ? obj.artifactPaths.filter((p) => typeof p === 'string')
593
+ : [];
594
+ const disposed = obj.disposed === true;
595
+ const disposedAt = typeof obj.disposedAt === 'string' ? obj.disposedAt : null;
596
+ const batchId = typeof obj.batchId === 'string' && obj.batchId.length > 0
597
+ ? obj.batchId
598
+ : 'legacy-batch';
599
+ return {
600
+ version: '3.1',
601
+ createdAt,
602
+ completedAt,
603
+ outcome,
604
+ artifactPaths,
605
+ disposed,
606
+ disposedAt,
607
+ role,
608
+ requestId,
609
+ sessionId,
610
+ prompt,
611
+ toolCall,
612
+ batchId,
613
+ heartbeats,
614
+ lastBeatAt,
615
+ status,
616
+ // Slice 2026-07-29-dispatch-stall-governance / S5 (AC-5.1 / PB-2)
617
+ // — legacy records (pre-slice) had no `stage` field. The reader
618
+ // defaults to `null` so the watch surface can tell "no stage ever
619
+ // emitted" apart from "stage: ''" (which is itself a *valid*
620
+ // round-trip through the writer — an empty stage is rejected by
621
+ // `setStage`, but a record that round-tripped through a non-strict
622
+ // tool would land here).
623
+ stage: typeof obj.stage === 'string' && obj.stage.length > 0 ? obj.stage : null,
624
+ // Slice 2026-07-29-worktree-l2-extended Part 3.A: legacy records
625
+ // have no `leaseId`; default to `null` so the auto-release hook
626
+ // in `markCompleted` is a clean no-op for them.
627
+ leaseId: typeof obj.leaseId === 'string' && /^[a-f0-9]{16}$/.test(obj.leaseId)
628
+ ? obj.leaseId
629
+ : null,
630
+ // Slice 2026-07-29-worktree-l2-extended Part 7: v3 → v3.1
631
+ // migration. Legacy records have no `isolationStartedAt`; default
632
+ // to `null`. v3.1 readers can treat the field as opt-in.
633
+ isolationStartedAt: typeof obj.isolationStartedAt === 'string' && obj.isolationStartedAt.length > 0
634
+ ? obj.isolationStartedAt
635
+ : null
636
+ };
637
+ }
638
+ function isObject(v) {
639
+ return typeof v === 'object' && v !== null && !Array.isArray(v);
640
+ }
641
+ function stringField(obj, key) {
642
+ const v = obj[key];
643
+ if (typeof v !== 'string') {
644
+ throw new Error(`Dispatch record field '${key}' must be a string (got ${typeof v})`);
645
+ }
646
+ return v;
647
+ }
648
+ function isValidHeartbeat(v) {
649
+ if (!isObject(v))
650
+ return false;
651
+ return (typeof v.at === 'string' &&
652
+ isHeartbeatStatus(v.status) &&
653
+ typeof v.progress === 'number' &&
654
+ (v.note === null || typeof v.note === 'string'));
655
+ }
656
+ function isHeartbeatStatus(v) {
657
+ return (v === 'queued' || v === 'running' || v === 'finalizing' ||
658
+ v === 'done' || v === 'failed' || v === 'stale' ||
659
+ // Slice 2026-07-29-dispatch-stall-governance / S2 — accept the
660
+ // S1 terminal members so a sub-agent can report `cancelled`,
661
+ // `no-execution`, `never-started`, or `unreadable` through the
662
+ // heartbeat CLI.
663
+ v === 'cancelled' || v === 'no-execution' ||
664
+ v === 'never-started' || v === 'unreadable');
665
+ }
666
+ function isDispatchStatus(v) {
667
+ return (v === 'queued' || v === 'running' || v === 'finalizing' ||
668
+ v === 'done' || v === 'failed' || v === 'cancelled' ||
669
+ v === 'no-execution' || v === 'stale' ||
670
+ // Slice 2026-07-29-dispatch-stall-governance / S1 — accept the two
671
+ // new terminal members from the startup-timeout service.
672
+ v === 'never-started' || v === 'unreadable');
673
+ }
674
+ function isOutcome(v) {
675
+ return (v === 'success' || v === 'failed' || v === 'timeout' ||
676
+ v === 'cancelled' || v === 'no-execution');
677
+ }
678
+ export { isDispatchStatus, isOutcome };
679
+ function writeAtomic(path, record) {
680
+ const dir = dirname(path);
681
+ // Slice 2026-06-23-audit-3rd #11: skip mkdirSync when the dir already
682
+ // exists (every heartbeat + every dispatch read-modify-write).
683
+ if (!existsSync(dir)) {
684
+ mkdirSync(dir, { recursive: true });
685
+ }
686
+ const tmp = `${path}.tmp-${process.pid}-${Date.now()}`;
687
+ const safeTmp = resolve(dir, tmp.split(/[\\/]/).pop());
688
+ writeFileSync(safeTmp, JSON.stringify(record, null, 2) + '\n', 'utf8');
689
+ renameSync(safeTmp, path);
690
+ }