@synergenius/flow-weaver 0.33.1 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (922) hide show
  1. package/LICENSE +201 -226
  2. package/NOTICE +13 -0
  3. package/README.md +152 -244
  4. package/dist/agent/agent-loop.d.ts +4 -2
  5. package/dist/agent/cli-session.d.ts +3 -3
  6. package/dist/agent/cli-session.js +511 -438
  7. package/dist/agent/cli-spawn-config.d.ts +4 -4
  8. package/dist/agent/gate.d.ts +164 -0
  9. package/dist/agent/index.d.ts +4 -4
  10. package/dist/agent/index.js +174 -28
  11. package/dist/agent/mcp-bridge.d.ts +1 -1
  12. package/dist/agent/mcp-bridge.js +114 -128
  13. package/dist/agent/mcp-tool-server.d.ts +2 -2
  14. package/dist/agent/mcp-tool-server.js +147 -189
  15. package/dist/agent/profiles.d.ts +69 -0
  16. package/dist/agent/providers/anthropic.d.ts +2 -4
  17. package/dist/agent/providers/claude-cli.d.ts +4 -5
  18. package/dist/agent/providers/openai-compat.d.ts +8 -1
  19. package/dist/agent/streaming.d.ts +2 -2
  20. package/dist/agent/types.d.ts +16 -10
  21. package/dist/api/builder.d.ts +3 -3
  22. package/dist/api/compile.d.ts +9 -4
  23. package/dist/api/durable-validation.d.ts +15 -0
  24. package/dist/api/generate-in-place.d.ts +21 -19
  25. package/dist/api/generate.d.ts +21 -16
  26. package/dist/api/generated-module/local-node-functions.d.ts +24 -0
  27. package/dist/api/generated-module/module-format.d.ts +23 -0
  28. package/dist/api/generated-module/module-writer.d.ts +34 -0
  29. package/dist/api/generated-module/node-type-imports.d.ts +39 -0
  30. package/dist/api/generated-module/preamble.d.ts +16 -0
  31. package/dist/api/generated-module/workflow-functions.d.ts +29 -0
  32. package/dist/api/graph-identity.d.ts +39 -0
  33. package/dist/api/helpers.d.ts +4 -60
  34. package/dist/api/in-place/built-in-nodes.d.ts +18 -0
  35. package/dist/api/in-place/function-body.d.ts +21 -0
  36. package/dist/api/in-place/fw-imports.d.ts +30 -0
  37. package/dist/api/in-place/macro-coverage.d.ts +14 -0
  38. package/dist/api/in-place/node-type-functions.d.ts +18 -0
  39. package/dist/api/in-place/node-type-jsdoc.d.ts +20 -0
  40. package/dist/api/in-place/orphaned-node-types.d.ts +16 -0
  41. package/dist/api/in-place/runtime-section.d.ts +16 -0
  42. package/dist/api/in-place/signature.d.ts +47 -0
  43. package/dist/api/in-place/source-file.d.ts +19 -0
  44. package/dist/api/in-place/workflow-jsdoc.d.ts +19 -0
  45. package/dist/api/index.d.ts +18 -21
  46. package/dist/api/index.js +259 -53
  47. package/dist/api/inline-engine.generated.d.ts +3 -0
  48. package/dist/api/inline-runtime.d.ts +10 -2
  49. package/dist/api/manipulation/connections.d.ts +1 -1
  50. package/dist/api/manipulation/index.d.ts +8 -8
  51. package/dist/api/manipulation/node-types.d.ts +1 -1
  52. package/dist/api/manipulation/nodes.d.ts +3 -13
  53. package/dist/api/manipulation/ports.d.ts +1 -1
  54. package/dist/api/manipulation/scopes.d.ts +1 -1
  55. package/dist/api/manipulation/workflow.d.ts +1 -1
  56. package/dist/api/modify-operation.d.ts +0 -2
  57. package/dist/api/parse.d.ts +22 -1
  58. package/dist/api/port-references.d.ts +66 -0
  59. package/dist/api/query.d.ts +18 -2
  60. package/dist/api/templates.d.ts +1 -1
  61. package/dist/api/transform.d.ts +1 -1
  62. package/dist/api/validate.d.ts +1 -1
  63. package/dist/api/validation-registry.d.ts +2 -2
  64. package/dist/artifacts/brief.d.ts +43 -0
  65. package/dist/artifacts/index.d.ts +31 -0
  66. package/dist/artifacts/pdf.d.ts +19 -0
  67. package/dist/ast/builder.d.ts +3 -3
  68. package/dist/ast/index.d.ts +4 -4
  69. package/dist/ast/index.js +60 -5
  70. package/dist/ast/serialization-node.d.ts +1 -1
  71. package/dist/ast/serialization.d.ts +1 -1
  72. package/dist/ast/types.d.ts +82 -291
  73. package/dist/ast/workflow-utils.d.ts +4 -4
  74. package/dist/built-in-nodes/coercion-types.d.ts +1 -1
  75. package/dist/built-in-nodes/delay.d.ts +3 -1
  76. package/dist/built-in-nodes/generated-registry.d.ts +1 -1
  77. package/dist/built-in-nodes/index.d.ts +6 -5
  78. package/dist/built-in-nodes/index.js +79 -5
  79. package/dist/built-in-nodes/invoke-workflow.d.ts +2 -1
  80. package/dist/built-in-nodes/mock-types.d.ts +45 -14
  81. package/dist/built-in-nodes/sleep.d.ts +12 -0
  82. package/dist/built-in-nodes/wait-for-agent.d.ts +2 -1
  83. package/dist/built-in-nodes/wait-for-event.d.ts +2 -1
  84. package/dist/chevrotain-parser/coerce-parser.d.ts +1 -1
  85. package/dist/chevrotain-parser/connect-parser.d.ts +1 -1
  86. package/dist/chevrotain-parser/grammar-diagrams.d.ts +1 -1
  87. package/dist/chevrotain-parser/index.d.ts +20 -23
  88. package/dist/chevrotain-parser/node-parser.d.ts +7 -8
  89. package/dist/chevrotain-parser/parse-line.d.ts +54 -0
  90. package/dist/chevrotain-parser/tokens.d.ts +0 -17
  91. package/dist/chevrotain-parser/trigger-cancel-parser.d.ts +6 -1
  92. package/dist/chunks/chunk-4EUSHAY6.js +298 -0
  93. package/dist/chunks/chunk-4KDUEOFD.js +197 -0
  94. package/dist/chunks/chunk-5Y3AIUWY.js +911 -0
  95. package/dist/chunks/chunk-6KMVP6AU.js +20 -0
  96. package/dist/chunks/chunk-6PNJORFL.js +128 -0
  97. package/dist/chunks/chunk-7AAQNGRH.js +2001 -0
  98. package/dist/chunks/chunk-7YYKTPJ5.js +22705 -0
  99. package/dist/chunks/chunk-A5MBOFVY.js +33 -0
  100. package/dist/chunks/chunk-AXNQRVJB.js +18 -0
  101. package/dist/chunks/chunk-B6HQ6YS5.js +572 -0
  102. package/dist/chunks/chunk-CY3RNVML.js +296 -0
  103. package/dist/chunks/chunk-CYHYDLV4.js +653 -0
  104. package/dist/chunks/chunk-CZBCCK4Y.js +82 -0
  105. package/dist/chunks/chunk-DCMGQP5V.js +505 -0
  106. package/dist/chunks/chunk-DIAA66GL.js +72 -0
  107. package/dist/chunks/chunk-DUO6H5PR.js +20 -0
  108. package/dist/chunks/chunk-E5WN7IGO.js +125 -0
  109. package/dist/chunks/chunk-EFGFXXQF.js +184 -0
  110. package/dist/chunks/chunk-F3RTZV2A.js +2811 -0
  111. package/dist/chunks/chunk-FMTLP5ZX.js +1397 -0
  112. package/dist/chunks/chunk-HKZLQJDV.js +79 -0
  113. package/dist/chunks/chunk-INDEVYEC.js +146 -0
  114. package/dist/chunks/chunk-JQTF4R5L.js +390 -0
  115. package/dist/chunks/chunk-KMCAYNUM.js +331 -0
  116. package/dist/chunks/chunk-KMWCCOUJ.js +1444 -0
  117. package/dist/chunks/chunk-KU3CLJI2.js +338 -0
  118. package/dist/chunks/chunk-NDSTGMKR.js +3300 -0
  119. package/dist/chunks/chunk-NQNLUAPO.js +505 -0
  120. package/dist/chunks/chunk-O2U2LO57.js +466 -0
  121. package/dist/chunks/chunk-OOQG7UPP.js +457 -0
  122. package/dist/chunks/chunk-OZQAW5ZG.js +112 -0
  123. package/dist/chunks/chunk-P2CVDGHR.js +487 -0
  124. package/dist/chunks/chunk-P44RIZ7C.js +592 -0
  125. package/dist/chunks/chunk-PEZCT37T.js +1475 -0
  126. package/dist/chunks/chunk-PKWSAW6O.js +152 -0
  127. package/dist/chunks/chunk-Q6MDDZMT.js +4373 -0
  128. package/dist/chunks/chunk-QDE4Z7KW.js +6 -0
  129. package/dist/chunks/chunk-QJDAVSNY.js +8 -0
  130. package/dist/chunks/chunk-QYPORSLO.js +7552 -0
  131. package/dist/chunks/chunk-R4QGNK34.js +183 -0
  132. package/dist/chunks/chunk-REEYC73I.js +3002 -0
  133. package/dist/chunks/chunk-SEWDMQ6Q.js +46 -0
  134. package/dist/chunks/chunk-TAIUWKZB.js +3057 -0
  135. package/dist/chunks/chunk-TN4YZ3O7.js +196 -0
  136. package/dist/chunks/chunk-TRMFB43C.js +143 -0
  137. package/dist/chunks/chunk-VO4QXG2X.js +1016 -0
  138. package/dist/chunks/chunk-VP2P3BPA.js +1002 -0
  139. package/dist/chunks/chunk-VQ7H33J4.js +2176 -0
  140. package/dist/chunks/chunk-VWA7MCV2.js +105 -0
  141. package/dist/chunks/chunk-XAV22WD7.js +253 -0
  142. package/dist/chunks/chunk-YSPBPZDV.js +148 -0
  143. package/dist/chunks/chunk-ZKEGXO73.js +282 -0
  144. package/dist/chunks/chunk-ZMGN6F3S.js +4256 -0
  145. package/dist/chunks/grammar-diagrams-AI7VDXOM.js +14 -0
  146. package/dist/chunks/index.min-ECJD6GZC.js +37 -0
  147. package/dist/chunks/manifest-EPTR5MYH.js +21 -0
  148. package/dist/chunks/openapi-document-6TCGVDUW.js +69 -0
  149. package/dist/chunks/registry-K2U5KUTY.js +23 -0
  150. package/dist/chunks/serialization-node-UGY6CFH6.js +38 -0
  151. package/dist/chunks/validate-GEKSZPIN.js +24 -0
  152. package/dist/chunks/validation-registry-IQZX3UE3.js +7 -0
  153. package/dist/chunks/validator-VXFHLPDW.js +26 -0
  154. package/dist/chunks/workflow-executor-KBGFKHNR.js +36 -0
  155. package/dist/cli/commands/agents.d.ts +16 -0
  156. package/dist/cli/commands/artifact.d.ts +10 -0
  157. package/dist/cli/commands/compile.d.ts +0 -30
  158. package/dist/cli/commands/console.d.ts +32 -0
  159. package/dist/cli/commands/context.d.ts +0 -3
  160. package/dist/cli/commands/describe.js +386 -352
  161. package/dist/cli/commands/dev.d.ts +9 -4
  162. package/dist/cli/commands/diagram.d.ts +3 -5
  163. package/dist/cli/commands/doctor.d.ts +27 -4
  164. package/dist/cli/commands/doctor.js +3307 -633
  165. package/dist/cli/commands/export.d.ts +6 -4
  166. package/dist/cli/commands/grammar.d.ts +0 -3
  167. package/dist/cli/commands/implement.d.ts +1 -1
  168. package/dist/cli/commands/init/agent-handoff.d.ts +28 -0
  169. package/dist/cli/commands/init/config.d.ts +3 -0
  170. package/dist/cli/commands/init/files.d.ts +12 -0
  171. package/dist/cli/commands/init/naming.d.ts +13 -0
  172. package/dist/cli/commands/init/output.d.ts +12 -0
  173. package/dist/cli/commands/init/setup.d.ts +21 -0
  174. package/dist/cli/commands/init/types.d.ts +53 -0
  175. package/dist/cli/commands/init-personas.d.ts +9 -1
  176. package/dist/cli/commands/init.d.ts +24 -88
  177. package/dist/cli/commands/market.d.ts +1 -1
  178. package/dist/cli/commands/mcp-setup.d.ts +1 -4
  179. package/dist/cli/commands/modify.d.ts +0 -5
  180. package/dist/cli/commands/openapi.d.ts +9 -11
  181. package/dist/cli/commands/run.d.ts +0 -4
  182. package/dist/cli/commands/serve.d.ts +24 -26
  183. package/dist/cli/commands/status.d.ts +1 -1
  184. package/dist/cli/exports.d.ts +3 -4
  185. package/dist/cli/exports.js +124 -23
  186. package/dist/cli/flow-weaver-agents-H653446S.mjs +81 -0
  187. package/dist/cli/flow-weaver-artifact-WBFYTW76.mjs +58 -0
  188. package/dist/cli/flow-weaver-chunk-265CEK74.mjs +2 -0
  189. package/dist/cli/flow-weaver-chunk-2C7PZCV5.mjs +186 -0
  190. package/dist/cli/flow-weaver-chunk-3BSYCWPL.mjs +3109 -0
  191. package/dist/cli/flow-weaver-chunk-3MKUQP3D.mjs +547 -0
  192. package/dist/cli/flow-weaver-chunk-3ZLMPQTH.mjs +27 -0
  193. package/dist/cli/flow-weaver-chunk-4DVY73ML.mjs +280 -0
  194. package/dist/cli/flow-weaver-chunk-54M4KNEL.mjs +200 -0
  195. package/dist/cli/flow-weaver-chunk-55QMUZIA.mjs +256 -0
  196. package/dist/cli/flow-weaver-chunk-6ZUJ7LMX.mjs +2003 -0
  197. package/dist/cli/flow-weaver-chunk-7ET6N32V.mjs +419 -0
  198. package/dist/cli/flow-weaver-chunk-7G63RR4K.mjs +8880 -0
  199. package/dist/cli/flow-weaver-chunk-A6M5K3W7.mjs +4418 -0
  200. package/dist/cli/flow-weaver-chunk-AA3NATMX.mjs +154 -0
  201. package/dist/cli/flow-weaver-chunk-APX6MQ5A.mjs +5652 -0
  202. package/dist/cli/flow-weaver-chunk-BHCC5FE5.mjs +17 -0
  203. package/dist/cli/flow-weaver-chunk-DM4BBRRU.mjs +35 -0
  204. package/dist/cli/flow-weaver-chunk-DRN7KPWY.mjs +168 -0
  205. package/dist/cli/flow-weaver-chunk-EKWF27G6.mjs +23 -0
  206. package/dist/cli/flow-weaver-chunk-EM5HWQ4R.mjs +338 -0
  207. package/dist/cli/flow-weaver-chunk-FPPPU2DG.mjs +226 -0
  208. package/dist/cli/flow-weaver-chunk-GAQXZHNO.mjs +3005 -0
  209. package/dist/cli/flow-weaver-chunk-GBUNNP33.mjs +1329 -0
  210. package/dist/cli/flow-weaver-chunk-HMAKDE55.mjs +636 -0
  211. package/dist/cli/flow-weaver-chunk-HQ3ZAN44.mjs +367 -0
  212. package/dist/cli/flow-weaver-chunk-I4APCXYN.mjs +21442 -0
  213. package/dist/cli/flow-weaver-chunk-IJJ4JXTL.mjs +2297 -0
  214. package/dist/cli/flow-weaver-chunk-J7EPZW2I.mjs +33 -0
  215. package/dist/cli/flow-weaver-chunk-KOEMJHLG.mjs +83 -0
  216. package/dist/cli/flow-weaver-chunk-M6CBWQKJ.mjs +271 -0
  217. package/dist/cli/flow-weaver-chunk-MHJ4N652.mjs +1580 -0
  218. package/dist/cli/flow-weaver-chunk-MKAFQWLP.mjs +202 -0
  219. package/dist/cli/flow-weaver-chunk-MMV2XGD3.mjs +3291 -0
  220. package/dist/cli/flow-weaver-chunk-MSI2UJES.mjs +125 -0
  221. package/dist/cli/flow-weaver-chunk-N767YRAI.mjs +48 -0
  222. package/dist/cli/flow-weaver-chunk-NQKKWDGF.mjs +56 -0
  223. package/dist/cli/flow-weaver-chunk-NYZDQYFU.mjs +45 -0
  224. package/dist/cli/flow-weaver-chunk-OMVWSNHJ.mjs +14 -0
  225. package/dist/cli/flow-weaver-chunk-PUWZ47H5.mjs +2188 -0
  226. package/dist/cli/flow-weaver-chunk-QOPRVDES.mjs +46 -0
  227. package/dist/cli/flow-weaver-chunk-RIWE7YTR.mjs +216 -0
  228. package/dist/cli/flow-weaver-chunk-S63Q3JIU.mjs +789 -0
  229. package/dist/cli/flow-weaver-chunk-T7X5A23H.mjs +558 -0
  230. package/dist/cli/flow-weaver-chunk-TLV3VZUN.mjs +2 -0
  231. package/dist/cli/flow-weaver-chunk-TS5P3PIN.mjs +194 -0
  232. package/dist/cli/flow-weaver-chunk-U3EO3X4B.mjs +649 -0
  233. package/dist/cli/flow-weaver-chunk-UNFS3NQP.mjs +34 -0
  234. package/dist/cli/flow-weaver-chunk-V6DHWFQG.mjs +2811 -0
  235. package/dist/cli/flow-weaver-chunk-VXWNLYQU.mjs +9 -0
  236. package/dist/cli/flow-weaver-chunk-W3YNK26P.mjs +149 -0
  237. package/dist/cli/flow-weaver-chunk-XG2WKXYZ.mjs +324 -0
  238. package/dist/cli/flow-weaver-chunk-YLSRZWFK.mjs +2219 -0
  239. package/dist/cli/flow-weaver-chunk-YVPURWS6.mjs +40 -0
  240. package/dist/cli/flow-weaver-chunk-Z44JK332.mjs +582 -0
  241. package/dist/cli/flow-weaver-chunk-Z5ZJPNSY.mjs +517 -0
  242. package/dist/cli/flow-weaver-chunk-ZQALO25T.mjs +594 -0
  243. package/dist/cli/flow-weaver-compile-A2CABDSB.mjs +37 -0
  244. package/dist/cli/flow-weaver-console-6EBHDBTN.mjs +71 -0
  245. package/dist/cli/flow-weaver-context-ECLYANFF.mjs +17 -0
  246. package/dist/cli/flow-weaver-context-ZRUMW2KE.mjs +69 -0
  247. package/dist/cli/flow-weaver-create-WIP4EFNP.mjs +124 -0
  248. package/dist/cli/flow-weaver-deployment-WJJRK7NO.mjs +14 -0
  249. package/dist/cli/flow-weaver-describe-XDIFF5LI.mjs +41 -0
  250. package/dist/cli/flow-weaver-dev-LG2NSQAU.mjs +196 -0
  251. package/dist/cli/flow-weaver-diagram-3EVQARQE.mjs +52 -0
  252. package/dist/cli/flow-weaver-diagram-7LR7O4M2.mjs +44 -0
  253. package/dist/cli/flow-weaver-diff-USF7DJLU.mjs +85 -0
  254. package/dist/cli/flow-weaver-docs-QU2ZOXKH.mjs +96 -0
  255. package/dist/cli/flow-weaver-doctor-K447YWHR.mjs +43 -0
  256. package/dist/cli/flow-weaver-export-LAS6N56Y.mjs +140 -0
  257. package/dist/cli/flow-weaver-grammar-RIRUS3Q6.mjs +49 -0
  258. package/dist/cli/flow-weaver-grammar-diagrams-WXRTW5SK.mjs +15 -0
  259. package/dist/cli/flow-weaver-implement-5JG6BCFZ.mjs +114 -0
  260. package/dist/cli/flow-weaver-index.min-OR5SIHXD.mjs +39 -0
  261. package/dist/cli/flow-weaver-init-34YZNPQX.mjs +972 -0
  262. package/dist/cli/flow-weaver-init-personas-NOGZTQQ2.mjs +48 -0
  263. package/dist/cli/flow-weaver-manifest-4JNUSEB3.mjs +18 -0
  264. package/dist/cli/flow-weaver-market-WA4CKHKV.mjs +444 -0
  265. package/dist/cli/flow-weaver-mcp-setup-O26MGXSD.mjs +22 -0
  266. package/dist/cli/flow-weaver-migrate-VFVEUTPH.mjs +119 -0
  267. package/dist/cli/flow-weaver-modify-VM3JP5K6.mjs +97 -0
  268. package/dist/cli/flow-weaver-openapi-IRBWI3HM.mjs +71 -0
  269. package/dist/cli/flow-weaver-openapi-document-7N6YMPG3.mjs +30 -0
  270. package/dist/cli/flow-weaver-pack-commands-OS2QRXAK.mjs +146 -0
  271. package/dist/cli/flow-weaver-registry-5MLFRPPT.mjs +25 -0
  272. package/dist/cli/flow-weaver-run-DSTLSTHR.mjs +555 -0
  273. package/dist/cli/flow-weaver-serialization-node-LE6PCG4M.mjs +50 -0
  274. package/dist/cli/flow-weaver-serve-NVLCLSOW.mjs +192 -0
  275. package/dist/cli/flow-weaver-server-7IERLVXE.mjs +2925 -0
  276. package/dist/cli/flow-weaver-server-KWF4PXYC.mjs +19112 -0
  277. package/dist/cli/flow-weaver-status-75W2S3YB.mjs +138 -0
  278. package/dist/cli/flow-weaver-strip-AZPXUYVA.mjs +79 -0
  279. package/dist/cli/flow-weaver-templates-DSNMB6K7.mjs +72 -0
  280. package/dist/cli/flow-weaver-validate-A4UWDQN6.mjs +19 -0
  281. package/dist/cli/flow-weaver-validate-GRBZ5W4C.mjs +296 -0
  282. package/dist/cli/flow-weaver-validation-registry-BINGUNXX.mjs +9 -0
  283. package/dist/cli/flow-weaver-validator-TY56CI42.mjs +21 -0
  284. package/dist/cli/flow-weaver-watch-OPPERXL6.mjs +114 -0
  285. package/dist/cli/flow-weaver-workflow-executor-6AHYPXAN.mjs +26 -0
  286. package/dist/cli/flow-weaver.mjs +3557 -89498
  287. package/dist/cli/index.d.ts +5 -2
  288. package/dist/cli/pack-commands-needed.d.ts +12 -0
  289. package/dist/cli/program.d.ts +14 -0
  290. package/dist/cli/templates/ai/mock-provider.d.ts +1 -1
  291. package/dist/cli/templates/index.d.ts +1 -8
  292. package/dist/cli/templates/nodes/agent-router.d.ts +1 -1
  293. package/dist/cli/templates/nodes/aggregator.d.ts +1 -1
  294. package/dist/cli/templates/nodes/conversation-memory.d.ts +1 -1
  295. package/dist/cli/templates/nodes/http.d.ts +1 -1
  296. package/dist/cli/templates/nodes/human-approval.d.ts +1 -1
  297. package/dist/cli/templates/nodes/json-extractor.d.ts +1 -1
  298. package/dist/cli/templates/nodes/llm-call.d.ts +1 -1
  299. package/dist/cli/templates/nodes/prompt-template.d.ts +1 -1
  300. package/dist/cli/templates/nodes/rag-retriever.d.ts +1 -1
  301. package/dist/cli/templates/nodes/tool-executor.d.ts +1 -1
  302. package/dist/cli/templates/nodes/transformer.d.ts +1 -1
  303. package/dist/cli/templates/nodes/validator.d.ts +1 -1
  304. package/dist/cli/templates/shared/approval-types.d.ts +1 -1
  305. package/dist/cli/templates/shared/case.d.ts +14 -0
  306. package/dist/cli/templates/shared/llm-types.d.ts +4 -4
  307. package/dist/cli/templates/workflows/aggregator.d.ts +1 -1
  308. package/dist/cli/templates/workflows/ai-agent.d.ts +1 -1
  309. package/dist/cli/templates/workflows/ai-chat.d.ts +1 -1
  310. package/dist/cli/templates/workflows/ai-rag.d.ts +1 -1
  311. package/dist/cli/templates/workflows/ai-react.d.ts +1 -1
  312. package/dist/cli/templates/workflows/approval.d.ts +10 -0
  313. package/dist/cli/templates/workflows/conditional.d.ts +2 -2
  314. package/dist/cli/templates/workflows/error-handler.d.ts +2 -2
  315. package/dist/cli/templates/workflows/foreach.d.ts +1 -1
  316. package/dist/cli/templates/workflows/sequential.d.ts +1 -1
  317. package/dist/cli/templates/workflows/webhook.d.ts +1 -1
  318. package/dist/cli/utils/interactive.d.ts +6 -0
  319. package/dist/cli/utils/json-option.d.ts +8 -0
  320. package/dist/cli/utils/logger.d.ts +2 -0
  321. package/dist/compiler/durable-source-proof.d.ts +23 -0
  322. package/dist/compiler/executable-artifact.d.ts +29 -0
  323. package/dist/compiler/index.d.ts +4 -0
  324. package/dist/compiler/index.js +36 -0
  325. package/dist/console/app.js +106 -0
  326. package/dist/console/assets/synergenius.svg +18 -0
  327. package/dist/console/author.d.ts +32 -0
  328. package/dist/console/cli-catalog.d.ts +21 -0
  329. package/dist/console/cli-run.d.ts +35 -0
  330. package/dist/console/cli-run.js +46 -0
  331. package/dist/console/debug.d.ts +67 -0
  332. package/dist/console/diff-view.d.ts +96 -0
  333. package/dist/console/export.d.ts +36 -0
  334. package/dist/console/git.d.ts +27 -0
  335. package/dist/console/index.d.ts +4 -0
  336. package/dist/console/index.html +16 -0
  337. package/dist/console/index.js +203 -0
  338. package/dist/console/packs.d.ts +100 -0
  339. package/dist/console/request-guard.d.ts +10 -0
  340. package/dist/console/respond.d.ts +16 -0
  341. package/dist/console/router.d.ts +64 -0
  342. package/dist/console/routes-agents.d.ts +14 -0
  343. package/dist/console/routes-project.d.ts +3 -0
  344. package/dist/console/routes-runs.d.ts +3 -0
  345. package/dist/console/routes-services.d.ts +7 -0
  346. package/dist/console/routes-tools.d.ts +3 -0
  347. package/dist/console/runs.d.ts +69 -0
  348. package/dist/console/scan.d.ts +49 -0
  349. package/dist/console/schema.d.ts +74 -0
  350. package/dist/console/server.d.ts +34 -0
  351. package/dist/console/server.js +43264 -0
  352. package/dist/console/services.d.ts +119 -0
  353. package/dist/console/source.d.ts +23 -0
  354. package/dist/console/status.d.ts +68 -0
  355. package/dist/console/styles.css +1023 -0
  356. package/dist/console/terminals.d.ts +22 -0
  357. package/dist/console/workflow-view.d.ts +153 -0
  358. package/dist/constants.d.ts +5 -1
  359. package/dist/constants.js +56 -167
  360. package/dist/context/index.d.ts +10 -0
  361. package/dist/context/index.js +14 -191
  362. package/dist/coordinator/agent-gate.d.ts +107 -0
  363. package/dist/coordinator/bundle-digest.d.ts +20 -0
  364. package/dist/coordinator/clock-tick.d.ts +4 -0
  365. package/dist/coordinator/effect-receipts.d.ts +10 -0
  366. package/dist/coordinator/errors.d.ts +31 -0
  367. package/dist/coordinator/file-store.d.ts +3 -0
  368. package/dist/coordinator/gate-labeling.d.ts +33 -0
  369. package/dist/coordinator/gate-resolution.d.ts +28 -0
  370. package/dist/coordinator/index.d.ts +12 -0
  371. package/dist/coordinator/index.js +107 -0
  372. package/dist/coordinator/memory-store.d.ts +3 -0
  373. package/dist/coordinator/params.d.ts +18 -0
  374. package/dist/coordinator/run-annotations.d.ts +6 -0
  375. package/dist/coordinator/run-context.d.ts +11 -0
  376. package/dist/coordinator/run-ending.d.ts +5 -0
  377. package/dist/coordinator/run-outcome.d.ts +31 -0
  378. package/dist/coordinator/run-resume.d.ts +6 -0
  379. package/dist/coordinator/run-start.d.ts +4 -0
  380. package/dist/coordinator/run-store.d.ts +275 -0
  381. package/dist/coordinator/run-trace.d.ts +41 -0
  382. package/dist/coordinator/run-views.d.ts +12 -0
  383. package/dist/coordinator/runs-dir.d.ts +26 -0
  384. package/dist/coordinator/store.d.ts +67 -0
  385. package/dist/coordinator/time.d.ts +39 -0
  386. package/dist/coordinator/workflow-selection.d.ts +6 -0
  387. package/dist/deployment/index.d.ts +11 -16
  388. package/dist/deployment/index.js +541 -50
  389. package/dist/deployment/targets/base.d.ts +11 -13
  390. package/dist/deployment/targets/openapi-parts.d.ts +92 -0
  391. package/dist/diagram/arms.d.ts +70 -0
  392. package/dist/diagram/ascii-renderer.d.ts +1 -1
  393. package/dist/diagram/geometry.d.ts +22 -29
  394. package/dist/diagram/graph/bounds.d.ts +30 -0
  395. package/dist/diagram/graph/metrics.d.ts +21 -0
  396. package/dist/diagram/graph/nodes.d.ts +33 -0
  397. package/dist/diagram/graph/placement.d.ts +22 -0
  398. package/dist/diagram/graph/ports.d.ts +23 -0
  399. package/dist/diagram/graph/routing.d.ts +40 -0
  400. package/dist/diagram/graph/scopes.d.ts +30 -0
  401. package/dist/diagram/index.d.ts +15 -23
  402. package/dist/diagram/index.js +632 -111
  403. package/dist/diagram/labels.d.ts +12 -0
  404. package/dist/diagram/lanes.d.ts +93 -0
  405. package/dist/diagram/layout.d.ts +1 -1
  406. package/dist/diagram/material-symbols.d.ts +7 -0
  407. package/dist/diagram/orthogonal-router.d.ts +15 -51
  408. package/dist/diagram/process-view.d.ts +79 -0
  409. package/dist/diagram/spine.d.ts +25 -0
  410. package/dist/diagram/theme.d.ts +3 -5
  411. package/dist/diagram/types.d.ts +6 -20
  412. package/dist/diff/index.js +53 -9
  413. package/dist/diff/types.d.ts +1 -5
  414. package/dist/doc-metadata/extractors/annotations.d.ts +0 -4
  415. package/dist/doc-metadata/extractors/cli-commands.d.ts +2 -1
  416. package/dist/doc-metadata/extractors/core-metadata.d.ts +19 -4
  417. package/dist/doc-metadata/extractors/error-codes.d.ts +1 -1
  418. package/dist/doc-metadata/extractors/mcp-tools.d.ts +7 -3
  419. package/dist/doc-metadata/index.d.ts +1 -2
  420. package/dist/doc-metadata/index.js +2368 -9
  421. package/dist/doc-metadata/types.d.ts +7 -24
  422. package/dist/docs/guide.d.ts +33 -0
  423. package/dist/docs/index.d.ts +7 -4
  424. package/dist/docs/index.js +298 -298
  425. package/dist/docs/pack-topics.d.ts +18 -0
  426. package/dist/editor-completions/annotationValues.d.ts +1 -1
  427. package/dist/editor-completions/contextParser.d.ts +3 -2
  428. package/dist/editor-completions/dataTypes.d.ts +1 -1
  429. package/dist/editor-completions/goToDefinition.d.ts +1 -1
  430. package/dist/editor-completions/index.d.ts +8 -8
  431. package/dist/editor-completions/index.js +1244 -175
  432. package/dist/editor-completions/jsDocAnnotations.d.ts +1 -1
  433. package/dist/editor-completions/modifierCompletions.d.ts +1 -1
  434. package/dist/export/index.d.ts +7 -1
  435. package/dist/generated-branding.js +8 -21
  436. package/dist/generated-version.d.ts +1 -1
  437. package/dist/generated-version.js +7 -3
  438. package/dist/generator/annotation-generator.d.ts +84 -0
  439. package/dist/generator/async-detection.d.ts +1 -1
  440. package/dist/{body-generator.d.ts → generator/body-generator.d.ts} +7 -3
  441. package/dist/generator/code-utils.d.ts +15 -60
  442. package/dist/generator/connection-reads.d.ts +94 -0
  443. package/dist/generator/control-flow-plan.d.ts +74 -0
  444. package/dist/generator/control-flow.d.ts +1 -1
  445. package/dist/generator/exit-assembly.d.ts +11 -0
  446. package/dist/generator/index.d.ts +4 -5
  447. package/dist/generator/index.js +34 -11
  448. package/dist/generator/input-port-values.d.ts +22 -0
  449. package/dist/generator/{scope-function-generator.d.ts → node-arguments.d.ts} +76 -1
  450. package/dist/generator/node-invocation.d.ts +74 -0
  451. package/dist/{node-types-generator.d.ts → generator/node-types-generator.d.ts} +3 -2
  452. package/dist/generator/scope-closure.d.ts +23 -0
  453. package/dist/generator/scoped-child.d.ts +49 -0
  454. package/dist/{sugar-optimizer.d.ts → generator/sugar-optimizer.d.ts} +1 -1
  455. package/dist/generator/unified.d.ts +14 -2
  456. package/dist/generator/workflow-generator.d.ts +37 -0
  457. package/dist/index.d.ts +29 -26
  458. package/dist/index.js +1322 -92
  459. package/dist/jsdoc-port-sync/apply-diff.d.ts +15 -0
  460. package/dist/jsdoc-port-sync/callback-signature.d.ts +17 -0
  461. package/dist/jsdoc-port-sync/diff.d.ts +5 -7
  462. package/dist/jsdoc-port-sync/incomplete-lines.d.ts +41 -0
  463. package/dist/jsdoc-port-sync/index.d.ts +11 -11
  464. package/dist/jsdoc-port-sync/index.js +88 -45
  465. package/dist/jsdoc-port-sync/jsdoc-to-signature.d.ts +66 -0
  466. package/dist/jsdoc-port-sync/port-parser.d.ts +6 -24
  467. package/dist/jsdoc-port-sync/port-tag-placement.d.ts +55 -0
  468. package/dist/jsdoc-port-sync/scoped-ports.d.ts +21 -0
  469. package/dist/jsdoc-port-sync/signature-parser.d.ts +8 -1
  470. package/dist/jsdoc-port-sync/signature-to-jsdoc.d.ts +77 -0
  471. package/dist/jsdoc-port-sync/sync.d.ts +4 -1
  472. package/dist/marketplace/index.d.ts +5 -3
  473. package/dist/marketplace/index.js +62 -10
  474. package/dist/marketplace/install.d.ts +24 -0
  475. package/dist/marketplace/manifest.d.ts +1 -1
  476. package/dist/marketplace/npmrc.d.ts +24 -0
  477. package/dist/marketplace/registry.d.ts +46 -11
  478. package/dist/marketplace/types.d.ts +41 -24
  479. package/dist/marketplace/validator.d.ts +1 -1
  480. package/dist/mcp/debug-session.d.ts +2 -4
  481. package/dist/mcp/dist-imports.d.ts +12 -0
  482. package/dist/mcp/response-utils.d.ts +11 -9
  483. package/dist/mcp/server.d.ts +0 -1
  484. package/dist/mcp/tools-context.d.ts +11 -0
  485. package/dist/mcp/tools-diagram.d.ts +1 -2
  486. package/dist/mcp/tools-export.d.ts +2 -2
  487. package/dist/mcp/tools-marketplace.d.ts +1 -1
  488. package/dist/mcp/tools-run.d.ts +17 -0
  489. package/dist/mcp/tools-workflow.d.ts +3 -0
  490. package/dist/mcp/types.d.ts +4 -14
  491. package/dist/mcp/workflow-executor.d.ts +57 -19
  492. package/dist/npm-packages.d.ts +1 -1
  493. package/dist/npm-packages.js +10 -473
  494. package/dist/parser/annotation-parser.d.ts +88 -0
  495. package/dist/parser/annotation-suggestion.d.ts +23 -0
  496. package/dist/parser/durable-effect-contract.d.ts +10 -0
  497. package/dist/parser/expression-references.d.ts +101 -0
  498. package/dist/parser/external-node-types.d.ts +69 -0
  499. package/dist/{function-like.d.ts → parser/function-like.d.ts} +10 -3
  500. package/dist/parser/generated-sections.d.ts +25 -0
  501. package/dist/parser/import-resolution.d.ts +67 -0
  502. package/dist/parser/import-stub.d.ts +29 -0
  503. package/dist/parser/jsdoc/config-types.d.ts +209 -0
  504. package/dist/parser/jsdoc/graph-tags.d.ts +54 -0
  505. package/dist/parser/jsdoc/node-type-block.d.ts +23 -0
  506. package/dist/parser/jsdoc/parse-line-once.d.ts +11 -0
  507. package/dist/parser/jsdoc/port-tags.d.ts +42 -0
  508. package/dist/parser/jsdoc/runtime-tags.d.ts +65 -0
  509. package/dist/parser/jsdoc/signature-types.d.ts +52 -0
  510. package/dist/parser/jsdoc/workflow-block.d.ts +22 -0
  511. package/dist/parser/jsdoc-parser.d.ts +23 -0
  512. package/dist/parser/macro-expansion.d.ts +80 -0
  513. package/dist/parser/module-resolution.d.ts +38 -0
  514. package/dist/parser/node-inference.d.ts +39 -0
  515. package/dist/parser/npm-node-types.d.ts +24 -0
  516. package/dist/parser/pack-handlers.d.ts +12 -0
  517. package/dist/parser/path-data-resolution.d.ts +75 -0
  518. package/dist/parser/port-inference.d.ts +15 -0
  519. package/dist/{resolve-package-types.d.ts → parser/resolve-package-types.d.ts} +4 -0
  520. package/dist/parser/serialize-deploy-annotations.d.ts +19 -0
  521. package/dist/parser/tag-registry.d.ts +22 -0
  522. package/dist/parser/workflow-extraction.d.ts +39 -0
  523. package/dist/runtime/ExecutionContext.d.ts +87 -99
  524. package/dist/runtime/continuation-core.d.ts +147 -0
  525. package/dist/runtime/continuation.d.ts +48 -0
  526. package/dist/runtime/debug-controller.d.ts +7 -22
  527. package/dist/runtime/durable-execution.d.ts +176 -0
  528. package/dist/runtime/events.d.ts +16 -1
  529. package/dist/runtime/executable-module-contract.d.ts +16 -0
  530. package/dist/runtime/index.d.ts +13 -10
  531. package/dist/runtime/index.js +947 -9
  532. package/dist/runtime/strict-json.d.ts +15 -0
  533. package/dist/server/access.d.ts +12 -0
  534. package/dist/server/api.d.ts +126 -0
  535. package/dist/server/callback-delivery.d.ts +62 -0
  536. package/dist/server/callback-url.d.ts +44 -0
  537. package/dist/server/context.d.ts +35 -0
  538. package/dist/server/http-error.d.ts +10 -0
  539. package/dist/server/index.d.ts +7 -1
  540. package/dist/server/index.js +125 -6
  541. package/dist/server/openapi-document.d.ts +33 -0
  542. package/dist/server/openapi.d.ts +32 -0
  543. package/dist/server/respond.d.ts +35 -0
  544. package/dist/server/route-params.d.ts +17 -0
  545. package/dist/server/route-plan.d.ts +41 -0
  546. package/dist/server/routes-catalog.d.ts +5 -0
  547. package/dist/server/routes-declared.d.ts +12 -0
  548. package/dist/server/routes-runs.d.ts +8 -0
  549. package/dist/server/run-driver.d.ts +58 -0
  550. package/dist/server/run-view.d.ts +26 -0
  551. package/dist/server/transport.d.ts +35 -0
  552. package/dist/server/types.d.ts +143 -52
  553. package/dist/server/webhook-server.d.ts +12 -38
  554. package/dist/server/workflow-registry.d.ts +7 -4
  555. package/dist/service-registry.d.ts +49 -0
  556. package/dist/service-registry.js +123 -0
  557. package/dist/testing/assertions.d.ts +2 -2
  558. package/dist/testing/index.d.ts +14 -13
  559. package/dist/testing/index.js +582 -24
  560. package/dist/testing/mock-approval.d.ts +3 -5
  561. package/dist/testing/mock-llm.d.ts +2 -3
  562. package/dist/testing/recorder.d.ts +5 -6
  563. package/dist/testing/replayer.d.ts +6 -7
  564. package/dist/testing/run-store-check.d.ts +3 -0
  565. package/dist/testing/token-tracker.d.ts +2 -2
  566. package/dist/{type-mappings.d.ts → types/type-mappings.d.ts} +13 -1
  567. package/dist/utils/error-utils.d.ts +4 -2
  568. package/dist/utils/port-ordering.d.ts +2 -2
  569. package/dist/utils/port-tag-utils.d.ts +1 -1
  570. package/dist/validation/agent-detection.d.ts +17 -5
  571. package/dist/validation/agent-rules.d.ts +6 -7
  572. package/dist/validation/core-rules.d.ts +49 -0
  573. package/dist/validation/design-rules.d.ts +9 -3
  574. package/dist/validation/rule-registry.d.ts +3 -3
  575. package/dist/validation/rules/connections.d.ts +27 -0
  576. package/dist/validation/rules/context.d.ts +11 -0
  577. package/dist/validation/rules/cycles.d.ts +17 -0
  578. package/dist/validation/rules/data-flow.d.ts +19 -0
  579. package/dist/validation/rules/scope-topology.d.ts +35 -0
  580. package/dist/validation/rules/type-compatibility.d.ts +30 -0
  581. package/dist/validation/type-checker.d.ts +39 -0
  582. package/dist/validation/validator-helpers.d.ts +31 -0
  583. package/dist/validation/validator.d.ts +30 -0
  584. package/docs/reference/advanced-annotations.md +277 -60
  585. package/docs/reference/built-in-nodes.md +164 -94
  586. package/docs/reference/cancellation.md +44 -0
  587. package/docs/reference/cli-reference.md +252 -234
  588. package/docs/reference/compilation.md +36 -109
  589. package/docs/reference/concepts.md +80 -63
  590. package/docs/reference/console.md +169 -0
  591. package/docs/reference/debugging.md +26 -57
  592. package/docs/reference/deployment.md +217 -143
  593. package/docs/reference/durable-gates.md +445 -0
  594. package/docs/reference/error-codes.md +90 -43
  595. package/docs/reference/export-interface.md +91 -26
  596. package/docs/reference/iterative-development.md +50 -28
  597. package/docs/reference/jsdoc-grammar.md +66 -311
  598. package/docs/reference/library.md +250 -0
  599. package/docs/reference/marketplace.md +301 -152
  600. package/docs/reference/mcp-tools.md +102 -0
  601. package/docs/reference/node-conversion.md +84 -59
  602. package/docs/reference/orientation.md +68 -0
  603. package/docs/reference/scaffold.md +5 -4
  604. package/docs/reference/tutorial.md +106 -166
  605. package/docs/reference/visual-reference.md +1 -1
  606. package/package.json +85 -50
  607. package/dist/agent/agent-loop.js +0 -156
  608. package/dist/agent/cli-spawn-config.js +0 -65
  609. package/dist/agent/device-connection.d.ts +0 -79
  610. package/dist/agent/device-connection.js +0 -184
  611. package/dist/agent/env-allowlist.js +0 -60
  612. package/dist/agent/providers/anthropic.js +0 -198
  613. package/dist/agent/providers/claude-cli.js +0 -161
  614. package/dist/agent/providers/openai-compat.js +0 -205
  615. package/dist/agent/providers/platform.d.ts +0 -23
  616. package/dist/agent/providers/platform.js +0 -132
  617. package/dist/agent/streaming.js +0 -186
  618. package/dist/agent/types.js +0 -20
  619. package/dist/annotation-generator.d.ts +0 -50
  620. package/dist/annotation-generator.js +0 -743
  621. package/dist/api/builder.js +0 -345
  622. package/dist/api/command-runner.js +0 -787
  623. package/dist/api/compile.js +0 -148
  624. package/dist/api/extract-types.js +0 -57
  625. package/dist/api/generate-in-place.js +0 -1477
  626. package/dist/api/generate.js +0 -514
  627. package/dist/api/helpers.js +0 -285
  628. package/dist/api/inline-runtime.js +0 -526
  629. package/dist/api/manipulation/connections.js +0 -151
  630. package/dist/api/manipulation/index.js +0 -41
  631. package/dist/api/manipulation/node-types.js +0 -200
  632. package/dist/api/manipulation/nodes.js +0 -355
  633. package/dist/api/manipulation/ports.js +0 -228
  634. package/dist/api/manipulation/scopes.js +0 -156
  635. package/dist/api/manipulation/workflow.js +0 -116
  636. package/dist/api/modify-operation.js +0 -177
  637. package/dist/api/parse.js +0 -115
  638. package/dist/api/patterns.d.ts +0 -112
  639. package/dist/api/patterns.js +0 -303
  640. package/dist/api/query.js +0 -840
  641. package/dist/api/templates.js +0 -117
  642. package/dist/api/transform.js +0 -40
  643. package/dist/api/validate.js +0 -64
  644. package/dist/api/validation-registry.js +0 -10
  645. package/dist/api/workflow-file-operations.js +0 -180
  646. package/dist/ast/builder.js +0 -395
  647. package/dist/ast/serialization-node.js +0 -30
  648. package/dist/ast/serialization.js +0 -134
  649. package/dist/ast/types.js +0 -2
  650. package/dist/ast/workflow-utils.js +0 -114
  651. package/dist/body-generator.js +0 -35
  652. package/dist/built-in-nodes/coercion-types.js +0 -61
  653. package/dist/built-in-nodes/delay.js +0 -29
  654. package/dist/built-in-nodes/generated-registry.js +0 -299
  655. package/dist/built-in-nodes/invoke-workflow.js +0 -36
  656. package/dist/built-in-nodes/mock-types.js +0 -42
  657. package/dist/built-in-nodes/wait-for-agent.js +0 -31
  658. package/dist/built-in-nodes/wait-for-event.js +0 -25
  659. package/dist/chevrotain-parser/coerce-parser.js +0 -103
  660. package/dist/chevrotain-parser/connect-parser.js +0 -136
  661. package/dist/chevrotain-parser/fan-parser.js +0 -149
  662. package/dist/chevrotain-parser/grammar-diagrams.js +0 -273
  663. package/dist/chevrotain-parser/index.js +0 -31
  664. package/dist/chevrotain-parser/map-parser.js +0 -130
  665. package/dist/chevrotain-parser/node-parser.js +0 -558
  666. package/dist/chevrotain-parser/path-parser.js +0 -140
  667. package/dist/chevrotain-parser/port-parser.js +0 -519
  668. package/dist/chevrotain-parser/position-parser.d.ts +0 -20
  669. package/dist/chevrotain-parser/position-parser.js +0 -83
  670. package/dist/chevrotain-parser/scope-parser.js +0 -104
  671. package/dist/chevrotain-parser/tokens.js +0 -429
  672. package/dist/chevrotain-parser/trigger-cancel-parser.js +0 -291
  673. package/dist/cli/commands/account.d.ts +0 -4
  674. package/dist/cli/commands/account.js +0 -50
  675. package/dist/cli/commands/ai-credentials.d.ts +0 -12
  676. package/dist/cli/commands/ai-credentials.js +0 -95
  677. package/dist/cli/commands/apikey.d.ts +0 -4
  678. package/dist/cli/commands/apikey.js +0 -64
  679. package/dist/cli/commands/auth.d.ts +0 -9
  680. package/dist/cli/commands/auth.js +0 -255
  681. package/dist/cli/commands/compile.js +0 -331
  682. package/dist/cli/commands/connect.d.ts +0 -4
  683. package/dist/cli/commands/connect.js +0 -163
  684. package/dist/cli/commands/context.js +0 -51
  685. package/dist/cli/commands/create.js +0 -139
  686. package/dist/cli/commands/deploy.d.ts +0 -6
  687. package/dist/cli/commands/deploy.js +0 -74
  688. package/dist/cli/commands/dev.js +0 -227
  689. package/dist/cli/commands/diagram.js +0 -39
  690. package/dist/cli/commands/diff.js +0 -57
  691. package/dist/cli/commands/docs.js +0 -74
  692. package/dist/cli/commands/export.js +0 -153
  693. package/dist/cli/commands/grammar.js +0 -40
  694. package/dist/cli/commands/implement.js +0 -91
  695. package/dist/cli/commands/init-personas.js +0 -541
  696. package/dist/cli/commands/init.js +0 -797
  697. package/dist/cli/commands/market.js +0 -440
  698. package/dist/cli/commands/mcp-setup.js +0 -433
  699. package/dist/cli/commands/migrate.js +0 -91
  700. package/dist/cli/commands/modify.js +0 -58
  701. package/dist/cli/commands/openapi.js +0 -71
  702. package/dist/cli/commands/org.d.ts +0 -8
  703. package/dist/cli/commands/org.js +0 -136
  704. package/dist/cli/commands/pattern.d.ts +0 -34
  705. package/dist/cli/commands/pattern.js +0 -186
  706. package/dist/cli/commands/plugin.d.ts +0 -16
  707. package/dist/cli/commands/plugin.js +0 -176
  708. package/dist/cli/commands/run.js +0 -742
  709. package/dist/cli/commands/serve.js +0 -93
  710. package/dist/cli/commands/status.js +0 -123
  711. package/dist/cli/commands/strip.js +0 -61
  712. package/dist/cli/commands/templates.js +0 -58
  713. package/dist/cli/commands/validate.js +0 -267
  714. package/dist/cli/commands/watch.js +0 -71
  715. package/dist/cli/config/credentials.d.ts +0 -15
  716. package/dist/cli/config/credentials.js +0 -43
  717. package/dist/cli/config/platform-client.d.ts +0 -123
  718. package/dist/cli/config/platform-client.js +0 -248
  719. package/dist/cli/env-setup.js +0 -12
  720. package/dist/cli/index.js +0 -850
  721. package/dist/cli/pack-commands.js +0 -122
  722. package/dist/cli/postinstall.d.ts +0 -16
  723. package/dist/cli/postinstall.js +0 -119
  724. package/dist/cli/templates/ai/mock-provider.js +0 -64
  725. package/dist/cli/templates/ai/types.js +0 -5
  726. package/dist/cli/templates/approvals/index.d.ts +0 -15
  727. package/dist/cli/templates/approvals/index.js +0 -241
  728. package/dist/cli/templates/index.js +0 -123
  729. package/dist/cli/templates/nodes/agent-router.js +0 -114
  730. package/dist/cli/templates/nodes/aggregator.js +0 -63
  731. package/dist/cli/templates/nodes/conversation-memory.js +0 -85
  732. package/dist/cli/templates/nodes/http.js +0 -80
  733. package/dist/cli/templates/nodes/human-approval.js +0 -109
  734. package/dist/cli/templates/nodes/json-extractor.js +0 -119
  735. package/dist/cli/templates/nodes/llm-call.js +0 -106
  736. package/dist/cli/templates/nodes/prompt-template.js +0 -52
  737. package/dist/cli/templates/nodes/rag-retriever.js +0 -128
  738. package/dist/cli/templates/nodes/tool-executor.js +0 -108
  739. package/dist/cli/templates/nodes/transformer.js +0 -68
  740. package/dist/cli/templates/nodes/validator.js +0 -62
  741. package/dist/cli/templates/pack-loader.js +0 -58
  742. package/dist/cli/templates/providers/index.js +0 -239
  743. package/dist/cli/templates/shared/approval-types.js +0 -31
  744. package/dist/cli/templates/shared/llm-types.js +0 -109
  745. package/dist/cli/templates/workflows/aggregator.js +0 -101
  746. package/dist/cli/templates/workflows/ai-agent.js +0 -326
  747. package/dist/cli/templates/workflows/ai-chat.js +0 -167
  748. package/dist/cli/templates/workflows/ai-rag.js +0 -184
  749. package/dist/cli/templates/workflows/ai-react.js +0 -293
  750. package/dist/cli/templates/workflows/conditional.js +0 -139
  751. package/dist/cli/templates/workflows/error-handler.js +0 -145
  752. package/dist/cli/templates/workflows/foreach.js +0 -140
  753. package/dist/cli/templates/workflows/sequential.js +0 -200
  754. package/dist/cli/templates/workflows/webhook.js +0 -158
  755. package/dist/cli/utils/cli-helpers.d.ts +0 -44
  756. package/dist/cli/utils/cli-helpers.js +0 -99
  757. package/dist/cli/utils/logger.js +0 -126
  758. package/dist/cli/utils/parse-int-strict.js +0 -17
  759. package/dist/cli/utils/safe-write.js +0 -54
  760. package/dist/deployment/config/defaults.d.ts +0 -29
  761. package/dist/deployment/config/defaults.js +0 -98
  762. package/dist/deployment/config/loader.d.ts +0 -24
  763. package/dist/deployment/config/loader.js +0 -237
  764. package/dist/deployment/config/types.d.ts +0 -117
  765. package/dist/deployment/config/types.js +0 -5
  766. package/dist/deployment/core/adapters.d.ts +0 -66
  767. package/dist/deployment/core/adapters.js +0 -156
  768. package/dist/deployment/core/executor.d.ts +0 -62
  769. package/dist/deployment/core/executor.js +0 -197
  770. package/dist/deployment/core/formatters.d.ts +0 -42
  771. package/dist/deployment/core/formatters.js +0 -146
  772. package/dist/deployment/openapi/generator.d.ts +0 -146
  773. package/dist/deployment/openapi/generator.js +0 -347
  774. package/dist/deployment/openapi/schema-converter.d.ts +0 -49
  775. package/dist/deployment/openapi/schema-converter.js +0 -192
  776. package/dist/deployment/targets/base.js +0 -855
  777. package/dist/deployment/types.d.ts +0 -140
  778. package/dist/deployment/types.js +0 -8
  779. package/dist/diagram/ascii-renderer.js +0 -528
  780. package/dist/diagram/geometry.js +0 -1267
  781. package/dist/diagram/html-viewer.d.ts +0 -21
  782. package/dist/diagram/html-viewer.js +0 -1689
  783. package/dist/diagram/layout.js +0 -143
  784. package/dist/diagram/orthogonal-router.js +0 -568
  785. package/dist/diagram/renderer.d.ts +0 -3
  786. package/dist/diagram/renderer.js +0 -266
  787. package/dist/diagram/theme.js +0 -282
  788. package/dist/diagram/types.js +0 -2
  789. package/dist/diff/WorkflowDiffer.js +0 -429
  790. package/dist/diff/formatDiff.js +0 -239
  791. package/dist/diff/impact.js +0 -119
  792. package/dist/diff/types.js +0 -35
  793. package/dist/doc-metadata/extractors/annotations.js +0 -638
  794. package/dist/doc-metadata/extractors/cli-commands.js +0 -326
  795. package/dist/doc-metadata/extractors/core-metadata.js +0 -61
  796. package/dist/doc-metadata/extractors/error-codes.js +0 -372
  797. package/dist/doc-metadata/extractors/grammar-rules.js +0 -51
  798. package/dist/doc-metadata/extractors/mcp-tools.js +0 -705
  799. package/dist/doc-metadata/extractors/plugin-api.d.ts +0 -19
  800. package/dist/doc-metadata/extractors/plugin-api.js +0 -279
  801. package/dist/doc-metadata/types.js +0 -5
  802. package/dist/editor-completions/annotationValues.js +0 -146
  803. package/dist/editor-completions/contextParser.js +0 -410
  804. package/dist/editor-completions/dataTypes.js +0 -95
  805. package/dist/editor-completions/goToDefinition.js +0 -112
  806. package/dist/editor-completions/jsDocAnnotations.js +0 -359
  807. package/dist/editor-completions/modifierCompletions.js +0 -197
  808. package/dist/editor-completions/types.js +0 -8
  809. package/dist/export/index.js +0 -212
  810. package/dist/extensions/index.d.ts +0 -16
  811. package/dist/extensions/index.js +0 -17
  812. package/dist/friendly-errors.js +0 -761
  813. package/dist/function-like.js +0 -84
  814. package/dist/generator/async-detection.js +0 -56
  815. package/dist/generator/code-utils.js +0 -551
  816. package/dist/generator/compile-target-registry.d.ts +0 -20
  817. package/dist/generator/compile-target-registry.js +0 -20
  818. package/dist/generator/control-flow.js +0 -358
  819. package/dist/generator/dev-mode-registry.d.ts +0 -27
  820. package/dist/generator/dev-mode-registry.js +0 -20
  821. package/dist/generator/scope-function-generator.js +0 -397
  822. package/dist/generator/unified.js +0 -1831
  823. package/dist/generator.d.ts +0 -54
  824. package/dist/generator.js +0 -101
  825. package/dist/jsdoc-parser.d.ts +0 -377
  826. package/dist/jsdoc-parser.js +0 -1189
  827. package/dist/jsdoc-port-sync/constants.js +0 -103
  828. package/dist/jsdoc-port-sync/diff.js +0 -319
  829. package/dist/jsdoc-port-sync/port-parser.js +0 -579
  830. package/dist/jsdoc-port-sync/rename.js +0 -256
  831. package/dist/jsdoc-port-sync/signature-parser.js +0 -559
  832. package/dist/jsdoc-port-sync/sync.js +0 -653
  833. package/dist/marketplace/manifest.js +0 -194
  834. package/dist/marketplace/registry.js +0 -198
  835. package/dist/marketplace/types.js +0 -9
  836. package/dist/marketplace/validator.js +0 -150
  837. package/dist/mcp/agent-channel.d.ts +0 -35
  838. package/dist/mcp/agent-channel.js +0 -61
  839. package/dist/mcp/auto-registration.d.ts +0 -3
  840. package/dist/mcp/auto-registration.js +0 -62
  841. package/dist/mcp/debug-session.js +0 -25
  842. package/dist/mcp/index.d.ts +0 -11
  843. package/dist/mcp/index.js +0 -10
  844. package/dist/mcp/pack-tools.js +0 -59
  845. package/dist/mcp/prompts.js +0 -68
  846. package/dist/mcp/response-utils.js +0 -97
  847. package/dist/mcp/run-registry.d.ts +0 -29
  848. package/dist/mcp/run-registry.js +0 -24
  849. package/dist/mcp/server.js +0 -63
  850. package/dist/mcp/tools-context.js +0 -51
  851. package/dist/mcp/tools-debug.js +0 -451
  852. package/dist/mcp/tools-diagram.js +0 -97
  853. package/dist/mcp/tools-docs.js +0 -62
  854. package/dist/mcp/tools-export.js +0 -222
  855. package/dist/mcp/tools-marketplace.js +0 -132
  856. package/dist/mcp/tools-model.d.ts +0 -3
  857. package/dist/mcp/tools-model.js +0 -279
  858. package/dist/mcp/tools-pattern.d.ts +0 -3
  859. package/dist/mcp/tools-pattern.js +0 -604
  860. package/dist/mcp/tools-query.js +0 -377
  861. package/dist/mcp/tools-resources.js +0 -41
  862. package/dist/mcp/tools-template.js +0 -119
  863. package/dist/mcp/tools-workflow-run.d.ts +0 -40
  864. package/dist/mcp/tools-workflow-run.js +0 -150
  865. package/dist/mcp/types.js +0 -2
  866. package/dist/mcp/workflow-executor.js +0 -242
  867. package/dist/migration/registry.js +0 -29
  868. package/dist/node-types-generator.js +0 -139
  869. package/dist/parser/tag-registry.js +0 -57
  870. package/dist/parser.d.ts +0 -232
  871. package/dist/parser.js +0 -2500
  872. package/dist/plugin/PluginPanel.d.ts +0 -12
  873. package/dist/plugin/PluginPanel.js +0 -5
  874. package/dist/plugin/index.d.ts +0 -13
  875. package/dist/plugin/index.js +0 -14
  876. package/dist/plugin/types.d.ts +0 -75
  877. package/dist/plugin/types.js +0 -8
  878. package/dist/resolve-package-types.js +0 -123
  879. package/dist/runtime/CancellationError.js +0 -20
  880. package/dist/runtime/ExecutionContext.js +0 -280
  881. package/dist/runtime/builtin-functions.js +0 -549
  882. package/dist/runtime/checkpoint.d.ts +0 -84
  883. package/dist/runtime/checkpoint.js +0 -225
  884. package/dist/runtime/debug-controller.js +0 -247
  885. package/dist/runtime/events.js +0 -2
  886. package/dist/runtime/function-registry.js +0 -66
  887. package/dist/runtime/parameter-resolver.js +0 -113
  888. package/dist/server/types.js +0 -5
  889. package/dist/server/webhook-server.js +0 -269
  890. package/dist/server/workflow-registry.js +0 -202
  891. package/dist/shared-project.js +0 -28
  892. package/dist/sugar-optimizer.js +0 -498
  893. package/dist/testing/assertions.js +0 -127
  894. package/dist/testing/mock-approval.js +0 -98
  895. package/dist/testing/mock-llm.js +0 -119
  896. package/dist/testing/recorder.js +0 -70
  897. package/dist/testing/replayer.js +0 -143
  898. package/dist/testing/token-tracker.js +0 -94
  899. package/dist/type-checker.d.ts +0 -42
  900. package/dist/type-checker.js +0 -190
  901. package/dist/type-mappings.js +0 -131
  902. package/dist/types/branded-ports.d.ts +0 -151
  903. package/dist/types/branded-ports.js +0 -121
  904. package/dist/types/index.d.ts +0 -5
  905. package/dist/types/index.js +0 -5
  906. package/dist/types.d.ts +0 -139
  907. package/dist/types.js +0 -15
  908. package/dist/utils/error-utils.js +0 -27
  909. package/dist/utils/lru-cache.js +0 -40
  910. package/dist/utils/port-ordering.js +0 -81
  911. package/dist/utils/port-tag-utils.js +0 -41
  912. package/dist/utils/string-distance.js +0 -56
  913. package/dist/validation/agent-detection.js +0 -115
  914. package/dist/validation/agent-rules.js +0 -262
  915. package/dist/validation/design-rules.js +0 -377
  916. package/dist/validation/rule-registry.js +0 -37
  917. package/dist/validator.d.ts +0 -113
  918. package/dist/validator.js +0 -1631
  919. package/docs/reference/patterns.md +0 -159
  920. package/scripts/postinstall.cjs +0 -86
  921. /package/dist/{shared-project.d.ts → parser/shared-project.d.ts} +0 -0
  922. /package/dist/{friendly-errors.d.ts → validation/friendly-errors.d.ts} +0 -0
