@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,1329 @@
1
+ import { createRequire as __createRequire } from "module";
2
+ const require = __createRequire(import.meta.url);
3
+ import {
4
+ getAvailableWorkflows
5
+ } from "./flow-weaver-chunk-NQKKWDGF.mjs";
6
+ import {
7
+ compileWorkflow
8
+ } from "./flow-weaver-chunk-V6DHWFQG.mjs";
9
+ import {
10
+ CONTINUATION_FORMAT_VERSION,
11
+ ENGINE_VERSION,
12
+ GENERATOR_ABI,
13
+ MAX_CONTINUATION_BYTES,
14
+ MAX_CONTINUATION_DEPTH,
15
+ MAX_CONTINUATION_ENTRIES,
16
+ MAX_CONTINUATION_STRING_BYTES,
17
+ WireValidationError,
18
+ acceptContinuation,
19
+ assertAcceptedContinuation,
20
+ canonicalWireValue,
21
+ cloneAndFreezeWireValue,
22
+ continuationChecksum,
23
+ createContinuationEnvelope,
24
+ durableGateId,
25
+ executionAddressKey,
26
+ graphIdentity,
27
+ hasExactlyTheKeys,
28
+ isPlainObjectRecord,
29
+ operationKey,
30
+ sha256Hex,
31
+ structurallyValidEnvelope,
32
+ utf8ByteLength,
33
+ validateWireValue
34
+ } from "./flow-weaver-chunk-A6M5K3W7.mjs";
35
+ import {
36
+ parseWorkflow
37
+ } from "./flow-weaver-chunk-W3YNK26P.mjs";
38
+ import {
39
+ VERSION
40
+ } from "./flow-weaver-chunk-VXWNLYQU.mjs";
41
+ import {
42
+ validateDurableClosure
43
+ } from "./flow-weaver-chunk-EM5HWQ4R.mjs";
44
+
45
+ // src/mcp/workflow-executor.ts
46
+ import * as path from "path";
47
+ import * as fs2 from "fs";
48
+ import { pathToFileURL } from "url";
49
+ import ts from "typescript";
50
+
51
+ // src/runtime/CancellationError.ts
52
+ var CancellationError = class _CancellationError extends Error {
53
+ constructor(message = "Workflow execution cancelled", executionIndex = 0, nodeId, timestamp = Date.now()) {
54
+ super(message);
55
+ this.executionIndex = executionIndex;
56
+ this.nodeId = nodeId;
57
+ this.timestamp = timestamp;
58
+ this.name = "CancellationError";
59
+ }
60
+ executionIndex;
61
+ nodeId;
62
+ timestamp;
63
+ static isCancellationError(error) {
64
+ return error instanceof _CancellationError || error instanceof Error && error.name === "CancellationError";
65
+ }
66
+ };
67
+
68
+ // src/mcp/dist-imports.ts
69
+ import * as fs from "node:fs";
70
+ import * as nodePath from "node:path";
71
+ function rewriteSrcImportsToDist(code, srcDir, fileExists = fs.existsSync, path2 = nodePath) {
72
+ const srcSegment = `${path2.sep}src${path2.sep}`;
73
+ if (!`${srcDir}${path2.sep}`.includes(srcSegment)) return code;
74
+ return code.replace(/from\s+['"](\.[^'"]+)['"]/g, (match, specifier) => {
75
+ const resolvedSrc = path2.resolve(srcDir, specifier);
76
+ if (fileExists(resolvedSrc)) return match;
77
+ const distEquivalent = resolvedSrc.replace(srcSegment, `${path2.sep}dist${path2.sep}`);
78
+ if (!fileExists(distEquivalent)) return match;
79
+ const relative = path2.relative(srcDir, distEquivalent).replace(/\\/g, "/");
80
+ return `from '${relative.startsWith(".") ? relative : `./${relative}`}'`;
81
+ });
82
+ }
83
+
84
+ // src/runtime/strict-json.ts
85
+ var encoder = new TextEncoder();
86
+ function parseStrictJson(text, limits) {
87
+ let index = 0;
88
+ let aggregateEntries = 0;
89
+ const fail = (code, message) => {
90
+ throw new StrictJsonError(code, message);
91
+ };
92
+ const skipWhitespace = () => {
93
+ while (text[index] === " " || text[index] === "\n" || text[index] === "\r" || text[index] === " ") {
94
+ index += 1;
95
+ }
96
+ };
97
+ const parseString = () => {
98
+ const start = index;
99
+ index += 1;
100
+ while (index < text.length) {
101
+ const character = text[index];
102
+ if (character === '"') {
103
+ index += 1;
104
+ let value2;
105
+ try {
106
+ value2 = JSON.parse(text.slice(start, index));
107
+ } catch {
108
+ return fail("malformed", "JSON string is malformed");
109
+ }
110
+ if (typeof value2 !== "string" || encoder.encode(value2).byteLength > limits.maxStringBytes) {
111
+ return fail("oversized", "JSON string byte limit exceeded");
112
+ }
113
+ return value2;
114
+ }
115
+ if (character === "\\") {
116
+ index += 1;
117
+ if (index >= text.length) {
118
+ return fail("malformed", "JSON string escape is incomplete");
119
+ }
120
+ if (text[index] === "u") {
121
+ for (let offset = 1; offset <= 4; offset += 1) {
122
+ if (!/[0-9a-fA-F]/.test(text[index + offset] ?? "")) {
123
+ return fail("malformed", "JSON unicode escape is malformed");
124
+ }
125
+ }
126
+ index += 4;
127
+ } else if (!/["\\/bfnrt]/.test(text[index])) {
128
+ return fail("malformed", "JSON string escape is malformed");
129
+ }
130
+ } else if ((character?.charCodeAt(0) ?? 0) < 32) {
131
+ return fail("malformed", "JSON string contains a control character");
132
+ }
133
+ index += 1;
134
+ }
135
+ return fail("malformed", "JSON string is unterminated");
136
+ };
137
+ const parseValue = (depth) => {
138
+ if (depth > limits.maxDepth) {
139
+ return fail("oversized", "JSON depth limit exceeded");
140
+ }
141
+ skipWhitespace();
142
+ const character = text[index];
143
+ if (character === '"') return parseString();
144
+ if (text.startsWith("true", index)) {
145
+ index += 4;
146
+ return true;
147
+ }
148
+ if (text.startsWith("false", index)) {
149
+ index += 5;
150
+ return false;
151
+ }
152
+ if (text.startsWith("null", index)) {
153
+ index += 4;
154
+ return null;
155
+ }
156
+ if (character === "[") {
157
+ index += 1;
158
+ skipWhitespace();
159
+ const values = [];
160
+ if (text[index] === "]") {
161
+ index += 1;
162
+ return values;
163
+ }
164
+ while (true) {
165
+ if (values.length >= limits.maxArrayItems) {
166
+ return fail("oversized", "JSON array item limit exceeded");
167
+ }
168
+ aggregateEntries += 1;
169
+ if (aggregateEntries > limits.maxAggregateEntries) {
170
+ return fail("oversized", "JSON aggregate entry limit exceeded");
171
+ }
172
+ values.push(parseValue(depth + 1));
173
+ skipWhitespace();
174
+ if (text[index] === "]") {
175
+ index += 1;
176
+ return values;
177
+ }
178
+ if (text[index] !== ",") {
179
+ return fail("malformed", "JSON array separator is malformed");
180
+ }
181
+ index += 1;
182
+ }
183
+ }
184
+ if (character === "{") {
185
+ index += 1;
186
+ skipWhitespace();
187
+ const value2 = /* @__PURE__ */ Object.create(null);
188
+ const keys = /* @__PURE__ */ new Set();
189
+ if (text[index] === "}") {
190
+ index += 1;
191
+ return value2;
192
+ }
193
+ while (true) {
194
+ if (keys.size >= limits.maxObjectKeys) {
195
+ return fail("oversized", "JSON object key limit exceeded");
196
+ }
197
+ skipWhitespace();
198
+ if (text[index] !== '"') {
199
+ return fail("malformed", "JSON object key must be a string");
200
+ }
201
+ const key = parseString();
202
+ if (keys.has(key)) {
203
+ return fail("malformed", `duplicate JSON object member ${key}`);
204
+ }
205
+ keys.add(key);
206
+ aggregateEntries += 1;
207
+ if (aggregateEntries > limits.maxAggregateEntries) {
208
+ return fail("oversized", "JSON aggregate entry limit exceeded");
209
+ }
210
+ skipWhitespace();
211
+ if (text[index] !== ":") {
212
+ return fail("malformed", "JSON object member is missing a colon");
213
+ }
214
+ index += 1;
215
+ value2[key] = parseValue(depth + 1);
216
+ skipWhitespace();
217
+ if (text[index] === "}") {
218
+ index += 1;
219
+ return value2;
220
+ }
221
+ if (text[index] !== ",") {
222
+ return fail("malformed", "JSON object separator is malformed");
223
+ }
224
+ index += 1;
225
+ }
226
+ }
227
+ const number = text.slice(index).match(/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/)?.[0];
228
+ if (number !== void 0) {
229
+ index += number.length;
230
+ const value2 = Number(number);
231
+ if (!Number.isFinite(value2)) {
232
+ return fail("malformed", "JSON number must be finite");
233
+ }
234
+ return value2;
235
+ }
236
+ return fail("malformed", "JSON value is malformed");
237
+ };
238
+ const value = parseValue(0);
239
+ skipWhitespace();
240
+ if (index !== text.length) {
241
+ fail("malformed", "JSON has trailing data");
242
+ }
243
+ return value;
244
+ }
245
+ var StrictJsonError = class extends Error {
246
+ constructor(code, message) {
247
+ super(message);
248
+ this.code = code;
249
+ }
250
+ code;
251
+ name = "StrictJsonError";
252
+ };
253
+
254
+ // src/runtime/continuation.ts
255
+ function refusal(reason, message) {
256
+ return { accepted: false, reason, message };
257
+ }
258
+ function isGraphBranchPath(value) {
259
+ return Array.isArray(value) && value.every(
260
+ (requirement) => isPlainObjectRecord(requirement) && hasExactlyTheKeys(requirement, ["nodeId", "arm"]) && typeof requirement.nodeId === "string" && requirement.nodeId.length > 0 && typeof requirement.arm === "string" && requirement.arm.length > 0
261
+ );
262
+ }
263
+ function graphNodeFor(graph, workflowId, nodeId, nodeType) {
264
+ return graph.nodes.find(
265
+ (node) => node.workflowId === workflowId && node.nodeId === nodeId && node.nodeType === nodeType
266
+ );
267
+ }
268
+ function graphNodeForAddress(graph, address) {
269
+ const workflowId = address.frames[address.frames.length - 1]?.workflowId;
270
+ return workflowId === void 0 ? void 0 : graphNodeFor(graph, workflowId, address.nodeId, address.nodeType);
271
+ }
272
+ function progressVector(graph, address) {
273
+ const progress = [];
274
+ for (let index = 1; index < address.frames.length; index++) {
275
+ const frame = address.frames[index];
276
+ const parent = address.frames[index - 1];
277
+ if (frame.callerNodeId === void 0 || frame.callerExecutionIndex === void 0) {
278
+ return void 0;
279
+ }
280
+ const caller = graph.nodes.find(
281
+ (node2) => node2.workflowId === parent.workflowId && node2.nodeId === frame.callerNodeId
282
+ );
283
+ if (caller === void 0 || !caller.invokedWorkflows.includes(frame.workflowId)) {
284
+ return void 0;
285
+ }
286
+ progress.push(caller.executionOrder, frame.callerExecutionIndex, frame.invocation);
287
+ }
288
+ const lastFrameWorkflowId = address.frames[address.frames.length - 1]?.workflowId;
289
+ for (const scope of address.scopes) {
290
+ const owner = graph.nodes.find(
291
+ (node2) => node2.workflowId === lastFrameWorkflowId && node2.nodeId === scope.parentNodeId
292
+ );
293
+ if (owner === void 0) return void 0;
294
+ progress.push(owner.executionOrder, scope.loopIteration ?? scope.invocation);
295
+ }
296
+ const node = graphNodeForAddress(graph, address);
297
+ if (node === void 0) return void 0;
298
+ progress.push(node.executionOrder, address.executionIndex);
299
+ return progress;
300
+ }
301
+ function compareProgress(left, right) {
302
+ const length = Math.min(left.length, right.length);
303
+ for (let index = 0; index < length; index++) {
304
+ if (left[index] !== right[index]) return left[index] - right[index];
305
+ }
306
+ return left.length - right.length;
307
+ }
308
+ function sameFrames(left, right) {
309
+ return canonicalWireValue(left) === canonicalWireValue(right);
310
+ }
311
+ function hasCompleteRequiredPrefix(graph, location, completed) {
312
+ for (let frameIndex = 0; frameIndex < location.frames.length; frameIndex++) {
313
+ const frame = location.frames[frameIndex];
314
+ const frameAddress = location.frames.slice(0, frameIndex + 1);
315
+ const boundaryNodeId = frameIndex === location.frames.length - 1 ? location.nodeId : location.frames[frameIndex + 1].callerNodeId;
316
+ if (boundaryNodeId === void 0) return false;
317
+ const boundaryNode = graph.nodes.find(
318
+ (node) => node.workflowId === frame.workflowId && node.nodeId === boundaryNodeId
319
+ );
320
+ if (boundaryNode === void 0) return false;
321
+ const boundaryScopeOwners = new Set(
322
+ frameIndex === location.frames.length - 1 ? location.scopes.map((scope) => scope.parentNodeId) : []
323
+ );
324
+ for (const predecessor of boundaryNode.predecessors) {
325
+ if (boundaryScopeOwners.has(predecessor.nodeId)) continue;
326
+ const predecessorNode = graph.nodes.find(
327
+ (node) => node.workflowId === frame.workflowId && node.nodeId === predecessor.nodeId
328
+ );
329
+ if (predecessorNode === void 0 || !completed.some(
330
+ (address) => sameFrames(address.frames, frameAddress) && address.nodeId === predecessorNode.nodeId && address.nodeType === predecessorNode.nodeType && predecessor.branchPath.every(
331
+ (requirement) => address.branches.some(
332
+ (branch) => branch.nodeId === requirement.nodeId && branch.arm === requirement.arm
333
+ )
334
+ )
335
+ )) {
336
+ return false;
337
+ }
338
+ }
339
+ }
340
+ return true;
341
+ }
342
+ function addressBelongsToGraph(graph, rootWorkflowId, address) {
343
+ const isScopedAddress = address.scopes.length > 0;
344
+ if (address.frames[0]?.workflowId !== rootWorkflowId || address.frames[0]?.invocation !== 0 || address.frames[0]?.callerNodeId !== void 0 || !isScopedAddress && address.executionIndex !== 0 || // Scopes are authenticated per-scope below (each scope's parent node must
345
+ // declare it) and, for a scoped node, against the node's own parentScope.
346
+ // A scoped durable boundary therefore carries scopes; blanket-rejecting any
347
+ // scope here would refuse a legitimate loop iteration's committed address.
348
+ address.branches.some((branch) => branch.executionIndex !== 0) || address.frames.some(
349
+ (frame, index) => frame.invocation !== 0 || index > 0 && frame.callerExecutionIndex !== 0
350
+ )) {
351
+ return false;
352
+ }
353
+ for (let index = 1; index < address.frames.length; index++) {
354
+ const frame = address.frames[index];
355
+ const parent = address.frames[index - 1];
356
+ const caller = frame.callerNodeId === void 0 ? void 0 : graph.nodes.find(
357
+ (node2) => node2.workflowId === parent.workflowId && node2.nodeId === frame.callerNodeId
358
+ );
359
+ if (caller === void 0 || frame.callerExecutionIndex === void 0 || !caller.invokedWorkflows.includes(frame.workflowId)) {
360
+ return false;
361
+ }
362
+ }
363
+ const workflowId = address.frames[address.frames.length - 1]?.workflowId;
364
+ const node = graphNodeForAddress(graph, address);
365
+ const graphNodeInFrames = (nodeId) => address.frames.map(
366
+ (frame) => graph.nodes.find((candidate) => candidate.workflowId === frame.workflowId && candidate.nodeId === nodeId)
367
+ ).find((candidate) => candidate !== void 0);
368
+ if (workflowId === void 0 || node === void 0 || address.scopes.some((scope) => {
369
+ const parent = graphNodeInFrames(scope.parentNodeId);
370
+ return parent === void 0 || !parent.scopeNames.includes(scope.scopeName);
371
+ }) || address.branches.some((branch) => {
372
+ const frame = address.frames[branch.frameDepth];
373
+ const owner = graph.nodes.find(
374
+ (candidate) => candidate.workflowId === branch.workflowId && candidate.nodeId === branch.nodeId
375
+ );
376
+ return frame === void 0 || frame.workflowId !== branch.workflowId || owner === void 0 || !owner.branchArms.includes(branch.arm);
377
+ })) {
378
+ return false;
379
+ }
380
+ for (let frameDepth = 0; frameDepth < address.frames.length; frameDepth++) {
381
+ const frame = address.frames[frameDepth];
382
+ const boundaryNodeId = frameDepth === address.frames.length - 1 ? address.nodeId : address.frames[frameDepth + 1].callerNodeId;
383
+ const boundaryNode = graph.nodes.find(
384
+ (candidate) => candidate.workflowId === frame.workflowId && candidate.nodeId === boundaryNodeId
385
+ );
386
+ const observedBranchPath = address.branches.filter((branch) => branch.frameDepth === frameDepth && branch.workflowId === frame.workflowId).map((branch) => ({ nodeId: branch.nodeId, arm: branch.arm }));
387
+ if (boundaryNode === void 0 || canonicalWireValue(observedBranchPath) !== canonicalWireValue(boundaryNode.branchPath)) {
388
+ return false;
389
+ }
390
+ }
391
+ if (node.parentScope !== void 0) {
392
+ const localScope = address.scopes[address.scopes.length - 1];
393
+ if (localScope === void 0 || localScope.parentNodeId !== node.parentScope.parentNodeId || localScope.scopeName !== node.parentScope.scopeName) {
394
+ return false;
395
+ }
396
+ }
397
+ return true;
398
+ }
399
+ function hasConflictingBranchHistory(addresses) {
400
+ const selected = /* @__PURE__ */ new Map();
401
+ for (const address of addresses) {
402
+ for (const branch of address.branches) {
403
+ const key = `${branch.frameDepth}\0${branch.workflowId}\0${branch.nodeId}\0${branch.executionIndex}`;
404
+ const prior = selected.get(key);
405
+ if (prior !== void 0 && prior !== branch.arm) return true;
406
+ selected.set(key, branch.arm);
407
+ }
408
+ }
409
+ return false;
410
+ }
411
+ function decodeContinuation(input, compatibility) {
412
+ let value = input;
413
+ try {
414
+ if (typeof input === "string") {
415
+ if (utf8ByteLength(input) > MAX_CONTINUATION_BYTES) {
416
+ return refusal("oversized", "continuation exceeds maximum wire size");
417
+ }
418
+ value = parseStrictJson(input, {
419
+ maxDepth: MAX_CONTINUATION_DEPTH,
420
+ maxStringBytes: MAX_CONTINUATION_STRING_BYTES,
421
+ maxObjectKeys: MAX_CONTINUATION_ENTRIES,
422
+ maxArrayItems: MAX_CONTINUATION_ENTRIES,
423
+ maxAggregateEntries: MAX_CONTINUATION_ENTRIES
424
+ });
425
+ }
426
+ validateWireValue(value);
427
+ } catch (error) {
428
+ if (error instanceof WireValidationError) {
429
+ return refusal(error.reason, error.message);
430
+ }
431
+ if (error instanceof StrictJsonError) {
432
+ return refusal(error.code, error.message);
433
+ }
434
+ return refusal("malformed", "continuation is not valid JSON");
435
+ }
436
+ if (!structurallyValidEnvelope(value)) {
437
+ return refusal("malformed", "continuation has missing, unknown, or invalid fields");
438
+ }
439
+ if (value.formatVersion !== CONTINUATION_FORMAT_VERSION) {
440
+ return refusal("unsupported-format", `unsupported continuation format ${value.formatVersion}`);
441
+ }
442
+ if (continuationChecksum(value) !== value.checksum) {
443
+ return refusal("checksum-mismatch", "continuation checksum does not match");
444
+ }
445
+ if (value.gateId !== durableGateId(value.runId, value.gateKind, value.location)) {
446
+ return refusal("malformed", "continuation gate identity does not match its execution address");
447
+ }
448
+ const graphNodes = compatibility.graph.nodes;
449
+ const graphNodeKeys = new Set(graphNodes.map((node) => `${node.workflowId}\0${node.nodeId}\0${node.nodeType}`));
450
+ const graphOrderKeys = new Set(graphNodes.map((node) => `${node.workflowId}\0${node.executionOrder}`));
451
+ if (graphNodeKeys.size !== graphNodes.length || graphOrderKeys.size !== graphNodes.length || graphNodes.some(
452
+ (node) => !Number.isSafeInteger(node.executionOrder) || node.executionOrder < -1 || new Set(node.inputPorts).size !== node.inputPorts.length || new Set(node.outputPorts).size !== node.outputPorts.length || new Set(node.scopeNames).size !== node.scopeNames.length || new Set(node.invokedWorkflows).size !== node.invokedWorkflows.length || new Set(node.branchArms).size !== node.branchArms.length || !isGraphBranchPath(node.branchPath) || new Set(node.branchPath.map((requirement) => `${requirement.nodeId}\0${requirement.arm}`)).size !== node.branchPath.length || node.branchPath.some((requirement) => {
453
+ const owner = graphNodes.find(
454
+ (candidate) => candidate.workflowId === node.workflowId && candidate.nodeId === requirement.nodeId
455
+ );
456
+ return owner === void 0 || !owner.branchArms.includes(requirement.arm);
457
+ }) || !Array.isArray(node.predecessors) || new Set(node.predecessors.map((predecessor) => predecessor.nodeId)).size !== node.predecessors.length || node.predecessors.some(
458
+ (predecessor) => typeof predecessor.nodeId !== "string" || predecessor.nodeId.length === 0 || predecessor.nodeId === node.nodeId || !isGraphBranchPath(predecessor.branchPath) || (() => {
459
+ const predecessorNode = graphNodes.find(
460
+ (candidate) => candidate.workflowId === node.workflowId && candidate.nodeId === predecessor.nodeId
461
+ );
462
+ return predecessorNode === void 0 || predecessorNode.executionOrder >= node.executionOrder || canonicalWireValue(predecessor.branchPath) !== canonicalWireValue(predecessorNode.branchPath) || predecessor.branchPath.some(
463
+ (requirement) => !node.branchPath.some(
464
+ (active) => active.nodeId === requirement.nodeId && active.arm === requirement.arm
465
+ )
466
+ );
467
+ })() || new Set(
468
+ predecessor.branchPath.map(
469
+ (requirement) => `${requirement.nodeId}\0${requirement.arm}`
470
+ )
471
+ ).size !== predecessor.branchPath.length || predecessor.branchPath.some((requirement) => {
472
+ const owner = graphNodes.find(
473
+ (candidate) => candidate.workflowId === node.workflowId && candidate.nodeId === requirement.nodeId
474
+ );
475
+ return typeof requirement.nodeId !== "string" || typeof requirement.arm !== "string" || owner === void 0 || !owner.branchArms.includes(requirement.arm);
476
+ })
477
+ )
478
+ ) || !addressBelongsToGraph(compatibility.graph, compatibility.workflowId, value.location) || graphNodeForAddress(compatibility.graph, value.location)?.durableGate !== value.gateKind) {
479
+ return refusal("wrong-graph", "continuation boundary is not owned by the compiled graph");
480
+ }
481
+ const completed = new Set(value.state.completed.map(executionAddressKey));
482
+ if (completed.size !== value.state.completed.length) {
483
+ return refusal("malformed", "continuation contains duplicate completed addresses");
484
+ }
485
+ if (value.state.completed.some(
486
+ (address) => !addressBelongsToGraph(compatibility.graph, compatibility.workflowId, address)
487
+ )) {
488
+ return refusal("wrong-graph", "continuation contains an address outside the compiled graph");
489
+ }
490
+ const boundaryProgress = progressVector(compatibility.graph, value.location);
491
+ if (boundaryProgress === void 0 || value.state.completed.some((address) => {
492
+ const completedProgress = progressVector(compatibility.graph, address);
493
+ return completedProgress === void 0 || compareProgress(completedProgress, boundaryProgress) >= 0;
494
+ }) || hasConflictingBranchHistory([...value.state.completed, value.location])) {
495
+ return refusal(
496
+ "wrong-graph",
497
+ "continuation completed state is not a valid execution prefix before its boundary"
498
+ );
499
+ }
500
+ if (!hasCompleteRequiredPrefix(compatibility.graph, value.location, value.state.completed)) {
501
+ return refusal("wrong-graph", "continuation is missing a required compiled predecessor before its boundary");
502
+ }
503
+ const variableKeys = /* @__PURE__ */ new Set();
504
+ for (const variable of value.state.variables) {
505
+ const address = executionAddressKey(variable.address);
506
+ const key = `${address}\0${variable.portName}`;
507
+ const graphNode = graphNodeForAddress(compatibility.graph, variable.address);
508
+ if (!completed.has(address) || variableKeys.has(key) || graphNode === void 0 || !graphNode.outputPorts.includes(variable.portName)) {
509
+ return refusal(
510
+ "wrong-graph",
511
+ `continuation variable ${variable.address.frames[variable.address.frames.length - 1]?.workflowId}.${variable.address.nodeId}.${variable.portName} is not a unique graph-owned output of a completed address`
512
+ );
513
+ }
514
+ variableKeys.add(key);
515
+ }
516
+ const receiptAddresses = /* @__PURE__ */ new Set();
517
+ for (const receipt of value.receipts) {
518
+ const address = executionAddressKey(receipt.address);
519
+ if (receiptAddresses.has(address) || !completed.has(address) || graphNodeForAddress(compatibility.graph, receipt.address)?.durableEffect !== true || receipt.operationKey !== operationKey(value.runId, receipt.address)) {
520
+ return refusal(
521
+ "malformed",
522
+ "continuation effect receipts must be unique, completed, and match their operation identity"
523
+ );
524
+ }
525
+ receiptAddresses.add(address);
526
+ }
527
+ if (value.state.completed.some(
528
+ (address) => graphNodeForAddress(compatibility.graph, address)?.durableEffect === true && !receiptAddresses.has(executionAddressKey(address))
529
+ )) {
530
+ return refusal("malformed", "every completed effect requires its exact durable receipt");
531
+ }
532
+ if (value.engineVersion !== (compatibility.engineVersion ?? VERSION)) {
533
+ return refusal("incompatible-engine", "continuation engine version does not match");
534
+ }
535
+ if (value.generatorAbi !== (compatibility.generatorAbi ?? GENERATOR_ABI)) {
536
+ return refusal("incompatible-generator", "continuation generator ABI does not match");
537
+ }
538
+ if (value.runId !== compatibility.runId) {
539
+ return refusal("wrong-run", "continuation belongs to another run");
540
+ }
541
+ if (value.workflowId !== compatibility.workflowId) {
542
+ return refusal("wrong-workflow", "continuation belongs to another workflow");
543
+ }
544
+ if (value.bundleDigest !== compatibility.bundleDigest) {
545
+ return refusal("wrong-bundle", "continuation belongs to another bundle");
546
+ }
547
+ if (value.graphFingerprint !== compatibility.graphFingerprint) {
548
+ return refusal("wrong-graph", "continuation belongs to another workflow graph");
549
+ }
550
+ if (compatibility.gateId !== void 0 && value.gateId !== compatibility.gateId) {
551
+ return refusal("stale-gate", "continuation gate is stale or reordered");
552
+ }
553
+ return acceptContinuation(value, {
554
+ runId: compatibility.runId,
555
+ workflowId: compatibility.workflowId,
556
+ ...compatibility.gateId === void 0 ? {} : { gateId: compatibility.gateId }
557
+ });
558
+ }
559
+
560
+ // src/runtime/durable-execution.ts
561
+ function acceptGateResolution(resolution) {
562
+ if (resolution === void 0) return void 0;
563
+ validateWireValue(resolution);
564
+ const keys = Object.keys(resolution).sort();
565
+ if (keys.length !== 2 || keys[0] !== "gateId" || keys[1] !== "value" || !/^[0-9a-f]{64}$/.test(resolution.gateId)) {
566
+ throw new Error("resolution must contain exactly a canonical gateId and wire value");
567
+ }
568
+ return cloneAndFreezeWireValue(resolution);
569
+ }
570
+ function mockedGateAnswer(mocks, boundary) {
571
+ if (!mocks) return void 0;
572
+ const { nodeId, nodeType } = boundary;
573
+ const pick = (section, key) => {
574
+ if (!section) return void 0;
575
+ if (key !== void 0 && section[`${nodeId}:${key}`] !== void 0) return section[`${nodeId}:${key}`];
576
+ if (section[`${nodeId}:*`] !== void 0) return section[`${nodeId}:*`];
577
+ return key !== void 0 ? section[key] : void 0;
578
+ };
579
+ const firstInput = () => {
580
+ const p = boundary.payload;
581
+ const v = p?.arguments?.[0]?.value;
582
+ return v === void 0 || v === null ? void 0 : String(v);
583
+ };
584
+ let data = mocks.gates?.[nodeId];
585
+ if (data === void 0 && nodeType === "waitForAgent") {
586
+ const v = pick(mocks.agents, firstInput());
587
+ if (v !== void 0) data = { agentResult: v };
588
+ }
589
+ if (data === void 0 && nodeType === "waitForEvent") {
590
+ const v = pick(mocks.events, firstInput());
591
+ if (v !== void 0) data = { eventData: v };
592
+ }
593
+ if (data === void 0 && nodeType === "sleep" && mocks.fast === true) {
594
+ data = { wokeAt: (/* @__PURE__ */ new Date()).toISOString() };
595
+ }
596
+ if (data === void 0 || typeof data !== "object") return void 0;
597
+ const value = { onSuccess: true, onFailure: false, ...data };
598
+ validateWireValue(value);
599
+ return value;
600
+ }
601
+ var DurableGateYield = class extends Error {
602
+ constructor(gate, state, receipts, continuation) {
603
+ super(`Workflow yielded at ${gate.kind} gate "${gate.id}"`);
604
+ this.gate = gate;
605
+ this.state = state;
606
+ this.receipts = receipts;
607
+ this.continuation = continuation;
608
+ this.name = "DurableGateYield";
609
+ }
610
+ gate;
611
+ state;
612
+ receipts;
613
+ continuation;
614
+ code = "FLOW_WEAVER_DURABLE_GATE_YIELD";
615
+ };
616
+ var AmbiguousEffectError = class extends Error {
617
+ constructor(operationKey2, address) {
618
+ super(`Effect "${operationKey2}" has an ambiguous commit state`);
619
+ this.operationKey = operationKey2;
620
+ this.address = address;
621
+ this.name = "AmbiguousEffectError";
622
+ }
623
+ operationKey;
624
+ address;
625
+ code = "FLOW_WEAVER_AMBIGUOUS_EFFECT";
626
+ };
627
+ function durableAddressKey(address) {
628
+ return executionAddressKey(address);
629
+ }
630
+ function durableVariableKey(address, portName) {
631
+ return `${executionAddressKey(address)}\0${portName}`;
632
+ }
633
+ function cloneExecutionAddress(address) {
634
+ return {
635
+ frames: address.frames.map((frame) => ({ ...frame })),
636
+ scopes: address.scopes.map((scope) => ({ ...scope })),
637
+ branches: address.branches.map((branch) => ({ ...branch })),
638
+ nodeId: address.nodeId,
639
+ nodeType: address.nodeType,
640
+ executionIndex: address.executionIndex
641
+ };
642
+ }
643
+ function isCanonicalPrefix(candidate, current) {
644
+ return candidate.length <= current.length && canonicalWireValue(candidate) === canonicalWireValue(current.slice(0, candidate.length));
645
+ }
646
+ function isCanonicalEqual(left, right) {
647
+ return left.length === right.length && canonicalWireValue(left) === canonicalWireValue(right);
648
+ }
649
+ function requireEffectRecovery(value, key, address) {
650
+ try {
651
+ validateWireValue(value);
652
+ } catch {
653
+ throw new AmbiguousEffectError(key, address);
654
+ }
655
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
656
+ throw new AmbiguousEffectError(key, address);
657
+ }
658
+ const record = value;
659
+ const kind = record.kind;
660
+ if ((kind === "not-committed" || kind === "repeatable" || kind === "ambiguous") && Object.keys(record).length === 1) {
661
+ return { kind };
662
+ }
663
+ if (kind === "committed" && Object.keys(record).length === 3 && Object.prototype.hasOwnProperty.call(record, "receipt") && Object.prototype.hasOwnProperty.call(record, "result")) {
664
+ return {
665
+ kind,
666
+ receipt: record.receipt,
667
+ result: record.result
668
+ };
669
+ }
670
+ throw new AmbiguousEffectError(key, address);
671
+ }
672
+ function requireEffectExecution(value, key, address) {
673
+ try {
674
+ validateWireValue(value);
675
+ } catch {
676
+ throw new AmbiguousEffectError(key, address);
677
+ }
678
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
679
+ throw new AmbiguousEffectError(key, address);
680
+ }
681
+ const record = value;
682
+ if (Object.keys(record).length !== 2 || !Object.prototype.hasOwnProperty.call(record, "result") || !Object.prototype.hasOwnProperty.call(record, "receipt")) {
683
+ throw new AmbiguousEffectError(key, address);
684
+ }
685
+ return {
686
+ result: record.result,
687
+ receipt: record.receipt
688
+ };
689
+ }
690
+ var DurableExecution = class {
691
+ constructor(runId, workflowId, continuation, resolution, bundleDigest) {
692
+ this.runId = runId;
693
+ this.workflowId = workflowId;
694
+ if (continuation !== void 0) {
695
+ assertAcceptedContinuation(continuation);
696
+ if (continuation.runId !== runId) {
697
+ throw new Error("accepted continuation belongs to another run");
698
+ }
699
+ if (continuation.workflowId !== workflowId) {
700
+ throw new Error("accepted continuation belongs to another workflow");
701
+ }
702
+ }
703
+ if (bundleDigest !== void 0 && !/^sha256:[0-9a-f]{64}$/.test(bundleDigest)) {
704
+ throw new Error("bundleDigest must use canonical sha256:<64hex> form");
705
+ }
706
+ this.givenBundleDigest = bundleDigest;
707
+ this.resumeEnvelope = continuation;
708
+ this.resolution = acceptGateResolution(resolution);
709
+ for (const address of continuation?.state.completed ?? []) {
710
+ this.completed.set(durableAddressKey(address), cloneExecutionAddress(address));
711
+ }
712
+ for (const variable of continuation?.state.variables ?? []) {
713
+ this.variables.set(durableVariableKey(variable.address, variable.portName), {
714
+ address: cloneExecutionAddress(variable.address),
715
+ portName: variable.portName,
716
+ value: variable.value
717
+ });
718
+ }
719
+ for (const receipt of continuation?.receipts ?? []) {
720
+ this.receipts.set(durableAddressKey(receipt.address), {
721
+ address: cloneExecutionAddress(receipt.address),
722
+ operationKey: receipt.operationKey,
723
+ receipt: receipt.receipt
724
+ });
725
+ }
726
+ }
727
+ runId;
728
+ workflowId;
729
+ completed = /* @__PURE__ */ new Map();
730
+ variables = /* @__PURE__ */ new Map();
731
+ receipts = /* @__PURE__ */ new Map();
732
+ resumeEnvelope;
733
+ resolution;
734
+ givenBundleDigest;
735
+ graphFingerprint;
736
+ resolutionConsumed = false;
737
+ address(runtime, nodeId, nodeType, executionIndex) {
738
+ return {
739
+ frames: runtime.frames.map((frame) => ({ ...frame })),
740
+ scopes: runtime.scopes.map((scope) => ({ ...scope })),
741
+ branches: runtime.branches.map((branch) => ({ ...branch })),
742
+ nodeId,
743
+ nodeType,
744
+ executionIndex
745
+ };
746
+ }
747
+ /**
748
+ * The artifact identity this run executes under: the one the coordinator
749
+ * gave, or one derived from the graph identity the body declared. Known
750
+ * only after `bind`.
751
+ */
752
+ bundleDigest() {
753
+ if (this.givenBundleDigest !== void 0) return this.givenBundleDigest;
754
+ if (this.graphFingerprint === void 0) return void 0;
755
+ return `sha256:${sha256Hex(`flow-weaver-inline\0${this.workflowId}\0${this.graphFingerprint}\0${ENGINE_VERSION}`)}`;
756
+ }
757
+ bind(runtime, workflowId, graphFingerprint) {
758
+ if (runtime.frames.length !== 1) return;
759
+ if (workflowId !== this.workflowId) {
760
+ throw new Error(`runtime was created for workflow "${this.workflowId}" but "${workflowId}" is running on it`);
761
+ }
762
+ this.graphFingerprint = graphFingerprint;
763
+ if (this.resumeEnvelope === void 0) return;
764
+ if (this.resumeEnvelope.graphFingerprint !== graphFingerprint) {
765
+ const error = new Error("continuation belongs to another workflow graph");
766
+ error.name = "ContinuationMismatchError";
767
+ throw error;
768
+ }
769
+ const bundleDigest = this.bundleDigest();
770
+ if (bundleDigest !== void 0 && this.resumeEnvelope.bundleDigest !== bundleDigest) {
771
+ const error = new Error("continuation belongs to another bundle");
772
+ error.name = "ContinuationMismatchError";
773
+ throw error;
774
+ }
775
+ }
776
+ shouldExecute(address) {
777
+ return !this.completed.has(durableAddressKey(address));
778
+ }
779
+ commitNode(address) {
780
+ this.completed.set(durableAddressKey(address), cloneExecutionAddress(address));
781
+ }
782
+ setVariable(address, portName, value) {
783
+ this.variables.set(durableVariableKey(address, portName), {
784
+ address: cloneExecutionAddress(address),
785
+ portName,
786
+ value
787
+ });
788
+ }
789
+ getVariable(address, portName, allowAncestorLookup = true) {
790
+ const exact = this.variables.get(durableVariableKey(address, portName));
791
+ if (exact !== void 0) return exact.value;
792
+ if (!allowAncestorLookup) return void 0;
793
+ const candidates = [...this.variables.values()].filter(
794
+ (variable) => variable.portName === portName && variable.address.nodeId === address.nodeId && variable.address.nodeType === address.nodeType && variable.address.executionIndex === address.executionIndex && isCanonicalPrefix(variable.address.frames, address.frames) && isCanonicalPrefix(variable.address.scopes, address.scopes) && isCanonicalPrefix(variable.address.branches, address.branches)
795
+ ).sort(
796
+ (left, right) => right.address.frames.length + right.address.scopes.length + right.address.branches.length - (left.address.frames.length + left.address.scopes.length + left.address.branches.length)
797
+ );
798
+ const specificity = (candidate) => candidate.address.frames.length + candidate.address.scopes.length + candidate.address.branches.length;
799
+ if (candidates.length > 1 && specificity(candidates[0]) === specificity(candidates[1])) {
800
+ throw new Error(`Ambiguous durable variable address for ${address.nodeId}.${portName}`);
801
+ }
802
+ if (candidates[0] !== void 0) return candidates[0].value;
803
+ const converged = [...this.variables.values()].filter(
804
+ (variable) => variable.portName === portName && variable.address.nodeId === address.nodeId && variable.address.nodeType === address.nodeType && variable.address.executionIndex === address.executionIndex && isCanonicalEqual(variable.address.frames, address.frames) && isCanonicalEqual(variable.address.scopes, address.scopes) && isCanonicalPrefix(address.branches, variable.address.branches)
805
+ );
806
+ if (converged.length > 1) {
807
+ throw new Error(`Ambiguous durable variable address for ${address.nodeId}.${portName}`);
808
+ }
809
+ return converged[0]?.value;
810
+ }
811
+ resolveGate(runtime, boundary) {
812
+ validateWireValue(boundary.payload);
813
+ const mocked = mockedGateAnswer(runtime.services.mocks, boundary);
814
+ if (mocked !== void 0) return mocked;
815
+ const address = this.address(runtime, boundary.nodeId, boundary.nodeType, boundary.executionIndex);
816
+ const id = durableGateId(this.runId, boundary.kind, address);
817
+ if (this.resumeEnvelope !== void 0 && !this.resolutionConsumed) {
818
+ if (durableAddressKey(this.resumeEnvelope.location) !== durableAddressKey(address) || this.resumeEnvelope.gateId !== id || this.resumeEnvelope.gateKind !== boundary.kind || this.resolution === void 0 || this.resolution.gateId !== id) {
819
+ const error = new Error("Gate resolution is stale, reordered, or does not match the resume boundary");
820
+ error.name = "StaleGateError";
821
+ throw error;
822
+ }
823
+ validateWireValue(this.resolution.value);
824
+ this.resolutionConsumed = true;
825
+ return this.resolution.value;
826
+ }
827
+ if (this.resumeEnvelope !== void 0 && durableAddressKey(this.resumeEnvelope.location) === durableAddressKey(address)) {
828
+ const error = new Error("The consumed resume gate was re-entered");
829
+ error.name = "StaleGateError";
830
+ throw error;
831
+ }
832
+ const gate = {
833
+ id,
834
+ kind: boundary.kind,
835
+ address,
836
+ payload: boundary.payload
837
+ };
838
+ const state = this.snapshot(address);
839
+ const receipts = [...this.receipts.values()];
840
+ const bundleDigest = this.bundleDigest();
841
+ const continuation = this.graphFingerprint === void 0 || bundleDigest === void 0 ? void 0 : createContinuationEnvelope({
842
+ runId: this.runId,
843
+ gateId: id,
844
+ gateKind: boundary.kind,
845
+ workflowId: this.workflowId,
846
+ bundleDigest,
847
+ graphFingerprint: this.graphFingerprint,
848
+ location: address,
849
+ state,
850
+ receipts
851
+ });
852
+ throw new DurableGateYield(gate, state, receipts, continuation);
853
+ }
854
+ async executeEffect(runtime, boundary, execute) {
855
+ const address = this.address(runtime, boundary.nodeId, boundary.nodeType, boundary.executionIndex);
856
+ const key = operationKey(this.runId, address);
857
+ const committed = this.receipts.get(durableAddressKey(address));
858
+ if (committed !== void 0) {
859
+ throw new Error(`Committed effect "${key}" reached its execution body`);
860
+ }
861
+ let recovery;
862
+ try {
863
+ recovery = await runtime.services.effectAdapter?.recover(key, address);
864
+ } catch {
865
+ throw new AmbiguousEffectError(key, address);
866
+ }
867
+ if (recovery === void 0) {
868
+ throw new AmbiguousEffectError(key, address);
869
+ }
870
+ recovery = requireEffectRecovery(recovery, key, address);
871
+ if (recovery.kind === "ambiguous") throw new AmbiguousEffectError(key, address);
872
+ if (recovery.kind === "committed") {
873
+ this.receipts.set(durableAddressKey(address), {
874
+ address: cloneExecutionAddress(address),
875
+ operationKey: key,
876
+ receipt: recovery.receipt
877
+ });
878
+ return recovery.result;
879
+ }
880
+ let executed;
881
+ try {
882
+ executed = requireEffectExecution(await execute(key), key, address);
883
+ } catch (error) {
884
+ let afterFailure;
885
+ try {
886
+ afterFailure = await runtime.services.effectAdapter?.recover(key, address) ?? { kind: "ambiguous" };
887
+ } catch {
888
+ throw new AmbiguousEffectError(key, address);
889
+ }
890
+ afterFailure = requireEffectRecovery(afterFailure, key, address);
891
+ if (afterFailure.kind === "committed") {
892
+ this.receipts.set(durableAddressKey(address), {
893
+ address: cloneExecutionAddress(address),
894
+ operationKey: key,
895
+ receipt: afterFailure.receipt
896
+ });
897
+ return afterFailure.result;
898
+ }
899
+ if (afterFailure.kind === "ambiguous") {
900
+ throw new AmbiguousEffectError(key, address);
901
+ }
902
+ throw error;
903
+ }
904
+ if (runtime.services.effectAdapter?.commit !== void 0) {
905
+ try {
906
+ await runtime.services.effectAdapter.commit(key, address, executed);
907
+ } catch {
908
+ let committed2;
909
+ try {
910
+ committed2 = requireEffectRecovery(
911
+ await runtime.services.effectAdapter.recover(key, address),
912
+ key,
913
+ address
914
+ );
915
+ } catch {
916
+ throw new AmbiguousEffectError(key, address);
917
+ }
918
+ if (committed2.kind !== "committed" || canonicalWireValue(committed2.receipt) !== canonicalWireValue(executed.receipt) || canonicalWireValue(committed2.result) !== canonicalWireValue(executed.result)) throw new AmbiguousEffectError(key, address);
919
+ this.receipts.set(durableAddressKey(address), {
920
+ address: cloneExecutionAddress(address),
921
+ operationKey: key,
922
+ receipt: committed2.receipt
923
+ });
924
+ return committed2.result;
925
+ }
926
+ }
927
+ this.receipts.set(durableAddressKey(address), {
928
+ address: cloneExecutionAddress(address),
929
+ operationKey: key,
930
+ receipt: executed.receipt
931
+ });
932
+ return executed.result;
933
+ }
934
+ snapshot(nextBoundary) {
935
+ const completedKeys = new Set(this.completed.keys());
936
+ return {
937
+ completed: [...this.completed.values()].map(cloneExecutionAddress),
938
+ variables: [...this.variables.values()].filter((variable) => completedKeys.has(durableAddressKey(variable.address))).map((variable) => {
939
+ try {
940
+ validateWireValue(variable.value);
941
+ } catch (error) {
942
+ throw new Error(
943
+ `Continuation variable ${variable.address.nodeId}.${variable.portName} is not a wire value: ${error instanceof Error ? error.message : String(error)}`
944
+ );
945
+ }
946
+ return {
947
+ address: cloneExecutionAddress(variable.address),
948
+ portName: variable.portName,
949
+ value: variable.value
950
+ };
951
+ }),
952
+ nextBoundary: cloneExecutionAddress(nextBoundary)
953
+ };
954
+ }
955
+ assertResumeResolutionConsumed() {
956
+ if (this.resumeEnvelope !== void 0 && !this.resolutionConsumed) {
957
+ const error = new Error("Resumed execution completed or yielded without consuming its exact gate resolution");
958
+ error.name = "UnconsumedGateResolutionError";
959
+ throw error;
960
+ }
961
+ }
962
+ };
963
+ function createWorkflowRuntime(options) {
964
+ if (options.runId.trim().length === 0) {
965
+ throw new Error("runId must be a non-empty coordinator-owned identity");
966
+ }
967
+ const rootFrame = {
968
+ workflowId: options.workflowId,
969
+ invocation: 0
970
+ };
971
+ return {
972
+ runId: options.runId,
973
+ abortSignal: options.abortSignal,
974
+ services: options.services ?? {},
975
+ durable: new DurableExecution(
976
+ options.runId,
977
+ options.workflowId,
978
+ options.continuation,
979
+ options.resolution,
980
+ options.bundleDigest
981
+ ),
982
+ frames: [rootFrame],
983
+ scopes: [],
984
+ branches: []
985
+ };
986
+ }
987
+ function isDurableGateYield(error) {
988
+ return error instanceof DurableGateYield || typeof error === "object" && error !== null && error.code === "FLOW_WEAVER_DURABLE_GATE_YIELD";
989
+ }
990
+ function isAmbiguousEffectError(error) {
991
+ return error instanceof AmbiguousEffectError || typeof error === "object" && error !== null && error.code === "FLOW_WEAVER_AMBIGUOUS_EFFECT";
992
+ }
993
+
994
+ // src/mcp/workflow-executor.ts
995
+ var ContinuationRefusalError = class extends Error {
996
+ constructor(refusal2) {
997
+ super(refusal2.message);
998
+ this.refusal = refusal2;
999
+ }
1000
+ refusal;
1001
+ name = "ContinuationRefusalError";
1002
+ };
1003
+ async function executeWorkflow(request) {
1004
+ const {
1005
+ runId,
1006
+ bundleDigest,
1007
+ filePath,
1008
+ params,
1009
+ workflowName,
1010
+ production: requestedProduction,
1011
+ includeTrace: requestedIncludeTrace,
1012
+ mocks,
1013
+ debugController,
1014
+ onEvent,
1015
+ externalNodeTypes,
1016
+ abortSignal,
1017
+ continuation,
1018
+ resolution,
1019
+ effectAdapter
1020
+ } = request;
1021
+ if (runId.trim().length === 0) {
1022
+ throw new Error("runId must be a non-empty coordinator-owned identity");
1023
+ }
1024
+ if (bundleDigest !== void 0 && !/^sha256:[0-9a-f]{64}$/.test(bundleDigest)) {
1025
+ throw new Error("bundleDigest must use canonical sha256:<64hex> form");
1026
+ }
1027
+ const acceptedResolution = acceptGateResolution(resolution);
1028
+ if (abortSignal?.aborted) throw new CancellationError();
1029
+ const resolvedPath = path.resolve(filePath);
1030
+ const includeTrace = requestedIncludeTrace !== false;
1031
+ const tmpId = `fw-exec-${Date.now()}-${Math.random().toString(36).slice(2)}`;
1032
+ const tmpBase = path.join(path.dirname(resolvedPath), tmpId);
1033
+ const tmpTsFile = `${tmpBase}.ts`;
1034
+ const tmpFile = `${tmpBase}.mjs`;
1035
+ try {
1036
+ fs2.copyFileSync(resolvedPath, tmpTsFile);
1037
+ const source = fs2.readFileSync(resolvedPath, "utf8");
1038
+ const allWorkflows = getAvailableWorkflows(source);
1039
+ if (allWorkflows.length === 0) {
1040
+ throw new Error("No workflow definition found in file");
1041
+ }
1042
+ const selectedWorkflow = workflowName ? allWorkflows.find((workflow) => workflow.functionName === workflowName) : allWorkflows[0];
1043
+ if (!selectedWorkflow) {
1044
+ throw new Error(`Workflow "${workflowName}" not found in file. Available: ${allWorkflows.map((w) => w.functionName).join(", ")}`);
1045
+ }
1046
+ const effectiveWorkflowId = selectedWorkflow.functionName;
1047
+ const parsed = await parseWorkflow(resolvedPath, {
1048
+ workflowName: effectiveWorkflowId,
1049
+ projectDir: path.dirname(resolvedPath),
1050
+ externalNodeTypes
1051
+ });
1052
+ if (parsed.errors.length > 0) {
1053
+ throw new Error(`Cannot fingerprint invalid workflow: ${parsed.errors.join("; ")}`);
1054
+ }
1055
+ const { capabilities, graphFingerprint, continuationGraph } = graphIdentity(
1056
+ parsed.ast,
1057
+ parsed.allWorkflows
1058
+ );
1059
+ if (capabilities.gate && bundleDigest === void 0) {
1060
+ throw new ContinuationRefusalError({
1061
+ accepted: false,
1062
+ reason: "wrong-bundle",
1063
+ message: "a workflow graph with durable gates requires coordinator-verified whole-bundle identity before execution"
1064
+ });
1065
+ }
1066
+ if (capabilities.gate && capabilities.effect && effectAdapter === void 0) {
1067
+ throw new ContinuationRefusalError({
1068
+ accepted: false,
1069
+ reason: "ambiguous-effect",
1070
+ message: "a durable-gate graph with effects requires an operation-key recovery adapter before execution"
1071
+ });
1072
+ }
1073
+ validateDurableClosure(parsed.ast, parsed.allWorkflows);
1074
+ let acceptedContinuation;
1075
+ if (continuation !== void 0) {
1076
+ if (bundleDigest === void 0) {
1077
+ throw new ContinuationRefusalError({
1078
+ accepted: false,
1079
+ reason: "wrong-bundle",
1080
+ message: "durable resume requires coordinator-verified whole-bundle identity"
1081
+ });
1082
+ }
1083
+ const decoded = decodeContinuation(continuation, {
1084
+ runId,
1085
+ workflowId: effectiveWorkflowId,
1086
+ bundleDigest,
1087
+ graphFingerprint,
1088
+ gateId: acceptedResolution?.gateId,
1089
+ graph: continuationGraph
1090
+ });
1091
+ if (!decoded.accepted) throw new ContinuationRefusalError(decoded);
1092
+ if (acceptedResolution === void 0) {
1093
+ throw new ContinuationRefusalError({
1094
+ accepted: false,
1095
+ reason: "stale-gate",
1096
+ message: "a continuation resume requires its exact gate resolution"
1097
+ });
1098
+ }
1099
+ acceptedContinuation = decoded.envelope;
1100
+ for (const receipt of acceptedContinuation.receipts) {
1101
+ const receiptWorkflowId = receipt.address.frames.at(-1)?.workflowId;
1102
+ const receiptNode = continuationGraph.nodes.find(
1103
+ (node) => node.workflowId === receiptWorkflowId && node.nodeId === receipt.address.nodeId && node.nodeType === receipt.address.nodeType
1104
+ );
1105
+ let recovery;
1106
+ try {
1107
+ recovery = requireEffectRecovery(
1108
+ await effectAdapter?.recover(receipt.operationKey, receipt.address),
1109
+ receipt.operationKey,
1110
+ receipt.address
1111
+ );
1112
+ } catch {
1113
+ recovery = { kind: "ambiguous" };
1114
+ }
1115
+ const recordedResult = Object.fromEntries(
1116
+ acceptedContinuation.state.variables.filter(
1117
+ (variable) => canonicalWireValue(variable.address) === canonicalWireValue(receipt.address) && receiptNode?.outputPorts.includes(variable.portName) === true
1118
+ ).map((variable) => [variable.portName, variable.value])
1119
+ );
1120
+ if (recovery?.kind !== "committed" || canonicalWireValue(recovery.receipt) !== canonicalWireValue(receipt.receipt) || canonicalWireValue(recovery.result) !== canonicalWireValue(recordedResult)) {
1121
+ throw new ContinuationRefusalError({
1122
+ accepted: false,
1123
+ reason: "ambiguous-effect",
1124
+ message: "a completed effect continuation must be re-attested by its operation-key adapter"
1125
+ });
1126
+ }
1127
+ }
1128
+ } else if (acceptedResolution !== void 0) {
1129
+ throw new ContinuationRefusalError({
1130
+ accepted: false,
1131
+ reason: "stale-gate",
1132
+ message: "a gate resolution cannot be supplied without a continuation"
1133
+ });
1134
+ }
1135
+ const production = debugController ? false : requestedProduction ?? !includeTrace;
1136
+ for (const wf of allWorkflows) {
1137
+ await compileWorkflow(tmpTsFile, {
1138
+ write: true,
1139
+ inPlace: true,
1140
+ // Forward caller-supplied foreign nodeType definitions so a
1141
+ // workflow that references a node from another package (an
1142
+ // `@node <id> <foreignType>` the file doesn't declare, e.g.
1143
+ // pack-core's `waitForApproval`) resolves its real ports during
1144
+ // the executor's own compile. Without this the internal parse
1145
+ // can't see those nodeTypes and falls back to a stub, failing
1146
+ // validation. Callers that resolve foreign defs from a wire
1147
+ // manifest (no node_modules to read a .d.ts) pass them here.
1148
+ parse: { workflowName: wf.functionName, externalNodeTypes },
1149
+ generate: { production }
1150
+ });
1151
+ }
1152
+ const compiledCode = fs2.readFileSync(tmpTsFile, "utf8");
1153
+ const jsOutput = ts.transpileModule(compiledCode, {
1154
+ compilerOptions: {
1155
+ module: ts.ModuleKind.ESNext,
1156
+ target: ts.ScriptTarget.ESNext,
1157
+ esModuleInterop: true
1158
+ }
1159
+ });
1160
+ const transpiledOutput = rewriteSrcImportsToDist(jsOutput.outputText, path.dirname(tmpTsFile));
1161
+ fs2.writeFileSync(tmpFile, transpiledOutput, "utf8");
1162
+ const trace = [];
1163
+ const debugger_ = includeTrace ? {
1164
+ sendEvent: (event) => {
1165
+ const traceEvent = {
1166
+ type: event.type || "UNKNOWN",
1167
+ timestamp: Date.now(),
1168
+ data: event
1169
+ };
1170
+ trace.push(traceEvent);
1171
+ onEvent?.(traceEvent);
1172
+ },
1173
+ innerFlowInvocation: false
1174
+ } : void 0;
1175
+ const mod = await import(pathToFileURL(tmpFile).href);
1176
+ const workflowRegistry = {};
1177
+ for (const workflow of parsed.allWorkflows) {
1178
+ const value = mod[workflow.functionName];
1179
+ if (typeof value === "function") {
1180
+ workflowRegistry[workflow.functionName] = value;
1181
+ }
1182
+ }
1183
+ const services = {
1184
+ debugger: debugger_,
1185
+ debugController,
1186
+ mocks,
1187
+ effectAdapter,
1188
+ workflowRegistry
1189
+ };
1190
+ const runtime = createWorkflowRuntime({
1191
+ runId,
1192
+ workflowId: effectiveWorkflowId,
1193
+ abortSignal,
1194
+ services,
1195
+ continuation: acceptedContinuation,
1196
+ resolution: acceptedResolution,
1197
+ bundleDigest
1198
+ });
1199
+ const exportedFn = findExportedFunction(mod, effectiveWorkflowId);
1200
+ if (!exportedFn) {
1201
+ const available = Object.entries(mod).filter(([k, v]) => k !== "__esModule" && typeof v === "function").map(([k]) => k);
1202
+ const availStr = available.length > 0 ? `. Available: ${available.join(", ")}` : "";
1203
+ throw new Error(
1204
+ workflowName ? `Workflow "${workflowName}" not found in file${availStr}` : `No exported workflow function found in file${availStr}`
1205
+ );
1206
+ }
1207
+ const startTime = Date.now();
1208
+ if (abortSignal?.aborted) throw new CancellationError();
1209
+ try {
1210
+ const result = await exportedFn.fn(true, params ?? {}, runtime);
1211
+ runtime.durable.assertResumeResolutionConsumed();
1212
+ const executionTime = Date.now() - startTime;
1213
+ return {
1214
+ kind: "completed",
1215
+ result,
1216
+ functionName: exportedFn.name,
1217
+ executionTime,
1218
+ ...includeTrace && { trace, summary: computeTraceSummary(trace) }
1219
+ };
1220
+ } catch (error) {
1221
+ if (isDurableGateYield(error)) {
1222
+ if (bundleDigest === void 0) {
1223
+ throw new ContinuationRefusalError({
1224
+ accepted: false,
1225
+ reason: "wrong-bundle",
1226
+ message: "durable yield requires coordinator-verified whole-bundle identity"
1227
+ });
1228
+ }
1229
+ runtime.durable.assertResumeResolutionConsumed();
1230
+ const executionTime = Date.now() - startTime;
1231
+ return {
1232
+ kind: "yielded",
1233
+ gate: error.gate,
1234
+ continuation: createContinuationEnvelope({
1235
+ runId,
1236
+ gateId: error.gate.id,
1237
+ gateKind: error.gate.kind,
1238
+ workflowId: effectiveWorkflowId,
1239
+ bundleDigest,
1240
+ graphFingerprint,
1241
+ location: error.gate.address,
1242
+ state: error.state,
1243
+ receipts: error.receipts
1244
+ }),
1245
+ functionName: exportedFn.name,
1246
+ executionTime,
1247
+ ...includeTrace && { trace, summary: computeTraceSummary(trace) }
1248
+ };
1249
+ }
1250
+ if (isAmbiguousEffectError(error)) {
1251
+ throw new ContinuationRefusalError({
1252
+ accepted: false,
1253
+ reason: "ambiguous-effect",
1254
+ message: error.message
1255
+ });
1256
+ }
1257
+ throw error;
1258
+ }
1259
+ } finally {
1260
+ try {
1261
+ fs2.unlinkSync(tmpFile);
1262
+ } catch {
1263
+ }
1264
+ try {
1265
+ fs2.unlinkSync(tmpTsFile);
1266
+ } catch {
1267
+ }
1268
+ }
1269
+ }
1270
+ function computeTraceSummary(trace) {
1271
+ if (trace.length === 0) {
1272
+ return { totalNodes: 0, succeeded: 0, failed: 0, cancelled: 0, nodeTimings: [], totalDurationMs: 0 };
1273
+ }
1274
+ const nodeStartTimes = /* @__PURE__ */ new Map();
1275
+ const nodeFinalStatus = /* @__PURE__ */ new Map();
1276
+ const nodeTimings = [];
1277
+ for (const event of trace) {
1278
+ if (event.type !== "STATUS_CHANGED" || !event.data) continue;
1279
+ const id = event.data.id;
1280
+ const status = event.data.status;
1281
+ if (!id || !status) continue;
1282
+ if (status === "RUNNING") {
1283
+ nodeStartTimes.set(id, event.timestamp);
1284
+ }
1285
+ if (status === "SUCCEEDED" || status === "FAILED" || status === "CANCELLED") {
1286
+ nodeFinalStatus.set(id, status);
1287
+ const startTime = nodeStartTimes.get(id);
1288
+ if (startTime !== void 0) {
1289
+ nodeTimings.push({ nodeId: id, durationMs: event.timestamp - startTime });
1290
+ }
1291
+ }
1292
+ }
1293
+ let succeeded = 0;
1294
+ let failed = 0;
1295
+ let cancelled = 0;
1296
+ for (const status of nodeFinalStatus.values()) {
1297
+ if (status === "SUCCEEDED") succeeded++;
1298
+ else if (status === "FAILED") failed++;
1299
+ else if (status === "CANCELLED") cancelled++;
1300
+ }
1301
+ const totalDurationMs = trace[trace.length - 1].timestamp - trace[0].timestamp;
1302
+ return {
1303
+ totalNodes: nodeFinalStatus.size,
1304
+ succeeded,
1305
+ failed,
1306
+ cancelled,
1307
+ nodeTimings,
1308
+ totalDurationMs
1309
+ };
1310
+ }
1311
+ function findExportedFunction(mod, preferredName) {
1312
+ if (preferredName && typeof mod[preferredName] === "function") {
1313
+ return { name: preferredName, fn: mod[preferredName] };
1314
+ }
1315
+ for (const [key, value] of Object.entries(mod)) {
1316
+ if (key === "__esModule") continue;
1317
+ if (typeof value === "function") {
1318
+ return { name: key, fn: value };
1319
+ }
1320
+ }
1321
+ return null;
1322
+ }
1323
+
1324
+ export {
1325
+ CancellationError,
1326
+ ContinuationRefusalError,
1327
+ executeWorkflow,
1328
+ computeTraceSummary
1329
+ };