@synergenius/flow-weaver 0.33.1 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (922) hide show
  1. package/LICENSE +201 -226
  2. package/NOTICE +13 -0
  3. package/README.md +152 -244
  4. package/dist/agent/agent-loop.d.ts +4 -2
  5. package/dist/agent/cli-session.d.ts +3 -3
  6. package/dist/agent/cli-session.js +511 -438
  7. package/dist/agent/cli-spawn-config.d.ts +4 -4
  8. package/dist/agent/gate.d.ts +164 -0
  9. package/dist/agent/index.d.ts +4 -4
  10. package/dist/agent/index.js +174 -28
  11. package/dist/agent/mcp-bridge.d.ts +1 -1
  12. package/dist/agent/mcp-bridge.js +114 -128
  13. package/dist/agent/mcp-tool-server.d.ts +2 -2
  14. package/dist/agent/mcp-tool-server.js +147 -189
  15. package/dist/agent/profiles.d.ts +69 -0
  16. package/dist/agent/providers/anthropic.d.ts +2 -4
  17. package/dist/agent/providers/claude-cli.d.ts +4 -5
  18. package/dist/agent/providers/openai-compat.d.ts +8 -1
  19. package/dist/agent/streaming.d.ts +2 -2
  20. package/dist/agent/types.d.ts +16 -10
  21. package/dist/api/builder.d.ts +3 -3
  22. package/dist/api/compile.d.ts +9 -4
  23. package/dist/api/durable-validation.d.ts +15 -0
  24. package/dist/api/generate-in-place.d.ts +21 -19
  25. package/dist/api/generate.d.ts +21 -16
  26. package/dist/api/generated-module/local-node-functions.d.ts +24 -0
  27. package/dist/api/generated-module/module-format.d.ts +23 -0
  28. package/dist/api/generated-module/module-writer.d.ts +34 -0
  29. package/dist/api/generated-module/node-type-imports.d.ts +39 -0
  30. package/dist/api/generated-module/preamble.d.ts +16 -0
  31. package/dist/api/generated-module/workflow-functions.d.ts +29 -0
  32. package/dist/api/graph-identity.d.ts +39 -0
  33. package/dist/api/helpers.d.ts +4 -60
  34. package/dist/api/in-place/built-in-nodes.d.ts +18 -0
  35. package/dist/api/in-place/function-body.d.ts +21 -0
  36. package/dist/api/in-place/fw-imports.d.ts +30 -0
  37. package/dist/api/in-place/macro-coverage.d.ts +14 -0
  38. package/dist/api/in-place/node-type-functions.d.ts +18 -0
  39. package/dist/api/in-place/node-type-jsdoc.d.ts +20 -0
  40. package/dist/api/in-place/orphaned-node-types.d.ts +16 -0
  41. package/dist/api/in-place/runtime-section.d.ts +16 -0
  42. package/dist/api/in-place/signature.d.ts +47 -0
  43. package/dist/api/in-place/source-file.d.ts +19 -0
  44. package/dist/api/in-place/workflow-jsdoc.d.ts +19 -0
  45. package/dist/api/index.d.ts +18 -21
  46. package/dist/api/index.js +259 -53
  47. package/dist/api/inline-engine.generated.d.ts +3 -0
  48. package/dist/api/inline-runtime.d.ts +10 -2
  49. package/dist/api/manipulation/connections.d.ts +1 -1
  50. package/dist/api/manipulation/index.d.ts +8 -8
  51. package/dist/api/manipulation/node-types.d.ts +1 -1
  52. package/dist/api/manipulation/nodes.d.ts +3 -13
  53. package/dist/api/manipulation/ports.d.ts +1 -1
  54. package/dist/api/manipulation/scopes.d.ts +1 -1
  55. package/dist/api/manipulation/workflow.d.ts +1 -1
  56. package/dist/api/modify-operation.d.ts +0 -2
  57. package/dist/api/parse.d.ts +22 -1
  58. package/dist/api/port-references.d.ts +66 -0
  59. package/dist/api/query.d.ts +18 -2
  60. package/dist/api/templates.d.ts +1 -1
  61. package/dist/api/transform.d.ts +1 -1
  62. package/dist/api/validate.d.ts +1 -1
  63. package/dist/api/validation-registry.d.ts +2 -2
  64. package/dist/artifacts/brief.d.ts +43 -0
  65. package/dist/artifacts/index.d.ts +31 -0
  66. package/dist/artifacts/pdf.d.ts +19 -0
  67. package/dist/ast/builder.d.ts +3 -3
  68. package/dist/ast/index.d.ts +4 -4
  69. package/dist/ast/index.js +60 -5
  70. package/dist/ast/serialization-node.d.ts +1 -1
  71. package/dist/ast/serialization.d.ts +1 -1
  72. package/dist/ast/types.d.ts +82 -291
  73. package/dist/ast/workflow-utils.d.ts +4 -4
  74. package/dist/built-in-nodes/coercion-types.d.ts +1 -1
  75. package/dist/built-in-nodes/delay.d.ts +3 -1
  76. package/dist/built-in-nodes/generated-registry.d.ts +1 -1
  77. package/dist/built-in-nodes/index.d.ts +6 -5
  78. package/dist/built-in-nodes/index.js +79 -5
  79. package/dist/built-in-nodes/invoke-workflow.d.ts +2 -1
  80. package/dist/built-in-nodes/mock-types.d.ts +45 -14
  81. package/dist/built-in-nodes/sleep.d.ts +12 -0
  82. package/dist/built-in-nodes/wait-for-agent.d.ts +2 -1
  83. package/dist/built-in-nodes/wait-for-event.d.ts +2 -1
  84. package/dist/chevrotain-parser/coerce-parser.d.ts +1 -1
  85. package/dist/chevrotain-parser/connect-parser.d.ts +1 -1
  86. package/dist/chevrotain-parser/grammar-diagrams.d.ts +1 -1
  87. package/dist/chevrotain-parser/index.d.ts +20 -23
  88. package/dist/chevrotain-parser/node-parser.d.ts +7 -8
  89. package/dist/chevrotain-parser/parse-line.d.ts +54 -0
  90. package/dist/chevrotain-parser/tokens.d.ts +0 -17
  91. package/dist/chevrotain-parser/trigger-cancel-parser.d.ts +6 -1
  92. package/dist/chunks/chunk-4EUSHAY6.js +298 -0
  93. package/dist/chunks/chunk-4KDUEOFD.js +197 -0
  94. package/dist/chunks/chunk-5Y3AIUWY.js +911 -0
  95. package/dist/chunks/chunk-6KMVP6AU.js +20 -0
  96. package/dist/chunks/chunk-6PNJORFL.js +128 -0
  97. package/dist/chunks/chunk-7AAQNGRH.js +2001 -0
  98. package/dist/chunks/chunk-7YYKTPJ5.js +22705 -0
  99. package/dist/chunks/chunk-A5MBOFVY.js +33 -0
  100. package/dist/chunks/chunk-AXNQRVJB.js +18 -0
  101. package/dist/chunks/chunk-B6HQ6YS5.js +572 -0
  102. package/dist/chunks/chunk-CY3RNVML.js +296 -0
  103. package/dist/chunks/chunk-CYHYDLV4.js +653 -0
  104. package/dist/chunks/chunk-CZBCCK4Y.js +82 -0
  105. package/dist/chunks/chunk-DCMGQP5V.js +505 -0
  106. package/dist/chunks/chunk-DIAA66GL.js +72 -0
  107. package/dist/chunks/chunk-DUO6H5PR.js +20 -0
  108. package/dist/chunks/chunk-E5WN7IGO.js +125 -0
  109. package/dist/chunks/chunk-EFGFXXQF.js +184 -0
  110. package/dist/chunks/chunk-F3RTZV2A.js +2811 -0
  111. package/dist/chunks/chunk-FMTLP5ZX.js +1397 -0
  112. package/dist/chunks/chunk-HKZLQJDV.js +79 -0
  113. package/dist/chunks/chunk-INDEVYEC.js +146 -0
  114. package/dist/chunks/chunk-JQTF4R5L.js +390 -0
  115. package/dist/chunks/chunk-KMCAYNUM.js +331 -0
  116. package/dist/chunks/chunk-KMWCCOUJ.js +1444 -0
  117. package/dist/chunks/chunk-KU3CLJI2.js +338 -0
  118. package/dist/chunks/chunk-NDSTGMKR.js +3300 -0
  119. package/dist/chunks/chunk-NQNLUAPO.js +505 -0
  120. package/dist/chunks/chunk-O2U2LO57.js +466 -0
  121. package/dist/chunks/chunk-OOQG7UPP.js +457 -0
  122. package/dist/chunks/chunk-OZQAW5ZG.js +112 -0
  123. package/dist/chunks/chunk-P2CVDGHR.js +487 -0
  124. package/dist/chunks/chunk-P44RIZ7C.js +592 -0
  125. package/dist/chunks/chunk-PEZCT37T.js +1475 -0
  126. package/dist/chunks/chunk-PKWSAW6O.js +152 -0
  127. package/dist/chunks/chunk-Q6MDDZMT.js +4373 -0
  128. package/dist/chunks/chunk-QDE4Z7KW.js +6 -0
  129. package/dist/chunks/chunk-QJDAVSNY.js +8 -0
  130. package/dist/chunks/chunk-QYPORSLO.js +7552 -0
  131. package/dist/chunks/chunk-R4QGNK34.js +183 -0
  132. package/dist/chunks/chunk-REEYC73I.js +3002 -0
  133. package/dist/chunks/chunk-SEWDMQ6Q.js +46 -0
  134. package/dist/chunks/chunk-TAIUWKZB.js +3057 -0
  135. package/dist/chunks/chunk-TN4YZ3O7.js +196 -0
  136. package/dist/chunks/chunk-TRMFB43C.js +143 -0
  137. package/dist/chunks/chunk-VO4QXG2X.js +1016 -0
  138. package/dist/chunks/chunk-VP2P3BPA.js +1002 -0
  139. package/dist/chunks/chunk-VQ7H33J4.js +2176 -0
  140. package/dist/chunks/chunk-VWA7MCV2.js +105 -0
  141. package/dist/chunks/chunk-XAV22WD7.js +253 -0
  142. package/dist/chunks/chunk-YSPBPZDV.js +148 -0
  143. package/dist/chunks/chunk-ZKEGXO73.js +282 -0
  144. package/dist/chunks/chunk-ZMGN6F3S.js +4256 -0
  145. package/dist/chunks/grammar-diagrams-AI7VDXOM.js +14 -0
  146. package/dist/chunks/index.min-ECJD6GZC.js +37 -0
  147. package/dist/chunks/manifest-EPTR5MYH.js +21 -0
  148. package/dist/chunks/openapi-document-6TCGVDUW.js +69 -0
  149. package/dist/chunks/registry-K2U5KUTY.js +23 -0
  150. package/dist/chunks/serialization-node-UGY6CFH6.js +38 -0
  151. package/dist/chunks/validate-GEKSZPIN.js +24 -0
  152. package/dist/chunks/validation-registry-IQZX3UE3.js +7 -0
  153. package/dist/chunks/validator-VXFHLPDW.js +26 -0
  154. package/dist/chunks/workflow-executor-KBGFKHNR.js +36 -0
  155. package/dist/cli/commands/agents.d.ts +16 -0
  156. package/dist/cli/commands/artifact.d.ts +10 -0
  157. package/dist/cli/commands/compile.d.ts +0 -30
  158. package/dist/cli/commands/console.d.ts +32 -0
  159. package/dist/cli/commands/context.d.ts +0 -3
  160. package/dist/cli/commands/describe.js +386 -352
  161. package/dist/cli/commands/dev.d.ts +9 -4
  162. package/dist/cli/commands/diagram.d.ts +3 -5
  163. package/dist/cli/commands/doctor.d.ts +27 -4
  164. package/dist/cli/commands/doctor.js +3307 -633
  165. package/dist/cli/commands/export.d.ts +6 -4
  166. package/dist/cli/commands/grammar.d.ts +0 -3
  167. package/dist/cli/commands/implement.d.ts +1 -1
  168. package/dist/cli/commands/init/agent-handoff.d.ts +28 -0
  169. package/dist/cli/commands/init/config.d.ts +3 -0
  170. package/dist/cli/commands/init/files.d.ts +12 -0
  171. package/dist/cli/commands/init/naming.d.ts +13 -0
  172. package/dist/cli/commands/init/output.d.ts +12 -0
  173. package/dist/cli/commands/init/setup.d.ts +21 -0
  174. package/dist/cli/commands/init/types.d.ts +53 -0
  175. package/dist/cli/commands/init-personas.d.ts +9 -1
  176. package/dist/cli/commands/init.d.ts +24 -88
  177. package/dist/cli/commands/market.d.ts +1 -1
  178. package/dist/cli/commands/mcp-setup.d.ts +1 -4
  179. package/dist/cli/commands/modify.d.ts +0 -5
  180. package/dist/cli/commands/openapi.d.ts +9 -11
  181. package/dist/cli/commands/run.d.ts +0 -4
  182. package/dist/cli/commands/serve.d.ts +24 -26
  183. package/dist/cli/commands/status.d.ts +1 -1
  184. package/dist/cli/exports.d.ts +3 -4
  185. package/dist/cli/exports.js +124 -23
  186. package/dist/cli/flow-weaver-agents-H653446S.mjs +81 -0
  187. package/dist/cli/flow-weaver-artifact-WBFYTW76.mjs +58 -0
  188. package/dist/cli/flow-weaver-chunk-265CEK74.mjs +2 -0
  189. package/dist/cli/flow-weaver-chunk-2C7PZCV5.mjs +186 -0
  190. package/dist/cli/flow-weaver-chunk-3BSYCWPL.mjs +3109 -0
  191. package/dist/cli/flow-weaver-chunk-3MKUQP3D.mjs +547 -0
  192. package/dist/cli/flow-weaver-chunk-3ZLMPQTH.mjs +27 -0
  193. package/dist/cli/flow-weaver-chunk-4DVY73ML.mjs +280 -0
  194. package/dist/cli/flow-weaver-chunk-54M4KNEL.mjs +200 -0
  195. package/dist/cli/flow-weaver-chunk-55QMUZIA.mjs +256 -0
  196. package/dist/cli/flow-weaver-chunk-6ZUJ7LMX.mjs +2003 -0
  197. package/dist/cli/flow-weaver-chunk-7ET6N32V.mjs +419 -0
  198. package/dist/cli/flow-weaver-chunk-7G63RR4K.mjs +8880 -0
  199. package/dist/cli/flow-weaver-chunk-A6M5K3W7.mjs +4418 -0
  200. package/dist/cli/flow-weaver-chunk-AA3NATMX.mjs +154 -0
  201. package/dist/cli/flow-weaver-chunk-APX6MQ5A.mjs +5652 -0
  202. package/dist/cli/flow-weaver-chunk-BHCC5FE5.mjs +17 -0
  203. package/dist/cli/flow-weaver-chunk-DM4BBRRU.mjs +35 -0
  204. package/dist/cli/flow-weaver-chunk-DRN7KPWY.mjs +168 -0
  205. package/dist/cli/flow-weaver-chunk-EKWF27G6.mjs +23 -0
  206. package/dist/cli/flow-weaver-chunk-EM5HWQ4R.mjs +338 -0
  207. package/dist/cli/flow-weaver-chunk-FPPPU2DG.mjs +226 -0
  208. package/dist/cli/flow-weaver-chunk-GAQXZHNO.mjs +3005 -0
  209. package/dist/cli/flow-weaver-chunk-GBUNNP33.mjs +1329 -0
  210. package/dist/cli/flow-weaver-chunk-HMAKDE55.mjs +636 -0
  211. package/dist/cli/flow-weaver-chunk-HQ3ZAN44.mjs +367 -0
  212. package/dist/cli/flow-weaver-chunk-I4APCXYN.mjs +21442 -0
  213. package/dist/cli/flow-weaver-chunk-IJJ4JXTL.mjs +2297 -0
  214. package/dist/cli/flow-weaver-chunk-J7EPZW2I.mjs +33 -0
  215. package/dist/cli/flow-weaver-chunk-KOEMJHLG.mjs +83 -0
  216. package/dist/cli/flow-weaver-chunk-M6CBWQKJ.mjs +271 -0
  217. package/dist/cli/flow-weaver-chunk-MHJ4N652.mjs +1580 -0
  218. package/dist/cli/flow-weaver-chunk-MKAFQWLP.mjs +202 -0
  219. package/dist/cli/flow-weaver-chunk-MMV2XGD3.mjs +3291 -0
  220. package/dist/cli/flow-weaver-chunk-MSI2UJES.mjs +125 -0
  221. package/dist/cli/flow-weaver-chunk-N767YRAI.mjs +48 -0
  222. package/dist/cli/flow-weaver-chunk-NQKKWDGF.mjs +56 -0
  223. package/dist/cli/flow-weaver-chunk-NYZDQYFU.mjs +45 -0
  224. package/dist/cli/flow-weaver-chunk-OMVWSNHJ.mjs +14 -0
  225. package/dist/cli/flow-weaver-chunk-PUWZ47H5.mjs +2188 -0
  226. package/dist/cli/flow-weaver-chunk-QOPRVDES.mjs +46 -0
  227. package/dist/cli/flow-weaver-chunk-RIWE7YTR.mjs +216 -0
  228. package/dist/cli/flow-weaver-chunk-S63Q3JIU.mjs +789 -0
  229. package/dist/cli/flow-weaver-chunk-T7X5A23H.mjs +558 -0
  230. package/dist/cli/flow-weaver-chunk-TLV3VZUN.mjs +2 -0
  231. package/dist/cli/flow-weaver-chunk-TS5P3PIN.mjs +194 -0
  232. package/dist/cli/flow-weaver-chunk-U3EO3X4B.mjs +649 -0
  233. package/dist/cli/flow-weaver-chunk-UNFS3NQP.mjs +34 -0
  234. package/dist/cli/flow-weaver-chunk-V6DHWFQG.mjs +2811 -0
  235. package/dist/cli/flow-weaver-chunk-VXWNLYQU.mjs +9 -0
  236. package/dist/cli/flow-weaver-chunk-W3YNK26P.mjs +149 -0
  237. package/dist/cli/flow-weaver-chunk-XG2WKXYZ.mjs +324 -0
  238. package/dist/cli/flow-weaver-chunk-YLSRZWFK.mjs +2219 -0
  239. package/dist/cli/flow-weaver-chunk-YVPURWS6.mjs +40 -0
  240. package/dist/cli/flow-weaver-chunk-Z44JK332.mjs +582 -0
  241. package/dist/cli/flow-weaver-chunk-Z5ZJPNSY.mjs +517 -0
  242. package/dist/cli/flow-weaver-chunk-ZQALO25T.mjs +594 -0
  243. package/dist/cli/flow-weaver-compile-A2CABDSB.mjs +37 -0
  244. package/dist/cli/flow-weaver-console-6EBHDBTN.mjs +71 -0
  245. package/dist/cli/flow-weaver-context-ECLYANFF.mjs +17 -0
  246. package/dist/cli/flow-weaver-context-ZRUMW2KE.mjs +69 -0
  247. package/dist/cli/flow-weaver-create-WIP4EFNP.mjs +124 -0
  248. package/dist/cli/flow-weaver-deployment-WJJRK7NO.mjs +14 -0
  249. package/dist/cli/flow-weaver-describe-XDIFF5LI.mjs +41 -0
  250. package/dist/cli/flow-weaver-dev-LG2NSQAU.mjs +196 -0
  251. package/dist/cli/flow-weaver-diagram-3EVQARQE.mjs +52 -0
  252. package/dist/cli/flow-weaver-diagram-7LR7O4M2.mjs +44 -0
  253. package/dist/cli/flow-weaver-diff-USF7DJLU.mjs +85 -0
  254. package/dist/cli/flow-weaver-docs-QU2ZOXKH.mjs +96 -0
  255. package/dist/cli/flow-weaver-doctor-K447YWHR.mjs +43 -0
  256. package/dist/cli/flow-weaver-export-LAS6N56Y.mjs +140 -0
  257. package/dist/cli/flow-weaver-grammar-RIRUS3Q6.mjs +49 -0
  258. package/dist/cli/flow-weaver-grammar-diagrams-WXRTW5SK.mjs +15 -0
  259. package/dist/cli/flow-weaver-implement-5JG6BCFZ.mjs +114 -0
  260. package/dist/cli/flow-weaver-index.min-OR5SIHXD.mjs +39 -0
  261. package/dist/cli/flow-weaver-init-34YZNPQX.mjs +972 -0
  262. package/dist/cli/flow-weaver-init-personas-NOGZTQQ2.mjs +48 -0
  263. package/dist/cli/flow-weaver-manifest-4JNUSEB3.mjs +18 -0
  264. package/dist/cli/flow-weaver-market-WA4CKHKV.mjs +444 -0
  265. package/dist/cli/flow-weaver-mcp-setup-O26MGXSD.mjs +22 -0
  266. package/dist/cli/flow-weaver-migrate-VFVEUTPH.mjs +119 -0
  267. package/dist/cli/flow-weaver-modify-VM3JP5K6.mjs +97 -0
  268. package/dist/cli/flow-weaver-openapi-IRBWI3HM.mjs +71 -0
  269. package/dist/cli/flow-weaver-openapi-document-7N6YMPG3.mjs +30 -0
  270. package/dist/cli/flow-weaver-pack-commands-OS2QRXAK.mjs +146 -0
  271. package/dist/cli/flow-weaver-registry-5MLFRPPT.mjs +25 -0
  272. package/dist/cli/flow-weaver-run-DSTLSTHR.mjs +555 -0
  273. package/dist/cli/flow-weaver-serialization-node-LE6PCG4M.mjs +50 -0
  274. package/dist/cli/flow-weaver-serve-NVLCLSOW.mjs +192 -0
  275. package/dist/cli/flow-weaver-server-7IERLVXE.mjs +2925 -0
  276. package/dist/cli/flow-weaver-server-KWF4PXYC.mjs +19112 -0
  277. package/dist/cli/flow-weaver-status-75W2S3YB.mjs +138 -0
  278. package/dist/cli/flow-weaver-strip-AZPXUYVA.mjs +79 -0
  279. package/dist/cli/flow-weaver-templates-DSNMB6K7.mjs +72 -0
  280. package/dist/cli/flow-weaver-validate-A4UWDQN6.mjs +19 -0
  281. package/dist/cli/flow-weaver-validate-GRBZ5W4C.mjs +296 -0
  282. package/dist/cli/flow-weaver-validation-registry-BINGUNXX.mjs +9 -0
  283. package/dist/cli/flow-weaver-validator-TY56CI42.mjs +21 -0
  284. package/dist/cli/flow-weaver-watch-OPPERXL6.mjs +114 -0
  285. package/dist/cli/flow-weaver-workflow-executor-6AHYPXAN.mjs +26 -0
  286. package/dist/cli/flow-weaver.mjs +3557 -89498
  287. package/dist/cli/index.d.ts +5 -2
  288. package/dist/cli/pack-commands-needed.d.ts +12 -0
  289. package/dist/cli/program.d.ts +14 -0
  290. package/dist/cli/templates/ai/mock-provider.d.ts +1 -1
  291. package/dist/cli/templates/index.d.ts +1 -8
  292. package/dist/cli/templates/nodes/agent-router.d.ts +1 -1
  293. package/dist/cli/templates/nodes/aggregator.d.ts +1 -1
  294. package/dist/cli/templates/nodes/conversation-memory.d.ts +1 -1
  295. package/dist/cli/templates/nodes/http.d.ts +1 -1
  296. package/dist/cli/templates/nodes/human-approval.d.ts +1 -1
  297. package/dist/cli/templates/nodes/json-extractor.d.ts +1 -1
  298. package/dist/cli/templates/nodes/llm-call.d.ts +1 -1
  299. package/dist/cli/templates/nodes/prompt-template.d.ts +1 -1
  300. package/dist/cli/templates/nodes/rag-retriever.d.ts +1 -1
  301. package/dist/cli/templates/nodes/tool-executor.d.ts +1 -1
  302. package/dist/cli/templates/nodes/transformer.d.ts +1 -1
  303. package/dist/cli/templates/nodes/validator.d.ts +1 -1
  304. package/dist/cli/templates/shared/approval-types.d.ts +1 -1
  305. package/dist/cli/templates/shared/case.d.ts +14 -0
  306. package/dist/cli/templates/shared/llm-types.d.ts +4 -4
  307. package/dist/cli/templates/workflows/aggregator.d.ts +1 -1
  308. package/dist/cli/templates/workflows/ai-agent.d.ts +1 -1
  309. package/dist/cli/templates/workflows/ai-chat.d.ts +1 -1
  310. package/dist/cli/templates/workflows/ai-rag.d.ts +1 -1
  311. package/dist/cli/templates/workflows/ai-react.d.ts +1 -1
  312. package/dist/cli/templates/workflows/approval.d.ts +10 -0
  313. package/dist/cli/templates/workflows/conditional.d.ts +2 -2
  314. package/dist/cli/templates/workflows/error-handler.d.ts +2 -2
  315. package/dist/cli/templates/workflows/foreach.d.ts +1 -1
  316. package/dist/cli/templates/workflows/sequential.d.ts +1 -1
  317. package/dist/cli/templates/workflows/webhook.d.ts +1 -1
  318. package/dist/cli/utils/interactive.d.ts +6 -0
  319. package/dist/cli/utils/json-option.d.ts +8 -0
  320. package/dist/cli/utils/logger.d.ts +2 -0
  321. package/dist/compiler/durable-source-proof.d.ts +23 -0
  322. package/dist/compiler/executable-artifact.d.ts +29 -0
  323. package/dist/compiler/index.d.ts +4 -0
  324. package/dist/compiler/index.js +36 -0
  325. package/dist/console/app.js +106 -0
  326. package/dist/console/assets/synergenius.svg +18 -0
  327. package/dist/console/author.d.ts +32 -0
  328. package/dist/console/cli-catalog.d.ts +21 -0
  329. package/dist/console/cli-run.d.ts +35 -0
  330. package/dist/console/cli-run.js +46 -0
  331. package/dist/console/debug.d.ts +67 -0
  332. package/dist/console/diff-view.d.ts +96 -0
  333. package/dist/console/export.d.ts +36 -0
  334. package/dist/console/git.d.ts +27 -0
  335. package/dist/console/index.d.ts +4 -0
  336. package/dist/console/index.html +16 -0
  337. package/dist/console/index.js +203 -0
  338. package/dist/console/packs.d.ts +100 -0
  339. package/dist/console/request-guard.d.ts +10 -0
  340. package/dist/console/respond.d.ts +16 -0
  341. package/dist/console/router.d.ts +64 -0
  342. package/dist/console/routes-agents.d.ts +14 -0
  343. package/dist/console/routes-project.d.ts +3 -0
  344. package/dist/console/routes-runs.d.ts +3 -0
  345. package/dist/console/routes-services.d.ts +7 -0
  346. package/dist/console/routes-tools.d.ts +3 -0
  347. package/dist/console/runs.d.ts +69 -0
  348. package/dist/console/scan.d.ts +49 -0
  349. package/dist/console/schema.d.ts +74 -0
  350. package/dist/console/server.d.ts +34 -0
  351. package/dist/console/server.js +43264 -0
  352. package/dist/console/services.d.ts +119 -0
  353. package/dist/console/source.d.ts +23 -0
  354. package/dist/console/status.d.ts +68 -0
  355. package/dist/console/styles.css +1023 -0
  356. package/dist/console/terminals.d.ts +22 -0
  357. package/dist/console/workflow-view.d.ts +153 -0
  358. package/dist/constants.d.ts +5 -1
  359. package/dist/constants.js +56 -167
  360. package/dist/context/index.d.ts +10 -0
  361. package/dist/context/index.js +14 -191
  362. package/dist/coordinator/agent-gate.d.ts +107 -0
  363. package/dist/coordinator/bundle-digest.d.ts +20 -0
  364. package/dist/coordinator/clock-tick.d.ts +4 -0
  365. package/dist/coordinator/effect-receipts.d.ts +10 -0
  366. package/dist/coordinator/errors.d.ts +31 -0
  367. package/dist/coordinator/file-store.d.ts +3 -0
  368. package/dist/coordinator/gate-labeling.d.ts +33 -0
  369. package/dist/coordinator/gate-resolution.d.ts +28 -0
  370. package/dist/coordinator/index.d.ts +12 -0
  371. package/dist/coordinator/index.js +107 -0
  372. package/dist/coordinator/memory-store.d.ts +3 -0
  373. package/dist/coordinator/params.d.ts +18 -0
  374. package/dist/coordinator/run-annotations.d.ts +6 -0
  375. package/dist/coordinator/run-context.d.ts +11 -0
  376. package/dist/coordinator/run-ending.d.ts +5 -0
  377. package/dist/coordinator/run-outcome.d.ts +31 -0
  378. package/dist/coordinator/run-resume.d.ts +6 -0
  379. package/dist/coordinator/run-start.d.ts +4 -0
  380. package/dist/coordinator/run-store.d.ts +275 -0
  381. package/dist/coordinator/run-trace.d.ts +41 -0
  382. package/dist/coordinator/run-views.d.ts +12 -0
  383. package/dist/coordinator/runs-dir.d.ts +26 -0
  384. package/dist/coordinator/store.d.ts +67 -0
  385. package/dist/coordinator/time.d.ts +39 -0
  386. package/dist/coordinator/workflow-selection.d.ts +6 -0
  387. package/dist/deployment/index.d.ts +11 -16
  388. package/dist/deployment/index.js +541 -50
  389. package/dist/deployment/targets/base.d.ts +11 -13
  390. package/dist/deployment/targets/openapi-parts.d.ts +92 -0
  391. package/dist/diagram/arms.d.ts +70 -0
  392. package/dist/diagram/ascii-renderer.d.ts +1 -1
  393. package/dist/diagram/geometry.d.ts +22 -29
  394. package/dist/diagram/graph/bounds.d.ts +30 -0
  395. package/dist/diagram/graph/metrics.d.ts +21 -0
  396. package/dist/diagram/graph/nodes.d.ts +33 -0
  397. package/dist/diagram/graph/placement.d.ts +22 -0
  398. package/dist/diagram/graph/ports.d.ts +23 -0
  399. package/dist/diagram/graph/routing.d.ts +40 -0
  400. package/dist/diagram/graph/scopes.d.ts +30 -0
  401. package/dist/diagram/index.d.ts +15 -23
  402. package/dist/diagram/index.js +632 -111
  403. package/dist/diagram/labels.d.ts +12 -0
  404. package/dist/diagram/lanes.d.ts +93 -0
  405. package/dist/diagram/layout.d.ts +1 -1
  406. package/dist/diagram/material-symbols.d.ts +7 -0
  407. package/dist/diagram/orthogonal-router.d.ts +15 -51
  408. package/dist/diagram/process-view.d.ts +79 -0
  409. package/dist/diagram/spine.d.ts +25 -0
  410. package/dist/diagram/theme.d.ts +3 -5
  411. package/dist/diagram/types.d.ts +6 -20
  412. package/dist/diff/index.js +53 -9
  413. package/dist/diff/types.d.ts +1 -5
  414. package/dist/doc-metadata/extractors/annotations.d.ts +0 -4
  415. package/dist/doc-metadata/extractors/cli-commands.d.ts +2 -1
  416. package/dist/doc-metadata/extractors/core-metadata.d.ts +19 -4
  417. package/dist/doc-metadata/extractors/error-codes.d.ts +1 -1
  418. package/dist/doc-metadata/extractors/mcp-tools.d.ts +7 -3
  419. package/dist/doc-metadata/index.d.ts +1 -2
  420. package/dist/doc-metadata/index.js +2368 -9
  421. package/dist/doc-metadata/types.d.ts +7 -24
  422. package/dist/docs/guide.d.ts +33 -0
  423. package/dist/docs/index.d.ts +7 -4
  424. package/dist/docs/index.js +298 -298
  425. package/dist/docs/pack-topics.d.ts +18 -0
  426. package/dist/editor-completions/annotationValues.d.ts +1 -1
  427. package/dist/editor-completions/contextParser.d.ts +3 -2
  428. package/dist/editor-completions/dataTypes.d.ts +1 -1
  429. package/dist/editor-completions/goToDefinition.d.ts +1 -1
  430. package/dist/editor-completions/index.d.ts +8 -8
  431. package/dist/editor-completions/index.js +1244 -175
  432. package/dist/editor-completions/jsDocAnnotations.d.ts +1 -1
  433. package/dist/editor-completions/modifierCompletions.d.ts +1 -1
  434. package/dist/export/index.d.ts +7 -1
  435. package/dist/generated-branding.js +8 -21
  436. package/dist/generated-version.d.ts +1 -1
  437. package/dist/generated-version.js +7 -3
  438. package/dist/generator/annotation-generator.d.ts +84 -0
  439. package/dist/generator/async-detection.d.ts +1 -1
  440. package/dist/{body-generator.d.ts → generator/body-generator.d.ts} +7 -3
  441. package/dist/generator/code-utils.d.ts +15 -60
  442. package/dist/generator/connection-reads.d.ts +94 -0
  443. package/dist/generator/control-flow-plan.d.ts +74 -0
  444. package/dist/generator/control-flow.d.ts +1 -1
  445. package/dist/generator/exit-assembly.d.ts +11 -0
  446. package/dist/generator/index.d.ts +4 -5
  447. package/dist/generator/index.js +34 -11
  448. package/dist/generator/input-port-values.d.ts +22 -0
  449. package/dist/generator/{scope-function-generator.d.ts → node-arguments.d.ts} +76 -1
  450. package/dist/generator/node-invocation.d.ts +74 -0
  451. package/dist/{node-types-generator.d.ts → generator/node-types-generator.d.ts} +3 -2
  452. package/dist/generator/scope-closure.d.ts +23 -0
  453. package/dist/generator/scoped-child.d.ts +49 -0
  454. package/dist/{sugar-optimizer.d.ts → generator/sugar-optimizer.d.ts} +1 -1
  455. package/dist/generator/unified.d.ts +14 -2
  456. package/dist/generator/workflow-generator.d.ts +37 -0
  457. package/dist/index.d.ts +29 -26
  458. package/dist/index.js +1322 -92
  459. package/dist/jsdoc-port-sync/apply-diff.d.ts +15 -0
  460. package/dist/jsdoc-port-sync/callback-signature.d.ts +17 -0
  461. package/dist/jsdoc-port-sync/diff.d.ts +5 -7
  462. package/dist/jsdoc-port-sync/incomplete-lines.d.ts +41 -0
  463. package/dist/jsdoc-port-sync/index.d.ts +11 -11
  464. package/dist/jsdoc-port-sync/index.js +88 -45
  465. package/dist/jsdoc-port-sync/jsdoc-to-signature.d.ts +66 -0
  466. package/dist/jsdoc-port-sync/port-parser.d.ts +6 -24
  467. package/dist/jsdoc-port-sync/port-tag-placement.d.ts +55 -0
  468. package/dist/jsdoc-port-sync/scoped-ports.d.ts +21 -0
  469. package/dist/jsdoc-port-sync/signature-parser.d.ts +8 -1
  470. package/dist/jsdoc-port-sync/signature-to-jsdoc.d.ts +77 -0
  471. package/dist/jsdoc-port-sync/sync.d.ts +4 -1
  472. package/dist/marketplace/index.d.ts +5 -3
  473. package/dist/marketplace/index.js +62 -10
  474. package/dist/marketplace/install.d.ts +24 -0
  475. package/dist/marketplace/manifest.d.ts +1 -1
  476. package/dist/marketplace/npmrc.d.ts +24 -0
  477. package/dist/marketplace/registry.d.ts +46 -11
  478. package/dist/marketplace/types.d.ts +41 -24
  479. package/dist/marketplace/validator.d.ts +1 -1
  480. package/dist/mcp/debug-session.d.ts +2 -4
  481. package/dist/mcp/dist-imports.d.ts +12 -0
  482. package/dist/mcp/response-utils.d.ts +11 -9
  483. package/dist/mcp/server.d.ts +0 -1
  484. package/dist/mcp/tools-context.d.ts +11 -0
  485. package/dist/mcp/tools-diagram.d.ts +1 -2
  486. package/dist/mcp/tools-export.d.ts +2 -2
  487. package/dist/mcp/tools-marketplace.d.ts +1 -1
  488. package/dist/mcp/tools-run.d.ts +17 -0
  489. package/dist/mcp/tools-workflow.d.ts +3 -0
  490. package/dist/mcp/types.d.ts +4 -14
  491. package/dist/mcp/workflow-executor.d.ts +57 -19
  492. package/dist/npm-packages.d.ts +1 -1
  493. package/dist/npm-packages.js +10 -473
  494. package/dist/parser/annotation-parser.d.ts +88 -0
  495. package/dist/parser/annotation-suggestion.d.ts +23 -0
  496. package/dist/parser/durable-effect-contract.d.ts +10 -0
  497. package/dist/parser/expression-references.d.ts +101 -0
  498. package/dist/parser/external-node-types.d.ts +69 -0
  499. package/dist/{function-like.d.ts → parser/function-like.d.ts} +10 -3
  500. package/dist/parser/generated-sections.d.ts +25 -0
  501. package/dist/parser/import-resolution.d.ts +67 -0
  502. package/dist/parser/import-stub.d.ts +29 -0
  503. package/dist/parser/jsdoc/config-types.d.ts +209 -0
  504. package/dist/parser/jsdoc/graph-tags.d.ts +54 -0
  505. package/dist/parser/jsdoc/node-type-block.d.ts +23 -0
  506. package/dist/parser/jsdoc/parse-line-once.d.ts +11 -0
  507. package/dist/parser/jsdoc/port-tags.d.ts +42 -0
  508. package/dist/parser/jsdoc/runtime-tags.d.ts +65 -0
  509. package/dist/parser/jsdoc/signature-types.d.ts +52 -0
  510. package/dist/parser/jsdoc/workflow-block.d.ts +22 -0
  511. package/dist/parser/jsdoc-parser.d.ts +23 -0
  512. package/dist/parser/macro-expansion.d.ts +80 -0
  513. package/dist/parser/module-resolution.d.ts +38 -0
  514. package/dist/parser/node-inference.d.ts +39 -0
  515. package/dist/parser/npm-node-types.d.ts +24 -0
  516. package/dist/parser/pack-handlers.d.ts +12 -0
  517. package/dist/parser/path-data-resolution.d.ts +75 -0
  518. package/dist/parser/port-inference.d.ts +15 -0
  519. package/dist/{resolve-package-types.d.ts → parser/resolve-package-types.d.ts} +4 -0
  520. package/dist/parser/serialize-deploy-annotations.d.ts +19 -0
  521. package/dist/parser/tag-registry.d.ts +22 -0
  522. package/dist/parser/workflow-extraction.d.ts +39 -0
  523. package/dist/runtime/ExecutionContext.d.ts +87 -99
  524. package/dist/runtime/continuation-core.d.ts +147 -0
  525. package/dist/runtime/continuation.d.ts +48 -0
  526. package/dist/runtime/debug-controller.d.ts +7 -22
  527. package/dist/runtime/durable-execution.d.ts +176 -0
  528. package/dist/runtime/events.d.ts +16 -1
  529. package/dist/runtime/executable-module-contract.d.ts +16 -0
  530. package/dist/runtime/index.d.ts +13 -10
  531. package/dist/runtime/index.js +947 -9
  532. package/dist/runtime/strict-json.d.ts +15 -0
  533. package/dist/server/access.d.ts +12 -0
  534. package/dist/server/api.d.ts +126 -0
  535. package/dist/server/callback-delivery.d.ts +62 -0
  536. package/dist/server/callback-url.d.ts +44 -0
  537. package/dist/server/context.d.ts +35 -0
  538. package/dist/server/http-error.d.ts +10 -0
  539. package/dist/server/index.d.ts +7 -1
  540. package/dist/server/index.js +125 -6
  541. package/dist/server/openapi-document.d.ts +33 -0
  542. package/dist/server/openapi.d.ts +32 -0
  543. package/dist/server/respond.d.ts +35 -0
  544. package/dist/server/route-params.d.ts +17 -0
  545. package/dist/server/route-plan.d.ts +41 -0
  546. package/dist/server/routes-catalog.d.ts +5 -0
  547. package/dist/server/routes-declared.d.ts +12 -0
  548. package/dist/server/routes-runs.d.ts +8 -0
  549. package/dist/server/run-driver.d.ts +58 -0
  550. package/dist/server/run-view.d.ts +26 -0
  551. package/dist/server/transport.d.ts +35 -0
  552. package/dist/server/types.d.ts +143 -52
  553. package/dist/server/webhook-server.d.ts +12 -38
  554. package/dist/server/workflow-registry.d.ts +7 -4
  555. package/dist/service-registry.d.ts +49 -0
  556. package/dist/service-registry.js +123 -0
  557. package/dist/testing/assertions.d.ts +2 -2
  558. package/dist/testing/index.d.ts +14 -13
  559. package/dist/testing/index.js +582 -24
  560. package/dist/testing/mock-approval.d.ts +3 -5
  561. package/dist/testing/mock-llm.d.ts +2 -3
  562. package/dist/testing/recorder.d.ts +5 -6
  563. package/dist/testing/replayer.d.ts +6 -7
  564. package/dist/testing/run-store-check.d.ts +3 -0
  565. package/dist/testing/token-tracker.d.ts +2 -2
  566. package/dist/{type-mappings.d.ts → types/type-mappings.d.ts} +13 -1
  567. package/dist/utils/error-utils.d.ts +4 -2
  568. package/dist/utils/port-ordering.d.ts +2 -2
  569. package/dist/utils/port-tag-utils.d.ts +1 -1
  570. package/dist/validation/agent-detection.d.ts +17 -5
  571. package/dist/validation/agent-rules.d.ts +6 -7
  572. package/dist/validation/core-rules.d.ts +49 -0
  573. package/dist/validation/design-rules.d.ts +9 -3
  574. package/dist/validation/rule-registry.d.ts +3 -3
  575. package/dist/validation/rules/connections.d.ts +27 -0
  576. package/dist/validation/rules/context.d.ts +11 -0
  577. package/dist/validation/rules/cycles.d.ts +17 -0
  578. package/dist/validation/rules/data-flow.d.ts +19 -0
  579. package/dist/validation/rules/scope-topology.d.ts +35 -0
  580. package/dist/validation/rules/type-compatibility.d.ts +30 -0
  581. package/dist/validation/type-checker.d.ts +39 -0
  582. package/dist/validation/validator-helpers.d.ts +31 -0
  583. package/dist/validation/validator.d.ts +30 -0
  584. package/docs/reference/advanced-annotations.md +277 -60
  585. package/docs/reference/built-in-nodes.md +164 -94
  586. package/docs/reference/cancellation.md +44 -0
  587. package/docs/reference/cli-reference.md +252 -234
  588. package/docs/reference/compilation.md +36 -109
  589. package/docs/reference/concepts.md +80 -63
  590. package/docs/reference/console.md +169 -0
  591. package/docs/reference/debugging.md +26 -57
  592. package/docs/reference/deployment.md +217 -143
  593. package/docs/reference/durable-gates.md +445 -0
  594. package/docs/reference/error-codes.md +90 -43
  595. package/docs/reference/export-interface.md +91 -26
  596. package/docs/reference/iterative-development.md +50 -28
  597. package/docs/reference/jsdoc-grammar.md +66 -311
  598. package/docs/reference/library.md +250 -0
  599. package/docs/reference/marketplace.md +301 -152
  600. package/docs/reference/mcp-tools.md +102 -0
  601. package/docs/reference/node-conversion.md +84 -59
  602. package/docs/reference/orientation.md +68 -0
  603. package/docs/reference/scaffold.md +5 -4
  604. package/docs/reference/tutorial.md +106 -166
  605. package/docs/reference/visual-reference.md +1 -1
  606. package/package.json +85 -50
  607. package/dist/agent/agent-loop.js +0 -156
  608. package/dist/agent/cli-spawn-config.js +0 -65
  609. package/dist/agent/device-connection.d.ts +0 -79
  610. package/dist/agent/device-connection.js +0 -184
  611. package/dist/agent/env-allowlist.js +0 -60
  612. package/dist/agent/providers/anthropic.js +0 -198
  613. package/dist/agent/providers/claude-cli.js +0 -161
  614. package/dist/agent/providers/openai-compat.js +0 -205
  615. package/dist/agent/providers/platform.d.ts +0 -23
  616. package/dist/agent/providers/platform.js +0 -132
  617. package/dist/agent/streaming.js +0 -186
  618. package/dist/agent/types.js +0 -20
  619. package/dist/annotation-generator.d.ts +0 -50
  620. package/dist/annotation-generator.js +0 -743
  621. package/dist/api/builder.js +0 -345
  622. package/dist/api/command-runner.js +0 -787
  623. package/dist/api/compile.js +0 -148
  624. package/dist/api/extract-types.js +0 -57
  625. package/dist/api/generate-in-place.js +0 -1477
  626. package/dist/api/generate.js +0 -514
  627. package/dist/api/helpers.js +0 -285
  628. package/dist/api/inline-runtime.js +0 -526
  629. package/dist/api/manipulation/connections.js +0 -151
  630. package/dist/api/manipulation/index.js +0 -41
  631. package/dist/api/manipulation/node-types.js +0 -200
  632. package/dist/api/manipulation/nodes.js +0 -355
  633. package/dist/api/manipulation/ports.js +0 -228
  634. package/dist/api/manipulation/scopes.js +0 -156
  635. package/dist/api/manipulation/workflow.js +0 -116
  636. package/dist/api/modify-operation.js +0 -177
  637. package/dist/api/parse.js +0 -115
  638. package/dist/api/patterns.d.ts +0 -112
  639. package/dist/api/patterns.js +0 -303
  640. package/dist/api/query.js +0 -840
  641. package/dist/api/templates.js +0 -117
  642. package/dist/api/transform.js +0 -40
  643. package/dist/api/validate.js +0 -64
  644. package/dist/api/validation-registry.js +0 -10
  645. package/dist/api/workflow-file-operations.js +0 -180
  646. package/dist/ast/builder.js +0 -395
  647. package/dist/ast/serialization-node.js +0 -30
  648. package/dist/ast/serialization.js +0 -134
  649. package/dist/ast/types.js +0 -2
  650. package/dist/ast/workflow-utils.js +0 -114
  651. package/dist/body-generator.js +0 -35
  652. package/dist/built-in-nodes/coercion-types.js +0 -61
  653. package/dist/built-in-nodes/delay.js +0 -29
  654. package/dist/built-in-nodes/generated-registry.js +0 -299
  655. package/dist/built-in-nodes/invoke-workflow.js +0 -36
  656. package/dist/built-in-nodes/mock-types.js +0 -42
  657. package/dist/built-in-nodes/wait-for-agent.js +0 -31
  658. package/dist/built-in-nodes/wait-for-event.js +0 -25
  659. package/dist/chevrotain-parser/coerce-parser.js +0 -103
  660. package/dist/chevrotain-parser/connect-parser.js +0 -136
  661. package/dist/chevrotain-parser/fan-parser.js +0 -149
  662. package/dist/chevrotain-parser/grammar-diagrams.js +0 -273
  663. package/dist/chevrotain-parser/index.js +0 -31
  664. package/dist/chevrotain-parser/map-parser.js +0 -130
  665. package/dist/chevrotain-parser/node-parser.js +0 -558
  666. package/dist/chevrotain-parser/path-parser.js +0 -140
  667. package/dist/chevrotain-parser/port-parser.js +0 -519
  668. package/dist/chevrotain-parser/position-parser.d.ts +0 -20
  669. package/dist/chevrotain-parser/position-parser.js +0 -83
  670. package/dist/chevrotain-parser/scope-parser.js +0 -104
  671. package/dist/chevrotain-parser/tokens.js +0 -429
  672. package/dist/chevrotain-parser/trigger-cancel-parser.js +0 -291
  673. package/dist/cli/commands/account.d.ts +0 -4
  674. package/dist/cli/commands/account.js +0 -50
  675. package/dist/cli/commands/ai-credentials.d.ts +0 -12
  676. package/dist/cli/commands/ai-credentials.js +0 -95
  677. package/dist/cli/commands/apikey.d.ts +0 -4
  678. package/dist/cli/commands/apikey.js +0 -64
  679. package/dist/cli/commands/auth.d.ts +0 -9
  680. package/dist/cli/commands/auth.js +0 -255
  681. package/dist/cli/commands/compile.js +0 -331
  682. package/dist/cli/commands/connect.d.ts +0 -4
  683. package/dist/cli/commands/connect.js +0 -163
  684. package/dist/cli/commands/context.js +0 -51
  685. package/dist/cli/commands/create.js +0 -139
  686. package/dist/cli/commands/deploy.d.ts +0 -6
  687. package/dist/cli/commands/deploy.js +0 -74
  688. package/dist/cli/commands/dev.js +0 -227
  689. package/dist/cli/commands/diagram.js +0 -39
  690. package/dist/cli/commands/diff.js +0 -57
  691. package/dist/cli/commands/docs.js +0 -74
  692. package/dist/cli/commands/export.js +0 -153
  693. package/dist/cli/commands/grammar.js +0 -40
  694. package/dist/cli/commands/implement.js +0 -91
  695. package/dist/cli/commands/init-personas.js +0 -541
  696. package/dist/cli/commands/init.js +0 -797
  697. package/dist/cli/commands/market.js +0 -440
  698. package/dist/cli/commands/mcp-setup.js +0 -433
  699. package/dist/cli/commands/migrate.js +0 -91
  700. package/dist/cli/commands/modify.js +0 -58
  701. package/dist/cli/commands/openapi.js +0 -71
  702. package/dist/cli/commands/org.d.ts +0 -8
  703. package/dist/cli/commands/org.js +0 -136
  704. package/dist/cli/commands/pattern.d.ts +0 -34
  705. package/dist/cli/commands/pattern.js +0 -186
  706. package/dist/cli/commands/plugin.d.ts +0 -16
  707. package/dist/cli/commands/plugin.js +0 -176
  708. package/dist/cli/commands/run.js +0 -742
  709. package/dist/cli/commands/serve.js +0 -93
  710. package/dist/cli/commands/status.js +0 -123
  711. package/dist/cli/commands/strip.js +0 -61
  712. package/dist/cli/commands/templates.js +0 -58
  713. package/dist/cli/commands/validate.js +0 -267
  714. package/dist/cli/commands/watch.js +0 -71
  715. package/dist/cli/config/credentials.d.ts +0 -15
  716. package/dist/cli/config/credentials.js +0 -43
  717. package/dist/cli/config/platform-client.d.ts +0 -123
  718. package/dist/cli/config/platform-client.js +0 -248
  719. package/dist/cli/env-setup.js +0 -12
  720. package/dist/cli/index.js +0 -850
  721. package/dist/cli/pack-commands.js +0 -122
  722. package/dist/cli/postinstall.d.ts +0 -16
  723. package/dist/cli/postinstall.js +0 -119
  724. package/dist/cli/templates/ai/mock-provider.js +0 -64
  725. package/dist/cli/templates/ai/types.js +0 -5
  726. package/dist/cli/templates/approvals/index.d.ts +0 -15
  727. package/dist/cli/templates/approvals/index.js +0 -241
  728. package/dist/cli/templates/index.js +0 -123
  729. package/dist/cli/templates/nodes/agent-router.js +0 -114
  730. package/dist/cli/templates/nodes/aggregator.js +0 -63
  731. package/dist/cli/templates/nodes/conversation-memory.js +0 -85
  732. package/dist/cli/templates/nodes/http.js +0 -80
  733. package/dist/cli/templates/nodes/human-approval.js +0 -109
  734. package/dist/cli/templates/nodes/json-extractor.js +0 -119
  735. package/dist/cli/templates/nodes/llm-call.js +0 -106
  736. package/dist/cli/templates/nodes/prompt-template.js +0 -52
  737. package/dist/cli/templates/nodes/rag-retriever.js +0 -128
  738. package/dist/cli/templates/nodes/tool-executor.js +0 -108
  739. package/dist/cli/templates/nodes/transformer.js +0 -68
  740. package/dist/cli/templates/nodes/validator.js +0 -62
  741. package/dist/cli/templates/pack-loader.js +0 -58
  742. package/dist/cli/templates/providers/index.js +0 -239
  743. package/dist/cli/templates/shared/approval-types.js +0 -31
  744. package/dist/cli/templates/shared/llm-types.js +0 -109
  745. package/dist/cli/templates/workflows/aggregator.js +0 -101
  746. package/dist/cli/templates/workflows/ai-agent.js +0 -326
  747. package/dist/cli/templates/workflows/ai-chat.js +0 -167
  748. package/dist/cli/templates/workflows/ai-rag.js +0 -184
  749. package/dist/cli/templates/workflows/ai-react.js +0 -293
  750. package/dist/cli/templates/workflows/conditional.js +0 -139
  751. package/dist/cli/templates/workflows/error-handler.js +0 -145
  752. package/dist/cli/templates/workflows/foreach.js +0 -140
  753. package/dist/cli/templates/workflows/sequential.js +0 -200
  754. package/dist/cli/templates/workflows/webhook.js +0 -158
  755. package/dist/cli/utils/cli-helpers.d.ts +0 -44
  756. package/dist/cli/utils/cli-helpers.js +0 -99
  757. package/dist/cli/utils/logger.js +0 -126
  758. package/dist/cli/utils/parse-int-strict.js +0 -17
  759. package/dist/cli/utils/safe-write.js +0 -54
  760. package/dist/deployment/config/defaults.d.ts +0 -29
  761. package/dist/deployment/config/defaults.js +0 -98
  762. package/dist/deployment/config/loader.d.ts +0 -24
  763. package/dist/deployment/config/loader.js +0 -237
  764. package/dist/deployment/config/types.d.ts +0 -117
  765. package/dist/deployment/config/types.js +0 -5
  766. package/dist/deployment/core/adapters.d.ts +0 -66
  767. package/dist/deployment/core/adapters.js +0 -156
  768. package/dist/deployment/core/executor.d.ts +0 -62
  769. package/dist/deployment/core/executor.js +0 -197
  770. package/dist/deployment/core/formatters.d.ts +0 -42
  771. package/dist/deployment/core/formatters.js +0 -146
  772. package/dist/deployment/openapi/generator.d.ts +0 -146
  773. package/dist/deployment/openapi/generator.js +0 -347
  774. package/dist/deployment/openapi/schema-converter.d.ts +0 -49
  775. package/dist/deployment/openapi/schema-converter.js +0 -192
  776. package/dist/deployment/targets/base.js +0 -855
  777. package/dist/deployment/types.d.ts +0 -140
  778. package/dist/deployment/types.js +0 -8
  779. package/dist/diagram/ascii-renderer.js +0 -528
  780. package/dist/diagram/geometry.js +0 -1267
  781. package/dist/diagram/html-viewer.d.ts +0 -21
  782. package/dist/diagram/html-viewer.js +0 -1689
  783. package/dist/diagram/layout.js +0 -143
  784. package/dist/diagram/orthogonal-router.js +0 -568
  785. package/dist/diagram/renderer.d.ts +0 -3
  786. package/dist/diagram/renderer.js +0 -266
  787. package/dist/diagram/theme.js +0 -282
  788. package/dist/diagram/types.js +0 -2
  789. package/dist/diff/WorkflowDiffer.js +0 -429
  790. package/dist/diff/formatDiff.js +0 -239
  791. package/dist/diff/impact.js +0 -119
  792. package/dist/diff/types.js +0 -35
  793. package/dist/doc-metadata/extractors/annotations.js +0 -638
  794. package/dist/doc-metadata/extractors/cli-commands.js +0 -326
  795. package/dist/doc-metadata/extractors/core-metadata.js +0 -61
  796. package/dist/doc-metadata/extractors/error-codes.js +0 -372
  797. package/dist/doc-metadata/extractors/grammar-rules.js +0 -51
  798. package/dist/doc-metadata/extractors/mcp-tools.js +0 -705
  799. package/dist/doc-metadata/extractors/plugin-api.d.ts +0 -19
  800. package/dist/doc-metadata/extractors/plugin-api.js +0 -279
  801. package/dist/doc-metadata/types.js +0 -5
  802. package/dist/editor-completions/annotationValues.js +0 -146
  803. package/dist/editor-completions/contextParser.js +0 -410
  804. package/dist/editor-completions/dataTypes.js +0 -95
  805. package/dist/editor-completions/goToDefinition.js +0 -112
  806. package/dist/editor-completions/jsDocAnnotations.js +0 -359
  807. package/dist/editor-completions/modifierCompletions.js +0 -197
  808. package/dist/editor-completions/types.js +0 -8
  809. package/dist/export/index.js +0 -212
  810. package/dist/extensions/index.d.ts +0 -16
  811. package/dist/extensions/index.js +0 -17
  812. package/dist/friendly-errors.js +0 -761
  813. package/dist/function-like.js +0 -84
  814. package/dist/generator/async-detection.js +0 -56
  815. package/dist/generator/code-utils.js +0 -551
  816. package/dist/generator/compile-target-registry.d.ts +0 -20
  817. package/dist/generator/compile-target-registry.js +0 -20
  818. package/dist/generator/control-flow.js +0 -358
  819. package/dist/generator/dev-mode-registry.d.ts +0 -27
  820. package/dist/generator/dev-mode-registry.js +0 -20
  821. package/dist/generator/scope-function-generator.js +0 -397
  822. package/dist/generator/unified.js +0 -1831
  823. package/dist/generator.d.ts +0 -54
  824. package/dist/generator.js +0 -101
  825. package/dist/jsdoc-parser.d.ts +0 -377
  826. package/dist/jsdoc-parser.js +0 -1189
  827. package/dist/jsdoc-port-sync/constants.js +0 -103
  828. package/dist/jsdoc-port-sync/diff.js +0 -319
  829. package/dist/jsdoc-port-sync/port-parser.js +0 -579
  830. package/dist/jsdoc-port-sync/rename.js +0 -256
  831. package/dist/jsdoc-port-sync/signature-parser.js +0 -559
  832. package/dist/jsdoc-port-sync/sync.js +0 -653
  833. package/dist/marketplace/manifest.js +0 -194
  834. package/dist/marketplace/registry.js +0 -198
  835. package/dist/marketplace/types.js +0 -9
  836. package/dist/marketplace/validator.js +0 -150
  837. package/dist/mcp/agent-channel.d.ts +0 -35
  838. package/dist/mcp/agent-channel.js +0 -61
  839. package/dist/mcp/auto-registration.d.ts +0 -3
  840. package/dist/mcp/auto-registration.js +0 -62
  841. package/dist/mcp/debug-session.js +0 -25
  842. package/dist/mcp/index.d.ts +0 -11
  843. package/dist/mcp/index.js +0 -10
  844. package/dist/mcp/pack-tools.js +0 -59
  845. package/dist/mcp/prompts.js +0 -68
  846. package/dist/mcp/response-utils.js +0 -97
  847. package/dist/mcp/run-registry.d.ts +0 -29
  848. package/dist/mcp/run-registry.js +0 -24
  849. package/dist/mcp/server.js +0 -63
  850. package/dist/mcp/tools-context.js +0 -51
  851. package/dist/mcp/tools-debug.js +0 -451
  852. package/dist/mcp/tools-diagram.js +0 -97
  853. package/dist/mcp/tools-docs.js +0 -62
  854. package/dist/mcp/tools-export.js +0 -222
  855. package/dist/mcp/tools-marketplace.js +0 -132
  856. package/dist/mcp/tools-model.d.ts +0 -3
  857. package/dist/mcp/tools-model.js +0 -279
  858. package/dist/mcp/tools-pattern.d.ts +0 -3
  859. package/dist/mcp/tools-pattern.js +0 -604
  860. package/dist/mcp/tools-query.js +0 -377
  861. package/dist/mcp/tools-resources.js +0 -41
  862. package/dist/mcp/tools-template.js +0 -119
  863. package/dist/mcp/tools-workflow-run.d.ts +0 -40
  864. package/dist/mcp/tools-workflow-run.js +0 -150
  865. package/dist/mcp/types.js +0 -2
  866. package/dist/mcp/workflow-executor.js +0 -242
  867. package/dist/migration/registry.js +0 -29
  868. package/dist/node-types-generator.js +0 -139
  869. package/dist/parser/tag-registry.js +0 -57
  870. package/dist/parser.d.ts +0 -232
  871. package/dist/parser.js +0 -2500
  872. package/dist/plugin/PluginPanel.d.ts +0 -12
  873. package/dist/plugin/PluginPanel.js +0 -5
  874. package/dist/plugin/index.d.ts +0 -13
  875. package/dist/plugin/index.js +0 -14
  876. package/dist/plugin/types.d.ts +0 -75
  877. package/dist/plugin/types.js +0 -8
  878. package/dist/resolve-package-types.js +0 -123
  879. package/dist/runtime/CancellationError.js +0 -20
  880. package/dist/runtime/ExecutionContext.js +0 -280
  881. package/dist/runtime/builtin-functions.js +0 -549
  882. package/dist/runtime/checkpoint.d.ts +0 -84
  883. package/dist/runtime/checkpoint.js +0 -225
  884. package/dist/runtime/debug-controller.js +0 -247
  885. package/dist/runtime/events.js +0 -2
  886. package/dist/runtime/function-registry.js +0 -66
  887. package/dist/runtime/parameter-resolver.js +0 -113
  888. package/dist/server/types.js +0 -5
  889. package/dist/server/webhook-server.js +0 -269
  890. package/dist/server/workflow-registry.js +0 -202
  891. package/dist/shared-project.js +0 -28
  892. package/dist/sugar-optimizer.js +0 -498
  893. package/dist/testing/assertions.js +0 -127
  894. package/dist/testing/mock-approval.js +0 -98
  895. package/dist/testing/mock-llm.js +0 -119
  896. package/dist/testing/recorder.js +0 -70
  897. package/dist/testing/replayer.js +0 -143
  898. package/dist/testing/token-tracker.js +0 -94
  899. package/dist/type-checker.d.ts +0 -42
  900. package/dist/type-checker.js +0 -190
  901. package/dist/type-mappings.js +0 -131
  902. package/dist/types/branded-ports.d.ts +0 -151
  903. package/dist/types/branded-ports.js +0 -121
  904. package/dist/types/index.d.ts +0 -5
  905. package/dist/types/index.js +0 -5
  906. package/dist/types.d.ts +0 -139
  907. package/dist/types.js +0 -15
  908. package/dist/utils/error-utils.js +0 -27
  909. package/dist/utils/lru-cache.js +0 -40
  910. package/dist/utils/port-ordering.js +0 -81
  911. package/dist/utils/port-tag-utils.js +0 -41
  912. package/dist/utils/string-distance.js +0 -56
  913. package/dist/validation/agent-detection.js +0 -115
  914. package/dist/validation/agent-rules.js +0 -262
  915. package/dist/validation/design-rules.js +0 -377
  916. package/dist/validation/rule-registry.js +0 -37
  917. package/dist/validator.d.ts +0 -113
  918. package/dist/validator.js +0 -1631
  919. package/docs/reference/patterns.md +0 -159
  920. package/scripts/postinstall.cjs +0 -86
  921. /package/dist/{shared-project.d.ts → parser/shared-project.d.ts} +0 -0
  922. /package/dist/{friendly-errors.d.ts → validation/friendly-errors.d.ts} +0 -0
