@mobrienv/autoloop 0.3.0 → 0.7.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 (415) hide show
  1. package/README.md +140 -43
  2. package/bin/autoloop +1 -1
  3. package/dist/index.d.ts +6 -0
  4. package/dist/index.js +19 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/testing/mock-backend.js +3 -5
  7. package/dist/testing/mock-backend.js.map +1 -1
  8. package/package.json +32 -10
  9. package/plugins/autoloop/.claude-plugin/plugin.json +1 -1
  10. package/dist/agent-map.d.ts +0 -10
  11. package/dist/agent-map.js +0 -58
  12. package/dist/agent-map.js.map +0 -1
  13. package/dist/backend/acp-client.d.ts +0 -38
  14. package/dist/backend/acp-client.js +0 -288
  15. package/dist/backend/acp-client.js.map +0 -1
  16. package/dist/backend/index.d.ts +0 -10
  17. package/dist/backend/index.js +0 -71
  18. package/dist/backend/index.js.map +0 -1
  19. package/dist/backend/kiro-bridge.d.ts +0 -17
  20. package/dist/backend/kiro-bridge.js +0 -84
  21. package/dist/backend/kiro-bridge.js.map +0 -1
  22. package/dist/backend/kiro-worker.d.ts +0 -1
  23. package/dist/backend/kiro-worker.js +0 -92
  24. package/dist/backend/kiro-worker.js.map +0 -1
  25. package/dist/backend/run-command.d.ts +0 -7
  26. package/dist/backend/run-command.js +0 -50
  27. package/dist/backend/run-command.js.map +0 -1
  28. package/dist/backend/run-kiro.d.ts +0 -3
  29. package/dist/backend/run-kiro.js +0 -16
  30. package/dist/backend/run-kiro.js.map +0 -1
  31. package/dist/backend/run-mock.d.ts +0 -1
  32. package/dist/backend/run-mock.js +0 -6
  33. package/dist/backend/run-mock.js.map +0 -1
  34. package/dist/backend/run-pi.d.ts +0 -5
  35. package/dist/backend/run-pi.js +0 -5
  36. package/dist/backend/run-pi.js.map +0 -1
  37. package/dist/backend/types.d.ts +0 -21
  38. package/dist/backend/types.js +0 -2
  39. package/dist/backend/types.js.map +0 -1
  40. package/dist/chains/budget.d.ts +0 -7
  41. package/dist/chains/budget.js +0 -54
  42. package/dist/chains/budget.js.map +0 -1
  43. package/dist/chains/load.d.ts +0 -18
  44. package/dist/chains/load.js +0 -129
  45. package/dist/chains/load.js.map +0 -1
  46. package/dist/chains/render.d.ts +0 -2
  47. package/dist/chains/render.js +0 -74
  48. package/dist/chains/render.js.map +0 -1
  49. package/dist/chains/run.d.ts +0 -17
  50. package/dist/chains/run.js +0 -260
  51. package/dist/chains/run.js.map +0 -1
  52. package/dist/chains/types.d.ts +0 -38
  53. package/dist/chains/types.js +0 -2
  54. package/dist/chains/types.js.map +0 -1
  55. package/dist/chains.d.ts +0 -6
  56. package/dist/chains.js +0 -5
  57. package/dist/chains.js.map +0 -1
  58. package/dist/commands/chain.d.ts +0 -1
  59. package/dist/commands/chain.js +0 -53
  60. package/dist/commands/chain.js.map +0 -1
  61. package/dist/commands/config.d.ts +0 -1
  62. package/dist/commands/config.js +0 -74
  63. package/dist/commands/config.js.map +0 -1
  64. package/dist/commands/dashboard.d.ts +0 -1
  65. package/dist/commands/dashboard.js +0 -68
  66. package/dist/commands/dashboard.js.map +0 -1
  67. package/dist/commands/guide.d.ts +0 -1
  68. package/dist/commands/guide.js +0 -33
  69. package/dist/commands/guide.js.map +0 -1
  70. package/dist/commands/inspect.d.ts +0 -1
  71. package/dist/commands/inspect.js +0 -203
  72. package/dist/commands/inspect.js.map +0 -1
  73. package/dist/commands/list.d.ts +0 -1
  74. package/dist/commands/list.js +0 -15
  75. package/dist/commands/list.js.map +0 -1
  76. package/dist/commands/loops.d.ts +0 -1
  77. package/dist/commands/loops.js +0 -72
  78. package/dist/commands/loops.js.map +0 -1
  79. package/dist/commands/memory.d.ts +0 -1
  80. package/dist/commands/memory.js +0 -65
  81. package/dist/commands/memory.js.map +0 -1
  82. package/dist/commands/pi-adapter.d.ts +0 -1
  83. package/dist/commands/pi-adapter.js +0 -6
  84. package/dist/commands/pi-adapter.js.map +0 -1
  85. package/dist/commands/run.d.ts +0 -1
  86. package/dist/commands/run.js +0 -292
  87. package/dist/commands/run.js.map +0 -1
  88. package/dist/commands/runs.d.ts +0 -1
  89. package/dist/commands/runs.js +0 -50
  90. package/dist/commands/runs.js.map +0 -1
  91. package/dist/commands/task.d.ts +0 -1
  92. package/dist/commands/task.js +0 -74
  93. package/dist/commands/task.js.map +0 -1
  94. package/dist/commands/worktree.d.ts +0 -1
  95. package/dist/commands/worktree.js +0 -162
  96. package/dist/commands/worktree.js.map +0 -1
  97. package/dist/config.d.ts +0 -31
  98. package/dist/config.js +0 -261
  99. package/dist/config.js.map +0 -1
  100. package/dist/dashboard/app.d.ts +0 -12
  101. package/dist/dashboard/app.js +0 -23
  102. package/dist/dashboard/app.js.map +0 -1
  103. package/dist/dashboard/routes/api.d.ts +0 -3
  104. package/dist/dashboard/routes/api.js +0 -130
  105. package/dist/dashboard/routes/api.js.map +0 -1
  106. package/dist/dashboard/routes/pages.d.ts +0 -2
  107. package/dist/dashboard/routes/pages.js +0 -14
  108. package/dist/dashboard/routes/pages.js.map +0 -1
  109. package/dist/dashboard/views/alpine-vendor.d.ts +0 -1
  110. package/dist/dashboard/views/alpine-vendor.js +0 -10
  111. package/dist/dashboard/views/alpine-vendor.js.map +0 -1
  112. package/dist/dashboard/views/shell.d.ts +0 -1
  113. package/dist/dashboard/views/shell.js +0 -746
  114. package/dist/dashboard/views/shell.js.map +0 -1
  115. package/dist/events/decode.d.ts +0 -2
  116. package/dist/events/decode.js +0 -45
  117. package/dist/events/decode.js.map +0 -1
  118. package/dist/events/encode.d.ts +0 -2
  119. package/dist/events/encode.js +0 -33
  120. package/dist/events/encode.js.map +0 -1
  121. package/dist/events/guards.d.ts +0 -5
  122. package/dist/events/guards.js +0 -42
  123. package/dist/events/guards.js.map +0 -1
  124. package/dist/events/types.d.ts +0 -26
  125. package/dist/events/types.js +0 -2
  126. package/dist/events/types.js.map +0 -1
  127. package/dist/harness/config-helpers.d.ts +0 -35
  128. package/dist/harness/config-helpers.js +0 -411
  129. package/dist/harness/config-helpers.js.map +0 -1
  130. package/dist/harness/coordination.d.ts +0 -1
  131. package/dist/harness/coordination.js +0 -127
  132. package/dist/harness/coordination.js.map +0 -1
  133. package/dist/harness/display.d.ts +0 -21
  134. package/dist/harness/display.js +0 -176
  135. package/dist/harness/display.js.map +0 -1
  136. package/dist/harness/emit.d.ts +0 -15
  137. package/dist/harness/emit.js +0 -240
  138. package/dist/harness/emit.js.map +0 -1
  139. package/dist/harness/index.d.ts +0 -13
  140. package/dist/harness/index.js +0 -240
  141. package/dist/harness/index.js.map +0 -1
  142. package/dist/harness/iteration.d.ts +0 -16
  143. package/dist/harness/iteration.js +0 -131
  144. package/dist/harness/iteration.js.map +0 -1
  145. package/dist/harness/journal.d.ts +0 -31
  146. package/dist/harness/journal.js +0 -178
  147. package/dist/harness/journal.js.map +0 -1
  148. package/dist/harness/metareview.d.ts +0 -4
  149. package/dist/harness/metareview.js +0 -48
  150. package/dist/harness/metareview.js.map +0 -1
  151. package/dist/harness/metrics.d.ts +0 -12
  152. package/dist/harness/metrics.js +0 -180
  153. package/dist/harness/metrics.js.map +0 -1
  154. package/dist/harness/parallel.d.ts +0 -37
  155. package/dist/harness/parallel.js +0 -237
  156. package/dist/harness/parallel.js.map +0 -1
  157. package/dist/harness/prompt.d.ts +0 -46
  158. package/dist/harness/prompt.js +0 -403
  159. package/dist/harness/prompt.js.map +0 -1
  160. package/dist/harness/scratchpad.d.ts +0 -2
  161. package/dist/harness/scratchpad.js +0 -67
  162. package/dist/harness/scratchpad.js.map +0 -1
  163. package/dist/harness/stop.d.ts +0 -5
  164. package/dist/harness/stop.js +0 -70
  165. package/dist/harness/stop.js.map +0 -1
  166. package/dist/harness/tools.d.ts +0 -3
  167. package/dist/harness/tools.js +0 -65
  168. package/dist/harness/tools.js.map +0 -1
  169. package/dist/harness/types.d.ts +0 -110
  170. package/dist/harness/types.js +0 -2
  171. package/dist/harness/types.js.map +0 -1
  172. package/dist/harness/wave/finalize-wave.d.ts +0 -9
  173. package/dist/harness/wave/finalize-wave.js +0 -87
  174. package/dist/harness/wave/finalize-wave.js.map +0 -1
  175. package/dist/harness/wave/launch-branches.d.ts +0 -6
  176. package/dist/harness/wave/launch-branches.js +0 -314
  177. package/dist/harness/wave/launch-branches.js.map +0 -1
  178. package/dist/harness/wave/parse-objectives.d.ts +0 -3
  179. package/dist/harness/wave/parse-objectives.js +0 -32
  180. package/dist/harness/wave/parse-objectives.js.map +0 -1
  181. package/dist/harness/wave/types.d.ts +0 -43
  182. package/dist/harness/wave/types.js +0 -2
  183. package/dist/harness/wave/types.js.map +0 -1
  184. package/dist/harness/wave.d.ts +0 -6
  185. package/dist/harness/wave.js +0 -159
  186. package/dist/harness/wave.js.map +0 -1
  187. package/dist/isolation/index.d.ts +0 -4
  188. package/dist/isolation/index.js +0 -3
  189. package/dist/isolation/index.js.map +0 -1
  190. package/dist/isolation/resolve.d.ts +0 -39
  191. package/dist/isolation/resolve.js +0 -118
  192. package/dist/isolation/resolve.js.map +0 -1
  193. package/dist/isolation/run-scope.d.ts +0 -21
  194. package/dist/isolation/run-scope.js +0 -50
  195. package/dist/isolation/run-scope.js.map +0 -1
  196. package/dist/json.d.ts +0 -8
  197. package/dist/json.js +0 -82
  198. package/dist/json.js.map +0 -1
  199. package/dist/loops/health.d.ts +0 -16
  200. package/dist/loops/health.js +0 -152
  201. package/dist/loops/health.js.map +0 -1
  202. package/dist/loops/list.d.ts +0 -6
  203. package/dist/loops/list.js +0 -21
  204. package/dist/loops/list.js.map +0 -1
  205. package/dist/loops/policy.d.ts +0 -6
  206. package/dist/loops/policy.js +0 -41
  207. package/dist/loops/policy.js.map +0 -1
  208. package/dist/loops/render.d.ts +0 -19
  209. package/dist/loops/render.js +0 -100
  210. package/dist/loops/render.js.map +0 -1
  211. package/dist/loops/show.d.ts +0 -8
  212. package/dist/loops/show.js +0 -31
  213. package/dist/loops/show.js.map +0 -1
  214. package/dist/loops/watch.d.ts +0 -14
  215. package/dist/loops/watch.js +0 -143
  216. package/dist/loops/watch.js.map +0 -1
  217. package/dist/main.d.ts +0 -1
  218. package/dist/main.js +0 -148
  219. package/dist/main.js.map +0 -1
  220. package/dist/markdown.d.ts +0 -10
  221. package/dist/markdown.js +0 -66
  222. package/dist/markdown.js.map +0 -1
  223. package/dist/memory-render.d.ts +0 -6
  224. package/dist/memory-render.js +0 -81
  225. package/dist/memory-render.js.map +0 -1
  226. package/dist/memory.d.ts +0 -22
  227. package/dist/memory.js +0 -318
  228. package/dist/memory.js.map +0 -1
  229. package/dist/pi-adapter.d.ts +0 -1
  230. package/dist/pi-adapter.js +0 -220
  231. package/dist/pi-adapter.js.map +0 -1
  232. package/dist/profiles.d.ts +0 -12
  233. package/dist/profiles.js +0 -71
  234. package/dist/profiles.js.map +0 -1
  235. package/dist/registry/derive.d.ts +0 -8
  236. package/dist/registry/derive.js +0 -88
  237. package/dist/registry/derive.js.map +0 -1
  238. package/dist/registry/discover.d.ts +0 -20
  239. package/dist/registry/discover.js +0 -98
  240. package/dist/registry/discover.js.map +0 -1
  241. package/dist/registry/harness.d.ts +0 -7
  242. package/dist/registry/harness.js +0 -63
  243. package/dist/registry/harness.js.map +0 -1
  244. package/dist/registry/index.d.ts +0 -6
  245. package/dist/registry/index.js +0 -6
  246. package/dist/registry/index.js.map +0 -1
  247. package/dist/registry/read.d.ts +0 -11
  248. package/dist/registry/read.js +0 -50
  249. package/dist/registry/read.js.map +0 -1
  250. package/dist/registry/rebuild.d.ts +0 -5
  251. package/dist/registry/rebuild.js +0 -22
  252. package/dist/registry/rebuild.js.map +0 -1
  253. package/dist/registry/types.d.ts +0 -28
  254. package/dist/registry/types.js +0 -2
  255. package/dist/registry/types.js.map +0 -1
  256. package/dist/registry/update.d.ts +0 -2
  257. package/dist/registry/update.js +0 -7
  258. package/dist/registry/update.js.map +0 -1
  259. package/dist/tasks-render.d.ts +0 -2
  260. package/dist/tasks-render.js +0 -44
  261. package/dist/tasks-render.js.map +0 -1
  262. package/dist/tasks.d.ts +0 -24
  263. package/dist/tasks.js +0 -184
  264. package/dist/tasks.js.map +0 -1
  265. package/dist/topology.d.ts +0 -31
  266. package/dist/topology.js +0 -309
  267. package/dist/topology.js.map +0 -1
  268. package/dist/usage.d.ts +0 -9
  269. package/dist/usage.js +0 -159
  270. package/dist/usage.js.map +0 -1
  271. package/dist/utils.d.ts +0 -21
  272. package/dist/utils.js +0 -349
  273. package/dist/utils.js.map +0 -1
  274. package/dist/worktree/clean.d.ts +0 -12
  275. package/dist/worktree/clean.js +0 -98
  276. package/dist/worktree/clean.js.map +0 -1
  277. package/dist/worktree/create.d.ts +0 -14
  278. package/dist/worktree/create.js +0 -71
  279. package/dist/worktree/create.js.map +0 -1
  280. package/dist/worktree/index.d.ts +0 -10
  281. package/dist/worktree/index.js +0 -6
  282. package/dist/worktree/index.js.map +0 -1
  283. package/dist/worktree/list.d.ts +0 -9
  284. package/dist/worktree/list.js +0 -24
  285. package/dist/worktree/list.js.map +0 -1
  286. package/dist/worktree/merge.d.ts +0 -11
  287. package/dist/worktree/merge.js +0 -129
  288. package/dist/worktree/merge.js.map +0 -1
  289. package/dist/worktree/meta.d.ts +0 -17
  290. package/dist/worktree/meta.js +0 -34
  291. package/dist/worktree/meta.js.map +0 -1
  292. package/presets/autocode/README.md +0 -81
  293. package/presets/autocode/autoloops.toml +0 -30
  294. package/presets/autocode/harness.md +0 -26
  295. package/presets/autocode/miniloops.toml +0 -22
  296. package/presets/autocode/roles/build.md +0 -34
  297. package/presets/autocode/roles/critic.md +0 -40
  298. package/presets/autocode/roles/finalizer.md +0 -43
  299. package/presets/autocode/roles/planner.md +0 -40
  300. package/presets/autocode/topology.toml +0 -32
  301. package/presets/autodoc/README.md +0 -42
  302. package/presets/autodoc/autoloops.toml +0 -21
  303. package/presets/autodoc/harness.md +0 -19
  304. package/presets/autodoc/miniloops.toml +0 -21
  305. package/presets/autodoc/roles/auditor.md +0 -39
  306. package/presets/autodoc/roles/checker.md +0 -43
  307. package/presets/autodoc/roles/publisher.md +0 -51
  308. package/presets/autodoc/roles/writer.md +0 -37
  309. package/presets/autodoc/topology.toml +0 -31
  310. package/presets/autofix/README.md +0 -56
  311. package/presets/autofix/autoloops.toml +0 -24
  312. package/presets/autofix/harness.md +0 -25
  313. package/presets/autofix/miniloops.toml +0 -21
  314. package/presets/autofix/roles/closer.md +0 -48
  315. package/presets/autofix/roles/diagnoser.md +0 -43
  316. package/presets/autofix/roles/fixer.md +0 -28
  317. package/presets/autofix/roles/verifier.md +0 -31
  318. package/presets/autofix/topology.toml +0 -33
  319. package/presets/autoideas/README.md +0 -73
  320. package/presets/autoideas/autoloops.toml +0 -18
  321. package/presets/autoideas/harness.md +0 -31
  322. package/presets/autoideas/miniloops.toml +0 -18
  323. package/presets/autoideas/roles/analyst.md +0 -32
  324. package/presets/autoideas/roles/reviewer.md +0 -36
  325. package/presets/autoideas/roles/scanner.md +0 -26
  326. package/presets/autoideas/roles/synthesizer.md +0 -61
  327. package/presets/autoideas/topology.toml +0 -32
  328. package/presets/automerge/README.md +0 -3
  329. package/presets/automerge/autoloops.toml +0 -12
  330. package/presets/automerge/harness.md +0 -10
  331. package/presets/automerge/miniloops.toml +0 -12
  332. package/presets/automerge/roles/merge.md +0 -10
  333. package/presets/automerge/topology.toml +0 -10
  334. package/presets/autoperf/README.md +0 -56
  335. package/presets/autoperf/autoloops.toml +0 -21
  336. package/presets/autoperf/harness.md +0 -21
  337. package/presets/autoperf/miniloops.toml +0 -21
  338. package/presets/autoperf/roles/judge.md +0 -38
  339. package/presets/autoperf/roles/measurer.md +0 -36
  340. package/presets/autoperf/roles/optimizer.md +0 -35
  341. package/presets/autoperf/roles/profiler.md +0 -38
  342. package/presets/autoperf/topology.toml +0 -32
  343. package/presets/autopr/README.md +0 -99
  344. package/presets/autopr/autoloops.toml +0 -22
  345. package/presets/autopr/harness.md +0 -27
  346. package/presets/autopr/miniloops.toml +0 -22
  347. package/presets/autopr/roles/collector.md +0 -55
  348. package/presets/autopr/roles/drafter.md +0 -38
  349. package/presets/autopr/roles/publisher.md +0 -28
  350. package/presets/autopr/roles/validator.md +0 -31
  351. package/presets/autopr/topology.toml +0 -32
  352. package/presets/autoqa/README.md +0 -76
  353. package/presets/autoqa/autoloops.toml +0 -21
  354. package/presets/autoqa/harness.md +0 -30
  355. package/presets/autoqa/miniloops.toml +0 -21
  356. package/presets/autoqa/roles/executor.md +0 -43
  357. package/presets/autoqa/roles/inspector.md +0 -45
  358. package/presets/autoqa/roles/planner.md +0 -55
  359. package/presets/autoqa/roles/reporter.md +0 -74
  360. package/presets/autoqa/topology.toml +0 -31
  361. package/presets/autoresearch/README.md +0 -63
  362. package/presets/autoresearch/autoloops.toml +0 -18
  363. package/presets/autoresearch/harness.md +0 -28
  364. package/presets/autoresearch/miniloops.toml +0 -18
  365. package/presets/autoresearch/roles/benchmarker.md +0 -34
  366. package/presets/autoresearch/roles/evaluator.md +0 -33
  367. package/presets/autoresearch/roles/implementer.md +0 -26
  368. package/presets/autoresearch/roles/strategist.md +0 -43
  369. package/presets/autoresearch/topology.toml +0 -31
  370. package/presets/autoreview/README.md +0 -51
  371. package/presets/autoreview/autoloops.toml +0 -21
  372. package/presets/autoreview/harness.md +0 -20
  373. package/presets/autoreview/miniloops.toml +0 -21
  374. package/presets/autoreview/roles/checker.md +0 -36
  375. package/presets/autoreview/roles/reader.md +0 -33
  376. package/presets/autoreview/roles/suggester.md +0 -26
  377. package/presets/autoreview/roles/summarizer.md +0 -57
  378. package/presets/autoreview/topology.toml +0 -31
  379. package/presets/autosec/README.md +0 -51
  380. package/presets/autosec/autoloops.toml +0 -21
  381. package/presets/autosec/harness.md +0 -20
  382. package/presets/autosec/miniloops.toml +0 -21
  383. package/presets/autosec/roles/analyst.md +0 -38
  384. package/presets/autosec/roles/hardener.md +0 -36
  385. package/presets/autosec/roles/reporter.md +0 -63
  386. package/presets/autosec/roles/scanner.md +0 -38
  387. package/presets/autosec/topology.toml +0 -31
  388. package/presets/autosimplify/README.md +0 -83
  389. package/presets/autosimplify/autoloops.toml +0 -26
  390. package/presets/autosimplify/harness.md +0 -25
  391. package/presets/autosimplify/miniloops.toml +0 -22
  392. package/presets/autosimplify/roles/reviewer.md +0 -38
  393. package/presets/autosimplify/roles/scoper.md +0 -42
  394. package/presets/autosimplify/roles/simplifier.md +0 -51
  395. package/presets/autosimplify/roles/verifier.md +0 -40
  396. package/presets/autosimplify/topology.toml +0 -32
  397. package/presets/autospec/README.md +0 -84
  398. package/presets/autospec/autoloops.toml +0 -21
  399. package/presets/autospec/harness.md +0 -23
  400. package/presets/autospec/miniloops.toml +0 -21
  401. package/presets/autospec/roles/clarifier.md +0 -39
  402. package/presets/autospec/roles/critic.md +0 -41
  403. package/presets/autospec/roles/designer.md +0 -37
  404. package/presets/autospec/roles/planner.md +0 -38
  405. package/presets/autospec/roles/researcher.md +0 -33
  406. package/presets/autospec/topology.toml +0 -38
  407. package/presets/autotest/README.md +0 -55
  408. package/presets/autotest/autoloops.toml +0 -21
  409. package/presets/autotest/harness.md +0 -21
  410. package/presets/autotest/miniloops.toml +0 -21
  411. package/presets/autotest/roles/assessor.md +0 -57
  412. package/presets/autotest/roles/runner.md +0 -31
  413. package/presets/autotest/roles/surveyor.md +0 -39
  414. package/presets/autotest/roles/writer.md +0 -37
  415. package/presets/autotest/topology.toml +0 -32
