@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
package/dist/index.js CHANGED
@@ -1,92 +1,1322 @@
1
- /**
2
- * @packageDocumentation
3
- *
4
- * # Flow Weaver Library
5
- *
6
- * A visual dataflow programming system for TypeScript. Workflows are defined via
7
- * JSDoc annotations in standard TypeScript files and can be parsed, validated,
8
- * and compiled to executable code.
9
- *
10
- * ## Core Concepts
11
- *
12
- * - **Workflow** (`TWorkflowAST`) - A graph of connected nodes with start/exit ports
13
- * - **NodeType** (`TNodeTypeAST`) - Template defining inputs, outputs, and behavior
14
- * - **NodeInstance** (`TNodeInstanceAST`) - A usage of a node type in a workflow
15
- * - **Port** (`TPortDefinition`) - Entry/exit point on a node (data or control flow)
16
- * - **Connection** (`TConnectionAST`) - Links ports between nodes
17
- *
18
- * ## File Format
19
- *
20
- * Any `.ts`, `.tsx`, `.js`, or `.jsx` file can contain workflows.
21
- *
22
- * ```typescript
23
- * // Define a node type
24
- * /**
25
- * * @flowWeaver nodeType
26
- * * @input a - First number
27
- * * @input b - Second number
28
- * * @output result - Sum
29
- * *\/
30
- * function add(execute: boolean, a: number, b: number): { onSuccess: boolean; result: number } { ... }
31
- *
32
- * // Define a workflow
33
- * /**
34
- * * @flowWeaver workflow
35
- * * @node adder1 add
36
- * * @connect Start.execute -> adder1.execute
37
- * * @connect adder1.onSuccess -> Exit.onSuccess
38
- * *\/
39
- * export function myWorkflow(execute: boolean, params: {...}): {...} { ... }
40
- * ```
41
- *
42
- * ## Main APIs
43
- *
44
- * - {@link parseWorkflow} - Parse a file to AST
45
- * - {@link validateWorkflow} - Validate workflow structure
46
- * - {@link generateCode} - Generate executable code from AST
47
- * - {@link compileWorkflow} - Parse + validate + generate in one step
48
- *
49
- * ## JSDoc Port Sync (Browser-compatible)
50
- *
51
- * For IDE integration, use the browser-compatible sync functions:
52
- * - {@link parsePortsFromFunctionText} - Extract ports from JSDoc
53
- * - {@link updatePortsInFunctionText} - Update ports in function text
54
- * - {@link formatPortsInFunctionText} - Format ports consistently
55
- *
56
- * @module @synergenius/flow-weaver
57
- */
58
- // Public API
59
- export * from './api/index.js';
60
- // Parser (for advanced use - clearing import cache)
61
- export { parser, resolveNpmNodeTypes } from './parser.js';
62
- // Extension registries
63
- export { TagHandlerRegistry } from './parser/tag-registry.js';
64
- export { ValidationRuleRegistry } from './validation/rule-registry.js';
65
- // AST Builders (for programmatic AST construction)
66
- export { WorkflowBuilder, NodeTypeBuilder, NodeInstanceBuilder, ConnectionBuilder, } from './ast/builder.js';
67
- export { portRef, port, workflow, nodeType, nodeInstance } from './ast/builder.js';
68
- // Runtime
69
- export { GeneratedExecutionContext } from './runtime/ExecutionContext.js';
70
- // Generated Branding (configurable output branding)
71
- export { configureGeneratedBranding, getGeneratedBranding } from './generated-branding.js';
72
- // Type Mappings & Constants
73
- export * from './type-mappings.js';
74
- export * from './constants.js';
75
- // Validation
76
- export { validator, WorkflowValidator } from './validator.js';
77
- // Friendly Errors (beginner-friendly validation messages)
78
- export { getFriendlyError, formatFriendlyDiagnostics } from './friendly-errors.js';
79
- // Code Generation
80
- export { generator, WorkflowGenerator } from './generator.js';
81
- export { AnnotationGenerator } from './annotation-generator.js';
82
- // Generator Utilities (for advanced use)
83
- export * as GeneratorUtils from './generator.js';
84
- // JSDoc Port Sync (browser-compatible parsing/updating)
85
- export { parsePortsFromFunctionText, updatePortsInFunctionText, formatPortsInFunctionText, syncCodeRenames, renamePortInCode, parseReturnTypeFields, parseFunctionSignature, parseReturnFields, } from './jsdoc-port-sync/index.js';
86
- // Templates (for workflow/node creation)
87
- export { workflowTemplates, nodeTemplates, getWorkflowTemplate, getNodeTemplate, toCamelCase, toPascalCase, } from './cli/templates/index.js';
88
- // Diff (semantic comparison)
89
- export { WorkflowDiffer } from './diff/WorkflowDiffer.js';
90
- export { formatDiff } from './diff/formatDiff.js';
91
- export { IMPACT_DESCRIPTIONS, IMPACT_COLORS, getImpactReasons, hasBreakingChanges, getNodeTypeChanges, getCriticalConnections, } from './diff/impact.js';
92
- //# sourceMappingURL=index.js.map
1
+ import {
2
+ ConnectionBuilder,
3
+ NodeInstanceBuilder,
4
+ NodeTypeBuilder,
5
+ WorkflowBuilder,
6
+ nodeInstance,
7
+ nodeType,
8
+ port,
9
+ portRef,
10
+ workflow
11
+ } from "./chunks/chunk-CY3RNVML.js";
12
+ import {
13
+ addConnection,
14
+ addConnections,
15
+ addNode,
16
+ addNodeType,
17
+ addNodes,
18
+ addToScope,
19
+ applyModifyOperation,
20
+ assertNodeExists,
21
+ assertNodeNotExists,
22
+ assertNodeTypeExists,
23
+ cloneWorkflow,
24
+ createScope,
25
+ createWorkflow,
26
+ fromAST,
27
+ generateNodeFromTemplate,
28
+ generateUniqueNodeId,
29
+ generateWorkflowFromTemplate,
30
+ getAvailableCommands,
31
+ getNodeType,
32
+ hasNodeType,
33
+ listNodeTemplates,
34
+ listNodeTypes,
35
+ listWorkflowTemplates,
36
+ moveToScope,
37
+ reconnect,
38
+ removeAllConnections,
39
+ removeConnection,
40
+ removeFromScope,
41
+ removeNode,
42
+ removeNodeType,
43
+ removeNodes,
44
+ removeScope,
45
+ renameNode,
46
+ renameNodeType,
47
+ renameWorkflow,
48
+ replaceConnections,
49
+ replaceNodeTypes,
50
+ runCommand,
51
+ setInstancePortConfigs,
52
+ setNodeConfig,
53
+ setNodeLabel,
54
+ setNodeMinimized,
55
+ setNodeSize,
56
+ setOutputFileType,
57
+ setStartExitPorts,
58
+ setWorkflowDescription,
59
+ setWorkflowMetadata,
60
+ setWorkflowPorts,
61
+ swapNodeInstancePortOrder,
62
+ swapPortOrder,
63
+ transformWorkflow,
64
+ updateNode,
65
+ updateNodeType,
66
+ validateModifyParams,
67
+ withMinimalValidation,
68
+ withValidation,
69
+ withoutValidation
70
+ } from "./chunks/chunk-7YYKTPJ5.js";
71
+ import {
72
+ validateWorkflow
73
+ } from "./chunks/chunk-P44RIZ7C.js";
74
+ import "./chunks/chunk-ZKEGXO73.js";
75
+ import {
76
+ ValidationRuleRegistry,
77
+ validationRuleRegistry
78
+ } from "./chunks/chunk-A5MBOFVY.js";
79
+ import {
80
+ IMPACT_COLORS,
81
+ IMPACT_DESCRIPTIONS,
82
+ WorkflowDiffer,
83
+ formatDiff,
84
+ getCriticalConnections,
85
+ getImpactReasons,
86
+ getNodeTypeChanges,
87
+ hasBreakingChanges
88
+ } from "./chunks/chunk-CYHYDLV4.js";
89
+ import {
90
+ formatPortsInFunctionText,
91
+ parsePortsFromFunctionText,
92
+ renamePortInCode,
93
+ syncCodeRenames,
94
+ updatePortsInFunctionText
95
+ } from "./chunks/chunk-FMTLP5ZX.js";
96
+ import {
97
+ GeneratedExecutionContext
98
+ } from "./chunks/chunk-KMCAYNUM.js";
99
+ import {
100
+ AmbiguousEffectError,
101
+ DurableExecution,
102
+ DurableGateYield,
103
+ createWorkflowRuntime,
104
+ isAmbiguousEffectError,
105
+ isDurableGateYield
106
+ } from "./chunks/chunk-OOQG7UPP.js";
107
+ import {
108
+ compileWorkflow,
109
+ generateCode
110
+ } from "./chunks/chunk-F3RTZV2A.js";
111
+ import {
112
+ addWorkflowToSource,
113
+ getAvailableWorkflows,
114
+ removeWorkflowFromSource,
115
+ toggleWorkflowExport
116
+ } from "./chunks/chunk-YSPBPZDV.js";
117
+ import {
118
+ decodeContinuation
119
+ } from "./chunks/chunk-DCMGQP5V.js";
120
+ import "./chunks/chunk-6KMVP6AU.js";
121
+ import {
122
+ COERCE_TYPE_FOR_DATA_TYPE,
123
+ WorkflowValidator,
124
+ validator
125
+ } from "./chunks/chunk-VQ7H33J4.js";
126
+ import "./chunks/chunk-HKZLQJDV.js";
127
+ import {
128
+ parseFunctionSignature,
129
+ parseReturnFields,
130
+ parseReturnTypeFields
131
+ } from "./chunks/chunk-NQNLUAPO.js";
132
+ import {
133
+ generateInPlace
134
+ } from "./chunks/chunk-TAIUWKZB.js";
135
+ import {
136
+ parseWorkflow,
137
+ parseWorkflowSourceAtPath
138
+ } from "./chunks/chunk-INDEVYEC.js";
139
+ import "./chunks/chunk-KU3CLJI2.js";
140
+ import "./chunks/chunk-5Y3AIUWY.js";
141
+ import "./chunks/chunk-CZBCCK4Y.js";
142
+ import {
143
+ configureGeneratedBranding,
144
+ getGeneratedBranding
145
+ } from "./chunks/chunk-AXNQRVJB.js";
146
+ import {
147
+ CONTINUATION_FORMAT_VERSION,
148
+ ENGINE_VERSION,
149
+ ENVELOPE_KEYS,
150
+ GENERATOR_ABI,
151
+ MAX_CONTINUATION_BYTES,
152
+ MAX_CONTINUATION_DEPTH,
153
+ MAX_CONTINUATION_ENTRIES,
154
+ MAX_CONTINUATION_STRING_BYTES,
155
+ WireValidationError,
156
+ acceptContinuation,
157
+ assertAcceptedContinuation,
158
+ canonicalWireValue,
159
+ cloneAndFreezeWireValue,
160
+ continuationChecksum,
161
+ createContinuationEnvelope,
162
+ durableGateId,
163
+ executionAddressKey,
164
+ hasExactlyTheKeys,
165
+ isExecutionAddress,
166
+ isPlainObjectRecord,
167
+ operationKey,
168
+ sha256Hex,
169
+ structurallyValidEnvelope,
170
+ utf8ByteLength,
171
+ validateWireValue
172
+ } from "./chunks/chunk-O2U2LO57.js";
173
+ import "./chunks/chunk-QDE4Z7KW.js";
174
+ import "./chunks/chunk-XAV22WD7.js";
175
+ import {
176
+ countConnections,
177
+ countNodeTypes,
178
+ countNodes,
179
+ findDeadEndDetails,
180
+ findDeadEnds,
181
+ findDisconnectedOutputPorts,
182
+ findIsolatedNodes,
183
+ findNodesByName,
184
+ findPath,
185
+ findUnusedNodeTypes,
186
+ findWorkflows,
187
+ formatPortReference,
188
+ getConnectedPorts,
189
+ getConnections,
190
+ getDataDependencies,
191
+ getDependencies,
192
+ getDependents,
193
+ getExecutionGroups,
194
+ getIncomingConnections,
195
+ getNode,
196
+ getNodes,
197
+ getNodesByType,
198
+ getNodesInScope,
199
+ getOutgoingConnections,
200
+ getTopologicalOrder,
201
+ getTransitiveDependencies,
202
+ getUnconnectedPorts,
203
+ hasNode,
204
+ isConnected,
205
+ portReferencesEqual,
206
+ validatePortReference
207
+ } from "./chunks/chunk-P2CVDGHR.js";
208
+ import {
209
+ AnnotationParser,
210
+ MARKERS,
211
+ hasInPlaceMarkers,
212
+ parser,
213
+ resolveNpmNodeTypes,
214
+ stripGeneratedSections
215
+ } from "./chunks/chunk-ZMGN6F3S.js";
216
+ import "./chunks/chunk-REEYC73I.js";
217
+ import "./chunks/chunk-4EUSHAY6.js";
218
+ import "./chunks/chunk-4KDUEOFD.js";
219
+ import "./chunks/chunk-DUO6H5PR.js";
220
+ import {
221
+ AnnotationGenerator,
222
+ TagHandlerRegistry,
223
+ tagHandlerRegistry
224
+ } from "./chunks/chunk-VP2P3BPA.js";
225
+ import "./chunks/chunk-B6HQ6YS5.js";
226
+ import {
227
+ PORT_TYPE_MAPPINGS,
228
+ getAllPortTypes,
229
+ getPortTypeDescription,
230
+ inferDataTypeFromTS,
231
+ isValidPortType,
232
+ mapToTypeScript,
233
+ stripOptionalUndefined
234
+ } from "./chunks/chunk-E5WN7IGO.js";
235
+ import {
236
+ getNodeTemplate,
237
+ getWorkflowTemplate,
238
+ nodeTemplates,
239
+ toCamelCase,
240
+ toPascalCase,
241
+ workflowTemplates
242
+ } from "./chunks/chunk-NDSTGMKR.js";
243
+ import "./chunks/chunk-KMWCCOUJ.js";
244
+ import "./chunks/chunk-QYPORSLO.js";
245
+ import {
246
+ BRANCHING_STRATEGIES,
247
+ EXECUTION_STRATEGIES,
248
+ KNOWN_NODETYPE_TAGS,
249
+ KNOWN_WORKFLOW_TAGS,
250
+ MIN_NODE_MAJOR,
251
+ RESERVED_NODE_NAMES,
252
+ RESERVED_PORT_NAMES,
253
+ SCOPED_PORT_NAMES,
254
+ STANDARD_JSDOC_TAGS,
255
+ VALID_NODE_COLORS,
256
+ getKnownWorkflowTags,
257
+ isControlFlowPort,
258
+ isExecutePort,
259
+ isExitNode,
260
+ isFailurePort,
261
+ isPseudoNode,
262
+ isReservedNodeName,
263
+ isReservedPortName,
264
+ isScopedFailurePort,
265
+ isScopedMandatoryPort,
266
+ isScopedPort,
267
+ isScopedStartPort,
268
+ isScopedSuccessPort,
269
+ isSpecialNode,
270
+ isStartNode,
271
+ isSuccessPort
272
+ } from "./chunks/chunk-R4QGNK34.js";
273
+ import "./chunks/chunk-SEWDMQ6Q.js";
274
+
275
+ // src/validation/friendly-errors.ts
276
+ function extractQuoted(message) {
277
+ const matches = message.match(/"([^"]+)"/g);
278
+ return matches ? matches.map((m) => m.replace(/"/g, "")) : [];
279
+ }
280
+ function extractTypes(message) {
281
+ const structuralMatch = message.match(/from (.+?) \(\w+\) to (.+?) \(\w+\)/);
282
+ if (structuralMatch) return { source: structuralMatch[1], target: structuralMatch[2] };
283
+ const fromToMatch = message.match(/from (\w+) to (\w+)/i);
284
+ if (fromToMatch) return { source: fromToMatch[1], target: fromToMatch[2] };
285
+ const structuralParenMatch = message.match(/\((.+?) \(\w+\)\) .* \((.+?) \(\w+\)\)/);
286
+ if (structuralParenMatch) return { source: structuralParenMatch[1], target: structuralParenMatch[2] };
287
+ const parenMatch = message.match(/\((\w+)\) .* \((\w+)\)/);
288
+ if (parenMatch) return { source: parenMatch[1], target: parenMatch[2] };
289
+ return null;
290
+ }
291
+ function buildCoerceSuggestion(message, targetType) {
292
+ const coerceType = COERCE_TYPE_FOR_DATA_TYPE[targetType.toUpperCase()] || targetType.toLowerCase();
293
+ if (!["string", "number", "boolean", "json", "object"].includes(coerceType)) return null;
294
+ const route = message.match(CONNECTION_ROUTE);
295
+ const portRefs = route ? [route[1], route[2]] : extractQuoted(message).filter((q) => PORT_REF.test(q));
296
+ if (portRefs.length < 2) return null;
297
+ return `@connect ${portRefs[0]} -> ${portRefs[1]} as ${coerceType}`;
298
+ }
299
+ var PORT_REF = /^[\w]+\.[\w]+$/;
300
+ var CONNECTION_ROUTE = /([\w$]+\.[\w$]+)(?: \((?:[^()]|\([^()]*\))*\))? → ([\w$]+\.[\w$]+)/;
301
+ function extractCyclePath(message) {
302
+ const match = message.match(/:\s*(.+ -> .+)/);
303
+ return match ? match[1] : null;
304
+ }
305
+ var errorMappers = {
306
+ MISSING_WORKFLOW_NAME(error) {
307
+ return {
308
+ title: "Missing Workflow Name",
309
+ explanation: "The workflow annotation is missing or has no name. Every workflow needs a name in the @flowWeaver workflow block.",
310
+ fix: "Add @flowWeaver workflow to the JSDoc block above your exported workflow function.",
311
+ code: error.code
312
+ };
313
+ },
314
+ MISSING_FUNCTION_NAME(error) {
315
+ return {
316
+ title: "Missing Function Name",
317
+ explanation: "The compiler found a @flowWeaver workflow annotation but the function is anonymous or not exported.",
318
+ fix: "Make sure your workflow is declared as `export function myWorkflowName(...)`, not anonymous or unexported.",
319
+ code: error.code
320
+ };
321
+ },
322
+ MISSING_REQUIRED_INPUT(error) {
323
+ const quoted = extractQuoted(error.message);
324
+ const nodeName = quoted[0] || error.node || "unknown";
325
+ const portName = quoted[1] || "unknown";
326
+ return {
327
+ title: "Missing Required Input",
328
+ explanation: `Node '${nodeName}' needs a value for '${portName}' but nothing is connected to it.`,
329
+ fix: `Connect an output port from another node to '${portName}' on '${nodeName}', or mark the port as optional with @input [${portName}].`,
330
+ code: error.code
331
+ };
332
+ },
333
+ STEP_PORT_TYPE_MISMATCH(error) {
334
+ const stepToData = error.message.match(
335
+ /^STEP port "([^"]+)" on node "([^"]+)" cannot connect to non-STEP port "([^"]+)"(?: \([^)]*\))? on node "([^"]+)"/
336
+ );
337
+ const dataToStep = error.message.match(
338
+ /^Non-STEP port "([^"]+)"(?: \([^)]*\))? on node "([^"]+)" cannot connect to STEP port "([^"]+)" on node "([^"]+)"/
339
+ );
340
+ const fix = 'STEP ports carry control flow signals (like "go next"), not data. Connect data ports to data ports and STEP ports to STEP ports.';
341
+ if (stepToData) {
342
+ const [, fromPort, fromNode, toPort, toNode] = stepToData;
343
+ return {
344
+ title: "Wrong Port Type",
345
+ explanation: `'${fromNode}.${fromPort}' is a STEP port: it carries a control signal, but '${toNode}.${toPort}' is a data port. Connect '${fromNode}.${fromPort}' to a STEP input such as '${toNode}.execute'.`,
346
+ fix,
347
+ code: error.code
348
+ };
349
+ }
350
+ if (dataToStep) {
351
+ const [, fromPort, fromNode, toPort, toNode] = dataToStep;
352
+ return {
353
+ title: "Wrong Port Type",
354
+ explanation: `'${toNode}.${toPort}' is a STEP port: it expects a control signal, but '${fromNode}.${fromPort}' carries data. Connect '${toNode}.${toPort}' to a STEP output such as '${fromNode}.onSuccess'.`,
355
+ fix,
356
+ code: error.code
357
+ };
358
+ }
359
+ const quoted = extractQuoted(error.message);
360
+ const portName = quoted[0] || "unknown";
361
+ return {
362
+ title: "Wrong Port Type",
363
+ explanation: `Port '${portName}' mixes a STEP (control flow) port with a data port.`,
364
+ fix,
365
+ code: error.code
366
+ };
367
+ },
368
+ UNKNOWN_NODE_TYPE(error) {
369
+ const quoted = extractQuoted(error.message);
370
+ const nodeTypeName = quoted[1] || quoted[0] || "unknown";
371
+ return {
372
+ title: "Unknown Node Type",
373
+ explanation: `Node type '${nodeTypeName}' doesn't exist. Did you forget to add @flowWeaver nodeType above the function?`,
374
+ fix: `Add /** @flowWeaver nodeType */ as a JSDoc comment above the function '${nodeTypeName}', or check that the function name is spelled correctly.`,
375
+ code: error.code
376
+ };
377
+ },
378
+ UNKNOWN_SOURCE_NODE(error) {
379
+ const quoted = extractQuoted(error.message);
380
+ const nodeName = quoted[0] || error.node || "unknown";
381
+ return {
382
+ title: "Missing Source Node",
383
+ explanation: `Connection references node '${nodeName}' which doesn't exist in this workflow.`,
384
+ fix: `Add a @node annotation for '${nodeName}' in the workflow JSDoc, or fix the spelling in the @connect annotation.`,
385
+ code: error.code
386
+ };
387
+ },
388
+ UNKNOWN_TARGET_NODE(error) {
389
+ const quoted = extractQuoted(error.message);
390
+ const nodeName = quoted[0] || error.node || "unknown";
391
+ return {
392
+ title: "Missing Target Node",
393
+ explanation: `Connection references node '${nodeName}' which doesn't exist in this workflow.`,
394
+ fix: `Add a @node annotation for '${nodeName}' in the workflow JSDoc, or fix the spelling in the @connect annotation.`,
395
+ code: error.code
396
+ };
397
+ },
398
+ UNKNOWN_SOURCE_PORT(error) {
399
+ const known = error.message.match(/^(?:Node "([^"]+)"|(Start) node) does not have output port "([^"]+)"/);
400
+ const quoted = extractQuoted(error.message);
401
+ const displayNode = known ? known[1] ?? known[2] : error.node || quoted[0] || "unknown";
402
+ const displayPort = known ? known[3] : quoted[1] || quoted[0] || "unknown";
403
+ const didYouMean = error.message.match(/Did you mean "([^"]+)"/)?.[1];
404
+ const hint = didYouMean ? ` Did you mean '${didYouMean}'?` : "";
405
+ const fix = displayNode === "Start" ? `Add '@param ${displayPort}' to the workflow JSDoc and to its params object, or fix the port name in the @connect annotation.` : `Add @output ${displayPort} to the node type's JSDoc, or check the port name in the @connect annotation.`;
406
+ return {
407
+ title: "Unknown Output Port",
408
+ explanation: `Port '${displayPort}' doesn't exist on node '${displayNode}'.${hint} Check the spelling or add the port to the node type.`,
409
+ fix,
410
+ code: error.code
411
+ };
412
+ },
413
+ UNKNOWN_TARGET_PORT(error) {
414
+ const known = error.message.match(/^(?:Node "([^"]+)"|(Exit) node) does not have input port "([^"]+)"/);
415
+ const quoted = extractQuoted(error.message);
416
+ const displayNode = known ? known[1] ?? known[2] : error.node || "unknown";
417
+ const displayPort = known ? known[3] : quoted[0] || "unknown";
418
+ const didYouMean = error.message.match(/Did you mean "([^"]+)"/)?.[1];
419
+ const hint = didYouMean ? ` Did you mean '${didYouMean}'?` : "";
420
+ const fix = displayNode === "Exit" ? `Add '@returns ${displayPort}' to the workflow JSDoc and to its return type, or fix the port name in the @connect annotation.` : `Add @input ${displayPort} to the node type's JSDoc, or check the port name in the @connect annotation.`;
421
+ return {
422
+ title: "Unknown Input Port",
423
+ explanation: `Port '${displayPort}' doesn't exist on node '${displayNode}'.${hint} Check the spelling or add the port to the node type.`,
424
+ fix,
425
+ code: error.code
426
+ };
427
+ },
428
+ TYPE_MISMATCH(error) {
429
+ const types = extractTypes(error.message);
430
+ const source = types?.source || "unknown";
431
+ const target = types?.target || "unknown";
432
+ const coerceSuggestion = buildCoerceSuggestion(error.message, target);
433
+ return {
434
+ title: "Type Mismatch",
435
+ explanation: `Type mismatch: you're connecting a ${source} to a ${target}. The value will be automatically converted, but this might cause unexpected behavior.`,
436
+ fix: coerceSuggestion ? `Use \`${coerceSuggestion}\` for explicit coercion, change one of the port types, or use @strictTypes to turn this into an error.` : `Add \`as <type>\` to the @connect annotation (e.g. \`as string\`), change one of the port types, or use @strictTypes to turn this into an error.`,
437
+ code: error.code
438
+ };
439
+ },
440
+ CYCLE_DETECTED(error) {
441
+ const cyclePath = extractCyclePath(error.message);
442
+ const nodeName = error.node || "unknown";
443
+ return {
444
+ title: "Circular Dependency Found",
445
+ explanation: `Circular dependency found. Node '${nodeName}' eventually connects back to itself, creating an infinite loop.${cyclePath ? ` Path: ${cyclePath}` : ""}`,
446
+ // A durable-gate workflow may contain a scoped loop, but only a bounded
447
+ // one; point at the scope node and its limit rather than banning it.
448
+ fix: "Break the cycle by removing one of the connections in the loop, or use a scoped node (like forEach) for intentional iteration. Inside a workflow that pauses at a durable gate, that scope must be bounded: give it a max/limit/attempts/iterations input.",
449
+ code: error.code
450
+ };
451
+ },
452
+ UNUSED_NODE(error) {
453
+ const quoted = extractQuoted(error.message);
454
+ const nodeName = quoted[0] || error.node || "unknown";
455
+ return {
456
+ title: "Unused Node",
457
+ explanation: `Node '${nodeName}' is defined but never used in the workflow. Consider removing it or connecting it.`,
458
+ fix: `Connect '${nodeName}' to other nodes with @connect, or remove the @node annotation if it's no longer needed.`,
459
+ code: error.code
460
+ };
461
+ },
462
+ NO_START_CONNECTIONS(error) {
463
+ return {
464
+ title: "No Start Connections",
465
+ explanation: "Your workflow has no connections from the Start node. Nothing will execute.",
466
+ fix: "Add a @connect Start.execute -> yourNode.execute annotation to kick off the workflow.",
467
+ code: error.code
468
+ };
469
+ },
470
+ NO_EXIT_CONNECTIONS(error) {
471
+ return {
472
+ title: "No Exit Connections",
473
+ explanation: "Your workflow has no connections to the Exit node. The workflow won't return any results.",
474
+ fix: "Add a @connect yourNode.onSuccess -> Exit.onSuccess annotation so the workflow produces output.",
475
+ code: error.code
476
+ };
477
+ },
478
+ DUPLICATE_NODE_NAME(error) {
479
+ const quoted = extractQuoted(error.message);
480
+ const nodeName = quoted[0] || error.node || "unknown";
481
+ return {
482
+ title: "Duplicate Node Name",
483
+ explanation: `Two node types have the same name '${nodeName}'. Each node type needs a unique function name.`,
484
+ fix: `Rename one of the '${nodeName}' functions to give it a unique name.`,
485
+ code: error.code
486
+ };
487
+ },
488
+ RESERVED_NODE_NAME(error) {
489
+ const quoted = extractQuoted(error.message);
490
+ const nodeName = quoted[0] || error.node || "unknown";
491
+ return {
492
+ title: "Reserved Name Used",
493
+ explanation: `'Start' and 'Exit' are reserved names. Choose a different name for your node type.`,
494
+ fix: `Rename '${nodeName}' to something other than 'Start' or 'Exit'. These names are used internally by the workflow engine.`,
495
+ code: error.code
496
+ };
497
+ },
498
+ RESERVED_INSTANCE_ID(error) {
499
+ const quoted = extractQuoted(error.message);
500
+ const instanceId = quoted[0] || error.node || "unknown";
501
+ return {
502
+ title: "Reserved Instance ID",
503
+ explanation: `Instance ID '${instanceId}' is reserved. 'Start' and 'Exit' are built-in nodes in every workflow.`,
504
+ fix: `Choose a different instance ID, like 'startHandler' or 'exitProcessor'.`,
505
+ code: error.code
506
+ };
507
+ },
508
+ INFERRED_NODE_TYPE(error) {
509
+ const quoted = extractQuoted(error.message);
510
+ const nodeTypeName = quoted[0] || error.node || "unknown";
511
+ return {
512
+ title: "Inferred Node Type",
513
+ explanation: `Node type '${nodeTypeName}' was auto-inferred from the function signature. It works, but you lose explicit control over port names, types, and ordering.`,
514
+ fix: `Add /** @flowWeaver nodeType @expression */ above the function for explicit port control.`,
515
+ code: error.code
516
+ };
517
+ },
518
+ INVALID_SCOPE_NAME(error) {
519
+ const quoted = extractQuoted(error.message);
520
+ const portName = quoted[0] || "unknown";
521
+ const nodeName = quoted[1] || error.node || "unknown";
522
+ const scopeName = quoted[2] || "unknown";
523
+ return {
524
+ title: "Invalid Scope Name",
525
+ explanation: `Port '${portName}' on node type '${nodeName}' uses scope '${scopeName}', which is not a JavaScript identifier. Scope names become identifiers in the generated code.`,
526
+ fix: `Rename the scope in every 'scope:${scopeName}' modifier and in the matching callback parameter to letters, digits, '_' or '$', not starting with a digit.`,
527
+ code: error.code
528
+ };
529
+ },
530
+ EXPRESSION_SYNTAX(error) {
531
+ const quoted = extractQuoted(error.message);
532
+ const portName = quoted[0] || "unknown";
533
+ const where = quoted[1] || error.node || "unknown";
534
+ return {
535
+ title: "Expression Is Not JavaScript",
536
+ explanation: `The expression for '${portName}' on '${where}' does not parse as JavaScript. ${error.message.replace(/^.*?is not a JavaScript expression: /, "")}`,
537
+ fix: `An [expr:] value is JavaScript. Text needs quotes inside the attribute (timeout="'24h'"). An upstream port is read as node.port (agentId="prep.agentId"). See advanced-annotations.`,
538
+ code: error.code
539
+ };
540
+ },
541
+ TYPE_INCOMPATIBLE(error) {
542
+ const types = extractTypes(error.message);
543
+ const source = types?.source || "unknown";
544
+ const target = types?.target || "unknown";
545
+ const coerceSuggestion = buildCoerceSuggestion(error.message, target);
546
+ return {
547
+ title: "Type Incompatible",
548
+ explanation: `Type mismatch: ${source} to ${target}. With @strictTypes enabled, this is an error instead of a warning.`,
549
+ fix: coerceSuggestion ? `Use \`${coerceSuggestion}\` for explicit coercion, change one of the port types, or remove @strictTypes to allow implicit coercions.` : `Add \`as <type>\` to the @connect annotation (e.g. \`as number\`), change one of the port types, or remove @strictTypes to allow implicit coercions.`,
550
+ code: error.code
551
+ };
552
+ },
553
+ UNUSUAL_TYPE_COERCION(error) {
554
+ const types = extractTypes(error.message);
555
+ const source = types?.source || "unknown";
556
+ const target = types?.target || "unknown";
557
+ const coerceSuggestion = buildCoerceSuggestion(error.message, target);
558
+ return {
559
+ title: "Unusual Type Coercion",
560
+ explanation: `Converting ${source} to ${target} is technically valid but semantically unusual and may produce unexpected behavior.`,
561
+ fix: coerceSuggestion ? `If intentional, use \`${coerceSuggestion}\` for explicit coercion, or use @strictTypes to enforce type safety.` : `If intentional, add \`as <type>\` to the @connect annotation, or use @strictTypes to enforce type safety.`,
562
+ code: error.code
563
+ };
564
+ },
565
+ MULTIPLE_CONNECTIONS_TO_INPUT(error) {
566
+ const quoted = extractQuoted(error.message);
567
+ const portName = quoted[0] || "unknown";
568
+ const nodeName = quoted[1] || error.node || "unknown";
569
+ return {
570
+ title: "Multiple Input Connections",
571
+ explanation: `Input port '${portName}' on node '${nodeName}' has multiple connections. A data input takes one connection unless the port declares how to combine several.`,
572
+ fix: `Remove extra connections to '${nodeName}.${portName}', declare a merge strategy on the port with '@input ${portName} [mergeStrategy:FIRST|LAST|COLLECT|MERGE|CONCAT]' on the node type, or add a merge node before it.`,
573
+ code: error.code
574
+ };
575
+ },
576
+ SCOPE_MISSING_REQUIRED_INPUT(error) {
577
+ const quoted = extractQuoted(error.message);
578
+ const childId = quoted[0] || error.node || "unknown";
579
+ const portName = quoted[1] || "unknown";
580
+ const scopeName = quoted[2] || "unknown";
581
+ const parentId = quoted[3] || "unknown";
582
+ return {
583
+ title: "Scope Child Missing Input",
584
+ explanation: `Child node '${childId}' inside scope '${scopeName}' of '${parentId}' has a required input '${portName}' with no connection.`,
585
+ fix: `Connect the parent's scoped output to '${childId}.${portName}' within the scope, or mark the port as optional.`,
586
+ code: error.code
587
+ };
588
+ },
589
+ SCOPE_UNUSED_INPUT(error) {
590
+ const quoted = extractQuoted(error.message);
591
+ const portName = quoted[0] || "unknown";
592
+ const parentId = quoted[1] || error.node || "unknown";
593
+ const scopeName = quoted[2] || "unknown";
594
+ return {
595
+ title: "Scope Input Unused",
596
+ explanation: `Scoped input '${portName}' on '${parentId}' expects data back from inner nodes, but nothing connects to it within scope '${scopeName}'.`,
597
+ fix: `Connect an inner node's output to '${parentId}.${portName}:${scopeName}' to return data from the scope.`,
598
+ code: error.code
599
+ };
600
+ },
601
+ SCOPE_WRONG_SCOPE_NAME(error) {
602
+ const quoted = extractQuoted(error.message);
603
+ const portRef2 = quoted[0] || "unknown";
604
+ const nodeName = quoted[2] || "unknown";
605
+ return {
606
+ title: "Invalid Scope Qualifier",
607
+ explanation: `A connection at '${portRef2}' uses an invalid scope name. Node '${nodeName}' doesn't define that scope.`,
608
+ fix: `Check the scope names defined on the node type. Fix the :scopeName qualifier in the @connect annotation to match an existing scope.`,
609
+ code: error.code
610
+ };
611
+ },
612
+ SCOPE_CONNECTION_OUTSIDE(error) {
613
+ return {
614
+ title: "Scope Connection Leak",
615
+ explanation: `A scoped connection references a node that is outside the scope boundary. Scoped connections must stay within the scope.`,
616
+ fix: `Move the target node inside the scope (declare it with the scope parent in @node), or remove the scope qualifier from the connection.`,
617
+ code: error.code
618
+ };
619
+ },
620
+ SCOPE_PORT_TYPE_MISMATCH(error) {
621
+ const quoted = extractQuoted(error.message);
622
+ return {
623
+ title: "Scope Port Type Mismatch",
624
+ explanation: `Type mismatch within scope '${quoted[0] || "unknown"}'. The parent's scoped port and the child's port have incompatible types.`,
625
+ fix: `Change one of the port types to match, or add a transformation node inside the scope.`,
626
+ code: error.code
627
+ };
628
+ },
629
+ SCOPE_UNKNOWN_PORT(error) {
630
+ const quoted = extractQuoted(error.message);
631
+ const portName = quoted[0] || "unknown";
632
+ return {
633
+ title: "Unknown Scoped Port",
634
+ explanation: `Port '${portName}' is referenced in a scoped connection but doesn't exist as a scoped port on that node, or belongs to a different scope.`,
635
+ fix: `Add the port as a scoped port with @output ${portName} scope:scopeName, or fix the port name in the @connect annotation.`,
636
+ code: error.code
637
+ };
638
+ },
639
+ SCOPE_ORPHANED_CHILD(error) {
640
+ const quoted = extractQuoted(error.message);
641
+ const childId = quoted[0] || error.node || "unknown";
642
+ const scopeName = quoted[1] || "unknown";
643
+ const parentId = quoted[2] || "unknown";
644
+ return {
645
+ title: "Orphaned Scope Child",
646
+ explanation: `Node '${childId}' is declared inside scope '${scopeName}' of '${parentId}' but has no scoped connections. It won't receive data from or return data to the scope.`,
647
+ fix: `Connect the parent's scoped output ports to '${childId}' inputs, and connect '${childId}' outputs back to the parent's scoped input ports.`,
648
+ code: error.code
649
+ };
650
+ },
651
+ OBJECT_TYPE_MISMATCH(error) {
652
+ const quoted = extractQuoted(error.message);
653
+ const sourceType = quoted[0] || "unknown";
654
+ const targetType = quoted[1] || "unknown";
655
+ return {
656
+ title: "Object Shape Mismatch",
657
+ explanation: `The object shapes don't match. The source provides '${sourceType}' but the target expects '${targetType}'.`,
658
+ fix: "Verify the object structures are compatible. Add a transformation node if you need to reshape the data.",
659
+ code: error.code
660
+ };
661
+ },
662
+ MUTABLE_NODE_TYPE_BINDING(error) {
663
+ const quoted = extractQuoted(error.message);
664
+ const nodeName = quoted[0] || error.node || "unknown";
665
+ const bindingKind = quoted[1] || "let";
666
+ return {
667
+ title: "Mutable Node Binding",
668
+ explanation: `Node type '${nodeName}' is declared with '${bindingKind}' which allows accidental reassignment at runtime.`,
669
+ fix: `Use 'function ${nodeName}(...)' or 'const ${nodeName} = ...' instead. Node types must be immutable.`,
670
+ code: error.code
671
+ };
672
+ },
673
+ UNUSED_OUTPUT_PORT(error) {
674
+ const quoted = extractQuoted(error.message);
675
+ const portName = quoted[0] || "unknown";
676
+ const nodeName = quoted[1] || error.node || "unknown";
677
+ return {
678
+ title: "Unused Output Port",
679
+ explanation: `Output port '${portName}' on node '${nodeName}' is not connected to anything. Its data will be discarded.`,
680
+ fix: `Connect '${nodeName}.${portName}' to another node's input, or remove the @output annotation if it's not needed.`,
681
+ code: error.code
682
+ };
683
+ },
684
+ UNREACHABLE_EXIT_PORT(error) {
685
+ const quoted = extractQuoted(error.message);
686
+ const portName = quoted[0] || "unknown";
687
+ return {
688
+ title: "Unreachable Exit Port",
689
+ explanation: `Exit port '${portName}' has no incoming data. The workflow will return undefined for this output.`,
690
+ fix: `Add a @connect annotation to send data to Exit.${portName}, or remove the @returns ${portName} annotation.`,
691
+ code: error.code
692
+ };
693
+ },
694
+ HTTP_PARAM_UNKNOWN(error) {
695
+ const quoted = extractQuoted(error.message);
696
+ const param = (quoted[0] || ":param").replace(/^:/, "");
697
+ return {
698
+ title: "Route Parameter Is Not a Workflow Parameter",
699
+ explanation: `The @http route has a ':${param}' segment, but the workflow has no @param named '${param}', so there is nothing for the path to bind to.`,
700
+ fix: `Name a segment after one of the workflow's @param entries, or add '@param ${param}' to the workflow and connect it.`,
701
+ code: error.code
702
+ };
703
+ },
704
+ MULTIPLE_EXIT_CONNECTIONS(error) {
705
+ const quoted = extractQuoted(error.message);
706
+ const portName = quoted[0] || "unknown";
707
+ return {
708
+ title: "Multiple Exit Connections",
709
+ explanation: `Exit port '${portName}' receives data from multiple nodes. Only one value will be used, which may lead to unpredictable results.`,
710
+ fix: `Use separate Exit ports for each source, or add a merge node to combine the values before connecting to Exit.${portName}.`,
711
+ code: error.code
712
+ };
713
+ },
714
+ ANNOTATION_SIGNATURE_MISMATCH(error) {
715
+ const quoted = extractQuoted(error.message);
716
+ const portName = quoted[0] || "unknown";
717
+ const nodeName = quoted[1] || error.node || "unknown";
718
+ return {
719
+ title: "Optional Port Mismatch",
720
+ explanation: `Port '${portName}' on '${nodeName}' is optional in the TypeScript signature but required in the annotation.`,
721
+ fix: `Use @input [${portName}] (with brackets) to mark the port as optional in the annotation, matching the TypeScript signature.`,
722
+ code: error.code
723
+ };
724
+ },
725
+ ANNOTATION_SIGNATURE_TYPE_MISMATCH(error) {
726
+ const quoted = extractQuoted(error.message);
727
+ const portName = quoted[0] || "unknown";
728
+ const nodeName = quoted[1] || error.node || "unknown";
729
+ const annotationType = quoted[2] || "unknown";
730
+ const sigType = quoted[3] || "unknown";
731
+ return {
732
+ title: "Annotation Type Mismatch",
733
+ explanation: `Port '${portName}' on '${nodeName}' has type '${annotationType}' in the annotation but '${sigType}' in the TypeScript signature.`,
734
+ fix: `Update the @input/@output annotation type to match the function signature, or change the signature type. The annotation and TypeScript types should agree.`,
735
+ code: error.code
736
+ };
737
+ },
738
+ // ── Agent-specific rules ──────────────────────────────────────────────
739
+ AGENT_LLM_MISSING_ERROR_HANDLER(error) {
740
+ const nodeName = error.node || "unknown";
741
+ return {
742
+ title: "LLM Missing Error Handler",
743
+ explanation: `LLM node '${nodeName}' has no error handler. LLM calls can fail due to rate limits, timeouts, or model errors, and failures will be silently swallowed.`,
744
+ fix: `Connect ${nodeName}.onFailure to a retry node, fallback handler, or Exit.onFailure to handle LLM errors gracefully.`,
745
+ code: error.code
746
+ };
747
+ },
748
+ AGENT_UNGUARDED_TOOL_EXECUTOR(error) {
749
+ const nodeName = error.node || "unknown";
750
+ return {
751
+ title: "Unguarded Tool Executor",
752
+ explanation: `Tool executor '${nodeName}' has no human approval gate upstream. If it performs destructive actions (writes, deletes, sends), this could be unsafe.`,
753
+ fix: `Add a human-approval node before '${nodeName}' to gate destructive tool calls. If this tool is read-only, you can safely ignore this warning.`,
754
+ code: error.code
755
+ };
756
+ },
757
+ AGENT_MISSING_MEMORY_IN_LOOP(error) {
758
+ const quoted = extractQuoted(error.message);
759
+ const scopeName = quoted[0] || "the loop";
760
+ return {
761
+ title: "No Memory in Agent Loop",
762
+ explanation: `Loop scope '${scopeName}' contains an LLM node but no conversation memory. The LLM will lose context between loop iterations.`,
763
+ fix: `Add a conversation-memory node inside the loop to persist messages between iterations, so the LLM retains context across loop cycles.`,
764
+ code: error.code
765
+ };
766
+ },
767
+ AGENT_LLM_NO_FALLBACK(error) {
768
+ const nodeName = error.node || "unknown";
769
+ return {
770
+ title: "LLM Failure Goes to Exit",
771
+ explanation: `LLM node '${nodeName}' routes failures directly to Exit, meaning any LLM error immediately aborts the entire workflow.`,
772
+ fix: `Add a retry node or fallback LLM provider between ${nodeName}.onFailure and Exit to improve resilience against transient LLM failures.`,
773
+ code: error.code
774
+ };
775
+ },
776
+ AGENT_TOOL_NO_OUTPUT_HANDLING(error) {
777
+ const nodeName = error.node || "unknown";
778
+ return {
779
+ title: "Tool Results Discarded",
780
+ explanation: `Tool executor '${nodeName}' computes results but none of its data output ports are connected. Tool results are being thrown away.`,
781
+ fix: `Connect the data output ports of '${nodeName}' (e.g., result, resultMessage) to downstream nodes, or remove this tool executor if its results aren't needed.`,
782
+ code: error.code
783
+ };
784
+ },
785
+ // ── Design quality rules ─────────────────────────────────────────────
786
+ DESIGN_ASYNC_NO_ERROR_PATH(error) {
787
+ const nodeName = error.node || "unknown";
788
+ return {
789
+ title: "Async Node Missing Error Path",
790
+ explanation: `Async node '${nodeName}' has no failure handling. Async operations (network calls, file I/O, AI calls) can fail. A normal-mode node's onFailure is silently lost. An @expression node's throw aborts the run with the error.`,
791
+ fix: `For a normal-mode node, connect ${nodeName}.onFailure to an error handler, retry node, or Exit.onFailure. For an @expression node, wiring onFailure does nothing about a throw: to route the failure, write the node in normal mode and return onFailure, or suppress this warning if aborting is intended.`,
792
+ code: error.code
793
+ };
794
+ },
795
+ DESIGN_SCOPE_NO_FAILURE_EXIT(error) {
796
+ const nodeName = error.node || "unknown";
797
+ return {
798
+ title: "Scope Missing Failure Exit",
799
+ explanation: `Scope node '${nodeName}' has no failure path out. If all iterations fail, execution stalls with no error surfaced upstream.`,
800
+ fix: `Connect ${nodeName}.onFailure to an error handler or Exit.onFailure so scope failures propagate.`,
801
+ code: error.code
802
+ };
803
+ },
804
+ DESIGN_UNBOUNDED_RETRY(error) {
805
+ const nodeName = error.node || "unknown";
806
+ return {
807
+ title: "Unbounded Retry Loop",
808
+ explanation: `Scope node '${nodeName}' looks like a retry loop but has no visible attempt limit input. This could loop indefinitely on persistent failures.`,
809
+ fix: `Add a maxAttempts or retries input port to the node type, or use a counter to break out of the loop after N attempts.`,
810
+ code: error.code
811
+ };
812
+ },
813
+ DESIGN_FANOUT_NO_FANIN(error) {
814
+ const nodeName = error.node || "unknown";
815
+ return {
816
+ title: "Fan-Out Without Fan-In",
817
+ explanation: `Node '${nodeName}' fans out to multiple step targets, but those paths never merge back to a shared downstream node. Data from parallel branches may be lost.`,
818
+ fix: `Add a merge node downstream where the parallel branches converge, or wire them to a shared node before Exit.`,
819
+ code: error.code
820
+ };
821
+ },
822
+ DESIGN_EXIT_DATA_UNREACHABLE(error) {
823
+ const quoted = extractQuoted(error.message);
824
+ const portName = quoted[0] || "unknown";
825
+ return {
826
+ title: "Exit Data Unreachable",
827
+ explanation: `Exit port '${portName}' has no incoming data connection and no pull-execution node provides it. The workflow will return undefined for this output.`,
828
+ fix: `Connect a node's data output to Exit.${portName}, or add a pull-execution node that computes this value on demand.`,
829
+ code: error.code
830
+ };
831
+ },
832
+ DESIGN_PULL_CANDIDATE(error) {
833
+ const nodeName = error.node || "unknown";
834
+ return {
835
+ title: "Pull Execution Candidate",
836
+ explanation: `Node '${nodeName}' has no incoming step connection but its data outputs are consumed downstream. Without a step trigger or pullExecution, this node may never execute.`,
837
+ fix: `Add [pullExecution: execute] to the @node annotation so the node runs on demand when downstream nodes read its output.`,
838
+ code: error.code
839
+ };
840
+ },
841
+ DESIGN_PULL_UNUSED(error) {
842
+ const nodeName = error.node || "unknown";
843
+ return {
844
+ title: "Unused Pull Execution",
845
+ explanation: `Node '${nodeName}' is marked with pullExecution but no downstream node reads its data output. The node will never execute since pull execution requires a consumer.`,
846
+ fix: `Connect a data output from '${nodeName}' to a downstream node, or remove the pullExecution config if the node isn't needed.`,
847
+ code: error.code
848
+ };
849
+ },
850
+ DURABLE_CLOSURE_INVALID(error) {
851
+ const message = error.message;
852
+ let fix = "Keep each gate/effect in one branch region reading only from its immediate predecessor. Thread shared values through the chain rather than wiring them around a gate. See the durable-gates topic.";
853
+ if (message.includes("needs a visible attempt limit")) {
854
+ fix = "A loop inside a durable workflow is allowed once it is bounded: give the scope node a max/limit/attempts/iterations input (like the maxSteps on the ReAct agent) so a resumed run has a finite, inspectable iteration space. The iteration ordinal is reconstructed from committed state on resume, so the bound is all that is missing. See the durable-gates topic.";
855
+ } else if (message.includes("do not support pull or lazy execution")) {
856
+ fix = "Remove pullExecution from the named nodes, or give them a step connection so they run in order. A yielded continuation needs every predecessor already compiled into it. See the durable-gates topic.";
857
+ } else if (message.includes("Durable classification errors")) {
858
+ fix = "Give every reachable node exactly one of @durablePure, @durableGate or @durableEffect. An @expression node is pure automatically; a normal-mode node that only computes needs @durablePure. See the durable-gates topic.";
859
+ } else if (message.includes("effect contract")) {
860
+ fix = "A @durableEffect node takes an operationKey parameter and returns { result, receipt }, so the engine can replay the receipt instead of running it twice. See the durable-gates topic.";
861
+ }
862
+ return { title: "Invalid Durable Closure", explanation: message, fix, code: error.code };
863
+ },
864
+ STUB_NODE(error) {
865
+ const nodeName = error.node || "unknown";
866
+ const typeMatch = error.message.match(/stub type "([^"]+)"/);
867
+ const typeName = typeMatch?.[1] || "unknown";
868
+ return {
869
+ title: "Stub Node",
870
+ explanation: `Node '${nodeName}' uses node type '${typeName}', which has no implementation yet. The workflow cannot run until it is implemented.`,
871
+ fix: `Implement '${typeName}' as a @flowWeaver nodeType function, or validate with draft mode (fw_validate draft: true) to check structure while it is still a stub.`,
872
+ code: error.code
873
+ };
874
+ },
875
+ CROSS_SCOPE_CONNECTION(error) {
876
+ const ends = error.message.match(/from "([^"]+)" \(in ([^)]+)\) to "([^"]+)" \(in ([^)]+)\)/);
877
+ const from = ends?.[1] || "unknown";
878
+ const fromCtx = ends?.[2] || "one scope";
879
+ const to = ends?.[3] || "unknown";
880
+ const toCtx = ends?.[4] || "another scope";
881
+ return {
882
+ title: "Cross-Scope Connection",
883
+ explanation: `Connection '${from}' \u2192 '${to}' links a node in ${fromCtx} to a node in ${toCtx}. Nodes in different scopes cannot connect directly. Data crosses a scope boundary only through the scope owner's scoped ports.`,
884
+ fix: `Route the value through the scope owner: connect '${from}' to one of the owner's scoped output ports, and read it inside the scope from there. Or move both nodes into the same scope.`,
885
+ code: error.code
886
+ };
887
+ },
888
+ SUPPRESS_UNKNOWN_CODE(error) {
889
+ const nodeName = error.node || "unknown";
890
+ const codeMatch = error.message.match(/suppresses '([^']+)'/);
891
+ const bad = codeMatch?.[1] || "unknown";
892
+ const corrected = bad.includes(",") ? `[suppress: ${bad.split(",").map((c) => `"${c.trim()}"`).join(", ")}]` : `[suppress: "<CODE>"]`;
893
+ return {
894
+ title: "Unknown Suppress Code",
895
+ explanation: `Node '${nodeName}' lists '${bad}' in [suppress: ...], but that cannot be a validation code, so nothing is suppressed. Codes are separate string literals, not one comma-joined string.`,
896
+ fix: `Write each code as its own string: ${corrected}.`,
897
+ code: error.code
898
+ };
899
+ },
900
+ COERCE_TYPE_MISMATCH(error) {
901
+ const coerceMatch = error.message.match(/`as (\w+)`/);
902
+ const coerceType = coerceMatch?.[1] || "unknown";
903
+ const expectsMatch = error.message.match(/expects (\w+)/);
904
+ const expectedType = expectsMatch?.[1] || "unknown";
905
+ const suggestedType = COERCE_TYPE_FOR_DATA_TYPE[expectedType.toUpperCase()] || expectedType.toLowerCase();
906
+ return {
907
+ title: "Wrong Coercion Type",
908
+ explanation: `The \`as ${coerceType}\` coercion produces the wrong type for the target port. The target expects ${expectedType}.`,
909
+ fix: `Change \`as ${coerceType}\` to \`as ${suggestedType}\` in the @connect annotation.`,
910
+ code: error.code
911
+ };
912
+ },
913
+ REDUNDANT_COERCE(error) {
914
+ const coerceMatch = error.message.match(/`as (\w+)`/);
915
+ const coerceType = coerceMatch?.[1] || "unknown";
916
+ const bothMatch = error.message.match(/both (\w+)/);
917
+ const dataType = bothMatch?.[1] || "the same type";
918
+ return {
919
+ title: "Redundant Coercion",
920
+ explanation: `The \`as ${coerceType}\` coercion is unnecessary because both the source and target ports are already ${dataType}.`,
921
+ fix: `Remove \`as ${coerceType}\` from the @connect annotation. No coercion is needed.`,
922
+ code: error.code
923
+ };
924
+ },
925
+ COERCE_ON_FUNCTION_PORT(error) {
926
+ const coerceMatch = error.message.match(/`as (\w+)`/);
927
+ const coerceType = coerceMatch?.[1] || "unknown";
928
+ return {
929
+ title: "Coercion on Function Port",
930
+ explanation: `The \`as ${coerceType}\` coercion cannot be applied to FUNCTION ports. Function values are callable references and cannot be meaningfully converted to other types.`,
931
+ fix: `Remove \`as ${coerceType}\` from the @connect annotation. If you need to convert the function's return value, add a transformation node.`,
932
+ code: error.code
933
+ };
934
+ },
935
+ LOSSY_TYPE_COERCION(error) {
936
+ const types = extractTypes(error.message);
937
+ const source = types?.source || "unknown";
938
+ const target = types?.target || "unknown";
939
+ const coerceSuggestion = buildCoerceSuggestion(error.message, target);
940
+ return {
941
+ title: "Lossy Type Conversion",
942
+ explanation: `Converting ${source} to ${target} may lose data or produce unexpected results (e.g., NaN, truncation).`,
943
+ fix: coerceSuggestion ? `Use \`${coerceSuggestion}\` for explicit coercion, or use @strictTypes to enforce type safety.` : `Add \`as <type>\` to the @connect annotation for explicit conversion, or use @strictTypes to enforce type safety.`,
944
+ code: error.code
945
+ };
946
+ },
947
+ INVALID_EXIT_PORT_TYPE(error) {
948
+ const portName = error.message.match(/Exit port '([^']+)'/)?.[1] || extractQuoted(error.message)[0] || "onSuccess";
949
+ return {
950
+ title: "Invalid Exit Port Type",
951
+ explanation: `Exit port '${portName}' must be STEP type (control flow signal), but a different type was found. onSuccess and onFailure are control flow ports, not data ports.`,
952
+ fix: `Connect a STEP-type output (like onSuccess or onFailure) to Exit.${portName}. Don't connect data ports to control flow ports.`,
953
+ code: error.code
954
+ };
955
+ },
956
+ // ── Annotation validation rules ──────────────────────────────────────
957
+ DUPLICATE_INSTANCE_ID(error) {
958
+ const quoted = extractQuoted(error.message);
959
+ const instanceId = quoted[0] || error.node || "unknown";
960
+ return {
961
+ title: "Duplicate Instance ID",
962
+ explanation: `Two @node declarations use the same ID '${instanceId}'. Each node instance needs a unique ID within its workflow.`,
963
+ fix: `Rename one of the '${instanceId}' instances to give it a unique ID.`,
964
+ code: error.code
965
+ };
966
+ },
967
+ DUPLICATE_CONNECTION(error) {
968
+ return {
969
+ title: "Duplicate Connection",
970
+ explanation: `The same connection is declared twice. ${error.message}`,
971
+ fix: `Remove the duplicate @connect annotation.`,
972
+ code: error.code
973
+ };
974
+ },
975
+ INVALID_COLOR(error) {
976
+ const quoted = extractQuoted(error.message);
977
+ const color = quoted[1] || quoted[0] || "unknown";
978
+ return {
979
+ title: "Invalid Color",
980
+ explanation: `Color '${color}' is not a recognized node color. Check the spelling or use a valid color name.`,
981
+ fix: `Use one of the valid colors: blue, purple, cyan, orange, pink, green, red, yellow, teal.`,
982
+ code: error.code
983
+ };
984
+ },
985
+ INVALID_ICON(error) {
986
+ const quoted = extractQuoted(error.message);
987
+ const icon = quoted[1] || quoted[0] || "unknown";
988
+ return {
989
+ title: "Invalid Icon",
990
+ explanation: `Icon '${icon}' is not a Material Symbols name. Check the spelling.`,
991
+ fix: `Use a Material Symbols name (fonts.google.com/icons), in snake_case or camelCase: flag, database, swap_horiz, smart_toy.`,
992
+ code: error.code
993
+ };
994
+ },
995
+ INVALID_PORT_TYPE(error) {
996
+ const quoted = extractQuoted(error.message);
997
+ const portName = quoted[0] || "unknown";
998
+ const typeName = quoted[2] || quoted[1] || "unknown";
999
+ return {
1000
+ title: "Invalid Port Type",
1001
+ explanation: `Port '${portName}' has an unrecognized type '${typeName}'.`,
1002
+ fix: `Use a valid port type: STRING, NUMBER, BOOLEAN, ARRAY, OBJECT, FUNCTION, ANY, or STEP.`,
1003
+ code: error.code
1004
+ };
1005
+ },
1006
+ INVALID_PORT_CONFIG_REF(error) {
1007
+ const quoted = extractQuoted(error.message);
1008
+ const instanceId = quoted[0] || error.node || "unknown";
1009
+ const portName = quoted[1] || "unknown";
1010
+ return {
1011
+ title: "Invalid Port Config Reference",
1012
+ explanation: `Instance '${instanceId}' references port '${portName}' in a portOrder or portLabel annotation, but this port doesn't exist on the node type.`,
1013
+ fix: `Check the port name spelling, or remove the port configuration if the port was renamed or removed.`,
1014
+ code: error.code
1015
+ };
1016
+ },
1017
+ INVALID_EXECUTE_WHEN(error) {
1018
+ const quoted = extractQuoted(error.message);
1019
+ const value = quoted[1] || quoted[0] || "unknown";
1020
+ return {
1021
+ title: "Invalid Execution Strategy",
1022
+ explanation: `@executeWhen value '${value}' is not recognized.`,
1023
+ fix: `Use one of: CONJUNCTION (all inputs), DISJUNCTION (any input), or CUSTOM (custom logic).`,
1024
+ code: error.code
1025
+ };
1026
+ },
1027
+ SCOPE_EMPTY(error) {
1028
+ const quoted = extractQuoted(error.message);
1029
+ const scopeName = quoted[0] || "unknown";
1030
+ const nodeName = quoted[1] || error.node || "unknown";
1031
+ return {
1032
+ title: "Empty Scope",
1033
+ explanation: `Scope '${scopeName}' on node '${nodeName}' has no child nodes declared inside it. The scope won't iterate over anything.`,
1034
+ fix: `Add child nodes to the scope with @scope ${scopeName} [childId1, childId2], or remove the scope if it's not needed.`,
1035
+ code: error.code
1036
+ };
1037
+ },
1038
+ SCOPE_INCONSISTENT(error) {
1039
+ const quoted = extractQuoted(error.message);
1040
+ const instanceId = quoted[0] || error.node || "unknown";
1041
+ return {
1042
+ title: "Scope Conflict",
1043
+ explanation: `Instance '${instanceId}' is assigned to multiple scopes. A node can only belong to one scope at a time.`,
1044
+ fix: `Remove '${instanceId}' from one of the conflicting @scope declarations.`,
1045
+ code: error.code
1046
+ };
1047
+ }
1048
+ };
1049
+ function getFriendlyError(error) {
1050
+ const mapper = errorMappers[error.code];
1051
+ if (!mapper) return null;
1052
+ return mapper(error);
1053
+ }
1054
+ function formatFriendlyDiagnostics(errors) {
1055
+ if (errors.length === 0) return "";
1056
+ const lines = [];
1057
+ for (const error of errors) {
1058
+ const friendly = getFriendlyError(error);
1059
+ const severity = error.type === "error" ? "ERROR" : "WARNING";
1060
+ if (friendly) {
1061
+ lines.push(`[${severity}] ${friendly.title}`);
1062
+ lines.push(` ${friendly.explanation}`);
1063
+ lines.push(` How to fix: ${friendly.fix}`);
1064
+ lines.push(` Code: ${friendly.code}`);
1065
+ } else {
1066
+ lines.push(`[${severity}] ${error.code}`);
1067
+ lines.push(` ${error.message}`);
1068
+ }
1069
+ lines.push("");
1070
+ }
1071
+ return lines.join("\n");
1072
+ }
1073
+
1074
+ // src/generator/workflow-generator.ts
1075
+ import * as path from "node:path";
1076
+ var WorkflowGenerator = class {
1077
+ async generate(filePath, workflowName, options = {}) {
1078
+ const { production = false, sourceMap = false } = options;
1079
+ const parseResult = await this.parse(filePath, workflowName);
1080
+ this.validate(parseResult.ast);
1081
+ if (sourceMap) {
1082
+ return generateCode(parseResult.ast, { production, sourceMap: true, allWorkflows: parseResult.allWorkflows });
1083
+ }
1084
+ return generateCode(parseResult.ast, { production, allWorkflows: parseResult.allWorkflows });
1085
+ }
1086
+ async parse(filePath, workflowName) {
1087
+ const parseResult = await parseWorkflow(filePath, { workflowName, projectDir: path.dirname(filePath) });
1088
+ if (parseResult.errors.length > 0) {
1089
+ throw new Error(
1090
+ `Workflow parsing failed with ${parseResult.errors.length} error(s):
1091
+ ${parseResult.errors.map((e) => ` - ${e}`).join("\n")}`
1092
+ );
1093
+ }
1094
+ return parseResult;
1095
+ }
1096
+ validate(ast) {
1097
+ const validation = validateWorkflow(ast);
1098
+ if (!validation.valid) {
1099
+ const lines = validation.errors.map((error) => ` - ${error.message}${error.node ? ` (node: ${error.node})` : ""}`);
1100
+ throw new Error(`Workflow validation failed with ${validation.errors.length} error(s):
1101
+ ${lines.join("\n")}`);
1102
+ }
1103
+ return validation;
1104
+ }
1105
+ };
1106
+ var generator = new WorkflowGenerator();
1107
+ export {
1108
+ AmbiguousEffectError,
1109
+ AnnotationGenerator,
1110
+ AnnotationParser,
1111
+ BRANCHING_STRATEGIES,
1112
+ CONTINUATION_FORMAT_VERSION,
1113
+ ConnectionBuilder,
1114
+ DurableExecution,
1115
+ DurableGateYield,
1116
+ ENGINE_VERSION,
1117
+ ENVELOPE_KEYS,
1118
+ EXECUTION_STRATEGIES,
1119
+ GENERATOR_ABI,
1120
+ GeneratedExecutionContext,
1121
+ IMPACT_COLORS,
1122
+ IMPACT_DESCRIPTIONS,
1123
+ KNOWN_NODETYPE_TAGS,
1124
+ KNOWN_WORKFLOW_TAGS,
1125
+ MARKERS,
1126
+ MAX_CONTINUATION_BYTES,
1127
+ MAX_CONTINUATION_DEPTH,
1128
+ MAX_CONTINUATION_ENTRIES,
1129
+ MAX_CONTINUATION_STRING_BYTES,
1130
+ MIN_NODE_MAJOR,
1131
+ NodeInstanceBuilder,
1132
+ NodeTypeBuilder,
1133
+ PORT_TYPE_MAPPINGS,
1134
+ RESERVED_NODE_NAMES,
1135
+ RESERVED_PORT_NAMES,
1136
+ SCOPED_PORT_NAMES,
1137
+ STANDARD_JSDOC_TAGS,
1138
+ TagHandlerRegistry,
1139
+ VALID_NODE_COLORS,
1140
+ ValidationRuleRegistry,
1141
+ WireValidationError,
1142
+ WorkflowBuilder,
1143
+ WorkflowDiffer,
1144
+ WorkflowGenerator,
1145
+ WorkflowValidator,
1146
+ acceptContinuation,
1147
+ addConnection,
1148
+ addConnections,
1149
+ addNode,
1150
+ addNodeType,
1151
+ addNodes,
1152
+ addToScope,
1153
+ addWorkflowToSource,
1154
+ applyModifyOperation,
1155
+ assertAcceptedContinuation,
1156
+ assertNodeExists,
1157
+ assertNodeNotExists,
1158
+ assertNodeTypeExists,
1159
+ canonicalWireValue,
1160
+ cloneAndFreezeWireValue,
1161
+ cloneWorkflow,
1162
+ compileWorkflow,
1163
+ configureGeneratedBranding,
1164
+ continuationChecksum,
1165
+ countConnections,
1166
+ countNodeTypes,
1167
+ countNodes,
1168
+ createContinuationEnvelope,
1169
+ createScope,
1170
+ createWorkflow,
1171
+ createWorkflowRuntime,
1172
+ decodeContinuation,
1173
+ durableGateId,
1174
+ executionAddressKey,
1175
+ findDeadEndDetails,
1176
+ findDeadEnds,
1177
+ findDisconnectedOutputPorts,
1178
+ findIsolatedNodes,
1179
+ findNodesByName,
1180
+ findPath,
1181
+ findUnusedNodeTypes,
1182
+ findWorkflows,
1183
+ formatDiff,
1184
+ formatFriendlyDiagnostics,
1185
+ formatPortReference,
1186
+ formatPortsInFunctionText,
1187
+ fromAST,
1188
+ generateCode,
1189
+ generateInPlace,
1190
+ generateNodeFromTemplate,
1191
+ generateUniqueNodeId,
1192
+ generateWorkflowFromTemplate,
1193
+ generator,
1194
+ getAllPortTypes,
1195
+ getAvailableCommands,
1196
+ getAvailableWorkflows,
1197
+ getConnectedPorts,
1198
+ getConnections,
1199
+ getCriticalConnections,
1200
+ getDataDependencies,
1201
+ getDependencies,
1202
+ getDependents,
1203
+ getExecutionGroups,
1204
+ getFriendlyError,
1205
+ getGeneratedBranding,
1206
+ getImpactReasons,
1207
+ getIncomingConnections,
1208
+ getKnownWorkflowTags,
1209
+ getNode,
1210
+ getNodeTemplate,
1211
+ getNodeType,
1212
+ getNodeTypeChanges,
1213
+ getNodes,
1214
+ getNodesByType,
1215
+ getNodesInScope,
1216
+ getOutgoingConnections,
1217
+ getPortTypeDescription,
1218
+ getTopologicalOrder,
1219
+ getTransitiveDependencies,
1220
+ getUnconnectedPorts,
1221
+ getWorkflowTemplate,
1222
+ hasBreakingChanges,
1223
+ hasExactlyTheKeys,
1224
+ hasInPlaceMarkers,
1225
+ hasNode,
1226
+ hasNodeType,
1227
+ inferDataTypeFromTS,
1228
+ isAmbiguousEffectError,
1229
+ isConnected,
1230
+ isControlFlowPort,
1231
+ isDurableGateYield,
1232
+ isExecutePort,
1233
+ isExecutionAddress,
1234
+ isExitNode,
1235
+ isFailurePort,
1236
+ isPlainObjectRecord,
1237
+ isPseudoNode,
1238
+ isReservedNodeName,
1239
+ isReservedPortName,
1240
+ isScopedFailurePort,
1241
+ isScopedMandatoryPort,
1242
+ isScopedPort,
1243
+ isScopedStartPort,
1244
+ isScopedSuccessPort,
1245
+ isSpecialNode,
1246
+ isStartNode,
1247
+ isSuccessPort,
1248
+ isValidPortType,
1249
+ listNodeTemplates,
1250
+ listNodeTypes,
1251
+ listWorkflowTemplates,
1252
+ mapToTypeScript,
1253
+ moveToScope,
1254
+ nodeInstance,
1255
+ nodeTemplates,
1256
+ nodeType,
1257
+ operationKey,
1258
+ parseFunctionSignature,
1259
+ parsePortsFromFunctionText,
1260
+ parseReturnFields,
1261
+ parseReturnTypeFields,
1262
+ parseWorkflow,
1263
+ parseWorkflowSourceAtPath,
1264
+ parser,
1265
+ port,
1266
+ portRef,
1267
+ portReferencesEqual,
1268
+ reconnect,
1269
+ removeAllConnections,
1270
+ removeConnection,
1271
+ removeFromScope,
1272
+ removeNode,
1273
+ removeNodeType,
1274
+ removeNodes,
1275
+ removeScope,
1276
+ removeWorkflowFromSource,
1277
+ renameNode,
1278
+ renameNodeType,
1279
+ renamePortInCode,
1280
+ renameWorkflow,
1281
+ replaceConnections,
1282
+ replaceNodeTypes,
1283
+ resolveNpmNodeTypes,
1284
+ runCommand,
1285
+ setInstancePortConfigs,
1286
+ setNodeConfig,
1287
+ setNodeLabel,
1288
+ setNodeMinimized,
1289
+ setNodeSize,
1290
+ setOutputFileType,
1291
+ setStartExitPorts,
1292
+ setWorkflowDescription,
1293
+ setWorkflowMetadata,
1294
+ setWorkflowPorts,
1295
+ sha256Hex,
1296
+ stripGeneratedSections,
1297
+ stripOptionalUndefined,
1298
+ structurallyValidEnvelope,
1299
+ swapNodeInstancePortOrder,
1300
+ swapPortOrder,
1301
+ syncCodeRenames,
1302
+ tagHandlerRegistry,
1303
+ toCamelCase,
1304
+ toPascalCase,
1305
+ toggleWorkflowExport,
1306
+ transformWorkflow,
1307
+ updateNode,
1308
+ updateNodeType,
1309
+ updatePortsInFunctionText,
1310
+ utf8ByteLength,
1311
+ validateModifyParams,
1312
+ validatePortReference,
1313
+ validateWireValue,
1314
+ validateWorkflow,
1315
+ validationRuleRegistry,
1316
+ validator,
1317
+ withMinimalValidation,
1318
+ withValidation,
1319
+ withoutValidation,
1320
+ workflow,
1321
+ workflowTemplates
1322
+ };