smol-symphony 0.2.0 → 0.3.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 (540) hide show
  1. package/AGENTS.md +41 -22
  2. package/DESIGN.md +494 -273
  3. package/README.md +109 -57
  4. package/SPEC.md +33 -24
  5. package/WORKFLOW.minimal.yaml +34 -0
  6. package/{WORKFLOW.template.md → WORKFLOW.template.yaml} +409 -256
  7. package/WORKFLOW.yaml +487 -0
  8. package/assets/skills/symphony-issues/SKILL.md +136 -0
  9. package/assets/symphony-mise.system.toml +68 -0
  10. package/dist/bin/symphony.js +22 -786
  11. package/dist/bin/symphony.js.map +1 -1
  12. package/dist/core/actions/context.js +109 -0
  13. package/dist/core/actions/context.js.map +1 -0
  14. package/dist/{actions/parsing.js → core/actions/parse.js} +33 -114
  15. package/dist/core/actions/parse.js.map +1 -0
  16. package/dist/core/actions/plan.js +197 -0
  17. package/dist/core/actions/plan.js.map +1 -0
  18. package/dist/core/actions/predicates.js +111 -0
  19. package/dist/core/actions/predicates.js.map +1 -0
  20. package/dist/core/actions/run-fold.js +248 -0
  21. package/dist/core/actions/run-fold.js.map +1 -0
  22. package/dist/core/actions/template.js +118 -0
  23. package/dist/core/actions/template.js.map +1 -0
  24. package/dist/core/cli/args.js +116 -0
  25. package/dist/core/cli/args.js.map +1 -0
  26. package/dist/core/coerce.js +75 -0
  27. package/dist/core/coerce.js.map +1 -0
  28. package/dist/core/credential/account-id.js +20 -0
  29. package/dist/core/credential/account-id.js.map +1 -0
  30. package/dist/core/credential/adapter-config.js +136 -0
  31. package/dist/core/credential/adapter-config.js.map +1 -0
  32. package/dist/core/credential/availability.js +98 -0
  33. package/dist/core/credential/availability.js.map +1 -0
  34. package/dist/core/credential/extract.js +228 -0
  35. package/dist/core/credential/extract.js.map +1 -0
  36. package/dist/core/credential/fake-creds.js +171 -0
  37. package/dist/core/credential/fake-creds.js.map +1 -0
  38. package/dist/core/credential/identity.js +125 -0
  39. package/dist/core/credential/identity.js.map +1 -0
  40. package/dist/core/credential/shape.js +230 -0
  41. package/dist/core/credential/shape.js.map +1 -0
  42. package/dist/core/credential/strings.js +15 -0
  43. package/dist/core/credential/strings.js.map +1 -0
  44. package/dist/core/doctor/checks.js +303 -0
  45. package/dist/core/doctor/checks.js.map +1 -0
  46. package/dist/core/git/result.js +107 -0
  47. package/dist/core/git/result.js.map +1 -0
  48. package/dist/core/http/decisions.js +225 -0
  49. package/dist/core/http/decisions.js.map +1 -0
  50. package/dist/{http.js → core/http/render.js} +472 -738
  51. package/dist/core/http/render.js.map +1 -0
  52. package/dist/{http-handlers.js → core/http/routes.js} +52 -87
  53. package/dist/core/http/routes.js.map +1 -0
  54. package/dist/core/http/views.js +181 -0
  55. package/dist/core/http/views.js.map +1 -0
  56. package/dist/core/image/managed-image.js +95 -0
  57. package/dist/core/image/managed-image.js.map +1 -0
  58. package/dist/core/issue/file.js +149 -0
  59. package/dist/core/issue/file.js.map +1 -0
  60. package/dist/core/issue/parse.js +210 -0
  61. package/dist/core/issue/parse.js.map +1 -0
  62. package/dist/core/mcp/dispatch.js +239 -0
  63. package/dist/core/mcp/dispatch.js.map +1 -0
  64. package/dist/core/mcp/post-move.js +92 -0
  65. package/dist/core/mcp/post-move.js.map +1 -0
  66. package/dist/core/mcp/protocol.js +293 -0
  67. package/dist/core/mcp/protocol.js.map +1 -0
  68. package/dist/core/mcp/url.js +162 -0
  69. package/dist/core/mcp/url.js.map +1 -0
  70. package/dist/core/path.js +63 -0
  71. package/dist/core/path.js.map +1 -0
  72. package/dist/core/reconcile/image-decide.js +48 -0
  73. package/dist/core/reconcile/image-decide.js.map +1 -0
  74. package/dist/core/reconcile/ledger.js +142 -0
  75. package/dist/core/reconcile/ledger.js.map +1 -0
  76. package/dist/core/reconcile/pr-classify.js +62 -0
  77. package/dist/core/reconcile/pr-classify.js.map +1 -0
  78. package/dist/{reconciler → core/reconcile}/pr-decide.js +25 -12
  79. package/dist/core/reconcile/pr-decide.js.map +1 -0
  80. package/dist/core/reconcile/pr-loop.js +161 -0
  81. package/dist/core/reconcile/pr-loop.js.map +1 -0
  82. package/dist/core/reconcile/pr-notes.js +35 -0
  83. package/dist/core/reconcile/pr-notes.js.map +1 -0
  84. package/dist/core/reconcile/vm-decide.js +70 -0
  85. package/dist/core/reconcile/vm-decide.js.map +1 -0
  86. package/dist/core/reconcile/vm-reap.js +207 -0
  87. package/dist/core/reconcile/vm-reap.js.map +1 -0
  88. package/dist/core/reconcile/workspace-decide.js +162 -0
  89. package/dist/core/reconcile/workspace-decide.js.map +1 -0
  90. package/dist/core/runlog/summary.js +231 -0
  91. package/dist/core/runlog/summary.js.map +1 -0
  92. package/dist/core/runner/dispatch-config.js +95 -0
  93. package/dist/core/runner/dispatch-config.js.map +1 -0
  94. package/dist/core/runner/injection.js +61 -0
  95. package/dist/core/runner/injection.js.map +1 -0
  96. package/dist/core/runner/mise.js +210 -0
  97. package/dist/core/runner/mise.js.map +1 -0
  98. package/dist/core/runner/prompt.js +720 -0
  99. package/dist/core/runner/prompt.js.map +1 -0
  100. package/dist/core/runner/turn.js +242 -0
  101. package/dist/core/runner/turn.js.map +1 -0
  102. package/dist/core/runner/vm-plan.js +390 -0
  103. package/dist/core/runner/vm-plan.js.map +1 -0
  104. package/dist/core/schedule/admission.js +123 -0
  105. package/dist/core/schedule/admission.js.map +1 -0
  106. package/dist/core/schedule/circuit-breaker.js +111 -0
  107. package/dist/core/schedule/circuit-breaker.js.map +1 -0
  108. package/dist/core/schedule/eligibility.js +83 -0
  109. package/dist/core/schedule/eligibility.js.map +1 -0
  110. package/dist/core/schedule/reconcile-issue.js +82 -0
  111. package/dist/core/schedule/reconcile-issue.js.map +1 -0
  112. package/dist/core/schedule/retry.js +96 -0
  113. package/dist/core/schedule/retry.js.map +1 -0
  114. package/dist/core/schedule/sleep-cycle.js +133 -0
  115. package/dist/core/schedule/sleep-cycle.js.map +1 -0
  116. package/dist/core/schedule/slots.js +124 -0
  117. package/dist/core/schedule/slots.js.map +1 -0
  118. package/dist/core/schedule/tick.js +553 -0
  119. package/dist/core/schedule/tick.js.map +1 -0
  120. package/dist/core/schedule/token-fold.js +181 -0
  121. package/dist/core/schedule/token-fold.js.map +1 -0
  122. package/dist/core/state-resolve.js +86 -0
  123. package/dist/core/state-resolve.js.map +1 -0
  124. package/dist/core/vm-guards.js +278 -0
  125. package/dist/core/vm-guards.js.map +1 -0
  126. package/dist/core/workflow/derive.js +107 -0
  127. package/dist/core/workflow/derive.js.map +1 -0
  128. package/dist/core/workflow/parse.js +687 -0
  129. package/dist/core/workflow/parse.js.map +1 -0
  130. package/dist/core/workflow/prompt-probe.js +78 -0
  131. package/dist/core/workflow/prompt-probe.js.map +1 -0
  132. package/dist/core/workflow/validate.js +189 -0
  133. package/dist/core/workflow/validate.js.map +1 -0
  134. package/dist/core/workspace-key.js +19 -0
  135. package/dist/core/workspace-key.js.map +1 -0
  136. package/dist/shell/actions-runner.js +356 -0
  137. package/dist/shell/actions-runner.js.map +1 -0
  138. package/dist/shell/adapter/adapter-registry.js +45 -0
  139. package/dist/shell/adapter/adapter-registry.js.map +1 -0
  140. package/dist/shell/adapter/clock-random.js +96 -0
  141. package/dist/shell/adapter/clock-random.js.map +1 -0
  142. package/dist/shell/adapter/gondolin-dispatch-helpers.js +158 -0
  143. package/dist/shell/adapter/gondolin-dispatch-helpers.js.map +1 -0
  144. package/dist/shell/adapter/gondolin-dispatch.js +385 -0
  145. package/dist/shell/adapter/gondolin-dispatch.js.map +1 -0
  146. package/dist/shell/adapter/gondolin-image-converter.js +233 -0
  147. package/dist/shell/adapter/gondolin-image-converter.js.map +1 -0
  148. package/dist/shell/adapter/gondolin-image-fetch.js +180 -0
  149. package/dist/shell/adapter/gondolin-image-fetch.js.map +1 -0
  150. package/dist/shell/adapter/launcher-asset.js +57 -0
  151. package/dist/shell/adapter/launcher-asset.js.map +1 -0
  152. package/dist/shell/adapter/mise-config-asset.js +65 -0
  153. package/dist/shell/adapter/mise-config-asset.js.map +1 -0
  154. package/dist/shell/adapter/workflow-loader.js +304 -0
  155. package/dist/shell/adapter/workflow-loader.js.map +1 -0
  156. package/dist/shell/cli/doctor.js +268 -0
  157. package/dist/shell/cli/doctor.js.map +1 -0
  158. package/dist/shell/effect-interpreter-families.js +314 -0
  159. package/dist/shell/effect-interpreter-families.js.map +1 -0
  160. package/dist/shell/effect-interpreter.js +29 -0
  161. package/dist/shell/effect-interpreter.js.map +1 -0
  162. package/dist/shell/interp/acp-frame.js +137 -0
  163. package/dist/shell/interp/acp-frame.js.map +1 -0
  164. package/dist/shell/interp/acp-ws-conn.js +320 -0
  165. package/dist/shell/interp/acp-ws-conn.js.map +1 -0
  166. package/dist/shell/interp/acp-ws-frames.js +159 -0
  167. package/dist/shell/interp/acp-ws-frames.js.map +1 -0
  168. package/dist/shell/interp/acp-ws.js +197 -0
  169. package/dist/shell/interp/acp-ws.js.map +1 -0
  170. package/dist/shell/interp/acp.js +319 -0
  171. package/dist/shell/interp/acp.js.map +1 -0
  172. package/dist/shell/interp/credential-defaults.js +128 -0
  173. package/dist/shell/interp/credential-defaults.js.map +1 -0
  174. package/dist/shell/interp/credential-hooks.js +149 -0
  175. package/dist/shell/interp/credential-hooks.js.map +1 -0
  176. package/dist/shell/interp/credential-registry.js +226 -0
  177. package/dist/shell/interp/credential-registry.js.map +1 -0
  178. package/dist/shell/interp/credential.js +103 -0
  179. package/dist/shell/interp/credential.js.map +1 -0
  180. package/dist/shell/interp/gh.js +163 -0
  181. package/dist/shell/interp/gh.js.map +1 -0
  182. package/dist/shell/interp/git.js +28 -0
  183. package/dist/shell/interp/git.js.map +1 -0
  184. package/dist/shell/interp/log.js +213 -0
  185. package/dist/shell/interp/log.js.map +1 -0
  186. package/dist/shell/interp/process.js +178 -0
  187. package/dist/shell/interp/process.js.map +1 -0
  188. package/dist/shell/interp/runlog.js +193 -0
  189. package/dist/shell/interp/runlog.js.map +1 -0
  190. package/dist/shell/interp/timer.js +64 -0
  191. package/dist/shell/interp/timer.js.map +1 -0
  192. package/dist/shell/interp/tracker-disk.js +99 -0
  193. package/dist/shell/interp/tracker-disk.js.map +1 -0
  194. package/dist/shell/interp/tracker-parse.js +71 -0
  195. package/dist/shell/interp/tracker-parse.js.map +1 -0
  196. package/dist/shell/interp/tracker-scan.js +238 -0
  197. package/dist/shell/interp/tracker-scan.js.map +1 -0
  198. package/dist/shell/interp/tracker-write.js +91 -0
  199. package/dist/shell/interp/tracker-write.js.map +1 -0
  200. package/dist/shell/interp/tracker.js +41 -0
  201. package/dist/shell/interp/tracker.js.map +1 -0
  202. package/dist/shell/interp/tty.js +48 -0
  203. package/dist/shell/interp/tty.js.map +1 -0
  204. package/dist/shell/interp/vm.js +199 -0
  205. package/dist/shell/interp/vm.js.map +1 -0
  206. package/dist/shell/interp/workspace.js +310 -0
  207. package/dist/shell/interp/workspace.js.map +1 -0
  208. package/dist/shell/main-acp.js +78 -0
  209. package/dist/shell/main-acp.js.map +1 -0
  210. package/dist/shell/main-adapters.js +222 -0
  211. package/dist/shell/main-adapters.js.map +1 -0
  212. package/dist/shell/main-credential.js +122 -0
  213. package/dist/shell/main-credential.js.map +1 -0
  214. package/dist/shell/main-doctor.js +22 -0
  215. package/dist/shell/main-doctor.js.map +1 -0
  216. package/dist/shell/main-entry.js +46 -0
  217. package/dist/shell/main-entry.js.map +1 -0
  218. package/dist/shell/main-http-csrf.js +45 -0
  219. package/dist/shell/main-http-csrf.js.map +1 -0
  220. package/dist/shell/main-http-handler.js +389 -0
  221. package/dist/shell/main-http-handler.js.map +1 -0
  222. package/dist/shell/main-http-mcp.js +122 -0
  223. package/dist/shell/main-http-mcp.js.map +1 -0
  224. package/dist/shell/main-http-views.js +253 -0
  225. package/dist/shell/main-http-views.js.map +1 -0
  226. package/dist/shell/main-http.js +76 -0
  227. package/dist/shell/main-http.js.map +1 -0
  228. package/dist/shell/main-loops.js +130 -0
  229. package/dist/shell/main-loops.js.map +1 -0
  230. package/dist/shell/main-mcp.js +129 -0
  231. package/dist/shell/main-mcp.js.map +1 -0
  232. package/dist/shell/main-orchestrator.js +120 -0
  233. package/dist/shell/main-orchestrator.js.map +1 -0
  234. package/dist/shell/main-preflight.js +43 -0
  235. package/dist/shell/main-preflight.js.map +1 -0
  236. package/dist/shell/main-reconcilers-helpers.js +244 -0
  237. package/dist/shell/main-reconcilers-helpers.js.map +1 -0
  238. package/dist/shell/main-reconcilers-pr.js +148 -0
  239. package/dist/shell/main-reconcilers-pr.js.map +1 -0
  240. package/dist/shell/main-reconcilers.js +225 -0
  241. package/dist/shell/main-reconcilers.js.map +1 -0
  242. package/dist/shell/main-runner.js +355 -0
  243. package/dist/shell/main-runner.js.map +1 -0
  244. package/dist/shell/main-scaffold.js +116 -0
  245. package/dist/shell/main-scaffold.js.map +1 -0
  246. package/dist/shell/main-shutdown.js +115 -0
  247. package/dist/shell/main-shutdown.js.map +1 -0
  248. package/dist/shell/main-startup.js +48 -0
  249. package/dist/shell/main-startup.js.map +1 -0
  250. package/dist/shell/main-substrates.js +43 -0
  251. package/dist/shell/main-substrates.js.map +1 -0
  252. package/dist/shell/main.js +385 -0
  253. package/dist/shell/main.js.map +1 -0
  254. package/dist/shell/orchestrator-feedback.js +69 -0
  255. package/dist/shell/orchestrator-feedback.js.map +1 -0
  256. package/dist/shell/orchestrator-image.js +167 -0
  257. package/dist/shell/orchestrator-image.js.map +1 -0
  258. package/dist/shell/orchestrator-loop.js +468 -0
  259. package/dist/shell/orchestrator-loop.js.map +1 -0
  260. package/dist/shell/orchestrator-reconcile.js +36 -0
  261. package/dist/shell/orchestrator-reconcile.js.map +1 -0
  262. package/dist/shell/reconciler-loop.js +228 -0
  263. package/dist/shell/reconciler-loop.js.map +1 -0
  264. package/dist/shell/runner-loop-turn.js +301 -0
  265. package/dist/shell/runner-loop-turn.js.map +1 -0
  266. package/dist/shell/runner-loop.js +338 -0
  267. package/dist/shell/runner-loop.js.map +1 -0
  268. package/dist/shell/server/http.js +208 -0
  269. package/dist/shell/server/http.js.map +1 -0
  270. package/dist/shell/server/mcp-runtime-effects.js +237 -0
  271. package/dist/shell/server/mcp-runtime-effects.js.map +1 -0
  272. package/dist/shell/server/mcp-runtime.js +99 -0
  273. package/dist/shell/server/mcp-runtime.js.map +1 -0
  274. package/dist/shell/workspace-key.js +14 -0
  275. package/dist/shell/workspace-key.js.map +1 -0
  276. package/dist/types/acp.js +8 -0
  277. package/dist/types/acp.js.map +1 -0
  278. package/dist/types/actions/plan.js +6 -0
  279. package/dist/types/actions/plan.js.map +1 -0
  280. package/dist/types/actions/predicates.js +6 -0
  281. package/dist/types/actions/predicates.js.map +1 -0
  282. package/dist/types/actions/run-fold.js +8 -0
  283. package/dist/types/actions/run-fold.js.map +1 -0
  284. package/dist/types/actions.js +7 -0
  285. package/dist/types/actions.js.map +1 -0
  286. package/dist/types/adapter/clock-random.js +4 -0
  287. package/dist/types/adapter/clock-random.js.map +1 -0
  288. package/dist/types/adapter/gondolin-image-converter.js +5 -0
  289. package/dist/types/adapter/gondolin-image-converter.js.map +1 -0
  290. package/dist/types/adapter/gondolin-image-fetch.js +5 -0
  291. package/dist/types/adapter/gondolin-image-fetch.js.map +1 -0
  292. package/dist/types/adapter/workflow-loader.js +4 -0
  293. package/dist/types/adapter/workflow-loader.js.map +1 -0
  294. package/dist/types/cli/args.js +8 -0
  295. package/dist/types/cli/args.js.map +1 -0
  296. package/dist/types/config.js +8 -0
  297. package/dist/types/config.js.map +1 -0
  298. package/dist/types/credential-interp.js +6 -0
  299. package/dist/types/credential-interp.js.map +1 -0
  300. package/dist/types/credentials.js +10 -0
  301. package/dist/types/credentials.js.map +1 -0
  302. package/dist/types/doctor.js +7 -0
  303. package/dist/types/doctor.js.map +1 -0
  304. package/dist/types/domain.js +7 -0
  305. package/dist/types/domain.js.map +1 -0
  306. package/dist/types/effect.js +15 -0
  307. package/dist/types/effect.js.map +1 -0
  308. package/dist/types/errors.js +39 -0
  309. package/dist/types/errors.js.map +1 -0
  310. package/dist/types/http/decisions.js +6 -0
  311. package/dist/types/http/decisions.js.map +1 -0
  312. package/dist/types/http/render.js +10 -0
  313. package/dist/types/http/render.js.map +1 -0
  314. package/dist/types/http/views.js +6 -0
  315. package/dist/types/http/views.js.map +1 -0
  316. package/dist/types/http.js +9 -0
  317. package/dist/types/http.js.map +1 -0
  318. package/dist/types/image/managed-image.js +7 -0
  319. package/dist/types/image/managed-image.js.map +1 -0
  320. package/dist/types/interp/effect-interpreter.js +8 -0
  321. package/dist/types/interp/effect-interpreter.js.map +1 -0
  322. package/dist/types/interp/tracker.js +7 -0
  323. package/dist/types/interp/tracker.js.map +1 -0
  324. package/dist/types/issue/file.js +6 -0
  325. package/dist/types/issue/file.js.map +1 -0
  326. package/dist/types/issue/parse.js +8 -0
  327. package/dist/types/issue/parse.js.map +1 -0
  328. package/dist/types/main-acp.js +13 -0
  329. package/dist/types/main-acp.js.map +1 -0
  330. package/dist/types/main-adapters.js +5 -0
  331. package/dist/types/main-adapters.js.map +1 -0
  332. package/dist/types/main-credential.js +21 -0
  333. package/dist/types/main-credential.js.map +1 -0
  334. package/dist/types/main-doctor.js +6 -0
  335. package/dist/types/main-doctor.js.map +1 -0
  336. package/dist/types/main-http-handler.js +12 -0
  337. package/dist/types/main-http-handler.js.map +1 -0
  338. package/dist/types/main-http.js +5 -0
  339. package/dist/types/main-http.js.map +1 -0
  340. package/dist/types/main-loops.js +5 -0
  341. package/dist/types/main-loops.js.map +1 -0
  342. package/dist/types/main-mcp.js +12 -0
  343. package/dist/types/main-mcp.js.map +1 -0
  344. package/dist/types/main-orchestrator.js +5 -0
  345. package/dist/types/main-orchestrator.js.map +1 -0
  346. package/dist/types/main-reconcilers.js +11 -0
  347. package/dist/types/main-reconcilers.js.map +1 -0
  348. package/dist/types/main-runner.js +13 -0
  349. package/dist/types/main-runner.js.map +1 -0
  350. package/dist/types/main-startup.js +5 -0
  351. package/dist/types/main-startup.js.map +1 -0
  352. package/dist/types/main-substrates.js +5 -0
  353. package/dist/types/main-substrates.js.map +1 -0
  354. package/dist/types/mcp/dispatch.js +4 -0
  355. package/dist/types/mcp/dispatch.js.map +1 -0
  356. package/dist/types/mcp/post-move.js +7 -0
  357. package/dist/types/mcp/post-move.js.map +1 -0
  358. package/dist/types/mcp.js +9 -0
  359. package/dist/types/mcp.js.map +1 -0
  360. package/dist/types/ports.js +12 -0
  361. package/dist/types/ports.js.map +1 -0
  362. package/dist/types/reconcile/image-decide.js +5 -0
  363. package/dist/types/reconcile/image-decide.js.map +1 -0
  364. package/dist/types/reconcile/ledger.js +7 -0
  365. package/dist/types/reconcile/ledger.js.map +1 -0
  366. package/dist/types/reconcile/pr-loop.js +8 -0
  367. package/dist/types/reconcile/pr-loop.js.map +1 -0
  368. package/dist/types/reconcile/vm-reap.js +8 -0
  369. package/dist/types/reconcile/vm-reap.js.map +1 -0
  370. package/dist/types/reconcile/workspace-decide.js +7 -0
  371. package/dist/types/reconcile/workspace-decide.js.map +1 -0
  372. package/dist/types/reconcile.js +9 -0
  373. package/dist/types/reconcile.js.map +1 -0
  374. package/dist/types/runlog.js +7 -0
  375. package/dist/types/runlog.js.map +1 -0
  376. package/dist/types/runner/actions-runner.js +12 -0
  377. package/dist/types/runner/actions-runner.js.map +1 -0
  378. package/dist/types/runner/gondolin-dispatch.js +5 -0
  379. package/dist/types/runner/gondolin-dispatch.js.map +1 -0
  380. package/dist/types/runner/injection.js +6 -0
  381. package/dist/types/runner/injection.js.map +1 -0
  382. package/dist/types/runner/runner-loop.js +5 -0
  383. package/dist/types/runner/runner-loop.js.map +1 -0
  384. package/dist/types/runner/turn.js +4 -0
  385. package/dist/types/runner/turn.js.map +1 -0
  386. package/dist/types/runner/vm-plan.js +4 -0
  387. package/dist/types/runner/vm-plan.js.map +1 -0
  388. package/dist/types/runtime.js +9 -0
  389. package/dist/types/runtime.js.map +1 -0
  390. package/dist/types/schedule/admission.js +7 -0
  391. package/dist/types/schedule/admission.js.map +1 -0
  392. package/dist/types/schedule/circuit-breaker.js +2 -0
  393. package/dist/types/schedule/circuit-breaker.js.map +1 -0
  394. package/dist/types/schedule/eligibility.js +9 -0
  395. package/dist/types/schedule/eligibility.js.map +1 -0
  396. package/dist/types/schedule/orchestrator-loop.js +10 -0
  397. package/dist/types/schedule/orchestrator-loop.js.map +1 -0
  398. package/dist/types/schedule/sleep-cycle.js +4 -0
  399. package/dist/types/schedule/sleep-cycle.js.map +1 -0
  400. package/dist/types/schedule/slots.js +8 -0
  401. package/dist/types/schedule/slots.js.map +1 -0
  402. package/dist/types/schedule/tick.js +9 -0
  403. package/dist/types/schedule/tick.js.map +1 -0
  404. package/dist/types/server/mcp-runtime.js +8 -0
  405. package/dist/types/server/mcp-runtime.js.map +1 -0
  406. package/dist/types/workflow/parse.js +4 -0
  407. package/dist/types/workflow/parse.js.map +1 -0
  408. package/package.json +22 -10
  409. package/patches/@earendil-works+gondolin+0.12.0.patch +173 -0
  410. package/prompts/Reflect.md +91 -0
  411. package/prompts/Review.md +97 -0
  412. package/prompts/Todo.md +96 -0
  413. package/prompts/_footer.md +41 -0
  414. package/prompts/_preamble.md +42 -0
  415. package/prompts-minimal/Todo.md +26 -0
  416. package/scripts/postinstall.mjs +63 -0
  417. package/scripts/vm-agent.mjs +312 -90
  418. package/WORKFLOW.md +0 -744
  419. package/dist/acp-bridge.js +0 -324
  420. package/dist/acp-bridge.js.map +0 -1
  421. package/dist/actions/cache.js +0 -191
  422. package/dist/actions/cache.js.map +0 -1
  423. package/dist/actions/effects.js +0 -41
  424. package/dist/actions/effects.js.map +0 -1
  425. package/dist/actions/executor.js +0 -570
  426. package/dist/actions/executor.js.map +0 -1
  427. package/dist/actions/index.js +0 -13
  428. package/dist/actions/index.js.map +0 -1
  429. package/dist/actions/parsing.js.map +0 -1
  430. package/dist/actions/predicate-env.js +0 -27
  431. package/dist/actions/predicate-env.js.map +0 -1
  432. package/dist/actions/predicates.js +0 -49
  433. package/dist/actions/predicates.js.map +0 -1
  434. package/dist/actions/templating.js +0 -66
  435. package/dist/actions/templating.js.map +0 -1
  436. package/dist/actions/types.js +0 -15
  437. package/dist/actions/types.js.map +0 -1
  438. package/dist/agent/acp.js +0 -473
  439. package/dist/agent/acp.js.map +0 -1
  440. package/dist/agent/adapter-names.js +0 -159
  441. package/dist/agent/adapter-names.js.map +0 -1
  442. package/dist/agent/adapters.js +0 -511
  443. package/dist/agent/adapters.js.map +0 -1
  444. package/dist/agent/credential-extractors.js +0 -342
  445. package/dist/agent/credential-extractors.js.map +0 -1
  446. package/dist/agent/credential-secrets.js +0 -628
  447. package/dist/agent/credential-secrets.js.map +0 -1
  448. package/dist/agent/credential-ticker.js +0 -57
  449. package/dist/agent/credential-ticker.js.map +0 -1
  450. package/dist/agent/gondolin-creds-staging.js +0 -356
  451. package/dist/agent/gondolin-creds-staging.js.map +0 -1
  452. package/dist/agent/gondolin-dispatch.js +0 -375
  453. package/dist/agent/gondolin-dispatch.js.map +0 -1
  454. package/dist/agent/gondolin.js +0 -124
  455. package/dist/agent/gondolin.js.map +0 -1
  456. package/dist/agent/runner-decisions.js +0 -134
  457. package/dist/agent/runner-decisions.js.map +0 -1
  458. package/dist/agent/runner.js +0 -1456
  459. package/dist/agent/runner.js.map +0 -1
  460. package/dist/agent/tool-call-summary.js +0 -102
  461. package/dist/agent/tool-call-summary.js.map +0 -1
  462. package/dist/agent/vm-acp-mapping.js +0 -73
  463. package/dist/agent/vm-acp-mapping.js.map +0 -1
  464. package/dist/agent/vm-guards.js +0 -262
  465. package/dist/agent/vm-guards.js.map +0 -1
  466. package/dist/agent/vm-port.js +0 -22
  467. package/dist/agent/vm-port.js.map +0 -1
  468. package/dist/agent/vm-process-registry.js +0 -79
  469. package/dist/agent/vm-process-registry.js.map +0 -1
  470. package/dist/bin/cli-args.js +0 -105
  471. package/dist/bin/cli-args.js.map +0 -1
  472. package/dist/errors.js +0 -15
  473. package/dist/errors.js.map +0 -1
  474. package/dist/http-disk.js +0 -135
  475. package/dist/http-disk.js.map +0 -1
  476. package/dist/http-handlers.js.map +0 -1
  477. package/dist/http.js.map +0 -1
  478. package/dist/issues.js +0 -178
  479. package/dist/issues.js.map +0 -1
  480. package/dist/logging.js +0 -203
  481. package/dist/logging.js.map +0 -1
  482. package/dist/mcp.js +0 -706
  483. package/dist/mcp.js.map +0 -1
  484. package/dist/memory.js +0 -85
  485. package/dist/memory.js.map +0 -1
  486. package/dist/orchestrator-decisions.js +0 -331
  487. package/dist/orchestrator-decisions.js.map +0 -1
  488. package/dist/orchestrator.js +0 -1569
  489. package/dist/orchestrator.js.map +0 -1
  490. package/dist/prompt.js +0 -65
  491. package/dist/prompt.js.map +0 -1
  492. package/dist/reconciler/cache.js +0 -65
  493. package/dist/reconciler/cache.js.map +0 -1
  494. package/dist/reconciler/index.js +0 -448
  495. package/dist/reconciler/index.js.map +0 -1
  496. package/dist/reconciler/ledger.js +0 -131
  497. package/dist/reconciler/ledger.js.map +0 -1
  498. package/dist/reconciler/pr-adapters.js +0 -174
  499. package/dist/reconciler/pr-adapters.js.map +0 -1
  500. package/dist/reconciler/pr-decide.js.map +0 -1
  501. package/dist/reconciler/pr.js +0 -422
  502. package/dist/reconciler/pr.js.map +0 -1
  503. package/dist/reconciler/types.js +0 -12
  504. package/dist/reconciler/types.js.map +0 -1
  505. package/dist/reconciler/vm.js +0 -243
  506. package/dist/reconciler/vm.js.map +0 -1
  507. package/dist/reconciler/workspace-defaults.js +0 -83
  508. package/dist/reconciler/workspace-defaults.js.map +0 -1
  509. package/dist/reconciler/workspace.js +0 -272
  510. package/dist/reconciler/workspace.js.map +0 -1
  511. package/dist/runlog.js +0 -403
  512. package/dist/runlog.js.map +0 -1
  513. package/dist/scaffold.js +0 -165
  514. package/dist/scaffold.js.map +0 -1
  515. package/dist/trackers/local.js +0 -445
  516. package/dist/trackers/local.js.map +0 -1
  517. package/dist/trackers/types.js +0 -10
  518. package/dist/trackers/types.js.map +0 -1
  519. package/dist/types.js +0 -3
  520. package/dist/types.js.map +0 -1
  521. package/dist/util/clock.js +0 -12
  522. package/dist/util/clock.js.map +0 -1
  523. package/dist/util/crypto.js +0 -25
  524. package/dist/util/crypto.js.map +0 -1
  525. package/dist/util/frontmatter.js +0 -70
  526. package/dist/util/frontmatter.js.map +0 -1
  527. package/dist/util/fs-issues.js +0 -22
  528. package/dist/util/fs-issues.js.map +0 -1
  529. package/dist/util/process.js +0 -152
  530. package/dist/util/process.js.map +0 -1
  531. package/dist/util/workspace-key.js +0 -10
  532. package/dist/util/workspace-key.js.map +0 -1
  533. package/dist/workflow-loader.js +0 -147
  534. package/dist/workflow-loader.js.map +0 -1
  535. package/dist/workflow.js +0 -822
  536. package/dist/workflow.js.map +0 -1
  537. package/dist/workspace-types.js +0 -8
  538. package/dist/workspace-types.js.map +0 -1
  539. package/dist/workspace.js +0 -443
  540. package/dist/workspace.js.map +0 -1
