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 +1 @@
1
- {"version":3,"file":"symphony.js","sourceRoot":"","sources":["../../src/bin/symphony.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"symphony.js","sourceRoot":"","sources":["../../src/bin/symphony.ts"],"names":[],"mappings":";AACA,mDAAmD;AACnD,EAAE;AACF,SAAS;AACT,qFAAqF;AACrF,+DAA+D;AAC/D,yEAAyE;AACzE,EAAE;AACF,8EAA8E;AAC9E,kFAAkF;AAClF,gFAAgF;AAChF,8EAA8E;AAC9E,2EAA2E;AAC3E,yEAAyE;AACzE,gBAAgB;AAChB,EAAE;AACF,wEAAwE;AACxE,wEAAwE;AAExE,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,kFAAkF;AAClF,kFAAkF;AAClF,kFAAkF;AAClF,qEAAqE;AACrE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACjD,MAAM,CAAC,GAAG,GAAY,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,109 @@
1
+ // FCIS rewrite — pure ActionContext derivation + forwarded-env computation.
2
+ //
3
+ // Ports the two pure helpers from the original
4
+ // `src/agent/runner-decisions.ts` (`deriveActionContext`, `computeForwardedEnv`)
5
+ // plus the credential-strip filter the runner used to layer on top of
6
+ // `computeForwardedEnv` via `src/agent/vm-guards.ts:stripCredentialEnv`.
7
+ //
8
+ // In the original the runner did:
9
+ // stripCredentialEnv(computeForwardedEnv(forward_env, undefined, readEnv))
10
+ // `stripCredentialEnv` is itself a pure string-name filter (no IO), so the
11
+ // FCIS design folds the strip directly into the pure core function: the single
12
+ // `computeForwardedEnv` here returns the boot env with EVERY credential-bearing
13
+ // var already removed. The credential policy itself (`isCredentialEnvName`) is
14
+ // the ONE wired into the running app — it lives in `core/vm-guards.ts` and is
15
+ // re-exported here (no duplicate). The guest holds only placeholders Gondolin
16
+ // substitutes at egress (host-only refresh / placeholder-only guest invariant),
17
+ // so a real token must never enter the forwarded boot env. `readEnv` is injected
18
+ // so the function stays deterministic and unit-testable (no `process.env` in core).
19
+ //
20
+ // HARD CONSTRAINTS (gate-enforced):
21
+ // - 100% SYNCHRONOUS. No async/await/Promise anywhere.
22
+ // - No IO, no node: imports, no process/fetch, no wall clock, no randomness.
23
+ // - Imports ONLY from src/types/** and other pure-core modules (vm-guards).
24
+ /**
25
+ * Map a `RunningEntryView` snapshot + optional staged `SYMPHONY_*` env into the
26
+ * `ActionContext` the actions executor consumes. Mirrors the prior inline
27
+ * fallback chain in the original `buildActionContext` / `deriveActionContext`
28
+ * so a Done state reads `$branch` from the action-template namespace (the staged
29
+ * `SYMPHONY_*` env feeds the fallbacks).
30
+ *
31
+ * Fallback chain (highest → lowest precedence) per field:
32
+ * branch SYMPHONY_BRANCH → `agent/<identifier>`
33
+ * base_branch SYMPHONY_BASE_BRANCH → view.base_branch_at_dispatch → input.baseBranchDefault → 'main'
34
+ * repo repoEnv (SYMPHONY_REPO)→ view.github_repo_at_dispatch → input.repoDefault → null
35
+ * pr_title SYMPHONY_PR_TITLE → `<id>: <title>` (or `<id>` if untitled)
36
+ * pr_body_file SYMPHONY_PR_BODY_FILE → ''
37
+ */
38
+ export function deriveActionContext(input) {
39
+ const { view, extraEnv } = input;
40
+ const issueId = view.issue.id;
41
+ const issueTitle = view.issue.title;
42
+ const trimmedTitle = issueTitle.trim();
43
+ const defaultPrTitle = trimmedTitle.length > 0 ? `${issueId}: ${trimmedTitle}` : issueId;
44
+ // SYMPHONY_REPO wins; then the dispatch-pinned repo; then the live
45
+ // workspace.github_repo default; null when none is set. The cfg fallback is
46
+ // load-bearing because the dispatch-time pin (github_repo_at_dispatch) is not
47
+ // populated yet — without it a Done transition resolves $repo to null and
48
+ // silently skips push_branch / create_pr_if_missing. Mirrors runner-loop.ts's
49
+ // `|| cfg.workspace.github_repo` for the clone path.
50
+ const repoEnv = input.repoEnv;
51
+ const repoFromEnv = repoEnv && repoEnv.length > 0 ? repoEnv : null;
52
+ const repoPinned = view.github_repo_at_dispatch;
53
+ const repoFromPin = repoPinned && repoPinned.length > 0 ? repoPinned : null;
54
+ const repoDefault = input.repoDefault && input.repoDefault.length > 0 ? input.repoDefault : null;
55
+ const repo = repoFromEnv ?? repoFromPin ?? repoDefault;
56
+ // base_branch: staged env → dispatch-pinned base → live workspace.base_branch
57
+ // default → 'main' (the original's literal floor). Same cfg-fallback rationale
58
+ // as $repo: the dispatch-time pin isn't populated yet.
59
+ const pinnedBase = view.base_branch_at_dispatch;
60
+ const baseDefault = input.baseBranchDefault && input.baseBranchDefault.length > 0 ? input.baseBranchDefault : 'main';
61
+ const baseBranch = extraEnv?.SYMPHONY_BASE_BRANCH ?? (pinnedBase.length > 0 ? pinnedBase : baseDefault);
62
+ return {
63
+ identifier: view.identifier,
64
+ workspace: view.workspace_path,
65
+ branch: extraEnv?.SYMPHONY_BRANCH ?? `agent/${view.identifier}`,
66
+ base_branch: baseBranch,
67
+ issue_title: issueTitle,
68
+ issue_body: view.issue.description ?? '',
69
+ repo,
70
+ pr_title: extraEnv?.SYMPHONY_PR_TITLE ?? defaultPrTitle,
71
+ pr_body_file: extraEnv?.SYMPHONY_PR_BODY_FILE ?? '',
72
+ };
73
+ }
74
+ // ─── Forwarded boot env (with credential strip folded in) ────────────────────
75
+ // The strict boot-env credential policy lives canonically in core/vm-guards.ts
76
+ // (the copy actually wired into the running app via runner/vm-plan.ts). It is
77
+ // imported for `computeForwardedEnv` AND re-exported here so this module's
78
+ // importers (and its test) keep the `actions/context.js` specifier without a
79
+ // duplicate definition + duplicate named-set/prefix/suffix constants.
80
+ // vm-guards.ts is pure core, so importing it from another pure-core module is
81
+ // allowed.
82
+ import { isCredentialEnvName } from '../vm-guards.js';
83
+ export { isCredentialEnvName };
84
+ /**
85
+ * Compute the VM boot env from the `forward_env` list, dropping `omitVar` when
86
+ * set AND every credential-bearing var (strict boot-env policy). `omitVar` lets
87
+ * a caller exclude a single var by name; the runner strips all credential vars
88
+ * uniformly (the guest holds only a placeholder Gondolin substitutes at egress),
89
+ * so callers pass `omitVar = undefined` and rely on the credential filter.
90
+ * `readEnv` is injected so this stays deterministic and unit-testable (no
91
+ * `process.env` in core).
92
+ *
93
+ * A name that survives the credential filter but reads as empty/undefined is
94
+ * skipped (the original only forwarded vars with a non-empty value).
95
+ */
96
+ export function computeForwardedEnv(forwardList, omitVar, readEnv) {
97
+ const env = {};
98
+ for (const k of forwardList) {
99
+ if (k === omitVar)
100
+ continue;
101
+ if (isCredentialEnvName(k))
102
+ continue;
103
+ const v = readEnv(k);
104
+ if (v && v.length > 0)
105
+ env[k] = v;
106
+ }
107
+ return env;
108
+ }
109
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/core/actions/context.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,+CAA+C;AAC/C,iFAAiF;AACjF,sEAAsE;AACtE,yEAAyE;AACzE,EAAE;AACF,kCAAkC;AAClC,6EAA6E;AAC7E,2EAA2E;AAC3E,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAC9E,8EAA8E;AAC9E,gFAAgF;AAChF,iFAAiF;AACjF,oFAAoF;AACpF,EAAE;AACF,oCAAoC;AACpC,yDAAyD;AACzD,+EAA+E;AAC/E,8EAA8E;AA8B9E;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA+B;IACjE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IACpC,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IACvC,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAEzF,mEAAmE;IACnE,4EAA4E;IAC5E,8EAA8E;IAC9E,0EAA0E;IAC1E,8EAA8E;IAC9E,qDAAqD;IACrD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,MAAM,WAAW,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC;IAChD,MAAM,WAAW,GAAG,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5E,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IACjG,MAAM,IAAI,GAAG,WAAW,IAAI,WAAW,IAAI,WAAW,CAAC;IAEvD,8EAA8E;IAC9E,+EAA+E;IAC/E,uDAAuD;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC;IAChD,MAAM,WAAW,GACf,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC;IACnG,MAAM,UAAU,GACd,QAAQ,EAAE,oBAAoB,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAEvF,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS,EAAE,IAAI,CAAC,cAAc;QAC9B,MAAM,EAAE,QAAQ,EAAE,eAAe,IAAI,SAAS,IAAI,CAAC,UAAU,EAAE;QAC/D,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,UAAU;QACvB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE;QACxC,IAAI;QACJ,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,IAAI,cAAc;QACvD,YAAY,EAAE,QAAQ,EAAE,qBAAqB,IAAI,EAAE;KACpD,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,6EAA6E;AAC7E,sEAAsE;AACtE,8EAA8E;AAC9E,WAAW;AACX,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAA8B,EAC9B,OAA2B,EAC3B,OAA4C;IAE5C,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,OAAO;YAAE,SAAS;QAC5B,IAAI,mBAAmB,CAAC,CAAC,CAAC;YAAE,SAAS;QACrC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,30 +1,20 @@
1
- // Parse a per-state `actions:` block into typed records (issue 36).
1
+ // FCIS rewrite — pure parser for per-state `actions:` blocks.
2
2
  //
3
- // Lifts the YAML shape into the closed `WorkflowAction` union, validating
4
- // each kind's required fields up-front so a missing `head:` on
5
- // `create_pr_if_missing` (or a misspelled `kind:`) fails at workflow load
6
- // instead of at the first dispatch into the terminal state.
7
- import { WorkflowError } from '../errors.js';
3
+ // Functional core: every export here is a pure, synchronous (data) -> data
4
+ // function. No IO, no clock, no randomness, no node: imports. Imports only from
5
+ // src/types. Lifts the YAML shape of a per-state `actions:` block into the
6
+ // closed `WorkflowAction` union, validating each kind's required fields up-front
7
+ // so a missing `head:` on `create_pr_if_missing` (or a misspelled `kind:`) fails
8
+ // at workflow load instead of at the first dispatch into the terminal state.
9
+ //
10
+ // Ported faithfully from the original src/actions/parsing.ts.
11
+ import { WorkflowError } from '../../types/errors.js';
12
+ import { asString, asInt } from '../coerce.js';
8
13
  const KNOWN_KINDS = [
9
14
  'push_branch',
10
15
  'create_pr_if_missing',
11
- 'ensure_branch',
12
- 'checkout',
13
- 'merge',
14
- 'delete_branch',
15
16
  'run_in_vm',
16
- 'propose_followup',
17
17
  ];
18
- function asString(v) {
19
- return typeof v === 'string' ? v : null;
20
- }
21
- function asInt(v) {
22
- if (typeof v === 'number' && Number.isFinite(v))
23
- return Math.trunc(v);
24
- if (typeof v === 'string' && /^-?\d+$/.test(v))
25
- return parseInt(v, 10);
26
- return null;
27
- }
28
18
  function expectString(stateName, idx, kind, key, v) {
29
19
  const s = asString(v);
30
20
  if (s === null || s.length === 0) {
@@ -70,13 +60,14 @@ function parseErrorPolicy(stateName, idx, raw) {
70
60
  out.retry = { count, backoff_ms: backoff };
71
61
  }
72
62
  if (m.then !== undefined) {
63
+ const thenRouteTo = typeof m.then === 'object' && m.then !== null && !Array.isArray(m.then)
64
+ ? m.then.route_to
65
+ : undefined;
73
66
  if (m.then === 'abort') {
74
67
  out.then = 'abort';
75
68
  }
76
- else if (typeof m.then === 'object' &&
77
- !Array.isArray(m.then) &&
78
- typeof m.then.route_to === 'string') {
79
- out.then = { route_to: m.then.route_to };
69
+ else if (typeof thenRouteTo === 'string') {
70
+ out.then = { route_to: thenRouteTo };
80
71
  }
81
72
  else {
82
73
  throw new WorkflowError('workflow_parse_error', `state "${stateName}": actions[${idx}] "on_error.then" must be "abort" or {route_to: <state>}`);
@@ -123,75 +114,21 @@ function parseAction(stateName, idx, raw) {
123
114
  body_from: expectString(stateName, idx, kind, 'body_from', m.body_from),
124
115
  ...cleanBase,
125
116
  };
126
- case 'ensure_branch':
127
- return {
128
- kind: 'ensure_branch',
129
- name: expectString(stateName, idx, kind, 'name', m.name),
130
- seed_from: asString(m.seed_from) ?? undefined,
131
- ...cleanBase,
132
- };
133
- case 'checkout':
134
- return {
135
- kind: 'checkout',
136
- ref: expectString(stateName, idx, kind, 'ref', m.ref),
137
- ...cleanBase,
138
- };
139
- case 'merge': {
140
- const onConflictRaw = m.on_conflict;
141
- let onConflict;
142
- if (onConflictRaw === 'abort') {
143
- onConflict = 'abort';
144
- }
145
- else if (typeof onConflictRaw === 'object' &&
146
- onConflictRaw !== null &&
147
- !Array.isArray(onConflictRaw) &&
148
- typeof onConflictRaw.route_to === 'string') {
149
- onConflict = { route_to: onConflictRaw.route_to };
150
- }
151
- else {
152
- throw new WorkflowError('workflow_parse_error', `state "${stateName}": actions[${idx}] (merge): "on_conflict" must be "abort" or {route_to: <state>}`);
153
- }
154
- return {
155
- kind: 'merge',
156
- source: expectString(stateName, idx, kind, 'source', m.source),
157
- target: expectString(stateName, idx, kind, 'target', m.target),
158
- on_conflict: onConflict,
159
- ...cleanBase,
160
- };
161
- }
162
- case 'delete_branch': {
163
- const scope = asString(m.scope);
164
- if (scope !== 'local' && scope !== 'remote' && scope !== 'both') {
165
- throw new WorkflowError('workflow_parse_error', `state "${stateName}": actions[${idx}] (delete_branch): "scope" must be one of local|remote|both`);
166
- }
167
- const remote = asString(m.remote) ?? undefined;
168
- if ((scope === 'remote' || scope === 'both') && !remote) {
169
- throw new WorkflowError('workflow_parse_error', `state "${stateName}": actions[${idx}] (delete_branch): "remote" is required when scope includes "remote"`);
170
- }
171
- return {
172
- kind: 'delete_branch',
173
- name: expectString(stateName, idx, kind, 'name', m.name),
174
- scope,
175
- remote,
176
- ...cleanBase,
177
- };
178
- }
179
117
  case 'run_in_vm': {
180
118
  const name = asString(m.name);
181
119
  if (!name || name.length === 0) {
182
- throw new WorkflowError('workflow_parse_error', `state "${stateName}": actions[${idx}] (run_in_vm): "name" is required (used by cache + rerun CLI)`);
120
+ throw new WorkflowError('workflow_parse_error', `state "${stateName}": actions[${idx}] (run_in_vm): "name" is required (run-log label + snapshot key)`);
183
121
  }
184
- // Names are used as a path segment in the cache layout
185
- // (`<root>/actions/run_in_vm/<name>/<hash>/result.json`). Restrict to a
186
- // safe identifier set so `--check=<name>` is unambiguous and no name
187
- // can escape the namespace (e.g. via `..`). The cache layer also
188
- // defensively encodes unsafe chars, but rejecting at parse time keeps
189
- // the CLI surface honest.
122
+ // The name labels the action's run-log output + snapshot key. Restrict it
123
+ // to a safe identifier set so the label is unambiguous and free of path
124
+ // separators / leading dots.
190
125
  if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(name)) {
191
126
  throw new WorkflowError('workflow_parse_error', `state "${stateName}": actions[${idx}] (run_in_vm): "name" must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/ (got: ${JSON.stringify(name)})`);
192
127
  }
193
128
  const cmdRaw = m.cmd;
194
- if (!Array.isArray(cmdRaw) || cmdRaw.length === 0 || !cmdRaw.every((s) => typeof s === 'string')) {
129
+ if (!Array.isArray(cmdRaw) ||
130
+ cmdRaw.length === 0 ||
131
+ !cmdRaw.every((s) => typeof s === 'string')) {
195
132
  throw new WorkflowError('workflow_parse_error', `state "${stateName}": actions[${idx}] (run_in_vm): "cmd" must be a non-empty list of strings`);
196
133
  }
197
134
  const envRaw = m.env;
@@ -224,33 +161,6 @@ function parseAction(stateName, idx, raw) {
224
161
  action.timeout = timeout;
225
162
  return action;
226
163
  }
227
- case 'propose_followup': {
228
- const labelsRaw = m.labels;
229
- let labels;
230
- if (labelsRaw !== undefined) {
231
- if (!Array.isArray(labelsRaw) || !labelsRaw.every((s) => typeof s === 'string')) {
232
- throw new WorkflowError('workflow_parse_error', `state "${stateName}": actions[${idx}] (propose_followup): "labels" must be a list of strings`);
233
- }
234
- labels = labelsRaw;
235
- }
236
- const priority = m.priority === undefined ? undefined : asInt(m.priority);
237
- if (m.priority !== undefined && priority === null) {
238
- throw new WorkflowError('workflow_parse_error', `state "${stateName}": actions[${idx}] (propose_followup): "priority" must be an integer`);
239
- }
240
- const action = {
241
- kind: 'propose_followup',
242
- title: expectString(stateName, idx, kind, 'title', m.title),
243
- ...cleanBase,
244
- };
245
- const body = asString(m.body);
246
- if (body !== null)
247
- action.body = body;
248
- if (labels !== undefined)
249
- action.labels = labels;
250
- if (priority !== undefined && priority !== null)
251
- action.priority = priority;
252
- return action;
253
- }
254
164
  default: {
255
165
  // Exhaustiveness check at the type level — adding a new kind to the union
256
166
  // without extending this switch is a TypeScript error.
@@ -260,6 +170,15 @@ function parseAction(stateName, idx, raw) {
260
170
  }
261
171
  }
262
172
  }
173
+ /**
174
+ * Lift a per-state `actions:` YAML block into the typed `WorkflowAction` union.
175
+ *
176
+ * - `undefined` (no `actions:` key) -> `undefined`.
177
+ * - `null` (declared but empty) -> `[]`.
178
+ * - Any non-list -> throws `WorkflowError('workflow_parse_error', ...)`.
179
+ *
180
+ * Each entry is validated per-kind; the first invalid entry throws.
181
+ */
263
182
  export function parseActionsBlock(stateName, raw) {
264
183
  if (raw === undefined)
265
184
  return undefined;
@@ -270,4 +189,4 @@ export function parseActionsBlock(stateName, raw) {
270
189
  }
271
190
  return raw.map((entry, idx) => parseAction(stateName, idx, entry));
272
191
  }
273
- //# sourceMappingURL=parsing.js.map
192
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/core/actions/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,197 @@
1
+ // FCIS rewrite — pure action planner (ported from src/actions/effects.ts +
2
+ // the per-kind appliers in src/actions/executor.ts of the reference
3
+ // orchestrator).
4
+ //
5
+ // FUNCTIONAL CORE. Every function here is SYNCHRONOUS and pure: (data) -> data.
6
+ // No IO, no async/await/Promise, no clock, no randomness, no Effects executed.
7
+ // Imports ONLY from src/types (NodeNext ESM → .js extensions on relative
8
+ // imports) plus the sibling pure core helpers (template.ts, predicates.ts).
9
+ //
10
+ // WHAT MOVED INTO CORE (vs. the reference):
11
+ // • The reference `planActions` (src/actions/effects.ts) only rendered each
12
+ // action and emitted a `{ kind:'run' | 'render_failed' }` envelope; the
13
+ // ACTUAL git/gh/vm decisions lived in the async per-kind appliers in
14
+ // executor.ts (applyPushBranch, applyMerge, …). Those appliers WERE the
15
+ // side-effect-deciding logic interleaved with IO.
16
+ // • Here the per-kind mapping is lifted into the pure core: each rendered
17
+ // action is mapped to its git/gh/vm/tracker `Effect[]` SEQUENCE as DATA.
18
+ // The shell becomes a dumb interpreter that runs the emitted effects and
19
+ // folds outcomes back (the conditional branches the appliers used to take
20
+ // — "PR already exists? skip create", "non-fast-forward? force-with-lease"
21
+ // — are still in the shell's run-fold, but the candidate effects, including
22
+ // the NFF fallback sub-sequence, are produced here as data).
23
+ //
24
+ // The push_branch NFF (non-fast-forward) recovery is the keystone (mustFix, all
25
+ // judges): the planner emits BOTH the plain push and the force-with-lease
26
+ // fallback sub-sequence (fetch → rev-parse → push_force_with_lease) as data, so
27
+ // the shell never has to decide what the recovery looks like — only WHETHER to
28
+ // take it (on a non-fast-forward push result).
29
+ import { renderTree } from './template.js';
30
+ import { evaluatePredicate } from './predicates.js';
31
+ // ─── defaults (mirror src/actions/effects.ts) ────────────────────────────────
32
+ const DEFAULT_RETRY_COUNT = 3;
33
+ const DEFAULT_RETRY_BACKOFF_MS = 1_000;
34
+ /** Reference default per-command timeout (executor.ts defaultCommandTimeoutMs). */
35
+ const DEFAULT_COMMAND_TIMEOUT_MS = 300_000;
36
+ /**
37
+ * Pure planner — same inputs always produce the same `PlannedAction[]`.
38
+ *
39
+ * Faithful to src/actions/effects.ts:planActions for the envelope + snapshot
40
+ * keying; extended to emit the per-kind Effect sequence as data.
41
+ */
42
+ export function planActions(actions, ctx, opts) {
43
+ return actions.map((action, index) => planOne(action, index, ctx, opts));
44
+ }
45
+ function planOne(action, index, ctx, opts) {
46
+ const snapshotKey = actionSnapshotKey(action, index);
47
+ const r = renderTree(action, ctx);
48
+ if (!r.ok) {
49
+ return { kind: 'render_failed', snapshotKey, error: r.error };
50
+ }
51
+ const rendered = r.value;
52
+ const predicate = evaluatePredicate(actionPredicate(rendered), ctx, opts.workspacePath);
53
+ const { effects, nffFallback } = mapEffects(rendered, opts);
54
+ return {
55
+ kind: 'run',
56
+ snapshotKey,
57
+ actionKind: rendered.kind,
58
+ rendered,
59
+ predicate,
60
+ policy: normalizePolicy(actionPolicy(rendered)),
61
+ effects,
62
+ nffFallback,
63
+ };
64
+ }
65
+ // ─── snapshot keying (faithful to actionSnapshotKey) ──────────────────────────
66
+ function actionSnapshotKey(action, idx) {
67
+ if (action.name && action.name.length > 0)
68
+ return `${action.kind}:${action.name}`;
69
+ return `${action.kind}:#${idx}`;
70
+ }
71
+ // ─── policy normalization (faithful to effectivePolicy) ───────────────────────
72
+ // NOTE: the new NormalizedActionPolicy shape (src/types/actions.ts) flattens the
73
+ // reference `{ retry: { count, backoff_ms } }` into `{ retryCount, backoffMs }`.
74
+ function normalizePolicy(p) {
75
+ return {
76
+ retryCount: p?.retry?.count ?? DEFAULT_RETRY_COUNT,
77
+ backoffMs: p?.retry?.backoff_ms ?? DEFAULT_RETRY_BACKOFF_MS,
78
+ then: p?.then ?? 'abort',
79
+ };
80
+ }
81
+ // BaseAction carries `if`/`on_error` but the discriminated union has no shared
82
+ // accessor; read them positionally without widening to `any`.
83
+ function actionPredicate(a) {
84
+ return a.if;
85
+ }
86
+ function actionPolicy(a) {
87
+ return a.on_error;
88
+ }
89
+ function mapEffects(action, opts) {
90
+ switch (action.kind) {
91
+ case 'push_branch':
92
+ return mapPushBranch(action, opts);
93
+ case 'create_pr_if_missing':
94
+ return mapCreatePrIfMissing(action, opts);
95
+ case 'run_in_vm':
96
+ return mapRunInVm(action, opts);
97
+ default: {
98
+ // Exhaustiveness guard — a new kind without a mapping is a compile error.
99
+ const _exhaustive = action;
100
+ void _exhaustive;
101
+ return { effects: [], nffFallback: null };
102
+ }
103
+ }
104
+ }
105
+ // push_branch — `git push -u <remote> <ref>`, with the non-fast-forward
106
+ // recovery (fetch → rev-parse remote-tracking → push_force_with_lease) emitted
107
+ // as a SEPARATE data sub-sequence. Mirrors applyPushBranch + isNonFastForward.
108
+ //
109
+ // The reference resolved the remote SHA at runtime (it read the live remote-
110
+ // tracking ref). Core cannot read the remote, so `expectedRemoteSha` is a
111
+ // placeholder ('') the shell rewrites with the SHA the preceding rev_parse
112
+ // returns. The lease keeps the force-push safe under a true concurrent push.
113
+ function mapPushBranch(action, opts) {
114
+ const cwd = opts.workspacePath;
115
+ const effects = [
116
+ { family: 'git', kind: 'push', cwd, remote: action.remote, ref: action.ref },
117
+ ];
118
+ const remoteTrackingRef = `refs/remotes/${action.remote}/${action.ref}`;
119
+ const nffFallback = [
120
+ { family: 'git', kind: 'fetch', cwd, remote: action.remote, ref: action.ref },
121
+ { family: 'git', kind: 'rev_parse', cwd, ref: remoteTrackingRef },
122
+ {
123
+ family: 'git',
124
+ kind: 'push_force_with_lease',
125
+ cwd,
126
+ remote: action.remote,
127
+ ref: action.ref,
128
+ // Placeholder; shell substitutes the SHA from the rev_parse above.
129
+ expectedRemoteSha: '',
130
+ },
131
+ ];
132
+ return { effects, nffFallback };
133
+ }
134
+ // create_pr_if_missing — `gh pr list/view` then `gh pr create` if missing.
135
+ // Mirrors applyCreatePrIfMissing. The reference probed `gh pr view <head>`
136
+ // (non-zero ⇒ open one). The effect union models the probe as
137
+ // `gh.pr_list_for_branch` (head branch → existing PR?), and the create as
138
+ // `gh.pr_create`. The shell skips the create when the probe finds a PR.
139
+ //
140
+ // body_from / `--body-file` vs `--body`: the reference decided this at runtime
141
+ // by stat-ing the body string against the workspace (looksLikeFile). Core
142
+ // cannot stat, so it carries `bodyIsFile` as a STRUCTURAL guess (a single-line
143
+ // path-shaped value); the shell confirms the file exists before choosing the
144
+ // flag. A multi-line body is unambiguously NOT a file.
145
+ function mapCreatePrIfMissing(action, opts) {
146
+ const cwd = opts.workspacePath;
147
+ const effects = [
148
+ { family: 'gh', kind: 'pr_list_for_branch', cwd, branch: action.head },
149
+ {
150
+ family: 'gh',
151
+ kind: 'pr_create',
152
+ cwd,
153
+ base: action.base,
154
+ head: action.head,
155
+ title: action.title_from,
156
+ bodyOrFile: action.body_from,
157
+ bodyIsFile: looksLikeFilePath(action.body_from),
158
+ },
159
+ ];
160
+ return { effects, nffFallback: null };
161
+ }
162
+ // run_in_vm — a plain uncached `vm.exec` on the live per-issue VM. Mirrors
163
+ // applyRunInVm / executeRunInVm. The exec timeout mirrors executeRunInVm:
164
+ // action.timeout (seconds) overrides the bound default (ms).
165
+ function mapRunInVm(action, opts) {
166
+ const env = action.env ?? {};
167
+ const timeoutMs = action.timeout !== undefined
168
+ ? action.timeout * 1000
169
+ : (opts.defaultCommandTimeoutMs ?? DEFAULT_COMMAND_TIMEOUT_MS);
170
+ const effects = [
171
+ // vmId is a placeholder the shell binds to the per-issue VM at exec time
172
+ // (core has no handle to the live VM). workdir is the workspace mount.
173
+ {
174
+ family: 'vm',
175
+ kind: 'exec',
176
+ vmId: '',
177
+ command: action.cmd,
178
+ workdir: opts.workspacePath,
179
+ env,
180
+ timeoutMs,
181
+ },
182
+ ];
183
+ return { effects, nffFallback: null };
184
+ }
185
+ // ─── helpers ──────────────────────────────────────────────────────────────────
186
+ /**
187
+ * Structural guess at whether a `body_from` value names a file (so the shell
188
+ * passes `--body-file` rather than `--body`). The reference (looksLikeFile)
189
+ * stat-ed the path against the workspace — an IO read core cannot do — so here
190
+ * we only rule OUT the unambiguous non-paths: empty strings and multi-line
191
+ * bodies. A single-line value is FLAGGED as file-shaped; the shell confirms the
192
+ * file exists before committing to `--body-file`.
193
+ */
194
+ function looksLikeFilePath(value) {
195
+ return value.length > 0 && !value.includes('\n');
196
+ }
197
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/core/actions/plan.ts"],"names":[],"mappings":"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"}