@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,823 @@
1
+ /**
2
+ * Base export target interface and abstract class
3
+ *
4
+ * Defines the contract for serverless export targets and provides
5
+ * shared utilities for generating deployment artifacts.
6
+ */
7
+ import * as path from 'path';
8
+ import { getGeneratedBranding } from '../../generated-branding.js';
9
+ /**
10
+ * Base export target with shared utilities
11
+ */
12
+ export class BaseExportTarget {
13
+ /**
14
+ * Generate a standard package.json
15
+ */
16
+ generatePackageJson(options) {
17
+ const pkg = {
18
+ name: `fw-${options.name}`,
19
+ version: '1.0.0',
20
+ description: options.description || `Flow Weaver workflow: ${options.name}`,
21
+ type: 'module',
22
+ main: options.main || 'index.js',
23
+ scripts: options.scripts || {},
24
+ dependencies: options.dependencies || {},
25
+ devDependencies: {
26
+ typescript: '^5.0.0',
27
+ ...options.devDependencies,
28
+ },
29
+ };
30
+ return JSON.stringify(pkg, null, 2);
31
+ }
32
+ /**
33
+ * Generate a standard tsconfig.json
34
+ */
35
+ generateTsConfig(options = {}) {
36
+ const config = {
37
+ compilerOptions: {
38
+ target: 'ES2022',
39
+ module: options.module || 'NodeNext',
40
+ moduleResolution: options.moduleResolution || 'NodeNext',
41
+ outDir: options.outDir || './dist',
42
+ strict: true,
43
+ esModuleInterop: true,
44
+ skipLibCheck: true,
45
+ ...(options.types && { types: options.types }),
46
+ },
47
+ include: ['**/*.ts'],
48
+ };
49
+ return JSON.stringify(config, null, 2);
50
+ }
51
+ /**
52
+ * Create a file object
53
+ */
54
+ createFile(outputDir, relativePath, content, type) {
55
+ return {
56
+ relativePath,
57
+ absolutePath: path.join(outputDir, relativePath),
58
+ content,
59
+ type,
60
+ };
61
+ }
62
+ /**
63
+ * Generate content files for workflows and node types in a bundle.
64
+ * Creates files under workflows/ and node-types/ subdirectories.
65
+ */
66
+ generateBundleContentFiles(workflows, nodeTypes, outputDir, workflowDir = 'workflows', nodeTypeDir = 'node-types') {
67
+ const files = [];
68
+ for (const w of workflows) {
69
+ if (w.code) {
70
+ files.push(this.createFile(outputDir, `${workflowDir}/${w.name}.ts`, w.code, 'workflow'));
71
+ }
72
+ }
73
+ for (const nt of nodeTypes) {
74
+ if (nt.code) {
75
+ // Use lowercase functionName for file naming to ensure consistency with import paths
76
+ // and avoid case-sensitivity issues on case-insensitive filesystems (macOS, Windows)
77
+ files.push(this.createFile(outputDir, `${nodeTypeDir}/${nt.functionName.toLowerCase()}.ts`, nt.code, 'nodeType'));
78
+ }
79
+ }
80
+ return files;
81
+ }
82
+ /**
83
+ * Generate content files for compiled workflows.
84
+ * Creates files under the workflows/ subdirectory.
85
+ */
86
+ generateWorkflowContentFiles(workflows, outputDir, workflowDir = 'workflows') {
87
+ const files = [];
88
+ for (const w of workflows) {
89
+ if (w.code) {
90
+ files.push(this.createFile(outputDir, `${workflowDir}/${w.name}.ts`, w.code, 'workflow'));
91
+ }
92
+ }
93
+ return files;
94
+ }
95
+ /**
96
+ * Generate content files for node types.
97
+ * Creates files under the node-types/ subdirectory.
98
+ */
99
+ generateNodeTypeContentFiles(nodeTypes, outputDir, nodeTypeDir = 'node-types') {
100
+ const files = [];
101
+ for (const nt of nodeTypes) {
102
+ if (nt.code) {
103
+ // Use lowercase functionName for file naming to ensure consistency with import paths
104
+ // and avoid case-sensitivity issues on case-insensitive filesystems
105
+ files.push(this.createFile(outputDir, `${nodeTypeDir}/${nt.functionName.toLowerCase()}.ts`, nt.code, 'nodeType'));
106
+ }
107
+ }
108
+ return files;
109
+ }
110
+ /**
111
+ * Get relative import path for the workflow
112
+ */
113
+ getWorkflowImport(workflowFile) {
114
+ const basename = path.basename(workflowFile, path.extname(workflowFile));
115
+ return `./${basename}.js`;
116
+ }
117
+ /**
118
+ * Generate OpenAPI spec for node types as HTTP endpoints
119
+ */
120
+ generateNodeTypeOpenAPI(nodeTypes, options) {
121
+ const paths = {};
122
+ for (const nodeType of nodeTypes) {
123
+ // Build request schema from inputs
124
+ const inputProperties = {};
125
+ const requiredInputs = [];
126
+ for (const [portName, portDef] of Object.entries(nodeType.inputs)) {
127
+ // Skip control flow ports (execute)
128
+ if (portDef.dataType === 'STEP')
129
+ continue;
130
+ inputProperties[portName] = {
131
+ type: this.mapDataTypeToJsonSchema(portDef.dataType || 'any'),
132
+ description: portDef.label || portName,
133
+ ...(portDef.tsType && { 'x-ts-type': portDef.tsType }),
134
+ };
135
+ if (!portDef.optional) {
136
+ requiredInputs.push(portName);
137
+ }
138
+ }
139
+ // Build response schema from outputs
140
+ const outputProperties = {};
141
+ for (const [portName, portDef] of Object.entries(nodeType.outputs)) {
142
+ // Skip control flow ports (onSuccess, onFailure)
143
+ if (portDef.dataType === 'STEP')
144
+ continue;
145
+ outputProperties[portName] = {
146
+ type: this.mapDataTypeToJsonSchema(portDef.dataType || 'any'),
147
+ description: portDef.label || portName,
148
+ ...(portDef.tsType && { 'x-ts-type': portDef.tsType }),
149
+ };
150
+ }
151
+ paths[`/api/${nodeType.name}`] = {
152
+ post: {
153
+ operationId: `execute_${nodeType.functionName}`,
154
+ summary: `Execute ${nodeType.name}`,
155
+ description: nodeType.description || `Execute the ${nodeType.name} node type function`,
156
+ tags: ['node-types'],
157
+ requestBody: {
158
+ description: 'Node type input parameters',
159
+ required: true,
160
+ content: {
161
+ 'application/json': {
162
+ schema: {
163
+ type: 'object',
164
+ properties: inputProperties,
165
+ required: requiredInputs.length > 0 ? requiredInputs : undefined,
166
+ },
167
+ },
168
+ },
169
+ },
170
+ responses: {
171
+ '200': {
172
+ description: 'Successful execution',
173
+ content: {
174
+ 'application/json': {
175
+ schema: {
176
+ type: 'object',
177
+ properties: {
178
+ success: { type: 'boolean' },
179
+ result: {
180
+ type: 'object',
181
+ properties: outputProperties,
182
+ },
183
+ executionTime: { type: 'number' },
184
+ requestId: { type: 'string' },
185
+ },
186
+ },
187
+ },
188
+ },
189
+ },
190
+ '404': {
191
+ description: 'Node type not found',
192
+ content: {
193
+ 'application/json': {
194
+ schema: {
195
+ type: 'object',
196
+ properties: {
197
+ error: { type: 'string' },
198
+ },
199
+ },
200
+ },
201
+ },
202
+ },
203
+ '500': {
204
+ description: 'Execution error',
205
+ content: {
206
+ 'application/json': {
207
+ schema: {
208
+ type: 'object',
209
+ properties: {
210
+ success: { type: 'boolean' },
211
+ error: { type: 'string' },
212
+ requestId: { type: 'string' },
213
+ },
214
+ },
215
+ },
216
+ },
217
+ },
218
+ },
219
+ },
220
+ };
221
+ }
222
+ // Add OpenAPI spec endpoint
223
+ paths['/api/openapi.json'] = {
224
+ get: {
225
+ operationId: 'get_openapi',
226
+ summary: 'OpenAPI Specification',
227
+ description: 'Returns this OpenAPI 3.0 specification',
228
+ tags: ['documentation'],
229
+ responses: {
230
+ '200': {
231
+ description: 'OpenAPI specification',
232
+ content: {
233
+ 'application/json': {},
234
+ },
235
+ },
236
+ },
237
+ },
238
+ };
239
+ return {
240
+ openapi: '3.0.3',
241
+ info: {
242
+ title: options.title,
243
+ version: options.version,
244
+ description: `Node type service with ${nodeTypes.length} endpoints`,
245
+ },
246
+ servers: [{ url: options.baseUrl || '/', description: 'Current deployment' }],
247
+ paths,
248
+ tags: [
249
+ { name: 'node-types', description: 'Node type execution endpoints' },
250
+ { name: 'documentation', description: 'API documentation' },
251
+ ],
252
+ };
253
+ }
254
+ /**
255
+ * Map Flow Weaver data types to JSON Schema types
256
+ */
257
+ mapDataTypeToJsonSchema(dataType) {
258
+ const typeMap = {
259
+ STRING: 'string',
260
+ NUMBER: 'number',
261
+ BOOLEAN: 'boolean',
262
+ OBJECT: 'object',
263
+ ARRAY: 'array',
264
+ ANY: 'any',
265
+ FUNCTION: 'object',
266
+ STEP: 'boolean',
267
+ };
268
+ return typeMap[dataType] || 'any';
269
+ }
270
+ /**
271
+ * Generate consolidated OpenAPI spec for multiple workflows
272
+ */
273
+ generateConsolidatedOpenAPI(workflows, options) {
274
+ const paths = {};
275
+ for (const workflow of workflows) {
276
+ paths[`/api/${workflow.name}`] = {
277
+ post: {
278
+ operationId: `execute_${workflow.functionName}`,
279
+ summary: `Execute ${workflow.name} workflow`,
280
+ description: workflow.description || `Execute the ${workflow.name} workflow`,
281
+ tags: ['workflows'],
282
+ requestBody: {
283
+ description: 'Workflow input parameters',
284
+ required: true,
285
+ content: {
286
+ 'application/json': {
287
+ schema: {
288
+ type: 'object',
289
+ description: 'Workflow-specific parameters. Function parameters can be registry IDs.',
290
+ additionalProperties: true,
291
+ },
292
+ },
293
+ },
294
+ },
295
+ responses: {
296
+ '200': {
297
+ description: 'Successful workflow execution',
298
+ content: {
299
+ 'application/json': {
300
+ schema: {
301
+ type: 'object',
302
+ properties: {
303
+ success: { type: 'boolean' },
304
+ result: { type: 'object' },
305
+ executionTime: { type: 'number' },
306
+ requestId: { type: 'string' },
307
+ },
308
+ },
309
+ },
310
+ },
311
+ },
312
+ '404': {
313
+ description: 'Workflow not found',
314
+ content: {
315
+ 'application/json': {
316
+ schema: {
317
+ type: 'object',
318
+ properties: {
319
+ error: { type: 'string' },
320
+ },
321
+ },
322
+ },
323
+ },
324
+ },
325
+ '500': {
326
+ description: 'Execution error',
327
+ content: {
328
+ 'application/json': {
329
+ schema: {
330
+ type: 'object',
331
+ properties: {
332
+ success: { type: 'boolean' },
333
+ error: { type: 'string' },
334
+ requestId: { type: 'string' },
335
+ },
336
+ },
337
+ },
338
+ },
339
+ },
340
+ },
341
+ },
342
+ };
343
+ }
344
+ // Add /api/functions endpoint
345
+ paths['/api/functions'] = {
346
+ get: {
347
+ operationId: 'list_functions',
348
+ summary: 'List available functions',
349
+ description: 'Returns all registered functions that can be used as parameters',
350
+ tags: ['functions'],
351
+ parameters: [
352
+ {
353
+ name: 'category',
354
+ in: 'query',
355
+ required: false,
356
+ schema: {
357
+ type: 'string',
358
+ enum: ['transform', 'filter', 'validate', 'format', 'custom'],
359
+ },
360
+ description: 'Filter by function category',
361
+ },
362
+ ],
363
+ responses: {
364
+ '200': {
365
+ description: 'List of registered functions',
366
+ content: {
367
+ 'application/json': {
368
+ schema: {
369
+ type: 'array',
370
+ items: {
371
+ type: 'object',
372
+ properties: {
373
+ id: { type: 'string', example: 'string:uppercase' },
374
+ name: { type: 'string' },
375
+ description: { type: 'string' },
376
+ category: {
377
+ type: 'string',
378
+ enum: ['transform', 'filter', 'validate', 'format', 'custom'],
379
+ },
380
+ inputType: { type: 'string' },
381
+ outputType: { type: 'string' },
382
+ },
383
+ },
384
+ },
385
+ },
386
+ },
387
+ },
388
+ },
389
+ },
390
+ };
391
+ // Add OpenAPI spec endpoint
392
+ paths['/api/openapi.json'] = {
393
+ get: {
394
+ operationId: 'get_openapi',
395
+ summary: 'OpenAPI Specification',
396
+ description: 'Returns this OpenAPI 3.0 specification',
397
+ tags: ['documentation'],
398
+ responses: {
399
+ '200': {
400
+ description: 'OpenAPI specification',
401
+ content: {
402
+ 'application/json': {},
403
+ },
404
+ },
405
+ },
406
+ },
407
+ };
408
+ return {
409
+ openapi: '3.0.3',
410
+ info: {
411
+ title: options.title,
412
+ version: options.version,
413
+ description: `Multi-workflow service with ${workflows.length} workflows`,
414
+ },
415
+ servers: [{ url: options.baseUrl || '/', description: 'Current deployment' }],
416
+ paths,
417
+ tags: [
418
+ { name: 'workflows', description: 'Workflow execution endpoints' },
419
+ { name: 'functions', description: 'Function registry endpoints' },
420
+ { name: 'documentation', description: 'API documentation' },
421
+ ],
422
+ components: {
423
+ schemas: {
424
+ FunctionReference: {
425
+ oneOf: [
426
+ {
427
+ type: 'string',
428
+ description: 'Registry function ID (e.g., "string:uppercase")',
429
+ },
430
+ {
431
+ type: 'object',
432
+ properties: {
433
+ registryId: {
434
+ type: 'string',
435
+ description: 'Registry function ID',
436
+ },
437
+ partialArgs: {
438
+ type: 'object',
439
+ description: 'Pre-bound arguments',
440
+ additionalProperties: true,
441
+ },
442
+ },
443
+ required: ['registryId'],
444
+ },
445
+ ],
446
+ description: 'Function parameter - can be a registry ID or object with partial arguments',
447
+ },
448
+ },
449
+ },
450
+ };
451
+ }
452
+ /**
453
+ * Generate OpenAPI spec for a unified bundle of workflows and node types.
454
+ * Only includes exposed items as HTTP endpoints.
455
+ */
456
+ generateBundleOpenAPI(workflows, nodeTypes, options) {
457
+ const paths = {};
458
+ const tags = [];
459
+ // Add exposed workflows
460
+ const exposedWorkflows = workflows.filter((w) => w.expose);
461
+ if (exposedWorkflows.length > 0) {
462
+ tags.push({ name: 'workflows', description: 'Workflow execution endpoints' });
463
+ for (const workflow of exposedWorkflows) {
464
+ paths[`/api/workflows/${workflow.name}`] = {
465
+ post: {
466
+ operationId: `execute_workflow_${workflow.functionName}`,
467
+ summary: `Execute ${workflow.name} workflow`,
468
+ description: workflow.description || `Execute the ${workflow.name} workflow`,
469
+ tags: ['workflows'],
470
+ requestBody: {
471
+ description: 'Workflow input parameters',
472
+ required: true,
473
+ content: {
474
+ 'application/json': {
475
+ schema: {
476
+ type: 'object',
477
+ description: 'Workflow-specific parameters',
478
+ additionalProperties: true,
479
+ },
480
+ },
481
+ },
482
+ },
483
+ responses: {
484
+ '200': {
485
+ description: 'Successful workflow execution',
486
+ content: {
487
+ 'application/json': {
488
+ schema: {
489
+ type: 'object',
490
+ properties: {
491
+ success: { type: 'boolean' },
492
+ result: { type: 'object' },
493
+ executionTime: { type: 'number' },
494
+ requestId: { type: 'string' },
495
+ },
496
+ },
497
+ },
498
+ },
499
+ },
500
+ '404': {
501
+ description: 'Workflow not found',
502
+ content: {
503
+ 'application/json': {
504
+ schema: {
505
+ type: 'object',
506
+ properties: { error: { type: 'string' } },
507
+ },
508
+ },
509
+ },
510
+ },
511
+ '500': {
512
+ description: 'Execution error',
513
+ content: {
514
+ 'application/json': {
515
+ schema: {
516
+ type: 'object',
517
+ properties: {
518
+ success: { type: 'boolean' },
519
+ error: { type: 'string' },
520
+ requestId: { type: 'string' },
521
+ },
522
+ },
523
+ },
524
+ },
525
+ },
526
+ },
527
+ },
528
+ };
529
+ }
530
+ }
531
+ // Add exposed node types
532
+ const exposedNodeTypes = nodeTypes.filter((nt) => nt.expose);
533
+ if (exposedNodeTypes.length > 0) {
534
+ tags.push({ name: 'node-types', description: 'Node type execution endpoints' });
535
+ for (const nodeType of exposedNodeTypes) {
536
+ // Build request schema from inputs
537
+ const inputProperties = {};
538
+ const requiredInputs = [];
539
+ for (const [portName, portDef] of Object.entries(nodeType.inputs)) {
540
+ // Skip control flow ports (execute)
541
+ if (portDef.dataType === 'STEP')
542
+ continue;
543
+ inputProperties[portName] = {
544
+ type: this.mapDataTypeToJsonSchema(portDef.dataType || 'any'),
545
+ description: portDef.label || portName,
546
+ ...(portDef.tsType && { 'x-ts-type': portDef.tsType }),
547
+ };
548
+ if (!portDef.optional) {
549
+ requiredInputs.push(portName);
550
+ }
551
+ }
552
+ // Build response schema from outputs
553
+ const outputProperties = {};
554
+ for (const [portName, portDef] of Object.entries(nodeType.outputs)) {
555
+ // Skip control flow ports
556
+ if (portDef.dataType === 'STEP')
557
+ continue;
558
+ outputProperties[portName] = {
559
+ type: this.mapDataTypeToJsonSchema(portDef.dataType || 'any'),
560
+ description: portDef.label || portName,
561
+ ...(portDef.tsType && { 'x-ts-type': portDef.tsType }),
562
+ };
563
+ }
564
+ paths[`/api/nodes/${nodeType.name}`] = {
565
+ post: {
566
+ operationId: `execute_node_${nodeType.functionName}`,
567
+ summary: `Execute ${nodeType.name}`,
568
+ description: nodeType.description || `Execute the ${nodeType.name} node type function`,
569
+ tags: ['node-types'],
570
+ requestBody: {
571
+ description: 'Node type input parameters',
572
+ required: true,
573
+ content: {
574
+ 'application/json': {
575
+ schema: {
576
+ type: 'object',
577
+ properties: inputProperties,
578
+ required: requiredInputs.length > 0 ? requiredInputs : undefined,
579
+ },
580
+ },
581
+ },
582
+ },
583
+ responses: {
584
+ '200': {
585
+ description: 'Successful execution',
586
+ content: {
587
+ 'application/json': {
588
+ schema: {
589
+ type: 'object',
590
+ properties: {
591
+ success: { type: 'boolean' },
592
+ result: {
593
+ type: 'object',
594
+ properties: outputProperties,
595
+ },
596
+ executionTime: { type: 'number' },
597
+ requestId: { type: 'string' },
598
+ },
599
+ },
600
+ },
601
+ },
602
+ },
603
+ '404': {
604
+ description: 'Node type not found',
605
+ content: {
606
+ 'application/json': {
607
+ schema: {
608
+ type: 'object',
609
+ properties: { error: { type: 'string' } },
610
+ },
611
+ },
612
+ },
613
+ },
614
+ '500': {
615
+ description: 'Execution error',
616
+ content: {
617
+ 'application/json': {
618
+ schema: {
619
+ type: 'object',
620
+ properties: {
621
+ success: { type: 'boolean' },
622
+ error: { type: 'string' },
623
+ requestId: { type: 'string' },
624
+ },
625
+ },
626
+ },
627
+ },
628
+ },
629
+ },
630
+ },
631
+ };
632
+ }
633
+ }
634
+ // Add function registry endpoint
635
+ tags.push({ name: 'functions', description: 'Function registry endpoints' });
636
+ paths['/api/functions'] = {
637
+ get: {
638
+ operationId: 'list_functions',
639
+ summary: 'List available functions',
640
+ description: 'Returns all registered functions that can be used as parameters',
641
+ tags: ['functions'],
642
+ parameters: [
643
+ {
644
+ name: 'category',
645
+ in: 'query',
646
+ required: false,
647
+ schema: {
648
+ type: 'string',
649
+ enum: ['transform', 'filter', 'validate', 'format', 'custom'],
650
+ },
651
+ description: 'Filter by function category',
652
+ },
653
+ ],
654
+ responses: {
655
+ '200': {
656
+ description: 'List of registered functions',
657
+ content: {
658
+ 'application/json': {
659
+ schema: {
660
+ type: 'array',
661
+ items: {
662
+ type: 'object',
663
+ properties: {
664
+ id: { type: 'string' },
665
+ name: { type: 'string' },
666
+ description: { type: 'string' },
667
+ category: { type: 'string' },
668
+ },
669
+ },
670
+ },
671
+ },
672
+ },
673
+ },
674
+ },
675
+ },
676
+ };
677
+ // Add OpenAPI spec endpoint
678
+ tags.push({ name: 'documentation', description: 'API documentation' });
679
+ paths['/api/openapi.json'] = {
680
+ get: {
681
+ operationId: 'get_openapi',
682
+ summary: 'OpenAPI Specification',
683
+ description: 'Returns this OpenAPI 3.0 specification',
684
+ tags: ['documentation'],
685
+ responses: {
686
+ '200': {
687
+ description: 'OpenAPI specification',
688
+ content: { 'application/json': {} },
689
+ },
690
+ },
691
+ },
692
+ };
693
+ // Build description
694
+ const exposedCounts = [];
695
+ if (exposedWorkflows.length > 0) {
696
+ exposedCounts.push(`${exposedWorkflows.length} workflow${exposedWorkflows.length !== 1 ? 's' : ''}`);
697
+ }
698
+ if (exposedNodeTypes.length > 0) {
699
+ exposedCounts.push(`${exposedNodeTypes.length} node type${exposedNodeTypes.length !== 1 ? 's' : ''}`);
700
+ }
701
+ return {
702
+ openapi: '3.0.3',
703
+ info: {
704
+ title: options.title,
705
+ version: options.version,
706
+ description: `Bundle service with ${exposedCounts.join(' and ')} exposed`,
707
+ },
708
+ servers: [{ url: options.baseUrl || '/', description: 'Current deployment' }],
709
+ paths,
710
+ tags,
711
+ };
712
+ }
713
+ /**
714
+ * Generate a README.md from deploy instructions
715
+ */
716
+ generateReadme(instructions, workflowName, target) {
717
+ const lines = [];
718
+ lines.push(`# Deploy ${workflowName} to ${target}`);
719
+ lines.push('');
720
+ if (instructions.prerequisites.length > 0) {
721
+ lines.push('## Prerequisites');
722
+ lines.push('');
723
+ instructions.prerequisites.forEach((p) => lines.push(`- ${p}`));
724
+ lines.push('');
725
+ }
726
+ if (instructions.steps.length > 0) {
727
+ lines.push('## Deployment Steps');
728
+ lines.push('');
729
+ instructions.steps.forEach((step, i) => {
730
+ if (step.startsWith(' ')) {
731
+ // Indented sub-steps rendered as code
732
+ lines.push(` \`${step.trim()}\``);
733
+ }
734
+ else {
735
+ lines.push(`${i + 1}. \`${step}\``);
736
+ }
737
+ });
738
+ lines.push('');
739
+ }
740
+ if (instructions.localTestSteps && instructions.localTestSteps.length > 0) {
741
+ lines.push('## Local Testing');
742
+ lines.push('');
743
+ lines.push('Test your deployment locally before pushing to production:');
744
+ lines.push('');
745
+ lines.push('```bash');
746
+ instructions.localTestSteps.forEach((step) => lines.push(step));
747
+ lines.push('```');
748
+ lines.push('');
749
+ }
750
+ if (instructions.links && instructions.links.length > 0) {
751
+ lines.push('## Useful Links');
752
+ lines.push('');
753
+ instructions.links.forEach((link) => lines.push(`- [${link.label}](${link.url})`));
754
+ lines.push('');
755
+ }
756
+ lines.push('---');
757
+ lines.push(getGeneratedBranding().markdown);
758
+ lines.push('');
759
+ return lines.join('\n');
760
+ }
761
+ /**
762
+ * Generate real runtime files from the Flow Weaver runtime source.
763
+ * Includes the function registry, builtin functions, and parameter resolver.
764
+ * These replace the placeholder files that were previously generated.
765
+ */
766
+ generateRuntimeFiles(outputDir, workflows, nodeTypes) {
767
+ const files = [];
768
+ // Generate function registry with workflow/nodeType metadata
769
+ files.push(this.createFile(outputDir, 'runtime/function-registry.ts', this.generateFunctionRegistryContent(workflows, nodeTypes), 'other'));
770
+ // Generate builtin functions module
771
+ files.push(this.createFile(outputDir, 'runtime/builtin-functions.ts', `// Builtin functions — auto-registers known functions\nimport './function-registry.js';\n`, 'other'));
772
+ // Generate parameter resolver
773
+ files.push(this.createFile(outputDir, 'runtime/parameter-resolver.ts', `// Parameter resolver\nexport function resolveFunction(param: unknown) { return typeof param === 'function' ? param : undefined; }\n`, 'other'));
774
+ return files;
775
+ }
776
+ /**
777
+ * Generate function registry content with workflow/nodeType metadata.
778
+ * Used as fallback when real runtime source files aren't available.
779
+ */
780
+ generateFunctionRegistryContent(workflows, nodeTypes) {
781
+ return `// Generated function registry
782
+ type FunctionInfo = {
783
+ name: string;
784
+ type: 'workflow' | 'nodeType';
785
+ exposed: boolean;
786
+ };
787
+
788
+ const functions: FunctionInfo[] = [
789
+ ${workflows.map((w) => ` { name: '${w.name}', type: 'workflow', exposed: ${w.expose} },`).join('\n')}
790
+ ${nodeTypes.map((nt) => ` { name: '${nt.name}', type: 'nodeType', exposed: ${nt.expose} },`).join('\n')}
791
+ ];
792
+
793
+ export const functionRegistry = {
794
+ list(category?: 'workflow' | 'nodeType'): FunctionInfo[] {
795
+ if (!category) return functions;
796
+ return functions.filter((f) => f.type === category);
797
+ },
798
+ get(name: string): FunctionInfo | undefined {
799
+ return functions.find((f) => f.name === name);
800
+ },
801
+ };
802
+ `;
803
+ }
804
+ }
805
+ /**
806
+ * Registry of available export targets
807
+ */
808
+ export class ExportTargetRegistry {
809
+ targets = new Map();
810
+ register(target) {
811
+ this.targets.set(target.name, target);
812
+ }
813
+ get(name) {
814
+ return this.targets.get(name);
815
+ }
816
+ getAll() {
817
+ return Array.from(this.targets.values());
818
+ }
819
+ getNames() {
820
+ return Array.from(this.targets.keys());
821
+ }
822
+ }
823
+ //# sourceMappingURL=base.js.map