@@ -1,570 +0,0 @@
1
- // Action executor (issue 36). Runs a per-state typed-action list during the
2
- // runner's terminal cleanup, replacing the `after_run` shell hook for states
3
- // that declare an `actions:` block.
4
- //
5
- // Per-action lifecycle:
6
- // 1. Render templates against the ActionContext.
7
- // 2. Evaluate `if:` predicate; skip when false (record state=done with
8
- // `cache_hit: skipped` semantics).
9
- // 3. Apply the action via its kind-specific executor.
10
- // 4. On failure, consult `on_error.retry`; replay with exponential backoff.
11
- // 5. After retries exhausted, consult `on_error.then`: abort the cleanup
12
- // run, or reroute the issue to a holding state.
13
- //
14
- // The executor never mutates the issue's tracker state directly; reroute
15
- // requests are returned as `route_to` on the result and the runner (which
16
- // holds the McpRegistry / tracker) performs the move. The git/gh/exec side
17
- // stays pure-functional; the orchestrator-state side lives next to the
18
- // runner.
19
- import { setTimeout as delay } from 'node:timers/promises';
20
- import path from 'node:path';
21
- import { runProcess } from '../util/process.js';
22
- import { evaluatePredicate } from './predicates.js';
23
- import { computeCacheHash, invalidateCacheByName, readCache, runInVmCacheRoot, writeCache, } from './cache.js';
24
- import { planActions } from './effects.js';
25
- import { log } from '../logging.js';
26
- import { realClock, isoFromClock } from '../util/clock.js';
27
- const MAX_ACTION_HISTORY = 16;
28
- /**
29
- * Fallback `PredicateEnv` used when none is wired into the executor.
30
- * String-truthy predicates never touch the env, so an unwired executor still
31
- * evaluates `if: $var`. But a `branch_exists` / `file_present` call NEEDS IO
32
- * — throwing here surfaces the missing wiring on the action ledger instead
33
- * of silently returning false (which would let the action run unconditionally
34
- * after a workspace template error and mask the real bug).
35
- */
36
- const UNWIRED_PREDICATE_ENV = {
37
- async branchExists() {
38
- throw new Error('branch_exists predicate cannot evaluate: no predicateEnv wired into executor');
39
- },
40
- async pathExists() {
41
- throw new Error('file_present predicate cannot evaluate: no predicateEnv wired into executor');
42
- },
43
- };
44
- /**
45
- * Run a sequence of declared actions. Returns the aggregated outcome. The
46
- * caller is responsible for placing the result in the snapshot store.
47
- *
48
- * Sequential by design: today's actions all touch the same workspace and
49
- * the same remote, so parallelism would require declared inputs/outputs to
50
- * be honored (the issue body sketches that as future work). Stage-1
51
- * semantics: each action runs after the prior completes; the first
52
- * non-routed failure stops the loop with `ok=false`.
53
- */
54
- export async function runActions(actions, opts) {
55
- return runEffects(planActions(actions, opts.ctx), opts);
56
- }
57
- /** Drive planned `Effect`s. IO half of the planActions/runEffects split. */
58
- export async function runEffects(effects, opts) {
59
- const now = opts.now ?? realClock;
60
- const iso = () => isoFromClock(now);
61
- const ledger = [];
62
- const push = (status) => {
63
- ledger.unshift(status);
64
- if (ledger.length > MAX_ACTION_HISTORY * 2)
65
- ledger.length = MAX_ACTION_HISTORY * 2;
66
- };
67
- const upd = (action, next) => {
68
- const idx = ledger.findIndex((a) => a.action === action && a.state === 'in_progress');
69
- if (idx >= 0)
70
- ledger[idx] = { ...ledger[idx], ...next };
71
- };
72
- let routeTo = null;
73
- let abortReason = null;
74
- for (const effect of effects) {
75
- const step = await runOneEffect(effect, opts, push, upd, iso);
76
- if (step.route_to)
77
- routeTo = step.route_to;
78
- if (step.aborted) {
79
- abortReason = step.reason;
80
- break;
81
- }
82
- }
83
- return {
84
- ok: abortReason === null,
85
- reason: abortReason,
86
- route_to: routeTo,
87
- actions: ledger.slice(0, MAX_ACTION_HISTORY),
88
- };
89
- }
90
- async function runOneEffect(effect, opts, push, upd, iso) {
91
- const actionKey = effect.snapshotKey;
92
- push({
93
- resource: opts.snapshotId,
94
- action: actionKey,
95
- state: 'in_progress',
96
- started_at: iso(),
97
- finished_at: null,
98
- error: null,
99
- });
100
- if (effect.kind === 'render_failed') {
101
- upd(actionKey, { state: 'error', finished_at: iso(), error: effect.error });
102
- log.warn('action template render failed', { action: actionKey, error: effect.error });
103
- return { aborted: true, route_to: null, reason: effect.error };
104
- }
105
- const { rendered, predicate, policy } = effect;
106
- let shouldRun;
107
- try {
108
- shouldRun = await evaluatePredicate(predicate, opts.ctx, opts.workspacePath, opts.predicateEnv ?? UNWIRED_PREDICATE_ENV);
109
- }
110
- catch (err) {
111
- const msg = err.message;
112
- upd(actionKey, { state: 'error', finished_at: iso(), error: msg });
113
- return { aborted: true, route_to: null, reason: msg };
114
- }
115
- if (!shouldRun) {
116
- upd(actionKey, { state: 'done', finished_at: iso() });
117
- opts.capture?.onChunk?.('stdout', `[action ${actionKey}] skipped (if=false)\n`);
118
- log.debug('action skipped', { action: actionKey, reason: 'if=false' });
119
- return { aborted: false, route_to: null, reason: null };
120
- }
121
- const outcome = await runWithRetry(rendered, actionKey, policy, opts);
122
- return finalizeOutcome(actionKey, outcome, policy, opts, upd, iso);
123
- }
124
- async function runWithRetry(rendered, actionKey, policy, opts) {
125
- let attempt = 0;
126
- while (true) {
127
- const outcome = await applyAction(rendered, opts).catch((err) => ({
128
- ok: false,
129
- reason: err.message,
130
- route_to: null,
131
- }));
132
- if (outcome.ok || outcome.route_to)
133
- return outcome;
134
- if (attempt >= policy.retry.count)
135
- return outcome;
136
- const backoff = policy.retry.backoff_ms * Math.pow(2, attempt);
137
- opts.capture?.onChunk?.('stderr', `[action ${actionKey}] attempt ${attempt + 1} failed: ${outcome.reason ?? 'unknown'}; retrying in ${backoff}ms\n`);
138
- log.warn('action retrying', {
139
- action: actionKey,
140
- attempt: attempt + 1,
141
- next_backoff_ms: backoff,
142
- error: outcome.reason,
143
- });
144
- await delay(backoff);
145
- attempt++;
146
- }
147
- }
148
- function finalizeOutcome(actionKey, outcome, policy, opts, upd, iso) {
149
- if (outcome.ok) {
150
- const note = outcome.cache_hit ? ' (cache hit)' : '';
151
- upd(actionKey, { state: 'done', finished_at: iso() });
152
- opts.capture?.onChunk?.('stdout', `[action ${actionKey}] ok${note}\n`);
153
- return { aborted: false, route_to: null, reason: null };
154
- }
155
- return finalizeFailure(actionKey, outcome, policy, opts, upd, iso);
156
- }
157
- function finalizeFailure(actionKey, outcome, policy, opts, upd, iso) {
158
- const route = outcome.route_to ?? (typeof policy.then === 'object' ? policy.then.route_to : null);
159
- const reason = outcome.reason ?? 'unknown';
160
- const suffix = route ? `; routing to ${route}` : '';
161
- upd(actionKey, { state: 'error', finished_at: iso(), error: reason });
162
- opts.capture?.onChunk?.('stderr', `[action ${actionKey}] failed: ${reason}${suffix}\n`);
163
- log.warn('action failed', { action: actionKey, reason, route_to: route });
164
- return { aborted: true, route_to: route, reason };
165
- }
166
- // ===== Per-kind appliers ==================================================
167
- async function applyAction(action, opts) {
168
- switch (action.kind) {
169
- case 'push_branch':
170
- return applyPushBranch(action, opts);
171
- case 'create_pr_if_missing':
172
- return applyCreatePrIfMissing(action, opts);
173
- case 'ensure_branch':
174
- return applyEnsureBranch(action, opts);
175
- case 'checkout':
176
- return applyCheckout(action, opts);
177
- case 'merge':
178
- return applyMerge(action, opts);
179
- case 'delete_branch':
180
- return applyDeleteBranch(action, opts);
181
- case 'run_in_vm':
182
- return applyRunInVm(action, opts);
183
- case 'propose_followup':
184
- return applyProposeFollowup(action, opts);
185
- default: {
186
- const _exhaustive = action;
187
- void _exhaustive;
188
- return { ok: false, reason: 'unknown action kind', route_to: null };
189
- }
190
- }
191
- }
192
- async function applyPushBranch(action, opts) {
193
- const res = await runCommand('git', ['push', '-u', action.remote, action.ref], opts);
194
- if (res.exit_code === 0)
195
- return { ok: true, reason: null, route_to: null };
196
- // Non-fast-forward retry. When the autopilot routes a CONFLICTING PR back
197
- // to the implementing state and the agent resolves the rebase in-tree,
198
- // local `agent/<id>` has new SHAs while the remote is still at the
199
- // pre-rebase tip. The plain push then rejects NFF. Mirror the autopilot's
200
- // pushForceWithLease (src/reconciler/pr-adapters.ts) lease-anchor pattern:
201
- // freshly fetch the remote ref, pin the lease to its just-observed SHA,
202
- // and retry. The lease keeps the action safe under a true concurrent
203
- // push — the lease would mismatch and git rejects again.
204
- if (!isNonFastForward(res)) {
205
- return {
206
- ok: false,
207
- reason: `git push ${action.remote} ${action.ref} exited ${res.exit_code}: ${diagnostic(res)}`,
208
- route_to: null,
209
- };
210
- }
211
- const fetch = await runCommand('git', ['fetch', '--no-tags', action.remote, action.ref], opts);
212
- if (fetch.exit_code !== 0) {
213
- return {
214
- ok: false,
215
- reason: `git push ${action.remote} ${action.ref} rejected non-fast-forward; fetch failed: ${diagnostic(fetch)}`,
216
- route_to: null,
217
- };
218
- }
219
- const remoteTrackingRef = `refs/remotes/${action.remote}/${action.ref}`;
220
- const revParse = await runCommand('git', ['rev-parse', remoteTrackingRef], opts, /*silent*/ true);
221
- if (revParse.exit_code !== 0) {
222
- return {
223
- ok: false,
224
- reason: `git push ${action.remote} ${action.ref} rejected non-fast-forward; could not resolve ${remoteTrackingRef}: ${diagnostic(revParse)}`,
225
- route_to: null,
226
- };
227
- }
228
- const remoteSha = revParse.stdout.trim();
229
- const retry = await runCommand('git', [
230
- 'push',
231
- '-u',
232
- `--force-with-lease=${action.ref}:${remoteSha}`,
233
- action.remote,
234
- action.ref,
235
- ], opts);
236
- if (retry.exit_code !== 0) {
237
- return {
238
- ok: false,
239
- reason: `git push --force-with-lease ${action.remote} ${action.ref} exited ${retry.exit_code}: ${diagnostic(retry)}`,
240
- route_to: null,
241
- };
242
- }
243
- return { ok: true, reason: null, route_to: null };
244
- }
245
- function isNonFastForward(res) {
246
- // git phrases a rejected push two ways, both safely resolvable by re-fetching
247
- // the remote ref and force-with-lease'ing onto its just-observed tip:
248
- // • "(non-fast-forward)" — the remote-tracking ref is current but the push
249
- // rewrites history (the rebase-in-place case).
250
- // • "(fetch first)" / "remote contains work that you do not have locally" —
251
- // the remote ref advanced beyond, or was never fetched into, the local
252
- // clone. This is the re-dispatch case where the workspace cut the branch
253
- // fresh from base without restoring the pushed `agent/<id>` tip; matching
254
- // only "non-fast-forward" skipped the fallback and surfaced a hard failure.
255
- return /non-fast-forward|fetch first|remote contains work that you do not have/i.test(`${res.stdout}\n${res.stderr}`);
256
- }
257
- async function applyCreatePrIfMissing(action, opts) {
258
- const view = await runCommand('gh', ['pr', 'view', action.head], opts);
259
- if (view.exit_code === 0) {
260
- opts.capture?.onChunk?.('stdout', `[create_pr_if_missing] PR for ${action.head} already exists\n`);
261
- return { ok: true, reason: null, route_to: null };
262
- }
263
- // `gh pr view` returns non-zero when no PR exists (or any other error). We
264
- // treat that as "open one"; gh will reject if the auth is missing or the
265
- // remote disagrees, and the failure surfaces as the create's diagnostic.
266
- const title = action.title_from;
267
- const body = action.body_from;
268
- const args = ['pr', 'create', '--base', action.base, '--head', action.head, '--title', title];
269
- // Convention: if `body_from` looks like an existing file path, pass via
270
- // `--body-file` (mirrors the SYMPHONY_PR_BODY_FILE hook contract); else
271
- // pass via `--body`. The orchestrator stages the body file before firing
272
- // actions for the Done state.
273
- if (await looksLikeFile(opts.workspacePath, body)) {
274
- args.push('--body-file', body);
275
- }
276
- else {
277
- args.push('--body', body);
278
- }
279
- const create = await runCommand('gh', args, opts);
280
- if (create.exit_code !== 0) {
281
- return {
282
- ok: false,
283
- reason: `gh pr create exited ${create.exit_code}: ${diagnostic(create)}`,
284
- route_to: null,
285
- };
286
- }
287
- return { ok: true, reason: null, route_to: null };
288
- }
289
- async function looksLikeFile(workspacePath, value) {
290
- if (!value || value.length === 0)
291
- return false;
292
- // Absolute path: probe directly. Relative path: probe against workspace.
293
- // Skip the probe for clearly-non-path strings (multi-line bodies, etc.).
294
- if (value.includes('\n'))
295
- return false;
296
- const probePath = path.isAbsolute(value) ? value : path.join(workspacePath, value);
297
- try {
298
- const { stat } = await import('node:fs/promises');
299
- const st = await stat(probePath);
300
- return st.isFile();
301
- }
302
- catch {
303
- return false;
304
- }
305
- }
306
- async function applyEnsureBranch(action, opts) {
307
- const exists = await runCommand('git', ['rev-parse', '--verify', '--quiet', `refs/heads/${action.name}`], opts,
308
- /*silent*/ true);
309
- if (exists.exit_code === 0)
310
- return { ok: true, reason: null, route_to: null };
311
- const args = ['branch', action.name];
312
- if (action.seed_from && action.seed_from.length > 0)
313
- args.push(action.seed_from);
314
- const create = await runCommand('git', args, opts);
315
- if (create.exit_code !== 0) {
316
- return {
317
- ok: false,
318
- reason: `git branch ${action.name} exited ${create.exit_code}: ${diagnostic(create)}`,
319
- route_to: null,
320
- };
321
- }
322
- return { ok: true, reason: null, route_to: null };
323
- }
324
- async function applyCheckout(action, opts) {
325
- const res = await runCommand('git', ['checkout', action.ref], opts);
326
- if (res.exit_code !== 0) {
327
- return {
328
- ok: false,
329
- reason: `git checkout ${action.ref} exited ${res.exit_code}: ${diagnostic(res)}`,
330
- route_to: null,
331
- };
332
- }
333
- return { ok: true, reason: null, route_to: null };
334
- }
335
- async function applyMerge(action, opts) {
336
- // Switch to target, merge source. On conflict, abort the merge so the
337
- // working tree is clean and route to `on_conflict.route_to` (if set);
338
- // otherwise propagate as a failure for the generic retry/on_error path.
339
- const co = await runCommand('git', ['checkout', action.target], opts);
340
- if (co.exit_code !== 0) {
341
- return {
342
- ok: false,
343
- reason: `git checkout ${action.target} exited ${co.exit_code}: ${diagnostic(co)}`,
344
- route_to: null,
345
- };
346
- }
347
- const mergeMsg = `Merge ${action.source} into ${action.target}`;
348
- const res = await runCommand('git', ['merge', '--no-ff', '--no-edit', '-m', mergeMsg, action.source], opts);
349
- if (res.exit_code === 0)
350
- return { ok: true, reason: null, route_to: null };
351
- // Conflict: abort the merge so the working tree is clean.
352
- await runCommand('git', ['merge', '--abort'], opts, /*silent*/ true).catch(() => undefined);
353
- if (action.on_conflict === 'abort') {
354
- return {
355
- ok: false,
356
- reason: `merge of ${action.source} into ${action.target} failed: ${diagnostic(res)}`,
357
- route_to: null,
358
- };
359
- }
360
- return {
361
- ok: false,
362
- reason: `merge conflict: ${diagnostic(res)}`,
363
- route_to: action.on_conflict.route_to,
364
- };
365
- }
366
- async function applyDeleteBranch(action, opts) {
367
- if (action.scope === 'local' || action.scope === 'both') {
368
- const res = await runCommand('git', ['branch', '-D', action.name], opts);
369
- if (res.exit_code !== 0) {
370
- return {
371
- ok: false,
372
- reason: `git branch -D ${action.name} exited ${res.exit_code}: ${diagnostic(res)}`,
373
- route_to: null,
374
- };
375
- }
376
- }
377
- if (action.scope === 'remote' || action.scope === 'both') {
378
- if (!action.remote) {
379
- return { ok: false, reason: 'delete_branch: remote scope requires a remote', route_to: null };
380
- }
381
- const res = await runCommand('git', ['push', action.remote, '--delete', action.name], opts);
382
- if (res.exit_code !== 0) {
383
- return {
384
- ok: false,
385
- reason: `git push --delete exited ${res.exit_code}: ${diagnostic(res)}`,
386
- route_to: null,
387
- };
388
- }
389
- }
390
- return { ok: true, reason: null, route_to: null };
391
- }
392
- async function applyRunInVm(action, opts) {
393
- const cacheRoot = opts.cacheRoot ?? runInVmCacheRoot();
394
- const env = action.env ?? {};
395
- const hash = await computeCacheHash({ workspacePath: opts.workspacePath, cmd: action.cmd, env });
396
- const hit = await tryRunInVmCacheHit(action, cacheRoot, hash, opts);
397
- if (hit)
398
- return hit;
399
- // The only escape hatch for arbitrary commands runs inside the per-issue
400
- // VM (the sandbox the agent was just running in). When no `runInVm`
401
- // closure is wired, fail loudly rather than fall back to host spawn —
402
- // dropping the sandbox boundary for the one surface that can carry
403
- // arbitrary commands is exactly the regression issue 36's typed-action
404
- // design exists to prevent.
405
- const runner = opts.runInVm;
406
- if (!runner) {
407
- return {
408
- ok: false,
409
- reason: `run_in_vm "${action.name}" failed: no VM runner wired`,
410
- route_to: null,
411
- };
412
- }
413
- return executeRunInVm(action, env, cacheRoot, hash, runner, opts);
414
- }
415
- async function tryRunInVmCacheHit(action, cacheRoot, hash, opts) {
416
- const cached = await readCache(cacheRoot, action.name, hash);
417
- // Cache hits only on prior success: "Did `npm test` already pass against
418
- // this tree hash?" The issue body's framing matches Bazel's semantics —
419
- // failures are transient (flaky test, network blip) and must not gate
420
- // a fresh execution. The retry policy + per-attempt re-execution work
421
- // together to give the in-process retry window a real chance.
422
- if (!cached || cached.exit_code !== 0)
423
- return null;
424
- opts.capture?.onChunk?.('stdout', `[run_in_vm ${action.name}] cache hit (hash=${hash.slice(0, 12)}…); skipping execution\n`);
425
- return { ok: true, reason: null, route_to: null, cache_hit: true };
426
- }
427
- async function executeRunInVm(action, env, cacheRoot, hash, runner, opts) {
428
- const timeoutMs = (action.timeout ?? Math.ceil((opts.defaultCommandTimeoutMs ?? 300_000) / 1000)) * 1000;
429
- const res = await runner({
430
- name: action.name,
431
- cmd: action.cmd,
432
- env,
433
- workdir: opts.workspacePath,
434
- timeoutMs,
435
- onStdout: (chunk) => {
436
- opts.capture?.onChunk?.('stdout', chunk);
437
- },
438
- onStderr: (chunk) => {
439
- opts.capture?.onChunk?.('stderr', chunk);
440
- },
441
- });
442
- opts.capture?.onResult?.({
443
- ran: true,
444
- exit_code: res.exit_code,
445
- signal: res.signal,
446
- timed_out: res.timed_out,
447
- stdout: res.stdout,
448
- stderr: res.stderr,
449
- });
450
- if (res.exit_code !== 0) {
451
- return {
452
- ok: false,
453
- reason: `run_in_vm "${action.name}" exit=${res.exit_code}: ${diagnostic(res)}`,
454
- route_to: null,
455
- };
456
- }
457
- // Cache successes only; see the comment in `tryRunInVmCacheHit`.
458
- const result = {
459
- exit_code: res.exit_code ?? -1,
460
- stdout: res.stdout,
461
- stderr: res.stderr,
462
- finished_at: isoFromClock(opts.now ?? realClock),
463
- };
464
- await writeCache(cacheRoot, action.name, hash, result).catch((err) => log.warn('run_in_vm cache write failed', { name: action.name, hash, error: err.message }));
465
- return { ok: true, reason: null, route_to: null };
466
- }
467
- /**
468
- * Host-spawn implementation of `RunInVmExecutor`. Used by tests so a
469
- * unit test can exercise the cache/retry plumbing without booting a VM,
470
- * and as an explicit opt-in for harnesses that want host-mode execution
471
- * (e.g. running symphony against a workspace with no Gondolin VM available).
472
- * Production wires the VM-side variant in `AgentRunner`; calling this
473
- * helper from the orchestrator path would defeat the sandbox boundary
474
- * the typed-action DAG exists to enforce.
475
- */
476
- export const hostRunInVm = async ({ cmd, env, workdir, timeoutMs, onStdout, onStderr, }) => {
477
- const [bin, ...args] = cmd;
478
- return runProcess(bin, args, {
479
- cwd: workdir,
480
- env,
481
- timeoutMs,
482
- capture: {
483
- onChunk: (stream, text) => {
484
- if (stream === 'stdout')
485
- onStdout?.(text);
486
- else
487
- onStderr?.(text);
488
- },
489
- },
490
- });
491
- };
492
- async function applyProposeFollowup(action, opts) {
493
- if (!opts.followupSink) {
494
- return {
495
- ok: false,
496
- reason: 'propose_followup action declared but no tracker sink wired',
497
- route_to: null,
498
- };
499
- }
500
- const input = {
501
- title: action.title,
502
- parent_identifier: opts.ctx.identifier,
503
- };
504
- if (action.body !== undefined)
505
- input.description = action.body;
506
- if (action.labels !== undefined)
507
- input.labels = action.labels;
508
- if (action.priority !== undefined)
509
- input.priority = action.priority;
510
- try {
511
- const r = await opts.followupSink.proposeFollowup(input);
512
- opts.capture?.onChunk?.('stdout', `[propose_followup] proposed ${r.identifier}: "${action.title}"\n`);
513
- return { ok: true, reason: null, route_to: null };
514
- }
515
- catch (err) {
516
- return { ok: false, reason: `propose_followup failed: ${err.message}`, route_to: null };
517
- }
518
- }
519
- function diagnostic(res) {
520
- const parts = [res.stderr.trim(), res.stdout.trim()].filter((s) => s.length > 0);
521
- const combined = parts.join('\n');
522
- if (combined.length <= 2048)
523
- return combined;
524
- return combined.slice(0, 2048) + '\n…(truncated)';
525
- }
526
- // Thin specialization over the unified `runProcess`: glues per-action workspace
527
- // + capture + per-action timeout into the shared options bag, and threads the
528
- // `silent` flag so cleanup-side commands (e.g. `git merge --abort`) don't
529
- // double-log into the per-issue capture surface.
530
- function runCommand(bin, args, opts, silent = false, extra = {}) {
531
- return runProcess(bin, args, {
532
- cwd: opts.workspacePath,
533
- env: extra.extraEnv,
534
- timeoutMs: extra.timeoutMs ?? opts.defaultCommandTimeoutMs ?? 300_000,
535
- capture: silent ? undefined : opts.capture,
536
- });
537
- }
538
- // ===== Cache invalidation by name (rerun CLI) =============================
539
- /**
540
- * Drop every cache entry for a named `run_in_vm` action. Used by
541
- * `symphony rerun --check=<name>`: the next dispatch into the state hosting
542
- * the check sees an empty cache namespace and re-executes, while every
543
- * other check's entries stay in place.
544
- *
545
- * No workspace argument: the cache is namespaced by action name on disk
546
- * (`<root>/actions/run_in_vm/<name>/<hash>/`), so invalidation is a
547
- * namespace-directory drop, not a hash lookup. This is the layout fix for
548
- * the rerun CLI — the CLI has no per-issue workspace to hash against, and
549
- * the per-execution hash is workspace-dependent, so any hash-keyed
550
- * invalidation would miss the entry the per-issue execution actually wrote.
551
- */
552
- export async function invalidateRunInVmByName(action, cacheRoot) {
553
- await invalidateCacheByName(cacheRoot ?? runInVmCacheRoot(), action.name);
554
- }
555
- /**
556
- * Pack the executor's per-action ledger into a Snapshot-shaped record so
557
- * the orchestrator can surface it alongside reconciler resources. `id` is
558
- * the same scope id passed at run time (`actions:<state>`); `ready=true`
559
- * mirrors the bake resource's "no outstanding work" semantic.
560
- */
561
- export function toActionsSnapshot(id, result) {
562
- const lastErr = result.actions.find((a) => a.state === 'error')?.error ?? null;
563
- return {
564
- id,
565
- ready: result.ok,
566
- last_error: lastErr,
567
- actions: result.actions.slice(0, MAX_ACTION_HISTORY),
568
- };
569
- }
570
- //# sourceMappingURL=executor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/actions/executor.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- // Workflow actions (issue 36 — typed action DAG, reconciler v2).
2
- //
3
- // Public surface for the rest of symphony. The executor and parser are the
4
- // two consumer-facing modules; types stay separate so they can be imported
5
- // without pulling node child_process into pure-data import sites.
6
- export * from './types.js';
7
- export { parseActionsBlock } from './parsing.js';
8
- export { runActions, invalidateRunInVmByName, toActionsSnapshot, hostRunInVm, } from './executor.js';
9
- export { planActions } from './effects.js';
10
- export { renderTemplate, renderTree, TemplateError } from './templating.js';
11
- export { evaluatePredicate } from './predicates.js';
12
- export { computeCacheHash, invalidateCacheByName, readCache, writeCache, runInVmCacheRoot, RUN_IN_VM_CACHE_KIND, } from './cache.js';
13
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,kEAAkE;AAElE,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,GAKZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAe,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,SAAS,EACT,UAAU,EACV,gBAAgB,EAGhB,oBAAoB,GACrB,MAAM,YAAY,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"parsing.js","sourceRoot":"","sources":["../../src/actions/parsing.ts"],"names":[],"mappings":"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"}