@mobrienv/autoloop 0.4.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +40 -14
  3. package/bin/autoloop +1 -1
  4. package/dist/index.d.ts +6 -0
  5. package/dist/index.js +19 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/testing/mock-backend.js +3 -5
  8. package/dist/testing/mock-backend.js.map +1 -1
  9. package/package.json +32 -23
  10. package/plugins/autoloop/.claude-plugin/plugin.json +1 -1
  11. package/dist/agent-map.d.ts +0 -10
  12. package/dist/agent-map.js +0 -58
  13. package/dist/agent-map.js.map +0 -1
  14. package/dist/backend/acp-client.d.ts +0 -38
  15. package/dist/backend/acp-client.js +0 -293
  16. package/dist/backend/acp-client.js.map +0 -1
  17. package/dist/backend/index.d.ts +0 -10
  18. package/dist/backend/index.js +0 -71
  19. package/dist/backend/index.js.map +0 -1
  20. package/dist/backend/kiro-bridge.d.ts +0 -19
  21. package/dist/backend/kiro-bridge.js +0 -114
  22. package/dist/backend/kiro-bridge.js.map +0 -1
  23. package/dist/backend/kiro-worker.d.ts +0 -1
  24. package/dist/backend/kiro-worker.js +0 -96
  25. package/dist/backend/kiro-worker.js.map +0 -1
  26. package/dist/backend/run-command.d.ts +0 -7
  27. package/dist/backend/run-command.js +0 -50
  28. package/dist/backend/run-command.js.map +0 -1
  29. package/dist/backend/run-kiro.d.ts +0 -3
  30. package/dist/backend/run-kiro.js +0 -16
  31. package/dist/backend/run-kiro.js.map +0 -1
  32. package/dist/backend/run-mock.d.ts +0 -1
  33. package/dist/backend/run-mock.js +0 -6
  34. package/dist/backend/run-mock.js.map +0 -1
  35. package/dist/backend/run-pi.d.ts +0 -5
  36. package/dist/backend/run-pi.js +0 -5
  37. package/dist/backend/run-pi.js.map +0 -1
  38. package/dist/backend/types.d.ts +0 -21
  39. package/dist/backend/types.js +0 -2
  40. package/dist/backend/types.js.map +0 -1
  41. package/dist/chains/budget.d.ts +0 -7
  42. package/dist/chains/budget.js +0 -54
  43. package/dist/chains/budget.js.map +0 -1
  44. package/dist/chains/load.d.ts +0 -18
  45. package/dist/chains/load.js +0 -129
  46. package/dist/chains/load.js.map +0 -1
  47. package/dist/chains/render.d.ts +0 -2
  48. package/dist/chains/render.js +0 -74
  49. package/dist/chains/render.js.map +0 -1
  50. package/dist/chains/run.d.ts +0 -17
  51. package/dist/chains/run.js +0 -260
  52. package/dist/chains/run.js.map +0 -1
  53. package/dist/chains/types.d.ts +0 -38
  54. package/dist/chains/types.js +0 -2
  55. package/dist/chains/types.js.map +0 -1
  56. package/dist/chains.d.ts +0 -6
  57. package/dist/chains.js +0 -5
  58. package/dist/chains.js.map +0 -1
  59. package/dist/cli/color.d.ts +0 -6
  60. package/dist/cli/color.js +0 -40
  61. package/dist/cli/color.js.map +0 -1
  62. package/dist/commands/chain.d.ts +0 -1
  63. package/dist/commands/chain.js +0 -53
  64. package/dist/commands/chain.js.map +0 -1
  65. package/dist/commands/config.d.ts +0 -1
  66. package/dist/commands/config.js +0 -74
  67. package/dist/commands/config.js.map +0 -1
  68. package/dist/commands/dashboard.d.ts +0 -1
  69. package/dist/commands/dashboard.js +0 -68
  70. package/dist/commands/dashboard.js.map +0 -1
  71. package/dist/commands/guide.d.ts +0 -1
  72. package/dist/commands/guide.js +0 -33
  73. package/dist/commands/guide.js.map +0 -1
  74. package/dist/commands/inspect.d.ts +0 -1
  75. package/dist/commands/inspect.js +0 -243
  76. package/dist/commands/inspect.js.map +0 -1
  77. package/dist/commands/list.d.ts +0 -1
  78. package/dist/commands/list.js +0 -15
  79. package/dist/commands/list.js.map +0 -1
  80. package/dist/commands/loops.d.ts +0 -1
  81. package/dist/commands/loops.js +0 -72
  82. package/dist/commands/loops.js.map +0 -1
  83. package/dist/commands/memory.d.ts +0 -1
  84. package/dist/commands/memory.js +0 -65
  85. package/dist/commands/memory.js.map +0 -1
  86. package/dist/commands/pi-adapter.d.ts +0 -1
  87. package/dist/commands/pi-adapter.js +0 -6
  88. package/dist/commands/pi-adapter.js.map +0 -1
  89. package/dist/commands/run.d.ts +0 -1
  90. package/dist/commands/run.js +0 -292
  91. package/dist/commands/run.js.map +0 -1
  92. package/dist/commands/runs.d.ts +0 -1
  93. package/dist/commands/runs.js +0 -50
  94. package/dist/commands/runs.js.map +0 -1
  95. package/dist/commands/task.d.ts +0 -1
  96. package/dist/commands/task.js +0 -74
  97. package/dist/commands/task.js.map +0 -1
  98. package/dist/commands/worktree.d.ts +0 -1
  99. package/dist/commands/worktree.js +0 -162
  100. package/dist/commands/worktree.js.map +0 -1
  101. package/dist/config.d.ts +0 -31
  102. package/dist/config.js +0 -261
  103. package/dist/config.js.map +0 -1
  104. package/dist/dashboard/app.d.ts +0 -12
  105. package/dist/dashboard/app.js +0 -23
  106. package/dist/dashboard/app.js.map +0 -1
  107. package/dist/dashboard/routes/api.d.ts +0 -3
  108. package/dist/dashboard/routes/api.js +0 -186
  109. package/dist/dashboard/routes/api.js.map +0 -1
  110. package/dist/dashboard/routes/pages.d.ts +0 -2
  111. package/dist/dashboard/routes/pages.js +0 -16
  112. package/dist/dashboard/routes/pages.js.map +0 -1
  113. package/dist/dashboard/views/alpine-vendor.d.ts +0 -1
  114. package/dist/dashboard/views/alpine-vendor.js +0 -10
  115. package/dist/dashboard/views/alpine-vendor.js.map +0 -1
  116. package/dist/dashboard/views/shell.d.ts +0 -1
  117. package/dist/dashboard/views/shell.js +0 -1062
  118. package/dist/dashboard/views/shell.js.map +0 -1
  119. package/dist/events/decode.d.ts +0 -2
  120. package/dist/events/decode.js +0 -45
  121. package/dist/events/decode.js.map +0 -1
  122. package/dist/events/encode.d.ts +0 -2
  123. package/dist/events/encode.js +0 -33
  124. package/dist/events/encode.js.map +0 -1
  125. package/dist/events/guards.d.ts +0 -5
  126. package/dist/events/guards.js +0 -42
  127. package/dist/events/guards.js.map +0 -1
  128. package/dist/events/types.d.ts +0 -27
  129. package/dist/events/types.js +0 -2
  130. package/dist/events/types.js.map +0 -1
  131. package/dist/harness/artifacts.d.ts +0 -50
  132. package/dist/harness/artifacts.js +0 -333
  133. package/dist/harness/artifacts.js.map +0 -1
  134. package/dist/harness/config-helpers.d.ts +0 -35
  135. package/dist/harness/config-helpers.js +0 -409
  136. package/dist/harness/config-helpers.js.map +0 -1
  137. package/dist/harness/coordination.d.ts +0 -1
  138. package/dist/harness/coordination.js +0 -127
  139. package/dist/harness/coordination.js.map +0 -1
  140. package/dist/harness/display.d.ts +0 -21
  141. package/dist/harness/display.js +0 -176
  142. package/dist/harness/display.js.map +0 -1
  143. package/dist/harness/emit.d.ts +0 -15
  144. package/dist/harness/emit.js +0 -240
  145. package/dist/harness/emit.js.map +0 -1
  146. package/dist/harness/index.d.ts +0 -20
  147. package/dist/harness/index.js +0 -311
  148. package/dist/harness/index.js.map +0 -1
  149. package/dist/harness/iteration.d.ts +0 -16
  150. package/dist/harness/iteration.js +0 -131
  151. package/dist/harness/iteration.js.map +0 -1
  152. package/dist/harness/journal-format.d.ts +0 -25
  153. package/dist/harness/journal-format.js +0 -153
  154. package/dist/harness/journal-format.js.map +0 -1
  155. package/dist/harness/journal.d.ts +0 -31
  156. package/dist/harness/journal.js +0 -178
  157. package/dist/harness/journal.js.map +0 -1
  158. package/dist/harness/metareview.d.ts +0 -4
  159. package/dist/harness/metareview.js +0 -48
  160. package/dist/harness/metareview.js.map +0 -1
  161. package/dist/harness/metrics.d.ts +0 -12
  162. package/dist/harness/metrics.js +0 -180
  163. package/dist/harness/metrics.js.map +0 -1
  164. package/dist/harness/parallel.d.ts +0 -37
  165. package/dist/harness/parallel.js +0 -237
  166. package/dist/harness/parallel.js.map +0 -1
  167. package/dist/harness/prompt.d.ts +0 -46
  168. package/dist/harness/prompt.js +0 -403
  169. package/dist/harness/prompt.js.map +0 -1
  170. package/dist/harness/scratchpad.d.ts +0 -2
  171. package/dist/harness/scratchpad.js +0 -67
  172. package/dist/harness/scratchpad.js.map +0 -1
  173. package/dist/harness/stop.d.ts +0 -5
  174. package/dist/harness/stop.js +0 -70
  175. package/dist/harness/stop.js.map +0 -1
  176. package/dist/harness/tools.d.ts +0 -3
  177. package/dist/harness/tools.js +0 -65
  178. package/dist/harness/tools.js.map +0 -1
  179. package/dist/harness/types.d.ts +0 -110
  180. package/dist/harness/types.js +0 -2
  181. package/dist/harness/types.js.map +0 -1
  182. package/dist/harness/wave/finalize-wave.d.ts +0 -9
  183. package/dist/harness/wave/finalize-wave.js +0 -87
  184. package/dist/harness/wave/finalize-wave.js.map +0 -1
  185. package/dist/harness/wave/launch-branches.d.ts +0 -6
  186. package/dist/harness/wave/launch-branches.js +0 -314
  187. package/dist/harness/wave/launch-branches.js.map +0 -1
  188. package/dist/harness/wave/parse-objectives.d.ts +0 -3
  189. package/dist/harness/wave/parse-objectives.js +0 -32
  190. package/dist/harness/wave/parse-objectives.js.map +0 -1
  191. package/dist/harness/wave/types.d.ts +0 -43
  192. package/dist/harness/wave/types.js +0 -2
  193. package/dist/harness/wave/types.js.map +0 -1
  194. package/dist/harness/wave.d.ts +0 -6
  195. package/dist/harness/wave.js +0 -159
  196. package/dist/harness/wave.js.map +0 -1
  197. package/dist/isolation/index.d.ts +0 -4
  198. package/dist/isolation/index.js +0 -3
  199. package/dist/isolation/index.js.map +0 -1
  200. package/dist/isolation/resolve.d.ts +0 -39
  201. package/dist/isolation/resolve.js +0 -118
  202. package/dist/isolation/resolve.js.map +0 -1
  203. package/dist/isolation/run-scope.d.ts +0 -21
  204. package/dist/isolation/run-scope.js +0 -50
  205. package/dist/isolation/run-scope.js.map +0 -1
  206. package/dist/json.d.ts +0 -8
  207. package/dist/json.js +0 -82
  208. package/dist/json.js.map +0 -1
  209. package/dist/loops/health.d.ts +0 -17
  210. package/dist/loops/health.js +0 -152
  211. package/dist/loops/health.js.map +0 -1
  212. package/dist/loops/list.d.ts +0 -6
  213. package/dist/loops/list.js +0 -21
  214. package/dist/loops/list.js.map +0 -1
  215. package/dist/loops/policy.d.ts +0 -6
  216. package/dist/loops/policy.js +0 -41
  217. package/dist/loops/policy.js.map +0 -1
  218. package/dist/loops/render.d.ts +0 -19
  219. package/dist/loops/render.js +0 -100
  220. package/dist/loops/render.js.map +0 -1
  221. package/dist/loops/show.d.ts +0 -8
  222. package/dist/loops/show.js +0 -31
  223. package/dist/loops/show.js.map +0 -1
  224. package/dist/loops/watch.d.ts +0 -14
  225. package/dist/loops/watch.js +0 -143
  226. package/dist/loops/watch.js.map +0 -1
  227. package/dist/main.d.ts +0 -1
  228. package/dist/main.js +0 -148
  229. package/dist/main.js.map +0 -1
  230. package/dist/markdown.d.ts +0 -10
  231. package/dist/markdown.js +0 -66
  232. package/dist/markdown.js.map +0 -1
  233. package/dist/memory-render.d.ts +0 -6
  234. package/dist/memory-render.js +0 -81
  235. package/dist/memory-render.js.map +0 -1
  236. package/dist/memory.d.ts +0 -22
  237. package/dist/memory.js +0 -318
  238. package/dist/memory.js.map +0 -1
  239. package/dist/pi-adapter.d.ts +0 -1
  240. package/dist/pi-adapter.js +0 -220
  241. package/dist/pi-adapter.js.map +0 -1
  242. package/dist/profiles.d.ts +0 -12
  243. package/dist/profiles.js +0 -71
  244. package/dist/profiles.js.map +0 -1
  245. package/dist/registry/derive.d.ts +0 -8
  246. package/dist/registry/derive.js +0 -88
  247. package/dist/registry/derive.js.map +0 -1
  248. package/dist/registry/discover.d.ts +0 -20
  249. package/dist/registry/discover.js +0 -98
  250. package/dist/registry/discover.js.map +0 -1
  251. package/dist/registry/harness.d.ts +0 -7
  252. package/dist/registry/harness.js +0 -63
  253. package/dist/registry/harness.js.map +0 -1
  254. package/dist/registry/index.d.ts +0 -6
  255. package/dist/registry/index.js +0 -6
  256. package/dist/registry/index.js.map +0 -1
  257. package/dist/registry/read.d.ts +0 -11
  258. package/dist/registry/read.js +0 -50
  259. package/dist/registry/read.js.map +0 -1
  260. package/dist/registry/rebuild.d.ts +0 -5
  261. package/dist/registry/rebuild.js +0 -22
  262. package/dist/registry/rebuild.js.map +0 -1
  263. package/dist/registry/types.d.ts +0 -28
  264. package/dist/registry/types.js +0 -2
  265. package/dist/registry/types.js.map +0 -1
  266. package/dist/registry/update.d.ts +0 -2
  267. package/dist/registry/update.js +0 -7
  268. package/dist/registry/update.js.map +0 -1
  269. package/dist/tasks-render.d.ts +0 -2
  270. package/dist/tasks-render.js +0 -44
  271. package/dist/tasks-render.js.map +0 -1
  272. package/dist/tasks.d.ts +0 -24
  273. package/dist/tasks.js +0 -184
  274. package/dist/tasks.js.map +0 -1
  275. package/dist/topology.d.ts +0 -31
  276. package/dist/topology.js +0 -309
  277. package/dist/topology.js.map +0 -1
  278. package/dist/usage.d.ts +0 -9
  279. package/dist/usage.js +0 -160
  280. package/dist/usage.js.map +0 -1
  281. package/dist/utils.d.ts +0 -21
  282. package/dist/utils.js +0 -349
  283. package/dist/utils.js.map +0 -1
  284. package/dist/worktree/clean.d.ts +0 -12
  285. package/dist/worktree/clean.js +0 -113
  286. package/dist/worktree/clean.js.map +0 -1
  287. package/dist/worktree/create.d.ts +0 -14
  288. package/dist/worktree/create.js +0 -71
  289. package/dist/worktree/create.js.map +0 -1
  290. package/dist/worktree/index.d.ts +0 -10
  291. package/dist/worktree/index.js +0 -6
  292. package/dist/worktree/index.js.map +0 -1
  293. package/dist/worktree/list.d.ts +0 -9
  294. package/dist/worktree/list.js +0 -24
  295. package/dist/worktree/list.js.map +0 -1
  296. package/dist/worktree/merge.d.ts +0 -11
  297. package/dist/worktree/merge.js +0 -129
  298. package/dist/worktree/merge.js.map +0 -1
  299. package/dist/worktree/meta.d.ts +0 -17
  300. package/dist/worktree/meta.js +0 -34
  301. package/dist/worktree/meta.js.map +0 -1
  302. package/presets/autocode/README.md +0 -81
  303. package/presets/autocode/autoloops.toml +0 -30
  304. package/presets/autocode/harness.md +0 -26
  305. package/presets/autocode/miniloops.toml +0 -22
  306. package/presets/autocode/roles/build.md +0 -34
  307. package/presets/autocode/roles/critic.md +0 -40
  308. package/presets/autocode/roles/finalizer.md +0 -43
  309. package/presets/autocode/roles/planner.md +0 -40
  310. package/presets/autocode/topology.toml +0 -32
  311. package/presets/autodebug/README.md +0 -50
  312. package/presets/autodebug/autoloops.toml +0 -18
  313. package/presets/autodebug/harness.md +0 -31
  314. package/presets/autodebug/roles/fixer.md +0 -58
  315. package/presets/autodebug/roles/investigator.md +0 -52
  316. package/presets/autodebug/roles/strategist.md +0 -45
  317. package/presets/autodebug/roles/verifier.md +0 -66
  318. package/presets/autodebug/topology.toml +0 -34
  319. package/presets/autodoc/README.md +0 -42
  320. package/presets/autodoc/autoloops.toml +0 -21
  321. package/presets/autodoc/harness.md +0 -19
  322. package/presets/autodoc/miniloops.toml +0 -21
  323. package/presets/autodoc/roles/auditor.md +0 -39
  324. package/presets/autodoc/roles/checker.md +0 -43
  325. package/presets/autodoc/roles/publisher.md +0 -51
  326. package/presets/autodoc/roles/writer.md +0 -37
  327. package/presets/autodoc/topology.toml +0 -31
  328. package/presets/autofix/README.md +0 -56
  329. package/presets/autofix/autoloops.toml +0 -24
  330. package/presets/autofix/harness.md +0 -25
  331. package/presets/autofix/miniloops.toml +0 -21
  332. package/presets/autofix/roles/closer.md +0 -48
  333. package/presets/autofix/roles/diagnoser.md +0 -43
  334. package/presets/autofix/roles/fixer.md +0 -28
  335. package/presets/autofix/roles/verifier.md +0 -31
  336. package/presets/autofix/topology.toml +0 -33
  337. package/presets/autoideas/README.md +0 -73
  338. package/presets/autoideas/autoloops.toml +0 -18
  339. package/presets/autoideas/harness.md +0 -31
  340. package/presets/autoideas/miniloops.toml +0 -18
  341. package/presets/autoideas/roles/analyst.md +0 -32
  342. package/presets/autoideas/roles/reviewer.md +0 -36
  343. package/presets/autoideas/roles/scanner.md +0 -26
  344. package/presets/autoideas/roles/synthesizer.md +0 -61
  345. package/presets/autoideas/topology.toml +0 -32
  346. package/presets/automerge/README.md +0 -3
  347. package/presets/automerge/autoloops.toml +0 -12
  348. package/presets/automerge/harness.md +0 -10
  349. package/presets/automerge/miniloops.toml +0 -12
  350. package/presets/automerge/roles/merge.md +0 -10
  351. package/presets/automerge/topology.toml +0 -10
  352. package/presets/autoperf/README.md +0 -56
  353. package/presets/autoperf/autoloops.toml +0 -21
  354. package/presets/autoperf/harness.md +0 -21
  355. package/presets/autoperf/miniloops.toml +0 -21
  356. package/presets/autoperf/roles/judge.md +0 -38
  357. package/presets/autoperf/roles/measurer.md +0 -36
  358. package/presets/autoperf/roles/optimizer.md +0 -35
  359. package/presets/autoperf/roles/profiler.md +0 -38
  360. package/presets/autoperf/topology.toml +0 -32
  361. package/presets/autopr/README.md +0 -99
  362. package/presets/autopr/autoloops.toml +0 -22
  363. package/presets/autopr/harness.md +0 -27
  364. package/presets/autopr/miniloops.toml +0 -22
  365. package/presets/autopr/roles/collector.md +0 -55
  366. package/presets/autopr/roles/drafter.md +0 -38
  367. package/presets/autopr/roles/publisher.md +0 -28
  368. package/presets/autopr/roles/validator.md +0 -31
  369. package/presets/autopr/topology.toml +0 -32
  370. package/presets/autopreset/README.md +0 -35
  371. package/presets/autopreset/autoloops.toml +0 -18
  372. package/presets/autopreset/harness.md +0 -38
  373. package/presets/autopreset/roles/designer.md +0 -33
  374. package/presets/autopreset/roles/finalizer.md +0 -23
  375. package/presets/autopreset/roles/generator.md +0 -34
  376. package/presets/autopreset/roles/validator.md +0 -31
  377. package/presets/autopreset/topology.toml +0 -32
  378. package/presets/autoqa/README.md +0 -105
  379. package/presets/autoqa/autoloops.toml +0 -21
  380. package/presets/autoqa/harness.md +0 -52
  381. package/presets/autoqa/miniloops.toml +0 -21
  382. package/presets/autoqa/roles/executor.md +0 -96
  383. package/presets/autoqa/roles/inspector.md +0 -100
  384. package/presets/autoqa/roles/planner.md +0 -87
  385. package/presets/autoqa/roles/reporter.md +0 -117
  386. package/presets/autoqa/topology.toml +0 -31
  387. package/presets/autoresearch/README.md +0 -63
  388. package/presets/autoresearch/autoloops.toml +0 -18
  389. package/presets/autoresearch/harness.md +0 -28
  390. package/presets/autoresearch/miniloops.toml +0 -18
  391. package/presets/autoresearch/roles/benchmarker.md +0 -34
  392. package/presets/autoresearch/roles/evaluator.md +0 -33
  393. package/presets/autoresearch/roles/implementer.md +0 -26
  394. package/presets/autoresearch/roles/strategist.md +0 -43
  395. package/presets/autoresearch/topology.toml +0 -31
  396. package/presets/autoreview/README.md +0 -51
  397. package/presets/autoreview/autoloops.toml +0 -21
  398. package/presets/autoreview/harness.md +0 -20
  399. package/presets/autoreview/miniloops.toml +0 -21
  400. package/presets/autoreview/roles/checker.md +0 -36
  401. package/presets/autoreview/roles/reader.md +0 -33
  402. package/presets/autoreview/roles/suggester.md +0 -26
  403. package/presets/autoreview/roles/summarizer.md +0 -57
  404. package/presets/autoreview/topology.toml +0 -31
  405. package/presets/autosec/README.md +0 -51
  406. package/presets/autosec/autoloops.toml +0 -21
  407. package/presets/autosec/harness.md +0 -20
  408. package/presets/autosec/miniloops.toml +0 -21
  409. package/presets/autosec/roles/analyst.md +0 -38
  410. package/presets/autosec/roles/hardener.md +0 -36
  411. package/presets/autosec/roles/reporter.md +0 -63
  412. package/presets/autosec/roles/scanner.md +0 -38
  413. package/presets/autosec/topology.toml +0 -31
  414. package/presets/autosimplify/README.md +0 -83
  415. package/presets/autosimplify/autoloops.toml +0 -26
  416. package/presets/autosimplify/harness.md +0 -25
  417. package/presets/autosimplify/miniloops.toml +0 -22
  418. package/presets/autosimplify/roles/reviewer.md +0 -38
  419. package/presets/autosimplify/roles/scoper.md +0 -42
  420. package/presets/autosimplify/roles/simplifier.md +0 -51
  421. package/presets/autosimplify/roles/verifier.md +0 -40
  422. package/presets/autosimplify/topology.toml +0 -32
  423. package/presets/autospec/README.md +0 -84
  424. package/presets/autospec/autoloops.toml +0 -21
  425. package/presets/autospec/harness.md +0 -23
  426. package/presets/autospec/miniloops.toml +0 -21
  427. package/presets/autospec/roles/clarifier.md +0 -39
  428. package/presets/autospec/roles/critic.md +0 -41
  429. package/presets/autospec/roles/designer.md +0 -37
  430. package/presets/autospec/roles/planner.md +0 -38
  431. package/presets/autospec/roles/researcher.md +0 -33
  432. package/presets/autospec/topology.toml +0 -38
  433. package/presets/autotest/README.md +0 -55
  434. package/presets/autotest/autoloops.toml +0 -21
  435. package/presets/autotest/harness.md +0 -21
  436. package/presets/autotest/miniloops.toml +0 -21
  437. package/presets/autotest/roles/assessor.md +0 -57
  438. package/presets/autotest/roles/runner.md +0 -31
  439. package/presets/autotest/roles/surveyor.md +0 -39
  440. package/presets/autotest/roles/writer.md +0 -37
  441. package/presets/autotest/topology.toml +0 -32
