@kynetic-ai/spec 0.11.0 → 0.12.0

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 (501) hide show
  1. package/README.md +55 -455
  2. package/dist/agent-runtime/bootstrap.d.ts +31 -0
  3. package/dist/agent-runtime/bootstrap.d.ts.map +1 -0
  4. package/dist/agent-runtime/bootstrap.js +302 -0
  5. package/dist/agent-runtime/bootstrap.js.map +1 -0
  6. package/dist/agent-runtime/dispatch.d.ts +119 -10
  7. package/dist/agent-runtime/dispatch.d.ts.map +1 -1
  8. package/dist/agent-runtime/dispatch.js +1154 -219
  9. package/dist/agent-runtime/dispatch.js.map +1 -1
  10. package/dist/agent-runtime/invocation.d.ts +28 -1
  11. package/dist/agent-runtime/invocation.d.ts.map +1 -1
  12. package/dist/agent-runtime/invocation.js +171 -59
  13. package/dist/agent-runtime/invocation.js.map +1 -1
  14. package/dist/agent-runtime/prompts.d.ts +9 -0
  15. package/dist/agent-runtime/prompts.d.ts.map +1 -1
  16. package/dist/agent-runtime/prompts.js +42 -7
  17. package/dist/agent-runtime/prompts.js.map +1 -1
  18. package/dist/agent-runtime/session-event-accumulator.d.ts +83 -0
  19. package/dist/agent-runtime/session-event-accumulator.d.ts.map +1 -0
  20. package/dist/agent-runtime/session-event-accumulator.js +203 -0
  21. package/dist/agent-runtime/session-event-accumulator.js.map +1 -0
  22. package/dist/agent-runtime/session-event-types.d.ts +67 -0
  23. package/dist/agent-runtime/session-event-types.d.ts.map +1 -0
  24. package/dist/agent-runtime/session-event-types.js +13 -0
  25. package/dist/agent-runtime/session-event-types.js.map +1 -0
  26. package/dist/agent-runtime/workspace.d.ts +244 -0
  27. package/dist/agent-runtime/workspace.d.ts.map +1 -0
  28. package/dist/agent-runtime/workspace.js +2025 -0
  29. package/dist/agent-runtime/workspace.js.map +1 -0
  30. package/dist/agents/adapters.d.ts.map +1 -1
  31. package/dist/agents/adapters.js +58 -13
  32. package/dist/agents/adapters.js.map +1 -1
  33. package/dist/agents/spawner.d.ts +8 -0
  34. package/dist/agents/spawner.d.ts.map +1 -1
  35. package/dist/agents/spawner.js +25 -3
  36. package/dist/agents/spawner.js.map +1 -1
  37. package/dist/cli/batch-exec.js +1 -1
  38. package/dist/cli/batch-exec.js.map +1 -1
  39. package/dist/cli/command-annotations.d.ts +15 -3
  40. package/dist/cli/command-annotations.d.ts.map +1 -1
  41. package/dist/cli/command-annotations.js +23 -3
  42. package/dist/cli/command-annotations.js.map +1 -1
  43. package/dist/cli/commands/agent.d.ts +2 -0
  44. package/dist/cli/commands/agent.d.ts.map +1 -1
  45. package/dist/cli/commands/agent.js +144 -27
  46. package/dist/cli/commands/agent.js.map +1 -1
  47. package/dist/cli/commands/agents.d.ts.map +1 -1
  48. package/dist/cli/commands/agents.js +5 -5
  49. package/dist/cli/commands/agents.js.map +1 -1
  50. package/dist/cli/commands/derive.d.ts.map +1 -1
  51. package/dist/cli/commands/derive.js +118 -3
  52. package/dist/cli/commands/derive.js.map +1 -1
  53. package/dist/cli/commands/guard.d.ts.map +1 -1
  54. package/dist/cli/commands/guard.js +8 -6
  55. package/dist/cli/commands/guard.js.map +1 -1
  56. package/dist/cli/commands/index.d.ts +1 -0
  57. package/dist/cli/commands/index.d.ts.map +1 -1
  58. package/dist/cli/commands/index.js +1 -0
  59. package/dist/cli/commands/index.js.map +1 -1
  60. package/dist/cli/commands/init.d.ts.map +1 -1
  61. package/dist/cli/commands/init.js +20 -0
  62. package/dist/cli/commands/init.js.map +1 -1
  63. package/dist/cli/commands/item.d.ts.map +1 -1
  64. package/dist/cli/commands/item.js +205 -47
  65. package/dist/cli/commands/item.js.map +1 -1
  66. package/dist/cli/commands/log.d.ts.map +1 -1
  67. package/dist/cli/commands/log.js +24 -10
  68. package/dist/cli/commands/log.js.map +1 -1
  69. package/dist/cli/commands/plan-import.d.ts +3 -3
  70. package/dist/cli/commands/plan-import.d.ts.map +1 -1
  71. package/dist/cli/commands/plan-import.js +213 -528
  72. package/dist/cli/commands/plan-import.js.map +1 -1
  73. package/dist/cli/commands/plan.d.ts.map +1 -1
  74. package/dist/cli/commands/plan.js +533 -83
  75. package/dist/cli/commands/plan.js.map +1 -1
  76. package/dist/cli/commands/review.d.ts +14 -0
  77. package/dist/cli/commands/review.d.ts.map +1 -0
  78. package/dist/cli/commands/review.js +1142 -0
  79. package/dist/cli/commands/review.js.map +1 -0
  80. package/dist/cli/commands/serve.d.ts +1 -0
  81. package/dist/cli/commands/serve.d.ts.map +1 -1
  82. package/dist/cli/commands/serve.js +33 -10
  83. package/dist/cli/commands/serve.js.map +1 -1
  84. package/dist/cli/commands/session/checkpoint.d.ts +2 -4
  85. package/dist/cli/commands/session/checkpoint.d.ts.map +1 -1
  86. package/dist/cli/commands/session/checkpoint.js +6 -107
  87. package/dist/cli/commands/session/checkpoint.js.map +1 -1
  88. package/dist/cli/commands/session/commands.d.ts.map +1 -1
  89. package/dist/cli/commands/session/commands.js +33 -23
  90. package/dist/cli/commands/session/commands.js.map +1 -1
  91. package/dist/cli/commands/session/compact.js +4 -4
  92. package/dist/cli/commands/session/compact.js.map +1 -1
  93. package/dist/cli/commands/session/create.js +2 -2
  94. package/dist/cli/commands/session/create.js.map +1 -1
  95. package/dist/cli/commands/session/format.d.ts.map +1 -1
  96. package/dist/cli/commands/session/format.js +1 -6
  97. package/dist/cli/commands/session/format.js.map +1 -1
  98. package/dist/cli/commands/session/log.d.ts +32 -7
  99. package/dist/cli/commands/session/log.d.ts.map +1 -1
  100. package/dist/cli/commands/session/log.js +166 -60
  101. package/dist/cli/commands/session/log.js.map +1 -1
  102. package/dist/cli/commands/session/migrate.d.ts +9 -0
  103. package/dist/cli/commands/session/migrate.d.ts.map +1 -0
  104. package/dist/cli/commands/session/migrate.js +46 -0
  105. package/dist/cli/commands/session/migrate.js.map +1 -0
  106. package/dist/cli/commands/session/stale-close.d.ts.map +1 -1
  107. package/dist/cli/commands/session/stale-close.js +5 -8
  108. package/dist/cli/commands/session/stale-close.js.map +1 -1
  109. package/dist/cli/commands/session/types.d.ts +1 -1
  110. package/dist/cli/commands/session/types.d.ts.map +1 -1
  111. package/dist/cli/commands/setup.d.ts +2 -2
  112. package/dist/cli/commands/setup.d.ts.map +1 -1
  113. package/dist/cli/commands/setup.js +287 -257
  114. package/dist/cli/commands/setup.js.map +1 -1
  115. package/dist/cli/commands/shadow.d.ts.map +1 -1
  116. package/dist/cli/commands/shadow.js +147 -31
  117. package/dist/cli/commands/shadow.js.map +1 -1
  118. package/dist/cli/commands/skill-crud.d.ts +7 -0
  119. package/dist/cli/commands/skill-crud.d.ts.map +1 -1
  120. package/dist/cli/commands/skill-crud.js +41 -18
  121. package/dist/cli/commands/skill-crud.js.map +1 -1
  122. package/dist/cli/commands/skill-diff.d.ts.map +1 -1
  123. package/dist/cli/commands/skill-diff.js +29 -3
  124. package/dist/cli/commands/skill-diff.js.map +1 -1
  125. package/dist/cli/commands/skill-install.d.ts.map +1 -1
  126. package/dist/cli/commands/skill-install.js +5 -4
  127. package/dist/cli/commands/skill-install.js.map +1 -1
  128. package/dist/cli/commands/task.d.ts.map +1 -1
  129. package/dist/cli/commands/task.js +359 -49
  130. package/dist/cli/commands/task.js.map +1 -1
  131. package/dist/cli/commands/trait.d.ts.map +1 -1
  132. package/dist/cli/commands/trait.js +5 -27
  133. package/dist/cli/commands/trait.js.map +1 -1
  134. package/dist/cli/commands/validate.d.ts.map +1 -1
  135. package/dist/cli/commands/validate.js +113 -52
  136. package/dist/cli/commands/validate.js.map +1 -1
  137. package/dist/cli/index.d.ts.map +1 -1
  138. package/dist/cli/index.js +69 -2
  139. package/dist/cli/index.js.map +1 -1
  140. package/dist/cli/output.d.ts +26 -0
  141. package/dist/cli/output.d.ts.map +1 -1
  142. package/dist/cli/output.js +108 -1
  143. package/dist/cli/output.js.map +1 -1
  144. package/dist/cli/sync-mode.d.ts +44 -0
  145. package/dist/cli/sync-mode.d.ts.map +1 -0
  146. package/dist/cli/sync-mode.js +64 -0
  147. package/dist/cli/sync-mode.js.map +1 -0
  148. package/dist/daemon/middleware/project-context.ts +25 -7
  149. package/dist/daemon/project-context.ts +18 -0
  150. package/dist/daemon/routes/agent-dispatch.ts +99 -22
  151. package/dist/daemon/routes/aggregation.ts +184 -0
  152. package/dist/daemon/routes/inbox.ts +5 -0
  153. package/dist/daemon/routes/items.ts +145 -0
  154. package/dist/daemon/routes/meta.ts +1 -1
  155. package/dist/daemon/routes/projects.ts +28 -6
  156. package/dist/daemon/routes/ref-resolution.ts +119 -0
  157. package/dist/daemon/routes/refs.ts +42 -0
  158. package/dist/daemon/routes/session-related.ts +140 -0
  159. package/dist/daemon/routes/sessions.ts +420 -19
  160. package/dist/daemon/routes/tasks.ts +62 -5
  161. package/dist/daemon/routes/triage.ts +40 -1
  162. package/dist/daemon/server.ts +143 -49
  163. package/dist/daemon/session-sync.ts +11 -0
  164. package/dist/daemon/shadow-sync.ts +11 -0
  165. package/dist/daemon/watcher.ts +56 -5
  166. package/dist/daemon/websocket/project-resolution.ts +77 -0
  167. package/dist/export/json.d.ts.map +1 -1
  168. package/dist/export/json.js +104 -1
  169. package/dist/export/json.js.map +1 -1
  170. package/dist/export/types.d.ts +52 -1
  171. package/dist/export/types.d.ts.map +1 -1
  172. package/dist/index.d.ts +1 -0
  173. package/dist/index.d.ts.map +1 -1
  174. package/dist/index.js +1 -0
  175. package/dist/index.js.map +1 -1
  176. package/dist/parser/agent-detection.d.ts +1 -1
  177. package/dist/parser/agent-detection.d.ts.map +1 -1
  178. package/dist/parser/agent-detection.js +10 -0
  179. package/dist/parser/agent-detection.js.map +1 -1
  180. package/dist/parser/config.d.ts +397 -2
  181. package/dist/parser/config.d.ts.map +1 -1
  182. package/dist/parser/config.js +125 -3
  183. package/dist/parser/config.js.map +1 -1
  184. package/dist/parser/dispatch-workspaces.d.ts +18 -0
  185. package/dist/parser/dispatch-workspaces.d.ts.map +1 -0
  186. package/dist/parser/dispatch-workspaces.js +209 -0
  187. package/dist/parser/dispatch-workspaces.js.map +1 -0
  188. package/dist/parser/doctor.d.ts.map +1 -1
  189. package/dist/parser/doctor.js +27 -8
  190. package/dist/parser/doctor.js.map +1 -1
  191. package/dist/parser/file-lock.d.ts.map +1 -1
  192. package/dist/parser/file-lock.js +9 -2
  193. package/dist/parser/file-lock.js.map +1 -1
  194. package/dist/parser/index.d.ts +6 -0
  195. package/dist/parser/index.d.ts.map +1 -1
  196. package/dist/parser/index.js +6 -0
  197. package/dist/parser/index.js.map +1 -1
  198. package/dist/parser/plans.d.ts.map +1 -1
  199. package/dist/parser/plans.js +1 -0
  200. package/dist/parser/plans.js.map +1 -1
  201. package/dist/parser/refs.d.ts +8 -1
  202. package/dist/parser/refs.d.ts.map +1 -1
  203. package/dist/parser/refs.js +27 -1
  204. package/dist/parser/refs.js.map +1 -1
  205. package/dist/parser/review-operations.d.ts +72 -0
  206. package/dist/parser/review-operations.d.ts.map +1 -0
  207. package/dist/parser/review-operations.js +185 -0
  208. package/dist/parser/review-operations.js.map +1 -0
  209. package/dist/parser/review-task-integration.d.ts +78 -0
  210. package/dist/parser/review-task-integration.d.ts.map +1 -0
  211. package/dist/parser/review-task-integration.js +173 -0
  212. package/dist/parser/review-task-integration.js.map +1 -0
  213. package/dist/parser/review-threads.d.ts +101 -0
  214. package/dist/parser/review-threads.d.ts.map +1 -0
  215. package/dist/parser/review-threads.js +222 -0
  216. package/dist/parser/review-threads.js.map +1 -0
  217. package/dist/parser/review-validation.d.ts +69 -0
  218. package/dist/parser/review-validation.d.ts.map +1 -0
  219. package/dist/parser/review-validation.js +207 -0
  220. package/dist/parser/review-validation.js.map +1 -0
  221. package/dist/parser/reviews.d.ts +58 -0
  222. package/dist/parser/reviews.d.ts.map +1 -0
  223. package/dist/parser/reviews.js +230 -0
  224. package/dist/parser/reviews.js.map +1 -0
  225. package/dist/parser/session-branch.d.ts +91 -0
  226. package/dist/parser/session-branch.d.ts.map +1 -0
  227. package/dist/parser/session-branch.js +565 -0
  228. package/dist/parser/session-branch.js.map +1 -0
  229. package/dist/parser/session-sync-scheduler.d.ts +53 -0
  230. package/dist/parser/session-sync-scheduler.d.ts.map +1 -0
  231. package/dist/parser/session-sync-scheduler.js +100 -0
  232. package/dist/parser/session-sync-scheduler.js.map +1 -0
  233. package/dist/parser/setup-status.d.ts +7 -1
  234. package/dist/parser/setup-status.d.ts.map +1 -1
  235. package/dist/parser/setup-status.js +104 -39
  236. package/dist/parser/setup-status.js.map +1 -1
  237. package/dist/parser/shadow-sync-scheduler.d.ts +71 -0
  238. package/dist/parser/shadow-sync-scheduler.d.ts.map +1 -0
  239. package/dist/parser/shadow-sync-scheduler.js +139 -0
  240. package/dist/parser/shadow-sync-scheduler.js.map +1 -0
  241. package/dist/parser/shadow.d.ts +121 -14
  242. package/dist/parser/shadow.d.ts.map +1 -1
  243. package/dist/parser/shadow.js +752 -27
  244. package/dist/parser/shadow.js.map +1 -1
  245. package/dist/parser/skill-render.d.ts +24 -0
  246. package/dist/parser/skill-render.d.ts.map +1 -1
  247. package/dist/parser/skill-render.js +98 -26
  248. package/dist/parser/skill-render.js.map +1 -1
  249. package/dist/parser/validate.d.ts +43 -3
  250. package/dist/parser/validate.d.ts.map +1 -1
  251. package/dist/parser/validate.js +204 -30
  252. package/dist/parser/validate.js.map +1 -1
  253. package/dist/parser/yaml.d.ts +47 -11
  254. package/dist/parser/yaml.d.ts.map +1 -1
  255. package/dist/parser/yaml.js +329 -149
  256. package/dist/parser/yaml.js.map +1 -1
  257. package/dist/review/checks.d.ts +97 -0
  258. package/dist/review/checks.d.ts.map +1 -0
  259. package/dist/review/checks.js +175 -0
  260. package/dist/review/checks.js.map +1 -0
  261. package/dist/review/index.d.ts +3 -0
  262. package/dist/review/index.d.ts.map +1 -0
  263. package/dist/review/index.js +3 -0
  264. package/dist/review/index.js.map +1 -0
  265. package/dist/review/subject-bindings.d.ts +83 -0
  266. package/dist/review/subject-bindings.d.ts.map +1 -0
  267. package/dist/review/subject-bindings.js +175 -0
  268. package/dist/review/subject-bindings.js.map +1 -0
  269. package/dist/schema/common.d.ts +26 -0
  270. package/dist/schema/common.d.ts.map +1 -1
  271. package/dist/schema/common.js +13 -0
  272. package/dist/schema/common.js.map +1 -1
  273. package/dist/schema/dispatch-workspace.d.ts +2643 -0
  274. package/dist/schema/dispatch-workspace.d.ts.map +1 -0
  275. package/dist/schema/dispatch-workspace.js +187 -0
  276. package/dist/schema/dispatch-workspace.js.map +1 -0
  277. package/dist/schema/inbox.d.ts +8 -8
  278. package/dist/schema/index.d.ts +2 -0
  279. package/dist/schema/index.d.ts.map +1 -1
  280. package/dist/schema/index.js +2 -0
  281. package/dist/schema/index.js.map +1 -1
  282. package/dist/schema/meta.d.ts +648 -116
  283. package/dist/schema/meta.d.ts.map +1 -1
  284. package/dist/schema/meta.js +27 -0
  285. package/dist/schema/meta.js.map +1 -1
  286. package/dist/schema/plan.d.ts +30 -19
  287. package/dist/schema/plan.d.ts.map +1 -1
  288. package/dist/schema/plan.js +3 -1
  289. package/dist/schema/plan.js.map +1 -1
  290. package/dist/schema/review-records.d.ts +2676 -0
  291. package/dist/schema/review-records.d.ts.map +1 -0
  292. package/dist/schema/review-records.js +232 -0
  293. package/dist/schema/review-records.js.map +1 -0
  294. package/dist/schema/spec.d.ts +32 -14
  295. package/dist/schema/spec.d.ts.map +1 -1
  296. package/dist/schema/spec.js +5 -0
  297. package/dist/schema/spec.js.map +1 -1
  298. package/dist/schema/task.d.ts +187 -29
  299. package/dist/schema/task.d.ts.map +1 -1
  300. package/dist/schema/task.js +12 -2
  301. package/dist/schema/task.js.map +1 -1
  302. package/dist/schema/triage.d.ts +22 -22
  303. package/dist/sessions/cache.d.ts +119 -0
  304. package/dist/sessions/cache.d.ts.map +1 -0
  305. package/dist/sessions/cache.js +284 -0
  306. package/dist/sessions/cache.js.map +1 -0
  307. package/dist/sessions/index.d.ts +1 -0
  308. package/dist/sessions/index.d.ts.map +1 -1
  309. package/dist/sessions/index.js +2 -0
  310. package/dist/sessions/index.js.map +1 -1
  311. package/dist/sessions/legacy.d.ts +77 -0
  312. package/dist/sessions/legacy.d.ts.map +1 -0
  313. package/dist/sessions/legacy.js +146 -0
  314. package/dist/sessions/legacy.js.map +1 -0
  315. package/dist/sessions/store.d.ts +103 -73
  316. package/dist/sessions/store.d.ts.map +1 -1
  317. package/dist/sessions/store.js +335 -186
  318. package/dist/sessions/store.js.map +1 -1
  319. package/dist/sessions/types.d.ts +44 -16
  320. package/dist/sessions/types.d.ts.map +1 -1
  321. package/dist/sessions/types.js +11 -2
  322. package/dist/sessions/types.js.map +1 -1
  323. package/dist/strings/errors.d.ts +32 -0
  324. package/dist/strings/errors.d.ts.map +1 -1
  325. package/dist/strings/errors.js +17 -0
  326. package/dist/strings/errors.js.map +1 -1
  327. package/dist/strings/labels.d.ts +1 -0
  328. package/dist/strings/labels.d.ts.map +1 -1
  329. package/dist/strings/labels.js +1 -0
  330. package/dist/strings/labels.js.map +1 -1
  331. package/dist/utils/activity.d.ts +101 -0
  332. package/dist/utils/activity.d.ts.map +1 -0
  333. package/dist/utils/activity.js +408 -0
  334. package/dist/utils/activity.js.map +1 -0
  335. package/dist/utils/git.d.ts +31 -0
  336. package/dist/utils/git.d.ts.map +1 -1
  337. package/dist/utils/git.js +87 -0
  338. package/dist/utils/git.js.map +1 -1
  339. package/dist/utils/index.d.ts +2 -0
  340. package/dist/utils/index.d.ts.map +1 -1
  341. package/dist/utils/index.js +1 -0
  342. package/dist/utils/index.js.map +1 -1
  343. package/dist/web-ui/_app/immutable/assets/0.tmlwn-Ih.css +1 -0
  344. package/dist/web-ui/_app/immutable/assets/9.BwwJybWx.css +1 -0
  345. package/dist/web-ui/_app/immutable/chunks/2KqE8gtn.js +1 -0
  346. package/dist/web-ui/_app/immutable/chunks/70-t_QvE.js +1 -0
  347. package/dist/web-ui/_app/immutable/chunks/AiWQj974.js +1 -0
  348. package/dist/web-ui/_app/immutable/chunks/{CPPfDSei.js → B25nWFyA.js} +4 -4
  349. package/dist/web-ui/_app/immutable/chunks/{DBYE9jOd.js → B2bcA_Q_.js} +1 -1
  350. package/dist/web-ui/_app/immutable/chunks/B5e5HYyB.js +1 -0
  351. package/dist/web-ui/_app/immutable/chunks/B7-5z6eA.js +1 -0
  352. package/dist/web-ui/_app/immutable/chunks/B7bGmhK0.js +1 -0
  353. package/dist/web-ui/_app/immutable/chunks/{DzO4hlg9.js → B8tYZKAE.js} +1 -1
  354. package/dist/web-ui/_app/immutable/chunks/{B5LJFxqa.js → BFGAyJjD.js} +1 -1
  355. package/dist/web-ui/_app/immutable/chunks/BG0850zf.js +1 -0
  356. package/dist/web-ui/_app/immutable/chunks/{DAMmvwn4.js → BG8eSzAd.js} +1 -1
  357. package/dist/web-ui/_app/immutable/chunks/BIMxXS8I.js +1 -0
  358. package/dist/web-ui/_app/immutable/chunks/BSzL1fpU.js +1 -0
  359. package/dist/web-ui/_app/immutable/chunks/BYtjHfeq.js +1 -0
  360. package/dist/web-ui/_app/immutable/chunks/{DxCk-KHc.js → Bp5pFYXL.js} +1 -1
  361. package/dist/web-ui/_app/immutable/chunks/{B8a0xDxR.js → BsJFsuAT.js} +1 -1
  362. package/dist/web-ui/_app/immutable/chunks/BvpNHcD6.js +1 -0
  363. package/dist/web-ui/_app/immutable/chunks/BypqA25-.js +1 -0
  364. package/dist/web-ui/_app/immutable/chunks/{BVA9Exy-.js → C0w6WDm5.js} +1 -1
  365. package/dist/web-ui/_app/immutable/chunks/C5_PAZ0y.js +1 -0
  366. package/dist/web-ui/_app/immutable/chunks/CDRO15Iv.js +1 -0
  367. package/dist/web-ui/_app/immutable/chunks/CF1CoqD5.js +1 -0
  368. package/dist/web-ui/_app/immutable/chunks/CS2sa4_m.js +1 -0
  369. package/dist/web-ui/_app/immutable/chunks/{BJ0JX3ea.js → CWUQwB9H.js} +1 -1
  370. package/dist/web-ui/_app/immutable/chunks/CY5FDdSU.js +1 -0
  371. package/dist/web-ui/_app/immutable/chunks/C_7MTDoj.js +1 -0
  372. package/dist/web-ui/_app/immutable/chunks/{D3vxvonu.js → CaAJD3dl.js} +1 -1
  373. package/dist/web-ui/_app/immutable/chunks/{BP352uRn.js → ChB5iyEL.js} +1 -1
  374. package/dist/web-ui/_app/immutable/chunks/{pE6cYWlS.js → ChQD-6N8.js} +1 -1
  375. package/dist/web-ui/_app/immutable/chunks/{Eo4gF7ih.js → CqbsoCwA.js} +1 -1
  376. package/dist/web-ui/_app/immutable/chunks/DCeJW50p.js +1 -0
  377. package/dist/web-ui/_app/immutable/chunks/{Cncwi6fQ.js → DJtZNgcs.js} +1 -1
  378. package/dist/web-ui/_app/immutable/chunks/DKIeaprD.js +1 -0
  379. package/dist/web-ui/_app/immutable/chunks/DLd2uVIA.js +1 -0
  380. package/dist/web-ui/_app/immutable/chunks/{DjcCz-PU.js → DW_subyT.js} +2 -2
  381. package/dist/web-ui/_app/immutable/chunks/DbU6lVn0.js +1 -0
  382. package/dist/web-ui/_app/immutable/chunks/Dc7ZCC5m.js +1 -0
  383. package/dist/web-ui/_app/immutable/chunks/Dd5umPsk.js +2 -0
  384. package/dist/web-ui/_app/immutable/chunks/{BysXJlZb.js → Dg_zDpDS.js} +1 -1
  385. package/dist/web-ui/_app/immutable/chunks/Dgqu8Yuc.js +1 -0
  386. package/dist/web-ui/_app/immutable/chunks/DmxsPZTB.js +1 -0
  387. package/dist/web-ui/_app/immutable/chunks/DphTaFUB.js +1 -0
  388. package/dist/web-ui/_app/immutable/chunks/DqK4iHp0.js +1 -0
  389. package/dist/web-ui/_app/immutable/chunks/{D9QNBZM2.js → DqT6OH_u.js} +2 -2
  390. package/dist/web-ui/_app/immutable/chunks/Ds9I9wQb.js +1 -0
  391. package/dist/web-ui/_app/immutable/chunks/Du5ng3u4.js +1 -0
  392. package/dist/web-ui/_app/immutable/chunks/DxJw79Wi.js +1 -0
  393. package/dist/web-ui/_app/immutable/chunks/GFTX8GgV.js +1 -0
  394. package/dist/web-ui/_app/immutable/chunks/{C076q4JN.js → HNjs76Zz.js} +1 -1
  395. package/dist/web-ui/_app/immutable/chunks/HVMjDi4_.js +1 -0
  396. package/dist/web-ui/_app/immutable/chunks/{BkOJ8DkV.js → P0A_fJvS.js} +1 -1
  397. package/dist/web-ui/_app/immutable/chunks/T3vGWjIL.js +1 -0
  398. package/dist/web-ui/_app/immutable/chunks/VTmrX9Qu.js +1 -0
  399. package/dist/web-ui/_app/immutable/chunks/{k_Qegko0.js → Xvwhx_F1.js} +1 -1
  400. package/dist/web-ui/_app/immutable/chunks/Yyz1XMQA.js +1 -0
  401. package/dist/web-ui/_app/immutable/chunks/{62JVKtnb.js → dh5HeqUr.js} +1 -1
  402. package/dist/web-ui/_app/immutable/chunks/fZMteyca.js +62 -0
  403. package/dist/web-ui/_app/immutable/chunks/{D82RulSH.js → gPrj-hqC.js} +1 -1
  404. package/dist/web-ui/_app/immutable/chunks/htcWMiYN.js +1 -0
  405. package/dist/web-ui/_app/immutable/chunks/{CwELQvbx.js → oTsvd9y4.js} +1 -1
  406. package/dist/web-ui/_app/immutable/chunks/qJfLUwU4.js +1 -0
  407. package/dist/web-ui/_app/immutable/chunks/xCtiO_JE.js +1 -0
  408. package/dist/web-ui/_app/immutable/chunks/{DvA-KON-.js → y4GeEH6k.js} +1 -1
  409. package/dist/web-ui/_app/immutable/entry/app.C4h_eOn6.js +2 -0
  410. package/dist/web-ui/_app/immutable/entry/start.CQFTf9ep.js +1 -0
  411. package/dist/web-ui/_app/immutable/nodes/0.Dh1xO970.js +1 -0
  412. package/dist/web-ui/_app/immutable/nodes/1.l75D3Opx.js +1 -0
  413. package/dist/web-ui/_app/immutable/nodes/10.DBidBPc-.js +1 -0
  414. package/dist/web-ui/_app/immutable/nodes/11.Ab0gUKWe.js +1 -0
  415. package/dist/web-ui/_app/immutable/nodes/12.CMsnoxfs.js +1 -0
  416. package/dist/web-ui/_app/immutable/nodes/13.D8YKuknB.js +1 -0
  417. package/dist/web-ui/_app/immutable/nodes/14.DZ0aan7y.js +1 -0
  418. package/dist/web-ui/_app/immutable/nodes/15.CUIKreDL.js +2 -0
  419. package/dist/web-ui/_app/immutable/nodes/16.BWc8--BO.js +1 -0
  420. package/dist/web-ui/_app/immutable/nodes/2.CDUonbuh.js +1 -0
  421. package/dist/web-ui/_app/immutable/nodes/3.Ctg3M00i.js +1 -0
  422. package/dist/web-ui/_app/immutable/nodes/4.Ci-JDwbA.js +2 -0
  423. package/dist/web-ui/_app/immutable/nodes/5.CTyEDAq0.js +1 -0
  424. package/dist/web-ui/_app/immutable/nodes/6.BTZZqsAb.js +1 -0
  425. package/dist/web-ui/_app/immutable/nodes/7.BI52g_Jo.js +137 -0
  426. package/dist/web-ui/_app/immutable/nodes/8.3hZPaB9x.js +1 -0
  427. package/dist/web-ui/_app/immutable/nodes/9.DS49kvwl.js +29 -0
  428. package/dist/web-ui/_app/version.json +1 -1
  429. package/dist/web-ui/favicon-192.png +0 -0
  430. package/dist/web-ui/favicon-32.png +0 -0
  431. package/dist/web-ui/favicon.ico +0 -0
  432. package/dist/web-ui/index.html +14 -14
  433. package/package.json +12 -6
  434. package/plugin/.claude-plugin/marketplace.json +1 -1
  435. package/plugin/.claude-plugin/plugin.json +1 -1
  436. package/plugin/plugins/kspec/skills/merge/SKILL.md +127 -0
  437. package/plugin/plugins/kspec/skills/plan/SKILL.md +55 -26
  438. package/plugin/plugins/kspec/skills/review/SKILL.md +350 -133
  439. package/plugin/plugins/kspec/skills/task-work/SKILL.md +96 -106
  440. package/templates/agents-sections/04-pr-workflow.md +15 -12
  441. package/templates/agents-sections/06-ralph-loop.md +15 -10
  442. package/templates/skills/manifest.yaml +25 -7
  443. package/templates/skills/merge/SKILL.md +120 -0
  444. package/templates/skills/plan/SKILL.md +55 -26
  445. package/templates/skills/review/SKILL.md +346 -130
  446. package/templates/skills/task-work/SKILL.md +93 -103
  447. package/dist/web-ui/_app/immutable/assets/0.BJaYkGW2.css +0 -1
  448. package/dist/web-ui/_app/immutable/assets/9.SzGLxi4x.css +0 -1
  449. package/dist/web-ui/_app/immutable/chunks/-lc0BifF.js +0 -1
  450. package/dist/web-ui/_app/immutable/chunks/8RBjHMN1.js +0 -1
  451. package/dist/web-ui/_app/immutable/chunks/B5wTVqxm.js +0 -1
  452. package/dist/web-ui/_app/immutable/chunks/B6VSmczZ.js +0 -1
  453. package/dist/web-ui/_app/immutable/chunks/BEOQc37C.js +0 -1
  454. package/dist/web-ui/_app/immutable/chunks/BHtYorjv.js +0 -1
  455. package/dist/web-ui/_app/immutable/chunks/BMuCqDX8.js +0 -1
  456. package/dist/web-ui/_app/immutable/chunks/BUZujXJ2.js +0 -1
  457. package/dist/web-ui/_app/immutable/chunks/BWET-efb.js +0 -1
  458. package/dist/web-ui/_app/immutable/chunks/BXkNecpt.js +0 -1
  459. package/dist/web-ui/_app/immutable/chunks/BYzrIfX8.js +0 -1
  460. package/dist/web-ui/_app/immutable/chunks/BpuwufMc.js +0 -1
  461. package/dist/web-ui/_app/immutable/chunks/BwMO4RrG.js +0 -1
  462. package/dist/web-ui/_app/immutable/chunks/C33JaVbg.js +0 -1
  463. package/dist/web-ui/_app/immutable/chunks/CGtqifKp.js +0 -1
  464. package/dist/web-ui/_app/immutable/chunks/CHDZZ7OG.js +0 -1
  465. package/dist/web-ui/_app/immutable/chunks/CUir3f4J.js +0 -60
  466. package/dist/web-ui/_app/immutable/chunks/CrCIbn0C.js +0 -1
  467. package/dist/web-ui/_app/immutable/chunks/D6TVmR9T.js +0 -1
  468. package/dist/web-ui/_app/immutable/chunks/D7LTux4W.js +0 -1
  469. package/dist/web-ui/_app/immutable/chunks/DAh4Wfku.js +0 -1
  470. package/dist/web-ui/_app/immutable/chunks/DAx07bEQ.js +0 -1
  471. package/dist/web-ui/_app/immutable/chunks/DOno4cA2.js +0 -1
  472. package/dist/web-ui/_app/immutable/chunks/DQA8NZIH.js +0 -2
  473. package/dist/web-ui/_app/immutable/chunks/DRfPm2bo.js +0 -1
  474. package/dist/web-ui/_app/immutable/chunks/DhQhksaB.js +0 -1
  475. package/dist/web-ui/_app/immutable/chunks/DjG7s6hm.js +0 -1
  476. package/dist/web-ui/_app/immutable/chunks/DkltRNvh.js +0 -1
  477. package/dist/web-ui/_app/immutable/chunks/DlaTnPKL.js +0 -1
  478. package/dist/web-ui/_app/immutable/chunks/ExCq5swK.js +0 -1
  479. package/dist/web-ui/_app/immutable/chunks/T3zZGv51.js +0 -1
  480. package/dist/web-ui/_app/immutable/chunks/XZumBYeP.js +0 -1
  481. package/dist/web-ui/_app/immutable/chunks/_ySfNjkF.js +0 -1
  482. package/dist/web-ui/_app/immutable/chunks/iEtR5cV6.js +0 -1
  483. package/dist/web-ui/_app/immutable/entry/app.Cgu6uKeS.js +0 -2
  484. package/dist/web-ui/_app/immutable/entry/start.9XifnLoB.js +0 -1
  485. package/dist/web-ui/_app/immutable/nodes/0.DISwcKSK.js +0 -1
  486. package/dist/web-ui/_app/immutable/nodes/1.Cx2Ufqp1.js +0 -1
  487. package/dist/web-ui/_app/immutable/nodes/10.C3z8ijXL.js +0 -1
  488. package/dist/web-ui/_app/immutable/nodes/11.DZdIjZmM.js +0 -1
  489. package/dist/web-ui/_app/immutable/nodes/12.FsIGfAOa.js +0 -1
  490. package/dist/web-ui/_app/immutable/nodes/13.DZoFwagf.js +0 -1
  491. package/dist/web-ui/_app/immutable/nodes/14.DaIzDKbQ.js +0 -1
  492. package/dist/web-ui/_app/immutable/nodes/15.BYyt4XWF.js +0 -2
  493. package/dist/web-ui/_app/immutable/nodes/16.CQkSqpOe.js +0 -1
  494. package/dist/web-ui/_app/immutable/nodes/2.Bkf_j2UJ.js +0 -1
  495. package/dist/web-ui/_app/immutable/nodes/3.kaMCurJG.js +0 -1
  496. package/dist/web-ui/_app/immutable/nodes/4.BSsFPTHG.js +0 -2
  497. package/dist/web-ui/_app/immutable/nodes/5.CpPlcCEZ.js +0 -1
  498. package/dist/web-ui/_app/immutable/nodes/6.BN4FqQmY.js +0 -1
  499. package/dist/web-ui/_app/immutable/nodes/7.9kBYIZik.js +0 -1
  500. package/dist/web-ui/_app/immutable/nodes/8.BuijtZ6B.js +0 -1
  501. package/dist/web-ui/_app/immutable/nodes/9.C-Weba8R.js +0 -1
