@mobrienv/autoloop 0.4.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 (440) hide show
  1. package/README.md +40 -14
  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 +30 -23
  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 -293
  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 -19
  20. package/dist/backend/kiro-bridge.js +0 -114
  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 -96
  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/cli/color.d.ts +0 -6
  59. package/dist/cli/color.js +0 -40
  60. package/dist/cli/color.js.map +0 -1
  61. package/dist/commands/chain.d.ts +0 -1
  62. package/dist/commands/chain.js +0 -53
  63. package/dist/commands/chain.js.map +0 -1
  64. package/dist/commands/config.d.ts +0 -1
  65. package/dist/commands/config.js +0 -74
  66. package/dist/commands/config.js.map +0 -1
  67. package/dist/commands/dashboard.d.ts +0 -1
  68. package/dist/commands/dashboard.js +0 -68
  69. package/dist/commands/dashboard.js.map +0 -1
  70. package/dist/commands/guide.d.ts +0 -1
  71. package/dist/commands/guide.js +0 -33
  72. package/dist/commands/guide.js.map +0 -1
  73. package/dist/commands/inspect.d.ts +0 -1
  74. package/dist/commands/inspect.js +0 -243
  75. package/dist/commands/inspect.js.map +0 -1
  76. package/dist/commands/list.d.ts +0 -1
  77. package/dist/commands/list.js +0 -15
  78. package/dist/commands/list.js.map +0 -1
  79. package/dist/commands/loops.d.ts +0 -1
  80. package/dist/commands/loops.js +0 -72
  81. package/dist/commands/loops.js.map +0 -1
  82. package/dist/commands/memory.d.ts +0 -1
  83. package/dist/commands/memory.js +0 -65
  84. package/dist/commands/memory.js.map +0 -1
  85. package/dist/commands/pi-adapter.d.ts +0 -1
  86. package/dist/commands/pi-adapter.js +0 -6
  87. package/dist/commands/pi-adapter.js.map +0 -1
  88. package/dist/commands/run.d.ts +0 -1
  89. package/dist/commands/run.js +0 -292
  90. package/dist/commands/run.js.map +0 -1
  91. package/dist/commands/runs.d.ts +0 -1
  92. package/dist/commands/runs.js +0 -50
  93. package/dist/commands/runs.js.map +0 -1
  94. package/dist/commands/task.d.ts +0 -1
  95. package/dist/commands/task.js +0 -74
  96. package/dist/commands/task.js.map +0 -1
  97. package/dist/commands/worktree.d.ts +0 -1
  98. package/dist/commands/worktree.js +0 -162
  99. package/dist/commands/worktree.js.map +0 -1
  100. package/dist/config.d.ts +0 -31
  101. package/dist/config.js +0 -261
  102. package/dist/config.js.map +0 -1
  103. package/dist/dashboard/app.d.ts +0 -12
  104. package/dist/dashboard/app.js +0 -23
  105. package/dist/dashboard/app.js.map +0 -1
  106. package/dist/dashboard/routes/api.d.ts +0 -3
  107. package/dist/dashboard/routes/api.js +0 -186
  108. package/dist/dashboard/routes/api.js.map +0 -1
  109. package/dist/dashboard/routes/pages.d.ts +0 -2
  110. package/dist/dashboard/routes/pages.js +0 -16
  111. package/dist/dashboard/routes/pages.js.map +0 -1
  112. package/dist/dashboard/views/alpine-vendor.d.ts +0 -1
  113. package/dist/dashboard/views/alpine-vendor.js +0 -10
  114. package/dist/dashboard/views/alpine-vendor.js.map +0 -1
  115. package/dist/dashboard/views/shell.d.ts +0 -1
  116. package/dist/dashboard/views/shell.js +0 -1062
  117. package/dist/dashboard/views/shell.js.map +0 -1
  118. package/dist/events/decode.d.ts +0 -2
  119. package/dist/events/decode.js +0 -45
  120. package/dist/events/decode.js.map +0 -1
  121. package/dist/events/encode.d.ts +0 -2
  122. package/dist/events/encode.js +0 -33
  123. package/dist/events/encode.js.map +0 -1
  124. package/dist/events/guards.d.ts +0 -5
  125. package/dist/events/guards.js +0 -42
  126. package/dist/events/guards.js.map +0 -1
  127. package/dist/events/types.d.ts +0 -27
  128. package/dist/events/types.js +0 -2
  129. package/dist/events/types.js.map +0 -1
  130. package/dist/harness/artifacts.d.ts +0 -50
  131. package/dist/harness/artifacts.js +0 -333
  132. package/dist/harness/artifacts.js.map +0 -1
  133. package/dist/harness/config-helpers.d.ts +0 -35
  134. package/dist/harness/config-helpers.js +0 -409
  135. package/dist/harness/config-helpers.js.map +0 -1
  136. package/dist/harness/coordination.d.ts +0 -1
  137. package/dist/harness/coordination.js +0 -127
  138. package/dist/harness/coordination.js.map +0 -1
  139. package/dist/harness/display.d.ts +0 -21
  140. package/dist/harness/display.js +0 -176
  141. package/dist/harness/display.js.map +0 -1
  142. package/dist/harness/emit.d.ts +0 -15
  143. package/dist/harness/emit.js +0 -240
  144. package/dist/harness/emit.js.map +0 -1
  145. package/dist/harness/index.d.ts +0 -20
  146. package/dist/harness/index.js +0 -311
  147. package/dist/harness/index.js.map +0 -1
  148. package/dist/harness/iteration.d.ts +0 -16
  149. package/dist/harness/iteration.js +0 -131
  150. package/dist/harness/iteration.js.map +0 -1
  151. package/dist/harness/journal-format.d.ts +0 -25
  152. package/dist/harness/journal-format.js +0 -153
  153. package/dist/harness/journal-format.js.map +0 -1
  154. package/dist/harness/journal.d.ts +0 -31
  155. package/dist/harness/journal.js +0 -178
  156. package/dist/harness/journal.js.map +0 -1
  157. package/dist/harness/metareview.d.ts +0 -4
  158. package/dist/harness/metareview.js +0 -48
  159. package/dist/harness/metareview.js.map +0 -1
  160. package/dist/harness/metrics.d.ts +0 -12
  161. package/dist/harness/metrics.js +0 -180
  162. package/dist/harness/metrics.js.map +0 -1
  163. package/dist/harness/parallel.d.ts +0 -37
  164. package/dist/harness/parallel.js +0 -237
  165. package/dist/harness/parallel.js.map +0 -1
  166. package/dist/harness/prompt.d.ts +0 -46
  167. package/dist/harness/prompt.js +0 -403
  168. package/dist/harness/prompt.js.map +0 -1
  169. package/dist/harness/scratchpad.d.ts +0 -2
  170. package/dist/harness/scratchpad.js +0 -67
  171. package/dist/harness/scratchpad.js.map +0 -1
  172. package/dist/harness/stop.d.ts +0 -5
  173. package/dist/harness/stop.js +0 -70
  174. package/dist/harness/stop.js.map +0 -1
  175. package/dist/harness/tools.d.ts +0 -3
  176. package/dist/harness/tools.js +0 -65
  177. package/dist/harness/tools.js.map +0 -1
  178. package/dist/harness/types.d.ts +0 -110
  179. package/dist/harness/types.js +0 -2
  180. package/dist/harness/types.js.map +0 -1
  181. package/dist/harness/wave/finalize-wave.d.ts +0 -9
  182. package/dist/harness/wave/finalize-wave.js +0 -87
  183. package/dist/harness/wave/finalize-wave.js.map +0 -1
  184. package/dist/harness/wave/launch-branches.d.ts +0 -6
  185. package/dist/harness/wave/launch-branches.js +0 -314
  186. package/dist/harness/wave/launch-branches.js.map +0 -1
  187. package/dist/harness/wave/parse-objectives.d.ts +0 -3
  188. package/dist/harness/wave/parse-objectives.js +0 -32
  189. package/dist/harness/wave/parse-objectives.js.map +0 -1
  190. package/dist/harness/wave/types.d.ts +0 -43
  191. package/dist/harness/wave/types.js +0 -2
  192. package/dist/harness/wave/types.js.map +0 -1
  193. package/dist/harness/wave.d.ts +0 -6
  194. package/dist/harness/wave.js +0 -159
  195. package/dist/harness/wave.js.map +0 -1
  196. package/dist/isolation/index.d.ts +0 -4
  197. package/dist/isolation/index.js +0 -3
  198. package/dist/isolation/index.js.map +0 -1
  199. package/dist/isolation/resolve.d.ts +0 -39
  200. package/dist/isolation/resolve.js +0 -118
  201. package/dist/isolation/resolve.js.map +0 -1
  202. package/dist/isolation/run-scope.d.ts +0 -21
  203. package/dist/isolation/run-scope.js +0 -50
  204. package/dist/isolation/run-scope.js.map +0 -1
  205. package/dist/json.d.ts +0 -8
  206. package/dist/json.js +0 -82
  207. package/dist/json.js.map +0 -1
  208. package/dist/loops/health.d.ts +0 -17
  209. package/dist/loops/health.js +0 -152
  210. package/dist/loops/health.js.map +0 -1
  211. package/dist/loops/list.d.ts +0 -6
  212. package/dist/loops/list.js +0 -21
  213. package/dist/loops/list.js.map +0 -1
  214. package/dist/loops/policy.d.ts +0 -6
  215. package/dist/loops/policy.js +0 -41
  216. package/dist/loops/policy.js.map +0 -1
  217. package/dist/loops/render.d.ts +0 -19
  218. package/dist/loops/render.js +0 -100
  219. package/dist/loops/render.js.map +0 -1
  220. package/dist/loops/show.d.ts +0 -8
  221. package/dist/loops/show.js +0 -31
  222. package/dist/loops/show.js.map +0 -1
  223. package/dist/loops/watch.d.ts +0 -14
  224. package/dist/loops/watch.js +0 -143
  225. package/dist/loops/watch.js.map +0 -1
  226. package/dist/main.d.ts +0 -1
  227. package/dist/main.js +0 -148
  228. package/dist/main.js.map +0 -1
  229. package/dist/markdown.d.ts +0 -10
  230. package/dist/markdown.js +0 -66
  231. package/dist/markdown.js.map +0 -1
  232. package/dist/memory-render.d.ts +0 -6
  233. package/dist/memory-render.js +0 -81
  234. package/dist/memory-render.js.map +0 -1
  235. package/dist/memory.d.ts +0 -22
  236. package/dist/memory.js +0 -318
  237. package/dist/memory.js.map +0 -1
  238. package/dist/pi-adapter.d.ts +0 -1
  239. package/dist/pi-adapter.js +0 -220
  240. package/dist/pi-adapter.js.map +0 -1
  241. package/dist/profiles.d.ts +0 -12
  242. package/dist/profiles.js +0 -71
  243. package/dist/profiles.js.map +0 -1
  244. package/dist/registry/derive.d.ts +0 -8
  245. package/dist/registry/derive.js +0 -88
  246. package/dist/registry/derive.js.map +0 -1
  247. package/dist/registry/discover.d.ts +0 -20
  248. package/dist/registry/discover.js +0 -98
  249. package/dist/registry/discover.js.map +0 -1
  250. package/dist/registry/harness.d.ts +0 -7
  251. package/dist/registry/harness.js +0 -63
  252. package/dist/registry/harness.js.map +0 -1
  253. package/dist/registry/index.d.ts +0 -6
  254. package/dist/registry/index.js +0 -6
  255. package/dist/registry/index.js.map +0 -1
  256. package/dist/registry/read.d.ts +0 -11
  257. package/dist/registry/read.js +0 -50
  258. package/dist/registry/read.js.map +0 -1
  259. package/dist/registry/rebuild.d.ts +0 -5
  260. package/dist/registry/rebuild.js +0 -22
  261. package/dist/registry/rebuild.js.map +0 -1
  262. package/dist/registry/types.d.ts +0 -28
  263. package/dist/registry/types.js +0 -2
  264. package/dist/registry/types.js.map +0 -1
  265. package/dist/registry/update.d.ts +0 -2
  266. package/dist/registry/update.js +0 -7
  267. package/dist/registry/update.js.map +0 -1
  268. package/dist/tasks-render.d.ts +0 -2
  269. package/dist/tasks-render.js +0 -44
  270. package/dist/tasks-render.js.map +0 -1
  271. package/dist/tasks.d.ts +0 -24
  272. package/dist/tasks.js +0 -184
  273. package/dist/tasks.js.map +0 -1
  274. package/dist/topology.d.ts +0 -31
  275. package/dist/topology.js +0 -309
  276. package/dist/topology.js.map +0 -1
  277. package/dist/usage.d.ts +0 -9
  278. package/dist/usage.js +0 -160
  279. package/dist/usage.js.map +0 -1
  280. package/dist/utils.d.ts +0 -21
  281. package/dist/utils.js +0 -349
  282. package/dist/utils.js.map +0 -1
  283. package/dist/worktree/clean.d.ts +0 -12
  284. package/dist/worktree/clean.js +0 -113
  285. package/dist/worktree/clean.js.map +0 -1
  286. package/dist/worktree/create.d.ts +0 -14
  287. package/dist/worktree/create.js +0 -71
  288. package/dist/worktree/create.js.map +0 -1
  289. package/dist/worktree/index.d.ts +0 -10
  290. package/dist/worktree/index.js +0 -6
  291. package/dist/worktree/index.js.map +0 -1
  292. package/dist/worktree/list.d.ts +0 -9
  293. package/dist/worktree/list.js +0 -24
  294. package/dist/worktree/list.js.map +0 -1
  295. package/dist/worktree/merge.d.ts +0 -11
  296. package/dist/worktree/merge.js +0 -129
  297. package/dist/worktree/merge.js.map +0 -1
  298. package/dist/worktree/meta.d.ts +0 -17
  299. package/dist/worktree/meta.js +0 -34
  300. package/dist/worktree/meta.js.map +0 -1
  301. package/presets/autocode/README.md +0 -81
  302. package/presets/autocode/autoloops.toml +0 -30
  303. package/presets/autocode/harness.md +0 -26
  304. package/presets/autocode/miniloops.toml +0 -22
  305. package/presets/autocode/roles/build.md +0 -34
  306. package/presets/autocode/roles/critic.md +0 -40
  307. package/presets/autocode/roles/finalizer.md +0 -43
  308. package/presets/autocode/roles/planner.md +0 -40
  309. package/presets/autocode/topology.toml +0 -32
  310. package/presets/autodebug/README.md +0 -50
  311. package/presets/autodebug/autoloops.toml +0 -18
  312. package/presets/autodebug/harness.md +0 -31
  313. package/presets/autodebug/roles/fixer.md +0 -58
  314. package/presets/autodebug/roles/investigator.md +0 -52
  315. package/presets/autodebug/roles/strategist.md +0 -45
  316. package/presets/autodebug/roles/verifier.md +0 -66
  317. package/presets/autodebug/topology.toml +0 -34
  318. package/presets/autodoc/README.md +0 -42
  319. package/presets/autodoc/autoloops.toml +0 -21
  320. package/presets/autodoc/harness.md +0 -19
  321. package/presets/autodoc/miniloops.toml +0 -21
  322. package/presets/autodoc/roles/auditor.md +0 -39
  323. package/presets/autodoc/roles/checker.md +0 -43
  324. package/presets/autodoc/roles/publisher.md +0 -51
  325. package/presets/autodoc/roles/writer.md +0 -37
  326. package/presets/autodoc/topology.toml +0 -31
  327. package/presets/autofix/README.md +0 -56
  328. package/presets/autofix/autoloops.toml +0 -24
  329. package/presets/autofix/harness.md +0 -25
  330. package/presets/autofix/miniloops.toml +0 -21
  331. package/presets/autofix/roles/closer.md +0 -48
  332. package/presets/autofix/roles/diagnoser.md +0 -43
  333. package/presets/autofix/roles/fixer.md +0 -28
  334. package/presets/autofix/roles/verifier.md +0 -31
  335. package/presets/autofix/topology.toml +0 -33
  336. package/presets/autoideas/README.md +0 -73
  337. package/presets/autoideas/autoloops.toml +0 -18
  338. package/presets/autoideas/harness.md +0 -31
  339. package/presets/autoideas/miniloops.toml +0 -18
  340. package/presets/autoideas/roles/analyst.md +0 -32
  341. package/presets/autoideas/roles/reviewer.md +0 -36
  342. package/presets/autoideas/roles/scanner.md +0 -26
  343. package/presets/autoideas/roles/synthesizer.md +0 -61
  344. package/presets/autoideas/topology.toml +0 -32
  345. package/presets/automerge/README.md +0 -3
  346. package/presets/automerge/autoloops.toml +0 -12
  347. package/presets/automerge/harness.md +0 -10
  348. package/presets/automerge/miniloops.toml +0 -12
  349. package/presets/automerge/roles/merge.md +0 -10
  350. package/presets/automerge/topology.toml +0 -10
  351. package/presets/autoperf/README.md +0 -56
  352. package/presets/autoperf/autoloops.toml +0 -21
  353. package/presets/autoperf/harness.md +0 -21
  354. package/presets/autoperf/miniloops.toml +0 -21
  355. package/presets/autoperf/roles/judge.md +0 -38
  356. package/presets/autoperf/roles/measurer.md +0 -36
  357. package/presets/autoperf/roles/optimizer.md +0 -35
  358. package/presets/autoperf/roles/profiler.md +0 -38
  359. package/presets/autoperf/topology.toml +0 -32
  360. package/presets/autopr/README.md +0 -99
  361. package/presets/autopr/autoloops.toml +0 -22
  362. package/presets/autopr/harness.md +0 -27
  363. package/presets/autopr/miniloops.toml +0 -22
  364. package/presets/autopr/roles/collector.md +0 -55
  365. package/presets/autopr/roles/drafter.md +0 -38
  366. package/presets/autopr/roles/publisher.md +0 -28
  367. package/presets/autopr/roles/validator.md +0 -31
  368. package/presets/autopr/topology.toml +0 -32
  369. package/presets/autopreset/README.md +0 -35
  370. package/presets/autopreset/autoloops.toml +0 -18
  371. package/presets/autopreset/harness.md +0 -38
  372. package/presets/autopreset/roles/designer.md +0 -33
  373. package/presets/autopreset/roles/finalizer.md +0 -23
  374. package/presets/autopreset/roles/generator.md +0 -34
  375. package/presets/autopreset/roles/validator.md +0 -31
  376. package/presets/autopreset/topology.toml +0 -32
  377. package/presets/autoqa/README.md +0 -105
  378. package/presets/autoqa/autoloops.toml +0 -21
  379. package/presets/autoqa/harness.md +0 -52
  380. package/presets/autoqa/miniloops.toml +0 -21
  381. package/presets/autoqa/roles/executor.md +0 -96
  382. package/presets/autoqa/roles/inspector.md +0 -100
  383. package/presets/autoqa/roles/planner.md +0 -87
  384. package/presets/autoqa/roles/reporter.md +0 -117
  385. package/presets/autoqa/topology.toml +0 -31
  386. package/presets/autoresearch/README.md +0 -63
  387. package/presets/autoresearch/autoloops.toml +0 -18
  388. package/presets/autoresearch/harness.md +0 -28
  389. package/presets/autoresearch/miniloops.toml +0 -18
  390. package/presets/autoresearch/roles/benchmarker.md +0 -34
  391. package/presets/autoresearch/roles/evaluator.md +0 -33
  392. package/presets/autoresearch/roles/implementer.md +0 -26
  393. package/presets/autoresearch/roles/strategist.md +0 -43
  394. package/presets/autoresearch/topology.toml +0 -31
  395. package/presets/autoreview/README.md +0 -51
  396. package/presets/autoreview/autoloops.toml +0 -21
  397. package/presets/autoreview/harness.md +0 -20
  398. package/presets/autoreview/miniloops.toml +0 -21
  399. package/presets/autoreview/roles/checker.md +0 -36
  400. package/presets/autoreview/roles/reader.md +0 -33
  401. package/presets/autoreview/roles/suggester.md +0 -26
  402. package/presets/autoreview/roles/summarizer.md +0 -57
  403. package/presets/autoreview/topology.toml +0 -31
  404. package/presets/autosec/README.md +0 -51
  405. package/presets/autosec/autoloops.toml +0 -21
  406. package/presets/autosec/harness.md +0 -20
  407. package/presets/autosec/miniloops.toml +0 -21
  408. package/presets/autosec/roles/analyst.md +0 -38
  409. package/presets/autosec/roles/hardener.md +0 -36
  410. package/presets/autosec/roles/reporter.md +0 -63
  411. package/presets/autosec/roles/scanner.md +0 -38
  412. package/presets/autosec/topology.toml +0 -31
  413. package/presets/autosimplify/README.md +0 -83
  414. package/presets/autosimplify/autoloops.toml +0 -26
  415. package/presets/autosimplify/harness.md +0 -25
  416. package/presets/autosimplify/miniloops.toml +0 -22
  417. package/presets/autosimplify/roles/reviewer.md +0 -38
  418. package/presets/autosimplify/roles/scoper.md +0 -42
  419. package/presets/autosimplify/roles/simplifier.md +0 -51
  420. package/presets/autosimplify/roles/verifier.md +0 -40
  421. package/presets/autosimplify/topology.toml +0 -32
  422. package/presets/autospec/README.md +0 -84
  423. package/presets/autospec/autoloops.toml +0 -21
  424. package/presets/autospec/harness.md +0 -23
  425. package/presets/autospec/miniloops.toml +0 -21
  426. package/presets/autospec/roles/clarifier.md +0 -39
  427. package/presets/autospec/roles/critic.md +0 -41
  428. package/presets/autospec/roles/designer.md +0 -37
  429. package/presets/autospec/roles/planner.md +0 -38
  430. package/presets/autospec/roles/researcher.md +0 -33
  431. package/presets/autospec/topology.toml +0 -38
  432. package/presets/autotest/README.md +0 -55
  433. package/presets/autotest/autoloops.toml +0 -21
  434. package/presets/autotest/harness.md +0 -21
  435. package/presets/autotest/miniloops.toml +0 -21
  436. package/presets/autotest/roles/assessor.md +0 -57
  437. package/presets/autotest/roles/runner.md +0 -31
  438. package/presets/autotest/roles/surveyor.md +0 -39
  439. package/presets/autotest/roles/writer.md +0 -37
  440. package/presets/autotest/topology.toml +0 -32