@@ -1,293 +0,0 @@
1
- import { spawn } from "node:child_process";
2
- import * as acp from "@agentclientprotocol/sdk";
3
- /**
4
- * Format an ACP SessionUpdate for verbose stderr output.
5
- * Returns null for event types that should be silenced.
6
- */
7
- export function formatStreamingUpdate(update) {
8
- switch (update.sessionUpdate) {
9
- case "agent_message_chunk":
10
- return update.content?.type === "text" ? update.content.text : null;
11
- case "agent_thought_chunk":
12
- return update.content?.type === "text"
13
- ? `[thinking] ${update.content.text}\n`
14
- : null;
15
- case "tool_call":
16
- return `[tool:${update.kind ?? "other"}] ${update.title}\n`;
17
- case "tool_call_update":
18
- if (update.status === "completed")
19
- return `[tool:✓] ${update.title ?? ""}\n`;
20
- if (update.status === "failed")
21
- return `[tool:✗] ${update.title ?? ""}\n`;
22
- return null;
23
- default:
24
- return null;
25
- }
26
- }
27
- export async function initAcpSession(opts) {
28
- const child = spawn(opts.command, opts.args, {
29
- stdio: ["pipe", "pipe", "pipe"],
30
- cwd: opts.cwd,
31
- env: process.env,
32
- detached: true, // create own process group so process.kill(-pid) in terminateAcpSession kills the full tree
33
- });
34
- if (!child.stdout || !child.stdin) {
35
- throw new Error("Failed to create ACP process stdio streams");
36
- }
37
- const session = {
38
- sessionId: "",
39
- connection: null,
40
- process: child,
41
- textBuffer: "",
42
- stderrBuffer: "",
43
- options: opts,
44
- closed: null,
45
- };
46
- // Buffer stderr for diagnostics
47
- if (child.stderr) {
48
- child.stderr.on("data", (chunk) => {
49
- session.stderrBuffer += chunk.toString();
50
- });
51
- }
52
- // Track process exit so hanging prompts can bail out
53
- session.closed = new Promise((resolve) => {
54
- child.on("close", (code, signal) => resolve({ code, signal }));
55
- });
56
- // Build transport: manual NDJSON parsing on stdout (more reliable), SDK serialization on stdin
57
- const stdin = child.stdin;
58
- const stdout = child.stdout;
59
- const writable = new WritableStream({
60
- async write(chunk) {
61
- if (stdin.destroyed || stdin.writableEnded)
62
- return;
63
- return new Promise((resolve, reject) => {
64
- stdin.write(chunk, (err) => (err ? reject(err) : resolve()));
65
- });
66
- },
67
- close() {
68
- stdin.end();
69
- },
70
- abort(reason) {
71
- stdin.destroy(reason instanceof Error ? reason : new Error(String(reason)));
72
- },
73
- });
74
- let buffer = "";
75
- const decoder = new TextDecoder();
76
- let msgController;
77
- const parsedMessages = new ReadableStream({
78
- start(controller) {
79
- msgController = controller;
80
- },
81
- cancel() {
82
- stdout.destroy();
83
- },
84
- });
85
- stdout.on("data", (chunk) => {
86
- buffer += decoder.decode(chunk, { stream: true });
87
- const lines = buffer.split("\n");
88
- buffer = lines.pop() || "";
89
- for (const line of lines) {
90
- const trimmed = line.trim();
91
- if (trimmed) {
92
- try {
93
- const msg = JSON.parse(trimmed);
94
- // Filter kiro-cli private notifications — the ACP SDK doesn't know about
95
- // _kiro.dev/* methods and responds with -32601 "Method not found".
96
- // These are private kiro-cli extensions the ACP SDK does not handle.
97
- if (msg.method &&
98
- typeof msg.method === "string" &&
99
- msg.method.startsWith("_kiro.dev/")) {
100
- continue;
101
- }
102
- msgController.enqueue(msg);
103
- }
104
- catch {
105
- /* skip malformed */
106
- }
107
- }
108
- }
109
- });
110
- stdout.on("end", () => {
111
- if (buffer.trim()) {
112
- try {
113
- msgController.enqueue(JSON.parse(buffer.trim()));
114
- }
115
- catch {
116
- /* skip */
117
- }
118
- }
119
- msgController.close();
120
- });
121
- stdout.on("error", (err) => {
122
- msgController.error(err);
123
- });
124
- // Use ndJsonStream only for writable serialization; readable is our manual parser
125
- const dummyReadable = new ReadableStream({ start() { } });
126
- const ndJson = acp.ndJsonStream(writable, dummyReadable);
127
- const stream = {
128
- readable: parsedMessages,
129
- writable: ndJson.writable,
130
- };
131
- const client = {
132
- async requestPermission(params) {
133
- if (opts.trustAllTools && params.options?.length) {
134
- const allow = params.options.find((o) => o.kind === "allow_always") ??
135
- params.options.find((o) => o.kind === "allow_once");
136
- if (allow)
137
- return { outcome: { outcome: "selected", optionId: allow.optionId } };
138
- }
139
- return { outcome: { outcome: "cancelled" } };
140
- },
141
- async sessionUpdate(params) {
142
- const { update } = params;
143
- if (!update)
144
- return;
145
- if (update.sessionUpdate === "agent_message_chunk" &&
146
- update.content?.type === "text") {
147
- session.textBuffer += update.content.text;
148
- }
149
- if (opts.verbose) {
150
- const line = formatStreamingUpdate(update);
151
- if (line)
152
- process.stderr.write(line);
153
- }
154
- },
155
- };
156
- session.connection = new acp.ClientSideConnection(() => client, stream);
157
- // Initialize
158
- await session.connection.initialize({
159
- protocolVersion: acp.PROTOCOL_VERSION,
160
- clientCapabilities: {},
161
- clientInfo: { name: "autoloop", version: "0.1.0" },
162
- });
163
- // Create session
164
- const result = await session.connection.newSession({
165
- cwd: opts.cwd,
166
- mcpServers: [],
167
- });
168
- session.sessionId = result.sessionId;
169
- // Optionally set mode/model
170
- if (opts.agentName) {
171
- await session.connection.setSessionMode({
172
- sessionId: session.sessionId,
173
- modeId: opts.agentName,
174
- });
175
- }
176
- if (opts.modelId) {
177
- await session.connection.unstable_setSessionModel({
178
- sessionId: session.sessionId,
179
- modelId: opts.modelId,
180
- });
181
- }
182
- return session;
183
- }
184
- export async function sendAcpPrompt(session, prompt, timeoutMs) {
185
- session.textBuffer = "";
186
- // Retry with backoff if agent isn't idle yet
187
- const maxAttempts = 3;
188
- for (let attempt = 1; attempt <= maxAttempts; attempt++) {
189
- try {
190
- return await sendAcpPromptOnce(session, prompt, timeoutMs);
191
- }
192
- catch (err) {
193
- if (err.message?.includes("not idle") && attempt < maxAttempts) {
194
- await new Promise((r) => setTimeout(r, attempt * 2000));
195
- continue;
196
- }
197
- throw err;
198
- }
199
- }
200
- // unreachable, but satisfies TS
201
- return {
202
- output: session.textBuffer,
203
- stopReason: "end_turn",
204
- timedOut: false,
205
- error: "retry exhausted",
206
- };
207
- }
208
- async function sendAcpPromptOnce(session, prompt, timeoutMs) {
209
- session.textBuffer = "";
210
- let timedOut = false;
211
- let timer;
212
- const timeoutPromise = new Promise((_resolve, reject) => {
213
- timer = setTimeout(() => {
214
- timedOut = true;
215
- session.connection.cancel({ sessionId: session.sessionId });
216
- reject(new Error("ACP prompt timed out"));
217
- }, timeoutMs);
218
- });
219
- // Detect process crash mid-prompt
220
- const crashPromise = session.closed.then(({ code, signal }) => {
221
- const stderr = session.stderrBuffer.trim();
222
- const detail = stderr ? `\n${stderr}` : "";
223
- throw new Error(`kiro-cli exited unexpectedly: code=${code} signal=${signal}${detail}`);
224
- });
225
- try {
226
- const response = await Promise.race([
227
- session.connection.prompt({
228
- sessionId: session.sessionId,
229
- prompt: [{ type: "text", text: prompt }],
230
- }),
231
- timeoutPromise,
232
- crashPromise,
233
- ]);
234
- clearTimeout(timer);
235
- return {
236
- output: session.textBuffer,
237
- stopReason: response.stopReason,
238
- timedOut: false,
239
- };
240
- }
241
- catch (err) {
242
- clearTimeout(timer);
243
- if (timedOut) {
244
- return {
245
- output: session.textBuffer,
246
- stopReason: "cancelled",
247
- timedOut: true,
248
- };
249
- }
250
- return {
251
- output: session.textBuffer,
252
- stopReason: "end_turn",
253
- timedOut: false,
254
- error: String(err),
255
- };
256
- }
257
- }
258
- export async function terminateAcpSession(session) {
259
- const child = session.process;
260
- if (!child.pid || child.killed)
261
- return;
262
- // Cancel any in-flight turn before killing
263
- try {
264
- session.connection.cancel({ sessionId: session.sessionId });
265
- }
266
- catch {
267
- /* may not have a session */
268
- }
269
- // Kill the entire process tree — MCP servers run in their own process groups
270
- // and won't die from just killing the parent.
271
- const pid = child.pid;
272
- try {
273
- process.kill(-pid, "SIGTERM");
274
- }
275
- catch {
276
- /* process group may not exist */
277
- }
278
- child.kill("SIGTERM");
279
- const exited = await Promise.race([
280
- new Promise((resolve) => child.on("exit", () => resolve(true))),
281
- new Promise((resolve) => setTimeout(() => resolve(false), 3000)),
282
- ]);
283
- if (!exited && !child.killed) {
284
- try {
285
- process.kill(-pid, "SIGKILL");
286
- }
287
- catch {
288
- /* already dead */
289
- }
290
- child.kill("SIGKILL");
291
- }
292
- }
293
- //# sourceMappingURL=acp-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acp-client.js","sourceRoot":"","sources":["../../src/backend/acp-client.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import type { BackendCommandContext, BackendRunResult } from "./types.js";
2
- export type { BackendCommandContext, BackendRunResult, BackendSpec, } from "./types.js";
3
- export declare function normalizeBackendLabel(command: string): string;
4
- export declare function buildBackendShellCommand(ctx: BackendCommandContext): string;
5
- export declare function runBackendCommand(providerKind: string, command: string, timeoutMs: number): BackendRunResult;
6
- export declare function normalizeProviderKind(spec: {
7
- kind: string;
8
- command: string;
9
- args: string[];
10
- }): string;
@@ -1,71 +0,0 @@
1
- import { basename, join } from "node:path";
2
- import { shellQuote } from "../utils.js";
3
- import { buildCommandInvocation, runShellCommand } from "./run-command.js";
4
- import { mockBackend } from "./run-mock.js";
5
- import { buildPiAdapterInvocation } from "./run-pi.js";
6
- export function normalizeBackendLabel(command) {
7
- if (!command)
8
- return "";
9
- const base = basename(command);
10
- if (base === "claude")
11
- return "claude";
12
- if (base === "pi")
13
- return "pi";
14
- if (base === "kiro-cli")
15
- return "kiro";
16
- return base || command;
17
- }
18
- export function buildBackendShellCommand(ctx) {
19
- const promptPath = join(ctx.loop.paths.stateDir, "active-prompt.md");
20
- const envLines = promptRuntimeEnvLines(ctx.spec, ctx.prompt, promptPath, ctx.runtimeEnv);
21
- const childCommand = ctx.spec.kind === "pi"
22
- ? buildPiAdapterInvocation(ctx.loop, ctx.spec)
23
- : buildCommandInvocation(ctx.spec, ctx.prompt);
24
- return envLines + wrapProcessInvocation(childCommand);
25
- }
26
- export function runBackendCommand(providerKind, command, timeoutMs) {
27
- return runShellCommand(providerKind, command, timeoutMs);
28
- }
29
- export function normalizeProviderKind(spec) {
30
- if (spec.kind === "pi")
31
- return "pi";
32
- if (spec.kind === "kiro")
33
- return "kiro";
34
- if (mockBackend(spec.command, spec.args))
35
- return "mock";
36
- return spec.kind || "command";
37
- }
38
- function promptRuntimeEnvLines(spec, prompt, promptPath, runtimeEnv) {
39
- let lines = runtimeEnv +
40
- "export AUTOLOOP_PROMPT_PATH=" +
41
- shellQuote(promptPath) +
42
- "\n" +
43
- "printf '%s' " +
44
- shellQuote(prompt) +
45
- " > " +
46
- shellQuote(promptPath) +
47
- "\n";
48
- if (spec.kind !== "pi") {
49
- lines += `export AUTOLOOP_PROMPT=${shellQuote(prompt)}\n`;
50
- }
51
- return lines;
52
- }
53
- function wrapProcessInvocation(command) {
54
- return ("autoloops_child_pid=''\n" +
55
- "autoloops_cleanup() {\n" +
56
- ' if [ -n "$autoloops_child_pid" ]; then\n' +
57
- ' kill "$autoloops_child_pid" 2>/dev/null || true\n' +
58
- ' wait "$autoloops_child_pid" 2>/dev/null || true\n' +
59
- " fi\n" +
60
- "}\n" +
61
- "trap 'autoloops_cleanup; exit 130' INT TERM\n" +
62
- "(\n" +
63
- command +
64
- "\n) &\n" +
65
- "autoloops_child_pid=$!\n" +
66
- 'wait "$autoloops_child_pid"\n' +
67
- "autoloops_status=$?\n" +
68
- "trap - INT TERM\n" +
69
- 'exit "$autoloops_status"\n');
70
- }
71
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/backend/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AASvD,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACvC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,IAAI,IAAI,OAAO,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAA0B;IACjE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,qBAAqB,CACpC,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,MAAM,EACV,UAAU,EACV,GAAG,CAAC,UAAU,CACf,CAAC;IACF,MAAM,YAAY,GAChB,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI;QACpB,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;QAC9C,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,YAAoB,EACpB,OAAe,EACf,SAAiB;IAEjB,OAAO,eAAe,CAAC,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAIrC;IACC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACxC,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IACxD,OAAO,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC;AAChC,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAsB,EACtB,MAAc,EACd,UAAkB,EAClB,UAAkB;IAElB,IAAI,KAAK,GACP,UAAU;QACV,8BAA8B;QAC9B,UAAU,CAAC,UAAU,CAAC;QACtB,IAAI;QACJ,cAAc;QACd,UAAU,CAAC,MAAM,CAAC;QAClB,KAAK;QACL,UAAU,CAAC,UAAU,CAAC;QACtB,IAAI,CAAC;IACP,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACvB,KAAK,IAAI,0BAA0B,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAe;IAC5C,OAAO,CACL,0BAA0B;QAC1B,yBAAyB;QACzB,4CAA4C;QAC5C,uDAAuD;QACvD,uDAAuD;QACvD,QAAQ;QACR,KAAK;QACL,+CAA+C;QAC/C,KAAK;QACL,OAAO;QACP,SAAS;QACT,0BAA0B;QAC1B,+BAA+B;QAC/B,uBAAuB;QACvB,mBAAmB;QACnB,4BAA4B,CAC7B,CAAC;AACJ,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Synchronous bridge to the kiro ACP worker thread.
3
- * Uses SharedArrayBuffer + Atomics to block the main thread
4
- * while the worker processes async ACP operations.
5
- */
6
- import { Worker } from "node:worker_threads";
7
- import type { AcpClientOptions } from "./acp-client.js";
8
- import type { BackendRunResult } from "./types.js";
9
- /** Signal the bridge to abort the current blocking wait. */
10
- export declare function signalInterrupt(): void;
11
- export interface KiroSessionHandle {
12
- worker: Worker;
13
- controlBuffer: SharedArrayBuffer;
14
- dataBuffer: SharedArrayBuffer;
15
- }
16
- export declare function initKiroSession(opts: AcpClientOptions): KiroSessionHandle;
17
- export declare function runKiroIterationSync(handle: KiroSessionHandle, prompt: string, timeoutMs: number): BackendRunResult;
18
- export declare function setKiroSessionMode(handle: KiroSessionHandle, agentName: string): void;
19
- export declare function terminateKiroSession(handle: KiroSessionHandle): void;
@@ -1,114 +0,0 @@
1
- /**
2
- * Synchronous bridge to the kiro ACP worker thread.
3
- * Uses SharedArrayBuffer + Atomics to block the main thread
4
- * while the worker processes async ACP operations.
5
- */
6
- import { join } from "node:path";
7
- import { fileURLToPath } from "node:url";
8
- import { Worker } from "node:worker_threads";
9
- const DATA_BUFFER_SIZE = 4 * 1024 * 1024; // 4 MB for prompt/response data
10
- const POLL_INTERVAL_MS = 500;
11
- let interrupted = false;
12
- /** PID of the detached kiro-cli child process (set after init). */
13
- let acpChildPid;
14
- /** Signal the bridge to abort the current blocking wait. */
15
- export function signalInterrupt() {
16
- interrupted = true;
17
- // Forward the signal to the detached child process group so kiro-cli
18
- // exits even though it doesn't share our process group.
19
- if (acpChildPid) {
20
- try {
21
- process.kill(-acpChildPid, "SIGTERM");
22
- }
23
- catch {
24
- /* child may already be gone */
25
- }
26
- }
27
- }
28
- function sendCommand(handle, cmd) {
29
- const control = new Int32Array(handle.controlBuffer);
30
- const data = new Uint8Array(handle.dataBuffer);
31
- const encoder = new TextEncoder();
32
- const decoder = new TextDecoder();
33
- // Write command
34
- const json = encoder.encode(JSON.stringify(cmd));
35
- new DataView(handle.dataBuffer).setUint32(0, json.length);
36
- data.set(json, 4);
37
- // Signal worker
38
- Atomics.store(control, 0, 1);
39
- Atomics.notify(control, 0);
40
- // Block until worker signals result (control[0] = 2)
41
- // Poll with timeout so SIGINT can interrupt the wait
42
- while (Atomics.wait(control, 0, 1, POLL_INTERVAL_MS) === "timed-out") {
43
- if (interrupted) {
44
- throw new Error("kiro bridge interrupted by signal");
45
- }
46
- }
47
- // Read result
48
- const len = new DataView(handle.dataBuffer).getUint32(0);
49
- const resultJson = decoder.decode(data.slice(4, 4 + len));
50
- Atomics.store(control, 0, 0); // reset for next command
51
- Atomics.notify(control, 0); // wake worker waiting on Atomics.wait(control, 0, 2)
52
- return JSON.parse(resultJson);
53
- }
54
- export function initKiroSession(opts) {
55
- const controlBuffer = new SharedArrayBuffer(4);
56
- const dataBuffer = new SharedArrayBuffer(DATA_BUFFER_SIZE);
57
- const control = new Int32Array(controlBuffer);
58
- Atomics.store(control, 0, 0);
59
- const workerPath = join(fileURLToPath(import.meta.url), "..", "kiro-worker.js");
60
- const worker = new Worker(workerPath, {
61
- workerData: { controlBuffer, dataBuffer, verbose: opts.verbose ?? false },
62
- });
63
- const handle = { worker, controlBuffer, dataBuffer };
64
- const result = sendCommand(handle, { type: "init", opts });
65
- if (!result.ok)
66
- throw new Error("Failed to init kiro session: " + result.error);
67
- acpChildPid = result.childPid ?? undefined;
68
- return handle;
69
- }
70
- export function runKiroIterationSync(handle, prompt, timeoutMs) {
71
- const result = sendCommand(handle, { type: "prompt", prompt, timeoutMs });
72
- if (!result.ok) {
73
- return {
74
- output: result.error || "",
75
- exitCode: 1,
76
- timedOut: false,
77
- providerKind: "kiro",
78
- errorCategory: "non_zero_exit",
79
- };
80
- }
81
- return {
82
- output: result.output || "",
83
- exitCode: result.error ? 1 : 0,
84
- timedOut: result.timedOut || false,
85
- providerKind: "kiro",
86
- errorCategory: result.timedOut
87
- ? "timeout"
88
- : result.error
89
- ? "non_zero_exit"
90
- : "none",
91
- };
92
- }
93
- export function setKiroSessionMode(handle, agentName) {
94
- const result = sendCommand(handle, { type: "set_mode", agentName });
95
- if (!result.ok) {
96
- // Non-fatal: log but don't crash the loop
97
- process.stderr.write(`[autoloop] warning: failed to set kiro agent mode "${agentName}": ${result.error}\n`);
98
- }
99
- }
100
- export function terminateKiroSession(handle) {
101
- sendCommand(handle, { type: "terminate" });
102
- acpChildPid = undefined;
103
- // Drain stderr — worker thread process.stderr.write() calls may still be
104
- // in-flight from sessionUpdate callbacks. A brief sync sleep lets them flush
105
- // before we kill the worker.
106
- const drain = new Int32Array(new SharedArrayBuffer(4));
107
- Atomics.wait(drain, 0, 0, 50);
108
- // Signal shutdown
109
- const control = new Int32Array(handle.controlBuffer);
110
- Atomics.store(control, 0, 3);
111
- Atomics.notify(control, 0);
112
- handle.worker.terminate();
113
- }
114
- //# sourceMappingURL=kiro-bridge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kiro-bridge.js","sourceRoot":"","sources":["../../src/backend/kiro-bridge.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,96 +0,0 @@
1
- /**
2
- * Worker thread that holds a persistent ACP session.
3
- * Communicates with the main thread via SharedArrayBuffer + Atomics.
4
- *
5
- * Protocol:
6
- * Main → Worker: write JSON command to dataBuffer, signal controlBuffer[0] = 1
7
- * Worker → Main: write JSON result to dataBuffer, signal controlBuffer[0] = 2
8
- * Commands: { type: "init", opts } | { type: "prompt", prompt, timeoutMs } | { type: "terminate" }
9
- */
10
- import { workerData } from "node:worker_threads";
11
- import { initAcpSession, sendAcpPrompt, terminateAcpSession, } from "./acp-client.js";
12
- const { controlBuffer, dataBuffer, verbose } = workerData;
13
- const control = new Int32Array(controlBuffer);
14
- const data = new Uint8Array(dataBuffer);
15
- const decoder = new TextDecoder();
16
- const encoder = new TextEncoder();
17
- let session = null;
18
- function readCommand() {
19
- const len = new DataView(dataBuffer).getUint32(0);
20
- const json = decoder.decode(data.slice(4, 4 + len));
21
- return JSON.parse(json);
22
- }
23
- function writeResult(result) {
24
- const json = encoder.encode(JSON.stringify(result));
25
- new DataView(dataBuffer).setUint32(0, json.length);
26
- data.set(json, 4);
27
- }
28
- async function handleCommand(cmd) {
29
- switch (cmd.type) {
30
- case "init": {
31
- session = await initAcpSession({ ...cmd.opts, verbose });
32
- return {
33
- ok: true,
34
- sessionId: session.sessionId,
35
- childPid: session.process.pid,
36
- };
37
- }
38
- case "prompt": {
39
- if (!session)
40
- return { ok: false, error: "no session" };
41
- const result = await sendAcpPrompt(session, cmd.prompt, cmd.timeoutMs);
42
- return { ok: true, ...result };
43
- }
44
- case "set_mode": {
45
- if (!session)
46
- return { ok: false, error: "no session" };
47
- try {
48
- await session.connection.setSessionMode({
49
- sessionId: session.sessionId,
50
- modeId: cmd.agentName,
51
- });
52
- return { ok: true };
53
- }
54
- catch (err) {
55
- return {
56
- ok: false,
57
- error: err instanceof Error ? err.message : String(err),
58
- };
59
- }
60
- }
61
- case "terminate": {
62
- if (session)
63
- await terminateAcpSession(session);
64
- session = null;
65
- return { ok: true };
66
- }
67
- default:
68
- return { ok: false, error: "unknown command: " + cmd.type };
69
- }
70
- }
71
- (async () => {
72
- while (true) {
73
- // Wait for main thread to signal a command (control[0] = 1)
74
- Atomics.wait(control, 0, 0);
75
- if (Atomics.load(control, 0) === 3)
76
- break; // shutdown signal
77
- const cmd = readCommand();
78
- let result;
79
- try {
80
- result = await handleCommand(cmd);
81
- }
82
- catch (err) {
83
- result = {
84
- ok: false,
85
- error: err instanceof Error ? err.message : String(err),
86
- };
87
- }
88
- writeResult(result);
89
- Atomics.store(control, 0, 2); // signal result ready
90
- Atomics.notify(control, 0);
91
- // Wait for main thread to acknowledge (reset to 0) before looping,
92
- // otherwise we'd immediately re-enter and read stale data.
93
- Atomics.wait(control, 0, 2);
94
- }
95
- })();
96
- //# sourceMappingURL=kiro-worker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kiro-worker.js","sourceRoot":"","sources":["../../src/backend/kiro-worker.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { BackendRunResult } from "./types.js";
2
- export declare function buildCommandInvocation(spec: {
3
- command: string;
4
- args: string[];
5
- promptMode: string;
6
- }, prompt: string): string;
7
- export declare function runShellCommand(providerKind: string, command: string, timeoutMs: number): BackendRunResult;