@@ -0,0 +1,302 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { createHash } from "node:crypto";
3
+ import { loadProjectConfig } from "../parser/config.js";
4
+ import { normalizeDispatchBootstrapState, persistDispatchWorkspaceMetadata, } from "./workspace.js";
5
+ export class DispatchBootstrapError extends Error {
6
+ suggestion;
7
+ constructor(message, suggestion) {
8
+ super(message);
9
+ this.name = "DispatchBootstrapError";
10
+ this.suggestion = suggestion;
11
+ }
12
+ }
13
+ function runShell(cwd, command, env) {
14
+ const result = spawnSync("bash", ["-lc", command], {
15
+ cwd,
16
+ env: {
17
+ ...process.env,
18
+ ...env,
19
+ },
20
+ encoding: "utf-8",
21
+ stdio: "pipe",
22
+ });
23
+ return {
24
+ status: result.status,
25
+ stdout: result.stdout ?? "",
26
+ stderr: result.stderr ?? "",
27
+ };
28
+ }
29
+ function trackedStatus(cwd) {
30
+ const result = spawnSync("git", ["status", "--porcelain", "--untracked-files=no"], {
31
+ cwd,
32
+ encoding: "utf-8",
33
+ stdio: "pipe",
34
+ });
35
+ return result.status === 0 ? (result.stdout ?? "").trim() : "";
36
+ }
37
+ function summarizeOutput(stdout, stderr) {
38
+ const combined = [stdout.trim(), stderr.trim()].filter(Boolean).join("\n");
39
+ if (!combined)
40
+ return null;
41
+ return combined.slice(0, 4000);
42
+ }
43
+ function hashConfig(steps) {
44
+ return createHash("sha256")
45
+ .update(JSON.stringify(steps.map((step) => ({
46
+ source: step.source,
47
+ name: step.name,
48
+ run: step.run,
49
+ roles: step.roles ?? null,
50
+ idempotent: step.idempotent,
51
+ allowTrackedChanges: step.allowTrackedChanges,
52
+ reviewerRerunAllowed: step.reviewerRerunAllowed,
53
+ }))))
54
+ .digest("hex");
55
+ }
56
+ function resolveBootstrapSteps(agent, dispatchSteps) {
57
+ const projectSteps = dispatchSteps.map((step, index) => ({
58
+ source: "dispatch",
59
+ name: step.name ?? `dispatch-step-${index + 1}`,
60
+ run: step.run,
61
+ ...(step.roles ? { roles: step.roles } : {}),
62
+ idempotent: step.idempotent,
63
+ allowTrackedChanges: step.allow_tracked_changes,
64
+ reviewerRerunAllowed: step.reviewer_rerun_allowed,
65
+ }));
66
+ const agentSteps = (agent.bootstrap?.steps ?? []).map((step, index) => ({
67
+ source: "agent",
68
+ name: step.name ?? `agent-step-${index + 1}`,
69
+ run: step.run,
70
+ ...(step.roles ? { roles: step.roles } : {}),
71
+ idempotent: step.idempotent ?? false,
72
+ allowTrackedChanges: step.allow_tracked_changes ?? false,
73
+ reviewerRerunAllowed: step.reviewer_rerun_allowed ?? false,
74
+ }));
75
+ return [...projectSteps, ...agentSteps];
76
+ }
77
+ function stepAppliesToRole(step, role) {
78
+ return !step.roles || step.roles.includes(role);
79
+ }
80
+ function computeInvalidationReasons(state, canonicalBranchHead, configHash) {
81
+ const reasons = [];
82
+ if (state.status === "failed") {
83
+ reasons.push("prior-bootstrap-failed");
84
+ }
85
+ if (state.configHash && state.configHash !== configHash) {
86
+ reasons.push("bootstrap-config-changed");
87
+ }
88
+ if (state.canonicalBranchHead && state.canonicalBranchHead !== canonicalBranchHead) {
89
+ reasons.push("canonical-branch-head-changed");
90
+ }
91
+ return reasons;
92
+ }
93
+ async function persistMetadata(projectDir, metadataPath, metadata) {
94
+ await persistDispatchWorkspaceMetadata(projectDir, metadata);
95
+ }
96
+ function describeTrackedChangeFailure(step) {
97
+ return [
98
+ `Bootstrap step "${step.name}" modified tracked files but allow_tracked_changes is false.`,
99
+ "Mark the step with allow_tracked_changes: true only if tracked source mutations are intentional.",
100
+ ].join(" ");
101
+ }
102
+ function updateBootstrapState(metadata, role, state) {
103
+ metadata.bootstrap = {
104
+ ...state,
105
+ lastRole: role,
106
+ roleStates: {
107
+ ...metadata.bootstrap.roleStates,
108
+ [role]: state,
109
+ },
110
+ };
111
+ metadata.bootstrapState = metadata.bootstrap;
112
+ }
113
+ export async function ensureWorkspaceBootstrap(options) {
114
+ const { projectDir, workspaceDir, metadataPath, role, agent, env, } = options;
115
+ const { config } = await loadProjectConfig(projectDir, projectDir);
116
+ const steps = resolveBootstrapSteps(agent, config.dispatch.bootstrap.steps);
117
+ const roleSteps = steps.filter((step) => stepAppliesToRole(step, role));
118
+ const configHash = hashConfig(steps);
119
+ const metadata = structuredClone(options.metadata);
120
+ metadata.bootstrap = normalizeDispatchBootstrapState(metadata.bootstrap);
121
+ metadata.bootstrapState = metadata.bootstrap;
122
+ const workerState = metadata.bootstrap.roleStates.worker;
123
+ const reviewerState = metadata.bootstrap.roleStates.reviewer;
124
+ const workerInvalidationReasons = computeInvalidationReasons(workerState, metadata.canonicalBranchHead, configHash);
125
+ const reviewerInvalidationReasons = computeInvalidationReasons(reviewerState, metadata.canonicalBranchHead, configHash);
126
+ const workerBootstrapSucceeded = workerState.status === "succeeded" &&
127
+ workerInvalidationReasons.length === 0;
128
+ const reviewerBootstrapSucceeded = reviewerState.status === "succeeded" &&
129
+ reviewerInvalidationReasons.length === 0;
130
+ const canReuseWorkerStateForReviewer = role === "reviewer" &&
131
+ roleSteps.length === 0 &&
132
+ workerBootstrapSucceeded;
133
+ const invalidationReasons = role === "reviewer" && !reviewerBootstrapSucceeded && canReuseWorkerStateForReviewer
134
+ ? workerInvalidationReasons
135
+ : role === "reviewer"
136
+ ? reviewerInvalidationReasons
137
+ : workerInvalidationReasons;
138
+ const bootstrapSucceeded = role === "worker" ? workerBootstrapSucceeded : reviewerBootstrapSucceeded;
139
+ if (bootstrapSucceeded) {
140
+ const state = role === "worker"
141
+ ? {
142
+ ...workerState,
143
+ invalidationReasons: [],
144
+ failureMessage: null,
145
+ }
146
+ : {
147
+ ...reviewerState,
148
+ invalidationReasons: [],
149
+ failureMessage: null,
150
+ };
151
+ updateBootstrapState(metadata, role, state);
152
+ metadata.healthStatus = "healthy";
153
+ metadata.healthReason = null;
154
+ metadata.updatedAt = new Date().toISOString();
155
+ await persistMetadata(projectDir, metadataPath, metadata);
156
+ return { metadata, reused: true, ranSteps: false };
157
+ }
158
+ if (canReuseWorkerStateForReviewer) {
159
+ const reusedReviewerState = {
160
+ status: "succeeded",
161
+ configHash,
162
+ canonicalBranchHead: metadata.canonicalBranchHead,
163
+ lastRunAt: new Date().toISOString(),
164
+ invalidationReasons: [],
165
+ steps: [],
166
+ failureMessage: null,
167
+ };
168
+ updateBootstrapState(metadata, role, reusedReviewerState);
169
+ metadata.healthStatus = "healthy";
170
+ metadata.healthReason = null;
171
+ metadata.updatedAt = new Date().toISOString();
172
+ await persistMetadata(projectDir, metadataPath, metadata);
173
+ return { metadata, reused: true, ranSteps: false };
174
+ }
175
+ const rerunnableSteps = role === "reviewer"
176
+ ? roleSteps.filter((step) => step.idempotent || step.reviewerRerunAllowed)
177
+ : roleSteps;
178
+ if (role === "reviewer" && !bootstrapSucceeded && rerunnableSteps.length !== roleSteps.length) {
179
+ const blockedSteps = roleSteps
180
+ .filter((step) => !rerunnableSteps.includes(step))
181
+ .map((step) => step.name)
182
+ .join(", ");
183
+ updateBootstrapState(metadata, role, {
184
+ status: "failed",
185
+ configHash,
186
+ canonicalBranchHead: metadata.canonicalBranchHead,
187
+ lastRunAt: new Date().toISOString(),
188
+ invalidationReasons,
189
+ steps: [],
190
+ failureMessage: `Reviewer bootstrap cannot safely rerun non-idempotent steps: ${blockedSteps}`,
191
+ });
192
+ metadata.healthStatus = "unhealthy";
193
+ metadata.healthReason = metadata.bootstrap.failureMessage ?? null;
194
+ metadata.updatedAt = new Date().toISOString();
195
+ await persistMetadata(projectDir, metadataPath, metadata);
196
+ const failureMessage = metadata.bootstrap.failureMessage ?? "Reviewer bootstrap rerun was rejected.";
197
+ throw new DispatchBootstrapError(failureMessage, "Run or repair bootstrap from the worker workspace, or mark the affected reviewer-safe steps as idempotent/reviewer_rerun_allowed.");
198
+ }
199
+ const executedSteps = [];
200
+ for (const step of rerunnableSteps) {
201
+ const beforeStatus = trackedStatus(workspaceDir);
202
+ const result = runShell(workspaceDir, step.run, {
203
+ ...env,
204
+ KSPEC_DISPATCH_BOOTSTRAP_ROLE: role,
205
+ KSPEC_DISPATCH_BOOTSTRAP_SOURCE: step.source,
206
+ KSPEC_DISPATCH_BOOTSTRAP_STEP: step.name,
207
+ });
208
+ const afterStatus = trackedStatus(workspaceDir);
209
+ const output = summarizeOutput(result.stdout, result.stderr);
210
+ if (result.status !== 0) {
211
+ const failureMessage = `Bootstrap step "${step.name}" failed with exit code ${result.status ?? "unknown"}.`;
212
+ updateBootstrapState(metadata, role, {
213
+ status: "failed",
214
+ configHash,
215
+ canonicalBranchHead: metadata.canonicalBranchHead,
216
+ lastRunAt: new Date().toISOString(),
217
+ invalidationReasons,
218
+ steps: [
219
+ ...executedSteps,
220
+ {
221
+ source: step.source,
222
+ name: step.name,
223
+ run: step.run,
224
+ idempotent: step.idempotent,
225
+ allowTrackedChanges: step.allowTrackedChanges,
226
+ reviewerRerunAllowed: step.reviewerRerunAllowed,
227
+ status: "failed",
228
+ role,
229
+ output,
230
+ },
231
+ ],
232
+ failureMessage: `${failureMessage}${output ? ` Output: ${output}` : ""}`,
233
+ });
234
+ metadata.healthStatus = "unhealthy";
235
+ metadata.healthReason = failureMessage;
236
+ metadata.updatedAt = new Date().toISOString();
237
+ await persistMetadata(projectDir, metadataPath, metadata);
238
+ const failureMessageWithOutput = metadata.bootstrap.failureMessage ?? failureMessage;
239
+ throw new DispatchBootstrapError(failureMessageWithOutput, "Inspect the failing bootstrap command, dependency prerequisites, and workspace health before retrying dispatch.");
240
+ }
241
+ if (!step.allowTrackedChanges && beforeStatus !== afterStatus) {
242
+ const failureMessage = describeTrackedChangeFailure(step);
243
+ updateBootstrapState(metadata, role, {
244
+ status: "failed",
245
+ configHash,
246
+ canonicalBranchHead: metadata.canonicalBranchHead,
247
+ lastRunAt: new Date().toISOString(),
248
+ invalidationReasons,
249
+ steps: [
250
+ ...executedSteps,
251
+ {
252
+ source: step.source,
253
+ name: step.name,
254
+ run: step.run,
255
+ idempotent: step.idempotent,
256
+ allowTrackedChanges: step.allowTrackedChanges,
257
+ reviewerRerunAllowed: step.reviewerRerunAllowed,
258
+ status: "failed",
259
+ role,
260
+ output: summarizeOutput(output ?? "", `Tracked status before:\n${beforeStatus}\nTracked status after:\n${afterStatus}`),
261
+ },
262
+ ],
263
+ failureMessage,
264
+ });
265
+ metadata.healthStatus = "unhealthy";
266
+ metadata.healthReason = failureMessage;
267
+ metadata.updatedAt = new Date().toISOString();
268
+ await persistMetadata(projectDir, metadataPath, metadata);
269
+ throw new DispatchBootstrapError(failureMessage, "Update bootstrap configuration to opt in to tracked changes explicitly, or make the bootstrap step avoid tracked source mutations.");
270
+ }
271
+ executedSteps.push({
272
+ source: step.source,
273
+ name: step.name,
274
+ run: step.run,
275
+ idempotent: step.idempotent,
276
+ allowTrackedChanges: step.allowTrackedChanges,
277
+ reviewerRerunAllowed: step.reviewerRerunAllowed,
278
+ status: "succeeded",
279
+ role,
280
+ output,
281
+ });
282
+ }
283
+ updateBootstrapState(metadata, role, {
284
+ status: "succeeded",
285
+ configHash,
286
+ canonicalBranchHead: metadata.canonicalBranchHead,
287
+ lastRunAt: new Date().toISOString(),
288
+ invalidationReasons,
289
+ steps: executedSteps,
290
+ failureMessage: null,
291
+ });
292
+ metadata.healthStatus = "healthy";
293
+ metadata.healthReason = null;
294
+ metadata.updatedAt = new Date().toISOString();
295
+ await persistMetadata(projectDir, metadataPath, metadata);
296
+ return {
297
+ metadata,
298
+ reused: false,
299
+ ranSteps: rerunnableSteps.length > 0,
300
+ };
301
+ }
302
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/agent-runtime/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAOxD,OAAO,EACL,+BAA+B,EAC/B,gCAAgC,GACjC,MAAM,gBAAgB,CAAC;AA4BxB,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,UAAU,CAAS;IAEnB,YAAY,OAAe,EAAE,UAAkB;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AAED,SAAS,QAAQ,CACf,GAAW,EACX,OAAe,EACf,GAA2B;IAE3B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;QACjD,GAAG;QACH,GAAG,EAAE;YACH,GAAG,OAAO,CAAC,GAAG;YACd,GAAG,GAAG;SACP;QACD,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,MAAM;KACd,CAAC,CAAC;IACH,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,MAAM,GAAG,SAAS,CACtB,KAAK,EACL,CAAC,QAAQ,EAAE,aAAa,EAAE,sBAAsB,CAAC,EACjD;QACE,GAAG;QACH,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,MAAM;KACd,CACF,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACjE,CAAC;AAED,SAAS,eAAe,CAAC,MAAc,EAAE,MAAc;IACrD,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,UAAU,CAAC,KAA8B;IAChD,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CACL,IAAI,CAAC,SAAS,CACZ,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;QACzB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;KAChD,CAAC,CAAC,CACJ,CACF;SACA,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAY,EACZ,aAOE;IAEF,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvD,MAAM,EAAE,UAAmB;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,iBAAiB,KAAK,GAAG,CAAC,EAAE;QAC/C,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,mBAAmB,EAAE,IAAI,CAAC,qBAAqB;QAC/C,oBAAoB,EAAE,IAAI,CAAC,sBAAsB;KAClD,CAAC,CAAC,CAAC;IACJ,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACtE,MAAM,EAAE,OAAgB;QACxB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,cAAc,KAAK,GAAG,CAAC,EAAE;QAC5C,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;QACpC,mBAAmB,EAAE,IAAI,CAAC,qBAAqB,IAAI,KAAK;QACxD,oBAAoB,EAAE,IAAI,CAAC,sBAAsB,IAAI,KAAK;KAC3D,CAAC,CAAC,CAAC;IACJ,OAAO,CAAC,GAAG,YAAY,EAAE,GAAG,UAAU,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,iBAAiB,CACxB,IAA2B,EAC3B,IAA2B;IAE3B,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,0BAA0B,CACjC,KAA0C,EAC1C,mBAA2B,EAC3B,UAAkB;IAElB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,mBAAmB,KAAK,mBAAmB,EAAE,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,UAAkB,EAClB,YAAoB,EACpB,QAAmC;IAEnC,MAAM,gCAAgC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,4BAA4B,CAAC,IAA2B;IAC/D,OAAO;QACL,mBAAmB,IAAI,CAAC,IAAI,8DAA8D;QAC1F,kGAAkG;KACnG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAmC,EACnC,IAA2B,EAC3B,KAA0C;IAE1C,QAAQ,CAAC,SAAS,GAAG;QACnB,GAAG,KAAK;QACR,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE;YACV,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU;YAChC,CAAC,IAAI,CAAC,EAAE,KAAK;SACd;KACF,CAAC;IACF,QAAQ,CAAC,cAAc,GAAG,QAAQ,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAwC;IAExC,MAAM,EACJ,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,IAAI,EACJ,KAAK,EACL,GAAG,GACJ,GAAG,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,QAAQ,GAA8B,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9E,QAAQ,CAAC,SAAS,GAAG,+BAA+B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACzE,QAAQ,CAAC,cAAc,GAAG,QAAQ,CAAC,SAAS,CAAC;IAC7C,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;IACzD,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;IAC7D,MAAM,yBAAyB,GAAG,0BAA0B,CAC1D,WAAW,EACX,QAAQ,CAAC,mBAAmB,EAC5B,UAAU,CACX,CAAC;IACF,MAAM,2BAA2B,GAAG,0BAA0B,CAC5D,aAAa,EACb,QAAQ,CAAC,mBAAmB,EAC5B,UAAU,CACX,CAAC;IACF,MAAM,wBAAwB,GAC5B,WAAW,CAAC,MAAM,KAAK,WAAW;QAClC,yBAAyB,CAAC,MAAM,KAAK,CAAC,CAAC;IACzC,MAAM,0BAA0B,GAC9B,aAAa,CAAC,MAAM,KAAK,WAAW;QACpC,2BAA2B,CAAC,MAAM,KAAK,CAAC,CAAC;IAC3C,MAAM,8BAA8B,GAClC,IAAI,KAAK,UAAU;QACnB,SAAS,CAAC,MAAM,KAAK,CAAC;QACtB,wBAAwB,CAAC;IAC3B,MAAM,mBAAmB,GACvB,IAAI,KAAK,UAAU,IAAI,CAAC,0BAA0B,IAAI,8BAA8B;QAClF,CAAC,CAAC,yBAAyB;QAC3B,CAAC,CAAC,IAAI,KAAK,UAAU;YACnB,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,yBAAyB,CAAC;IAClC,MAAM,kBAAkB,GACtB,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,0BAA0B,CAAC;IAE5E,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,KAAK,GACT,IAAI,KAAK,QAAQ;YACf,CAAC,CAAC;gBACE,GAAG,WAAW;gBACd,mBAAmB,EAAE,EAAE;gBACvB,cAAc,EAAE,IAAI;aACrB;YACH,CAAC,CAAC;gBACE,GAAG,aAAa;gBAChB,mBAAmB,EAAE,EAAE;gBACvB,cAAc,EAAE,IAAI;aACrB,CAAC;QACR,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5C,QAAQ,CAAC,YAAY,GAAG,SAAS,CAAC;QAClC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC;QAC7B,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,8BAA8B,EAAE,CAAC;QACnC,MAAM,mBAAmB,GAAwC;YAC/D,MAAM,EAAE,WAAW;YACnB,UAAU;YACV,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;YACjD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,mBAAmB,EAAE,EAAE;YACvB,KAAK,EAAE,EAAE;YACT,cAAc,EAAE,IAAI;SACrB,CAAC;QACF,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAC1D,QAAQ,CAAC,YAAY,GAAG,SAAS,CAAC;QAClC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC;QAC7B,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,MAAM,eAAe,GACnB,IAAI,KAAK,UAAU;QACjB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,oBAAoB,CAAC;QAC1E,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,kBAAkB,IAAI,eAAe,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;QAC9F,MAAM,YAAY,GAAG,SAAS;aAC3B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACjD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;aACxB,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE;YACnC,MAAM,EAAE,QAAQ;YAChB,UAAU;YACV,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;YACjD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,mBAAmB;YACnB,KAAK,EAAE,EAAE;YACT,cAAc,EAAE,gEAAgE,YAAY,EAAE;SAC/F,CAAC,CAAC;QACH,QAAQ,CAAC,YAAY,GAAG,WAAW,CAAC;QACpC,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,cAAc,IAAI,IAAI,CAAC;QAClE,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,QAAQ,CAAC,SAAS,CAAC,cAAc,IAAI,wCAAwC,CAAC;QACrG,MAAM,IAAI,sBAAsB,CAC9B,cAAc,EACd,mIAAmI,CACpI,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAoD,EAAE,CAAC;IAC1E,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;YAC9C,GAAG,GAAG;YACN,6BAA6B,EAAE,IAAI;YACnC,+BAA+B,EAAE,IAAI,CAAC,MAAM;YAC5C,6BAA6B,EAAE,IAAI,CAAC,IAAI;SACzC,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAE7D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,cAAc,GAAG,mBAAmB,IAAI,CAAC,IAAI,2BAA2B,MAAM,CAAC,MAAM,IAAI,SAAS,GAAG,CAAC;YAC5G,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE;gBACnC,MAAM,EAAE,QAAQ;gBAChB,UAAU;gBACV,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;gBACjD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,mBAAmB;gBACnB,KAAK,EAAE;oBACL,GAAG,aAAa;oBAChB;wBACE,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;wBAC7C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;wBAC/C,MAAM,EAAE,QAAQ;wBAChB,IAAI;wBACJ,MAAM;qBACP;iBACF;gBACD,cAAc,EAAE,GAAG,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;aACzE,CAAC,CAAC;YACH,QAAQ,CAAC,YAAY,GAAG,WAAW,CAAC;YACpC,QAAQ,CAAC,YAAY,GAAG,cAAc,CAAC;YACvC,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC9C,MAAM,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YAC1D,MAAM,wBAAwB,GAC5B,QAAQ,CAAC,SAAS,CAAC,cAAc,IAAI,cAAc,CAAC;YACtD,MAAM,IAAI,sBAAsB,CAC9B,wBAAwB,EACxB,iHAAiH,CAClH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,YAAY,KAAK,WAAW,EAAE,CAAC;YAC9D,MAAM,cAAc,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC;YAC1D,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE;gBACnC,MAAM,EAAE,QAAQ;gBAChB,UAAU;gBACV,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;gBACjD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,mBAAmB;gBACnB,KAAK,EAAE;oBACL,GAAG,aAAa;oBAChB;wBACE,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;wBAC7C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;wBAC/C,MAAM,EAAE,QAAQ;wBAChB,IAAI;wBACJ,MAAM,EAAE,eAAe,CACrB,MAAM,IAAI,EAAE,EACZ,2BAA2B,YAAY,4BAA4B,WAAW,EAAE,CACjF;qBACF;iBACF;gBACD,cAAc;aACf,CAAC,CAAC;YACH,QAAQ,CAAC,YAAY,GAAG,WAAW,CAAC;YACpC,QAAQ,CAAC,YAAY,GAAG,cAAc,CAAC;YACvC,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC9C,MAAM,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YAC1D,MAAM,IAAI,sBAAsB,CAC9B,cAAc,EACd,oIAAoI,CACrI,CAAC;QACJ,CAAC;QAED,aAAa,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,MAAM,EAAE,WAAW;YACnB,IAAI;YACJ,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE;QACnC,MAAM,EAAE,WAAW;QACnB,UAAU;QACV,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;QACjD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,mBAAmB;QACnB,KAAK,EAAE,aAAa;QACpB,cAAc,EAAE,IAAI;KACrB,CAAC,CAAC;IACH,QAAQ,CAAC,YAAY,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,MAAM,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC1D,OAAO;QACL,QAAQ;QACR,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC;KACrC,CAAC;AACJ,CAAC"}
@@ -10,6 +10,9 @@
10
10
  * AC: @agent-dispatch-engine ac-1 through ac-12