@@ -1,32 +0,0 @@
1
- import { lineSep } from "../../utils.js";
2
- export function parseParallelObjectives(payload, maxBranches) {
3
- const lines = payload
4
- .split(lineSep())
5
- .map((l) => l.trim())
6
- .filter((l) => l !== "");
7
- const objectives = [];
8
- let invalid = false;
9
- for (const line of lines) {
10
- const obj = parseObjectiveLine(line);
11
- if (obj === "")
12
- invalid = true;
13
- else
14
- objectives.push(obj);
15
- }
16
- if (invalid)
17
- return { ok: false, objectives: [], reason: "invalid_branch_list" };
18
- if (objectives.length === 0)
19
- return { ok: false, objectives: [], reason: "empty_branch_list" };
20
- if (objectives.length > maxBranches)
21
- return { ok: false, objectives: [], reason: "too_many_branches" };
22
- return { ok: true, objectives, reason: "" };
23
- }
24
- export function parseObjectiveLine(line) {
25
- if (line.startsWith("- ") || line.startsWith("* "))
26
- return line.slice(2).trim();
27
- const dotIdx = line.indexOf(". ");
28
- if (dotIdx > 0 && /^\d+$/.test(line.slice(0, dotIdx)))
29
- return line.slice(dotIdx + 2).trim();
30
- return "";
31
- }
32
- //# sourceMappingURL=parse-objectives.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-objectives.js","sourceRoot":"","sources":["../../../src/harness/wave/parse-objectives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGzC,MAAM,UAAU,uBAAuB,CACrC,OAAe,EACf,WAAmB;IAEnB,MAAM,KAAK,GAAG,OAAO;SAClB,KAAK,CAAC,OAAO,EAAE,CAAC;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,EAAE;YAAE,OAAO,GAAG,IAAI,CAAC;;YAC1B,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;IACtE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QACzB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACpE,IAAI,UAAU,CAAC,MAAM,GAAG,WAAW;QACjC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACpE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -1,43 +0,0 @@
1
- import type { RunSummary } from "../types.js";
2
- export interface WaveResult {
3
- reason: string;
4
- waveId: string;
5
- elapsedMs: number;
6
- }
7
- export interface BranchSpec {
8
- branchId: string;
9
- waveId: string;
10
- objective: string;
11
- emittedTopic: string;
12
- routingEvent: string;
13
- allowedRoles: string[];
14
- allowedEvents: string[];
15
- prompt: string;
16
- branchDir: string;
17
- launchFile: string;
18
- summaryFile: string;
19
- stdoutFile: string;
20
- stderrFile: string;
21
- statusFile: string;
22
- pidFile: string;
23
- supervisorFile: string;
24
- launchMs: number;
25
- }
26
- export interface BranchResult {
27
- branchId: string;
28
- objective: string;
29
- stopReason: string;
30
- output: string;
31
- routingEvent: string;
32
- allowedRoles: string[];
33
- allowedEvents: string[];
34
- branchDir: string;
35
- elapsedMs: number;
36
- finishedAtMs: number;
37
- }
38
- export interface ParseResult {
39
- ok: boolean;
40
- objectives: string[];
41
- reason: string;
42
- }
43
- export type IterateFn = (loop: any, iteration: number) => RunSummary;
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/harness/wave/types.ts"],"names":[],"mappings":""}
@@ -1,6 +0,0 @@
1
- import type { IterationContext } from "./prompt.js";
2
- import type { LoopContext } from "./types.js";
3
- import type { WaveResult } from "./wave/types.js";
4
- export { continueAfterParallelJoin, stopAfterParallelWave, } from "./wave/finalize-wave.js";
5
- export type { WaveResult } from "./wave/types.js";
6
- export declare function executeParallelWave(loop: LoopContext, iter: IterationContext, emittedTopic: string, emittedPayload: string): WaveResult;
@@ -1,159 +0,0 @@
1
- import { existsSync, mkdirSync, unlinkSync, writeFileSync } from "node:fs";
2
- import { join } from "node:path";
3
- import { jsonField } from "../json.js";
4
- import * as md from "../markdown.js";
5
- import { generateCompactId, joinCsv } from "../utils.js";
6
- import { appendEvent, readIfExists } from "./journal.js";
7
- import { finalizeParallelWave } from "./wave/finalize-wave.js";
8
- import { joinParallelBranches, launchParallelBranches, prepareParallelBranches, } from "./wave/launch-branches.js";
9
- import { parseParallelObjectives } from "./wave/parse-objectives.js";
10
- export { continueAfterParallelJoin, stopAfterParallelWave, } from "./wave/finalize-wave.js";
11
- export function executeParallelWave(loop, iter, emittedTopic, emittedPayload) {
12
- const markerPath = activeWaveMarkerPath(loop);
13
- if (existsSync(markerPath)) {
14
- return rejectActiveWave(loop, iter, emittedTopic, markerPath);
15
- }
16
- const parsed = parseParallelObjectives(emittedPayload, loop.parallel.maxBranches);
17
- if (!parsed.ok) {
18
- return rejectPayload(loop, iter, emittedTopic, parsed.reason);
19
- }
20
- return executeWaveWithObjectives(loop, iter, emittedTopic, parsed.objectives, markerPath);
21
- }
22
- function rejectActiveWave(loop, iter, topic, markerPath) {
23
- const activeWaveId = readIfExists(markerPath);
24
- appendWaveInvalid(loop, iter, topic, "active_wave_exists", activeWaveId);
25
- return {
26
- reason: "parallel_wave_invalid",
27
- waveId: activeWaveId,
28
- elapsedMs: 0,
29
- };
30
- }
31
- function rejectPayload(loop, iter, topic, reason) {
32
- appendWaveInvalid(loop, iter, topic, reason, "");
33
- return { reason: "parallel_wave_invalid", waveId: "", elapsedMs: 0 };
34
- }
35
- function executeWaveWithObjectives(loop, iter, emittedTopic, objectives, markerPath) {
36
- const waveId = generateCompactId("wave");
37
- const waveDir = join(loop.paths.stateDir, "waves", waveId);
38
- const branchesDir = join(waveDir, "branches");
39
- const openingRoles = iter.allowedRoles;
40
- const openingEvents = iter.allowedEvents;
41
- const waveStartMs = Date.now();
42
- mkdirSync(branchesDir, { recursive: true });
43
- writeFileSync(markerPath, waveId);
44
- writeWaveSpec(waveDir, waveId, emittedTopic, iter, objectives);
45
- appendWaveStart(loop, iter, waveId, emittedTopic, objectives);
46
- const specs = prepareParallelBranches(loop, iter, waveId, waveDir, emittedTopic, objectives);
47
- const launched = launchParallelBranches(loop, specs);
48
- const results = joinParallelBranches(loop, iter, waveId, launched);
49
- const ordered = sortByBranchId(results);
50
- const totalElapsed = Date.now() - waveStartMs;
51
- writeWaveJoin(waveDir, waveId, emittedTopic, objectives, ordered, iter.recentEvent, openingRoles, openingEvents, totalElapsed);
52
- appendWaveJoinStart(loop, iter, waveId, emittedTopic, objectives, ordered, totalElapsed);
53
- try {
54
- unlinkSync(markerPath);
55
- }
56
- catch {
57
- /* ok */
58
- }
59
- const finalized = finalizeParallelWave(loop, iter, waveId, ordered);
60
- return { ...finalized, elapsedMs: totalElapsed };
61
- }
62
- function sortByBranchId(results) {
63
- return [...results].sort((a, b) => branchIndex(a.branchId) - branchIndex(b.branchId));
64
- }
65
- function branchIndex(id) {
66
- return parseInt(id.replace("branch-", ""), 10) || 0;
67
- }
68
- function writeWaveSpec(waveDir, waveId, emittedTopic, iter, objectives) {
69
- const content = md.heading(1, `Parallel Wave ${waveId}`) +
70
- "\n\n" +
71
- "Trigger: " +
72
- md.code(emittedTopic) +
73
- "\n" +
74
- "Opening recent event: " +
75
- md.code(iter.recentEvent) +
76
- "\n" +
77
- "Opening roles: " +
78
- iter.allowedRoles.join(", ") +
79
- "\n" +
80
- "Opening events: " +
81
- iter.allowedEvents.join(", ") +
82
- "\n\n" +
83
- md.heading(2, "Branch Objectives") +
84
- "\n" +
85
- md.bulletList(objectives);
86
- writeFileSync(join(waveDir, "spec.md"), content);
87
- }
88
- function writeWaveJoin(waveDir, waveId, emittedTopic, objectives, results, recentEvent, openingRoles, openingEvents, totalElapsed) {
89
- const items = results.map((r) => `${md.code(r.branchId)}: ${r.stopReason} (${r.elapsedMs}ms)`);
90
- const content = md.heading(1, `Parallel Join ${waveId}`) +
91
- "\n\n" +
92
- "Trigger: " +
93
- md.code(emittedTopic) +
94
- "\n" +
95
- "Opening recent event: " +
96
- md.code(recentEvent) +
97
- "\n" +
98
- "Opening roles: " +
99
- openingRoles.join(", ") +
100
- "\n" +
101
- "Opening events: " +
102
- openingEvents.join(", ") +
103
- "\n" +
104
- "Total wave elapsed: " +
105
- md.code(`${totalElapsed}ms`) +
106
- "\n\n" +
107
- md.heading(2, "Objectives") +
108
- "\n" +
109
- md.bulletList(objectives) +
110
- "\n\n" +
111
- md.heading(2, "Branch Results") +
112
- "\n" +
113
- md.bulletList(items);
114
- writeFileSync(join(waveDir, "join.md"), content);
115
- }
116
- function activeWaveMarkerPath(loop) {
117
- const wavesDir = join(loop.paths.stateDir, "waves");
118
- mkdirSync(wavesDir, { recursive: true });
119
- return join(wavesDir, "active");
120
- }
121
- function appendWaveInvalid(loop, iter, topic, reason, activeWaveId) {
122
- appendEvent(loop.paths.journalFile, loop.runtime.runId, String(iter.iteration), "wave.invalid", jsonField("trigger_topic", topic) +
123
- ", " +
124
- jsonField("reason", reason) +
125
- ", " +
126
- jsonField("active_wave_id", activeWaveId) +
127
- ", " +
128
- jsonField("opening_recent_event", iter.recentEvent));
129
- }
130
- function appendWaveStart(loop, iter, waveId, emittedTopic, objectives) {
131
- appendEvent(loop.paths.journalFile, loop.runtime.runId, String(iter.iteration), "wave.start", jsonField("wave_id", waveId) +
132
- ", " +
133
- jsonField("trigger_topic", emittedTopic) +
134
- ", " +
135
- jsonField("branch_count", String(objectives.length)) +
136
- ", " +
137
- jsonField("opening_recent_event", iter.recentEvent) +
138
- ", " +
139
- jsonField("opening_roles", joinCsv(iter.allowedRoles)) +
140
- ", " +
141
- jsonField("opening_events", joinCsv(iter.allowedEvents)) +
142
- ", " +
143
- jsonField("objectives", joinCsv(objectives)));
144
- }
145
- function appendWaveJoinStart(loop, iter, waveId, emittedTopic, objectives, results, totalElapsed) {
146
- const outcomes = results
147
- .map((r) => `${r.branchId}:${r.stopReason}`)
148
- .join(",");
149
- appendEvent(loop.paths.journalFile, loop.runtime.runId, String(iter.iteration), "wave.join.start", jsonField("wave_id", waveId) +
150
- ", " +
151
- jsonField("trigger_topic", emittedTopic) +
152
- ", " +
153
- jsonField("branch_count", String(objectives.length)) +
154
- ", " +
155
- jsonField("elapsed_ms", String(totalElapsed)) +
156
- ", " +
157
- jsonField("branch_outcomes", outcomes));
158
- }
159
- //# sourceMappingURL=wave.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wave.js","sourceRoot":"","sources":["../../src/harness/wave.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export type { IsolationMode, IsolationRequest, IsolationResult, } from "./resolve.js";
2
- export { isCodeModifyingRun, resolveIsolationMode } from "./resolve.js";
3
- export type { CleanRunScopedOpts } from "./run-scope.js";
4
- export { cleanRunScopedDirs, createRunScopedDir, runScopedPath, } from "./run-scope.js";
@@ -1,3 +0,0 @@
1
- export { isCodeModifyingRun, resolveIsolationMode } from "./resolve.js";
2
- export { cleanRunScopedDirs, createRunScopedDir, runScopedPath, } from "./run-scope.js";
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/isolation/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAExE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,GACd,MAAM,gBAAgB,CAAC"}
@@ -1,39 +0,0 @@
1
- import type { RunRecord } from "../registry/types.js";
2
- export type IsolationMode = "shared" | "run-scoped" | "worktree";
3
- export interface IsolationRequest {
4
- worktree?: boolean;
5
- noWorktree?: boolean;
6
- configEnabled?: boolean;
7
- currentCategory?: PresetCategory;
8
- }
9
- export interface IsolationResult {
10
- mode: IsolationMode;
11
- warning?: string;
12
- }
13
- /**
14
- * Decide the isolation mode for a new run based on CLI flags,
15
- * config, and the state of currently active runs.
16
- *
17
- * Priority:
18
- * 1. Explicit --worktree flag → "worktree"
19
- * 2. Explicit --no-worktree flag → "shared"
20
- * 3. Config isolation.enabled → "worktree"
21
- * 4. Other active runs exist with code roles → "run-scoped" + warning
22
- * 5. Other active runs exist (non-code) → "run-scoped"
23
- * 6. Solo run → "run-scoped" (working files isolate per run by default)
24
- */
25
- export declare function resolveIsolationMode(request: IsolationRequest, otherActiveRuns: RunRecord[]): IsolationResult;
26
- export type PresetCategory = "code" | "planning" | "unknown";
27
- /**
28
- * Determine preset category from harness.md metadata or name heuristic.
29
- * Reads `<!-- category: ... -->` from harness.md if present.
30
- * Falls back to name-based heuristic.
31
- */
32
- export declare function presetCategory(presetName: string, projectDir: string): PresetCategory;
33
- /**
34
- * Heuristic: a run is "code-modifying" if its preset or objective
35
- * suggests it writes code (builder, autocode, fix, etc.).
36
- * Accepts an optional category override from preset metadata.
37
- * This is intentionally conservative — returns false when uncertain.
38
- */
39
- export declare function isCodeModifyingRun(record: RunRecord, categoryOverride?: PresetCategory): boolean;
@@ -1,118 +0,0 @@
1
- import { existsSync, readFileSync } from "node:fs";
2
- import { join } from "node:path";
3
- import { resolvePresetDir } from "../chains/load.js";
4
- /**
5
- * Decide the isolation mode for a new run based on CLI flags,
6
- * config, and the state of currently active runs.
7
- *
8
- * Priority:
9
- * 1. Explicit --worktree flag → "worktree"
10
- * 2. Explicit --no-worktree flag → "shared"
11
- * 3. Config isolation.enabled → "worktree"
12
- * 4. Other active runs exist with code roles → "run-scoped" + warning
13
- * 5. Other active runs exist (non-code) → "run-scoped"
14
- * 6. Solo run → "run-scoped" (working files isolate per run by default)
15
- */
16
- export function resolveIsolationMode(request, otherActiveRuns) {
17
- if (request.worktree) {
18
- return { mode: "worktree" };
19
- }
20
- if (request.noWorktree) {
21
- return { mode: "shared" };
22
- }
23
- if (request.configEnabled) {
24
- return { mode: "worktree" };
25
- }
26
- if (otherActiveRuns.length === 0) {
27
- return { mode: "run-scoped" };
28
- }
29
- const hasCodeRuns = otherActiveRuns.some((r) => isCodeModifyingRun(r));
30
- // Planning/read-only presets are safe to run concurrently — no warning needed
31
- if (request.currentCategory === "planning") {
32
- return { mode: "run-scoped" };
33
- }
34
- // Code or unknown presets warn when concurrent code-modifying runs exist
35
- if (hasCodeRuns) {
36
- const codeRuns = otherActiveRuns.filter((r) => isCodeModifyingRun(r));
37
- const runList = codeRuns.map((r) => `${r.run_id} (${r.preset})`).join(", ");
38
- const warning = [
39
- `Active code-modifying run detected: ${runList}`,
40
- " Runs sharing the same checkout may produce code conflicts.",
41
- ' Consider: autoloop run <preset> --worktree "your prompt"',
42
- ' Or suppress: autoloop run <preset> --no-worktree "your prompt"',
43
- ].join("\n");
44
- return {
45
- mode: "run-scoped",
46
- warning,
47
- };
48
- }
49
- return { mode: "run-scoped" };
50
- }
51
- /**
52
- * Determine preset category from harness.md metadata or name heuristic.
53
- * Reads `<!-- category: ... -->` from harness.md if present.
54
- * Falls back to name-based heuristic.
55
- */
56
- export function presetCategory(presetName, projectDir) {
57
- const presetDir = resolvePresetDir(presetName, projectDir);
58
- const harnessPath = join(presetDir, "harness.md");
59
- if (existsSync(harnessPath)) {
60
- const content = readFileSync(harnessPath, "utf-8");
61
- const match = content.match(/<!--\s*category:\s*([\w-]+)\s*-->/);
62
- if (match) {
63
- const cat = match[1].toLowerCase();
64
- if (cat === "code")
65
- return "code";
66
- if (cat === "planning")
67
- return "planning";
68
- }
69
- }
70
- // Name-based heuristic fallback
71
- const name = presetName.toLowerCase();
72
- const codePresets = [
73
- "autocode",
74
- "autofix",
75
- "autotest",
76
- "autosimplify",
77
- "autoperf",
78
- "autosec",
79
- ];
80
- if (codePresets.some((p) => name.includes(p)))
81
- return "code";
82
- const planningPresets = [
83
- "automerge",
84
- "autoideas",
85
- "autoresearch",
86
- "autodoc",
87
- "autoreview",
88
- "autoqa",
89
- "autospec",
90
- ];
91
- if (planningPresets.some((p) => name.includes(p)))
92
- return "planning";
93
- return "unknown";
94
- }
95
- /**
96
- * Heuristic: a run is "code-modifying" if its preset or objective
97
- * suggests it writes code (builder, autocode, fix, etc.).
98
- * Accepts an optional category override from preset metadata.
99
- * This is intentionally conservative — returns false when uncertain.
100
- */
101
- export function isCodeModifyingRun(record, categoryOverride) {
102
- if (categoryOverride === "code")
103
- return true;
104
- if (categoryOverride === "planning")
105
- return false;
106
- const preset = record.preset.toLowerCase();
107
- const objective = record.objective.toLowerCase();
108
- const codeIndicators = [
109
- "autocode",
110
- "builder",
111
- "fix",
112
- "implement",
113
- "refactor",
114
- "code",
115
- ];
116
- return codeIndicators.some((ind) => preset.includes(ind) || objective.includes(ind));
117
- }
118
- //# sourceMappingURL=resolve.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/isolation/resolve.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Create a run-scoped state directory under `.autoloop/runs/<runId>/`.
3
- * Returns the absolute path to the created directory.
4
- */
5
- export declare function createRunScopedDir(baseStateDir: string, runId: string): string;
6
- /**
7
- * Compute the run-scoped path without creating it.
8
- */
9
- export declare function runScopedPath(baseStateDir: string, runId: string): string;
10
- export interface CleanRunScopedOpts {
11
- /** Skip directories for runs that are still active. */
12
- activeRunIds: Set<string>;
13
- /** Only remove directories older than this many days. 0 = no age filter. Default: 0. */
14
- maxAgeDays?: number;
15
- }
16
- /**
17
- * Clean up run-scoped directories for runs that have reached a terminal state.
18
- * Keeps directories for runs that are still active.
19
- * When maxAgeDays > 0, also keeps directories modified within the threshold.
20
- */
21
- export declare function cleanRunScopedDirs(baseStateDir: string, opts: CleanRunScopedOpts): string[];
@@ -1,50 +0,0 @@
1
- import { existsSync, mkdirSync, readdirSync, rmSync, statSync } from "node:fs";
2
- import { join } from "node:path";
3
- /**
4
- * Create a run-scoped state directory under `.autoloop/runs/<runId>/`.
5
- * Returns the absolute path to the created directory.
6
- */
7
- export function createRunScopedDir(baseStateDir, runId) {
8
- const dir = runScopedPath(baseStateDir, runId);
9
- mkdirSync(dir, { recursive: true });
10
- return dir;
11
- }
12
- /**
13
- * Compute the run-scoped path without creating it.
14
- */
15
- export function runScopedPath(baseStateDir, runId) {
16
- return join(baseStateDir, "runs", runId);
17
- }
18
- /**
19
- * Clean up run-scoped directories for runs that have reached a terminal state.
20
- * Keeps directories for runs that are still active.
21
- * When maxAgeDays > 0, also keeps directories modified within the threshold.
22
- */
23
- export function cleanRunScopedDirs(baseStateDir, opts) {
24
- const runsDir = join(baseStateDir, "runs");
25
- if (!existsSync(runsDir))
26
- return [];
27
- const { activeRunIds, maxAgeDays = 0 } = opts;
28
- const now = Date.now();
29
- const thresholdMs = maxAgeDays > 0 ? maxAgeDays * 86_400_000 : 0;
30
- const removed = [];
31
- for (const entry of readdirSync(runsDir)) {
32
- if (activeRunIds.has(entry))
33
- continue;
34
- const fullPath = join(runsDir, entry);
35
- if (thresholdMs > 0) {
36
- try {
37
- const mtime = statSync(fullPath).mtimeMs;
38
- if (now - mtime < thresholdMs)
39
- continue;
40
- }
41
- catch {
42
- continue;
43
- }
44
- }
45
- rmSync(fullPath, { recursive: true, force: true });
46
- removed.push(entry);
47
- }
48
- return removed;
49
- }
50
- //# sourceMappingURL=run-scope.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-scope.js","sourceRoot":"","sources":["../../src/isolation/run-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,YAAoB,EACpB,KAAa;IAEb,MAAM,GAAG,GAAG,aAAa,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC/C,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,YAAoB,EAAE,KAAa;IAC/D,OAAO,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC;AASD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,YAAoB,EACpB,IAAwB;IAExB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,EAAE,YAAY,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,WAAW,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEtC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;gBACzC,IAAI,GAAG,GAAG,KAAK,GAAG,WAAW;oBAAE,SAAS;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QAED,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/dist/json.d.ts DELETED
@@ -1,8 +0,0 @@
1
- export declare function jsonString(text: string): string;
2
- export declare function jsonBool(value: boolean): string;
3
- export declare function jsonField(key: string, value: string): string;
4
- export declare function jsonFieldRaw(key: string, rawValue: string): string;
5
- export declare function extractTopic(line: string): string;
6
- export declare function extractField(line: string, key: string): string;
7
- export declare function encodeJsonValue(text: string): string;
8
- export declare function decodeJsonValue(text: string): string;
package/dist/json.js DELETED
@@ -1,82 +0,0 @@
1
- import { decodeEvent } from "./events/decode.js";
2
- import { lineSep, replaceAll } from "./utils.js";
3
- export function jsonString(text) {
4
- return `"${encodeJsonValue(text)}"`;
5
- }
6
- export function jsonBool(value) {
7
- return value ? "true" : "false";
8
- }
9
- export function jsonField(key, value) {
10
- return `"${key}": ${jsonString(value)}`;
11
- }
12
- export function jsonFieldRaw(key, rawValue) {
13
- return `"${key}": ${rawValue}`;
14
- }
15
- export function extractTopic(line) {
16
- const decoded = decodeEvent(line);
17
- if (decoded)
18
- return String(decoded.topic);
19
- return extractField(line, "topic");
20
- }
21
- export function extractField(line, key) {
22
- const decoded = decodeEvent(line);
23
- if (decoded) {
24
- if (key === "run")
25
- return decoded.run;
26
- if (key === "iteration")
27
- return decoded.iteration ?? "";
28
- if (key === "topic")
29
- return String(decoded.topic);
30
- if (decoded.shape === "payload") {
31
- if (key === "payload")
32
- return decoded.payload;
33
- if (key === "source")
34
- return decoded.source ?? "";
35
- return "";
36
- }
37
- const value = decoded.fields[key];
38
- if (value !== undefined)
39
- return value;
40
- }
41
- const marker = `"${key}": `;
42
- return decodeJsonValue(firstQuotedValue(firstAfterMarker(line.split(marker))));
43
- }
44
- export function encodeJsonValue(text) {
45
- let escaped = replaceAll(text, "\\", "\\u005c");
46
- escaped = replaceAll(escaped, '"', "\\u0022");
47
- escaped = replaceAll(escaped, lineSep(), "\\u000a");
48
- escaped = replaceAll(escaped, "\r", "\\u000d");
49
- escaped = replaceAll(escaped, "\t", "\\u0009");
50
- return escapeRemainingControlChars(escaped);
51
- }
52
- function escapeRemainingControlChars(text) {
53
- // Replace control chars \x00-\x08, \x0b, \x0c, \x0e-\x1f
54
- return text.replace(
55
- // biome-ignore lint/suspicious/noControlCharactersInRegex: intentional control char stripping
56
- /[\x00-\x08\x0b\x0c\x0e-\x1f]/g, (ch) => `\\u${ch.charCodeAt(0).toString(16).padStart(4, "0")}`);
57
- }
58
- export function decodeJsonValue(text) {
59
- let restored = replaceAll(text, "\\u000a", lineSep());
60
- restored = replaceAll(restored, "\\u000d", "\r");
61
- restored = replaceAll(restored, "\\u0009", "\t");
62
- restored = replaceAll(restored, "\\u0022", '"');
63
- restored = replaceAll(restored, "\\u005c", "\\");
64
- return restored;
65
- }
66
- function firstAfterMarker(parts) {
67
- if (parts.length <= 1)
68
- return "";
69
- return parts[1];
70
- }
71
- function firstQuotedValue(text) {
72
- return firstQuotedValueParts(text.split('"'));
73
- }
74
- function firstQuotedValueParts(parts) {
75
- for (let i = 0; i < parts.length; i++) {
76
- if (parts[i] === "") {
77
- return i + 1 < parts.length ? parts[i + 1] : "";
78
- }
79
- }
80
- return "";
81
- }
82
- //# sourceMappingURL=json.js.map
package/dist/json.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import type { RunRecord } from "../registry/types.js";
2
- export interface HealthResult {
3
- active: RunRecord[];
4
- watching: RunRecord[];
5
- stuck: RunRecord[];
6
- recentFailed: RunRecord[];
7
- recentCompleted: RunRecord[];
8
- }
9
- /**
10
- * Produce a health summary string from the registry.
11
- * Exception-focused: only surfaces issues by default.
12
- * Pass verbose=true to also list recent completions.
13
- */
14
- export declare function healthSummary(stateDir: string, verbose: boolean): string;
15
- export declare function categorizeRuns(stateDir: string): HealthResult;
16
- export declare function categorizeRecords(records: RunRecord[], nowMs?: number): HealthResult;
17
- export declare function isProcessAlive(pid: number): boolean;