@@ -1,13 +0,0 @@
1
- import { emit as emitCmd } from "./emit.js";
2
- import type { LoopContext, RunOptions, RunSummary } from "./types.js";
3
- export type { LoopContext, RunOptions, RunSummary };
4
- export declare function run(projectDir: string, promptOverride: string | null, selfCommand: string, runOptions: RunOptions): RunSummary;
5
- export { emitCmd as emit };
6
- export declare function renderScratchpadFormat(projectDir: string, format: string, runIdOverride?: string): void;
7
- export declare function renderPromptFormat(projectDir: string, iteration: string, format: string, runIdOverride?: string): void;
8
- export declare function renderOutput(projectDir: string, iteration: string, runIdOverride?: string): void;
9
- export declare function renderJournal(projectDir: string, runId?: string): void;
10
- export declare function renderAllJournals(projectDir: string): void;
11
- export declare function renderCoordinationFormat(projectDir: string, format: string, runIdOverride?: string): void;
12
- export declare function renderMetrics(projectDir: string, format: string, runIdOverride?: string): void;
13
- export declare function runParallelBranchCli(projectDir: string, branchDir: string, selfCommand: string): void;
@@ -1,240 +0,0 @@
1
- import { writeFileSync } from "node:fs";
2
- import { join } from "node:path";
3
- import { initKiroSession, terminateKiroSession, } from "../backend/kiro-bridge.js";
4
- import * as config from "../config.js";
5
- import { registryStart, registryStop } from "../registry/harness.js";
6
- import { cleanWorktrees } from "../worktree/clean.js";
7
- import { mergeWorktree } from "../worktree/merge.js";
8
- import { readMeta, updateStatus as updateWorktreeStatus, } from "../worktree/meta.js";
9
- import { applyRuntimeModeOverrides, buildLoopContext, emptyFallback, ensureLayout, ensureRenderRunId, initStore, installRuntimeTools, iterationFieldForRun, reloadLoop, resolveJournalFileForRun, } from "./config-helpers.js";
10
- import { coordinationFromLines } from "./coordination.js";
11
- import { log, printProjectedMarkdown, printProjectedText, printSummary, } from "./display.js";
12
- import { emit as emitCmd, resolveEmitJournalFile } from "./emit.js";
13
- import { runIteration } from "./iteration.js";
14
- import { readAllJournals, readIfExists, readRunJournal, readRunLines, } from "./journal.js";
15
- import { maybeRunMetareview } from "./metareview.js";
16
- import { collectMetricsRows, formatMetrics } from "./metrics.js";
17
- import { appendLoopStart, branchStopReason, loadParallelBranchLaunch, parallelBranchBackendOverride, renderBranchResult, seedBranchContext, writeParallelBranchSummary, } from "./parallel.js";
18
- import { renderRunScratchpadFull } from "./scratchpad.js";
19
- import { stopMaxIterations } from "./stop.js";
20
- export function run(projectDir, promptOverride, selfCommand, runOptions) {
21
- let loop = buildLoopContext(projectDir, promptOverride, selfCommand, runOptions);
22
- loop = initStore(loop);
23
- ensureLayout(loop.paths.stateDir);
24
- installRuntimeTools(loop);
25
- appendLoopStart(loop);
26
- registryStart(loop);
27
- // Track current iteration for signal handler
28
- const currentIteration = 0;
29
- let signalHandled = false;
30
- const onSignal = (signal) => {
31
- if (signalHandled)
32
- return;
33
- signalHandled = true;
34
- try {
35
- registryStop(loop, currentIteration, "interrupted");
36
- }
37
- catch {
38
- /* best-effort */
39
- }
40
- process.removeListener("SIGINT", onSignal);
41
- process.removeListener("SIGTERM", onSignal);
42
- process.kill(process.pid, signal);
43
- };
44
- process.on("SIGINT", onSignal);
45
- process.on("SIGTERM", onSignal);
46
- log(loop, "info", `loop start run_id=${loop.runtime.runId} max_iterations=${loop.limits.maxIterations}`);
47
- // Initialize kiro ACP session if backend is kiro
48
- if (loop.backend.kind === "kiro") {
49
- const acpOpts = {
50
- command: loop.backend.command,
51
- args: loop.backend.args,
52
- cwd: loop.paths.workDir,
53
- trustAllTools: loop.store.kiro_trust_all_tools !== false,
54
- agentName: loop.store.kiro_agent || undefined,
55
- modelId: loop.store.kiro_model || undefined,
56
- };
57
- loop.kiroSession = initKiroSession(acpOpts);
58
- }
59
- let summary;
60
- try {
61
- summary = iterate(loop, 1);
62
- }
63
- finally {
64
- if (loop.kiroSession) {
65
- terminateKiroSession(loop.kiroSession);
66
- }
67
- }
68
- // Clean up signal handlers on normal exit
69
- process.removeListener("SIGINT", onSignal);
70
- process.removeListener("SIGTERM", onSignal);
71
- // Post-run worktree lifecycle: status update, automerge, cleanup
72
- if (loop.runtime.isolationMode === "worktree" && loop.paths.worktreeMetaDir) {
73
- const succeeded = summary.stopReason === "completed";
74
- const wtStatus = succeeded ? "completed" : "failed";
75
- try {
76
- updateWorktreeStatus(loop.paths.worktreeMetaDir, wtStatus);
77
- }
78
- catch {
79
- /* meta update is best-effort */
80
- }
81
- const keepWorktree = runOptions.keepWorktree ?? false;
82
- const automerge = runOptions.automerge ?? false;
83
- const cfg = config.loadProject(loop.paths.mainProjectDir);
84
- const cleanupPolicy = config.get(cfg, "worktree.cleanup", "on_success");
85
- // Automerge if requested and run succeeded.
86
- // Skip when trigger is "chain" — chain-mode defers merge to a dedicated automerge step.
87
- if (automerge &&
88
- succeeded &&
89
- !keepWorktree &&
90
- loop.launch.trigger !== "chain") {
91
- const meta = readMeta(loop.paths.worktreeMetaDir);
92
- if (meta) {
93
- const strategy = (meta.merge_strategy || "squash");
94
- try {
95
- mergeWorktree({
96
- mainProjectDir: loop.paths.mainProjectDir,
97
- metaDir: loop.paths.worktreeMetaDir,
98
- strategy,
99
- });
100
- log(loop, "info", `worktree merged (${strategy}) for run ${loop.runtime.runId}`);
101
- }
102
- catch (err) {
103
- const msg = err instanceof Error ? err.message : String(err);
104
- log(loop, "warn", `worktree merge failed: ${msg}`);
105
- }
106
- }
107
- }
108
- // Cleanup worktree based on policy (unless --keep-worktree)
109
- if (!keepWorktree) {
110
- const shouldClean = cleanupPolicy === "always" ||
111
- (cleanupPolicy === "on_success" && succeeded);
112
- if (shouldClean) {
113
- try {
114
- cleanWorktrees({
115
- mainProjectDir: loop.paths.mainProjectDir,
116
- mainStateDir: loop.paths.baseStateDir,
117
- runId: loop.runtime.runId,
118
- force: cleanupPolicy === "always",
119
- });
120
- log(loop, "info", `worktree cleaned for run ${loop.runtime.runId}`);
121
- }
122
- catch (err) {
123
- const msg = err instanceof Error ? err.message : String(err);
124
- log(loop, "warn", `worktree cleanup failed: ${msg}`);
125
- }
126
- }
127
- }
128
- }
129
- printSummary(summary, loop);
130
- return { ...summary, runId: loop.runtime.runId };
131
- }
132
- export { emitCmd as emit };
133
- export function renderScratchpadFormat(projectDir, format, runIdOverride) {
134
- const { journalFile, runId } = resolveJournalAndRun(projectDir, runIdOverride);
135
- printProjectedMarkdown(emptyFallback(renderRunScratchpadFull(readRunLines(journalFile, runId))), format);
136
- }
137
- export function renderPromptFormat(projectDir, iteration, format, runIdOverride) {
138
- const { journalFile, runId } = resolveJournalAndRun(projectDir, runIdOverride);
139
- const prompt = iterationFieldForRun(journalFile, runId, iteration, "iteration.start", "prompt");
140
- if (!prompt) {
141
- console.log(`missing prompt projection for iteration ${iteration}`);
142
- return;
143
- }
144
- printProjectedMarkdown(prompt, format);
145
- }
146
- export function renderOutput(projectDir, iteration, runIdOverride) {
147
- const { journalFile, runId } = resolveJournalAndRun(projectDir, runIdOverride);
148
- const output = iterationFieldForRun(journalFile, runId, iteration, "iteration.finish", "output");
149
- console.log(output || `missing output projection for iteration ${iteration}`);
150
- }
151
- export function renderJournal(projectDir, runId) {
152
- if (runId) {
153
- const stateDir = config.stateDirPath(projectDir);
154
- const lines = readRunJournal(stateDir, runId);
155
- console.log(lines.join("\n"));
156
- return;
157
- }
158
- console.log(readIfExists(resolveEmitJournalFile(projectDir)));
159
- }
160
- export function renderAllJournals(projectDir) {
161
- const stateDir = config.stateDirPath(projectDir);
162
- const lines = readAllJournals(stateDir);
163
- if (lines.length > 0) {
164
- console.log(lines.join("\n"));
165
- }
166
- else {
167
- renderJournal(projectDir);
168
- }
169
- }
170
- export function renderCoordinationFormat(projectDir, format, runIdOverride) {
171
- const { journalFile, runId } = resolveJournalAndRun(projectDir, runIdOverride);
172
- const lines = readRunLines(journalFile, runId);
173
- printProjectedMarkdown(emptyFallback(coordinationFromLines(lines)), format);
174
- }
175
- export function renderMetrics(projectDir, format, runIdOverride) {
176
- const { journalFile, runId } = resolveJournalAndRun(projectDir, runIdOverride);
177
- const lines = readRunLines(journalFile, runId);
178
- const rows = collectMetricsRows(lines);
179
- printProjectedText(formatMetrics(rows, format), format);
180
- }
181
- export function runParallelBranchCli(projectDir, branchDir, selfCommand) {
182
- const launch = loadParallelBranchLaunch(branchDir);
183
- const branchPrompt = launch.prompt;
184
- const routingEvent = launch.routingEvent || "loop.start";
185
- const backendOverride = parallelBranchBackendOverride(launch);
186
- const logLevelVal = launch.logLevel || null;
187
- let branchLoop = buildLoopContext(projectDir, branchPrompt, selfCommand, {
188
- workDir: branchDir,
189
- backendOverride,
190
- logLevel: logLevelVal,
191
- trigger: "branch",
192
- });
193
- branchLoop = initStore(branchLoop);
194
- branchLoop.runtime.branchMode = true;
195
- branchLoop = applyRuntimeModeOverrides(branchLoop);
196
- ensureLayout(branchLoop.paths.stateDir);
197
- installRuntimeTools(branchLoop);
198
- appendLoopStart(branchLoop);
199
- registryStart(branchLoop);
200
- const seeded = seedBranchContext(branchLoop, routingEvent);
201
- const startMs = Date.now();
202
- const summary = iterate(seeded, 1);
203
- const finishedMs = Date.now();
204
- const elapsedMs = finishedMs - startMs;
205
- const output = iterationFieldForRun(seeded.paths.journalFile, seeded.runtime.runId, "1", "iteration.finish", "output");
206
- const stopReason = branchStopReason(summary.stopReason, elapsedMs, seeded.parallel.branchTimeoutMs);
207
- const result = {
208
- branch_id: launch.branchId,
209
- objective: launch.objective,
210
- stop_reason: stopReason,
211
- output,
212
- routing_event: routingEvent,
213
- allowed_roles: launch.allowedRoles,
214
- allowed_events: launch.allowedEvents,
215
- branch_dir: branchDir,
216
- elapsed_ms: elapsedMs,
217
- finished_at_ms: finishedMs,
218
- };
219
- writeFileSync(join(branchDir, "result.md"), renderBranchResult(result));
220
- writeParallelBranchSummary(branchDir, result);
221
- }
222
- // --- Private implementation ---
223
- function resolveJournalAndRun(projectDir, runIdOverride) {
224
- if (runIdOverride) {
225
- return resolveJournalFileForRun(projectDir, runIdOverride);
226
- }
227
- const journalFile = resolveEmitJournalFile(projectDir);
228
- return { journalFile, runId: ensureRenderRunId(journalFile) };
229
- }
230
- function iterate(loop, iteration) {
231
- const liveLoop = reloadLoop(loop);
232
- liveLoop.kiroSession = loop.kiroSession;
233
- installRuntimeTools(liveLoop);
234
- const reviewed = maybeRunMetareview(liveLoop, iteration);
235
- if (iteration > reviewed.limits.maxIterations) {
236
- return stopMaxIterations(reviewed, iteration);
237
- }
238
- return runIteration(reviewed, iteration, iterate);
239
- }
240
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/harness/index.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import type { IterationContext } from "./prompt.js";
2
- import type { LoopContext, RunSummary } from "./types.js";
3
- export declare function runIteration(loop: LoopContext, iteration: number, iterate: (loop: LoopContext, iteration: number) => RunSummary): RunSummary;
4
- export declare function finishIteration(loop: LoopContext, iter: IterationContext, output: string, iterate: (loop: LoopContext, iteration: number) => RunSummary): RunSummary;
5
- export declare function resolveOutcome(ctx: {
6
- emittedTopic: string;
7
- allTopics: string[];
8
- hadInvalidEvents: boolean;
9
- output: string;
10
- completionEvent: string;
11
- requiredEvents: string[];
12
- completionPromise: string;
13
- }): {
14
- action: string;
15
- outcome: string;
16
- };
@@ -1,131 +0,0 @@
1
- import { runKiroIterationSync, setKiroSessionMode, } from "../backend/kiro-bridge.js";
2
- import { registryProgress } from "../registry/harness.js";
3
- import { listText } from "../utils.js";
4
- import { log, printBackendOutputTail, printIterationBanner, printIterationFooter, printProgressLine, } from "./display.js";
5
- import { appendInvalidEvent, invalidEvent, parallelTriggerTopic, systemTopic, } from "./emit.js";
6
- import { extractField, extractIteration, extractTopic, readRunLines, } from "./journal.js";
7
- import { appendBackendFinish, appendBackendStart, appendIterationFinish, appendIterationStart, buildBackendCommand, runProcess, } from "./parallel.js";
8
- import { buildIterationContext } from "./prompt.js";
9
- import { completeLoop, stopBackendFailed, stopBackendTimeout } from "./stop.js";
10
- import { continueAfterParallelJoin, executeParallelWave, stopAfterParallelWave, } from "./wave.js";
11
- export function runIteration(loop, iteration, iterate) {
12
- const iter = buildIterationContext(loop, iteration);
13
- printIterationBanner(loop, iter);
14
- appendIterationStart(loop, iter);
15
- log(loop, "debug", `iteration ${iteration} start`);
16
- appendBackendStart(loop, iter);
17
- log(loop, "debug", `backend start command=${loop.backend.command}`);
18
- const startEpoch = Math.floor(Date.now() / 1000);
19
- // Switch Kiro session agent mode per-role if agents.toml provides a mapping
20
- if (iter.roleAgent && loop.backend.kind === "kiro" && loop.kiroSession) {
21
- log(loop, "debug", `switching kiro agent to "${iter.roleAgent}" for role "${iter.allowedRoles[0]}"`);
22
- setKiroSessionMode(loop.kiroSession, iter.roleAgent);
23
- }
24
- const { output, exitCode, timedOut } = loop.backend.kind === "kiro" && loop.kiroSession
25
- ? runKiroIterationSync(loop.kiroSession, iter.prompt, loop.backend.timeoutMs)
26
- : runProcess(buildBackendCommand(loop, iter), loop.backend.timeoutMs, loop.backend.kind);
27
- const elapsedS = Math.floor(Date.now() / 1000) - startEpoch;
28
- appendBackendFinish(loop, iter, output, exitCode, timedOut);
29
- appendIterationFinish(loop, iter, output, exitCode, timedOut, elapsedS);
30
- registryProgress(loop, iteration);
31
- log(loop, "debug", `iteration ${iteration} finish exit_code=${exitCode}`);
32
- printIterationFooter(iter, elapsedS);
33
- printBackendOutputTail(output);
34
- if (timedOut)
35
- return stopBackendTimeout(loop, iteration, output);
36
- if (exitCode !== 0)
37
- return stopBackendFailed(loop, iteration, output);
38
- return finishIteration(loop, iter, output, iterate);
39
- }
40
- export function finishIteration(loop, iter, output, iterate) {
41
- const runLines = readRunLines(loop.paths.journalFile, loop.runtime.runId);
42
- const allTopics = runLines.map(extractTopic).filter((t) => t !== "");
43
- const turnLines = runLines.filter((l) => extractIteration(l) === String(iter.iteration));
44
- const emitted = latestAgentEventRecord(turnLines);
45
- const hadInvalidEvents = turnLines.some((l) => extractTopic(l) === "event.invalid");
46
- const progress = (emittedTopic, outcome) => printProgressLine({
47
- runId: loop.runtime.runId,
48
- iteration: iter.iteration,
49
- recentEvent: iter.recentEvent,
50
- allowedRoles: iter.allowedRoles,
51
- emittedTopic,
52
- outcome,
53
- });
54
- if (invalidEvent(emitted.topic, iter.allowedEvents, loop.parallel.enabled, loop.completion.event)) {
55
- return rejectInvalidAndContinue(loop, iter, emitted.topic, iterate, progress);
56
- }
57
- if (parallelTriggerTopic(emitted.topic)) {
58
- return finishParallelIteration(loop, iter, emitted.topic, emitted.payload, iterate, progress);
59
- }
60
- const resolved = resolveOutcome({
61
- emittedTopic: emitted.topic,
62
- allTopics,
63
- hadInvalidEvents,
64
- output,
65
- completionEvent: loop.completion.event,
66
- requiredEvents: loop.completion.requiredEvents,
67
- completionPromise: loop.completion.promise,
68
- });
69
- progress(emitted.topic, resolved.outcome);
70
- if (resolved.action === "complete_event")
71
- return completeLoop(loop, iter.iteration, "completion_event");
72
- if (resolved.action === "complete_promise")
73
- return completeLoop(loop, iter.iteration, "completion_promise");
74
- return iterate(loop, iter.iteration + 1);
75
- }
76
- function rejectInvalidAndContinue(loop, iter, emittedTopic, iterate, progress) {
77
- appendInvalidEvent(loop.paths.journalFile, loop.runtime.runId, String(iter.iteration), iter.recentEvent, emittedTopic, iter.allowedRoles, iter.allowedEvents);
78
- console.log(`[reject] invalid event \`${emittedTopic}\`; recent event: \`${iter.recentEvent}\`; allowed next events: ${listText(iter.allowedEvents)}`);
79
- progress(emittedTopic, "rejected:event.invalid");
80
- return iterate(loop, iter.iteration + 1);
81
- }
82
- function finishParallelIteration(loop, iter, emittedTopic, emittedPayload, iterate, progress) {
83
- const result = executeParallelWave(loop, iter, emittedTopic, emittedPayload);
84
- if (result.reason === "parallel_wave_complete") {
85
- progress(emittedTopic, "parallel:joined");
86
- return continueAfterParallelJoin(loop, iter, result.waveId, emittedTopic, result.elapsedMs, iterate);
87
- }
88
- progress(emittedTopic, `parallel:stop:${result.reason}`);
89
- return stopAfterParallelWave(loop, iter, result.reason, result.waveId);
90
- }
91
- export function resolveOutcome(ctx) {
92
- if (completedViaEvent(ctx.allTopics, ctx.completionEvent, ctx.requiredEvents)) {
93
- return { action: "complete_event", outcome: "complete:completion_event" };
94
- }
95
- if (shouldContinueFromAcceptedEvent(ctx.emittedTopic, ctx.completionEvent)) {
96
- return { action: "continue_routed", outcome: "continue:routed_event" };
97
- }
98
- if (!ctx.hadInvalidEvents &&
99
- completedViaPromise(ctx.output, ctx.completionPromise)) {
100
- return {
101
- action: "complete_promise",
102
- outcome: "complete:completion_promise",
103
- };
104
- }
105
- return { action: "continue", outcome: "continue" };
106
- }
107
- function latestAgentEventRecord(lines) {
108
- for (let i = lines.length - 1; i >= 0; i--) {
109
- const topic = extractTopic(lines[i]);
110
- if (!systemTopic(topic)) {
111
- return { topic, payload: extractField(lines[i], "payload") };
112
- }
113
- }
114
- return { topic: "", payload: "" };
115
- }
116
- function completedViaEvent(topics, completionEvent, requiredEvents) {
117
- if (!topics.includes(completionEvent))
118
- return false;
119
- return requiredEvents.every((e) => topics.includes(e));
120
- }
121
- function completedViaPromise(output, promise) {
122
- if (!promise)
123
- return false;
124
- return output.includes(promise);
125
- }
126
- function shouldContinueFromAcceptedEvent(emittedTopic, completionEvent) {
127
- if (!emittedTopic)
128
- return false;
129
- return emittedTopic !== completionEvent;
130
- }
131
- //# sourceMappingURL=iteration.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"iteration.js","sourceRoot":"","sources":["../../src/harness/iteration.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,GAAG,EACH,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,UAAU,GACX,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAEnB,MAAM,UAAU,YAAY,CAC1B,IAAiB,EACjB,SAAiB,EACjB,OAA6D;IAE7D,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpD,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,SAAS,QAAQ,CAAC,CAAC;IACnD,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/B,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,yBAAyB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEpE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAEjD,4EAA4E;IAC5E,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACvE,GAAG,CACD,IAAI,EACJ,OAAO,EACP,4BAA4B,IAAI,CAAC,SAAS,eAAe,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CACjF,CAAC;QACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAClC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW;QAC9C,CAAC,CAAC,oBAAoB,CAClB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,OAAO,CAAC,SAAS,CACvB;QACH,CAAC,CAAC,UAAU,CACR,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,EAC/B,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAClB,CAAC;IACR,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC;IAE5D,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC5D,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxE,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,SAAS,qBAAqB,QAAQ,EAAE,CAAC,CAAC;IAC1E,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAE/B,IAAI,QAAQ;QAAE,OAAO,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACjE,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACtE,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAiB,EACjB,IAAsB,EACtB,MAAc,EACd,OAA6D;IAE7D,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CACtD,CAAC;IACF,MAAM,OAAO,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CACrC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,eAAe,CAC3C,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,YAAoB,EAAE,OAAe,EAAE,EAAE,CACzD,iBAAiB,CAAC;QAChB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,YAAY;QACZ,OAAO;KACR,CAAC,CAAC;IAEL,IACE,YAAY,CACV,OAAO,CAAC,KAAK,EACb,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,QAAQ,CAAC,OAAO,EACrB,IAAI,CAAC,UAAU,CAAC,KAAK,CACtB,EACD,CAAC;QACD,OAAO,wBAAwB,CAC7B,IAAI,EACJ,IAAI,EACJ,OAAO,CAAC,KAAK,EACb,OAAO,EACP,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,IAAI,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,uBAAuB,CAC5B,IAAI,EACJ,IAAI,EACJ,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,OAAO,EACf,OAAO,EACP,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC;QAC9B,YAAY,EAAE,OAAO,CAAC,KAAK;QAC3B,SAAS;QACT,gBAAgB;QAChB,MAAM;QACN,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;QACtC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc;QAC9C,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO;KAC3C,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE1C,IAAI,QAAQ,CAAC,MAAM,KAAK,gBAAgB;QACtC,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IAChE,IAAI,QAAQ,CAAC,MAAM,KAAK,kBAAkB;QACxC,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAClE,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAiB,EACjB,IAAsB,EACtB,YAAoB,EACpB,OAA6D,EAC7D,QAAkD;IAElD,kBAAkB,CAChB,IAAI,CAAC,KAAK,CAAC,WAAW,EACtB,IAAI,CAAC,OAAO,CAAC,KAAK,EAClB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EACtB,IAAI,CAAC,WAAW,EAChB,YAAY,EACZ,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,aAAa,CACnB,CAAC;IACF,OAAO,CAAC,GAAG,CACT,4BAA4B,YAAY,uBAAuB,IAAI,CAAC,WAAW,4BAA4B,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAC1I,CAAC;IACF,QAAQ,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,uBAAuB,CAC9B,IAAiB,EACjB,IAAsB,EACtB,YAAoB,EACpB,cAAsB,EACtB,OAA6D,EAC7D,QAAkD;IAElD,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;IAE7E,IAAI,MAAM,CAAC,MAAM,KAAK,wBAAwB,EAAE,CAAC;QAC/C,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;QAC1C,OAAO,yBAAyB,CAC9B,IAAI,EACJ,IAAI,EACJ,MAAM,CAAC,MAAM,EACb,YAAY,EACZ,MAAM,CAAC,SAAS,EAChB,OAAO,CACR,CAAC;IACJ,CAAC;IACD,QAAQ,CAAC,YAAY,EAAE,iBAAiB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACzD,OAAO,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAQ9B;IACC,IACE,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,cAAc,CAAC,EACzE,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,+BAA+B,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;IACzE,CAAC;IACD,IACE,CAAC,GAAG,CAAC,gBAAgB;QACrB,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,iBAAiB,CAAC,EACtD,CAAC;QACD,OAAO;YACL,MAAM,EAAE,kBAAkB;YAC1B,OAAO,EAAE,6BAA6B;SACvC,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAe;IAI7C,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAgB,EAChB,eAAuB,EACvB,cAAwB;IAExB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc,EAAE,OAAe;IAC1D,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,+BAA+B,CACtC,YAAoB,EACpB,eAAuB;IAEvB,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IAChC,OAAO,YAAY,KAAK,eAAe,CAAC;AAC1C,CAAC"}
@@ -1,31 +0,0 @@
1
- export declare function appendEvent(path: string, runId: string, iteration: string, topic: string, fieldsJson: string): void;
2
- export declare function appendAgentEvent(path: string, runId: string, iteration: string, topic: string, payload: string): void;
3
- export declare function appendHarnessEvent(path: string, runId: string, iteration: string, topic: string, payload: string): void;
4
- export declare function appendOperatorEvent(path: string, runId: string, iteration: string, topic: string, payload: string): void;
5
- export declare function readLines(path: string): string[];
6
- export declare function readRunLines(path: string, runId: string): string[];
7
- export declare function extractTopic(line: string): string;
8
- export declare function extractField(line: string, key: string): string;
9
- export declare function extractRun(line: string): string;
10
- export declare function extractIteration(line: string): string;
11
- export declare function latestRunId(path: string): string;
12
- export declare function latestIterationForRun(path: string, runId: string): string;
13
- /**
14
- * Merge journals from the top-level file, per-run journals under runs/,
15
- * and worktree journals under worktrees/<id>/tree/<stateDirName>/.
16
- * Returns all lines sorted by timestamp.
17
- */
18
- export declare function readAllJournals(baseStateDir: string): string[];
19
- /**
20
- * Resolve the journal file path for a specific run within a state directory.
21
- * Checks run-scoped (runs/<runId>/journal.jsonl) and worktree paths first.
22
- * Returns null if no run-specific journal exists.
23
- */
24
- export declare function resolveRunJournalPath(baseStateDir: string, runId: string): string | null;
25
- /**
26
- * Read journal lines for a specific run.
27
- * Checks run-scoped and worktree paths via resolveRunJournalPath.
28
- */
29
- export declare function readRunJournal(baseStateDir: string, runId: string): string[];
30
- export declare function appendText(path: string, content: string): void;
31
- export declare function readIfExists(path: string): string;
@@ -1,178 +0,0 @@
1
- import { appendFileSync, existsSync, mkdirSync, readdirSync, readFileSync, } from "node:fs";
2
- import { basename, dirname, join } from "node:path";
3
- import { encodeEvent } from "../events/encode.js";
4
- import { extractField as jsonExtractField, extractTopic as jsonExtractTopic, } from "../json.js";
5
- import { lineSep } from "../utils.js";
6
- export function appendEvent(path, runId, iteration, topic, fieldsJson) {
7
- appendText(path, encodeEvent({
8
- shape: "fields",
9
- run: runId,
10
- iteration: iteration || undefined,
11
- topic,
12
- fields: parsedFields(fieldsJson),
13
- rawFields: parsedFieldsRaw(fieldsJson),
14
- }));
15
- }
16
- export function appendAgentEvent(path, runId, iteration, topic, payload) {
17
- appendEmittedEvent(path, runId, iteration, topic, payload, "agent");
18
- }
19
- export function appendHarnessEvent(path, runId, iteration, topic, payload) {
20
- appendEmittedEvent(path, runId, iteration, topic, payload, "harness");
21
- }
22
- export function appendOperatorEvent(path, runId, iteration, topic, payload) {
23
- appendEmittedEvent(path, runId, iteration, topic, payload, "operator");
24
- }
25
- function appendEmittedEvent(path, runId, iteration, topic, payload, source) {
26
- appendText(path, encodeEvent({
27
- shape: "payload",
28
- run: runId,
29
- iteration: iteration || undefined,
30
- topic,
31
- payload,
32
- source,
33
- }));
34
- }
35
- function parsedFields(fieldsJson) {
36
- const parsed = parsedFieldsRaw(fieldsJson);
37
- const result = {};
38
- for (const [key, value] of Object.entries(parsed)) {
39
- result[key] = String(value ?? "");
40
- }
41
- return result;
42
- }
43
- function parsedFieldsRaw(fieldsJson) {
44
- if (!fieldsJson.trim())
45
- return {};
46
- try {
47
- return JSON.parse(`{${fieldsJson}}`);
48
- }
49
- catch {
50
- return {};
51
- }
52
- }
53
- export function readLines(path) {
54
- const text = readIfExists(path);
55
- return text
56
- .split(lineSep())
57
- .map((l) => l.trim())
58
- .filter((l) => l !== "");
59
- }
60
- export function readRunLines(path, runId) {
61
- return readLines(path).filter((line) => extractRun(line) === runId);
62
- }
63
- export function extractTopic(line) {
64
- return jsonExtractTopic(line);
65
- }
66
- export function extractField(line, key) {
67
- return jsonExtractField(line, key);
68
- }
69
- export function extractRun(line) {
70
- return extractField(line, "run");
71
- }
72
- export function extractIteration(line) {
73
- return extractField(line, "iteration");
74
- }
75
- export function latestRunId(path) {
76
- const lines = readLines(path);
77
- let current = "";
78
- for (const line of lines) {
79
- if (extractTopic(line) === "loop.start") {
80
- const run = extractRun(line);
81
- if (run)
82
- current = run;
83
- }
84
- }
85
- return current;
86
- }
87
- export function latestIterationForRun(path, runId) {
88
- const lines = readRunLines(path, runId);
89
- let current = "";
90
- for (const line of lines) {
91
- if (extractTopic(line) === "iteration.start") {
92
- const iter = extractIteration(line);
93
- if (iter)
94
- current = iter;
95
- }
96
- }
97
- return current;
98
- }
99
- /**
100
- * Merge journals from the top-level file, per-run journals under runs/,
101
- * and worktree journals under worktrees/<id>/tree/<stateDirName>/.
102
- * Returns all lines sorted by timestamp.
103
- */
104
- export function readAllJournals(baseStateDir) {
105
- const allLines = [];
106
- // Top-level journal
107
- const topLevel = join(baseStateDir, "journal.jsonl");
108
- if (existsSync(topLevel))
109
- allLines.push(...readLines(topLevel));
110
- // Per-run journals under runs/*/journal.jsonl
111
- const runsDir = join(baseStateDir, "runs");
112
- if (existsSync(runsDir)) {
113
- const entries = readdirSync(runsDir, { withFileTypes: true });
114
- for (const entry of entries) {
115
- if (!entry.isDirectory())
116
- continue;
117
- const runJournal = join(runsDir, entry.name, "journal.jsonl");
118
- if (existsSync(runJournal))
119
- allLines.push(...readLines(runJournal));
120
- }
121
- }
122
- // Worktree journals under worktrees/<id>/tree/<stateDirName>/journal.jsonl
123
- const stateDirName = basename(baseStateDir);
124
- const wtDir = join(baseStateDir, "worktrees");
125
- if (existsSync(wtDir)) {
126
- const entries = readdirSync(wtDir, { withFileTypes: true });
127
- for (const entry of entries) {
128
- if (!entry.isDirectory())
129
- continue;
130
- const wtJournal = join(wtDir, entry.name, "tree", stateDirName, "journal.jsonl");
131
- if (existsSync(wtJournal))
132
- allLines.push(...readLines(wtJournal));
133
- }
134
- }
135
- // Sort by timestamp field if present
136
- return allLines.sort((a, b) => {
137
- const tsA = extractTimestamp(a);
138
- const tsB = extractTimestamp(b);
139
- return tsA.localeCompare(tsB);
140
- });
141
- }
142
- /**
143
- * Resolve the journal file path for a specific run within a state directory.
144
- * Checks run-scoped (runs/<runId>/journal.jsonl) and worktree paths first.
145
- * Returns null if no run-specific journal exists.
146
- */
147
- export function resolveRunJournalPath(baseStateDir, runId) {
148
- const runJournal = join(baseStateDir, "runs", runId, "journal.jsonl");
149
- if (existsSync(runJournal))
150
- return runJournal;
151
- const stateDirName = basename(baseStateDir);
152
- const wtJournal = join(baseStateDir, "worktrees", runId, "tree", stateDirName, "journal.jsonl");
153
- if (existsSync(wtJournal))
154
- return wtJournal;
155
- return null;
156
- }
157
- /**
158
- * Read journal lines for a specific run.
159
- * Checks run-scoped and worktree paths via resolveRunJournalPath.
160
- */
161
- export function readRunJournal(baseStateDir, runId) {
162
- const path = resolveRunJournalPath(baseStateDir, runId);
163
- return path ? readLines(path) : [];
164
- }
165
- function extractTimestamp(line) {
166
- return extractField(line, "timestamp") || extractField(line, "ts") || "";
167
- }
168
- export function appendText(path, content) {
169
- const dir = dirname(path);
170
- mkdirSync(dir, { recursive: true });
171
- appendFileSync(path, content, "utf-8");
172
- }
173
- export function readIfExists(path) {
174
- if (!existsSync(path))
175
- return "";
176
- return readFileSync(path, "utf-8");
177
- }
178
- //# sourceMappingURL=journal.js.map