11
11
  */
12
12
  import { type LoadedTask } from "../parser/index.js";
13
+ import type { SessionEventData } from "./session-event-types.js";
14
+ import { interpolateTemplate } from "./prompts.js";
15
+ import { type DispatchWorkspaceMetadata, type DispatchWorkspaceRole, type ProvisionedDispatchWorkspace } from "./workspace.js";
13
16
  /**
14
17
  * A minimal promise-based mutex for serializing async operations.
15
18
  * AC: @agent-dispatch-engine ac-12
@@ -25,20 +28,53 @@ declare class Mutex {
25
28
  * Task state as used for dispatch tracking.
26
29
  */
27
30
  export type TaskStatus = "pending" | "in_progress" | "pending_review" | "needs_work" | "blocked" | "completed" | "cancelled";
31
+ export { interpolateTemplate };
28
32
  /**
29
- * Interpolate {{variable}} placeholders in a prompt template.
30
- * Unresolved variables pass through unchanged.
33
+ * Find the examined commit from the most recent closed review for a task.
34
+ * Returns null when no prior examined commit exists.
31
35
  *
32
- * AC: @agent-dispatch-engine ac-16
36
+ * AC: @review-fix-cycle-diff ac-2 — find prior review's examined commit
33
37
  */
34
- export declare function interpolateTemplate(template: string, vars: Record<string, string>): string;
38
+ export declare function findPriorExaminedCommit(reviews: Array<{
39
+ lifecycle_state: string;
40
+ examined_commit: string | null;
41
+ subject: {
42
+ type: string;
43
+ ref?: string;
44
+ };
45
+ related_refs: string[];
46
+ created_at: string | null;
47
+ }>, taskRef: string): string | null;
48
+ /**
49
+ * Compute a git diff --stat between two commits. Returns null on any error.
50
+ *
51
+ * AC: @review-fix-cycle-diff ac-3 — graceful omission on unreachable commits
52
+ */
53
+ export declare function computeDiffStat(fromCommit: string, toCommit: string, cwd: string): string | null;
54
+ /**
55
+ * Compute a diff summary between the prior review's examined commit and the
56
+ * current canonical branch head. Returns null when no prior examined commit
57
+ * exists or when the diff cannot be computed (unreachable commits, etc.).
58
+ *
59
+ * AC: @review-fix-cycle-diff ac-2 — diff summary for reviewer orientation
60
+ * AC: @review-fix-cycle-diff ac-3 — graceful omission on unreachable commits
61
+ */
62
+ export declare function getFixCycleDiffSummary(projectDir: string, taskRef: string, canonicalBranchHead: string | undefined, workspaceCwd?: string): Promise<string | null>;
35
63
  /**
36
64
  * Build orientation context block for a dispatch prompt.
37
65
  * Provides the agent with task title, trigger meaning, and relevant context.
38
66
  *
39
67
  * AC: @agent-dispatch-engine ac-13, ac-14, ac-15
40
68
  */
