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
@@ -0,0 +1,314 @@
1
+ // FCIS rewrite — per-family handlers for the central effect-interpreter seam.
2
+ //
3
+ // Extracted from effect-interpreter.ts to keep the router file under the shell
4
+ // complexity/line budgets. Each family is a flat `Record<kind, handler>` map
5
+ // (lookup keeps cyclomatic complexity at 1) closed over the injected adapters;
6
+ // the router (effect-interpreter.ts) owns the family-level dispatch + try/catch.
7
+ //
8
+ // Shell rule: imports from src/types/** ONLY. Adapters are injected.
9
+ const OK = { ok: true };
10
+ export function fail(err) {
11
+ return { ok: false, error: err instanceof Error ? err.message : String(err) };
12
+ }
13
+ /** Run a fire-and-forget IO, then report OK (the common void-effect shape). */
14
+ const ok = async (p) => {
15
+ await p;
16
+ return OK;
17
+ };
18
+ const runResult = (result) => ({ kind: 'run_result', result });
19
+ /**
20
+ * The steering family — performed against the per-issue awaiter (the ONE legitimately-
21
+ * live Promise, owned by McpRuntime). The steering-reply HTTP route, the operator-cancel,
22
+ * and the worker teardown all EMIT these through the central interpreter, so no caller
23
+ * pokes the awaiter directly. resolve → `delivered` (false ⇒ none parked ⇒ the HTTP 409);
24
+ * cancel unparks without a reply (fire-and-forget).
25
+ */
26
+ function steeringFamily(awaiter) {
27
+ return {
28
+ resolve: (e) => ({ kind: 'steering_resolved', delivered: awaiter.resolve(e.identifier, e.text) }),
29
+ cancel: (e) => {
30
+ awaiter.cancel(e.identifier);
31
+ return OK;
32
+ },
33
+ };
34
+ }
35
+ function gitFamily(deps) {
36
+ const g = deps.git;
37
+ // Injected pure core decision (clean + non-fast-forward) — the rejection regex
38
+ // lives in core (`classifyPushResult`), not inline here (§4a).
39
+ const pushStatus = (r) => ({ kind: 'git_status', ...deps.classifyPushResult(r), result: r });
40
+ return {
41
+ push: async (e) => pushStatus(await g.run(['push', e.remote, e.ref], e.cwd)),
42
+ push_force_with_lease: async (e) => pushStatus(await g.run(['push', `--force-with-lease=${e.ref}:${e.expectedRemoteSha}`, e.remote, e.ref], e.cwd)),
43
+ fetch: async (e) => runResult(await g.run(e.ref ? ['fetch', e.remote, e.ref] : ['fetch', e.remote], e.cwd)),
44
+ rev_parse: async (e) => {
45
+ const r = await g.run(['rev-parse', e.ref], e.cwd);
46
+ return { kind: 'rev_parse', sha: r.exit_code === 0 ? r.stdout.trim() || null : null };
47
+ },
48
+ branch_exists: async (e) => ({
49
+ kind: 'branch_exists',
50
+ exists: (await g.run(['rev-parse', '--verify', '--quiet', e.ref], e.cwd)).exit_code === 0,
51
+ }),
52
+ status: async (e) => {
53
+ const r = await g.run(['status', '--porcelain'], e.cwd);
54
+ return { kind: 'git_status', clean: r.exit_code === 0 && r.stdout.trim() === '', nonFastForward: false, result: r };
55
+ },
56
+ merge_base: async (e) => runResult(await g.run(['merge-base', e.a, e.b], e.cwd)),
57
+ clone_local: async (e) => runResult(await g.run(['clone', '--branch', e.baseBranch, '--no-hardlinks', e.sourceRepo, e.dest], '.')),
58
+ };
59
+ }
60
+ function ghFamily(deps) {
61
+ const gh = deps.gh;
62
+ return {
63
+ pr_view: async (e) => ({ kind: 'pr_view', view: await gh.prView(e.cwd, e.prNumber) }),
64
+ pr_list_for_branch: async (e) => ({ kind: 'pr_summary', summary: await gh.prListForBranch(e.cwd, e.branch) }),
65
+ pr_create: async (e) => {
66
+ const argv = ['pr', 'create', '--base', e.base, '--head', e.head, '--title', e.title, e.bodyIsFile ? '--body-file' : '--body', e.bodyOrFile];
67
+ // The created PR's number + URL is parsed by the injected pure core
68
+ // `parsePrNumberFromUrl` (shares the `/pull/<n>` shape with runlog) (§4a).
69
+ const { number, url } = deps.parsePrNumberFromUrl((await gh.run(argv, e.cwd)).stdout);
70
+ return { kind: 'pr_create', number, url };
71
+ },
72
+ pr_arm_auto_merge: async (e) => runResult(await gh.run(['pr', 'merge', String(e.prNumber), '--auto', `--${e.strategy}`], e.cwd)),
73
+ pr_update_branch: async (e) => runResult(await gh.run(['pr', 'update-branch', String(e.prNumber)], e.cwd)),
74
+ pr_close: async (e) => runResult(await gh.run(['pr', 'close', String(e.prNumber)], e.cwd)),
75
+ pr_delete_remote_branch: async (e) => runResult(await deps.git.run(['push', e.remote, '--delete', e.branch], e.cwd)),
76
+ };
77
+ }
78
+ function vmFamily(deps) {
79
+ return {
80
+ create: async (e) => {
81
+ // httpHooks/tcp/dns/guestFiles are shaped into the opaque Gondolin config by
82
+ // the vm-client adapter; the Effect carries the data, the adapter binds it.
83
+ const handle = await deps.vm.createVm({
84
+ imagePath: e.imagePath,
85
+ cpus: e.cpus,
86
+ memMib: e.memMib,
87
+ rootfsSize: e.rootfsSize,
88
+ mounts: e.mounts.map((m) => ({ host: m.host, guest: m.guest, readonly: false })),
89
+ env: e.env,
90
+ allowWebSockets: e.allowWebSockets,
91
+ sessionLabel: e.sessionLabel,
92
+ });
93
+ // hostPid is not on VmHandle; the adapter surfaces it out-of-band.
94
+ return { kind: 'vm_created', vmId: handle.id, hostPid: undefined };
95
+ },
96
+ exec: async (e) => {
97
+ const h = deps.vmHandleFor(e.vmId);
98
+ if (!h)
99
+ return fail(`no live VM handle for ${e.vmId}`);
100
+ return { kind: 'vm_exec_started', hostPid: h.exec({ command: e.command, workdir: e.workdir, env: e.env, timeoutMs: e.timeoutMs }).pid };
101
+ },
102
+ close: async (e) => {
103
+ await deps.vmHandleFor(e.vmId)?.close();
104
+ return OK;
105
+ },
106
+ list_sessions: async () => ({
107
+ kind: 'vm_sessions',
108
+ sessions: (await deps.vm.listSessions()).filter((s) => s.alive).map((s) => ({ pid: s.pid, label: s.label })),
109
+ }),
110
+ gc: async () => ({ kind: 'vm_gc', reaped: await deps.vm.gc() }),
111
+ kill_all: () => ({ kind: 'vm_killed', count: deps.vm.killAllVms() }),
112
+ };
113
+ }
114
+ function processFamily(deps) {
115
+ return {
116
+ kill: (e) => {
117
+ deps.signal.kill(e.pid, e.signal);
118
+ return OK;
119
+ },
120
+ probe: (e) => {
121
+ const { alive, noPerm } = deps.signal.probe(e.pid);
122
+ return { kind: 'process_probe', alive, noPerm };
123
+ },
124
+ run: async (e) => runResult(await deps.process.run(e.argv, { cwd: e.cwd, env: e.env, timeoutMs: e.timeoutMs })),
125
+ };
126
+ }
127
+ function acpFamily(deps) {
128
+ return {
129
+ session_new: async (e) => ({ kind: 'acp_session', sessionId: (await deps.acp.sessionNew(e.vmId, { mcpEnabled: e.mcpEnabled })).sessionId }),
130
+ run_prompt: async (e) => ({ kind: 'prompt_outcome', outcome: await deps.acp.runPrompt(e.sessionId, e.promptText) }),
131
+ cancel: (e) => ok(deps.acp.cancel(e.sessionId)),
132
+ };
133
+ }
134
+ /**
135
+ * The MCP worker-lifecycle family — performed against the injected lifecycle port
136
+ * (the runtime's active-entry map, the app-db the orchestrator owns). The runner
137
+ * brackets each dispatch by EMITTING these through the central interpreter, so it
138
+ * never pokes the runtime read surface directly. `activate` is an effect-with-result:
139
+ * the minted per-dispatch bearer rides back on the EffectResult so the runner threads
140
+ * it into the guest MCP descriptor. `deactivate` tears the entry down (the runtime
141
+ * also cancels any parked steering awaiter as part of teardown).
142
+ */
143
+ function mcpFamily(deps) {
144
+ const m = deps.mcpLifecycle;
145
+ return {
146
+ activate: (e) => ({ kind: 'mcp_activated', token: m.activate(e.entry) }),
147
+ deactivate: (e) => {
148
+ m.deactivate(e.identifier);
149
+ return OK;
150
+ },
151
+ };
152
+ }
153
+ function fsFamily(deps) {
154
+ const f = deps.fs;
155
+ return {
156
+ read_file: async (e) => {
157
+ try {
158
+ return { kind: 'fs_read', content: await f.readFile(e.path, 'utf8') };
159
+ }
160
+ catch {
161
+ return { kind: 'fs_read', content: null };
162
+ }
163
+ },
164
+ write_file: (e) => ok(f.writeFile(e.path, e.content, 'utf8')),
165
+ mkdir: (e) => ok(f.mkdir(e.path, { recursive: e.recursive })),
166
+ mkdtemp: () => fail('mkdtemp not wired in IssueFs port (composition-root tmp adapter owns it)'),
167
+ stat: async (e) => {
168
+ try {
169
+ const st = await f.stat(e.path);
170
+ return { kind: 'fs_stat', exists: true, isDirectory: st.isDirectory() };
171
+ }
172
+ catch {
173
+ return { kind: 'fs_stat', exists: false, isDirectory: false };
174
+ }
175
+ },
176
+ access: async (e) => ((await f.access(e.path)) ? OK : fail(`no access: ${e.path}`)),
177
+ readdir: async (e) => {
178
+ try {
179
+ return { kind: 'fs_readdir', names: await f.readdir(e.path) };
180
+ }
181
+ catch {
182
+ return { kind: 'fs_readdir', names: [] };
183
+ }
184
+ },
185
+ rm: (e) => ok(f.rm(e.path, { recursive: e.recursive, force: e.force })),
186
+ path_exists: async (e) => ({ kind: 'path_exists', exists: await f.access(e.path) }),
187
+ };
188
+ }
189
+ function workspaceFamily(deps) {
190
+ const w = deps.workspace;
191
+ return {
192
+ ensure: async (e) => {
193
+ const r = await w.ensureFor(e.identifier, { baseBranch: e.baseBranch, githubRepo: e.githubRepo });
194
+ return { kind: 'workspace_ensure', path: r.path, created: r.created };
195
+ },
196
+ fetch_base: (e) => ok(w.fetchBaseInWorkspace(e.workspacePath, e.baseBranch)),
197
+ remove: (e) => ok(w.remove(e.identifier, e.reason)),
198
+ inspect: async (e) => ({ kind: 'workspace_inspect', inspection: await w.inspect(e.workspacePath, e.baseBranch) }),
199
+ list: async () => ({ kind: 'workspace_list', listings: await w.list() }),
200
+ };
201
+ }
202
+ function credentialFamily(deps) {
203
+ const c = deps.credential;
204
+ return {
205
+ probe: async (e) => ({ kind: 'credential_token', token: await c.probe(e.adapter) }),
206
+ read_identity: async () => ({
207
+ kind: 'credential_identity',
208
+ claude: await c.readClaudeIdentity(),
209
+ codex: await c.readCodexIdentity(),
210
+ }),
211
+ refresh: (e) => ok(c.refresh(e.adapter)),
212
+ // Fan-out to every live VM secret manager is owned by the vm secret-manager
213
+ // adapter, not CredentialPort — the composition root wires it once stood up.
214
+ push_to_all: () => fail('credential.push_to_all not wired (vm secret-manager fan-out owns it)'),
215
+ };
216
+ }
217
+ function runlogFamily(deps) {
218
+ const r = deps.runlog;
219
+ return {
220
+ open: (e) => {
221
+ r.open(e.issueId, e.identifier, deps.runlogPathFor(e.issueId, e.identifier));
222
+ return OK;
223
+ },
224
+ set_attempt: (e) => {
225
+ r.setAttempt(e.issueId, e.attempt);
226
+ return OK;
227
+ },
228
+ record: (e) => {
229
+ r.record(e.issueId, e.entry);
230
+ return OK;
231
+ },
232
+ system: (e) => {
233
+ r.system(e.issueId, e.event, e.fields);
234
+ return OK;
235
+ },
236
+ write_summary: (e) => {
237
+ r.writeSummary(e.issueId, e.summary);
238
+ return OK;
239
+ },
240
+ close: (e) => {
241
+ r.close(e.issueId);
242
+ return OK;
243
+ },
244
+ };
245
+ }
246
+ function timerFamily(deps) {
247
+ return {
248
+ sleep: (e) => ok(deps.timer.sleep(e.ms)),
249
+ // The named timer's `fire` callback is owned by the orchestrator loop that
250
+ // registers it; the interpreter only records presence (no-op fire).
251
+ set_timer: (e) => {
252
+ deps.timer.setTimer(e.id, e.ms, () => { });
253
+ return OK;
254
+ },
255
+ clear_timer: (e) => {
256
+ deps.timer.clearTimer(e.id);
257
+ return OK;
258
+ },
259
+ // RetrySchedulePlan → future redispatch is owned by the orchestrator's retry
260
+ // scheduler (it holds the redispatch closure); not interpretable here.
261
+ schedule_retry: () => fail('timer.schedule_retry not wired (orchestrator retry scheduler owns it)'),
262
+ };
263
+ }
264
+ const dispatchKind = (map) => (effect) => {
265
+ const table = map;
266
+ return table[effect.kind](effect);
267
+ };
268
+ /** All family handlers, keyed by family, closed over the injected adapters. */
269
+ export function buildFamilies(deps) {
270
+ return {
271
+ git: dispatchKind(gitFamily(deps)),
272
+ gh: dispatchKind(ghFamily(deps)),
273
+ vm: dispatchKind(vmFamily(deps)),
274
+ process: dispatchKind(processFamily(deps)),
275
+ acp: dispatchKind(acpFamily(deps)),
276
+ // The per-dispatch MCP worker-lifecycle (activate/deactivate) — performed here so
277
+ // the runner brackets via an Effect, never poking the runtime's active-entry map.
278
+ mcp: dispatchKind(mcpFamily(deps)),
279
+ // The tracker adapter owns the whole family decode/IO (interp/tracker.ts).
280
+ tracker: (e) => deps.tracker.interpret(e),
281
+ fs: dispatchKind(fsFamily(deps)),
282
+ workspace: dispatchKind(workspaceFamily(deps)),
283
+ credential: dispatchKind(credentialFamily(deps)),
284
+ log: (e) => {
285
+ (e.issueId ? deps.log.withIssue(e.issueId) : deps.log).emit(e.level, e.message, e.fields);
286
+ return OK;
287
+ },
288
+ runlog: dispatchKind(runlogFamily(deps)),
289
+ timer: dispatchKind(timerFamily(deps)),
290
+ reaper: async (e) => {
291
+ // The step result is consumed by the vm-reap fold; surface ok/error.
292
+ try {
293
+ await deps.applyKillStep(e.step);
294
+ return OK;
295
+ }
296
+ catch (err) {
297
+ return fail(err);
298
+ }
299
+ },
300
+ pr: (e) => deps.applyPrEffect(e.effect),
301
+ // The McpEffectResult is folded by the mcp post-move decider; surface ok.
302
+ mcp_tool: (e) => ok(deps.applyMcpEffect(e.effect)),
303
+ tty: async (e) => {
304
+ if (e.kind === 'prompt_line')
305
+ return { kind: 'tty_line', text: await deps.ttyPromptLine(e.question) };
306
+ deps.ttyWrite(e.text);
307
+ return OK;
308
+ },
309
+ // The per-issue steering awaiter (the ONE live Promise) — resolve/cancel performed
310
+ // here so the HTTP reply route + worker teardown emit an Effect, never poke it.
311
+ steering: dispatchKind(steeringFamily(deps.steering)),
312
+ };
313
+ }
314
+ //# sourceMappingURL=effect-interpreter-families.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-interpreter-families.js","sourceRoot":"","sources":["../../src/shell/effect-interpreter-families.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ // FCIS rewrite — the SINGLE effect-interpreter seam (kind: interpreter).
2
+ //
3
+ // `execute(effect) → Promise<EffectResult>` routes each Effect family to its
4
+ // owning adapter (a port from src/types/ports) and folds the typed result back
5
+ // to the calling per-loop reducer. This is the ONE place a core-emitted Effect
6
+ // crosses into real IO. Each family delegates to a thin port method — ZERO
7
+ // decisions live here (those belong in core). The per-family handler maps live
8
+ // in the sibling effect-interpreter-families.ts; this file owns only the
9
+ // family-level dispatch + the total try/catch fold.
10
+ //
11
+ // Shell rule: imports from src/types/** ONLY. All concrete adapters are injected
12
+ // by the composition root (src/shell/main.ts).
13
+ import { buildFamilies, fail } from './effect-interpreter-families.js';
14
+ export function createEffectInterpreter(deps) {
15
+ const families = buildFamilies(deps);
16
+ async function execute(effect) {
17
+ const handler = families[effect.family];
18
+ if (!handler)
19
+ return fail(`unhandled effect family: ${JSON.stringify(effect)}`);
20
+ try {
21
+ return await handler(effect);
22
+ }
23
+ catch (e) {
24
+ return fail(e);
25
+ }
26
+ }
27
+ return { execute };
28
+ }
29
+ //# sourceMappingURL=effect-interpreter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-interpreter.js","sourceRoot":"","sources":["../../src/shell/effect-interpreter.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAC/E,2EAA2E;AAC3E,+EAA+E;AAC/E,yEAAyE;AACzE,oDAAoD;AACpD,EAAE;AACF,iFAAiF;AACjF,+CAA+C;AAI/C,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AAKvE,MAAM,UAAU,uBAAuB,CAAC,IAAoB;IAC1D,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACrC,KAAK,UAAU,OAAO,CAAC,MAAc;QACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAsE,CAAC;QAC7G,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}
@@ -0,0 +1,137 @@
1
+ // FCIS rewrite — ACP frame tap + redaction + tool-call summarizers (shell helpers).
2
+ //
3
+ // Split out of acp.ts to keep that adapter under its line budget. These are the
4
+ // IO-adjacent string/stream helpers: multibyte-safe newline framing, bearer-token
5
+ // redaction before any JSONL write, and the thin tool-call/usage summarizers.
6
+ //
7
+ // The tool-call LIFECYCLE decision (the in-flight-set delta) is NOT duplicated
8
+ // here: it is the pure core `core/schedule/token-fold.ts:toolCallLifecycle`,
9
+ // injected into the ACP interpreter through `AcpInterpDeps`. The string
10
+ // summarizers below stay shell-local (they shape display strings, not state).
11
+ // Shell rule: imports src/types/** + node builtins ONLY.
12
+ import { Transform } from 'node:stream';
13
+ import { StringDecoder } from 'node:string_decoder';
14
+ // Transform that hands each newline-delimited frame to `onLine` while passing the raw
15
+ // bytes through unchanged. Decodes with StringDecoder (not chunk.toString) so a UTF-8
16
+ // sequence split across TCP/stream chunk boundaries is not corrupted to U+FFFD; the
17
+ // trailing incomplete sequence is held and prepended to the next decode. _flush surfaces
18
+ // an unterminated tail so a clean shutdown does not drop the last frame.
19
+ export class LineTap extends Transform {
20
+ onLine;
21
+ buf = '';
22
+ decoder = new StringDecoder('utf8');
23
+ constructor(onLine) {
24
+ super();
25
+ this.onLine = onLine;
26
+ }
27
+ tap(line) {
28
+ if (line.length === 0)
29
+ return;
30
+ try {
31
+ this.onLine(line);
32
+ }
33
+ catch {
34
+ /* tap failures must not interrupt the stream */
35
+ }
36
+ }
37
+ _transform(chunk, _enc, cb) {
38
+ this.buf += typeof chunk === 'string' ? chunk : this.decoder.write(chunk);
39
+ let idx;
40
+ while ((idx = this.buf.indexOf('\n')) !== -1) {
41
+ this.tap(this.buf.slice(0, idx));
42
+ this.buf = this.buf.slice(idx + 1);
43
+ }
44
+ cb(null, chunk);
45
+ }
46
+ _flush(cb) {
47
+ const tail = this.decoder.end();
48
+ if (tail.length > 0)
49
+ this.buf += tail;
50
+ this.tap(this.buf);
51
+ this.buf = '';
52
+ cb();
53
+ }
54
+ }
55
+ // Record one ACP frame to the run log. JSON-parseable lines are stored parsed (so the
56
+ // evaluator does not double-decode); anything else lands as `kind: "unparseable"`.
57
+ // Bearer tokens are redacted in place BEFORE the write (the symphony MCP bearer is a
58
+ // per-issue capability; the JSONL is a long-lived append-only file).
59
+ export function recordAcpFrame(runlog, issueId, direction, line) {
60
+ let frame;
61
+ try {
62
+ frame = JSON.parse(line);
63
+ }
64
+ catch {
65
+ runlog.record(issueId, { channel: 'acp', direction, kind: 'unparseable', raw: line });
66
+ return;
67
+ }
68
+ redactBearerTokens(frame);
69
+ runlog.record(issueId, { channel: 'acp', direction, frame });
70
+ }
71
+ // The redacted replacement when `v` is a `Bearer <token>` string, else undefined so
72
+ // the caller decides whether to recurse. Keeps redactBearerTokens flat (complexity).
73
+ function redactedBearer(v) {
74
+ return typeof v === 'string' && v.startsWith('Bearer ') ? 'Bearer <redacted>' : undefined;
75
+ }
76
+ // Walk `value` and replace any `Bearer <token>` string with `Bearer <redacted>`,
77
+ // mutating in place. Arrays + plain objects only; cycle-guarded.
78
+ function redactBearerTokens(value, seen = new WeakSet()) {
79
+ if (!value || typeof value !== 'object')
80
+ return;
81
+ if (seen.has(value))
82
+ return;
83
+ seen.add(value);
84
+ if (Array.isArray(value)) {
85
+ for (let i = 0; i < value.length; i++) {
86
+ const redacted = redactedBearer(value[i]);
87
+ if (redacted !== undefined)
88
+ value[i] = redacted;
89
+ else
90
+ redactBearerTokens(value[i], seen);
91
+ }
92
+ return;
93
+ }
94
+ const obj = value;
95
+ for (const k of Object.keys(obj)) {
96
+ const redacted = redactedBearer(obj[k]);
97
+ if (redacted !== undefined)
98
+ obj[k] = redacted;
99
+ else
100
+ redactBearerTokens(obj[k], seen);
101
+ }
102
+ }
103
+ // ─── Thin tool-call summarizers (pure data→string) ────────────────────────────
104
+ export function summarize(raw, max = 240) {
105
+ let s;
106
+ try {
107
+ s = typeof raw === 'string' ? raw : JSON.stringify(raw);
108
+ }
109
+ catch {
110
+ s = String(raw);
111
+ }
112
+ return s.length > max ? s.slice(0, max) + '…' : s;
113
+ }
114
+ export function extractTextContent(content) {
115
+ if (!content || typeof content !== 'object')
116
+ return '';
117
+ const c = content;
118
+ return c.type === 'text' && typeof c.text === 'string' ? c.text : '';
119
+ }
120
+ export function truncate(s, max) {
121
+ return s.length > max ? s.slice(0, max) + '…' : s;
122
+ }
123
+ function toolName(u) {
124
+ if (typeof u.title === 'string' && u.title.trim())
125
+ return u.title.trim();
126
+ if (typeof u.kind === 'string' && u.kind)
127
+ return u.kind;
128
+ return typeof u.toolCallId === 'string' ? u.toolCallId : '';
129
+ }
130
+ export function summarizeToolCall(u) {
131
+ return summarize(toolName(u) || 'tool', 140);
132
+ }
133
+ export function summarizeToolCallUpdate(u) {
134
+ const status = typeof u.status === 'string' ? u.status : '';
135
+ return summarize([toolName(u), status].filter(Boolean).join(' ') || 'tool_call_update', 140);
136
+ }
137
+ //# sourceMappingURL=acp-frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp-frame.js","sourceRoot":"","sources":["../../../src/shell/interp/acp-frame.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,EAAE;AACF,gFAAgF;AAChF,kFAAkF;AAClF,8EAA8E;AAC9E,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,wEAAwE;AACxE,8EAA8E;AAC9E,yDAAyD;AAEzD,OAAO,EAAE,SAAS,EAA0B,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,sFAAsF;AACtF,sFAAsF;AACtF,oFAAoF;AACpF,yFAAyF;AACzF,yEAAyE;AACzE,MAAM,OAAO,OAAQ,SAAQ,SAAS;IAGP;IAFrB,GAAG,GAAG,EAAE,CAAC;IACT,OAAO,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,YAA6B,MAA8B;QACzD,KAAK,EAAE,CAAC;QADmB,WAAM,GAAN,MAAM,CAAwB;IAE3D,CAAC;IACO,GAAG,CAAC,IAAY;QACtB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC9B,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,gDAAgD;QAClD,CAAC;IACH,CAAC;IACD,UAAU,CAAC,KAAsB,EAAE,IAAoB,EAAE,EAAqB;QAC5E,IAAI,CAAC,GAAG,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC;QACpF,IAAI,GAAW,CAAC;QAChB,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,CAAC,EAAqB;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,EAAE,EAAE,CAAC;IACP,CAAC;CACF;AAED,sFAAsF;AACtF,mFAAmF;AACnF,qFAAqF;AACrF,qEAAqE;AACrE,MAAM,UAAU,cAAc,CAC5B,MAAmB,EACnB,OAAe,EACf,SAAsC,EACtC,IAAY;IAEZ,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IACD,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,oFAAoF;AACpF,qFAAqF;AACrF,SAAS,cAAc,CAAC,CAAU;IAChC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5F,CAAC;AAED,iFAAiF;AACjF,iEAAiE;AACjE,SAAS,kBAAkB,CAAC,KAAc,EAAE,OAAO,IAAI,OAAO,EAAU;IACtE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO;IAChD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAe,CAAC;QAAE,OAAO;IACtC,IAAI,CAAC,GAAG,CAAC,KAAe,CAAC,CAAC;IAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,QAAQ,KAAK,SAAS;gBAAE,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;;gBAC3C,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,QAAQ,KAAK,SAAS;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;;YACzC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,SAAS,CAAC,GAAY,EAAE,GAAG,GAAG,GAAG;IAC/C,IAAI,CAAS,CAAC;IACd,IAAI,CAAC;QACH,CAAC,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,CAAC,GAAG,OAAkC,CAAC;IAC7C,OAAO,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACvE,CAAC;AACD,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,GAAW;IAC7C,OAAO,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AACD,SAAS,QAAQ,CAAC,CAA0B;IAC1C,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACzE,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC;IACxD,OAAO,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9D,CAAC;AACD,MAAM,UAAU,iBAAiB,CAAC,CAA0B;IAC1D,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC;AACD,MAAM,UAAU,uBAAuB,CAAC,CAA0B;IAChE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,OAAO,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,kBAAkB,EAAE,GAAG,CAAC,CAAC;AAC/F,CAAC"}