@@ -0,0 +1,1444 @@
1
+ import {
2
+ Arrow,
3
+ AsKeyword,
4
+ CancelOnTag,
5
+ CoerceTag,
6
+ Colon,
7
+ ColorPrefix,
8
+ Comma,
9
+ ConnectTag,
10
+ CstParser,
11
+ Dot,
12
+ Equals,
13
+ ExprPrefix,
14
+ FanInTag,
15
+ FanOutTag,
16
+ IconPrefix,
17
+ Identifier,
18
+ Integer,
19
+ LBracket,
20
+ LParen,
21
+ LabelPrefix,
22
+ MapTag,
23
+ MinimizedKeyword,
24
+ NodeTag,
25
+ OverKeyword,
26
+ PathTag,
27
+ PortLabelPrefix,
28
+ PortOrderPrefix,
29
+ PullExecutionPrefix,
30
+ RBracket,
31
+ RParen,
32
+ RetriesTag,
33
+ ScopeTag,
34
+ SizePrefix,
35
+ StringLiteral,
36
+ SuppressPrefix,
37
+ TagsPrefix,
38
+ ThrottleTag,
39
+ TimeoutTag,
40
+ TriggerTag,
41
+ allTokens,
42
+ createSyntaxDiagramsCode,
43
+ getPortGrammar,
44
+ lexTaggedLine,
45
+ lineFailure,
46
+ runRule,
47
+ unquoteStringLiteral
48
+ } from "./chunk-QYPORSLO.js";
49
+
50
+ // src/chevrotain-parser/node-parser.ts
51
+ var NodeParser = class extends CstParser {
52
+ constructor() {
53
+ super(allTokens);
54
+ this.performSelfAnalysis();
55
+ }
56
+ // Entry rule for node line
57
+ // @node instanceId nodeType [parentNode.scope] [attributes]
58
+ nodeLine = this.RULE("nodeLine", () => {
59
+ this.CONSUME(NodeTag);
60
+ this.CONSUME(Identifier, { LABEL: "instanceId" });
61
+ this.CONSUME2(Identifier, { LABEL: "nodeType" });
62
+ this.OPTION(() => {
63
+ this.SUBRULE(this.parentScopeRef);
64
+ });
65
+ this.MANY(() => {
66
+ this.SUBRULE(this.attributeBracket);
67
+ });
68
+ });
69
+ // parent.scope
70
+ parentScopeRef = this.RULE("parentScopeRef", () => {
71
+ this.CONSUME(Identifier, { LABEL: "parentNode" });
72
+ this.CONSUME(Dot);
73
+ this.CONSUME2(Identifier, { LABEL: "scopeName" });
74
+ });
75
+ // [label: "...", expr: port="value", portOrder: port=N, portLabel: port="label", minimized, pullExecution: triggerPort, size: W H]
76
+ attributeBracket = this.RULE("attributeBracket", () => {
77
+ this.CONSUME(LBracket);
78
+ this.AT_LEAST_ONE_SEP({
79
+ SEP: Comma,
80
+ DEF: () => {
81
+ this.OR([
82
+ { ALT: () => this.SUBRULE(this.labelAttr) },
83
+ { ALT: () => this.SUBRULE(this.exprAttr) },
84
+ { ALT: () => this.SUBRULE(this.portOrderAttr) },
85
+ { ALT: () => this.SUBRULE(this.portLabelAttr) },
86
+ { ALT: () => this.SUBRULE(this.minimizedAttr) },
87
+ { ALT: () => this.SUBRULE(this.pullExecutionAttr) },
88
+ { ALT: () => this.SUBRULE(this.sizeAttr) },
89
+ { ALT: () => this.SUBRULE(this.colorAttr) },
90
+ { ALT: () => this.SUBRULE(this.iconAttr) },
91
+ { ALT: () => this.SUBRULE(this.tagsAttr) },
92
+ { ALT: () => this.SUBRULE(this.suppressAttr) },
93
+ // Catch-all LAST: any `key: "value"` not claimed above lands in the
94
+ // node's `attributes` for a pack to read. INVARIANT: every named
95
+ // attribute above must have its OWN prefix token (label:, color:,
96
+ // size:, …) tokenised before `Identifier`. A named attribute added as
97
+ // a bare `word:` with no dedicated token would tokenise as
98
+ // `Identifier Colon` and be swallowed here instead of parsed as
99
+ // itself. Add a prefix token in tokens.ts for any new named attribute.
100
+ { ALT: () => this.SUBRULE(this.customAttr) }
101
+ ]);
102
+ }
103
+ });
104
+ this.CONSUME(RBracket);
105
+ });
106
+ // label: "..."
107
+ labelAttr = this.RULE("labelAttr", () => {
108
+ this.CONSUME(LabelPrefix);
109
+ this.CONSUME(StringLiteral, { LABEL: "labelValue" });
110
+ });
111
+ // expr: port="value", port2="value2" (comma optional between assignments)
112
+ exprAttr = this.RULE("exprAttr", () => {
113
+ this.CONSUME(ExprPrefix);
114
+ this.SUBRULE(this.exprAssignment);
115
+ this.MANY(() => {
116
+ this.OPTION(() => this.CONSUME(Comma));
117
+ this.SUBRULE2(this.exprAssignment);
118
+ });
119
+ });
120
+ // port="value"
121
+ exprAssignment = this.RULE("exprAssignment", () => {
122
+ this.CONSUME(Identifier, { LABEL: "portName" });
123
+ this.CONSUME(Equals);
124
+ this.CONSUME(StringLiteral, { LABEL: "portValue" });
125
+ });
126
+ // portOrder: port=N,port=N
127
+ portOrderAttr = this.RULE("portOrderAttr", () => {
128
+ this.CONSUME(PortOrderPrefix);
129
+ this.AT_LEAST_ONE_SEP({
130
+ SEP: Comma,
131
+ DEF: () => {
132
+ this.SUBRULE(this.portOrderAssignment);
133
+ }
134
+ });
135
+ });
136
+ // port=N
137
+ portOrderAssignment = this.RULE("portOrderAssignment", () => {
138
+ this.CONSUME(Identifier, { LABEL: "portName" });
139
+ this.CONSUME(Equals);
140
+ this.CONSUME(Integer, { LABEL: "orderValue" });
141
+ });
142
+ // portLabel: port="label",port2="label2"
143
+ portLabelAttr = this.RULE("portLabelAttr", () => {
144
+ this.CONSUME(PortLabelPrefix);
145
+ this.AT_LEAST_ONE_SEP({
146
+ SEP: Comma,
147
+ DEF: () => {
148
+ this.SUBRULE(this.portLabelAssignment);
149
+ }
150
+ });
151
+ });
152
+ // port="label"
153
+ portLabelAssignment = this.RULE("portLabelAssignment", () => {
154
+ this.CONSUME(Identifier, { LABEL: "portName" });
155
+ this.CONSUME(Equals);
156
+ this.CONSUME(StringLiteral, { LABEL: "labelValue" });
157
+ });
158
+ // minimized
159
+ minimizedAttr = this.RULE("minimizedAttr", () => {
160
+ this.CONSUME(MinimizedKeyword);
161
+ });
162
+ // pullExecution: triggerPortName or true/false
163
+ pullExecutionAttr = this.RULE("pullExecutionAttr", () => {
164
+ this.CONSUME(PullExecutionPrefix);
165
+ this.CONSUME(Identifier, { LABEL: "pullValue" });
166
+ });
167
+ // size: width height
168
+ sizeAttr = this.RULE("sizeAttr", () => {
169
+ this.CONSUME(SizePrefix);
170
+ this.CONSUME(Integer, { LABEL: "widthValue" });
171
+ this.CONSUME2(Integer, { LABEL: "heightValue" });
172
+ });
173
+ // color: "value"
174
+ colorAttr = this.RULE("colorAttr", () => {
175
+ this.CONSUME(ColorPrefix);
176
+ this.CONSUME(StringLiteral, { LABEL: "colorValue" });
177
+ });
178
+ // icon: "value"
179
+ iconAttr = this.RULE("iconAttr", () => {
180
+ this.CONSUME(IconPrefix);
181
+ this.CONSUME(StringLiteral, { LABEL: "iconValue" });
182
+ });
183
+ // key: "value" — a generic bracket attribute a pack interprets. Matched last,
184
+ // so it never shadows a named attribute above.
185
+ customAttr = this.RULE("customAttr", () => {
186
+ this.CONSUME(Identifier, { LABEL: "attrKey" });
187
+ this.CONSUME(Colon);
188
+ this.CONSUME(StringLiteral, { LABEL: "attrValue" });
189
+ });
190
+ // tags: "label" "tooltip", "label2"
191
+ tagsAttr = this.RULE("tagsAttr", () => {
192
+ this.CONSUME(TagsPrefix);
193
+ this.AT_LEAST_ONE_SEP({
194
+ SEP: Comma,
195
+ DEF: () => {
196
+ this.SUBRULE(this.tagEntry);
197
+ }
198
+ });
199
+ });
200
+ // suppress: "CODE", "CODE2"
201
+ suppressAttr = this.RULE("suppressAttr", () => {
202
+ this.CONSUME(SuppressPrefix);
203
+ this.AT_LEAST_ONE_SEP({
204
+ SEP: Comma,
205
+ DEF: () => {
206
+ this.CONSUME(StringLiteral, { LABEL: "suppressCode" });
207
+ }
208
+ });
209
+ });
210
+ // "label" ["tooltip"]
211
+ tagEntry = this.RULE("tagEntry", () => {
212
+ this.CONSUME(StringLiteral, { LABEL: "tagLabel" });
213
+ this.OPTION(() => {
214
+ this.CONSUME2(StringLiteral, { LABEL: "tagTooltip" });
215
+ });
216
+ });
217
+ };
218
+ var parserInstance = new NodeParser();
219
+ var BaseVisitor = parserInstance.getBaseCstVisitorConstructor();
220
+ var NodeVisitor = class extends BaseVisitor {
221
+ constructor() {
222
+ super();
223
+ this.validateVisitor();
224
+ }
225
+ nodeLine(ctx) {
226
+ const instanceId = ctx.instanceId[0].image;
227
+ const nodeType = ctx.nodeType[0].image;
228
+ let parentScope;
229
+ let label;
230
+ let expressions;
231
+ let portOrder;
232
+ let portLabel;
233
+ let minimized;
234
+ let pullExecution;
235
+ let size;
236
+ let color;
237
+ let icon;
238
+ let tags;
239
+ let attributes;
240
+ let suppress;
241
+ if (ctx.parentScopeRef) {
242
+ parentScope = this.visit(ctx.parentScopeRef);
243
+ }
244
+ if (ctx.attributeBracket) {
245
+ for (const bracket of ctx.attributeBracket) {
246
+ const attrs = this.visit(bracket);
247
+ if (attrs.label) label = attrs.label;
248
+ if (attrs.expressions) expressions = { ...expressions, ...attrs.expressions };
249
+ if (attrs.portOrder) portOrder = { ...portOrder, ...attrs.portOrder };
250
+ if (attrs.portLabel) portLabel = { ...portLabel, ...attrs.portLabel };
251
+ if (attrs.minimized) minimized = attrs.minimized;
252
+ if (attrs.pullExecution) pullExecution = attrs.pullExecution;
253
+ if (attrs.size) size = attrs.size;
254
+ if (attrs.color) color = attrs.color;
255
+ if (attrs.icon) icon = attrs.icon;
256
+ if (attrs.tags) tags = [...tags || [], ...attrs.tags];
257
+ if (attrs.attributes) attributes = { ...attributes || {}, ...attrs.attributes };
258
+ if (attrs.suppress) suppress = [...suppress || [], ...attrs.suppress];
259
+ }
260
+ }
261
+ return {
262
+ instanceId,
263
+ nodeType,
264
+ ...parentScope && { parentScope },
265
+ ...label && { label },
266
+ ...expressions && { expressions },
267
+ ...portOrder && { portOrder },
268
+ ...portLabel && { portLabel },
269
+ ...minimized && { minimized },
270
+ ...pullExecution && { pullExecution },
271
+ ...size && { size },
272
+ ...color && { color },
273
+ ...icon && { icon },
274
+ ...tags && { tags },
275
+ ...attributes && { attributes },
276
+ ...suppress && { suppress }
277
+ };
278
+ }
279
+ parentScopeRef(ctx) {
280
+ const parentNode = ctx.parentNode[0].image;
281
+ const scopeName = ctx.scopeName[0].image;
282
+ return `${parentNode}.${scopeName}`;
283
+ }
284
+ attributeBracket(ctx) {
285
+ let label;
286
+ let expressions;
287
+ let portOrder;
288
+ let portLabel;
289
+ let minimized;
290
+ let pullExecution;
291
+ let size;
292
+ let color;
293
+ let icon;
294
+ let tags;
295
+ let attributes;
296
+ let suppress;
297
+ if (ctx.labelAttr) {
298
+ for (const attr of ctx.labelAttr) {
299
+ label = this.visit(attr);
300
+ }
301
+ }
302
+ if (ctx.exprAttr) {
303
+ for (const attr of ctx.exprAttr) {
304
+ const exprs = this.visit(attr);
305
+ expressions = { ...expressions, ...exprs };
306
+ }
307
+ }
308
+ if (ctx.portOrderAttr) {
309
+ for (const attr of ctx.portOrderAttr) {
310
+ const orders = this.visit(attr);
311
+ portOrder = { ...portOrder, ...orders };
312
+ }
313
+ }
314
+ if (ctx.portLabelAttr) {
315
+ for (const attr of ctx.portLabelAttr) {
316
+ const labels = this.visit(attr);
317
+ portLabel = { ...portLabel, ...labels };
318
+ }
319
+ }
320
+ if (ctx.minimizedAttr) {
321
+ minimized = true;
322
+ }
323
+ if (ctx.pullExecutionAttr) {
324
+ for (const attr of ctx.pullExecutionAttr) {
325
+ pullExecution = this.visit(attr);
326
+ }
327
+ }
328
+ if (ctx.sizeAttr) {
329
+ for (const attr of ctx.sizeAttr) {
330
+ size = this.visit(attr);
331
+ }
332
+ }
333
+ if (ctx.colorAttr) {
334
+ for (const attr of ctx.colorAttr) {
335
+ color = this.visit(attr);
336
+ }
337
+ }
338
+ if (ctx.iconAttr) {
339
+ for (const attr of ctx.iconAttr) {
340
+ icon = this.visit(attr);
341
+ }
342
+ }
343
+ if (ctx.tagsAttr) {
344
+ for (const attr of ctx.tagsAttr) {
345
+ const parsed = this.visit(attr);
346
+ tags = [...tags || [], ...parsed];
347
+ }
348
+ }
349
+ if (ctx.customAttr) {
350
+ for (const attr of ctx.customAttr) {
351
+ const { key, value } = this.visit(attr);
352
+ attributes = { ...attributes || {}, [key]: value };
353
+ }
354
+ }
355
+ if (ctx.suppressAttr) {
356
+ for (const attr of ctx.suppressAttr) {
357
+ const codes = this.visit(attr);
358
+ suppress = [...suppress || [], ...codes];
359
+ }
360
+ }
361
+ return {
362
+ label,
363
+ expressions,
364
+ portOrder,
365
+ portLabel,
366
+ minimized,
367
+ pullExecution,
368
+ size,
369
+ color,
370
+ icon,
371
+ tags,
372
+ attributes,
373
+ suppress
374
+ };
375
+ }
376
+ labelAttr(ctx) {
377
+ return unquoteStringLiteral(ctx.labelValue[0].image);
378
+ }
379
+ exprAttr(ctx) {
380
+ const result = {};
381
+ if (ctx.exprAssignment) {
382
+ for (const assignment of ctx.exprAssignment) {
383
+ const { name, value } = this.visit(assignment);
384
+ result[name] = value;
385
+ }
386
+ }
387
+ return result;
388
+ }
389
+ exprAssignment(ctx) {
390
+ const name = ctx.portName[0].image;
391
+ const rawValue = ctx.portValue[0].image;
392
+ const value = unquoteStringLiteral(rawValue);
393
+ return { name, value };
394
+ }
395
+ portOrderAttr(ctx) {
396
+ const result = {};
397
+ if (ctx.portOrderAssignment) {
398
+ for (const assignment of ctx.portOrderAssignment) {
399
+ const { name, order } = this.visit(assignment);
400
+ result[name] = order;
401
+ }
402
+ }
403
+ return result;
404
+ }
405
+ portOrderAssignment(ctx) {
406
+ const name = ctx.portName[0].image;
407
+ const order = parseInt(ctx.orderValue[0].image, 10);
408
+ return { name, order };
409
+ }
410
+ portLabelAttr(ctx) {
411
+ const result = {};
412
+ if (ctx.portLabelAssignment) {
413
+ for (const assignment of ctx.portLabelAssignment) {
414
+ const { name, label } = this.visit(assignment);
415
+ result[name] = label;
416
+ }
417
+ }
418
+ return result;
419
+ }
420
+ portLabelAssignment(ctx) {
421
+ const name = ctx.portName[0].image;
422
+ const rawLabel = ctx.labelValue[0].image;
423
+ const label = unquoteStringLiteral(rawLabel);
424
+ return { name, label };
425
+ }
426
+ minimizedAttr() {
427
+ return true;
428
+ }
429
+ pullExecutionAttr(ctx) {
430
+ return ctx.pullValue[0].image;
431
+ }
432
+ sizeAttr(ctx) {
433
+ const width = parseInt(ctx.widthValue[0].image, 10);
434
+ const height = parseInt(ctx.heightValue[0].image, 10);
435
+ return { width, height };
436
+ }
437
+ colorAttr(ctx) {
438
+ return unquoteStringLiteral(ctx.colorValue[0].image);
439
+ }
440
+ iconAttr(ctx) {
441
+ return unquoteStringLiteral(ctx.iconValue[0].image);
442
+ }
443
+ customAttr(ctx) {
444
+ return {
445
+ key: ctx.attrKey[0].image,
446
+ value: unquoteStringLiteral(ctx.attrValue[0].image)
447
+ };
448
+ }
449
+ suppressAttr(ctx) {
450
+ return ctx.suppressCode.map((tok) => unquoteStringLiteral(tok.image));
451
+ }
452
+ tagsAttr(ctx) {
453
+ const result = [];
454
+ if (ctx.tagEntry) {
455
+ for (const entry of ctx.tagEntry) {
456
+ result.push(this.visit(entry));
457
+ }
458
+ }
459
+ return result;
460
+ }
461
+ tagEntry(ctx) {
462
+ const label = unquoteStringLiteral(ctx.tagLabel[0].image);
463
+ const tooltip = ctx.tagTooltip?.[0] ? unquoteStringLiteral(ctx.tagTooltip[0].image) : void 0;
464
+ return { label, ...tooltip && { tooltip } };
465
+ }
466
+ };
467
+ var visitorInstance = new NodeVisitor();
468
+ function unquotedValueHint(input) {
469
+ const attribute = /\[\s*([A-Za-z][A-Za-z0-9]*)\s*:\s*([^\]"]+?)\s*\]/.exec(input);
470
+ if (!attribute) return null;
471
+ const [, name, rawValue] = attribute;
472
+ if (name === "expr") {
473
+ const binding = /^([A-Za-z_$][\w$]*)\s*=\s*(.+)$/.exec(rawValue);
474
+ if (!binding) return null;
475
+ const [, port, value] = binding;
476
+ const isReference = /^[A-Za-z_$][\w$]*(\.[A-Za-z_$][\w$]*)+$/.test(value);
477
+ const quoted = isReference ? `${port}="${value}"` : `${port}="'${value}'"`;
478
+ return `the [expr:] value for "${port}" is not quoted. An [expr:] value is JavaScript and the attribute itself takes a quoted string, so write [expr: ${quoted}].`;
479
+ }
480
+ return `the [${name}:] value is not quoted. Write [${name}: "${rawValue}"].`;
481
+ }
482
+ function parseNodeLine(input, warnings) {
483
+ const expected = "@node instanceId NodeType";
484
+ const tokens = lexTaggedLine(input, NodeTag, {
485
+ onLexError: (message) => {
486
+ warnings.push(lineFailure("node", input, message, expected, { verb: "tokenize" }));
487
+ }
488
+ });
489
+ if (!tokens) return null;
490
+ const { cst, error } = runRule(parserInstance, tokens, () => parserInstance.nodeLine());
491
+ if (error) {
492
+ warnings.push(lineFailure("node", input, unquotedValueHint(input) ?? error.message, expected));
493
+ return null;
494
+ }
495
+ return visitorInstance.visit(cst);
496
+ }
497
+ function getNodeGrammar() {
498
+ return parserInstance.getSerializedGastProductions();
499
+ }
500
+
501
+ // src/chevrotain-parser/connect-parser.ts
502
+ var ConnectParser = class extends CstParser {
503
+ constructor() {
504
+ super(allTokens);
505
+ this.performSelfAnalysis();
506
+ }
507
+ // Entry rule for connect line: @connect A.port -> B.port [as type]
508
+ connectLine = this.RULE("connectLine", () => {
509
+ this.CONSUME(ConnectTag);
510
+ this.SUBRULE(this.portRef, { LABEL: "sourceRef" });
511
+ this.CONSUME(Arrow);
512
+ this.SUBRULE2(this.portRef, { LABEL: "targetRef" });
513
+ this.OPTION(() => {
514
+ this.CONSUME(AsKeyword);
515
+ this.CONSUME(Identifier, { LABEL: "coerceType" });
516
+ });
517
+ });
518
+ // node.port, node.port:scope, or pseudo-node (secret:NAME)
519
+ portRef = this.RULE("portRef", () => {
520
+ this.CONSUME(Identifier, { LABEL: "nodeId" });
521
+ this.OR([
522
+ {
523
+ ALT: () => {
524
+ this.CONSUME(Dot);
525
+ this.CONSUME2(Identifier, { LABEL: "portName" });
526
+ this.OPTION(() => {
527
+ this.CONSUME(Colon);
528
+ this.CONSUME3(Identifier, { LABEL: "scopeName" });
529
+ });
530
+ }
531
+ },
532
+ {
533
+ // pseudo-node: secret:NAME (nodeId="secret", colon, pseudoName="NAME")
534
+ ALT: () => {
535
+ this.CONSUME2(Colon, { LABEL: "pseudoColon" });
536
+ this.CONSUME4(Identifier, { LABEL: "pseudoName" });
537
+ }
538
+ }
539
+ ]);
540
+ });
541
+ };
542
+ var parserInstance2 = new ConnectParser();
543
+ var BaseVisitor2 = parserInstance2.getBaseCstVisitorConstructor();
544
+ var ConnectVisitor = class extends BaseVisitor2 {
545
+ constructor() {
546
+ super();
547
+ this.validateVisitor();
548
+ }
549
+ connectLine(ctx) {
550
+ const source = this.visit(ctx.sourceRef);
551
+ const target = this.visit(ctx.targetRef);
552
+ const result = { source, target };
553
+ if (ctx.coerceType?.[0]) {
554
+ const validTypes = /* @__PURE__ */ new Set(["string", "number", "boolean", "json", "object"]);
555
+ const raw = ctx.coerceType[0].image;
556
+ if (validTypes.has(raw)) {
557
+ result.coerce = raw;
558
+ } else {
559
+ result.invalidCoerceType = raw;
560
+ }
561
+ }
562
+ return result;
563
+ }
564
+ portRef(ctx) {
565
+ const nodeId = ctx.nodeId[0].image;
566
+ if (ctx.pseudoColon) {
567
+ const pseudoName = ctx.pseudoName[0].image;
568
+ return { nodeId: `${nodeId}:${pseudoName}`, portName: "value" };
569
+ }
570
+ const portName = ctx.portName[0].image;
571
+ const scope = ctx.scopeName?.[0]?.image;
572
+ return { nodeId, portName, scope };
573
+ }
574
+ };
575
+ var visitorInstance2 = new ConnectVisitor();
576
+ function parseConnectLine(input, warnings) {
577
+ const tokens = lexTaggedLine(input, ConnectTag);
578
+ if (!tokens) return null;
579
+ const { cst, error } = runRule(parserInstance2, tokens, () => parserInstance2.connectLine());
580
+ if (error) {
581
+ warnings.push(lineFailure("connect", input, error.message, "@connect sourceNode.port -> targetNode.port"));
582
+ return null;
583
+ }
584
+ const result = visitorInstance2.visit(cst);
585
+ if (result.invalidCoerceType) {
586
+ warnings.push(
587
+ `Invalid coerce type "${result.invalidCoerceType}" in @connect. Valid types: string, number, boolean, json, object`
588
+ );
589
+ delete result.invalidCoerceType;
590
+ }
591
+ return result;
592
+ }
593
+ function getConnectGrammar() {
594
+ return parserInstance2.getSerializedGastProductions();
595
+ }
596
+
597
+ // src/chevrotain-parser/scope-parser.ts
598
+ var ScopeParser = class extends CstParser {
599
+ constructor() {
600
+ super(allTokens);
601
+ this.performSelfAnalysis();
602
+ }
603
+ // Entry rule for scope line: @scope scopeName [child1, child2]
604
+ // or @scope container.scopeName [child1, child2]
605
+ scopeLine = this.RULE("scopeLine", () => {
606
+ this.CONSUME(ScopeTag);
607
+ this.SUBRULE(this.scopeRef);
608
+ this.CONSUME(LBracket);
609
+ this.AT_LEAST_ONE_SEP({
610
+ SEP: Comma,
611
+ DEF: () => {
612
+ this.CONSUME(Identifier, { LABEL: "childId" });
613
+ }
614
+ });
615
+ this.CONSUME(RBracket);
616
+ });
617
+ // scopeName or container.scopeName
618
+ scopeRef = this.RULE("scopeRef", () => {
619
+ this.CONSUME(Identifier, { LABEL: "firstPart" });
620
+ this.OPTION(() => {
621
+ this.CONSUME(Dot);
622
+ this.CONSUME2(Identifier, { LABEL: "secondPart" });
623
+ });
624
+ });
625
+ };
626
+ var parserInstance3 = new ScopeParser();
627
+ var BaseVisitor3 = parserInstance3.getBaseCstVisitorConstructor();
628
+ var ScopeVisitor = class extends BaseVisitor3 {
629
+ constructor() {
630
+ super();
631
+ this.validateVisitor();
632
+ }
633
+ scopeLine(ctx) {
634
+ const scopeName = this.visit(ctx.scopeRef);
635
+ const children = ctx.childId.map((token) => token.image);
636
+ return { scopeName, children };
637
+ }
638
+ scopeRef(ctx) {
639
+ const firstPart = ctx.firstPart[0].image;
640
+ if (ctx.secondPart) {
641
+ const secondPart = ctx.secondPart[0].image;
642
+ return `${firstPart}.${secondPart}`;
643
+ }
644
+ return firstPart;
645
+ }
646
+ };
647
+ var visitorInstance3 = new ScopeVisitor();
648
+ function parseScopeLine(input, warnings) {
649
+ const tokens = lexTaggedLine(input, ScopeTag);
650
+ if (!tokens) return null;
651
+ const { cst, error } = runRule(parserInstance3, tokens, () => parserInstance3.scopeLine());
652
+ if (error) {
653
+ warnings.push(lineFailure("scope", input, error.message, "@scope scopeName [child1, child2]"));
654
+ return null;
655
+ }
656
+ return visitorInstance3.visit(cst);
657
+ }
658
+ function getScopeGrammar() {
659
+ return parserInstance3.getSerializedGastProductions();
660
+ }
661
+
662
+ // src/chevrotain-parser/path-parser.ts
663
+ var PathParser = class extends CstParser {
664
+ constructor() {
665
+ super(allTokens);
666
+ this.performSelfAnalysis();
667
+ }
668
+ // Entry rule: @path pathSequence (Comma pathSequence)*
669
+ pathLine = this.RULE("pathLine", () => {
670
+ this.CONSUME(PathTag);
671
+ this.SUBRULE(this.pathSequence, { LABEL: "firstSequence" });
672
+ this.MANY(() => {
673
+ this.CONSUME(Comma);
674
+ this.SUBRULE2(this.pathSequence, { LABEL: "nextSequence" });
675
+ });
676
+ });
677
+ // pathSequence: pathStep (Arrow pathStep)+
678
+ pathSequence = this.RULE("pathSequence", () => {
679
+ this.SUBRULE(this.pathStep, { LABEL: "firstStep" });
680
+ this.AT_LEAST_ONE(() => {
681
+ this.CONSUME(Arrow);
682
+ this.SUBRULE2(this.pathStep, { LABEL: "nextStep" });
683
+ });
684
+ });
685
+ // pathStep: Identifier (Colon Identifier)?
686
+ pathStep = this.RULE("pathStep", () => {
687
+ this.CONSUME(Identifier, { LABEL: "nodeName" });
688
+ this.OPTION(() => {
689
+ this.CONSUME(Colon);
690
+ this.CONSUME2(Identifier, { LABEL: "routeSuffix" });
691
+ });
692
+ });
693
+ };
694
+ var parserInstance4 = new PathParser();
695
+ var BaseVisitor4 = parserInstance4.getBaseCstVisitorConstructor();
696
+ var PathVisitor = class extends BaseVisitor4 {
697
+ warnings = [];
698
+ constructor() {
699
+ super();
700
+ this.validateVisitor();
701
+ }
702
+ setWarnings(warnings) {
703
+ this.warnings = warnings;
704
+ }
705
+ pathLine(ctx) {
706
+ const results = [];
707
+ results.push(this.pathSequence(ctx.firstSequence[0].children));
708
+ if (ctx.nextSequence) {
709
+ for (const seqCst of ctx.nextSequence) {
710
+ results.push(this.pathSequence(seqCst.children));
711
+ }
712
+ }
713
+ return results;
714
+ }
715
+ pathSequence(ctx) {
716
+ const steps = [];
717
+ steps.push(this.pathStep(ctx.firstStep[0].children));
718
+ for (const stepCst of ctx.nextStep) {
719
+ steps.push(this.pathStep(stepCst.children));
720
+ }
721
+ return { steps };
722
+ }
723
+ pathStep(ctx) {
724
+ const node = ctx.nodeName[0].image;
725
+ let route;
726
+ if (ctx.routeSuffix && ctx.routeSuffix.length > 0) {
727
+ const suffix = ctx.routeSuffix[0].image;
728
+ if (suffix === "ok" || suffix === "fail") {
729
+ route = suffix;
730
+ } else {
731
+ this.warnings.push(
732
+ `@path: invalid route suffix ":${suffix}" on node "${node}". Expected ":ok" or ":fail", ignoring suffix.`
733
+ );
734
+ }
735
+ }
736
+ return route ? { node, route } : { node };
737
+ }
738
+ };
739
+ var visitorInstance4 = new PathVisitor();
740
+ function parsePathLine(input, warnings) {
741
+ const tokens = lexTaggedLine(input, PathTag);
742
+ if (!tokens) return null;
743
+ const { cst, error } = runRule(parserInstance4, tokens, () => parserInstance4.pathLine());
744
+ if (error) {
745
+ warnings.push(lineFailure("@path", input, error.message, "@path Start -> nodeA -> nodeB:ok -> Exit"));
746
+ return null;
747
+ }
748
+ visitorInstance4.setWarnings(warnings);
749
+ return visitorInstance4.visit(cst);
750
+ }
751
+ function getPathGrammar() {
752
+ return parserInstance4.getSerializedGastProductions();
753
+ }
754
+
755
+ // src/chevrotain-parser/map-parser.ts
756
+ var MapParser = class extends CstParser {
757
+ constructor() {
758
+ super(allTokens);
759
+ this.performSelfAnalysis();
760
+ }
761
+ // Entry rule: @map instanceId childNode[(inputPort -> outputPort)] over source.port
762
+ mapLine = this.RULE("mapLine", () => {
763
+ this.CONSUME(MapTag);
764
+ this.CONSUME(Identifier, { LABEL: "instanceId" });
765
+ this.CONSUME2(Identifier, { LABEL: "childId" });
766
+ this.OPTION(() => {
767
+ this.SUBRULE(this.portMapping);
768
+ });
769
+ this.CONSUME(OverKeyword);
770
+ this.SUBRULE(this.portRef);
771
+ });
772
+ // (inputPort -> outputPort)
773
+ portMapping = this.RULE("portMapping", () => {
774
+ this.CONSUME(LParen);
775
+ this.CONSUME(Identifier, { LABEL: "inputPort" });
776
+ this.CONSUME(Arrow);
777
+ this.CONSUME2(Identifier, { LABEL: "outputPort" });
778
+ this.CONSUME(RParen);
779
+ });
780
+ // node.port
781
+ portRef = this.RULE("portRef", () => {
782
+ this.CONSUME(Identifier, { LABEL: "sourceNode" });
783
+ this.CONSUME(Dot);
784
+ this.CONSUME2(Identifier, { LABEL: "sourcePort" });
785
+ });
786
+ };
787
+ var parserInstance5 = new MapParser();
788
+ var BaseVisitor5 = parserInstance5.getBaseCstVisitorConstructor();
789
+ var MapVisitor = class extends BaseVisitor5 {
790
+ constructor() {
791
+ super();
792
+ this.validateVisitor();
793
+ }
794
+ mapLine(ctx) {
795
+ const instanceId = ctx.instanceId[0].image;
796
+ const childId = ctx.childId[0].image;
797
+ const portRef = this.visit(ctx.portRef[0]);
798
+ let inputPort;
799
+ let outputPort;
800
+ if (ctx.portMapping) {
801
+ const mapping = this.visit(ctx.portMapping[0]);
802
+ inputPort = mapping.inputPort;
803
+ outputPort = mapping.outputPort;
804
+ }
805
+ return {
806
+ instanceId,
807
+ childId,
808
+ sourceNode: portRef.sourceNode,
809
+ sourcePort: portRef.sourcePort,
810
+ ...inputPort && { inputPort },
811
+ ...outputPort && { outputPort }
812
+ };
813
+ }
814
+ portMapping(ctx) {
815
+ return {
816
+ inputPort: ctx.inputPort[0].image,
817
+ outputPort: ctx.outputPort[0].image
818
+ };
819
+ }
820
+ portRef(ctx) {
821
+ return {
822
+ sourceNode: ctx.sourceNode[0].image,
823
+ sourcePort: ctx.sourcePort[0].image
824
+ };
825
+ }
826
+ };
827
+ var visitorInstance5 = new MapVisitor();
828
+ function parseMapLine(input, warnings) {
829
+ const tokens = lexTaggedLine(input, MapTag);
830
+ if (!tokens) return null;
831
+ const { cst, error } = runRule(parserInstance5, tokens, () => parserInstance5.mapLine());
832
+ if (error) {
833
+ warnings.push(lineFailure("@map", input, error.message, "@map instanceId childNode over source.port"));
834
+ return null;
835
+ }
836
+ return visitorInstance5.visit(cst);
837
+ }
838
+ function getMapGrammar() {
839
+ return parserInstance5.getSerializedGastProductions();
840
+ }
841
+
842
+ // src/chevrotain-parser/trigger-cancel-parser.ts
843
+ var CRON_ITEM = "(?:\\*|[0-9A-Za-z]+(?:-[0-9A-Za-z]+)?)(?:/\\d+)?";
844
+ var CRON_FIELD = `${CRON_ITEM}(?:,${CRON_ITEM})*`;
845
+ var CRON_REGEX = new RegExp(`^${CRON_FIELD}(?:\\s+${CRON_FIELD}){4}$`);
846
+ function isValidCronExpression(expression) {
847
+ return CRON_REGEX.test(expression.trim());
848
+ }
849
+ var TriggerCancelParser = class extends CstParser {
850
+ constructor() {
851
+ super(allTokens);
852
+ this.performSelfAnalysis();
853
+ }
854
+ // @trigger event="agent/request" cron="0 9 * * *"
855
+ triggerLine = this.RULE("triggerLine", () => {
856
+ this.CONSUME(TriggerTag);
857
+ this.MANY(() => {
858
+ this.SUBRULE(this.assignment);
859
+ });
860
+ });
861
+ // @cancelOn event="app/user.deleted" match="data.userId" timeout="1h"
862
+ cancelOnLine = this.RULE("cancelOnLine", () => {
863
+ this.CONSUME(CancelOnTag);
864
+ this.AT_LEAST_ONE(() => {
865
+ this.SUBRULE(this.assignment);
866
+ });
867
+ });
868
+ // @retries 5
869
+ retriesLine = this.RULE("retriesLine", () => {
870
+ this.CONSUME(RetriesTag);
871
+ this.CONSUME(Integer, { LABEL: "retriesValue" });
872
+ });
873
+ // @timeout "30m"
874
+ timeoutLine = this.RULE("timeoutLine", () => {
875
+ this.CONSUME(TimeoutTag);
876
+ this.CONSUME(StringLiteral, { LABEL: "timeoutValue" });
877
+ });
878
+ // @throttle limit=3 period="1m"
879
+ throttleLine = this.RULE("throttleLine", () => {
880
+ this.CONSUME(ThrottleTag);
881
+ this.AT_LEAST_ONE(() => {
882
+ this.SUBRULE(this.assignment);
883
+ });
884
+ });
885
+ // key="value" or key=123
886
+ assignment = this.RULE("assignment", () => {
887
+ this.CONSUME(Identifier, { LABEL: "key" });
888
+ this.CONSUME(Equals);
889
+ this.OR([
890
+ { ALT: () => this.CONSUME(StringLiteral, { LABEL: "strValue" }) },
891
+ { ALT: () => this.CONSUME(Integer, { LABEL: "intValue" }) }
892
+ ]);
893
+ });
894
+ };
895
+ var parserInstance6 = new TriggerCancelParser();
896
+ var BaseVisitor6 = parserInstance6.getBaseCstVisitorConstructor();
897
+ var TRIGGER_KEYS = { event: "str", cron: "str" };
898
+ var CANCEL_ON_KEYS = { event: "str", match: "str", timeout: "str" };
899
+ var THROTTLE_KEYS = { limit: "int", period: "str" };
900
+ var TriggerCancelVisitor = class extends BaseVisitor6 {
901
+ constructor() {
902
+ super();
903
+ this.validateVisitor();
904
+ }
905
+ collect(ctx, allowed) {
906
+ const result = { values: /* @__PURE__ */ new Map(), unknownKeys: [], badValues: [] };
907
+ for (const node of ctx.assignment ?? []) {
908
+ const a = this.visit(node);
909
+ const kind = allowed[a.key];
910
+ if (kind === void 0) {
911
+ result.unknownKeys.push(a.key);
912
+ continue;
913
+ }
914
+ if (kind === "str" && a.str === void 0 || kind === "int" && a.int === void 0) {
915
+ result.badValues.push(a.key);
916
+ continue;
917
+ }
918
+ result.values.set(a.key, a);
919
+ }
920
+ return result;
921
+ }
922
+ triggerLine(ctx) {
923
+ return this.collect(ctx, TRIGGER_KEYS);
924
+ }
925
+ cancelOnLine(ctx) {
926
+ return this.collect(ctx, CANCEL_ON_KEYS);
927
+ }
928
+ throttleLine(ctx) {
929
+ return this.collect(ctx, THROTTLE_KEYS);
930
+ }
931
+ assignment(ctx) {
932
+ const key = ctx.key[0].image;
933
+ if (ctx.strValue?.[0]) {
934
+ return { key, str: unquoteStringLiteral(ctx.strValue[0].image) };
935
+ }
936
+ return { key, int: parseInt(ctx.intValue[0].image, 10) };
937
+ }
938
+ retriesLine(ctx) {
939
+ return { retries: parseInt(ctx.retriesValue[0].image, 10) };
940
+ }
941
+ timeoutLine(ctx) {
942
+ return { timeout: unquoteStringLiteral(ctx.timeoutValue[0].image) };
943
+ }
944
+ };
945
+ var visitorInstance6 = new TriggerCancelVisitor();
946
+ function parseTriggerLine(input, warnings) {
947
+ const tokens = lexTaggedLine(input, TriggerTag);
948
+ if (!tokens) return null;
949
+ const { cst, error } = runRule(parserInstance6, tokens, () => parserInstance6.triggerLine());
950
+ if (error) {
951
+ return null;
952
+ }
953
+ const options = visitorInstance6.visit(cst);
954
+ if (options.values.size === 0 || options.unknownKeys.length > 0 || options.badValues.length > 0) {
955
+ return null;
956
+ }
957
+ const result = {};
958
+ const event = options.values.get("event");
959
+ if (event) result.event = event.str;
960
+ const cron = options.values.get("cron");
961
+ if (cron) result.cron = cron.str;
962
+ if (result.cron && !isValidCronExpression(result.cron)) {
963
+ warnings.push(`Invalid cron expression: "${result.cron}". Expected 5 fields (minute hour day month weekday).`);
964
+ }
965
+ return result;
966
+ }
967
+ function parseCancelOnLine(input, warnings) {
968
+ const tokens = lexTaggedLine(input, CancelOnTag);
969
+ if (!tokens) return null;
970
+ const { cst, error } = runRule(parserInstance6, tokens, () => parserInstance6.cancelOnLine());
971
+ const expected = '@cancelOn event="name" match="field" timeout="duration"';
972
+ if (error) {
973
+ warnings.push(lineFailure("cancelOn", input, error.message, expected));
974
+ return null;
975
+ }
976
+ const options = visitorInstance6.visit(cst);
977
+ const problem = options.unknownKeys.length > 0 ? `unknown option "${options.unknownKeys[0]}"` : options.badValues.length > 0 ? `"${options.badValues[0]}" takes a quoted string` : !options.values.has("event") ? 'event="name" is required' : null;
978
+ if (problem) {
979
+ warnings.push(lineFailure("cancelOn", input, problem, expected));
980
+ return null;
981
+ }
982
+ const result = { event: options.values.get("event").str };
983
+ const match = options.values.get("match");
984
+ if (match) result.match = match.str;
985
+ const timeout = options.values.get("timeout");
986
+ if (timeout) result.timeout = timeout.str;
987
+ return result;
988
+ }
989
+ function parseRetriesLine(input, warnings) {
990
+ const tokens = lexTaggedLine(input, RetriesTag);
991
+ if (!tokens) return null;
992
+ const { cst, error } = runRule(parserInstance6, tokens, () => parserInstance6.retriesLine());
993
+ if (error) {
994
+ warnings.push(lineFailure("retries", input, error.message, "@retries <integer>"));
995
+ return null;
996
+ }
997
+ const result = visitorInstance6.visit(cst);
998
+ if (result.retries < 0) {
999
+ warnings.push(`Invalid @retries value: ${result.retries}. Expected non-negative integer.`);
1000
+ }
1001
+ return result;
1002
+ }
1003
+ function parseTimeoutLine(input, warnings) {
1004
+ const tokens = lexTaggedLine(input, TimeoutTag);
1005
+ if (!tokens) return null;
1006
+ const { cst, error } = runRule(parserInstance6, tokens, () => parserInstance6.timeoutLine());
1007
+ if (error) {
1008
+ warnings.push(lineFailure("timeout", input, error.message, '@timeout "duration"'));
1009
+ return null;
1010
+ }
1011
+ return visitorInstance6.visit(cst);
1012
+ }
1013
+ function parseThrottleLine(input, warnings) {
1014
+ const tokens = lexTaggedLine(input, ThrottleTag);
1015
+ if (!tokens) return null;
1016
+ const { cst, error } = runRule(parserInstance6, tokens, () => parserInstance6.throttleLine());
1017
+ const expected = '@throttle limit=<number> period="duration"';
1018
+ if (error) {
1019
+ warnings.push(lineFailure("throttle", input, error.message, expected));
1020
+ return null;
1021
+ }
1022
+ const options = visitorInstance6.visit(cst);
1023
+ const problem = options.unknownKeys.length > 0 ? `unknown option "${options.unknownKeys[0]}"` : options.badValues.length > 0 ? options.badValues[0] === "limit" ? "limit takes an integer" : `"${options.badValues[0]}" takes a quoted string` : !options.values.has("limit") ? "limit=<number> is required" : null;
1024
+ if (problem) {
1025
+ warnings.push(lineFailure("throttle", input, problem, expected));
1026
+ return null;
1027
+ }
1028
+ const result = { limit: options.values.get("limit").int };
1029
+ const period = options.values.get("period");
1030
+ if (period) result.period = period.str;
1031
+ return result;
1032
+ }
1033
+ function getTriggerCancelGrammar() {
1034
+ return parserInstance6.getSerializedGastProductions();
1035
+ }
1036
+
1037
+ // src/chevrotain-parser/fan-parser.ts
1038
+ var FanParser = class extends CstParser {
1039
+ constructor() {
1040
+ super(allTokens);
1041
+ this.performSelfAnalysis();
1042
+ }
1043
+ // @fanOut portRef Arrow portRef (Comma portRef)*
1044
+ fanOutLine = this.RULE("fanOutLine", () => {
1045
+ this.CONSUME(FanOutTag);
1046
+ this.SUBRULE(this.portRef, { LABEL: "source" });
1047
+ this.CONSUME(Arrow);
1048
+ this.SUBRULE2(this.portRef, { LABEL: "firstTarget" });
1049
+ this.MANY(() => {
1050
+ this.CONSUME(Comma);
1051
+ this.SUBRULE3(this.portRef, { LABEL: "moreTargets" });
1052
+ });
1053
+ });
1054
+ // @fanIn portRef (Comma portRef)* Arrow portRef
1055
+ // Note: Because we can't look ahead past the comma-list to the arrow,
1056
+ // we parse as: @fanIn portRefList Arrow portRef
1057
+ // The last element after Arrow is the target. Everything before is sources.
1058
+ fanInLine = this.RULE("fanInLine", () => {
1059
+ this.CONSUME(FanInTag);
1060
+ this.SUBRULE(this.portRef, { LABEL: "firstSource" });
1061
+ this.MANY(() => {
1062
+ this.CONSUME(Comma);
1063
+ this.SUBRULE2(this.portRef, { LABEL: "moreSources" });
1064
+ });
1065
+ this.CONSUME(Arrow);
1066
+ this.SUBRULE3(this.portRef, { LABEL: "target" });
1067
+ });
1068
+ // portRef: Identifier (Dot Identifier)?
1069
+ portRef = this.RULE("portRef", () => {
1070
+ this.CONSUME(Identifier, { LABEL: "nodeName" });
1071
+ this.OPTION(() => {
1072
+ this.CONSUME(Dot);
1073
+ this.CONSUME2(Identifier, { LABEL: "portName" });
1074
+ });
1075
+ });
1076
+ };
1077
+ var parserInstance7 = new FanParser();
1078
+ var BaseVisitor7 = parserInstance7.getBaseCstVisitorConstructor();
1079
+ var FanVisitor = class extends BaseVisitor7 {
1080
+ constructor() {
1081
+ super();
1082
+ this.validateVisitor();
1083
+ }
1084
+ fanOutLine(ctx) {
1085
+ const source = this.portRef(ctx.source[0].children);
1086
+ const targets = [];
1087
+ targets.push(this.portRef(ctx.firstTarget[0].children));
1088
+ if (ctx.moreTargets) {
1089
+ for (const t of ctx.moreTargets) {
1090
+ targets.push(this.portRef(t.children));
1091
+ }
1092
+ }
1093
+ return { source, targets };
1094
+ }
1095
+ fanInLine(ctx) {
1096
+ const sources = [];
1097
+ sources.push(this.portRef(ctx.firstSource[0].children));
1098
+ if (ctx.moreSources) {
1099
+ for (const s of ctx.moreSources) {
1100
+ sources.push(this.portRef(s.children));
1101
+ }
1102
+ }
1103
+ const target = this.portRef(ctx.target[0].children);
1104
+ return { sources, target };
1105
+ }
1106
+ portRef(ctx) {
1107
+ const node = ctx.nodeName[0].image;
1108
+ const port = ctx.portName?.[0]?.image;
1109
+ return port ? { node, port } : { node };
1110
+ }
1111
+ };
1112
+ var visitorInstance7 = new FanVisitor();
1113
+ function parseFanOutLine(input, warnings) {
1114
+ const tokens = lexTaggedLine(input, FanOutTag);
1115
+ if (!tokens) return null;
1116
+ const { cst, error } = runRule(parserInstance7, tokens, () => parserInstance7.fanOutLine());
1117
+ if (error) {
1118
+ warnings.push(
1119
+ lineFailure("@fanOut", input, error.message, "@fanOut source.port -> target1, target2, target3", {
1120
+ maxLength: 80
1121
+ })
1122
+ );
1123
+ return null;
1124
+ }
1125
+ return visitorInstance7.visit(cst);
1126
+ }
1127
+ function parseFanInLine(input, warnings) {
1128
+ const tokens = lexTaggedLine(input, FanInTag);
1129
+ if (!tokens) return null;
1130
+ const { cst, error } = runRule(parserInstance7, tokens, () => parserInstance7.fanInLine());
1131
+ if (error) {
1132
+ warnings.push(
1133
+ lineFailure("@fanIn", input, error.message, "@fanIn source1.port, source2.port -> target.port", {
1134
+ maxLength: 80
1135
+ })
1136
+ );
1137
+ return null;
1138
+ }
1139
+ return visitorInstance7.visit(cst);
1140
+ }
1141
+ function getFanGrammar() {
1142
+ return parserInstance7.getSerializedGastProductions();
1143
+ }
1144
+
1145
+ // src/chevrotain-parser/coerce-parser.ts
1146
+ var VALID_COERCE_TYPES = /* @__PURE__ */ new Set(["string", "number", "boolean", "json", "object"]);
1147
+ var CoerceParser = class extends CstParser {
1148
+ constructor() {
1149
+ super(allTokens);
1150
+ this.performSelfAnalysis();
1151
+ }
1152
+ // @coerce Identifier portRef Arrow portRef AsKeyword Identifier
1153
+ coerceLine = this.RULE("coerceLine", () => {
1154
+ this.CONSUME(CoerceTag);
1155
+ this.CONSUME(Identifier, { LABEL: "instanceId" });
1156
+ this.SUBRULE(this.portRef, { LABEL: "source" });
1157
+ this.CONSUME(Arrow);
1158
+ this.SUBRULE2(this.portRef, { LABEL: "target" });
1159
+ this.CONSUME(AsKeyword);
1160
+ this.CONSUME2(Identifier, { LABEL: "typeName" });
1161
+ });
1162
+ // portRef: Identifier Dot Identifier
1163
+ portRef = this.RULE("portRef", () => {
1164
+ this.CONSUME(Identifier, { LABEL: "nodeName" });
1165
+ this.CONSUME(Dot);
1166
+ this.CONSUME2(Identifier, { LABEL: "portName" });
1167
+ });
1168
+ };
1169
+ var parserInstance8 = new CoerceParser();
1170
+ var BaseVisitor8 = parserInstance8.getBaseCstVisitorConstructor();
1171
+ var CoerceVisitor = class extends BaseVisitor8 {
1172
+ constructor() {
1173
+ super();
1174
+ this.validateVisitor();
1175
+ }
1176
+ coerceLine(ctx) {
1177
+ const instanceId = ctx.instanceId[0].image;
1178
+ const source = this.portRef(ctx.source[0].children);
1179
+ const target = this.portRef(ctx.target[0].children);
1180
+ const targetType = ctx.typeName[0].image;
1181
+ return { instanceId, source, target, targetType };
1182
+ }
1183
+ portRef(ctx) {
1184
+ return {
1185
+ node: ctx.nodeName[0].image,
1186
+ port: ctx.portName[0].image
1187
+ };
1188
+ }
1189
+ };
1190
+ var visitorInstance8 = new CoerceVisitor();
1191
+ function parseCoerceLine(input, warnings) {
1192
+ const tokens = lexTaggedLine(input, CoerceTag);
1193
+ if (!tokens) return null;
1194
+ const { cst, error } = runRule(parserInstance8, tokens, () => parserInstance8.coerceLine());
1195
+ if (error) {
1196
+ warnings.push(
1197
+ lineFailure("@coerce", input, error.message, "@coerce instanceId source.port -> target.port as type", {
1198
+ maxLength: 80
1199
+ })
1200
+ );
1201
+ return null;
1202
+ }
1203
+ const result = visitorInstance8.visit(cst);
1204
+ if (!VALID_COERCE_TYPES.has(result.targetType)) {
1205
+ warnings.push(
1206
+ `@coerce: invalid target type "${result.targetType}". Valid types: ${[...VALID_COERCE_TYPES].join(", ")}`
1207
+ );
1208
+ return null;
1209
+ }
1210
+ return result;
1211
+ }
1212
+ function getCoerceGrammar() {
1213
+ return parserInstance8.getSerializedGastProductions();
1214
+ }
1215
+
1216
+ // src/chevrotain-parser/grammar-diagrams.ts
1217
+ function serializedToEBNF(productions) {
1218
+ const lines = [];
1219
+ for (const prod of productions) {
1220
+ if (prod.type === "Rule") {
1221
+ const rule = prod;
1222
+ if (rule.definition && rule.name) {
1223
+ const body = definitionToEBNF(rule.definition);
1224
+ lines.push(`${rule.name} ::= ${body}`);
1225
+ }
1226
+ }
1227
+ }
1228
+ return lines.join("\n\n");
1229
+ }
1230
+ function definitionToEBNF(definition) {
1231
+ return definition.map((item) => itemToEBNF(item)).join(" ");
1232
+ }
1233
+ function itemToEBNF(item) {
1234
+ switch (item.type) {
1235
+ case "Terminal": {
1236
+ const pattern = item.pattern || "";
1237
+ if (pattern.startsWith("@")) {
1238
+ return `"${pattern.replace("\\b", "")}"`;
1239
+ }
1240
+ const punctuation = {
1241
+ "->": '"->"',
1242
+ ":": '":"',
1243
+ ",": '","',
1244
+ "=": '"="',
1245
+ "-": '"-"',
1246
+ "\\.": '"."',
1247
+ "\\[": '"["',
1248
+ "\\]": '"]"',
1249
+ "\\(": '"("',
1250
+ "\\)": '")"'
1251
+ };
1252
+ if (punctuation[pattern]) return punctuation[pattern];
1253
+ if (pattern === "scope:") return '"scope:"';
1254
+ if (pattern === "order:") return '"order:"';
1255
+ if (pattern === "placement:") return '"placement:"';
1256
+ if (pattern === "label:") return '"label:"';
1257
+ if (pattern === "expr:") return '"expr:"';
1258
+ if (pattern === "portOrder:") return '"portOrder:"';
1259
+ if (pattern === "pullExecution:") return '"pullExecution:"';
1260
+ if (pattern === "minimized\\b") return '"minimized"';
1261
+ if (pattern === "TOP\\b") return '"TOP"';
1262
+ if (pattern === "BOTTOM\\b") return '"BOTTOM"';
1263
+ if (pattern === "[a-zA-Z_$][a-zA-Z0-9_$]*" || pattern === "[a-zA-Z_$][a-zA-Z0-9_$\\/-]*" || pattern === "[a-zA-Z_$](?:[a-zA-Z0-9_$\\/]|-(?!>))*") {
1264
+ const semanticName = item.terminalLabel || "IDENTIFIER";
1265
+ return semanticName;
1266
+ }
1267
+ if (pattern === "-?\\d+") {
1268
+ return item.terminalLabel || "INTEGER";
1269
+ }
1270
+ if (pattern.includes('(?:[^"\\\\]|\\\\.)*')) {
1271
+ return item.terminalLabel || "STRING";
1272
+ }
1273
+ return item.terminalLabel || item.name || "unknown";
1274
+ }
1275
+ case "NonTerminal":
1276
+ return `<${item.name || "unknown"}>`;
1277
+ case "Alternation": {
1278
+ const alts = (item.definition || []).map((alt) => {
1279
+ if (alt.type === "Alternative" && alt.definition) {
1280
+ return definitionToEBNF(alt.definition);
1281
+ }
1282
+ return itemToEBNF(alt);
1283
+ });
1284
+ return `( ${alts.join(" | ")} )`;
1285
+ }
1286
+ case "Option":
1287
+ return `[ ${definitionToEBNF(item.definition || [])} ]`;
1288
+ case "Repetition":
1289
+ return `{ ${definitionToEBNF(item.definition || [])} }`;
1290
+ case "RepetitionMandatory":
1291
+ return `${definitionToEBNF(item.definition || [])}+`;
1292
+ case "RepetitionMandatoryWithSeparator": {
1293
+ const sepName = item.separator?.name || ",";
1294
+ return `${definitionToEBNF(item.definition || [])} { "${sepName === "Comma" ? "," : sepName}" ${definitionToEBNF(item.definition || [])} }`;
1295
+ }
1296
+ case "RepetitionWithSeparator": {
1297
+ const sep = item.separator?.name || ",";
1298
+ return `[ ${definitionToEBNF(item.definition || [])} { "${sep === "Comma" ? "," : sep}" ${definitionToEBNF(item.definition || [])} } ]`;
1299
+ }
1300
+ default:
1301
+ return `/* ${item.type} */`;
1302
+ }
1303
+ }
1304
+ function getAllGrammars() {
1305
+ return {
1306
+ port: getPortGrammar(),
1307
+ node: getNodeGrammar(),
1308
+ connect: getConnectGrammar(),
1309
+ scope: getScopeGrammar(),
1310
+ path: getPathGrammar(),
1311
+ map: getMapGrammar(),
1312
+ fan: getFanGrammar(),
1313
+ coerce: getCoerceGrammar(),
1314
+ triggerCancel: getTriggerCancelGrammar()
1315
+ };
1316
+ }
1317
+ function generateGrammarDiagrams() {
1318
+ const grammars = getAllGrammars();
1319
+ const allProductions = [
1320
+ ...grammars.port,
1321
+ ...grammars.node,
1322
+ ...grammars.connect,
1323
+ ...grammars.scope,
1324
+ ...grammars.path,
1325
+ ...grammars.map,
1326
+ ...grammars.fan,
1327
+ ...grammars.coerce,
1328
+ ...grammars.triggerCancel
1329
+ ];
1330
+ const html = createSyntaxDiagramsCode(allProductions);
1331
+ const ebnf = serializedToEBNF(allProductions);
1332
+ const customStyles = `
1333
+ <style>
1334
+ body {
1335
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;
1336
+ max-width: 1400px;
1337
+ margin: 0 auto;
1338
+ padding: 2rem;
1339
+ background-color: #f8f9fa !important;
1340
+ }
1341
+ h1.grammar-title {
1342
+ text-align: center;
1343
+ color: #333;
1344
+ margin-bottom: 0.5rem;
1345
+ font-size: 2rem;
1346
+ }
1347
+ .back-link {
1348
+ display: block;
1349
+ text-align: center;
1350
+ margin-bottom: 2rem;
1351
+ color: #4a90d9;
1352
+ text-decoration: none;
1353
+ }
1354
+ .back-link:hover { text-decoration: underline; }
1355
+ .tabs {
1356
+ display: flex;
1357
+ gap: 0;
1358
+ margin-bottom: 0;
1359
+ border-bottom: 2px solid #ddd;
1360
+ }
1361
+ .tab {
1362
+ padding: 0.75rem 1.5rem;
1363
+ cursor: pointer;
1364
+ background: #e9ecef;
1365
+ border: none;
1366
+ border-bottom: 2px solid transparent;
1367
+ margin-bottom: -2px;
1368
+ font-size: 1rem;
1369
+ color: #666;
1370
+ }
1371
+ .tab:hover { background: #dee2e6; }
1372
+ .tab.active {
1373
+ background: #fff;
1374
+ border-bottom-color: #4a90d9;
1375
+ color: #333;
1376
+ font-weight: 500;
1377
+ }
1378
+ .tab-content { display: none; padding: 1rem 0; }
1379
+ .tab-content.active { display: block; }
1380
+ .ebnf-container {
1381
+ background: #1e1e1e;
1382
+ color: #d4d4d4;
1383
+ padding: 1.5rem;
1384
+ border-radius: 8px;
1385
+ overflow-x: auto;
1386
+ font-family: 'Fira Code', 'Consolas', monospace;
1387
+ font-size: 0.9rem;
1388
+ line-height: 1.6;
1389
+ white-space: pre-wrap;
1390
+ }
1391
+ .ebnf-container .rule-name { color: #569cd6; }
1392
+ .ebnf-container .terminal { color: #ce9178; }
1393
+ .ebnf-container .nonterminal { color: #4ec9b0; }
1394
+ .ebnf-container .operator { color: #d4d4d4; }
1395
+ </style>
1396
+ `;
1397
+ const escaped = ebnf.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
1398
+ const ebnfHtml = escaped.replace(/"([^"]+)"/g, "___TERM_START___$1___TERM_END___").replace(/&lt;(\w+)&gt;/g, "___NT_START___$1___NT_END___").replace(/^(\w+)\s*::=/gm, "___RULE_START___$1___RULE_END___ ::=").replace(/___TERM_START___/g, '<span class="terminal">"').replace(/___TERM_END___/g, '"</span>').replace(/___NT_START___/g, '<span class="nonterminal">&lt;').replace(/___NT_END___/g, "&gt;</span>").replace(/___RULE_START___/g, '<span class="rule-name">').replace(/___RULE_END___/g, "</span>");
1399
+ const header = `
1400
+ <h1 class="grammar-title">Flow Weaver JSDoc Grammar</h1>
1401
+ <a href="index.html" class="back-link">\u2190 Back to API Documentation</a>
1402
+ <div class="tabs">
1403
+ <button class="tab active" onclick="showTab('diagrams')">Railroad Diagrams</button>
1404
+ <button class="tab" onclick="showTab('ebnf')">EBNF Text</button>
1405
+ </div>
1406
+ <div id="ebnf" class="tab-content">
1407
+ <div class="ebnf-container">${ebnfHtml}</div>
1408
+ </div>
1409
+ <script>
1410
+ function showTab(id) {
1411
+ document.querySelectorAll('.tab-content').forEach(el => el.classList.remove('active'));document.querySelectorAll('.tab').forEach(el => el.classList.remove('active'));document.getElementById(id).classList.add('active');event.target.classList.add('active');
1412
+ }
1413
+ </script>
1414
+ `;
1415
+ return html.replace("</style>", `</style>${customStyles}`).replace('<div id="diagrams"', `${header}<div id="diagrams" class="tab-content active"`);
1416
+ }
1417
+ function generateGrammarDiagramFor(grammarName) {
1418
+ const grammars = getAllGrammars();
1419
+ const grammar = grammars[grammarName];
1420
+ const html = createSyntaxDiagramsCode(grammar);
1421
+ const title = grammarName.charAt(0).toUpperCase() + grammarName.slice(1);
1422
+ const header = `<h1 style="text-align:center;color:#333">${title} Grammar</h1>`;
1423
+ return html.replace('<div id="diagrams"', `${header}<div id="diagrams"`);
1424
+ }
1425
+
1426
+ export {
1427
+ parseNodeLine,
1428
+ parseConnectLine,
1429
+ parseScopeLine,
1430
+ parseMapLine,
1431
+ parsePathLine,
1432
+ parseFanOutLine,
1433
+ parseFanInLine,
1434
+ parseCoerceLine,
1435
+ parseTriggerLine,
1436
+ parseCancelOnLine,
1437
+ parseRetriesLine,
1438
+ parseTimeoutLine,
1439
+ parseThrottleLine,
1440
+ serializedToEBNF,
1441
+ getAllGrammars,
1442
+ generateGrammarDiagrams,
1443
+ generateGrammarDiagramFor
1444
+ };