@synergenius/flow-weaver 0.2.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 (466) hide show
  1. package/LICENSE +122 -0
  2. package/README.md +315 -0
  3. package/dist/annotation-generator.d.ts +45 -0
  4. package/dist/annotation-generator.js +557 -0
  5. package/dist/api/builder.d.ts +223 -0
  6. package/dist/api/builder.js +345 -0
  7. package/dist/api/compile.d.ts +92 -0
  8. package/dist/api/compile.js +149 -0
  9. package/dist/api/extract-types.d.ts +29 -0
  10. package/dist/api/extract-types.js +57 -0
  11. package/dist/api/generate-in-place.d.ts +73 -0
  12. package/dist/api/generate-in-place.js +1353 -0
  13. package/dist/api/generate.d.ts +83 -0
  14. package/dist/api/generate.js +510 -0
  15. package/dist/api/helpers.d.ts +248 -0
  16. package/dist/api/helpers.js +285 -0
  17. package/dist/api/index.d.ts +46 -0
  18. package/dist/api/index.js +45 -0
  19. package/dist/api/inline-runtime.d.ts +27 -0
  20. package/dist/api/inline-runtime.js +551 -0
  21. package/dist/api/manipulation/connections.d.ts +79 -0
  22. package/dist/api/manipulation/connections.js +151 -0
  23. package/dist/api/manipulation/index.d.ts +34 -0
  24. package/dist/api/manipulation/index.js +41 -0
  25. package/dist/api/manipulation/node-types.d.ts +123 -0
  26. package/dist/api/manipulation/node-types.js +200 -0
  27. package/dist/api/manipulation/nodes.d.ts +144 -0
  28. package/dist/api/manipulation/nodes.js +333 -0
  29. package/dist/api/manipulation/ports.d.ts +59 -0
  30. package/dist/api/manipulation/ports.js +228 -0
  31. package/dist/api/manipulation/scopes.d.ts +52 -0
  32. package/dist/api/manipulation/scopes.js +156 -0
  33. package/dist/api/manipulation/validation.d.ts +6 -0
  34. package/dist/api/manipulation/validation.js +6 -0
  35. package/dist/api/manipulation/workflow.d.ts +81 -0
  36. package/dist/api/manipulation/workflow.js +116 -0
  37. package/dist/api/manipulation.d.ts +8 -0
  38. package/dist/api/manipulation.js +8 -0
  39. package/dist/api/parse.d.ts +48 -0
  40. package/dist/api/parse.js +110 -0
  41. package/dist/api/patterns.d.ts +112 -0
  42. package/dist/api/patterns.js +306 -0
  43. package/dist/api/query.d.ts +429 -0
  44. package/dist/api/query.js +816 -0
  45. package/dist/api/templates.d.ts +98 -0
  46. package/dist/api/templates.js +117 -0
  47. package/dist/api/transform.d.ts +31 -0
  48. package/dist/api/transform.js +40 -0
  49. package/dist/api/validate.d.ts +25 -0
  50. package/dist/api/validate.js +39 -0
  51. package/dist/api/workflow-file-operations.d.ts +29 -0
  52. package/dist/api/workflow-file-operations.js +180 -0
  53. package/dist/ast/builder.d.ts +210 -0
  54. package/dist/ast/builder.js +395 -0
  55. package/dist/ast/index.d.ts +5 -0
  56. package/dist/ast/index.js +5 -0
  57. package/dist/ast/serialization-node.d.ts +6 -0
  58. package/dist/ast/serialization-node.js +30 -0
  59. package/dist/ast/serialization.d.ts +43 -0
  60. package/dist/ast/serialization.js +134 -0
  61. package/dist/ast/types.d.ts +852 -0
  62. package/dist/ast/types.js +2 -0
  63. package/dist/ast/workflow-utils.d.ts +54 -0
  64. package/dist/ast/workflow-utils.js +114 -0
  65. package/dist/body-generator.d.ts +31 -0
  66. package/dist/body-generator.js +35 -0
  67. package/dist/built-in-nodes/delay.d.ts +11 -0
  68. package/dist/built-in-nodes/delay.js +29 -0
  69. package/dist/built-in-nodes/index.d.ts +5 -0
  70. package/dist/built-in-nodes/index.js +4 -0
  71. package/dist/built-in-nodes/invoke-workflow.d.ts +13 -0
  72. package/dist/built-in-nodes/invoke-workflow.js +25 -0
  73. package/dist/built-in-nodes/mock-types.d.ts +18 -0
  74. package/dist/built-in-nodes/mock-types.js +12 -0
  75. package/dist/built-in-nodes/wait-for-event.d.ts +13 -0
  76. package/dist/built-in-nodes/wait-for-event.js +25 -0
  77. package/dist/chevrotain-parser/connect-parser.d.ts +24 -0
  78. package/dist/chevrotain-parser/connect-parser.js +98 -0
  79. package/dist/chevrotain-parser/grammar-diagrams.d.ts +29 -0
  80. package/dist/chevrotain-parser/grammar-diagrams.js +264 -0
  81. package/dist/chevrotain-parser/index.d.ts +25 -0
  82. package/dist/chevrotain-parser/index.js +27 -0
  83. package/dist/chevrotain-parser/map-parser.d.ts +33 -0
  84. package/dist/chevrotain-parser/map-parser.js +130 -0
  85. package/dist/chevrotain-parser/node-parser.d.ts +36 -0
  86. package/dist/chevrotain-parser/node-parser.js +466 -0
  87. package/dist/chevrotain-parser/path-parser.d.ts +28 -0
  88. package/dist/chevrotain-parser/path-parser.js +118 -0
  89. package/dist/chevrotain-parser/port-parser.d.ts +36 -0
  90. package/dist/chevrotain-parser/port-parser.js +442 -0
  91. package/dist/chevrotain-parser/position-parser.d.ts +20 -0
  92. package/dist/chevrotain-parser/position-parser.js +83 -0
  93. package/dist/chevrotain-parser/scope-parser.d.ts +19 -0
  94. package/dist/chevrotain-parser/scope-parser.js +104 -0
  95. package/dist/chevrotain-parser/tokens.d.ts +78 -0
  96. package/dist/chevrotain-parser/tokens.js +384 -0
  97. package/dist/chevrotain-parser/trigger-cancel-parser.d.ts +50 -0
  98. package/dist/chevrotain-parser/trigger-cancel-parser.js +282 -0
  99. package/dist/cli/commands/changelog.d.ts +13 -0
  100. package/dist/cli/commands/changelog.js +135 -0
  101. package/dist/cli/commands/compile.d.ts +64 -0
  102. package/dist/cli/commands/compile.js +278 -0
  103. package/dist/cli/commands/create.d.ts +33 -0
  104. package/dist/cli/commands/create.js +147 -0
  105. package/dist/cli/commands/describe.d.ts +68 -0
  106. package/dist/cli/commands/describe.js +377 -0
  107. package/dist/cli/commands/dev.d.ts +32 -0
  108. package/dist/cli/commands/dev.js +384 -0
  109. package/dist/cli/commands/diagram.d.ts +13 -0
  110. package/dist/cli/commands/diagram.js +33 -0
  111. package/dist/cli/commands/diff.d.ts +11 -0
  112. package/dist/cli/commands/diff.js +59 -0
  113. package/dist/cli/commands/doctor.d.ts +57 -0
  114. package/dist/cli/commands/doctor.js +719 -0
  115. package/dist/cli/commands/export.d.ts +57 -0
  116. package/dist/cli/commands/export.js +163 -0
  117. package/dist/cli/commands/grammar.d.ts +9 -0
  118. package/dist/cli/commands/grammar.js +39 -0
  119. package/dist/cli/commands/init.d.ts +59 -0
  120. package/dist/cli/commands/init.js +435 -0
  121. package/dist/cli/commands/listen.d.ts +16 -0
  122. package/dist/cli/commands/listen.js +39 -0
  123. package/dist/cli/commands/market.d.ts +52 -0
  124. package/dist/cli/commands/market.js +436 -0
  125. package/dist/cli/commands/migrate.d.ts +13 -0
  126. package/dist/cli/commands/migrate.js +89 -0
  127. package/dist/cli/commands/openapi.d.ts +37 -0
  128. package/dist/cli/commands/openapi.js +67 -0
  129. package/dist/cli/commands/pattern.d.ts +34 -0
  130. package/dist/cli/commands/pattern.js +185 -0
  131. package/dist/cli/commands/plugin.d.ts +16 -0
  132. package/dist/cli/commands/plugin.js +176 -0
  133. package/dist/cli/commands/run.d.ts +49 -0
  134. package/dist/cli/commands/run.js +191 -0
  135. package/dist/cli/commands/serve.d.ts +45 -0
  136. package/dist/cli/commands/serve.js +81 -0
  137. package/dist/cli/commands/templates.d.ts +8 -0
  138. package/dist/cli/commands/templates.js +54 -0
  139. package/dist/cli/commands/ui.d.ts +16 -0
  140. package/dist/cli/commands/ui.js +130 -0
  141. package/dist/cli/commands/validate.d.ts +12 -0
  142. package/dist/cli/commands/validate.js +247 -0
  143. package/dist/cli/commands/watch.d.ts +9 -0
  144. package/dist/cli/commands/watch.js +70 -0
  145. package/dist/cli/flow-weaver.mjs +92924 -0
  146. package/dist/cli/index.d.ts +9 -0
  147. package/dist/cli/index.js +742 -0
  148. package/dist/cli/templates/ai/mock-provider.d.ts +7 -0
  149. package/dist/cli/templates/ai/mock-provider.js +64 -0
  150. package/dist/cli/templates/ai/types.d.ts +47 -0
  151. package/dist/cli/templates/ai/types.js +5 -0
  152. package/dist/cli/templates/approvals/index.d.ts +15 -0
  153. package/dist/cli/templates/approvals/index.js +241 -0
  154. package/dist/cli/templates/index.d.ts +102 -0
  155. package/dist/cli/templates/index.js +101 -0
  156. package/dist/cli/templates/nodes/agent-router.d.ts +3 -0
  157. package/dist/cli/templates/nodes/agent-router.js +114 -0
  158. package/dist/cli/templates/nodes/aggregator.d.ts +7 -0
  159. package/dist/cli/templates/nodes/aggregator.js +63 -0
  160. package/dist/cli/templates/nodes/conversation-memory.d.ts +3 -0
  161. package/dist/cli/templates/nodes/conversation-memory.js +85 -0
  162. package/dist/cli/templates/nodes/http.d.ts +7 -0
  163. package/dist/cli/templates/nodes/http.js +80 -0
  164. package/dist/cli/templates/nodes/human-approval.d.ts +3 -0
  165. package/dist/cli/templates/nodes/human-approval.js +110 -0
  166. package/dist/cli/templates/nodes/json-extractor.d.ts +3 -0
  167. package/dist/cli/templates/nodes/json-extractor.js +119 -0
  168. package/dist/cli/templates/nodes/llm-call.d.ts +3 -0
  169. package/dist/cli/templates/nodes/llm-call.js +106 -0
  170. package/dist/cli/templates/nodes/prompt-template.d.ts +3 -0
  171. package/dist/cli/templates/nodes/prompt-template.js +52 -0
  172. package/dist/cli/templates/nodes/rag-retriever.d.ts +3 -0
  173. package/dist/cli/templates/nodes/rag-retriever.js +128 -0
  174. package/dist/cli/templates/nodes/tool-executor.d.ts +3 -0
  175. package/dist/cli/templates/nodes/tool-executor.js +108 -0
  176. package/dist/cli/templates/nodes/transformer.d.ts +7 -0
  177. package/dist/cli/templates/nodes/transformer.js +68 -0
  178. package/dist/cli/templates/nodes/validator.d.ts +7 -0
  179. package/dist/cli/templates/nodes/validator.js +62 -0
  180. package/dist/cli/templates/providers/index.d.ts +14 -0
  181. package/dist/cli/templates/providers/index.js +239 -0
  182. package/dist/cli/templates/shared/approval-types.d.ts +9 -0
  183. package/dist/cli/templates/shared/approval-types.js +31 -0
  184. package/dist/cli/templates/shared/llm-types.d.ts +15 -0
  185. package/dist/cli/templates/shared/llm-types.js +104 -0
  186. package/dist/cli/templates/workflows/aggregator.d.ts +7 -0
  187. package/dist/cli/templates/workflows/aggregator.js +104 -0
  188. package/dist/cli/templates/workflows/ai-agent-durable.d.ts +8 -0
  189. package/dist/cli/templates/workflows/ai-agent-durable.js +338 -0
  190. package/dist/cli/templates/workflows/ai-agent.d.ts +31 -0
  191. package/dist/cli/templates/workflows/ai-agent.js +326 -0
  192. package/dist/cli/templates/workflows/ai-chat.d.ts +7 -0
  193. package/dist/cli/templates/workflows/ai-chat.js +169 -0
  194. package/dist/cli/templates/workflows/ai-pipeline-durable.d.ts +8 -0
  195. package/dist/cli/templates/workflows/ai-pipeline-durable.js +330 -0
  196. package/dist/cli/templates/workflows/ai-rag.d.ts +7 -0
  197. package/dist/cli/templates/workflows/ai-rag.js +186 -0
  198. package/dist/cli/templates/workflows/ai-react.d.ts +7 -0
  199. package/dist/cli/templates/workflows/ai-react.js +294 -0
  200. package/dist/cli/templates/workflows/conditional.d.ts +12 -0
  201. package/dist/cli/templates/workflows/conditional.js +142 -0
  202. package/dist/cli/templates/workflows/error-handler.d.ts +7 -0
  203. package/dist/cli/templates/workflows/error-handler.js +147 -0
  204. package/dist/cli/templates/workflows/foreach.d.ts +7 -0
  205. package/dist/cli/templates/workflows/foreach.js +143 -0
  206. package/dist/cli/templates/workflows/sequential.d.ts +7 -0
  207. package/dist/cli/templates/workflows/sequential.js +198 -0
  208. package/dist/cli/templates/workflows/webhook.d.ts +7 -0
  209. package/dist/cli/templates/workflows/webhook.js +161 -0
  210. package/dist/cli/utils/logger.d.ts +15 -0
  211. package/dist/cli/utils/logger.js +46 -0
  212. package/dist/constants.d.ts +100 -0
  213. package/dist/constants.js +125 -0
  214. package/dist/defaults.d.ts +3 -0
  215. package/dist/defaults.js +3 -0
  216. package/dist/deployment/config/defaults.d.ts +29 -0
  217. package/dist/deployment/config/defaults.js +98 -0
  218. package/dist/deployment/config/loader.d.ts +24 -0
  219. package/dist/deployment/config/loader.js +236 -0
  220. package/dist/deployment/config/types.d.ts +117 -0
  221. package/dist/deployment/config/types.js +5 -0
  222. package/dist/deployment/core/adapters.d.ts +90 -0
  223. package/dist/deployment/core/adapters.js +251 -0
  224. package/dist/deployment/core/executor.d.ts +62 -0
  225. package/dist/deployment/core/executor.js +197 -0
  226. package/dist/deployment/core/formatters.d.ts +57 -0
  227. package/dist/deployment/core/formatters.js +170 -0
  228. package/dist/deployment/index.d.ts +31 -0
  229. package/dist/deployment/index.js +48 -0
  230. package/dist/deployment/openapi/generator.d.ts +146 -0
  231. package/dist/deployment/openapi/generator.js +347 -0
  232. package/dist/deployment/openapi/schema-converter.d.ts +49 -0
  233. package/dist/deployment/openapi/schema-converter.js +192 -0
  234. package/dist/deployment/targets/base.d.ts +316 -0
  235. package/dist/deployment/targets/base.js +823 -0
  236. package/dist/deployment/targets/cloudflare.d.ts +23 -0
  237. package/dist/deployment/targets/cloudflare.js +1125 -0
  238. package/dist/deployment/targets/inngest.d.ts +38 -0
  239. package/dist/deployment/targets/inngest.js +926 -0
  240. package/dist/deployment/targets/lambda.d.ts +23 -0
  241. package/dist/deployment/targets/lambda.js +1289 -0
  242. package/dist/deployment/targets/vercel.d.ts +23 -0
  243. package/dist/deployment/targets/vercel.js +886 -0
  244. package/dist/deployment/types.d.ts +183 -0
  245. package/dist/deployment/types.js +8 -0
  246. package/dist/diagram/geometry.d.ts +26 -0
  247. package/dist/diagram/geometry.js +850 -0
  248. package/dist/diagram/index.d.ts +16 -0
  249. package/dist/diagram/index.js +42 -0
  250. package/dist/diagram/layout.d.ts +11 -0
  251. package/dist/diagram/layout.js +143 -0
  252. package/dist/diagram/orthogonal-router.d.ts +79 -0
  253. package/dist/diagram/orthogonal-router.js +568 -0
  254. package/dist/diagram/renderer.d.ts +3 -0
  255. package/dist/diagram/renderer.js +207 -0
  256. package/dist/diagram/theme.d.ts +20 -0
  257. package/dist/diagram/theme.js +189 -0
  258. package/dist/diagram/types.d.ts +70 -0
  259. package/dist/diagram/types.js +2 -0
  260. package/dist/diff/WorkflowDiffer.d.ts +13 -0
  261. package/dist/diff/WorkflowDiffer.js +429 -0
  262. package/dist/diff/formatDiff.d.ts +10 -0
  263. package/dist/diff/formatDiff.js +220 -0
  264. package/dist/diff/impact.d.ts +29 -0
  265. package/dist/diff/impact.js +119 -0
  266. package/dist/diff/index.d.ts +10 -0
  267. package/dist/diff/index.js +9 -0
  268. package/dist/diff/types.d.ts +138 -0
  269. package/dist/diff/types.js +35 -0
  270. package/dist/doc-metadata/extractors/annotations.d.ts +56 -0
  271. package/dist/doc-metadata/extractors/annotations.js +337 -0
  272. package/dist/doc-metadata/extractors/cli-commands.d.ts +17 -0
  273. package/dist/doc-metadata/extractors/cli-commands.js +355 -0
  274. package/dist/doc-metadata/extractors/mcp-tools.d.ts +16 -0
  275. package/dist/doc-metadata/extractors/mcp-tools.js +689 -0
  276. package/dist/doc-metadata/extractors/plugin-api.d.ts +19 -0
  277. package/dist/doc-metadata/extractors/plugin-api.js +279 -0
  278. package/dist/doc-metadata/index.d.ts +5 -0
  279. package/dist/doc-metadata/index.js +4 -0
  280. package/dist/doc-metadata/types.d.ts +120 -0
  281. package/dist/doc-metadata/types.js +5 -0
  282. package/dist/editor-completions/annotationValues.d.ts +12 -0
  283. package/dist/editor-completions/annotationValues.js +138 -0
  284. package/dist/editor-completions/contextParser.d.ts +40 -0
  285. package/dist/editor-completions/contextParser.js +410 -0
  286. package/dist/editor-completions/dataTypes.d.ts +16 -0
  287. package/dist/editor-completions/dataTypes.js +95 -0
  288. package/dist/editor-completions/goToDefinition.d.ts +27 -0
  289. package/dist/editor-completions/goToDefinition.js +112 -0
  290. package/dist/editor-completions/index.d.ts +39 -0
  291. package/dist/editor-completions/index.js +181 -0
  292. package/dist/editor-completions/jsDocAnnotations.d.ts +29 -0
  293. package/dist/editor-completions/jsDocAnnotations.js +357 -0
  294. package/dist/editor-completions/modifierCompletions.d.ts +17 -0
  295. package/dist/editor-completions/modifierCompletions.js +197 -0
  296. package/dist/editor-completions/types.d.ts +119 -0
  297. package/dist/editor-completions/types.js +8 -0
  298. package/dist/export/index.d.ts +68 -0
  299. package/dist/export/index.js +1074 -0
  300. package/dist/export/templates.d.ts +24 -0
  301. package/dist/export/templates.js +186 -0
  302. package/dist/friendly-errors.d.ts +35 -0
  303. package/dist/friendly-errors.js +375 -0
  304. package/dist/function-like.d.ts +38 -0
  305. package/dist/function-like.js +83 -0
  306. package/dist/generated-branding.d.ts +16 -0
  307. package/dist/generated-branding.js +22 -0
  308. package/dist/generator/async-detection.d.ts +27 -0
  309. package/dist/generator/async-detection.js +56 -0
  310. package/dist/generator/code-utils.d.ts +76 -0
  311. package/dist/generator/code-utils.js +410 -0
  312. package/dist/generator/control-flow.d.ts +54 -0
  313. package/dist/generator/control-flow.js +284 -0
  314. package/dist/generator/inngest.d.ts +53 -0
  315. package/dist/generator/inngest.js +1126 -0
  316. package/dist/generator/scope-function-generator.d.ts +78 -0
  317. package/dist/generator/scope-function-generator.js +360 -0
  318. package/dist/generator/unified.d.ts +42 -0
  319. package/dist/generator/unified.js +1504 -0
  320. package/dist/generator.d.ts +54 -0
  321. package/dist/generator.js +100 -0
  322. package/dist/index.d.ts +85 -0
  323. package/dist/index.js +89 -0
  324. package/dist/jsdoc-parser.d.ts +308 -0
  325. package/dist/jsdoc-parser.js +923 -0
  326. package/dist/jsdoc-port-sync/constants.d.ts +41 -0
  327. package/dist/jsdoc-port-sync/constants.js +103 -0
  328. package/dist/jsdoc-port-sync/diff.d.ts +76 -0
  329. package/dist/jsdoc-port-sync/diff.js +319 -0
  330. package/dist/jsdoc-port-sync/index.d.ts +42 -0
  331. package/dist/jsdoc-port-sync/index.js +45 -0
  332. package/dist/jsdoc-port-sync/port-parser.d.ts +68 -0
  333. package/dist/jsdoc-port-sync/port-parser.js +579 -0
  334. package/dist/jsdoc-port-sync/rename.d.ts +21 -0
  335. package/dist/jsdoc-port-sync/rename.js +256 -0
  336. package/dist/jsdoc-port-sync/signature-parser.d.ts +104 -0
  337. package/dist/jsdoc-port-sync/signature-parser.js +559 -0
  338. package/dist/jsdoc-port-sync/sync.d.ts +36 -0
  339. package/dist/jsdoc-port-sync/sync.js +644 -0
  340. package/dist/jsdoc-port-sync.d.ts +10 -0
  341. package/dist/jsdoc-port-sync.js +10 -0
  342. package/dist/marketplace/index.d.ts +11 -0
  343. package/dist/marketplace/index.js +10 -0
  344. package/dist/marketplace/manifest.d.ts +32 -0
  345. package/dist/marketplace/manifest.js +176 -0
  346. package/dist/marketplace/registry.d.ts +30 -0
  347. package/dist/marketplace/registry.js +100 -0
  348. package/dist/marketplace/types.d.ts +154 -0
  349. package/dist/marketplace/types.js +9 -0
  350. package/dist/marketplace/validator.d.ts +13 -0
  351. package/dist/marketplace/validator.js +131 -0
  352. package/dist/mcp/auto-registration.d.ts +3 -0
  353. package/dist/mcp/auto-registration.js +62 -0
  354. package/dist/mcp/editor-connection.d.ts +50 -0
  355. package/dist/mcp/editor-connection.js +125 -0
  356. package/dist/mcp/event-buffer.d.ts +62 -0
  357. package/dist/mcp/event-buffer.js +150 -0
  358. package/dist/mcp/index.d.ts +12 -0
  359. package/dist/mcp/index.js +11 -0
  360. package/dist/mcp/resources.d.ts +14 -0
  361. package/dist/mcp/resources.js +55 -0
  362. package/dist/mcp/response-utils.d.ts +63 -0
  363. package/dist/mcp/response-utils.js +89 -0
  364. package/dist/mcp/server.d.ts +4 -0
  365. package/dist/mcp/server.js +99 -0
  366. package/dist/mcp/tools-diagram.d.ts +8 -0
  367. package/dist/mcp/tools-diagram.js +53 -0
  368. package/dist/mcp/tools-editor.d.ts +5 -0
  369. package/dist/mcp/tools-editor.js +190 -0
  370. package/dist/mcp/tools-export.d.ts +9 -0
  371. package/dist/mcp/tools-export.js +180 -0
  372. package/dist/mcp/tools-marketplace.d.ts +9 -0
  373. package/dist/mcp/tools-marketplace.js +132 -0
  374. package/dist/mcp/tools-pattern.d.ts +3 -0
  375. package/dist/mcp/tools-pattern.js +783 -0
  376. package/dist/mcp/tools-query.d.ts +3 -0
  377. package/dist/mcp/tools-query.js +364 -0
  378. package/dist/mcp/tools-template.d.ts +10 -0
  379. package/dist/mcp/tools-template.js +119 -0
  380. package/dist/mcp/types.d.ts +70 -0
  381. package/dist/mcp/types.js +8 -0
  382. package/dist/mcp/workflow-executor.d.ts +47 -0
  383. package/dist/mcp/workflow-executor.js +133 -0
  384. package/dist/migration/registry.d.ts +30 -0
  385. package/dist/migration/registry.js +29 -0
  386. package/dist/node-types-generator.d.ts +49 -0
  387. package/dist/node-types-generator.js +139 -0
  388. package/dist/npm-packages.d.ts +56 -0
  389. package/dist/npm-packages.js +255 -0
  390. package/dist/parser.d.ts +204 -0
  391. package/dist/parser.js +2100 -0
  392. package/dist/plugin/PluginPanel.d.ts +12 -0
  393. package/dist/plugin/PluginPanel.js +5 -0
  394. package/dist/plugin/index.d.ts +13 -0
  395. package/dist/plugin/index.js +14 -0
  396. package/dist/plugin/types.d.ts +75 -0
  397. package/dist/plugin/types.js +8 -0
  398. package/dist/resolve-package-types.d.ts +17 -0
  399. package/dist/resolve-package-types.js +123 -0
  400. package/dist/runtime/CancellationError.d.ts +11 -0
  401. package/dist/runtime/CancellationError.js +20 -0
  402. package/dist/runtime/ExecutionContext.d.ts +146 -0
  403. package/dist/runtime/ExecutionContext.js +235 -0
  404. package/dist/runtime/builtin-functions.d.ts +8 -0
  405. package/dist/runtime/builtin-functions.js +549 -0
  406. package/dist/runtime/events.d.ts +50 -0
  407. package/dist/runtime/events.js +2 -0
  408. package/dist/runtime/function-registry.d.ts +59 -0
  409. package/dist/runtime/function-registry.js +66 -0
  410. package/dist/runtime/index.d.ts +7 -0
  411. package/dist/runtime/index.js +7 -0
  412. package/dist/runtime/parameter-resolver.d.ts +62 -0
  413. package/dist/runtime/parameter-resolver.js +113 -0
  414. package/dist/server/index.d.ts +7 -0
  415. package/dist/server/index.js +6 -0
  416. package/dist/server/types.d.ts +93 -0
  417. package/dist/server/types.js +5 -0
  418. package/dist/server/webhook-server.d.ts +50 -0
  419. package/dist/server/webhook-server.js +269 -0
  420. package/dist/server/workflow-registry.d.ts +61 -0
  421. package/dist/server/workflow-registry.js +202 -0
  422. package/dist/shared-project.d.ts +9 -0
  423. package/dist/shared-project.js +28 -0
  424. package/dist/sugar-optimizer.d.ts +40 -0
  425. package/dist/sugar-optimizer.js +387 -0
  426. package/dist/testing/assertions.d.ts +51 -0
  427. package/dist/testing/assertions.js +127 -0
  428. package/dist/testing/index.d.ts +30 -0
  429. package/dist/testing/index.js +24 -0
  430. package/dist/testing/mock-approval.d.ts +81 -0
  431. package/dist/testing/mock-approval.js +98 -0
  432. package/dist/testing/mock-llm.d.ts +124 -0
  433. package/dist/testing/mock-llm.js +119 -0
  434. package/dist/testing/recorder.d.ts +72 -0
  435. package/dist/testing/recorder.js +70 -0
  436. package/dist/testing/replayer.d.ts +56 -0
  437. package/dist/testing/replayer.js +143 -0
  438. package/dist/testing/token-tracker.d.ts +71 -0
  439. package/dist/testing/token-tracker.js +94 -0
  440. package/dist/type-checker.d.ts +42 -0
  441. package/dist/type-checker.js +190 -0
  442. package/dist/type-mappings.d.ts +29 -0
  443. package/dist/type-mappings.js +125 -0
  444. package/dist/types/branded-ports.d.ts +151 -0
  445. package/dist/types/branded-ports.js +121 -0
  446. package/dist/types/index.d.ts +5 -0
  447. package/dist/types/index.js +5 -0
  448. package/dist/types.d.ts +139 -0
  449. package/dist/types.js +15 -0
  450. package/dist/utils/error-utils.d.ts +15 -0
  451. package/dist/utils/error-utils.js +27 -0
  452. package/dist/utils/lru-cache.d.ts +15 -0
  453. package/dist/utils/lru-cache.js +40 -0
  454. package/dist/utils/port-ordering.d.ts +26 -0
  455. package/dist/utils/port-ordering.js +88 -0
  456. package/dist/utils/port-tag-utils.d.ts +23 -0
  457. package/dist/utils/port-tag-utils.js +41 -0
  458. package/dist/utils/string-distance.d.ts +14 -0
  459. package/dist/utils/string-distance.js +56 -0
  460. package/dist/validation/agent-detection.d.ts +33 -0
  461. package/dist/validation/agent-detection.js +115 -0
  462. package/dist/validation/agent-rules.d.ts +48 -0
  463. package/dist/validation/agent-rules.js +262 -0
  464. package/dist/validator.d.ts +92 -0
  465. package/dist/validator.js +970 -0
  466. package/package.json +109 -0