41
- export declare function buildOrientationContext(taskRef: string, trigger: string, task?: {
69
+ export declare function buildOrientationContext(taskRef: string, trigger: string, workspaceOrTask: ProvisionedDispatchWorkspace | {
70
+ title: string;
71
+ notes?: Array<{
72
+ created_at: string;
73
+ author?: string;
74
+ content: string;
75
+ }>;
76
+ review_url?: string;
77
+ }, taskOrMetadata?: {
42
78
  title: string;
43
79
  notes?: Array<{
44
80
  created_at: string;
@@ -46,6 +82,8 @@ export declare function buildOrientationContext(taskRef: string, trigger: string
46
82
  content: string;
47
83
  }>;
48
84
  review_url?: string;
85
+ } | DispatchWorkspaceMetadata, metadataOrRole?: DispatchWorkspaceMetadata | DispatchWorkspaceRole, explicitRole?: DispatchWorkspaceRole, options?: {
86
+ fixCycleDiffSummary?: string | null;
49
87
  }): string;
50
88
  /**
51
89
  * A state change event for a single task.
@@ -68,6 +106,7 @@ export interface InvocationEvent {
68
106
  session_id: string;
69
107
  agent_id: string;
70
108
  task_id: string | undefined;
109
+ task_title: string | null;
71
110
  status: "started" | "completed" | "failed";
72
111
  timestamp: number;
73
112
  }
@@ -93,6 +132,14 @@ export interface DispatchEngineOptions {
93
132
  * AC: @agent-dispatch-engine ac-20
94
133
  */
95
134
  reconcileIntervalMs?: number | null;
135
+ /**
136
+ * Per-task coalescing window in milliseconds (default 5000).
137
+ * When a state change event triggers a drain, the drain is deferred by this
138
+ * window. If another event arrives for the same task within the window, the
139
+ * timer resets. Set to 0 to disable coalescing (immediate drain behavior).
140
+ * AC: @per-task-dispatch-drain-coalescing ac-4
141
+ */
142
+ coalesceWindowMs?: number;
96
143
  /** Path to kspec CLI binary (for task notes) */
97
144
  kspecCliPath?: string;
98
145
  /**
@@ -101,11 +148,13 @@ export interface DispatchEngineOptions {
101
148
  */
102
149
  onInvocationEvent?: (event: InvocationEvent) => void;
103
150
  /**
104
- * Optional callback invoked for each text chunk produced by a running agent.
151
+ * Optional callback invoked for typed session lifecycle events.
152
+ * Replaces the old onTextChunk callback with structured event emission.
153
+ * AC: @session-event-broadcast ac-replaces-text-chunks
105
154
  * AC: @cli-agent-commands ac-13 (broadcast to watch subscribers)
106
155
  * AC: @daemon-agent-dispatch ac-8
107
156
  */
108
- onTextChunk?: (sessionId: string, agentId: string, taskId: string | null, text: string) => void;
157
+ onSessionEvent?: (event: SessionEventData) => void;
109
158
  }
110
159
  /**
111
160
  * The core dispatch runtime.
@@ -124,9 +173,13 @@ export declare class DispatchEngine {
124
173
  private cwd;
125
174
  private dedupWindowMs;
126
175
  private reconcileIntervalMs;
176
+ /** AC: @per-task-dispatch-drain-coalescing ac-4 */
177
+ private coalesceWindowMs;
127
178
  private kspecCliPath?;
128
179
  private onInvocationEvent?;
129
- private onTextChunk?;
180
+ private onSessionEvent?;
181
+ /** Per-session text accumulator for newline-boundary streaming. */
182
+ private accumulator;
130
183
  /** Queue of pending dispatch entries, per agent id */
131
184
  private queues;
132
185
  /** Count of active (running) invocations per agent id */
@@ -145,10 +198,22 @@ export declare class DispatchEngine {
145
198
  private invocationAbortControllers;
146
199
  /** Per-invocation tracking records for status display */
147
200
  private activeInvocationDetails;
201
+ /** Task refs currently between queue removal and active tracking registration */
202
+ private inFlightTaskKeys;
148
203
  /** Monotonic enqueue sequence for deterministic queue ordering */
149
204
  private nextQueueSequence;
205
+ /** Last task selected/completed, used as continuity affinity signal. */
206
+ private recentTaskAffinityRef;
150
207
  /** Timer handle for periodic reconciliation. AC: @agent-dispatch-engine ac-20 */
151
208
  private reconcileTimer;
209
+ /** All in-flight reconciliation promises so stop() can await every one. */
210
+ private inFlightReconciles;
211
+ /** Per-task coalescing timers. AC: @per-task-dispatch-drain-coalescing ac-1 */
212
+ private coalesceTimers;
213
+ /** Whether a drain is currently in progress. AC: @per-task-dispatch-drain-coalescing ac-8 */
214
+ private drainInProgress;
215
+ /** Whether another drain was requested while one is already running. AC: @per-task-dispatch-drain-coalescing ac-8 */
216
+ private drainPending;
152
217
  constructor(options: DispatchEngineOptions);
153
218
  /**
154
219
  * Start the dispatch engine.
@@ -181,6 +246,7 @@ export declare class DispatchEngine {
181
246
  * AC: @agent-dispatch-engine ac-12
182
247
  */
183
248
  getShadowMutex(): Mutex;
249
+ getCwd(): string;
184
250
  /**
185
251
  * Returns current engine status info including per-invocation details.
186
252
  * AC: @cli-agent-commands ac-6
@@ -230,13 +296,30 @@ export declare class DispatchEngine {
230
296
  * AC: @agent-dispatch-engine ac-19
231
297
  */
232
298
  private _hasActiveOrQueuedInvocation;
299
+ private _activeRoleByTaskRef;
300
+ private _activeTaskRefs;
301
+ /**
302
+ * Check whether any agent has an active or in-flight invocation for a task.
303
+ * Considers both registered active invocations (activeInvocationDetails) and
304
+ * tasks that are between queue removal and active registration (inFlightTaskKeys).
305
+ *
306
+ * AC: @agent-dispatch-engine ac-26
307
+ */
308
+ private _hasActiveInvocationForTask;
233
309
  /**
234
310
  * Load agent definitions from meta context.
235
311
  */
236
312
  private _loadAgents;
237
313
  /**
238
314
  * Check if a state change matches a dispatch rule's filters.
315
+ * Base readiness (deps, blocked_by) is checked before consumer filters
316
+ * per @trait-task-readiness ac-composable.
317
+ *
239
318
  * AC: @agent-dispatch-engine ac-6
319
+ * AC: @agent-dispatch-engine ac-21
320
+ * AC: @trait-task-readiness ac-deps
321
+ * AC: @trait-task-readiness ac-not-blocked
322
+ * AC: @trait-task-readiness ac-composable
240
323
  */
241
324
  private _matchesFilter;
242
325
  /**
@@ -265,10 +348,33 @@ export declare class DispatchEngine {
265
348
  */
266
349
  private _insertQueueEntry;
267
350
  /**
268
- * Compare queue entries by dispatch precedence, then by enqueue sequence.
351
+ * Compare queue entries by dispatch precedence, numeric task priority, then FIFO.
269
352
  * AC: @dispatch-in-progress-priority ac-1
270
353
  */
271
354
  private _compareQueueEntries;
355
+ private _taskPriorityForEntry;
356
+ private _hasContinuityAffinity;
357
+ private _compareSchedulerCandidates;
358
+ private _recordContinuityDeferrals;
359
+ private _workspaceCandidateHealth;
360
+ private _pruneIneligibleQueueEntries;
361
+ private _selectNextCandidate;
362
+ /**
363
+ * Schedule a per-task coalesced drain. If a timer already exists for this
364
+ * task, it is cleared and reset to the full coalescing window.
365
+ *
366
+ * AC: @per-task-dispatch-drain-coalescing ac-1, ac-3
367
+ */
368
+ private _scheduleCoalescedDrain;
369
+ /**
370
+ * Serialize drain execution: if a drain is already running, mark that another
371
+ * drain is pending and return. When the current drain finishes, it runs the
372
+ * follow-up drain. This prevents concurrent _drainQueues() calls from
373
+ * racing on queue state.
374
+ *
375
+ * AC: @per-task-dispatch-drain-coalescing ac-8
376
+ */
377
+ private _serializedDrain;
272
378
  /**
273
379
  * Drain queues, spawning invocations up to each agent's max_concurrent limit.
274
380
  * AC: @agent-dispatch-engine ac-3, ac-17
@@ -281,6 +387,10 @@ export declare class DispatchEngine {
281
387
  * AC: @agent-dispatch-engine ac-13, ac-14, ac-15, ac-16
282
388
  */
283
389
  private _buildDispatchPrompt;
390
+ private _runKspecCommand;
391
+ private _taskCommandError;
392
+ private _addTaskNote;
393
+ private _blockTask;
284
394
  /**
285
395
  * Spawn a single invocation for a queue entry.
286
396
  * Returns true if an invocation was actually started, false if skipped.
@@ -288,5 +398,4 @@ export declare class DispatchEngine {
288
398
  */
289
399
  private _spawnInvocation;
290
400
  }
291
- export {};
292
401
  //# sourceMappingURL=dispatch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/dispatch.ts"],"names":[],"mappings":"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"}