@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,156 @@
1
+ /**
2
+ * Scope operations for workflow manipulation
3
+ */
4
+ import { withoutValidation, assertNodeExists } from "../helpers.js";
5
+ /**
6
+ * Create a new scope
7
+ *
8
+ * @param ast - Workflow to modify
9
+ * @param scopeName - Name of scope
10
+ * @param nodeIds - Node IDs in scope
11
+ * @returns Modified workflow
12
+ * @throws {Error} If scope already exists
13
+ */
14
+ export function createScope(ast, scopeName, nodeIds) {
15
+ // Validate scope doesn't exist
16
+ if (ast.scopes?.[scopeName]) {
17
+ throw new Error(`Scope "${scopeName}" already exists`);
18
+ }
19
+ // Verify all nodes exist before mutation to avoid type instantiation issues
20
+ nodeIds.forEach((nodeId) => assertNodeExists(ast, nodeId));
21
+ return withoutValidation(ast, (draft) => {
22
+ if (!draft.scopes) {
23
+ draft.scopes = {};
24
+ }
25
+ draft.scopes[scopeName] = nodeIds;
26
+ // Update node instances to reference scope
27
+ // scopeName format is "parentNodeId.scopeName"
28
+ const dotIndex = scopeName.indexOf('.');
29
+ const parentNodeName = dotIndex > 0 ? scopeName.substring(0, dotIndex) : scopeName;
30
+ const scope = dotIndex > 0 ? scopeName.substring(dotIndex + 1) : '';
31
+ nodeIds.forEach((nodeId) => {
32
+ const node = draft.instances.find((n) => n.id === nodeId);
33
+ node.parent = { id: parentNodeName, scope };
34
+ });
35
+ });
36
+ }
37
+ /**
38
+ * Remove a scope.
39
+ * Uses no validation to allow deletion even when workflow has other errors.
40
+ *
41
+ * @param ast - Workflow to modify
42
+ * @param scopeName - Name of scope to remove
43
+ * @returns Modified workflow
44
+ */
45
+ export function removeScope(ast, scopeName) {
46
+ // Verify scope exists
47
+ if (!ast.scopes?.[scopeName]) {
48
+ throw new Error(`Scope "${scopeName}" not found`);
49
+ }
50
+ return withoutValidation(ast, (draft) => {
51
+ const nodeIds = draft.scopes[scopeName];
52
+ // Remove parent from nodes
53
+ nodeIds.forEach((nodeId) => {
54
+ const node = draft.instances.find((n) => n.id === nodeId);
55
+ if (node) {
56
+ delete node.parent;
57
+ }
58
+ });
59
+ delete draft.scopes[scopeName];
60
+ });
61
+ }
62
+ /**
63
+ * Add node to existing scope
64
+ *
65
+ * @param ast - Workflow to modify
66
+ * @param scopeName - Name of scope
67
+ * @param nodeId - Node ID to add
68
+ * @returns Modified workflow
69
+ */
70
+ export function addToScope(ast, scopeName, nodeId) {
71
+ // Validate before mutation to avoid type instantiation issues
72
+ if (!ast.scopes?.[scopeName]) {
73
+ throw new Error(`Scope "${scopeName}" not found`);
74
+ }
75
+ assertNodeExists(ast, nodeId);
76
+ return withoutValidation(ast, (draft) => {
77
+ if (!draft.scopes[scopeName].includes(nodeId)) {
78
+ draft.scopes[scopeName].push(nodeId);
79
+ }
80
+ const node = draft.instances.find((n) => n.id === nodeId);
81
+ if (!node)
82
+ return; // Already validated above
83
+ // scopeName format is "parentNodeId.scopeName"
84
+ const dotIndex = scopeName.indexOf('.');
85
+ const parentNodeName = dotIndex > 0 ? scopeName.substring(0, dotIndex) : scopeName;
86
+ const scope = dotIndex > 0 ? scopeName.substring(dotIndex + 1) : '';
87
+ node.parent = { id: parentNodeName, scope };
88
+ });
89
+ }
90
+ /**
91
+ * Remove node from scope.
92
+ * Uses no validation to allow deletion even when workflow has other errors.
93
+ *
94
+ * @param ast - Workflow to modify
95
+ * @param scopeName - Name of scope
96
+ * @param nodeId - Node ID to remove
97
+ * @returns Modified workflow
98
+ */
99
+ export function removeFromScope(ast, scopeName, nodeId) {
100
+ // Verify scope exists
101
+ if (!ast.scopes?.[scopeName]) {
102
+ throw new Error(`Scope "${scopeName}" not found`);
103
+ }
104
+ return withoutValidation(ast, (draft) => {
105
+ draft.scopes[scopeName] = draft.scopes[scopeName].filter((id) => id !== nodeId);
106
+ const node = draft.instances.find((n) => n.id === nodeId);
107
+ if (node && node.parent) {
108
+ // Match by parent id (simple scope) or full qualified path
109
+ const matchesScope = node.parent.id === scopeName ||
110
+ (node.parent.scope && `${node.parent.id}.${node.parent.scope}` === scopeName);
111
+ if (matchesScope) {
112
+ delete node.parent;
113
+ }
114
+ }
115
+ });
116
+ }
117
+ /**
118
+ * Move node to different scope
119
+ *
120
+ * @param ast - Workflow to modify
121
+ * @param nodeId - Node ID to move
122
+ * @param targetScope - Target scope name
123
+ * @returns Modified workflow
124
+ */
125
+ export function moveToScope(ast, nodeId, targetScope) {
126
+ // Validate before mutation to avoid type instantiation issues
127
+ assertNodeExists(ast, nodeId);
128
+ if (!ast.scopes?.[targetScope]) {
129
+ throw new Error(`Target scope "${targetScope}" not found`);
130
+ }
131
+ return withoutValidation(ast, (draft) => {
132
+ const node = draft.instances.find((n) => n.id === nodeId);
133
+ if (!node || !draft.scopes)
134
+ return; // Already validated above
135
+ // Remove from current scope if any
136
+ if (node.parent) {
137
+ // Check for simple scope (just id) or full qualified path
138
+ const simpleScope = node.parent.id;
139
+ const fullScope = node.parent.scope ? `${node.parent.id}.${node.parent.scope}` : null;
140
+ const currentScope = draft.scopes[simpleScope] ? simpleScope : (fullScope && draft.scopes[fullScope] ? fullScope : null);
141
+ if (currentScope && draft.scopes[currentScope]) {
142
+ draft.scopes[currentScope] = draft.scopes[currentScope].filter((id) => id !== nodeId);
143
+ }
144
+ }
145
+ // Add to target scope
146
+ if (!draft.scopes[targetScope].includes(nodeId)) {
147
+ draft.scopes[targetScope].push(nodeId);
148
+ }
149
+ // targetScope format is "parentNodeId.scopeName"
150
+ const dotIndex = targetScope.indexOf('.');
151
+ const parentNodeName = dotIndex > 0 ? targetScope.substring(0, dotIndex) : targetScope;
152
+ const scope = dotIndex > 0 ? targetScope.substring(dotIndex + 1) : '';
153
+ node.parent = { id: parentNodeName, scope };
154
+ });
155
+ }
156
+ //# sourceMappingURL=scopes.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Validation wrappers for workflow manipulation operations
3
+ * Re-exports from helpers.ts for backward compatibility
4
+ */
5
+ export { withoutValidation, type RemoveOptions, type NodeFilter, type OperationResult, validatePortReference, portReferencesEqual, formatPortReference, generateUniqueNodeId, assertNodeExists, assertNodeNotExists, } from "../helpers.js";
6
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Validation wrappers for workflow manipulation operations
3
+ * Re-exports from helpers.ts for backward compatibility
4
+ */
5
+ export { withoutValidation, validatePortReference, portReferencesEqual, formatPortReference, generateUniqueNodeId, assertNodeExists, assertNodeNotExists, } from "../helpers.js";
6
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Workflow-level operations for manipulation
3
+ */
4
+ import type { TWorkflowAST, TWorkflowMetadata, TNodeTypePort } from "../../ast/types.js";
5
+ /**
6
+ * Clone a workflow (creates deep copy via Immer)
7
+ *
8
+ * @param ast - Workflow to clone
9
+ * @returns New workflow instance
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const copy = cloneWorkflow(original);
14
+ * // copy !== original
15
+ * ```
16
+ */
17
+ export declare function cloneWorkflow(ast: TWorkflowAST): TWorkflowAST;
18
+ /**
19
+ * Set workflow description
20
+ *
21
+ * @param ast - Workflow to modify
22
+ * @param description - New description
23
+ * @returns Modified workflow
24
+ */
25
+ export declare function setWorkflowDescription(ast: TWorkflowAST, description: string): TWorkflowAST;
26
+ /**
27
+ * Set workflow metadata (forceAsync, etc.)
28
+ *
29
+ * @param ast - Workflow to modify
30
+ * @param metadata - Partial metadata to merge
31
+ * @returns Modified workflow
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const updated = setWorkflowMetadata(workflow, { forceAsync: true });
36
+ * ```
37
+ */
38
+ export declare function setWorkflowMetadata(ast: TWorkflowAST, metadata: Partial<TWorkflowMetadata>): TWorkflowAST;
39
+ /**
40
+ * Set workflow output file type
41
+ *
42
+ * @param ast - Workflow to modify
43
+ * @param fileType - Target file extension
44
+ * @returns Modified workflow
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const updated = setOutputFileType(workflow, "tsx");
49
+ * ```
50
+ */
51
+ export declare function setOutputFileType(ast: TWorkflowAST, fileType: "js" | "ts" | "jsx" | "tsx"): TWorkflowAST;
52
+ /**
53
+ * Rename workflow export
54
+ *
55
+ * @param ast - Workflow to modify
56
+ * @param newName - New workflow export name
57
+ * @returns Modified workflow
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * const updated = renameWorkflow(workflow, "myNewWorkflow");
62
+ * ```
63
+ */
64
+ export declare function renameWorkflow(ast: TWorkflowAST, newName: string): TWorkflowAST;
65
+ /**
66
+ * Set workflow export interface ports
67
+ *
68
+ * @param ast - Workflow to modify
69
+ * @param ports - New ports configuration
70
+ * @returns Modified workflow
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * const updated = setWorkflowPorts(workflow, [
75
+ * { name: "input", type: "String", direction: "input" },
76
+ * { name: "result", type: "Number", direction: "output" }
77
+ * ]);
78
+ * ```
79
+ */
80
+ export declare function setWorkflowPorts(ast: TWorkflowAST, ports: TNodeTypePort[]): TWorkflowAST;
81
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Workflow-level operations for manipulation
3
+ */
4
+ import { produce } from "immer";
5
+ import { withoutValidation } from "../helpers.js";
6
+ /**
7
+ * Clone a workflow (creates deep copy via Immer)
8
+ *
9
+ * @param ast - Workflow to clone
10
+ * @returns New workflow instance
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const copy = cloneWorkflow(original);
15
+ * // copy !== original
16
+ * ```
17
+ */
18
+ export function cloneWorkflow(ast) {
19
+ // Force Immer to create a new object by making changes to nested structures
20
+ // Without this, Immer returns the same object (structural sharing)
21
+ return withoutValidation(ast, (draft) => {
22
+ // Touch nested arrays to force deep cloning
23
+ draft.nodeTypes = [...draft.nodeTypes];
24
+ draft.instances = [...draft.instances];
25
+ draft.connections = [...draft.connections];
26
+ });
27
+ }
28
+ /**
29
+ * Set workflow description
30
+ *
31
+ * @param ast - Workflow to modify
32
+ * @param description - New description
33
+ * @returns Modified workflow
34
+ */
35
+ export function setWorkflowDescription(ast, description) {
36
+ return withoutValidation(ast, (draft) => {
37
+ draft.description = description;
38
+ });
39
+ }
40
+ /**
41
+ * Set workflow metadata (forceAsync, etc.)
42
+ *
43
+ * @param ast - Workflow to modify
44
+ * @param metadata - Partial metadata to merge
45
+ * @returns Modified workflow
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const updated = setWorkflowMetadata(workflow, { forceAsync: true });
50
+ * ```
51
+ */
52
+ export function setWorkflowMetadata(ast, metadata) {
53
+ return withoutValidation(ast, (draft) => {
54
+ draft.metadata = { ...draft.metadata, ...metadata };
55
+ });
56
+ }
57
+ /**
58
+ * Set workflow output file type
59
+ *
60
+ * @param ast - Workflow to modify
61
+ * @param fileType - Target file extension
62
+ * @returns Modified workflow
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * const updated = setOutputFileType(workflow, "tsx");
67
+ * ```
68
+ */
69
+ export function setOutputFileType(ast, fileType) {
70
+ return withoutValidation(ast, (draft) => {
71
+ const baseName = draft.sourceFile.replace(/\.(ts|js|tsx|jsx)$/, "");
72
+ draft.sourceFile = `${baseName}.${fileType}`;
73
+ });
74
+ }
75
+ /**
76
+ * Rename workflow export
77
+ *
78
+ * @param ast - Workflow to modify
79
+ * @param newName - New workflow export name
80
+ * @returns Modified workflow
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * const updated = renameWorkflow(workflow, "myNewWorkflow");
85
+ * ```
86
+ */
87
+ export function renameWorkflow(ast, newName) {
88
+ if (!newName || !/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(newName)) {
89
+ throw new Error(`Invalid workflow name: ${newName}`);
90
+ }
91
+ return withoutValidation(ast, (draft) => {
92
+ draft.functionName = newName;
93
+ });
94
+ }
95
+ /**
96
+ * Set workflow export interface ports
97
+ *
98
+ * @param ast - Workflow to modify
99
+ * @param ports - New ports configuration
100
+ * @returns Modified workflow
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * const updated = setWorkflowPorts(workflow, [
105
+ * { name: "input", type: "String", direction: "input" },
106
+ * { name: "result", type: "Number", direction: "output" }
107
+ * ]);
108
+ * ```
109
+ */
110
+ export function setWorkflowPorts(ast, ports) {
111
+ // Use produce directly with non-generic approach to avoid excessive type instantiation
112
+ return produce(ast, (draft) => {
113
+ draft.ports = ports;
114
+ });
115
+ }
116
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Manipulation API for programmatic workflow creation and modification
3
+ * All operations are immutable (return new AST) and validated
4
+ *
5
+ * This file re-exports all functions from the manipulation module for backward compatibility.
6
+ */
7
+ export * from "./manipulation/index.js";
8
+ //# sourceMappingURL=manipulation.d.ts.map
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Manipulation API for programmatic workflow creation and modification
3
+ * All operations are immutable (return new AST) and validated
4
+ *
5
+ * This file re-exports all functions from the manipulation module for backward compatibility.
6
+ */
7
+ export * from "./manipulation/index.js";
8
+ //# sourceMappingURL=manipulation.js.map
@@ -0,0 +1,48 @@
1
+ import type { TParseOptions as ASTParseOptions, TWorkflowAST } from '../ast/types.js';
2
+ export interface ParseOptions extends Partial<ASTParseOptions> {
3
+ /**
4
+ * Name of the workflow to parse from the file.
5
+ * Required if the file contains multiple workflows.
6
+ */
7
+ workflowName?: string;
8
+ /**
9
+ * When true, returns node types even if no workflows are found.
10
+ * Useful for files that only contain node type definitions.
11
+ */
12
+ nodeTypesOnly?: boolean;
13
+ }
14
+ export interface ParseResult {
15
+ ast: TWorkflowAST;
16
+ errors: string[];
17
+ warnings: string[];
18
+ /**
19
+ * All workflows found in the file (names only)
20
+ */
21
+ availableWorkflows: string[];
22
+ /**
23
+ * All workflow ASTs found in the file (for local dependency generation)
24
+ */
25
+ allWorkflows: TWorkflowAST[];
26
+ }
27
+ /**
28
+ * Parse a workflow file and convert it to AST
29
+ *
30
+ * @param filePath - Path to the workflow file
31
+ * @param options - Parse options including workflow name
32
+ * @returns ParseResult with AST, errors, and warnings
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const result = await parseWorkflow('./my-workflow.ts', {
37
+ * workflowName: 'myWorkflow'
38
+ * });
39
+ *
40
+ * if (result.errors.length > 0) {
41
+ * console.error('Parse errors:', result.errors);
42
+ * } else {
43
+ * console.log('Parsed workflow:', result.ast.functionName);
44
+ * }
45
+ * ```
46
+ */
47
+ export declare function parseWorkflow(filePath: string, options?: ParseOptions): Promise<ParseResult>;
48
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1,110 @@
1
+ import { parser } from '../parser.js';
2
+ import { getErrorMessage } from '../utils/error-utils.js';
3
+ /**
4
+ * Parse a workflow file and convert it to AST
5
+ *
6
+ * @param filePath - Path to the workflow file
7
+ * @param options - Parse options including workflow name
8
+ * @returns ParseResult with AST, errors, and warnings
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const result = await parseWorkflow('./my-workflow.ts', {
13
+ * workflowName: 'myWorkflow'
14
+ * });
15
+ *
16
+ * if (result.errors.length > 0) {
17
+ * console.error('Parse errors:', result.errors);
18
+ * } else {
19
+ * console.log('Parsed workflow:', result.ast.functionName);
20
+ * }
21
+ * ```
22
+ */
23
+ export async function parseWorkflow(filePath, options) {
24
+ const errors = [];
25
+ const warnings = [];
26
+ let availableWorkflows = [];
27
+ try {
28
+ // Parse the file to extract nodes and workflows
29
+ const parsed = parser.parse(filePath);
30
+ warnings.push(...parsed.warnings);
31
+ // Get available workflow names
32
+ availableWorkflows = parsed.workflows.map((w) => w.functionName);
33
+ // Determine which workflow to use
34
+ let workflowName = options?.workflowName;
35
+ if (!workflowName) {
36
+ if (parsed.workflows.length === 0) {
37
+ // If nodeTypesOnly mode is enabled and we have node types, return them
38
+ if (options?.nodeTypesOnly && parsed.nodeTypes.length > 0) {
39
+ return {
40
+ ast: {
41
+ type: 'Workflow',
42
+ functionName: '',
43
+ name: '',
44
+ sourceFile: filePath,
45
+ nodeTypes: parsed.nodeTypes,
46
+ instances: [],
47
+ connections: [],
48
+ scopes: {},
49
+ startPorts: {},
50
+ exitPorts: {},
51
+ imports: [],
52
+ },
53
+ errors: [],
54
+ warnings,
55
+ availableWorkflows: [],
56
+ allWorkflows: [],
57
+ };
58
+ }
59
+ const nodeTypeCount = parsed.nodeTypes.length;
60
+ const nodeTypeHint = nodeTypeCount > 0
61
+ ? ` (found ${nodeTypeCount} node type${nodeTypeCount === 1 ? '' : 's'}, but no workflow function)`
62
+ : '';
63
+ errors.push(`No workflows found in file${nodeTypeHint}. Add a /** @flowWeaver workflow */ annotation above an exported function to define a workflow. Ensure node type functions are annotated with /** @flowWeaver nodeType */ first.`);
64
+ throw new Error('No workflows found in file');
65
+ }
66
+ if (parsed.workflows.length > 1) {
67
+ errors.push(`[MULTIPLE_WORKFLOWS_FOUND] Multiple workflows found: ${availableWorkflows.join(', ')}. Please specify workflowName in options.`);
68
+ throw new Error('Multiple workflows found, workflowName required');
69
+ }
70
+ // Single workflow found, use it
71
+ workflowName = parsed.workflows[0].functionName;
72
+ }
73
+ // Find the workflow
74
+ const workflow = parsed.workflows.find((w) => w.functionName === workflowName);
75
+ if (!workflow) {
76
+ errors.push(`Workflow "${workflowName}" not found. Available: ${availableWorkflows.join(', ')}`);
77
+ throw new Error(`Workflow "${workflowName}" not found`);
78
+ }
79
+ return {
80
+ ast: workflow,
81
+ errors: [],
82
+ warnings,
83
+ availableWorkflows,
84
+ allWorkflows: parsed.workflows,
85
+ };
86
+ }
87
+ catch (error) {
88
+ // If we already added errors, return with availableWorkflows
89
+ if (errors.length > 0) {
90
+ return {
91
+ ast: {}, // Return empty AST on error
92
+ errors,
93
+ warnings,
94
+ availableWorkflows, // Include available workflows even on error
95
+ allWorkflows: [],
96
+ };
97
+ }
98
+ // Handle unexpected errors
99
+ const errorMessage = getErrorMessage(error);
100
+ errors.push(`Failed to parse workflow: ${errorMessage}`);
101
+ return {
102
+ ast: {},
103
+ errors,
104
+ warnings,
105
+ availableWorkflows,
106
+ allWorkflows: [],
107
+ };
108
+ }
109
+ }
110
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Pure pattern API — no I/O, no console, no filesystem writes.
3
+ *
4
+ * Provides business logic for listing patterns, applying patterns to workflows,
5
+ * and generating node type code. CLI and MCP layers call these functions
6
+ * and handle their own I/O.
7
+ */
8
+ import type { TPatternAST, TNodeTypeAST, TWorkflowAST } from '../ast/types.js';
9
+ export interface PatternInfo {
10
+ name: string;
11
+ description?: string;
12
+ inputPorts: Array<{
13
+ name: string;
14
+ description?: string;
15
+ }>;
16
+ outputPorts: Array<{
17
+ name: string;
18
+ description?: string;
19
+ }>;
20
+ nodes: string[];
21
+ }
22
+ export interface WorkflowFileInfo {
23
+ filePath: string;
24
+ workflows: Array<{
25
+ name: string;
26
+ functionName: string;
27
+ nodeCount: number;
28
+ connectionCount: number;
29
+ }>;
30
+ }
31
+ export interface ExtractPatternOptions {
32
+ workflowAST: TWorkflowAST;
33
+ nodeTypes: TNodeTypeAST[];
34
+ nodeIds: string[];
35
+ name?: string;
36
+ }
37
+ export interface ExtractPatternResult {
38
+ patternCode: string;
39
+ patternName: string;
40
+ nodes: string[];
41
+ inputPorts: string[];
42
+ outputPorts: string[];
43
+ internalConnectionCount: number;
44
+ }
45
+ export interface ApplyPatternOptions {
46
+ /** The pattern AST to apply */
47
+ patternAST: TPatternAST;
48
+ /** Raw text content of the target workflow file */
49
+ targetContent: string;
50
+ /** Node type names already present in the target workflow */
51
+ targetNodeTypes: Set<string>;
52
+ /** Optional prefix for node IDs to avoid conflicts */
53
+ prefix?: string;
54
+ }
55
+ export interface ApplyPatternResult {
56
+ /** Modified file content with the pattern applied */
57
+ modifiedContent: string;
58
+ /** Number of node instances added */
59
+ nodesAdded: number;
60
+ /** Number of connections added */
61
+ connectionsAdded: number;
62
+ /** Names of node types added (those not already in the target) */
63
+ nodeTypesAdded: string[];
64
+ /** Node type names that conflict (exist in both pattern and target) */
65
+ conflicts: string[];
66
+ /** Human-readable instructions for wiring IN/OUT ports */
67
+ wiringInstructions: string[];
68
+ /** Structured fw_modify_batch operations for wiring IN/OUT ports */
69
+ wiringOperations: Array<{
70
+ operation: 'addConnection';
71
+ params: {
72
+ from: string;
73
+ to: string;
74
+ };
75
+ }>;
76
+ }
77
+ /**
78
+ * Parse a file and return metadata for all patterns found.
79
+ *
80
+ * Pure: reads file via AnnotationParser, returns structured data.
81
+ */
82
+ export declare function listPatterns(filePath: string): PatternInfo[];
83
+ /**
84
+ * Compute the result of applying a pattern to a workflow.
85
+ *
86
+ * Pure: takes AST + content + options, returns the modified content
87
+ * and structured metadata (conflicts, wiring instructions, etc.).
88
+ * Does **not** write to disk.
89
+ */
90
+ export declare function applyPattern(options: ApplyPatternOptions): ApplyPatternResult;
91
+ /**
92
+ * Generate a TypeScript stub for a node type.
93
+ *
94
+ * Produces a JSDoc-annotated function with the correct ports.
95
+ */
96
+ export declare function generateNodeTypeCode(nodeType: TNodeTypeAST): string;
97
+ /**
98
+ * Scan a directory for files containing @flowWeaver workflow annotations
99
+ * and return structured metadata for each.
100
+ *
101
+ * Pure: reads files via AnnotationParser, returns structured data.
102
+ * Skips files that fail to parse.
103
+ */
104
+ export declare function findWorkflows(directory: string, pattern?: string): Promise<WorkflowFileInfo[]>;
105
+ /**
106
+ * Extract a reusable pattern from selected nodes in a workflow.
107
+ *
108
+ * Pure: takes AST + node IDs, returns pattern code and metadata.
109
+ * Does **not** write to disk.
110
+ */
111
+ export declare function extractPattern(options: ExtractPatternOptions): ExtractPatternResult;
112
+ //# sourceMappingURL=patterns.d.ts.map