@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,66 @@
1
+ /**
2
+ * Function Registry for Flow Weaver
3
+ *
4
+ * Provides a global registry of functions that can be referenced by string IDs
5
+ * in external HTTP calls while allowing direct function passing in internal calls.
6
+ */
7
+ export class FunctionRegistry {
8
+ functions = new Map();
9
+ /**
10
+ * Register a function with the registry
11
+ */
12
+ register(config) {
13
+ if (this.functions.has(config.id)) {
14
+ throw new Error(`Function with ID '${config.id}' is already registered`);
15
+ }
16
+ this.functions.set(config.id, config);
17
+ }
18
+ /**
19
+ * Get a function by ID
20
+ */
21
+ get(id) {
22
+ const registered = this.functions.get(id);
23
+ return registered?.fn;
24
+ }
25
+ /**
26
+ * Get function metadata without the function itself
27
+ */
28
+ getMetadata(id) {
29
+ const registered = this.functions.get(id);
30
+ if (!registered)
31
+ return undefined;
32
+ const { fn: _, ...metadata } = registered;
33
+ return metadata;
34
+ }
35
+ /**
36
+ * List all registered functions, optionally filtered by category
37
+ */
38
+ list(category) {
39
+ const all = Array.from(this.functions.values());
40
+ const filtered = category ? all.filter((f) => f.category === category) : all;
41
+ return filtered.map(({ fn: _, ...metadata }) => metadata);
42
+ }
43
+ /**
44
+ * Check if a function is registered
45
+ */
46
+ has(id) {
47
+ return this.functions.has(id);
48
+ }
49
+ /**
50
+ * Clear all registered functions (useful for testing)
51
+ */
52
+ clear() {
53
+ this.functions.clear();
54
+ }
55
+ /**
56
+ * Get the count of registered functions
57
+ */
58
+ get size() {
59
+ return this.functions.size;
60
+ }
61
+ }
62
+ /**
63
+ * Global function registry singleton
64
+ */
65
+ export const functionRegistry = new FunctionRegistry();
66
+ //# sourceMappingURL=function-registry.js.map
@@ -0,0 +1,7 @@
1
+ export { GeneratedExecutionContext } from "./ExecutionContext.js";
2
+ export { CancellationError } from "./CancellationError.js";
3
+ export * from "./events.js";
4
+ export * from "./function-registry.js";
5
+ export * from "./parameter-resolver.js";
6
+ export * from "./builtin-functions.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,7 @@
1
+ export { GeneratedExecutionContext } from "./ExecutionContext.js";
2
+ export { CancellationError } from "./CancellationError.js";
3
+ export * from "./events.js";
4
+ export * from "./function-registry.js";
5
+ export * from "./parameter-resolver.js";
6
+ export * from "./builtin-functions.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Parameter Resolver for Flow Weaver
3
+ *
4
+ * Resolves function-like parameters to executable functions.
5
+ * Supports:
6
+ * - Direct functions (passed through)
7
+ * - Registry IDs (looked up in function registry)
8
+ * - Partial application (registry ID with pre-bound arguments)
9
+ */
10
+ /**
11
+ * A function-like parameter that can be:
12
+ * - A direct function
13
+ * - A string registry ID
14
+ * - An object with registry ID and partial arguments
15
+ */
16
+ export type FunctionLike<TIn, TOut> = ((input: TIn) => TOut | Promise<TOut>) | string | {
17
+ registryId: string;
18
+ partialArgs?: Partial<TIn>;
19
+ };
20
+ /**
21
+ * Result of resolving a function parameter
22
+ */
23
+ export interface ResolvedFunction<TIn, TOut> {
24
+ fn: (input: TIn) => TOut | Promise<TOut>;
25
+ source: 'direct' | 'registry';
26
+ registryId?: string;
27
+ }
28
+ /**
29
+ * Resolve a function-like parameter to an executable function
30
+ *
31
+ * @param param - The function-like parameter to resolve
32
+ * @returns The resolved function with metadata
33
+ * @throws Error if registry ID is not found
34
+ *
35
+ * @example
36
+ * // Direct function
37
+ * const resolved = resolveFunction((x: number) => x * 2);
38
+ * resolved.fn(5); // 10
39
+ *
40
+ * @example
41
+ * // Registry ID
42
+ * const resolved = resolveFunction('string:uppercase');
43
+ * resolved.fn('hello'); // 'HELLO'
44
+ *
45
+ * @example
46
+ * // Partial application
47
+ * const resolved = resolveFunction({
48
+ * registryId: 'math:clamp',
49
+ * partialArgs: { min: 0, max: 100 }
50
+ * });
51
+ * resolved.fn({ value: 150 }); // 100
52
+ */
53
+ export declare function resolveFunction<TIn, TOut>(param: FunctionLike<TIn, TOut>): ResolvedFunction<TIn, TOut>;
54
+ /**
55
+ * Check if a value is a function-like parameter
56
+ */
57
+ export declare function isFunctionLike(value: unknown): value is FunctionLike<unknown, unknown>;
58
+ /**
59
+ * Try to resolve a function, returning undefined if not found
60
+ */
61
+ export declare function tryResolveFunction<TIn, TOut>(param: FunctionLike<TIn, TOut>): ResolvedFunction<TIn, TOut> | undefined;
62
+ //# sourceMappingURL=parameter-resolver.d.ts.map
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Parameter Resolver for Flow Weaver
3
+ *
4
+ * Resolves function-like parameters to executable functions.
5
+ * Supports:
6
+ * - Direct functions (passed through)
7
+ * - Registry IDs (looked up in function registry)
8
+ * - Partial application (registry ID with pre-bound arguments)
9
+ */
10
+ import { functionRegistry } from './function-registry.js';
11
+ /**
12
+ * Resolve a function-like parameter to an executable function
13
+ *
14
+ * @param param - The function-like parameter to resolve
15
+ * @returns The resolved function with metadata
16
+ * @throws Error if registry ID is not found
17
+ *
18
+ * @example
19
+ * // Direct function
20
+ * const resolved = resolveFunction((x: number) => x * 2);
21
+ * resolved.fn(5); // 10
22
+ *
23
+ * @example
24
+ * // Registry ID
25
+ * const resolved = resolveFunction('string:uppercase');
26
+ * resolved.fn('hello'); // 'HELLO'
27
+ *
28
+ * @example
29
+ * // Partial application
30
+ * const resolved = resolveFunction({
31
+ * registryId: 'math:clamp',
32
+ * partialArgs: { min: 0, max: 100 }
33
+ * });
34
+ * resolved.fn({ value: 150 }); // 100
35
+ */
36
+ export function resolveFunction(param) {
37
+ // Direct function - pass through
38
+ if (typeof param === 'function') {
39
+ return {
40
+ fn: param,
41
+ source: 'direct',
42
+ };
43
+ }
44
+ // String registry ID
45
+ if (typeof param === 'string') {
46
+ const fn = functionRegistry.get(param);
47
+ if (!fn) {
48
+ throw new Error(`Function '${param}' not found in registry`);
49
+ }
50
+ return {
51
+ fn,
52
+ source: 'registry',
53
+ registryId: param,
54
+ };
55
+ }
56
+ // Object with registry ID and optional partial args
57
+ if (typeof param === 'object' && param !== null && 'registryId' in param) {
58
+ const fn = functionRegistry.get(param.registryId);
59
+ if (!fn) {
60
+ throw new Error(`Function '${param.registryId}' not found in registry`);
61
+ }
62
+ // If partial args provided, create wrapper that merges them
63
+ if (param.partialArgs) {
64
+ const partialArgs = param.partialArgs;
65
+ const wrappedFn = (input) => {
66
+ // Merge partial args with input (input takes precedence for conflicting keys)
67
+ const mergedInput = typeof input === 'object' && input !== null
68
+ ? { ...partialArgs, ...input }
69
+ : input;
70
+ return fn(mergedInput);
71
+ };
72
+ return {
73
+ fn: wrappedFn,
74
+ source: 'registry',
75
+ registryId: param.registryId,
76
+ };
77
+ }
78
+ return {
79
+ fn,
80
+ source: 'registry',
81
+ registryId: param.registryId,
82
+ };
83
+ }
84
+ throw new Error(`Invalid function parameter: ${JSON.stringify(param)}`);
85
+ }
86
+ /**
87
+ * Check if a value is a function-like parameter
88
+ */
89
+ export function isFunctionLike(value) {
90
+ if (typeof value === 'function')
91
+ return true;
92
+ if (typeof value === 'string')
93
+ return true;
94
+ if (typeof value === 'object' &&
95
+ value !== null &&
96
+ 'registryId' in value &&
97
+ typeof value.registryId === 'string') {
98
+ return true;
99
+ }
100
+ return false;
101
+ }
102
+ /**
103
+ * Try to resolve a function, returning undefined if not found
104
+ */
105
+ export function tryResolveFunction(param) {
106
+ try {
107
+ return resolveFunction(param);
108
+ }
109
+ catch {
110
+ return undefined;
111
+ }
112
+ }
113
+ //# sourceMappingURL=parameter-resolver.js.map
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Server module exports
3
+ */
4
+ export { WebhookServer } from './webhook-server.js';
5
+ export { WorkflowRegistry } from './workflow-registry.js';
6
+ export type { WebhookServerConfig, WorkflowEndpoint, ExecutionResult, HealthResponse, WorkflowListResponse, } from './types.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Server module exports
3
+ */
4
+ export { WebhookServer } from './webhook-server.js';
5
+ export { WorkflowRegistry } from './workflow-registry.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Type definitions for the webhook server
3
+ */
4
+ /**
5
+ * Represents a workflow exposed as an HTTP endpoint
6
+ */
7
+ export interface WorkflowEndpoint {
8
+ /** Workflow name (used in URL path) */
9
+ name: string;
10
+ /** Function name in the source file */
11
+ functionName: string;
12
+ /** Path to the source file */
13
+ filePath: string;
14
+ /** HTTP method for the endpoint */
15
+ method: 'POST' | 'GET';
16
+ /** URL path for the endpoint */
17
+ path: string;
18
+ /** JSON Schema for input parameters */
19
+ inputSchema?: Record<string, unknown>;
20
+ /** JSON Schema for output */
21
+ outputSchema?: Record<string, unknown>;
22
+ /** Workflow description */
23
+ description?: string;
24
+ }
25
+ /**
26
+ * Configuration for the webhook server
27
+ */
28
+ export interface WebhookServerConfig {
29
+ /** Port to listen on */
30
+ port: number;
31
+ /** Host to bind to */
32
+ host: string;
33
+ /** Directory containing workflow files */
34
+ workflowDir: string;
35
+ /** Enable file watching for hot reload */
36
+ watchEnabled: boolean;
37
+ /** CORS origin configuration */
38
+ corsOrigin: string | string[];
39
+ /** Production mode (no trace events) */
40
+ production: boolean;
41
+ /** Precompile workflows on startup */
42
+ precompile: boolean;
43
+ /** Enable Swagger UI at /docs and OpenAPI spec at /openapi.json */
44
+ swaggerEnabled?: boolean;
45
+ }
46
+ /**
47
+ * Result of workflow execution via HTTP
48
+ */
49
+ export interface ExecutionResult {
50
+ /** Whether execution succeeded */
51
+ success: boolean;
52
+ /** Name of the executed workflow */
53
+ workflow: string;
54
+ /** Execution time in milliseconds */
55
+ executionTime: number;
56
+ /** Execution result (if successful) */
57
+ result?: unknown;
58
+ /** Error details (if failed) */
59
+ error?: {
60
+ message: string;
61
+ stack?: string;
62
+ };
63
+ /** Execution trace events (if requested) */
64
+ trace?: Array<{
65
+ type: string;
66
+ timestamp: number;
67
+ data?: unknown;
68
+ }>;
69
+ }
70
+ /**
71
+ * Health check response
72
+ */
73
+ export interface HealthResponse {
74
+ status: 'ok' | 'error';
75
+ timestamp: string;
76
+ workflows: number;
77
+ uptime?: number;
78
+ }
79
+ /**
80
+ * Workflow list response
81
+ */
82
+ export interface WorkflowListResponse {
83
+ count: number;
84
+ workflows: Array<{
85
+ name: string;
86
+ path: string;
87
+ method: string;
88
+ description?: string;
89
+ inputSchema?: Record<string, unknown>;
90
+ outputSchema?: Record<string, unknown>;
91
+ }>;
92
+ }
93
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Type definitions for the webhook server
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Webhook server for exposing workflows as HTTP endpoints
3
+ */
4
+ import type { WebhookServerConfig } from './types.js';
5
+ /**
6
+ * HTTP server that exposes Flow Weaver workflows as REST endpoints
7
+ */
8
+ export declare class WebhookServer {
9
+ private fastify;
10
+ private registry;
11
+ private config;
12
+ constructor(config: WebhookServerConfig);
13
+ /**
14
+ * Start the HTTP server
15
+ */
16
+ start(): Promise<void>;
17
+ /**
18
+ * Setup health check endpoint
19
+ */
20
+ private setupHealthRoute;
21
+ /**
22
+ * Setup workflow list endpoint
23
+ */
24
+ private setupListRoute;
25
+ /**
26
+ * Setup dynamic workflow execution route
27
+ */
28
+ private setupExecuteRoute;
29
+ /**
30
+ * Build OpenAPI spec from discovered workflows
31
+ */
32
+ private buildOpenApiSpec;
33
+ /**
34
+ * Setup Swagger UI and OpenAPI spec routes
35
+ */
36
+ private setupSwaggerRoutes;
37
+ /**
38
+ * Get server info for external logging
39
+ */
40
+ getServerInfo(): {
41
+ port: number;
42
+ host: string;
43
+ endpoints: number;
44
+ };
45
+ /**
46
+ * Stop the HTTP server
47
+ */
48
+ stop(): Promise<void>;
49
+ }
50
+ //# sourceMappingURL=webhook-server.d.ts.map
@@ -0,0 +1,269 @@
1
+ /**
2
+ * Webhook server for exposing workflows as HTTP endpoints
3
+ */
4
+ import { WorkflowRegistry } from './workflow-registry.js';
5
+ import { executeWorkflowFromFile } from '../mcp/workflow-executor.js';
6
+ /**
7
+ * HTTP server that exposes Flow Weaver workflows as REST endpoints
8
+ */
9
+ export class WebhookServer {
10
+ fastify = null;
11
+ registry;
12
+ config;
13
+ constructor(config) {
14
+ this.config = config;
15
+ this.registry = new WorkflowRegistry(config.workflowDir, {
16
+ precompile: config.precompile,
17
+ production: config.production,
18
+ });
19
+ }
20
+ /**
21
+ * Start the HTTP server
22
+ */
23
+ async start() {
24
+ // Dynamic import Fastify
25
+ const Fastify = await import('fastify');
26
+ this.fastify = Fastify.default({ logger: false });
27
+ // Register CORS
28
+ try {
29
+ const cors = await import('@fastify/cors');
30
+ await this.fastify.register(cors.default, { origin: this.config.corsOrigin });
31
+ }
32
+ catch {
33
+ // CORS plugin not available, continue without it
34
+ }
35
+ // Initialize registry
36
+ await this.registry.initialize();
37
+ // Setup routes
38
+ this.setupHealthRoute();
39
+ this.setupListRoute();
40
+ this.setupExecuteRoute();
41
+ // Setup Swagger UI routes if enabled
42
+ if (this.config.swaggerEnabled) {
43
+ this.setupSwaggerRoutes();
44
+ }
45
+ // Start file watching
46
+ if (this.config.watchEnabled) {
47
+ await this.registry.startWatching(() => {
48
+ // Workflows reloaded - could emit event here if needed
49
+ });
50
+ }
51
+ // Start server
52
+ await this.fastify.listen({ port: this.config.port, host: this.config.host });
53
+ }
54
+ /**
55
+ * Setup health check endpoint
56
+ */
57
+ setupHealthRoute() {
58
+ if (!this.fastify)
59
+ return;
60
+ this.fastify.get('/health', async () => {
61
+ return {
62
+ status: 'ok',
63
+ timestamp: new Date().toISOString(),
64
+ workflows: this.registry.getAllEndpoints().length,
65
+ uptime: this.registry.getUptime(),
66
+ };
67
+ });
68
+ }
69
+ /**
70
+ * Setup workflow list endpoint
71
+ */
72
+ setupListRoute() {
73
+ if (!this.fastify)
74
+ return;
75
+ this.fastify.get('/workflows', async () => {
76
+ const endpoints = this.registry.getAllEndpoints();
77
+ return {
78
+ count: endpoints.length,
79
+ workflows: endpoints.map((e) => ({
80
+ name: e.name,
81
+ path: e.path,
82
+ method: e.method,
83
+ description: e.description,
84
+ inputSchema: e.inputSchema,
85
+ outputSchema: e.outputSchema,
86
+ })),
87
+ };
88
+ });
89
+ }
90
+ /**
91
+ * Setup dynamic workflow execution route
92
+ */
93
+ setupExecuteRoute() {
94
+ if (!this.fastify)
95
+ return;
96
+ // POST /workflows/:name
97
+ this.fastify.post('/workflows/:name', async (request, reply) => {
98
+ const { name } = request.params;
99
+ const params = request.body || {};
100
+ const includeTrace = request.query?.trace === 'true';
101
+ const endpoint = this.registry.getEndpoint(name);
102
+ if (!endpoint) {
103
+ reply.status(404);
104
+ return {
105
+ success: false,
106
+ workflow: name,
107
+ executionTime: 0,
108
+ error: { message: `Workflow "${name}" not found` },
109
+ };
110
+ }
111
+ const startTime = Date.now();
112
+ try {
113
+ const result = await executeWorkflowFromFile(endpoint.filePath, params, {
114
+ workflowName: endpoint.functionName,
115
+ production: this.config.production,
116
+ includeTrace,
117
+ });
118
+ const response = {
119
+ success: true,
120
+ workflow: result.functionName,
121
+ executionTime: result.executionTime,
122
+ result: result.result,
123
+ };
124
+ if (includeTrace && result.trace) {
125
+ response.trace = result.trace;
126
+ }
127
+ return response;
128
+ }
129
+ catch (error) {
130
+ reply.status(500);
131
+ return {
132
+ success: false,
133
+ workflow: endpoint.functionName,
134
+ executionTime: Date.now() - startTime,
135
+ error: {
136
+ message: error instanceof Error ? error.message : String(error),
137
+ stack: error instanceof Error ? error.stack : undefined,
138
+ },
139
+ };
140
+ }
141
+ });
142
+ }
143
+ /**
144
+ * Build OpenAPI spec from discovered workflows
145
+ */
146
+ buildOpenApiSpec() {
147
+ const endpoints = this.registry.getAllEndpoints();
148
+ const paths = {};
149
+ for (const endpoint of endpoints) {
150
+ paths[endpoint.path] = {
151
+ post: {
152
+ operationId: `execute_${endpoint.functionName}`,
153
+ summary: `Execute ${endpoint.name} workflow`,
154
+ description: endpoint.description || `Execute the ${endpoint.name} workflow`,
155
+ tags: ['workflows'],
156
+ requestBody: {
157
+ description: 'Workflow input parameters',
158
+ required: true,
159
+ content: {
160
+ 'application/json': {
161
+ schema: endpoint.inputSchema || { type: 'object', additionalProperties: true },
162
+ },
163
+ },
164
+ },
165
+ responses: {
166
+ '200': {
167
+ description: 'Successful execution',
168
+ content: {
169
+ 'application/json': {
170
+ schema: {
171
+ type: 'object',
172
+ properties: {
173
+ success: { type: 'boolean' },
174
+ result: endpoint.outputSchema || { type: 'object' },
175
+ executionTime: { type: 'number' },
176
+ },
177
+ },
178
+ },
179
+ },
180
+ },
181
+ '500': {
182
+ description: 'Execution error',
183
+ content: {
184
+ 'application/json': {
185
+ schema: {
186
+ type: 'object',
187
+ properties: {
188
+ success: { type: 'boolean' },
189
+ error: { type: 'object', properties: { message: { type: 'string' } } },
190
+ },
191
+ },
192
+ },
193
+ },
194
+ },
195
+ },
196
+ },
197
+ };
198
+ }
199
+ return {
200
+ openapi: '3.0.3',
201
+ info: {
202
+ title: 'Flow Weaver API',
203
+ version: '1.0.0',
204
+ description: `Webhook server with ${endpoints.length} workflow endpoint(s)`,
205
+ },
206
+ servers: [{ url: `http://${this.config.host}:${this.config.port}`, description: 'Local server' }],
207
+ paths,
208
+ tags: [{ name: 'workflows', description: 'Workflow execution endpoints' }],
209
+ };
210
+ }
211
+ /**
212
+ * Setup Swagger UI and OpenAPI spec routes
213
+ */
214
+ setupSwaggerRoutes() {
215
+ if (!this.fastify)
216
+ return;
217
+ // GET /openapi.json - OpenAPI specification
218
+ this.fastify.get('/openapi.json', async (_req, reply) => {
219
+ const spec = this.buildOpenApiSpec();
220
+ reply.header('Content-Type', 'application/json');
221
+ reply.send(spec);
222
+ });
223
+ // GET /docs - Swagger UI
224
+ this.fastify.get('/docs', async (_req, reply) => {
225
+ const html = `<!DOCTYPE html>
226
+ <html lang="en">
227
+ <head>
228
+ <meta charset="UTF-8">
229
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
230
+ <title>Flow Weaver API Documentation</title>
231
+ <link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist@5/swagger-ui.css">
232
+ </head>
233
+ <body>
234
+ <div id="swagger-ui"></div>
235
+ <script src="https://unpkg.com/swagger-ui-dist@5/swagger-ui-bundle.js"></script>
236
+ <script>
237
+ SwaggerUIBundle({
238
+ url: '/openapi.json',
239
+ dom_id: '#swagger-ui',
240
+ presets: [SwaggerUIBundle.presets.apis, SwaggerUIBundle.SwaggerUIStandalonePreset],
241
+ layout: 'BaseLayout'
242
+ });
243
+ </script>
244
+ </body>
245
+ </html>`;
246
+ reply.type('text/html').send(html);
247
+ });
248
+ }
249
+ /**
250
+ * Get server info for external logging
251
+ */
252
+ getServerInfo() {
253
+ return {
254
+ port: this.config.port,
255
+ host: this.config.host,
256
+ endpoints: this.registry.getAllEndpoints().length,
257
+ };
258
+ }
259
+ /**
260
+ * Stop the HTTP server
261
+ */
262
+ async stop() {
263
+ await this.registry.stopWatching();
264
+ if (this.fastify) {
265
+ await this.fastify.close();
266
+ }
267
+ }
268
+ }
269
+ //# sourceMappingURL=webhook-server.js.map