@@ -0,0 +1,248 @@
1
+ /**
2
+ * Helper utilities for API manipulation operations
3
+ * Provides immutability via Immer and validation wrappers
4
+ */
5
+ import { type Draft } from "immer";
6
+ import { type ValidationResult } from "./validate.js";
7
+ import type { TWorkflowAST, TNodeInstanceAST, TPortReference } from "../ast/types.js";
8
+ /**
9
+ * Wrapper for all mutation operations that ensures:
10
+ * 1. Immutability via Immer's structural sharing (only clones what changes)
11
+ * 2. Validation after operation (ensures every operation produces valid AST)
12
+ * 3. Proper error handling (throws on validation failure)
13
+ *
14
+ * This is the foundation of all manipulation API functions.
15
+ * Each operation can mutate the draft as if it were mutable,
16
+ * but Immer returns a new immutable AST with structural sharing.
17
+ *
18
+ * @param ast - The workflow AST to operate on
19
+ * @param operation - Function that mutates the draft
20
+ * @param operationName - Optional name for better error messages
21
+ * @returns New immutable WorkflowAST
22
+ * @throws {Error} If validation fails after operation
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const newAst = withValidation(ast, draft => {
27
+ * draft.instances.push(newNode);
28
+ * }, 'addNode');
29
+ * ```
30
+ */
31
+ export declare function withValidation<T extends TWorkflowAST>(ast: T, operation: (draft: Draft<T>) => void, operationName?: string): T;
32
+ /**
33
+ * Wrapper for mutation operations with minimal validation.
34
+ * Only validates operation-specific requirements (e.g., "does this node exist?")
35
+ * but does NOT validate the entire workflow.
36
+ *
37
+ * This allows operations to succeed even when the workflow has other validation
38
+ * errors, preventing a frustrating "can't move nodes because workflow is broken"
39
+ * experience while still catching obvious mistakes like typos.
40
+ *
41
+ * @param ast - The workflow AST to operate on
42
+ * @param operation - Function that mutates the draft
43
+ * @param checks - Optional validation checks specific to this operation
44
+ * @param operationName - Optional name for better error messages
45
+ * @returns New immutable WorkflowAST
46
+ * @throws {Error} If operation-specific checks fail
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const newAst = withMinimalValidation(
51
+ * ast,
52
+ * draft => { draft.instances = draft.instances.filter(n => n.id !== nodeId); },
53
+ * [(result) => assertNodeExists(result, nodeId)],
54
+ * 'removeNode'
55
+ * );
56
+ * ```
57
+ */
58
+ export declare function withMinimalValidation<T extends TWorkflowAST>(ast: T, operation: (draft: Draft<T>) => void, checks?: Array<(result: T) => void>, operationName?: string): T;
59
+ /**
60
+ * Wrapper for UI-only mutation operations that ensures immutability
61
+ * but performs NO validation. Use this for metadata changes that don't
62
+ * affect workflow correctness (e.g., node positions, labels, UI state).
63
+ *
64
+ * This allows users to make cosmetic changes even when the workflow
65
+ * has validation errors, providing a smooth editing experience.
66
+ *
67
+ * @param ast - The workflow AST to operate on
68
+ * @param operation - Function that mutates the draft
69
+ * @returns New immutable WorkflowAST
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * const newAst = withoutValidation(ast, draft => {
74
+ * const node = draft.instances.find(n => n.id === nodeId);
75
+ * if (node) node.x = 100;
76
+ * });
77
+ * ```
78
+ */
79
+ export declare function withoutValidation<T extends TWorkflowAST>(ast: T, operation: (draft: Draft<T>) => void): T;
80
+ /**
81
+ * Options for node removal operations
82
+ */
83
+ export interface RemoveOptions {
84
+ /**
85
+ * Whether to remove all connections to/from the node
86
+ * @default true
87
+ */
88
+ removeConnections?: boolean;
89
+ /**
90
+ * Whether to validate after removal
91
+ * @default true
92
+ */
93
+ validateAfter?: boolean;
94
+ }
95
+ /**
96
+ * Filter options for querying nodes
97
+ */
98
+ export interface NodeFilter {
99
+ /** Filter by node type name */
100
+ type?: string;
101
+ /** Filter by parent scope */
102
+ scope?: string;
103
+ /** Custom filter predicate */
104
+ predicate?: (node: TNodeInstanceAST) => boolean;
105
+ }
106
+ /**
107
+ * Validates and normalizes port reference format
108
+ * Accepts either string format ("nodeId.portName") or object format ({ node, port })
109
+ *
110
+ * @param ref - Port reference to validate
111
+ * @returns Validated TPortReference object
112
+ * @throws {Error} If format is invalid
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * // String format
117
+ * const ref1 = validatePortReference("processor1.input");
118
+ * // Returns: { node: "processor1", port: "input" }
119
+ *
120
+ * // Object format
121
+ * const ref2 = validatePortReference({ node: "processor1", port: "input" });
122
+ * // Returns: { node: "processor1", port: "input" }
123
+ *
124
+ * // Invalid format throws error
125
+ * validatePortReference("invalid"); // Throws: Invalid port reference format
126
+ * ```
127
+ */
128
+ export declare function validatePortReference(ref: string | TPortReference): TPortReference;
129
+ /**
130
+ * Checks if two port references point to the same port
131
+ * Compares both node ID and port name for equality
132
+ *
133
+ * @param a - First port reference
134
+ * @param b - Second port reference
135
+ * @returns True if both references point to the same port
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * const ref1 = { node: "processor1", port: "input" };
140
+ * const ref2 = { node: "processor1", port: "input" };
141
+ * const ref3 = { node: "processor1", port: "output" };
142
+ *
143
+ * portReferencesEqual(ref1, ref2); // true
144
+ * portReferencesEqual(ref1, ref3); // false
145
+ * ```
146
+ */
147
+ export declare function portReferencesEqual(a: TPortReference, b: TPortReference): boolean;
148
+ /**
149
+ * Formats a port reference object as a string
150
+ * Converts { node, port } to "node.port" format
151
+ *
152
+ * @param ref - Port reference to format
153
+ * @returns String representation in "node.port" format
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * const ref = { node: "processor1", port: "input" };
158
+ * const str = formatPortReference(ref);
159
+ * // Returns: "processor1.input"
160
+ * ```
161
+ */
162
+ export declare function formatPortReference(ref: TPortReference): string;
163
+ /**
164
+ * Helper to generate unique node IDs
165
+ * Uses base name + incrementing counter
166
+ *
167
+ * @param ast - Workflow AST
168
+ * @param baseName - Base name for the ID
169
+ * @returns Unique node ID
170
+ *
171
+ * @example
172
+ * ```typescript
173
+ * generateUniqueNodeId(ast, 'processor') // Returns 'processor', 'processor1', 'processor2', etc.
174
+ * ```
175
+ */
176
+ export declare function generateUniqueNodeId(ast: TWorkflowAST, baseName: string): string;
177
+ /**
178
+ * Asserts that a node type exists in the workflow
179
+ * Useful for validation before adding node instances
180
+ *
181
+ * @param ast - Workflow AST (or Immer draft)
182
+ * @param typeName - Node type function name to check
183
+ * @throws {Error} If node type doesn't exist (lists available types)
184
+ *
185
+ * @example
186
+ * ```typescript
187
+ * // Before adding a node, verify its type exists
188
+ * assertNodeTypeExists(workflow, "processData");
189
+ * const node = addNode(workflow, { id: "proc1", nodeType: "processData" });
190
+ *
191
+ * // Throws with helpful message if missing
192
+ * assertNodeTypeExists(workflow, "invalid");
193
+ * // Error: Node type "invalid" not found. Available types: processData, transformData
194
+ * ```
195
+ */
196
+ export declare function assertNodeTypeExists(ast: TWorkflowAST, typeName: string): void;
197
+ /**
198
+ * Asserts that a node instance exists in the workflow
199
+ * Useful for validation before operations like rename or remove
200
+ *
201
+ * @param ast - Workflow AST (or Immer draft)
202
+ * @param nodeId - Node instance ID to check
203
+ * @throws {Error} If node doesn't exist (lists available nodes)
204
+ *
205
+ * @example
206
+ * ```typescript
207
+ * // Before renaming a node, verify it exists
208
+ * assertNodeExists(workflow, "processor1");
209
+ * const updated = renameNode(workflow, "processor1", "processor_renamed");
210
+ *
211
+ * // Throws with helpful message if missing
212
+ * assertNodeExists(workflow, "missing");
213
+ * // Error: Node "missing" not found. Available nodes: processor1, transformer1
214
+ * ```
215
+ */
216
+ export declare function assertNodeExists(ast: TWorkflowAST, nodeId: string): void;
217
+ /**
218
+ * Asserts that a node instance does NOT exist in the workflow
219
+ * Useful for validation before adding new nodes to prevent ID conflicts
220
+ *
221
+ * @param ast - Workflow AST (or Immer draft)
222
+ * @param nodeId - Node instance ID to check
223
+ * @throws {Error} If node already exists
224
+ *
225
+ * @example
226
+ * ```typescript
227
+ * // Before adding a node, verify ID is unique
228
+ * assertNodeNotExists(workflow, "newProcessor");
229
+ * const updated = addNode(workflow, { id: "newProcessor", nodeType: "process" });
230
+ *
231
+ * // Throws if ID is taken
232
+ * assertNodeNotExists(workflow, "processor1");
233
+ * // Error: Node "processor1" already exists
234
+ * ```
235
+ */
236
+ export declare function assertNodeNotExists(ast: TWorkflowAST, nodeId: string): void;
237
+ /**
238
+ * Result type for operations that may produce warnings
239
+ */
240
+ export interface OperationResult<T = void> {
241
+ /** Result value (if applicable) */
242
+ value?: T;
243
+ /** Validation result */
244
+ validation: ValidationResult;
245
+ /** Whether operation succeeded */
246
+ success: boolean;
247
+ }
248
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1,285 @@
1
+ /**
2
+ * Helper utilities for API manipulation operations
3
+ * Provides immutability via Immer and validation wrappers
4
+ */
5
+ import { produce, enableMapSet } from "immer";
6
+ import { validateWorkflow } from "./validate.js";
7
+ import { getErrorMessage } from "../utils/error-utils.js";
8
+ // Enable Map/Set support for Immer
9
+ enableMapSet();
10
+ /**
11
+ * Wrapper for all mutation operations that ensures:
12
+ * 1. Immutability via Immer's structural sharing (only clones what changes)
13
+ * 2. Validation after operation (ensures every operation produces valid AST)
14
+ * 3. Proper error handling (throws on validation failure)
15
+ *
16
+ * This is the foundation of all manipulation API functions.
17
+ * Each operation can mutate the draft as if it were mutable,
18
+ * but Immer returns a new immutable AST with structural sharing.
19
+ *
20
+ * @param ast - The workflow AST to operate on
21
+ * @param operation - Function that mutates the draft
22
+ * @param operationName - Optional name for better error messages
23
+ * @returns New immutable WorkflowAST
24
+ * @throws {Error} If validation fails after operation
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const newAst = withValidation(ast, draft => {
29
+ * draft.instances.push(newNode);
30
+ * }, 'addNode');
31
+ * ```
32
+ */
33
+ export function withValidation(ast, operation, operationName) {
34
+ // Execute operation with Immer
35
+ const result = produce(ast, operation);
36
+ // Validate the final result (not the draft)
37
+ const validation = validateWorkflow(result);
38
+ if (validation.errors.length > 0) {
39
+ const context = operationName ? ` during ${operationName}` : "";
40
+ const errorDetails = validation.errors
41
+ .slice(0, 3)
42
+ .map((e) => ` - ${e.message}`)
43
+ .join("\n");
44
+ throw new Error(`Validation failed${context}:\n${errorDetails}${validation.errors.length > 3 ? `\n ... and ${validation.errors.length - 3} more errors` : ""}`);
45
+ }
46
+ return result;
47
+ }
48
+ /**
49
+ * Wrapper for mutation operations with minimal validation.
50
+ * Only validates operation-specific requirements (e.g., "does this node exist?")
51
+ * but does NOT validate the entire workflow.
52
+ *
53
+ * This allows operations to succeed even when the workflow has other validation
54
+ * errors, preventing a frustrating "can't move nodes because workflow is broken"
55
+ * experience while still catching obvious mistakes like typos.
56
+ *
57
+ * @param ast - The workflow AST to operate on
58
+ * @param operation - Function that mutates the draft
59
+ * @param checks - Optional validation checks specific to this operation
60
+ * @param operationName - Optional name for better error messages
61
+ * @returns New immutable WorkflowAST
62
+ * @throws {Error} If operation-specific checks fail
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * const newAst = withMinimalValidation(
67
+ * ast,
68
+ * draft => { draft.instances = draft.instances.filter(n => n.id !== nodeId); },
69
+ * [(result) => assertNodeExists(result, nodeId)],
70
+ * 'removeNode'
71
+ * );
72
+ * ```
73
+ */
74
+ export function withMinimalValidation(ast, operation, checks, operationName) {
75
+ // Execute operation with Immer
76
+ const result = produce(ast, operation);
77
+ // Run operation-specific checks (if provided)
78
+ if (checks) {
79
+ try {
80
+ checks.forEach(check => check(result));
81
+ }
82
+ catch (error) {
83
+ const context = operationName ? ` during ${operationName}` : "";
84
+ throw new Error(`${getErrorMessage(error)}${context}`);
85
+ }
86
+ }
87
+ return result;
88
+ }
89
+ /**
90
+ * Wrapper for UI-only mutation operations that ensures immutability
91
+ * but performs NO validation. Use this for metadata changes that don't
92
+ * affect workflow correctness (e.g., node positions, labels, UI state).
93
+ *
94
+ * This allows users to make cosmetic changes even when the workflow
95
+ * has validation errors, providing a smooth editing experience.
96
+ *
97
+ * @param ast - The workflow AST to operate on
98
+ * @param operation - Function that mutates the draft
99
+ * @returns New immutable WorkflowAST
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * const newAst = withoutValidation(ast, draft => {
104
+ * const node = draft.instances.find(n => n.id === nodeId);
105
+ * if (node) node.x = 100;
106
+ * });
107
+ * ```
108
+ */
109
+ export function withoutValidation(ast, operation) {
110
+ // Execute operation with Immer (immutability only, no validation)
111
+ return produce(ast, operation);
112
+ }
113
+ /**
114
+ * Validates and normalizes port reference format
115
+ * Accepts either string format ("nodeId.portName") or object format ({ node, port })
116
+ *
117
+ * @param ref - Port reference to validate
118
+ * @returns Validated TPortReference object
119
+ * @throws {Error} If format is invalid
120
+ *
121
+ * @example
122
+ * ```typescript
123
+ * // String format
124
+ * const ref1 = validatePortReference("processor1.input");
125
+ * // Returns: { node: "processor1", port: "input" }
126
+ *
127
+ * // Object format
128
+ * const ref2 = validatePortReference({ node: "processor1", port: "input" });
129
+ * // Returns: { node: "processor1", port: "input" }
130
+ *
131
+ * // Invalid format throws error
132
+ * validatePortReference("invalid"); // Throws: Invalid port reference format
133
+ * ```
134
+ */
135
+ export function validatePortReference(ref) {
136
+ if (typeof ref === "string") {
137
+ const parts = ref.split(".");
138
+ if (parts.length !== 2) {
139
+ throw new Error(`Invalid port reference format: "${ref}". Expected "nodeId.portName"`);
140
+ }
141
+ return { node: parts[0], port: parts[1] };
142
+ }
143
+ if (!ref.node || !ref.port) {
144
+ throw new Error(`Invalid port reference: missing node or port property`);
145
+ }
146
+ return ref;
147
+ }
148
+ /**
149
+ * Checks if two port references point to the same port
150
+ * Compares both node ID and port name for equality
151
+ *
152
+ * @param a - First port reference
153
+ * @param b - Second port reference
154
+ * @returns True if both references point to the same port
155
+ *
156
+ * @example
157
+ * ```typescript
158
+ * const ref1 = { node: "processor1", port: "input" };
159
+ * const ref2 = { node: "processor1", port: "input" };
160
+ * const ref3 = { node: "processor1", port: "output" };
161
+ *
162
+ * portReferencesEqual(ref1, ref2); // true
163
+ * portReferencesEqual(ref1, ref3); // false
164
+ * ```
165
+ */
166
+ export function portReferencesEqual(a, b) {
167
+ // Include scope in comparison - scoped ports are different from non-scoped ports
168
+ return a.node === b.node && a.port === b.port && (a.scope ?? null) === (b.scope ?? null);
169
+ }
170
+ /**
171
+ * Formats a port reference object as a string
172
+ * Converts { node, port } to "node.port" format
173
+ *
174
+ * @param ref - Port reference to format
175
+ * @returns String representation in "node.port" format
176
+ *
177
+ * @example
178
+ * ```typescript
179
+ * const ref = { node: "processor1", port: "input" };
180
+ * const str = formatPortReference(ref);
181
+ * // Returns: "processor1.input"
182
+ * ```
183
+ */
184
+ export function formatPortReference(ref) {
185
+ return `${ref.node}.${ref.port}`;
186
+ }
187
+ /**
188
+ * Helper to generate unique node IDs
189
+ * Uses base name + incrementing counter
190
+ *
191
+ * @param ast - Workflow AST
192
+ * @param baseName - Base name for the ID
193
+ * @returns Unique node ID
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * generateUniqueNodeId(ast, 'processor') // Returns 'processor', 'processor1', 'processor2', etc.
198
+ * ```
199
+ */
200
+ export function generateUniqueNodeId(ast, baseName) {
201
+ const existingIds = new Set(ast.instances.map((n) => n.id));
202
+ // Try base name first
203
+ if (!existingIds.has(baseName)) {
204
+ return baseName;
205
+ }
206
+ // Try with counter
207
+ let counter = 1;
208
+ while (existingIds.has(`${baseName}${counter}`)) {
209
+ counter++;
210
+ }
211
+ return `${baseName}${counter}`;
212
+ }
213
+ /**
214
+ * Asserts that a node type exists in the workflow
215
+ * Useful for validation before adding node instances
216
+ *
217
+ * @param ast - Workflow AST (or Immer draft)
218
+ * @param typeName - Node type function name to check
219
+ * @throws {Error} If node type doesn't exist (lists available types)
220
+ *
221
+ * @example
222
+ * ```typescript
223
+ * // Before adding a node, verify its type exists
224
+ * assertNodeTypeExists(workflow, "processData");
225
+ * const node = addNode(workflow, { id: "proc1", nodeType: "processData" });
226
+ *
227
+ * // Throws with helpful message if missing
228
+ * assertNodeTypeExists(workflow, "invalid");
229
+ * // Error: Node type "invalid" not found. Available types: processData, transformData
230
+ * ```
231
+ */
232
+ export function assertNodeTypeExists(ast, typeName) {
233
+ if (!ast.nodeTypes.some((nt) => nt.name === typeName || nt.functionName === typeName)) {
234
+ throw new Error(`Node type "${typeName}" not found. Available types: ${ast.nodeTypes.map((nt) => nt.name || nt.functionName).join(", ")}`);
235
+ }
236
+ }
237
+ /**
238
+ * Asserts that a node instance exists in the workflow
239
+ * Useful for validation before operations like rename or remove
240
+ *
241
+ * @param ast - Workflow AST (or Immer draft)
242
+ * @param nodeId - Node instance ID to check
243
+ * @throws {Error} If node doesn't exist (lists available nodes)
244
+ *
245
+ * @example
246
+ * ```typescript
247
+ * // Before renaming a node, verify it exists
248
+ * assertNodeExists(workflow, "processor1");
249
+ * const updated = renameNode(workflow, "processor1", "processor_renamed");
250
+ *
251
+ * // Throws with helpful message if missing
252
+ * assertNodeExists(workflow, "missing");
253
+ * // Error: Node "missing" not found. Available nodes: processor1, transformer1
254
+ * ```
255
+ */
256
+ export function assertNodeExists(ast, nodeId) {
257
+ if (!ast.instances.some((n) => n.id === nodeId)) {
258
+ throw new Error(`Node "${nodeId}" not found. Available nodes: ${ast.instances.map((n) => n.id).join(", ")}`);
259
+ }
260
+ }
261
+ /**
262
+ * Asserts that a node instance does NOT exist in the workflow
263
+ * Useful for validation before adding new nodes to prevent ID conflicts
264
+ *
265
+ * @param ast - Workflow AST (or Immer draft)
266
+ * @param nodeId - Node instance ID to check
267
+ * @throws {Error} If node already exists
268
+ *
269
+ * @example
270
+ * ```typescript
271
+ * // Before adding a node, verify ID is unique
272
+ * assertNodeNotExists(workflow, "newProcessor");
273
+ * const updated = addNode(workflow, { id: "newProcessor", nodeType: "process" });
274
+ *
275
+ * // Throws if ID is taken
276
+ * assertNodeNotExists(workflow, "processor1");
277
+ * // Error: Node "processor1" already exists
278
+ * ```
279
+ */
280
+ export function assertNodeNotExists(ast, nodeId) {
281
+ if (ast.instances.some((n) => n.id === nodeId)) {
282
+ throw new Error(`Node "${nodeId}" already exists`);
283
+ }
284
+ }
285
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @module api
3
+ *
4
+ * # Flow Weaver API
5
+ *
6
+ * High-level API for working with Flow Weaver workflows.
7
+ *
8
+ * ## Parse → Validate → Generate Pipeline
9
+ *
10
+ * ```
11
+ * Source File (.ts)
12
+ * ↓
13
+ * parseWorkflow() → TWorkflowAST
14
+ * ↓
15
+ * validateWorkflow() → ValidationResult
16
+ * ↓
17
+ * generateCode() → Executable code
18
+ * ```
19
+ *
20
+ * Or use `compileWorkflow()` for all steps in one call.
21
+ *
22
+ * ## Key Exports
23
+ *
24
+ * - **Parsing**: {@link parseWorkflow}
25
+ * - **Validation**: {@link validateWorkflow}
26
+ * - **Generation**: {@link generateCode}, {@link generateInPlace}
27
+ * - **Compilation**: {@link compileWorkflow}
28
+ * - **Query**: `getNode()`, `getNodeType()`, `findConnections()`
29
+ * - **Manipulation**: `addNode()`, `removeNode()`, `addConnection()`, etc.
30
+ * - **Builder**: `WorkflowBuilder` for programmatic AST construction
31
+ */
32
+ export type { TWorkflowAST, TNodeTypeDefaultConfig, TNodeTypeAST, TNodeInstanceConfig, TNodeInstanceAST, TConnectionAST, TPortReference, TImportDeclaration, TImportSpecifier, TPortDefinition, TDataType, TSerializableValue, TSerializableObject, TSerializableArray, TExecuteWhen, TBranchingStrategy, TWorkflowMetadata, TNodeMetadata, TConnectionMetadata, TSourceLocation, TControlFlowGraph, TControlFlowEdge, TValidationError, TAnalysisResult, TBranchingNodeInfo, TBranchRegion, TMergeNodeInfo, TASTTransformer, TASTVisitor, TParseOptions, TValidationRule, TGenerateOptions, TCompileResult, TCompilationMetadata, } from '../ast/types.js';
33
+ export { type CompileOptions, compileWorkflow } from './compile.js';
34
+ export { type GenerateResult, generateCode } from './generate.js';
35
+ export { type InPlaceGenerateOptions, type InPlaceGenerateResult, generateInPlace, hasInPlaceMarkers, stripGeneratedSections, MARKERS, } from './generate-in-place.js';
36
+ export { type ParseResult, parseWorkflow } from './parse.js';
37
+ export { transformWorkflow } from './transform.js';
38
+ export { type ValidationResult, validateWorkflow } from './validate.js';
39
+ export * from './manipulation.js';
40
+ export { withValidation, withMinimalValidation, withoutValidation, type RemoveOptions, type NodeFilter, type OperationResult, validatePortReference, portReferencesEqual, formatPortReference, generateUniqueNodeId, assertNodeTypeExists, assertNodeExists, assertNodeNotExists, } from './helpers.js';
41
+ export * from './query.js';
42
+ export * from './builder.js';
43
+ export * from './workflow-file-operations.js';
44
+ export * from './templates.js';
45
+ export * from './patterns.js';
46
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @module api
3
+ *
4
+ * # Flow Weaver API
5
+ *
6
+ * High-level API for working with Flow Weaver workflows.
7
+ *
8
+ * ## Parse → Validate → Generate Pipeline
9
+ *
10
+ * ```
11
+ * Source File (.ts)
12
+ * ↓
13
+ * parseWorkflow() → TWorkflowAST
14
+ * ↓
15
+ * validateWorkflow() → ValidationResult
16
+ * ↓
17
+ * generateCode() → Executable code
18
+ * ```
19
+ *
20
+ * Or use `compileWorkflow()` for all steps in one call.
21
+ *
22
+ * ## Key Exports
23
+ *
24
+ * - **Parsing**: {@link parseWorkflow}
25
+ * - **Validation**: {@link validateWorkflow}
26
+ * - **Generation**: {@link generateCode}, {@link generateInPlace}
27
+ * - **Compilation**: {@link compileWorkflow}
28
+ * - **Query**: `getNode()`, `getNodeType()`, `findConnections()`
29
+ * - **Manipulation**: `addNode()`, `removeNode()`, `addConnection()`, etc.
30
+ * - **Builder**: `WorkflowBuilder` for programmatic AST construction
31
+ */
32
+ export { compileWorkflow } from './compile.js';
33
+ export { generateCode } from './generate.js';
34
+ export { generateInPlace, hasInPlaceMarkers, stripGeneratedSections, MARKERS, } from './generate-in-place.js';
35
+ export { parseWorkflow } from './parse.js';
36
+ export { transformWorkflow } from './transform.js';
37
+ export { validateWorkflow } from './validate.js';
38
+ export * from './manipulation.js';
39
+ export { withValidation, withMinimalValidation, withoutValidation, validatePortReference, portReferencesEqual, formatPortReference, generateUniqueNodeId, assertNodeTypeExists, assertNodeExists, assertNodeNotExists, } from './helpers.js';
40
+ export * from './query.js';
41
+ export * from './builder.js';
42
+ export * from './workflow-file-operations.js';
43
+ export * from './templates.js';
44
+ export * from './patterns.js';
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Generates inline runtime code for standalone execution
3
+ *
4
+ * This includes all types and the GeneratedExecutionContext class
5
+ * so generated workflows have zero runtime dependencies.
6
+ *
7
+ * @param production - Whether to generate production-optimized code (no debug events)
8
+ * @param exportClasses - Whether to add 'export' keyword to classes (for shared modules)
9
+ */
10
+ export declare function generateInlineRuntime(production: boolean, exportClasses?: boolean): string;
11
+ import type { TModuleFormat } from '../ast/types.js';
12
+ /**
13
+ * Generates inline WebSocket debug client for auto-detection from env var
14
+ * Only included in development mode builds
15
+ *
16
+ * @param moduleFormat - The module format to use for imports ('esm' or 'cjs')
17
+ */
18
+ export declare function generateInlineDebugClient(moduleFormat?: TModuleFormat): string;
19
+ /**
20
+ * Generates a standalone runtime module file for multi-workflow bundles.
21
+ * This exports all runtime types and classes so individual workflow files can import them.
22
+ *
23
+ * @param production - Whether to generate production-optimized code (no debug events)
24
+ * @param moduleFormat - The module format to use ('esm' or 'cjs')
25
+ */
26
+ export declare function generateStandaloneRuntimeModule(production: boolean, moduleFormat?: TModuleFormat): string;
27
+ //# sourceMappingURL=inline-runtime.d.ts.map