@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,852 @@
1
+ /**
2
+ * Workflow AST - The root structure representing a complete workflow.
3
+ *
4
+ * A workflow is a directed graph where:
5
+ * - `nodeTypes` define templates (like classes)
6
+ * - `instances` are usages of those templates (like objects)
7
+ * - `connections` link ports between instances
8
+ * - `startPorts`/`exitPorts` define the workflow's external interface
9
+ *
10
+ * ```
11
+ * ┌─────────────────────────────────────────────────────────────┐
12
+ * │ WORKFLOW │
13
+ * │ ┌─────────────────┐ ┌─────────────────┐ │
14
+ * │ │ NODE TYPES │ │ NODE INSTANCES │ │
15
+ * │ │ (templates) │◄───│ (usages) │ │
16
+ * │ └─────────────────┘ └─────────────────┘ │
17
+ * │ │ │
18
+ * │ ┌───────────────────────────▼───────────────────────────┐ │
19
+ * │ │ CONNECTIONS │ │
20
+ * │ │ from: {node, port} → to: {node, port} │ │
21
+ * │ └────────────────────────────────────────────────────────┘ │
22
+ * │ startPorts{} ─────────────────────────────► exitPorts{} │
23
+ * └─────────────────────────────────────────────────────────────┘
24
+ * ```
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const workflow: TWorkflowAST = {
29
+ * type: "Workflow",
30
+ * sourceFile: "./math.ts",
31
+ * name: "addNumbers",
32
+ * functionName: "addNumbers",
33
+ * nodeTypes: [...],
34
+ * instances: [...],
35
+ * connections: [...],
36
+ * startPorts: { execute: { dataType: "STEP" }, a: { dataType: "NUMBER" } },
37
+ * exitPorts: { onSuccess: { dataType: "STEP" }, result: { dataType: "NUMBER" } },
38
+ * imports: []
39
+ * };
40
+ * ```
41
+ */
42
+ export type TWorkflowAST = {
43
+ type: 'Workflow';
44
+ /** Source file path */
45
+ sourceFile: string;
46
+ /** Generated output file path (if any) */
47
+ generatedFile?: string;
48
+ /** Workflow name (usually same as functionName) */
49
+ name: string;
50
+ /** The function name in source code */
51
+ functionName: string;
52
+ /** Description from JSDoc */
53
+ description?: string;
54
+ /**
55
+ * Node types are templates/definitions.
56
+ * Multiple instances can reference the same node type.
57
+ */
58
+ nodeTypes: TNodeTypeAST[];
59
+ /**
60
+ * Instances are the actual nodes in the workflow graph.
61
+ * Each instance references a node type by name.
62
+ */
63
+ instances: TNodeInstanceAST[];
64
+ /** Connections linking ports between nodes */
65
+ connections: TConnectionAST[];
66
+ /**
67
+ * Scope definitions: maps scope names to instance IDs within that scope.
68
+ * Used for iteration/callback patterns (e.g., forEach).
69
+ * @example { 'forEach1.iteration': ['processor1', 'doubler1'] }
70
+ */
71
+ scopes?: Record<string, string[]>;
72
+ /** Input ports exposed on the Start virtual node */
73
+ startPorts: Record<string, TPortDefinition>;
74
+ /** Output ports exposed on the Exit virtual node */
75
+ exitPorts: Record<string, TPortDefinition>;
76
+ /** Import declarations from the source file */
77
+ imports: TImportDeclaration[];
78
+ /** Unified ports array (alternative representation) */
79
+ ports?: TNodeTypePort[];
80
+ /** Workflow script content (for script-based workflows) */
81
+ script?: string;
82
+ /** Whether the function was declared with `async` keyword */
83
+ userSpecifiedAsync?: boolean;
84
+ /** Workflow-level options (e.g., strictTypes) */
85
+ options?: TWorkflowOptions;
86
+ /** UI metadata for visual editor state */
87
+ ui?: {
88
+ disablePan?: boolean;
89
+ disableZoom?: boolean;
90
+ startNode?: {
91
+ x?: number;
92
+ y?: number;
93
+ };
94
+ exitNode?: {
95
+ x?: number;
96
+ y?: number;
97
+ };
98
+ instances?: TNodeUI[];
99
+ nodeTypes?: TNodeTypeUI[];
100
+ /** In-memory only: stage transformation matrix (not persisted to file) */
101
+ transformation?: number[];
102
+ };
103
+ /** All function names found in the source file (annotated or not). Used by validator to hint about unannotated functions. */
104
+ availableFunctionNames?: string[];
105
+ /** Sugar macros (@map, @filter) that expand to full scope patterns. Stored for round-trip preservation. */
106
+ macros?: TWorkflowMacro[];
107
+ /** Reserved for plugin extensibility */
108
+ metadata?: TWorkflowMetadata;
109
+ };
110
+ /**
111
+ * A sugar macro that expands to a full scope pattern or connection set.
112
+ * Stored on the workflow AST for round-trip preservation in generateInPlace.
113
+ */
114
+ export type TWorkflowMacro = TMapMacro | TPathMacro;
115
+ export type TMapMacro = {
116
+ type: 'map';
117
+ /** Instance ID for the synthetic iterator node (e.g., "loop") */
118
+ instanceId: string;
119
+ /** Child node ID to apply to each item (e.g., "proc") */
120
+ childId: string;
121
+ /** Source port for the array in "node.port" format (e.g., "scan.files") */
122
+ sourcePort: string;
123
+ /** Explicit input port on child (auto-inferred if omitted) */
124
+ inputPort?: string;
125
+ /** Explicit output port on child (auto-inferred if omitted) */
126
+ outputPort?: string;
127
+ };
128
+ export type TPathMacro = {
129
+ type: 'path';
130
+ /** Ordered steps through the graph, each with optional routing suffix */
131
+ steps: Array<{
132
+ node: string;
133
+ route?: 'ok' | 'fail';
134
+ }>;
135
+ };
136
+ /**
137
+ * Default configuration for a node type that can be overridden per instance.
138
+ */
139
+ export type TNodeTypeDefaultConfig = {
140
+ /** Which STEP input port triggers pull execution (default: 'execute') */
141
+ pullExecution?: {
142
+ triggerPort: string;
143
+ };
144
+ label?: string;
145
+ description?: string;
146
+ };
147
+ /**
148
+ * Node Type AST - A template defining node behavior.
149
+ *
150
+ * Node types are like classes - they define what inputs/outputs a node has
151
+ * and how it behaves. Multiple instances can reference the same node type.
152
+ *
153
+ * Created by `@flowWeaver nodeType` annotation:
154
+ * ```typescript
155
+ * /**
156
+ * * @flowWeaver nodeType
157
+ * * @input a - First operand
158
+ * * @input b - Second operand
159
+ * * @output result - Sum
160
+ * *\/
161
+ * function add(execute: boolean, a: number, b: number): {
162
+ * onSuccess: boolean;
163
+ * result: number;
164
+ * } { ... }
165
+ * ```
166
+ *
167
+ * @remarks
168
+ * **Port Location Mapping:**
169
+ * | Port Type | External Location | Scoped Location |
170
+ * |-----------|-------------------|-----------------|
171
+ * | INPUT | Function param | Callback return field |
172
+ * | OUTPUT | Return type field | Callback param |
173
+ */
174
+ export type TNodeTypeAST = {
175
+ type: 'NodeType';
176
+ /** Unique name for this node type (defaults to function name) */
177
+ name: string;
178
+ /** The function that implements this node type */
179
+ functionName: string;
180
+ /** Input port definitions */
181
+ inputs: Record<string, TPortDefinition>;
182
+ /** Output port definitions */
183
+ outputs: Record<string, TPortDefinition>;
184
+ /** Whether this node has an onSuccess output port */
185
+ hasSuccessPort: boolean;
186
+ /** Whether this node has an onFailure output port */
187
+ hasFailurePort: boolean;
188
+ /** When this node executes relative to its inputs */
189
+ executeWhen: TExecuteWhen;
190
+ /** Whether the function is declared async */
191
+ isAsync: boolean;
192
+ /** Default configuration for instances */
193
+ defaultConfig?: TNodeTypeDefaultConfig;
194
+ /** Single scope name (e.g., 'iteration' for forEach) */
195
+ scope?: string;
196
+ /** Multiple scopes this node creates */
197
+ scopes?: string[];
198
+ /** Variant identifier (set by app layer) */
199
+ variant?: 'FUNCTION' | 'WORKFLOW' | 'IMPORTED_WORKFLOW' | 'MAP_ITERATOR';
200
+ /** File path for external node types */
201
+ path?: string;
202
+ /** Function reference for function-based node types */
203
+ function?: string;
204
+ /** Unified ports array (alternative to inputs/outputs) */
205
+ ports?: TNodeTypePort[];
206
+ /** Display label */
207
+ label?: string;
208
+ /** Description from JSDoc */
209
+ description?: string;
210
+ /** X position hint */
211
+ x?: number;
212
+ /** Y position hint */
213
+ y?: number;
214
+ /** Source code location */
215
+ sourceLocation?: TSourceLocation;
216
+ /** Original function source text */
217
+ functionText?: string;
218
+ /** How success/failure branching works */
219
+ branchingStrategy?: TBranchingStrategy;
220
+ /** Field name for value-based branching */
221
+ branchField?: string;
222
+ /** Reserved for plugin extensibility */
223
+ metadata?: TNodeMetadata;
224
+ /** Visual customization (color, icon, tags) */
225
+ visuals?: TNodeVisualsAST;
226
+ /** Whether this is an expression node (no execute param, raw return mapped to outputs) */
227
+ expression?: boolean;
228
+ /** Whether this node type was auto-inferred from an unannotated function signature */
229
+ inferred?: boolean;
230
+ /** Declaration kind for arrow/function-expression node types ('const', 'let', 'var') */
231
+ declarationKind?: 'const' | 'let' | 'var';
232
+ /** npm package specifier this node type was resolved from (e.g., 'date-fns') */
233
+ importSource?: string;
234
+ };
235
+ /**
236
+ * Port configuration for instance-level overrides
237
+ * Allows customizing how ports evaluate data and execution signals
238
+ */
239
+ export type TPortConfig = {
240
+ portName: string;
241
+ direction?: 'INPUT' | 'OUTPUT';
242
+ /**
243
+ * Scope for scoped ports (e.g., "loop", "conditional")
244
+ * Used to differentiate ports with same name across scopes
245
+ */
246
+ scope?: string;
247
+ /**
248
+ * Display order for this port in the UI
249
+ * Instance-level override of node type's defaultOrder
250
+ * Lower numbers appear first
251
+ */
252
+ order?: number;
253
+ /**
254
+ * Display label for this port in the UI
255
+ * Instance-level override of node type's defaultLabel
256
+ */
257
+ label?: string;
258
+ /**
259
+ * Expression for data ports
260
+ * Value is evaluated as JavaScript expression
261
+ */
262
+ expression?: string;
263
+ /**
264
+ * Execution signal evaluation for control flow ports
265
+ * Defines when the node should execute
266
+ */
267
+ executionSignal?: {
268
+ /**
269
+ * all: AND - wait for all signals (COMBINED_CONJUNCTION)
270
+ * any: OR - execute on first signal (COMBINED_DISJUNCTION)
271
+ * expression: Custom JavaScript expression (CUSTOM)
272
+ */
273
+ type: 'all' | 'any' | 'expression';
274
+ expression?: string;
275
+ };
276
+ /**
277
+ * Legacy field - use `constant` instead
278
+ * @deprecated Use `constant` with type and value instead
279
+ */
280
+ evaluateConstantAs?: {
281
+ type: string;
282
+ expression?: string;
283
+ value?: TSerializableValue;
284
+ };
285
+ /**
286
+ * Legacy field - use `executionSignal` instead
287
+ * @deprecated Use `executionSignal` with type and expression instead
288
+ */
289
+ evaluateExecutionSignalAs?: {
290
+ type: string;
291
+ expression?: string;
292
+ };
293
+ };
294
+ /**
295
+ * Instance-specific configuration that can override node type defaults
296
+ */
297
+ export type TNodeInstanceConfig = {
298
+ pullExecution?: {
299
+ triggerPort: string;
300
+ };
301
+ label?: string;
302
+ description?: string;
303
+ executeWhen?: TExecuteWhen;
304
+ /**
305
+ * Port-level configuration overrides
306
+ * Allows instances to customize port behavior
307
+ */
308
+ portConfigs?: TPortConfig[];
309
+ x?: number;
310
+ y?: number;
311
+ color?: string;
312
+ icon?: string;
313
+ tags?: TNodeTagAST[];
314
+ minimized?: boolean;
315
+ width?: number;
316
+ height?: number;
317
+ };
318
+ /**
319
+ * Node Instance AST - A usage of a node type in a workflow.
320
+ *
321
+ * Instances are like objects created from a class (node type).
322
+ * They have unique IDs and can override node type defaults.
323
+ *
324
+ * Created by `@node` annotation in workflow:
325
+ * ```
326
+ * @node adder1 Add
327
+ * @node processor Transform forEach1.iteration
328
+ * ```
329
+ */
330
+ export type TNodeInstanceAST = {
331
+ type: 'NodeInstance';
332
+ /** Unique ID within the workflow (e.g., 'adder1', 'processor') */
333
+ id: string;
334
+ /** Reference to the node type name (e.g., 'Add', 'Multiply') */
335
+ nodeType: string;
336
+ /** Instance-specific configuration overrides */
337
+ config?: TNodeInstanceConfig;
338
+ /** Parent scope (if inside a scoped node like forEach) */
339
+ parent?: TNodeParent | null;
340
+ /** Computed: nodes this instance depends on */
341
+ dependencies?: string[];
342
+ /** Computed: nodes that depend on this instance */
343
+ dependents?: string[];
344
+ /** Computed: whether this node is reachable from Start */
345
+ isReachable?: boolean;
346
+ /** Computed: whether this node contributes to Exit */
347
+ isUsed?: boolean;
348
+ /** Source location of @node annotation */
349
+ sourceLocation?: TSourceLocation;
350
+ /** Reserved for plugin extensibility */
351
+ metadata?: TNodeMetadata;
352
+ };
353
+ /**
354
+ * Type compatibility result for a connection.
355
+ * Pre-computed during parsing using TypeScript's isAssignableTo().
356
+ */
357
+ export type TTypeCompatibility = {
358
+ /** Whether the types are compatible */
359
+ isCompatible: boolean;
360
+ /** The reason for the compatibility result */
361
+ reason: 'exact' | 'assignable' | 'coercible' | 'incompatible';
362
+ /** Source type as string */
363
+ sourceType: string;
364
+ /** Target type as string */
365
+ targetType: string;
366
+ /** Error message when incompatible */
367
+ errorMessage?: string;
368
+ };
369
+ /**
370
+ * Workflow-level options parsed from JSDoc annotations.
371
+ */
372
+ export type TWorkflowOptions = {
373
+ /** When true, type incompatibilities are errors instead of warnings */
374
+ strictTypes?: boolean;
375
+ /** When true, connections are auto-wired based on node declaration order */
376
+ autoConnect?: boolean;
377
+ /** Trigger configuration (event name and/or cron schedule) */
378
+ trigger?: {
379
+ event?: string;
380
+ cron?: string;
381
+ };
382
+ /** Cancellation configuration — cancel on matching external event */
383
+ cancelOn?: {
384
+ event: string;
385
+ match?: string;
386
+ timeout?: string;
387
+ };
388
+ /** Number of retries on failure */
389
+ retries?: number;
390
+ /** Function-level timeout (e.g. "30m", "1h") */
391
+ timeout?: string;
392
+ /** Rate limiting configuration */
393
+ throttle?: {
394
+ limit: number;
395
+ period?: string;
396
+ };
397
+ };
398
+ /**
399
+ * Connection AST - A link between two ports.
400
+ *
401
+ * Format in annotation: `@connect fromNode.port -> toNode.port`
402
+ * With scope: `@connect forEach1.item:iteration -> processor.input:iteration`
403
+ */
404
+ export type TConnectionAST = {
405
+ type: 'Connection';
406
+ /** Source port reference */
407
+ from: TPortReference;
408
+ /** Target port reference */
409
+ to: TPortReference;
410
+ /** Source location of @connect annotation */
411
+ sourceLocation?: TSourceLocation;
412
+ /** Reserved for plugin extensibility */
413
+ metadata?: TConnectionMetadata;
414
+ /** Pre-computed type compatibility (set during parsing when ts-morph Types are available) */
415
+ typeCompatibility?: TTypeCompatibility;
416
+ };
417
+ /**
418
+ * Port Reference - Identifies a specific port on a node.
419
+ */
420
+ export type TPortReference = {
421
+ /** Node instance ID */
422
+ node: string;
423
+ /** Port name */
424
+ port: string;
425
+ /** Scope qualifier (for scoped ports) */
426
+ scope?: string;
427
+ };
428
+ /**
429
+ * Import Declaration - An import statement from the source file.
430
+ */
431
+ export type TImportDeclaration = {
432
+ type: 'Import';
433
+ specifiers: TImportSpecifier[];
434
+ /** Module path (e.g., './utils', 'lodash') */
435
+ source: string;
436
+ /** Whether this is a value or type-only import */
437
+ importKind: 'value' | 'type';
438
+ };
439
+ /**
440
+ * Import Specifier - A single imported item.
441
+ */
442
+ export type TImportSpecifier = {
443
+ /** Name in the source module */
444
+ imported: string;
445
+ /** Local alias (often same as imported) */
446
+ local: string;
447
+ /** Import type */
448
+ kind: 'named' | 'default' | 'namespace';
449
+ };
450
+ /**
451
+ * Port Definition - Defines a port's type and metadata.
452
+ *
453
+ * @remarks
454
+ * **Reserved port names:**
455
+ * - External: `execute`, `onSuccess`, `onFailure`
456
+ * - Scoped: `start`, `success`, `failure`
457
+ */
458
+ export type TPortDefinition = {
459
+ /** Port data type (semantic category for color mapping) */
460
+ dataType: TDataType;
461
+ /** Original TypeScript type string (e.g., "User[]", "Map<string, number>") */
462
+ tsType?: string;
463
+ /** Schema breakdown for complex types (property name -> type string) */
464
+ tsSchema?: Record<string, string>;
465
+ /** Whether this port is optional */
466
+ optional?: boolean;
467
+ /** Default value if not connected */
468
+ default?: TSerializableValue;
469
+ /** JavaScript expression for computed value */
470
+ expression?: string;
471
+ /** Display label */
472
+ label?: string;
473
+ /** Description from JSDoc */
474
+ description?: string;
475
+ /** Whether to hide in UI */
476
+ hidden?: boolean;
477
+ /** Whether this is a failure output port */
478
+ failure?: boolean;
479
+ /** Whether this port carries control flow (STEP) */
480
+ isControlFlow?: boolean;
481
+ /** Scope this port belongs to (for scoped ports) */
482
+ scope?: string;
483
+ /** Merge strategy for fan-in connections (multiple sources) */
484
+ mergeStrategy?: TMergeStrategy;
485
+ /** Parameter order for preserving original function signature order */
486
+ order?: number;
487
+ /** Additional metadata */
488
+ metadata?: Record<string, unknown>;
489
+ };
490
+ /**
491
+ * Data Type - The type of data a port carries.
492
+ *
493
+ * | Type | TypeScript | Description |
494
+ * |----------|------------|-------------|
495
+ * | STRING | `string` | Text values |
496
+ * | NUMBER | `number` | Numeric values |
497
+ * | BOOLEAN | `boolean` | True/false |
498
+ * | ARRAY | `any[]` | Arrays |
499
+ * | OBJECT | `any` | Objects |
500
+ * | FUNCTION | `(...) => any` | Callbacks |
501
+ * | STEP | `boolean` | Control flow signal |
502
+ * | ANY | `any` | Fallback for unknown types |
503
+ */
504
+ export type TDataType = 'STRING' | 'NUMBER' | 'BOOLEAN' | 'OBJECT' | 'ARRAY' | 'FUNCTION' | 'STEP' | 'ANY';
505
+ /** JSON-serializable value */
506
+ export type TSerializableValue = string | number | boolean | null | TSerializableObject | TSerializableArray;
507
+ /** JSON-serializable object */
508
+ export type TSerializableObject = {
509
+ [key: string]: TSerializableValue;
510
+ };
511
+ /** JSON-serializable array */
512
+ export type TSerializableArray = TSerializableValue[];
513
+ /**
514
+ * Execute When - Controls when a node executes based on input signals.
515
+ *
516
+ * - `CONJUNCTION` - AND: Wait for ALL STEP inputs before executing
517
+ * - `DISJUNCTION` - OR: Execute on FIRST STEP input received
518
+ * - `CUSTOM` - Custom JavaScript expression
519
+ */
520
+ export type TExecuteWhen = 'CONJUNCTION' | 'DISJUNCTION' | 'CUSTOM';
521
+ /**
522
+ * Merge Strategy - How multiple connections to a DATA port are combined.
523
+ *
524
+ * - `FIRST` - Use first non-undefined value
525
+ * - `LAST` - Use last non-undefined value
526
+ * - `COLLECT` - Collect all values into an array
527
+ * - `MERGE` - Merge objects with Object.assign
528
+ * - `CONCAT` - Concatenate arrays
529
+ */
530
+ export type TMergeStrategy = 'FIRST' | 'LAST' | 'COLLECT' | 'MERGE' | 'CONCAT';
531
+ /**
532
+ * Branching Strategy - How a node determines success/failure output.
533
+ *
534
+ * - `value-based` - Branch based on return value field (uses `branchField`)
535
+ * - `exception-based` - Branch based on thrown exceptions
536
+ * - `none` - No branching logic
537
+ */
538
+ export type TBranchingStrategy = 'value-based' | 'exception-based' | 'none';
539
+ export type TWorkflowMetadata = {
540
+ generatedAt?: string;
541
+ generatorVersion?: string;
542
+ controlFlowGraph?: TControlFlowGraph;
543
+ executionOrder?: string[];
544
+ branchingNodes?: string[];
545
+ mergeNodes?: string[];
546
+ validated?: boolean;
547
+ validationErrors?: TValidationError[];
548
+ [key: string]: unknown;
549
+ };
550
+ export type TNodeMetadata = {
551
+ [key: string]: unknown;
552
+ };
553
+ /** Tag displayed on a node with optional tooltip */
554
+ export type TNodeTagAST = {
555
+ label: string;
556
+ tooltip?: string;
557
+ };
558
+ /** Visual customization for node types */
559
+ export type TNodeVisualsAST = {
560
+ /** Theme color: blue, purple, teal, orange, pink, green */
561
+ color?: string;
562
+ /** Icon preset name */
563
+ icon?: string;
564
+ /** Tags displayed below the label */
565
+ tags?: TNodeTagAST[];
566
+ };
567
+ export type TConnectionMetadata = {
568
+ sourceLocation?: TSourceLocation;
569
+ isControlFlow?: boolean;
570
+ isDataFlow?: boolean;
571
+ [key: string]: unknown;
572
+ };
573
+ export type TSourceLocation = {
574
+ file: string;
575
+ line: number;
576
+ column: number;
577
+ };
578
+ export type TControlFlowGraph = {
579
+ nodes: string[];
580
+ edges: TControlFlowEdge[];
581
+ inDegree: Record<string, number>;
582
+ outDegree: Record<string, number>;
583
+ };
584
+ export type TControlFlowEdge = {
585
+ from: string;
586
+ to: string;
587
+ type: 'success' | 'failure' | 'unconditional';
588
+ };
589
+ export type TValidationError = {
590
+ type: 'error' | 'warning';
591
+ code: string;
592
+ message: string;
593
+ node?: string;
594
+ connection?: TConnectionAST;
595
+ location?: TSourceLocation;
596
+ };
597
+ export type TAnalysisResult = {
598
+ controlFlowGraph: TControlFlowGraph;
599
+ executionOrder: string[];
600
+ branchingNodes: TBranchingNodeInfo[];
601
+ branchRegions: TBranchRegion[];
602
+ mergeNodes: TMergeNodeInfo[];
603
+ errors: TValidationError[];
604
+ warnings: TValidationError[];
605
+ unusedNodes: string[];
606
+ inlineCandidates: string[];
607
+ };
608
+ export type TBranchingNodeInfo = {
609
+ nodeName: string;
610
+ strategy: TBranchingStrategy;
611
+ branchField?: string;
612
+ successNodes: string[];
613
+ failureNodes: string[];
614
+ };
615
+ export type TBranchRegion = {
616
+ branchNode: string;
617
+ successNodes: Set<string>;
618
+ failureNodes: Set<string>;
619
+ };
620
+ export type TMergeNodeInfo = {
621
+ nodeName: string;
622
+ sources: string[];
623
+ executeWhen: TExecuteWhen;
624
+ };
625
+ export type TASTTransformer = {
626
+ name: string;
627
+ transform(ast: TWorkflowAST): TWorkflowAST;
628
+ };
629
+ export type TASTVisitor = {
630
+ visitWorkflow?(ast: TWorkflowAST): void;
631
+ visitNodeType?(nodeType: TNodeTypeAST): void;
632
+ visitNodeInstance?(instance: TNodeInstanceAST): void;
633
+ visitConnection?(connection: TConnectionAST): void;
634
+ visitPort?(port: TPortDefinition, nodeName: string, portName: string): void;
635
+ };
636
+ export type TParseOptions = {
637
+ filePath: string;
638
+ includeLocations?: boolean;
639
+ validate?: boolean;
640
+ validationRules?: TValidationRule[];
641
+ };
642
+ export type TValidationRule = {
643
+ name: string;
644
+ validate(ast: TWorkflowAST): TValidationError[];
645
+ };
646
+ export type TGenerateOptions = {
647
+ includeContext?: boolean;
648
+ includeDebugEvents?: boolean;
649
+ optimize?: 'none' | 'basic' | 'aggressive';
650
+ outputFormat?: 'typescript' | 'javascript';
651
+ };
652
+ export type TCompileResult = {
653
+ code: string;
654
+ sourceMap?: string;
655
+ ast: TWorkflowAST;
656
+ analysis: TAnalysisResult;
657
+ metadata: TCompilationMetadata;
658
+ };
659
+ export type TCompilationMetadata = {
660
+ sourceFile: string;
661
+ outputFile: string;
662
+ compiledAt: string;
663
+ compilerVersion: string;
664
+ generationTime: number;
665
+ };
666
+ /**
667
+ * Port definition with name and direction - used by IDE and node type discovery
668
+ * dataType and type are interchangeable (type is IDE alias for dataType)
669
+ */
670
+ export type TNodeTypePort = {
671
+ name: string;
672
+ direction: 'INPUT' | 'OUTPUT';
673
+ dataType?: TDataType | string;
674
+ type?: TDataType | string;
675
+ tsType?: string;
676
+ defaultLabel?: string;
677
+ defaultOrder?: number;
678
+ defaultPlacement?: 'TOP' | 'BOTTOM' | 'LEFT' | 'RIGHT';
679
+ defaultHidden?: boolean;
680
+ reference?: string;
681
+ optional?: boolean;
682
+ default?: TSerializableValue;
683
+ expression?: string;
684
+ label?: string;
685
+ description?: string;
686
+ hidden?: boolean;
687
+ failure?: boolean;
688
+ isControlFlow?: boolean;
689
+ metadata?: Record<string, unknown>;
690
+ scope?: string;
691
+ };
692
+ /**
693
+ * Port direction type
694
+ */
695
+ export type TPortDirection = 'INPUT' | 'OUTPUT';
696
+ /**
697
+ * Parent scope reference - structured format for setting node parent
698
+ */
699
+ export type TNodeParent = {
700
+ id: string;
701
+ scope: string;
702
+ };
703
+ /**
704
+ * Pull execution config extracted type
705
+ */
706
+ export type TPullExecutionConfig = NonNullable<TNodeInstanceConfig['pullExecution']>;
707
+ /**
708
+ * Workflow file extension type
709
+ */
710
+ export type TWorkflowFileExtension = 'ts' | 'tsx' | 'js' | 'jsx';
711
+ /**
712
+ * Port placement for UI rendering
713
+ */
714
+ export type TPortPlacement = 'TOP' | 'BOTTOM' | 'CENTER' | 'LEFT' | 'RIGHT';
715
+ /**
716
+ * UI-specific port metadata for rendering
717
+ */
718
+ export type TPortUI = {
719
+ name: string;
720
+ direction?: 'INPUT' | 'OUTPUT';
721
+ scope?: string;
722
+ order: number;
723
+ label: string;
724
+ hidden: boolean;
725
+ placement: TPortPlacement;
726
+ failure?: boolean;
727
+ };
728
+ /**
729
+ * UI-specific node type metadata for rendering
730
+ */
731
+ export type TNodeTypeUI = {
732
+ name: string;
733
+ label: string;
734
+ ports: TPortUI[];
735
+ };
736
+ /**
737
+ * UI-specific node instance metadata for rendering
738
+ */
739
+ export type TNodeUI = {
740
+ name: string;
741
+ label: string;
742
+ ports: TPortUI[];
743
+ x: number;
744
+ y: number;
745
+ width?: number;
746
+ height?: number;
747
+ expandedX?: number;
748
+ expandedY?: number;
749
+ expandedWidth?: number;
750
+ expandedHeight?: number;
751
+ minimized?: boolean;
752
+ lastTouched?: number;
753
+ };
754
+ /**
755
+ * UI-specific workflow metadata for rendering
756
+ */
757
+ export type TWorkFlowFunctionUI = {
758
+ nodeTypes: TNodeTypeUI[];
759
+ instances: TNodeUI[];
760
+ disablePan: boolean;
761
+ disableZoom: boolean;
762
+ /** In-memory only: stage transformation matrix (not persisted to file) */
763
+ transformation?: number[];
764
+ };
765
+ /**
766
+ * Pattern AST - A reusable workflow fragment that can be applied to workflows.
767
+ *
768
+ * Patterns are like workflow templates with IN/OUT pseudo-nodes instead of Start/Exit.
769
+ * They can be applied to workflows to insert nodes, connections, and types.
770
+ *
771
+ * ```
772
+ * ┌─────────────────────────────────────────────────────────────┐
773
+ * │ PATTERN │
774
+ * │ ┌─────────────────┐ ┌─────────────────┐ │
775
+ * │ │ NODE TYPES │ │ NODE INSTANCES │ │
776
+ * │ │ (inline/refs) │◄───│ (pattern nodes)│ │
777
+ * │ └─────────────────┘ └─────────────────┘ │
778
+ * │ │ │
779
+ * │ ┌───────────────────────────▼───────────────────────────┐ │
780
+ * │ │ CONNECTIONS │ │
781
+ * │ │ IN.port → node.port, node.port → OUT.port │ │
782
+ * │ └────────────────────────────────────────────────────────┘ │
783
+ * │ inputPorts{} ─────────────────────────────► outputPorts{} │
784
+ * └─────────────────────────────────────────────────────────────┘
785
+ * ```
786
+ *
787
+ * @example
788
+ * ```typescript
789
+ * const pattern: TPatternAST = {
790
+ * type: "Pattern",
791
+ * name: "validateTransform",
792
+ * description: "Validate then transform data",
793
+ * nodeTypes: [...],
794
+ * instances: [...],
795
+ * connections: [...],
796
+ * inputPorts: { data: { description: "Input data" } },
797
+ * outputPorts: { result: { description: "Transformed result" } }
798
+ * };
799
+ * ```
800
+ */
801
+ export type TPatternAST = {
802
+ type: 'Pattern';
803
+ /** Source file path */
804
+ sourceFile: string;
805
+ /** Pattern name (from @name) */
806
+ name: string;
807
+ /** Description from @description */
808
+ description?: string;
809
+ /**
810
+ * Node types defined inline in this pattern.
811
+ * Referenced node types are not included here.
812
+ */
813
+ nodeTypes: TNodeTypeAST[];
814
+ /**
815
+ * Instances are the nodes in the pattern graph.
816
+ * Each instance references a node type by name.
817
+ */
818
+ instances: TNodeInstanceAST[];
819
+ /** Connections between pattern nodes and IN/OUT */
820
+ connections: TConnectionAST[];
821
+ /** Input ports (connections from IN pseudo-node) */
822
+ inputPorts: Record<string, TPatternPortDefinition>;
823
+ /** Output ports (connections to OUT pseudo-node) */
824
+ outputPorts: Record<string, TPatternPortDefinition>;
825
+ /** Source location of the pattern annotation */
826
+ sourceLocation?: TSourceLocation;
827
+ /** Reserved for plugin extensibility */
828
+ metadata?: Record<string, unknown>;
829
+ };
830
+ /**
831
+ * Pattern Port Definition - A port on the IN or OUT pseudo-nodes.
832
+ */
833
+ export type TPatternPortDefinition = {
834
+ /** Port description from @port annotation */
835
+ description?: string;
836
+ /** Data type if known */
837
+ dataType?: TDataType;
838
+ /** Original TypeScript type string */
839
+ tsType?: string;
840
+ };
841
+ /**
842
+ * Convenience alias - TPortType = TDataType
843
+ */
844
+ export type TPortType = TDataType;
845
+ /**
846
+ * Module Format - The JavaScript module system to use for generated code.
847
+ *
848
+ * - `esm` - ECMAScript modules (import/export)
849
+ * - `cjs` - CommonJS modules (require/module.exports)
850
+ */
851
+ export type TModuleFormat = 'esm' | 'cjs';
852
+ //# sourceMappingURL=types.d.ts.map