@@ -0,0 +1,1016 @@
1
+ import {
2
+ ContinuationRefusalError,
3
+ executeWorkflow
4
+ } from "./chunk-JQTF4R5L.js";
5
+ import {
6
+ DEFAULT_MODEL,
7
+ answerGate,
8
+ loadAgentProfiles,
9
+ profileForGate,
10
+ readiness
11
+ } from "./chunk-Q6MDDZMT.js";
12
+ import {
13
+ compileExecutableWorkflowArtifact
14
+ } from "./chunk-6PNJORFL.js";
15
+ import {
16
+ parseDuration
17
+ } from "./chunk-DIAA66GL.js";
18
+ import {
19
+ isMultipleWorkflows,
20
+ parseWorkflow
21
+ } from "./chunk-INDEVYEC.js";
22
+ import {
23
+ validateWireValue
24
+ } from "./chunk-O2U2LO57.js";
25
+ import {
26
+ getErrorMessage
27
+ } from "./chunk-DUO6H5PR.js";
28
+
29
+ // src/coordinator/run-store.ts
30
+ import * as path6 from "node:path";
31
+
32
+ // src/coordinator/run-context.ts
33
+ import { randomUUID as randomUUID2 } from "node:crypto";
34
+ import * as os3 from "node:os";
35
+
36
+ // src/coordinator/store.ts
37
+ var DOC_NAME = /^[a-z0-9][a-z0-9_-]{0,80}$/i;
38
+ var RESERVED_DOCS = ["continuation", "trace", "claim", "run"];
39
+ var EFFECT_DOC_PREFIX = "effect-";
40
+ function checkDocName(name) {
41
+ if (!DOC_NAME.test(name)) throw new Error(`not a valid document name: ${name}`);
42
+ }
43
+ var RunBusyError = class extends Error {
44
+ constructor(runId) {
45
+ super(`run ${runId} is being driven by another process. Try again shortly`);
46
+ this.runId = runId;
47
+ }
48
+ runId;
49
+ name = "RunBusyError";
50
+ };
51
+
52
+ // src/coordinator/file-store.ts
53
+ import * as fs from "node:fs";
54
+ import * as os from "node:os";
55
+ import * as path from "node:path";
56
+ import { randomUUID } from "node:crypto";
57
+ function samePath(a, b) {
58
+ const norm = (p) => {
59
+ const resolved = path.resolve(p).split(path.sep).join("/");
60
+ return process.platform === "win32" ? resolved.toLowerCase() : resolved;
61
+ };
62
+ return norm(a) === norm(b);
63
+ }
64
+ var isRunSegment = (runId) => runId.length > 0 && runId.length <= 200 && runId !== "." && runId !== ".." && !/[/\\\0]/.test(runId);
65
+ function createFileRunStore(rootDir) {
66
+ const runDir = (runId) => {
67
+ if (!isRunSegment(runId)) throw new Error(`not a valid run id for the file store: ${JSON.stringify(runId)}`);
68
+ return path.join(rootDir, runId);
69
+ };
70
+ const recordFile = (runId) => path.join(runDir(runId), "run.json");
71
+ const claimFile = (runId) => path.join(runDir(runId), "claim.json");
72
+ const docFile = (runId, name) => {
73
+ checkDocName(name);
74
+ if (name.startsWith(EFFECT_DOC_PREFIX)) return path.join(runDir(runId), "effects", `${name.slice(EFFECT_DOC_PREFIX.length)}.json`);
75
+ return path.join(runDir(runId), `${name}.json`);
76
+ };
77
+ const readJson = (file) => {
78
+ if (!fs.existsSync(file)) return void 0;
79
+ try {
80
+ return JSON.parse(fs.readFileSync(file, "utf8"));
81
+ } catch {
82
+ return void 0;
83
+ }
84
+ };
85
+ const writeAtomic = (file, data) => {
86
+ fs.mkdirSync(path.dirname(file), { recursive: true });
87
+ const tmp = `${file}.tmp-${randomUUID()}`;
88
+ fs.writeFileSync(tmp, JSON.stringify(data));
89
+ fs.renameSync(tmp, file);
90
+ };
91
+ const standing = (c) => {
92
+ if (!c) return false;
93
+ if (Date.parse(c.expiresAt) <= Date.now()) return false;
94
+ if (c.host !== os.hostname() || c.pid === process.pid) return true;
95
+ try {
96
+ process.kill(c.pid, 0);
97
+ return true;
98
+ } catch (e) {
99
+ return e.code !== "ESRCH";
100
+ }
101
+ };
102
+ return {
103
+ async get(runId) {
104
+ return isRunSegment(runId) ? readJson(recordFile(runId)) : void 0;
105
+ },
106
+ async put(record) {
107
+ writeAtomic(recordFile(record.runId), record);
108
+ },
109
+ async list(filter = {}) {
110
+ if (!fs.existsSync(rootDir)) return [];
111
+ const wanted = filter.filePath ? path.resolve(filter.filePath) : void 0;
112
+ const records = [];
113
+ for (const entry of fs.readdirSync(rootDir)) {
114
+ const record = readJson(recordFile(entry));
115
+ if (!record) continue;
116
+ if (wanted && !samePath(record.filePath, wanted)) continue;
117
+ records.push(record);
118
+ }
119
+ return records.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
120
+ },
121
+ async remove(runId) {
122
+ fs.rmSync(runDir(runId), { recursive: true, force: true });
123
+ },
124
+ async getDoc(runId, name) {
125
+ return isRunSegment(runId) ? readJson(docFile(runId, name)) : void 0;
126
+ },
127
+ async putDoc(runId, name, data) {
128
+ writeAtomic(docFile(runId, name), data);
129
+ },
130
+ async deleteDoc(runId, name) {
131
+ fs.rmSync(docFile(runId, name), { force: true });
132
+ },
133
+ async claim(runId, owner, ttlMs) {
134
+ const file = claimFile(runId);
135
+ const mine = { owner, pid: process.pid, host: os.hostname(), expiresAt: new Date(Date.now() + ttlMs).toISOString() };
136
+ fs.mkdirSync(runDir(runId), { recursive: true });
137
+ for (let attempt = 0; attempt < 3; attempt++) {
138
+ const current = readJson(file);
139
+ if (standing(current) && current.owner !== owner) return false;
140
+ if (standing(current) && current.owner === owner) {
141
+ writeAtomic(file, mine);
142
+ return true;
143
+ }
144
+ if (current) {
145
+ const aside = `${file}.lapsed-${randomUUID().slice(0, 8)}`;
146
+ try {
147
+ fs.renameSync(file, aside);
148
+ } catch (e) {
149
+ if (e.code !== "ENOENT") throw e;
150
+ continue;
151
+ }
152
+ fs.rmSync(aside, { force: true });
153
+ }
154
+ try {
155
+ fs.writeFileSync(file, JSON.stringify(mine), { flag: "wx" });
156
+ return true;
157
+ } catch (e) {
158
+ if (e.code !== "EEXIST") throw e;
159
+ }
160
+ }
161
+ return false;
162
+ },
163
+ async release(runId, owner) {
164
+ const file = claimFile(runId);
165
+ const current = readJson(file);
166
+ if (current?.owner === owner) fs.rmSync(file, { force: true });
167
+ }
168
+ };
169
+ }
170
+
171
+ // src/coordinator/runs-dir.ts
172
+ import * as fs2 from "node:fs";
173
+ import * as os2 from "node:os";
174
+ import * as path2 from "node:path";
175
+ function resolveProjectRoot(anchor) {
176
+ let current;
177
+ try {
178
+ current = fs2.statSync(anchor).isDirectory() ? path2.resolve(anchor) : path2.dirname(path2.resolve(anchor));
179
+ } catch {
180
+ current = path2.dirname(path2.resolve(anchor));
181
+ }
182
+ const root = path2.parse(current).root;
183
+ for (let dir = current; ; dir = path2.dirname(dir)) {
184
+ if (fs2.existsSync(path2.join(dir, "package.json")) || fs2.existsSync(path2.join(dir, ".fw"))) {
185
+ return dir;
186
+ }
187
+ if (dir === root || path2.dirname(dir) === dir) break;
188
+ }
189
+ return current;
190
+ }
191
+ function defaultRunsDir(anchor) {
192
+ if (process.env.FW_RUNS_DIR) return process.env.FW_RUNS_DIR;
193
+ if (anchor) return path2.join(resolveProjectRoot(anchor), ".fw", "runs");
194
+ return path2.join(os2.homedir(), ".fw", "runs");
195
+ }
196
+
197
+ // src/coordinator/run-context.ts
198
+ function createRunContext(options) {
199
+ const store = options.store ?? createFileRunStore(options.rootDir ?? defaultRunsDir());
200
+ const claimTtl = options.claimTtlMs ?? 60 * 60 * 1e3;
201
+ const instance = `${os3.hostname()}:${process.pid}:${randomUUID2().slice(0, 8)}`;
202
+ let uses = 0;
203
+ async function claimed(runId, work) {
204
+ const owner = `${instance}:${++uses}`;
205
+ if (!await store.claim(runId, owner, claimTtl)) throw new RunBusyError(runId);
206
+ try {
207
+ return await work();
208
+ } finally {
209
+ await store.release(runId, owner);
210
+ }
211
+ }
212
+ async function readRecord(runId) {
213
+ return store.get(runId);
214
+ }
215
+ return { store, claimed, readRecord };
216
+ }
217
+
218
+ // src/coordinator/run-start.ts
219
+ import { randomUUID as randomUUID3 } from "node:crypto";
220
+ import * as path5 from "node:path";
221
+
222
+ // src/coordinator/bundle-digest.ts
223
+ import { createHash } from "node:crypto";
224
+ import { readFileSync as readFileSync2, statSync as statSync2 } from "node:fs";
225
+ var cache = /* @__PURE__ */ new Map();
226
+ async function computeBundleDigest(filePath, workflowName) {
227
+ const stat = statSync2(filePath);
228
+ const key = `${filePath}\0${workflowName}`;
229
+ const hit = cache.get(key);
230
+ if (hit && hit.mtimeMs === stat.mtimeMs && hit.size === stat.size) return hit.digest;
231
+ const source = readFileSync2(filePath, "utf8");
232
+ const artifact = await compileExecutableWorkflowArtifact({ source, workflowName });
233
+ const digest = "sha256:" + createHash("sha256").update(artifact.code).digest("hex");
234
+ cache.set(key, { mtimeMs: stat.mtimeMs, size: stat.size, digest });
235
+ return digest;
236
+ }
237
+
238
+ // src/coordinator/effect-receipts.ts
239
+ import { createHash as createHash2 } from "node:crypto";
240
+ import * as path3 from "node:path";
241
+ var effectDoc = (operationKey) => `${EFFECT_DOC_PREFIX}${createHash2("sha256").update(operationKey).digest("hex")}`;
242
+ function createStoreEffectAdapter(store, runId) {
243
+ return {
244
+ async recover(operationKey) {
245
+ let doc;
246
+ try {
247
+ doc = await store.getDoc(runId, effectDoc(operationKey));
248
+ } catch {
249
+ return { kind: "ambiguous" };
250
+ }
251
+ if (doc === void 0) return { kind: "not-committed" };
252
+ if (typeof doc !== "object" || doc === null || !("receipt" in doc)) return { kind: "ambiguous" };
253
+ const record = doc;
254
+ return { kind: "committed", receipt: record.receipt, result: record.result };
255
+ },
256
+ async commit(operationKey, address, execution) {
257
+ await store.putDoc(runId, effectDoc(operationKey), { operationKey, address, result: execution.result, receipt: execution.receipt });
258
+ }
259
+ };
260
+ }
261
+ function createFileEffectAdapter(runDir) {
262
+ return createStoreEffectAdapter(createFileRunStore(path3.dirname(runDir)), path3.basename(runDir));
263
+ }
264
+
265
+ // src/coordinator/params.ts
266
+ function missingParams(ast, params) {
267
+ const given = params ?? {};
268
+ return Object.entries(ast.startPorts ?? {}).filter(([name, port]) => name !== "execute" && port.dataType !== "STEP" && !port.optional && port.defaultValue === void 0 && (!Object.hasOwn(given, name) || given[name] === void 0)).map(([name]) => name);
269
+ }
270
+ var MissingParamsError = class extends Error {
271
+ constructor(workflowName, missing) {
272
+ super(`${workflowName} needs ${missing.length === 1 ? "a parameter" : "parameters"} it was not given: ${missing.join(", ")}`);
273
+ this.workflowName = workflowName;
274
+ this.missing = missing;
275
+ }
276
+ workflowName;
277
+ missing;
278
+ name = "MissingParamsError";
279
+ };
280
+
281
+ // src/coordinator/gate-labeling.ts
282
+ function labelGate(gate, ast) {
283
+ const instance = ast.instances.find((candidate) => candidate.id === gate.address.nodeId);
284
+ if (!instance) {
285
+ throw new Error(`gate node not found in workflow: ${gate.address.nodeId}`);
286
+ }
287
+ const nodeType = findNodeType(ast.nodeTypes, instance.nodeType, gate.address.nodeType);
288
+ if (!nodeType) {
289
+ throw new Error(
290
+ `node type not found for gate ${gate.address.nodeId}: ${instance.nodeType} / ${gate.address.nodeType}`
291
+ );
292
+ }
293
+ const names = dataPorts(nodeType.inputs);
294
+ const args = readArguments(gate.payload);
295
+ if (args.length !== names.length) {
296
+ throw new Error(
297
+ `gate payload has ${args.length} arguments but node type ${nodeType.name} declares ${names.length} inputs`
298
+ );
299
+ }
300
+ const inputs = {};
301
+ const absent = [];
302
+ names.forEach((name, index) => {
303
+ const argument = args[index];
304
+ if ("absent" in argument) {
305
+ inputs[name] = null;
306
+ absent.push(name);
307
+ } else {
308
+ inputs[name] = argument.value;
309
+ }
310
+ });
311
+ return {
312
+ inputs,
313
+ absent,
314
+ outputs: dataPorts(nodeType.outputs),
315
+ hasSuccessPort: nodeType.hasSuccessPort,
316
+ hasFailurePort: nodeType.hasFailurePort
317
+ };
318
+ }
319
+ var CONTROL_PORT_NAMES = /* @__PURE__ */ new Set(["execute", "onSuccess", "onFailure"]);
320
+ function dataPorts(ports) {
321
+ return Object.keys(ports).filter(
322
+ (name) => !CONTROL_PORT_NAMES.has(name) && !ports[name].isControlFlow
323
+ );
324
+ }
325
+ function findNodeType(nodeTypes, instanceTypeName, functionName) {
326
+ return nodeTypes.find((candidate) => candidate.name === instanceTypeName) ?? nodeTypes.find((candidate) => candidate.functionName === functionName);
327
+ }
328
+ function readArguments(payload) {
329
+ if (typeof payload !== "object" || payload === null || !Array.isArray(payload.arguments)) {
330
+ throw new Error("gate payload is not a positional argument list");
331
+ }
332
+ return payload.arguments;
333
+ }
334
+
335
+ // src/coordinator/run-trace.ts
336
+ function observe(options) {
337
+ const tracing = options?.trace === true || options?.onEvent !== void 0;
338
+ if (!tracing) return { kept: void 0, request: { includeTrace: false, production: true } };
339
+ const kept = [];
340
+ const onEvent = (event) => {
341
+ kept.push({ t: event.timestamp, e: event.data ?? event });
342
+ options?.onEvent?.(event);
343
+ };
344
+ return { kept, request: { includeTrace: true, production: false, onEvent } };
345
+ }
346
+ async function appendTrace(store, record, kept) {
347
+ if (!kept) return false;
348
+ const previous = await readTrace(store, record.runId);
349
+ await store.putDoc(record.runId, "trace", [...previous, ...kept]);
350
+ return true;
351
+ }
352
+ async function readTrace(store, runId) {
353
+ const doc = await store.getDoc(runId, "trace");
354
+ return Array.isArray(doc) ? doc : [];
355
+ }
356
+ function failedNodeIn(kept) {
357
+ if (!kept) return void 0;
358
+ for (let i = kept.length - 1; i >= 0; i--) {
359
+ const e = kept[i].e;
360
+ if (e?.type === "LOG_ERROR" && e.id) return e.id;
361
+ if (e?.type === "STATUS_CHANGED" && e.status === "FAILED" && e.id) return e.id;
362
+ }
363
+ return void 0;
364
+ }
365
+
366
+ // src/coordinator/time.ts
367
+ function dueFor(gate, now = Date.now()) {
368
+ if (gate.kind === "timer") {
369
+ const ms2 = parseDuration(gate.inputs.duration) ?? 0;
370
+ return { at: new Date(now + ms2).toISOString(), action: "wake" };
371
+ }
372
+ const ms = parseDuration(gate.inputs.timeout);
373
+ if (ms === void 0 || !gate.hasFailurePort) return void 0;
374
+ return { at: new Date(now + ms).toISOString(), action: "timeout" };
375
+ }
376
+
377
+ // src/coordinator/run-outcome.ts
378
+ async function commit(store, record, outcome, ast, kept) {
379
+ const now = (/* @__PURE__ */ new Date()).toISOString();
380
+ const traced = await appendTrace(store, record, kept);
381
+ if (outcome.kind === "yielded") {
382
+ const labeled = labelGate(outcome.gate, ast);
383
+ const gate = {
384
+ id: outcome.gate.id,
385
+ kind: outcome.gate.kind,
386
+ node: outcome.gate.address.nodeId,
387
+ nodeType: outcome.gate.address.nodeType,
388
+ ...labeled
389
+ };
390
+ const next2 = {
391
+ ...record,
392
+ traced,
393
+ status: "waiting",
394
+ gate,
395
+ continuation: outcome.continuation,
396
+ due: dueFor(gate),
397
+ result: void 0,
398
+ error: void 0,
399
+ updatedAt: now
400
+ };
401
+ if (next2.due === void 0) delete next2.due;
402
+ await store.put(next2);
403
+ return next2;
404
+ }
405
+ const next = {
406
+ ...record,
407
+ traced,
408
+ status: "completed",
409
+ gate: void 0,
410
+ continuation: void 0,
411
+ due: void 0,
412
+ result: outcome.result,
413
+ error: void 0,
414
+ updatedAt: now
415
+ };
416
+ await store.put(next);
417
+ await store.deleteDoc(record.runId, "continuation");
418
+ return next;
419
+ }
420
+ async function fail(store, record, error, options, kept) {
421
+ const traced = await appendTrace(store, record, kept);
422
+ const message = getErrorMessage(error);
423
+ const cancelled = options?.abortSignal?.aborted === true;
424
+ await store.put({
425
+ ...record,
426
+ traced,
427
+ status: cancelled ? "cancelled" : "failed",
428
+ gate: void 0,
429
+ continuation: void 0,
430
+ due: void 0,
431
+ result: void 0,
432
+ error: cancelled ? void 0 : message,
433
+ failedNode: cancelled ? void 0 : failedNodeIn(kept),
434
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
435
+ });
436
+ await store.deleteDoc(record.runId, "continuation");
437
+ }
438
+
439
+ // src/coordinator/run-views.ts
440
+ function toView(record) {
441
+ const view = {
442
+ status: record.status,
443
+ runId: record.runId,
444
+ workflowName: record.workflowName
445
+ };
446
+ if (record.status === "waiting" && record.gate) {
447
+ view.gate = {
448
+ kind: record.gate.kind,
449
+ node: record.gate.node,
450
+ inputs: record.gate.inputs,
451
+ absent: record.gate.absent
452
+ };
453
+ if (record.due) view.due = record.due;
454
+ }
455
+ if (record.status === "completed") view.result = record.result;
456
+ if (record.status === "failed") view.error = record.error;
457
+ return view;
458
+ }
459
+ function toSummary(record) {
460
+ return {
461
+ status: record.status,
462
+ runId: record.runId,
463
+ workflowName: record.workflowName,
464
+ filePath: record.filePath,
465
+ gate: record.gate ? { kind: record.gate.kind, node: record.gate.node } : void 0,
466
+ due: record.due,
467
+ params: record.params,
468
+ failedNode: record.failedNode,
469
+ mocks: record.mocks,
470
+ source: record.source,
471
+ agents: record.agents,
472
+ agent: record.agent ? { status: record.agent.status, profile: record.agent.profile, node: record.agent.node } : void 0,
473
+ origin: record.origin,
474
+ createdAt: record.createdAt,
475
+ updatedAt: record.updatedAt
476
+ };
477
+ }
478
+
479
+ // src/coordinator/workflow-selection.ts
480
+ import * as path4 from "node:path";
481
+
482
+ // src/coordinator/errors.ts
483
+ var ParseError = class extends Error {
484
+ name = "ParseError";
485
+ };
486
+ var AmbiguousWorkflowError = class extends Error {
487
+ constructor(names) {
488
+ super(`file declares several workflows. Pass workflowName, one of: ${names.join(", ")}`);
489
+ this.names = names;
490
+ }
491
+ names;
492
+ name = "AmbiguousWorkflowError";
493
+ };
494
+ var RunNotFoundError = class extends Error {
495
+ name = "RunNotFoundError";
496
+ constructor(runId) {
497
+ super(`no run with id ${runId}`);
498
+ }
499
+ };
500
+ var RunNotWaitingError = class extends Error {
501
+ constructor(status) {
502
+ super(`run is ${status}, not waiting at a gate`);
503
+ this.status = status;
504
+ }
505
+ status;
506
+ name = "RunNotWaitingError";
507
+ };
508
+ var BundleChangedError = class extends Error {
509
+ name = "BundleChangedError";
510
+ constructor() {
511
+ super("workflow or its compiled output changed since the run paused. Start a new run");
512
+ }
513
+ };
514
+
515
+ // src/coordinator/workflow-selection.ts
516
+ async function parseSelected(filePath, requested) {
517
+ const projectDir = path4.dirname(filePath);
518
+ const first = await parseWorkflow(filePath, { workflowName: requested, projectDir });
519
+ if (requested === void 0 && isMultipleWorkflows(first.errors)) throw new AmbiguousWorkflowError(first.availableWorkflows);
520
+ if (first.errors.length > 0) throw new ParseError(first.errors.join("\n"));
521
+ const available = first.availableWorkflows;
522
+ let workflowName = requested;
523
+ if (workflowName === void 0) {
524
+ if (available.length === 1) workflowName = available[0];
525
+ else throw new AmbiguousWorkflowError(available);
526
+ } else if (!available.includes(workflowName)) {
527
+ throw new ParseError(`workflow ${workflowName} not found. Available: ${available.join(", ")}`);
528
+ }
529
+ if (first.ast.functionName === workflowName) return { ast: first.ast, workflowName };
530
+ const second = await parseWorkflow(filePath, { workflowName, projectDir });
531
+ if (second.errors.length > 0) throw new ParseError(second.errors.join("\n"));
532
+ return { ast: second.ast, workflowName };
533
+ }
534
+
535
+ // src/coordinator/run-start.ts
536
+ async function startRun(ctx, request, options) {
537
+ const { store, claimed } = ctx;
538
+ const filePath = path5.resolve(request.filePath);
539
+ const { ast, workflowName } = await parseSelected(filePath, request.workflowName);
540
+ const missing = missingParams(ast, request.params);
541
+ if (missing.length) throw new MissingParamsError(workflowName, missing);
542
+ const bundleDigest = await computeBundleDigest(filePath, workflowName);
543
+ const now = (/* @__PURE__ */ new Date()).toISOString();
544
+ const record = {
545
+ formatVersion: 1,
546
+ runId: request.runId ?? randomUUID3(),
547
+ filePath,
548
+ workflowName,
549
+ params: request.params ?? {},
550
+ bundleDigest,
551
+ status: "waiting",
552
+ ...request.mocks ? { mocks: request.mocks } : {},
553
+ ...request.source ? { source: request.source } : {},
554
+ ...request.agents ? { agents: request.agents } : {},
555
+ ...request.origin ? { origin: request.origin } : {},
556
+ createdAt: now,
557
+ updatedAt: now
558
+ };
559
+ return claimed(record.runId, async () => {
560
+ const { kept, request: observed } = observe(options);
561
+ let outcome;
562
+ try {
563
+ outcome = await executeWorkflow({
564
+ runId: record.runId,
565
+ bundleDigest,
566
+ filePath,
567
+ params: record.params,
568
+ workflowName,
569
+ mocks: record.mocks,
570
+ ...observed,
571
+ abortSignal: options?.abortSignal,
572
+ effectAdapter: createStoreEffectAdapter(store, record.runId)
573
+ });
574
+ } catch (error) {
575
+ await fail(store, record, error, options, kept);
576
+ throw error;
577
+ }
578
+ return toView(await commit(store, record, outcome, ast, kept));
579
+ });
580
+ }
581
+
582
+ // src/coordinator/gate-resolution.ts
583
+ var MissingOutputsError = class extends Error {
584
+ constructor(missing) {
585
+ super(`answer is missing gate outputs: ${missing.join(", ")}`);
586
+ this.missing = missing;
587
+ }
588
+ missing;
589
+ name = "MissingOutputsError";
590
+ };
591
+ var InvalidAnswerError = class extends Error {
592
+ name = "InvalidAnswerError";
593
+ };
594
+ function buildGateResolution(gate, gateId, input) {
595
+ const value = {};
596
+ if ("reject" in input) {
597
+ if (gate.hasSuccessPort) value.onSuccess = false;
598
+ if (gate.hasFailurePort) value.onFailure = true;
599
+ for (const port of gate.outputs) value[port] = null;
600
+ } else {
601
+ if (gate.hasSuccessPort) value.onSuccess = true;
602
+ if (gate.hasFailurePort) value.onFailure = false;
603
+ Object.assign(value, dataPorts2(gate.outputs, input.answer));
604
+ }
605
+ try {
606
+ validateWireValue(value);
607
+ } catch (error) {
608
+ throw new InvalidAnswerError(getErrorMessage(error));
609
+ }
610
+ return { gateId, value };
611
+ }
612
+ function dataPorts2(outputs, answer) {
613
+ if (outputs.length === 0) {
614
+ if (answer !== null && answer !== void 0) {
615
+ throw new InvalidAnswerError("this gate has no data outputs, so answer must be null");
616
+ }
617
+ return {};
618
+ }
619
+ if (outputs.length === 1) {
620
+ return { [outputs[0]]: answer };
621
+ }
622
+ if (typeof answer !== "object" || answer === null || Array.isArray(answer)) {
623
+ throw new MissingOutputsError(outputs);
624
+ }
625
+ const record = answer;
626
+ const missing = outputs.filter((port) => !(port in record));
627
+ if (missing.length > 0) throw new MissingOutputsError(missing);
628
+ const picked = {};
629
+ for (const port of outputs) picked[port] = record[port];
630
+ return picked;
631
+ }
632
+
633
+ // src/coordinator/run-resume.ts
634
+ async function resumable(ctx, request) {
635
+ const record = await ctx.readRecord(request.runId);
636
+ if (!record) throw new RunNotFoundError(request.runId);
637
+ if (record.status !== "waiting" || !record.gate) throw new RunNotWaitingError(record.status);
638
+ const digest = await computeBundleDigest(record.filePath, record.workflowName);
639
+ if (digest !== record.bundleDigest) throw new BundleChangedError();
640
+ buildGateResolution(record.gate, record.gate.id, request.input);
641
+ return record;
642
+ }
643
+ async function resumeRun(ctx, request, options) {
644
+ const { store, claimed, readRecord } = ctx;
645
+ const record = await resumable(ctx, request);
646
+ return claimed(record.runId, async () => {
647
+ const current = await readRecord(record.runId);
648
+ if (!current || current.status !== "waiting" || !current.gate) throw new RunNotWaitingError(current?.status ?? "cancelled");
649
+ const continuation = current.continuation ?? await store.getDoc(record.runId, "continuation");
650
+ if (!continuation) throw new RunNotWaitingError(current.status);
651
+ if (continuation.gateId !== current.gate.id) {
652
+ throw new ContinuationRefusalError({ accepted: false, reason: "stale-gate", message: `the run's record names gate ${current.gate.id} but its continuation is at gate ${continuation.gateId}` });
653
+ }
654
+ const resolution = buildGateResolution(current.gate, current.gate.id, request.input);
655
+ const { ast } = await parseSelected(record.filePath, record.workflowName);
656
+ const { kept, request: observed } = observe(options);
657
+ let outcome;
658
+ try {
659
+ outcome = await executeWorkflow({
660
+ runId: record.runId,
661
+ bundleDigest: record.bundleDigest,
662
+ filePath: record.filePath,
663
+ params: record.params,
664
+ workflowName: record.workflowName,
665
+ mocks: record.mocks,
666
+ ...observed,
667
+ abortSignal: options?.abortSignal,
668
+ continuation,
669
+ resolution,
670
+ effectAdapter: createStoreEffectAdapter(store, record.runId)
671
+ });
672
+ } catch (error) {
673
+ if (error instanceof ContinuationRefusalError) throw error;
674
+ await fail(store, current, error, options, kept);
675
+ throw error;
676
+ }
677
+ return toView(await commit(store, current, outcome, ast, kept));
678
+ });
679
+ }
680
+
681
+ // src/coordinator/run-ending.ts
682
+ async function cancelRun(ctx, runId) {
683
+ const { store, claimed, readRecord } = ctx;
684
+ const record = await readRecord(runId);
685
+ if (!record) throw new RunNotFoundError(runId);
686
+ if (record.status !== "waiting") throw new RunNotWaitingError(record.status);
687
+ return claimed(runId, async () => {
688
+ const current = await readRecord(runId);
689
+ if (!current || current.status !== "waiting") throw new RunNotWaitingError(current?.status ?? "cancelled");
690
+ const next = {
691
+ ...current,
692
+ status: "cancelled",
693
+ gate: void 0,
694
+ continuation: void 0,
695
+ due: void 0,
696
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
697
+ };
698
+ await store.put(next);
699
+ await store.deleteDoc(runId, "continuation");
700
+ return toView(next);
701
+ });
702
+ }
703
+ async function removeRun(ctx, runId) {
704
+ const record = await ctx.readRecord(runId);
705
+ if (!record) throw new RunNotFoundError(runId);
706
+ if (record.status === "waiting") throw new RunNotWaitingError(record.status);
707
+ await ctx.store.remove(runId);
708
+ }
709
+
710
+ // src/coordinator/run-annotations.ts
711
+ async function setAgentNote(ctx, runId, note) {
712
+ const { store, claimed, readRecord } = ctx;
713
+ if (!await readRecord(runId)) throw new RunNotFoundError(runId);
714
+ return claimed(runId, async () => {
715
+ const record = await readRecord(runId);
716
+ if (!record) throw new RunNotFoundError(runId);
717
+ const next = { ...record, agent: note, updatedAt: (/* @__PURE__ */ new Date()).toISOString() };
718
+ if (note === void 0) delete next.agent;
719
+ await store.put(next);
720
+ return next;
721
+ });
722
+ }
723
+ async function keepDoc(ctx, runId, name, data) {
724
+ checkDocName(name);
725
+ if (RESERVED_DOCS.includes(name) || name.startsWith(EFFECT_DOC_PREFIX)) throw new Error(`${name} is a document the coordinator keeps itself`);
726
+ if (!await ctx.readRecord(runId)) throw new RunNotFoundError(runId);
727
+ await ctx.store.putDoc(runId, name, data);
728
+ }
729
+ async function keptDoc(ctx, runId, name) {
730
+ checkDocName(name);
731
+ return await ctx.store.getDoc(runId, name);
732
+ }
733
+
734
+ // src/coordinator/clock-tick.ts
735
+ async function tickDue(store, resume, now) {
736
+ const result = { woke: [], timedOut: [], skipped: [] };
737
+ const at = new Date(now).toISOString();
738
+ for (const summary of await store.list()) {
739
+ if (summary.status !== "waiting" || !summary.due || summary.due.at > at) continue;
740
+ const { runId, due } = summary;
741
+ const input = due.action === "wake" ? { answer: summary.gate?.outputs.length ? at : null } : { reject: `no answer within ${String(summary.gate?.inputs.timeout ?? "the timeout")}` };
742
+ try {
743
+ const view = await resume({ runId, input });
744
+ (due.action === "wake" ? result.woke : result.timedOut).push(view);
745
+ } catch (error) {
746
+ const name = error instanceof Error ? error.name : "";
747
+ const reason = name === "RunBusyError" ? "busy" : name === "RunNotWaitingError" ? "not-waiting" : name === "BundleChangedError" ? "bundle-changed" : "failed";
748
+ result.skipped.push({ runId, reason, ...reason === "failed" ? { message: getErrorMessage(error) } : {} });
749
+ }
750
+ }
751
+ return result;
752
+ }
753
+
754
+ // src/coordinator/run-store.ts
755
+ function createLocalCoordinator(options = {}) {
756
+ const ctx = createRunContext(options);
757
+ const { store, readRecord } = ctx;
758
+ return {
759
+ store,
760
+ start(request, options2) {
761
+ return startRun(ctx, request, options2);
762
+ },
763
+ checkResume: async (request) => {
764
+ await resumable(ctx, request);
765
+ },
766
+ resume(request, options2) {
767
+ return resumeRun(ctx, request, options2);
768
+ },
769
+ cancel(runId) {
770
+ return cancelRun(ctx, runId);
771
+ },
772
+ async get(runId) {
773
+ const record = await readRecord(runId);
774
+ return record ? toView(record) : void 0;
775
+ },
776
+ record: readRecord,
777
+ trace: (runId) => readTrace(store, runId),
778
+ remove(runId) {
779
+ return removeRun(ctx, runId);
780
+ },
781
+ setAgent(runId, note) {
782
+ return setAgentNote(ctx, runId, note);
783
+ },
784
+ keep(runId, name, data) {
785
+ return keepDoc(ctx, runId, name, data);
786
+ },
787
+ kept(runId, name) {
788
+ return keptDoc(ctx, runId, name);
789
+ },
790
+ // Through `this`, so each due run is resumed by the coordinator as it
791
+ // stands when the tick reaches it.
792
+ tick(now = Date.now()) {
793
+ return tickDue(store, (request) => this.resume(request), now);
794
+ },
795
+ async list(filter = {}) {
796
+ const records = await store.list(filter.filePath ? { filePath: path6.resolve(filter.filePath) } : {});
797
+ return records.map(toSummary);
798
+ }
799
+ };
800
+ }
801
+
802
+ // src/coordinator/agent-gate.ts
803
+ import * as os4 from "node:os";
804
+ function transcriptName(gateId) {
805
+ return `agent-${gateId.slice(0, 16)}`;
806
+ }
807
+ var ANSWER_ABANDONED_AFTER_MS = 60 * 60 * 1e3;
808
+ function agentOwnerDead(note, now = Date.now()) {
809
+ const age = now - Date.parse(note.startedAt);
810
+ if (!note.owner || note.owner.host !== os4.hostname()) return age > ANSWER_ABANDONED_AFTER_MS;
811
+ if (note.owner.pid === process.pid) return false;
812
+ try {
813
+ process.kill(note.owner.pid, 0);
814
+ return false;
815
+ } catch (e) {
816
+ return e.code === "ESRCH";
817
+ }
818
+ }
819
+ function isAnswering(note, gateId) {
820
+ return !!note && note.status === "answering" && note.gateId === gateId && !agentOwnerDead(note);
821
+ }
822
+ async function reclaimStaleAgentAnswers(coordinator) {
823
+ const reclaimed = [];
824
+ for (const s of await coordinator.list()) {
825
+ if (s.status !== "waiting" || s.agent?.status !== "answering") continue;
826
+ const rec = await coordinator.record(s.runId);
827
+ if (!rec?.agent || rec.agent.status !== "answering" || !agentOwnerDead(rec.agent)) continue;
828
+ try {
829
+ await coordinator.setAgent(s.runId, { ...rec.agent, status: "failed", endedAt: (/* @__PURE__ */ new Date()).toISOString(), error: "the process answering this gate ended before it could answer" });
830
+ } catch (e) {
831
+ if (e instanceof RunBusyError) continue;
832
+ throw e;
833
+ }
834
+ reclaimed.push(s.runId);
835
+ }
836
+ return reclaimed;
837
+ }
838
+ async function answerAgentGate(coordinator, runId, opts) {
839
+ const rec = await coordinator.record(runId);
840
+ if (!rec || rec.status !== "waiting" || !rec.gate) return { kind: "skip", why: "not-waiting" };
841
+ if (rec.gate.kind !== "agent") return { kind: "skip", why: "not-agent" };
842
+ if (rec.agents === "manual") return { kind: "skip", why: "manual" };
843
+ if (isAnswering(rec.agent, rec.gate.id)) return { kind: "skip", why: "already-answering" };
844
+ const env = opts.env ?? process.env;
845
+ const profiles = opts.profiles ?? loadAgentProfiles(opts.projectDir);
846
+ const profile = profileForGate(profiles, { workflow: rec.workflowName, node: rec.gate.node, agentId: rec.gate.inputs.agentId });
847
+ if (!profile) return { kind: "skip", why: "no-profile" };
848
+ const startedAt = (/* @__PURE__ */ new Date()).toISOString();
849
+ const model = profile.model || DEFAULT_MODEL[profile.provider] || void 0;
850
+ const base = { gateId: rec.gate.id, node: rec.gate.node, profile: profile.name, provider: profile.provider, model, status: "answering", startedAt, owner: { pid: process.pid, host: os4.hostname() } };
851
+ const ready = readiness(profile, env);
852
+ if (!ready.ready) {
853
+ const note2 = { ...base, status: "failed", endedAt: startedAt, error: ready.reason };
854
+ await coordinator.setAgent(runId, note2);
855
+ return { kind: "not-ready", profile: profile.name, reason: ready.reason ?? "not ready", note: note2 };
856
+ }
857
+ await coordinator.setAgent(runId, base);
858
+ const shape = await opts.outputSchema?.(rec);
859
+ const result = await answerGate({
860
+ gate: { node: rec.gate.node, inputs: rec.gate.inputs, absent: rec.gate.absent, outputs: rec.gate.outputs, hasFailurePort: rec.gate.hasFailurePort, outputSchema: shape?.schema ?? null, outputTypes: shape?.types },
861
+ workflow: { name: rec.workflowName, description: opts.workflowDescription?.(rec) },
862
+ profile,
863
+ provider: opts.provider?.(profile, env),
864
+ env,
865
+ cwd: opts.projectDir,
866
+ signal: opts.signal,
867
+ onEvent: opts.onEvent
868
+ });
869
+ const endedAt = (/* @__PURE__ */ new Date()).toISOString();
870
+ const transcript = {
871
+ gateId: rec.gate.id,
872
+ node: rec.gate.node,
873
+ profile: profile.name,
874
+ provider: profile.provider,
875
+ model,
876
+ startedAt,
877
+ endedAt,
878
+ ms: result.ms,
879
+ outcome: result.outcome,
880
+ usage: result.usage,
881
+ toolCalls: result.toolCalls,
882
+ text: result.text,
883
+ messages: result.transcript
884
+ };
885
+ if (!await coordinator.record(runId)) return { kind: "skip", why: "not-waiting" };
886
+ await coordinator.keep(runId, transcriptName(rec.gate.id), transcript);
887
+ const done = { ...base, endedAt, usage: result.usage, toolCalls: result.toolCalls };
888
+ if (result.outcome.kind === "answer") {
889
+ const note2 = { ...done, status: "answered" };
890
+ await coordinator.setAgent(runId, note2);
891
+ return { kind: "answer", profile: profile.name, answer: result.outcome.answer, note: note2 };
892
+ }
893
+ if (result.outcome.kind === "reject") {
894
+ const note2 = { ...done, status: "rejected", error: result.outcome.reason };
895
+ await coordinator.setAgent(runId, note2);
896
+ return { kind: "reject", profile: profile.name, reason: result.outcome.reason, note: note2 };
897
+ }
898
+ const note = { ...done, status: "failed", error: result.outcome.error };
899
+ await coordinator.setAgent(runId, note);
900
+ return { kind: "failed", profile: profile.name, error: result.outcome.error, note };
901
+ }
902
+ async function noteAnswerMisfit(coordinator, runId, error) {
903
+ if (!(error instanceof MissingOutputsError || error instanceof InvalidAnswerError)) return false;
904
+ const agent = (await coordinator.record(runId))?.agent;
905
+ if (!agent) return false;
906
+ try {
907
+ await coordinator.setAgent(runId, { ...agent, status: "failed", error: `the answer did not fit the gate: ${error.message}` });
908
+ } catch (e) {
909
+ if (!(e instanceof RunBusyError)) throw e;
910
+ }
911
+ return true;
912
+ }
913
+ async function autoAnswerAgentGates(coordinator, runId, opts) {
914
+ const max = opts.maxChain ?? 20;
915
+ for (let i = 0; i < max; i++) {
916
+ const view = await coordinator.get(runId);
917
+ if (!view) throw new Error(`no run with id ${runId}`);
918
+ if (view.status !== "waiting") return { stop: view.status, run: view };
919
+ const step = await answerAgentGate(coordinator, runId, opts);
920
+ const now = async () => await coordinator.get(runId) ?? view;
921
+ if (step.kind === "skip") {
922
+ const stop = step.why === "manual" ? "manual" : step.why === "no-profile" ? "no-profile" : step.why === "not-agent" ? "waiting-human" : step.why === "not-waiting" ? (await now()).status : "waiting-human";
923
+ return { stop, run: await now() };
924
+ }
925
+ if (step.kind === "not-ready") return { stop: "not-ready", run: await now() };
926
+ if (step.kind === "failed") return { stop: "agent-failed", run: await now() };
927
+ try {
928
+ await coordinator.resume({ runId, input: step.kind === "answer" ? { answer: step.answer } : { reject: step.reason } }, opts.drive);
929
+ } catch (e) {
930
+ if (await noteAnswerMisfit(coordinator, runId, e)) return { stop: "agent-failed", run: await now() };
931
+ throw e;
932
+ }
933
+ }
934
+ return { stop: "chain-limit", run: await coordinator.get(runId) };
935
+ }
936
+
937
+ // src/coordinator/memory-store.ts
938
+ function createMemoryRunStore() {
939
+ const records = /* @__PURE__ */ new Map();
940
+ const docs = /* @__PURE__ */ new Map();
941
+ const claims = /* @__PURE__ */ new Map();
942
+ const copy = (v) => v === void 0 ? v : structuredClone(v);
943
+ const docsOf = (runId) => docs.get(runId) ?? docs.set(runId, /* @__PURE__ */ new Map()).get(runId);
944
+ return {
945
+ async get(runId) {
946
+ return copy(records.get(runId));
947
+ },
948
+ async put(record) {
949
+ records.set(record.runId, copy(record));
950
+ },
951
+ async list(filter = {}) {
952
+ return [...records.values()].filter((r) => !filter.filePath || r.filePath === filter.filePath).sort((a, b) => b.updatedAt.localeCompare(a.updatedAt)).map(copy);
953
+ },
954
+ async remove(runId) {
955
+ records.delete(runId);
956
+ docs.delete(runId);
957
+ claims.delete(runId);
958
+ },
959
+ async getDoc(runId, name) {
960
+ checkDocName(name);
961
+ return copy(docs.get(runId)?.get(name));
962
+ },
963
+ async putDoc(runId, name, data) {
964
+ checkDocName(name);
965
+ docsOf(runId).set(name, copy(data));
966
+ },
967
+ async deleteDoc(runId, name) {
968
+ checkDocName(name);
969
+ docs.get(runId)?.delete(name);
970
+ },
971
+ async claim(runId, owner, ttlMs) {
972
+ const c = claims.get(runId);
973
+ if (c && c.until > Date.now() && c.owner !== owner) return false;
974
+ claims.set(runId, { owner, until: Date.now() + ttlMs });
975
+ return true;
976
+ },
977
+ async release(runId, owner) {
978
+ if (claims.get(runId)?.owner === owner) claims.delete(runId);
979
+ }
980
+ };
981
+ }
982
+
983
+ export {
984
+ DOC_NAME,
985
+ RESERVED_DOCS,
986
+ EFFECT_DOC_PREFIX,
987
+ checkDocName,
988
+ RunBusyError,
989
+ createFileRunStore,
990
+ resolveProjectRoot,
991
+ defaultRunsDir,
992
+ computeBundleDigest,
993
+ createStoreEffectAdapter,
994
+ createFileEffectAdapter,
995
+ missingParams,
996
+ MissingParamsError,
997
+ labelGate,
998
+ dueFor,
999
+ ParseError,
1000
+ AmbiguousWorkflowError,
1001
+ RunNotFoundError,
1002
+ RunNotWaitingError,
1003
+ BundleChangedError,
1004
+ MissingOutputsError,
1005
+ InvalidAnswerError,
1006
+ buildGateResolution,
1007
+ createLocalCoordinator,
1008
+ transcriptName,
1009
+ agentOwnerDead,
1010
+ isAnswering,
1011
+ reclaimStaleAgentAnswers,
1012
+ answerAgentGate,
1013
+ noteAnswerMisfit,
1014
+ autoAnswerAgentGates,
1015
+ createMemoryRunStore
1016
+ };