@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,436 @@
1
+ /* eslint-disable no-console */
2
+ /**
3
+ * Marketplace commands — init, pack, publish, install, search, list
4
+ */
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ import { execSync } from 'child_process';
8
+ import { logger } from '../utils/logger.js';
9
+ import { generateManifest, writeManifest, readManifest, validatePackage, searchPackages, listInstalledPackages, } from '../../marketplace/index.js';
10
+ import { getErrorMessage } from '../../utils/error-utils.js';
11
+ /**
12
+ * Scaffold a new marketplace package project.
13
+ */
14
+ export async function marketInitCommand(name, options = {}) {
15
+ // Validate name
16
+ if (!name.startsWith('flowweaver-pack-')) {
17
+ const suggested = `flowweaver-pack-${name}`;
18
+ logger.warn(`Name should follow "flowweaver-pack-*" convention, using "${suggested}"`);
19
+ name = suggested;
20
+ }
21
+ const targetDir = path.resolve(name);
22
+ if (fs.existsSync(targetDir)) {
23
+ const stat = fs.statSync(targetDir);
24
+ if (stat.isDirectory()) {
25
+ const contents = fs.readdirSync(targetDir);
26
+ if (contents.length > 0) {
27
+ logger.error(`Directory "${name}" already exists and is not empty`);
28
+ process.exit(1);
29
+ }
30
+ }
31
+ else {
32
+ logger.error(`"${name}" already exists and is not a directory`);
33
+ process.exit(1);
34
+ }
35
+ }
36
+ logger.section('Creating Marketplace Package');
37
+ logger.info(`Package: ${name}`);
38
+ logger.newline();
39
+ // Create directory structure
40
+ const dirs = [
41
+ targetDir,
42
+ path.join(targetDir, 'src'),
43
+ path.join(targetDir, 'src', 'node-types'),
44
+ path.join(targetDir, 'src', 'workflows'),
45
+ path.join(targetDir, 'src', 'patterns'),
46
+ ];
47
+ for (const dir of dirs) {
48
+ fs.mkdirSync(dir, { recursive: true });
49
+ }
50
+ // package.json
51
+ const shortName = name.replace(/^flowweaver-pack-/, '');
52
+ const pkg = {
53
+ name,
54
+ version: '1.0.0',
55
+ description: options.description ?? `Flow Weaver marketplace pack: ${shortName}`,
56
+ type: 'module',
57
+ main: './dist/index.js',
58
+ types: './dist/index.d.ts',
59
+ keywords: ['flowweaver-marketplace-pack', 'flow-weaver', shortName],
60
+ flowWeaver: {
61
+ type: 'marketplace-pack',
62
+ engineVersion: '>=0.1.0',
63
+ },
64
+ scripts: {
65
+ build: 'tsc',
66
+ pack: 'flow-weaver market pack',
67
+ prepublishOnly: 'npm run build && npm run pack',
68
+ },
69
+ ...(options.author && { author: options.author }),
70
+ license: 'MIT',
71
+ peerDependencies: {
72
+ '@synergenius/flow-weaver': '>=0.1.0',
73
+ },
74
+ devDependencies: {
75
+ '@synergenius/flow-weaver': '^0.1.0',
76
+ typescript: '^5.3.0',
77
+ },
78
+ files: ['dist', 'flowweaver.manifest.json', 'README.md', 'LICENSE'],
79
+ };
80
+ fs.writeFileSync(path.join(targetDir, 'package.json'), JSON.stringify(pkg, null, 2) + '\n');
81
+ // tsconfig.json
82
+ const tsconfig = {
83
+ compilerOptions: {
84
+ target: 'ES2022',
85
+ module: 'NodeNext',
86
+ moduleResolution: 'NodeNext',
87
+ declaration: true,
88
+ outDir: './dist',
89
+ rootDir: './src',
90
+ strict: true,
91
+ esModuleInterop: true,
92
+ skipLibCheck: true,
93
+ },
94
+ include: ['src'],
95
+ exclude: ['node_modules', 'dist'],
96
+ };
97
+ fs.writeFileSync(path.join(targetDir, 'tsconfig.json'), JSON.stringify(tsconfig, null, 2) + '\n');
98
+ // Sample node type
99
+ const sampleNodeType = `/**
100
+ * @flowWeaver nodeType
101
+ * @name Sample
102
+ * @description A sample node type for your marketplace pack
103
+ * @input data - Input data
104
+ * @output result - Processed result
105
+ * @visual color blue
106
+ * @visual icon box
107
+ * @visual tag ${shortName}
108
+ */
109
+ export function sample(execute: () => void, data: string): { result: string } {
110
+ execute();
111
+ return { result: data.toUpperCase() };
112
+ }
113
+ `;
114
+ fs.writeFileSync(path.join(targetDir, 'src', 'node-types', 'sample.ts'), sampleNodeType);
115
+ // Barrel exports
116
+ fs.writeFileSync(path.join(targetDir, 'src', 'node-types', 'index.ts'), "export { sample } from './sample.js';\n");
117
+ fs.writeFileSync(path.join(targetDir, 'src', 'workflows', 'index.ts'), '// Export workflows here\n');
118
+ fs.writeFileSync(path.join(targetDir, 'src', 'patterns', 'index.ts'), '// Export patterns here\n');
119
+ fs.writeFileSync(path.join(targetDir, 'src', 'index.ts'), [
120
+ "export * from './node-types/index.js';",
121
+ "export * from './workflows/index.js';",
122
+ "export * from './patterns/index.js';",
123
+ '',
124
+ ].join('\n'));
125
+ // README.md
126
+ const readme = `# ${name}
127
+
128
+ A [Flow Weaver](https://github.com/synergenius-fw/flow-weaver) marketplace pack.
129
+
130
+ ## Installation
131
+
132
+ \`\`\`bash
133
+ flow-weaver market install ${name}
134
+ \`\`\`
135
+
136
+ ## Contents
137
+
138
+ ### Node Types
139
+
140
+ - **Sample** — A sample node type
141
+
142
+ ## Development
143
+
144
+ \`\`\`bash
145
+ npm install
146
+ npm run build
147
+ npm run pack # Generate flowweaver.manifest.json
148
+ npm publish # Publish to npm
149
+ \`\`\`
150
+ `;
151
+ fs.writeFileSync(path.join(targetDir, 'README.md'), readme);
152
+ // .gitignore
153
+ fs.writeFileSync(path.join(targetDir, '.gitignore'), ['node_modules', 'dist', '*.tgz', ''].join('\n'));
154
+ logger.success('Created package.json');
155
+ logger.success('Created tsconfig.json');
156
+ logger.success('Created src/node-types/sample.ts');
157
+ logger.success('Created src/index.ts');
158
+ logger.success('Created README.md');
159
+ logger.success('.gitignore');
160
+ logger.newline();
161
+ logger.section('Next Steps');
162
+ logger.log(` cd ${name}`);
163
+ logger.log(' npm install');
164
+ logger.log(' # Add your node types, workflows, and patterns to src/');
165
+ logger.log(' npm run build');
166
+ logger.log(' flow-weaver market pack');
167
+ logger.log(' npm publish');
168
+ logger.newline();
169
+ }
170
+ /**
171
+ * Parse source files, validate, and generate flowweaver.manifest.json.
172
+ */
173
+ export async function marketPackCommand(directory, options = {}) {
174
+ const dir = path.resolve(directory ?? '.');
175
+ const { json = false, verbose = false } = options;
176
+ if (!json) {
177
+ logger.section('Packing Marketplace Package');
178
+ }
179
+ // 1. Generate manifest from source files
180
+ const { manifest, parsedFiles, errors: parseErrors } = await generateManifest({ directory: dir });
181
+ if (parseErrors.length > 0 && verbose) {
182
+ for (const err of parseErrors) {
183
+ logger.warn(err);
184
+ }
185
+ }
186
+ // 2. Validate
187
+ const validation = await validatePackage(dir, manifest);
188
+ if (json) {
189
+ console.log(JSON.stringify({
190
+ manifest,
191
+ validation,
192
+ parsedFiles: parsedFiles.length,
193
+ }, null, 2));
194
+ if (!validation.valid)
195
+ process.exit(1);
196
+ return;
197
+ }
198
+ // Display results
199
+ logger.info(`Parsed ${parsedFiles.length} file(s)`);
200
+ logger.info(`Found ${manifest.nodeTypes.length} node type(s), ${manifest.workflows.length} workflow(s), ${manifest.patterns.length} pattern(s)`);
201
+ logger.newline();
202
+ // Show validation issues
203
+ const errors = validation.issues.filter((i) => i.severity === 'error');
204
+ const warnings = validation.issues.filter((i) => i.severity === 'warning');
205
+ for (const err of errors) {
206
+ logger.error(`[${err.code}] ${err.message}`);
207
+ }
208
+ for (const warn of warnings) {
209
+ logger.warn(`[${warn.code}] ${warn.message}`);
210
+ }
211
+ if (!validation.valid) {
212
+ logger.newline();
213
+ logger.error('Package validation failed. Fix errors above before publishing.');
214
+ process.exit(1);
215
+ }
216
+ // 3. Write manifest
217
+ const outPath = writeManifest(dir, manifest);
218
+ logger.newline();
219
+ logger.success(`Manifest written to ${path.relative(dir, outPath)}`);
220
+ if (warnings.length > 0) {
221
+ logger.warn(`${warnings.length} warning(s) — consider fixing before publishing`);
222
+ }
223
+ logger.newline();
224
+ }
225
+ /**
226
+ * Pack + pre-publish checks + npm publish.
227
+ */
228
+ export async function marketPublishCommand(directory, options = {}) {
229
+ const dir = path.resolve(directory ?? '.');
230
+ const { dryRun = false, tag } = options;
231
+ logger.section('Publishing Marketplace Package');
232
+ // 1. Run pack first
233
+ await marketPackCommand(dir, { json: false });
234
+ // 2. Pre-publish checks
235
+ if (!fs.existsSync(path.join(dir, 'LICENSE'))) {
236
+ logger.warn('LICENSE file not found — consider adding one');
237
+ }
238
+ const pkg = JSON.parse(fs.readFileSync(path.join(dir, 'package.json'), 'utf-8'));
239
+ logger.info(`Publishing ${pkg.name}@${pkg.version}`);
240
+ // 3. npm publish
241
+ const npmArgs = ['publish'];
242
+ if (dryRun)
243
+ npmArgs.push('--dry-run');
244
+ if (tag)
245
+ npmArgs.push('--tag', tag);
246
+ try {
247
+ logger.newline();
248
+ execSync(`npm ${npmArgs.join(' ')}`, { cwd: dir, stdio: 'inherit' });
249
+ if (!dryRun) {
250
+ logger.newline();
251
+ logger.success(`Published ${pkg.name}@${pkg.version} to npm`);
252
+ }
253
+ }
254
+ catch (err) {
255
+ logger.error(`npm publish failed: ${getErrorMessage(err)}`);
256
+ process.exit(1);
257
+ }
258
+ }
259
+ /**
260
+ * Install a marketplace package and display its contents.
261
+ */
262
+ export async function marketInstallCommand(packageSpec, options = {}) {
263
+ const { json = false } = options;
264
+ if (!json) {
265
+ logger.section('Installing Marketplace Package');
266
+ logger.info(`Installing ${packageSpec}...`);
267
+ logger.newline();
268
+ }
269
+ // 1. npm install
270
+ try {
271
+ execSync(`npm install ${packageSpec}`, { stdio: json ? 'pipe' : 'inherit' });
272
+ }
273
+ catch (err) {
274
+ if (json) {
275
+ console.log(JSON.stringify({ success: false, error: getErrorMessage(err) }));
276
+ }
277
+ else {
278
+ logger.error(`npm install failed: ${getErrorMessage(err)}`);
279
+ }
280
+ process.exit(1);
281
+ }
282
+ // 2. Read manifest from installed package
283
+ // Resolve the package name from the spec (could be a tarball path or name@version)
284
+ const packageName = resolvePackageName(packageSpec);
285
+ const manifest = readManifest(path.join(process.cwd(), 'node_modules', packageName));
286
+ if (json) {
287
+ console.log(JSON.stringify({
288
+ success: true,
289
+ package: packageName,
290
+ manifest: manifest ?? 'no manifest found',
291
+ }, null, 2));
292
+ return;
293
+ }
294
+ logger.newline();
295
+ logger.success(`Installed ${packageName}`);
296
+ logger.newline();
297
+ if (manifest) {
298
+ displayManifestSummary(manifest);
299
+ }
300
+ else {
301
+ logger.warn('No flowweaver.manifest.json found in package');
302
+ logger.info('The package may need to run "flow-weaver market pack" before publishing');
303
+ }
304
+ }
305
+ /**
306
+ * Search npm for marketplace packages.
307
+ */
308
+ export async function marketSearchCommand(query, options = {}) {
309
+ const { limit = 20, json = false, registry } = options;
310
+ if (!json) {
311
+ logger.section('Marketplace Search');
312
+ if (query)
313
+ logger.info(`Query: ${query}`);
314
+ if (registry)
315
+ logger.info(`Registry: ${registry}`);
316
+ logger.newline();
317
+ }
318
+ try {
319
+ const results = await searchPackages({ query, limit, registryUrl: registry });
320
+ if (json) {
321
+ console.log(JSON.stringify(results, null, 2));
322
+ return;
323
+ }
324
+ if (results.length === 0) {
325
+ logger.info('No packages found');
326
+ return;
327
+ }
328
+ for (const pkg of results) {
329
+ const badge = pkg.official ? ' [official]' : '';
330
+ logger.log(` ${pkg.name}@${pkg.version}${badge}`);
331
+ if (pkg.description) {
332
+ logger.log(` ${pkg.description}`);
333
+ }
334
+ logger.newline();
335
+ }
336
+ logger.info(`${results.length} package(s) found`);
337
+ }
338
+ catch (err) {
339
+ if (json) {
340
+ console.log(JSON.stringify({ error: getErrorMessage(err) }));
341
+ }
342
+ else {
343
+ logger.error(`Search failed: ${getErrorMessage(err)}`);
344
+ }
345
+ process.exit(1);
346
+ }
347
+ }
348
+ /**
349
+ * List installed marketplace packages.
350
+ */
351
+ export async function marketListCommand(options = {}) {
352
+ const { json = false } = options;
353
+ if (!json) {
354
+ logger.section('Installed Marketplace Packages');
355
+ logger.newline();
356
+ }
357
+ const packages = await listInstalledPackages(process.cwd());
358
+ if (json) {
359
+ console.log(JSON.stringify(packages.map((p) => ({
360
+ name: p.name,
361
+ version: p.version,
362
+ nodeTypes: p.manifest.nodeTypes.length,
363
+ workflows: p.manifest.workflows.length,
364
+ patterns: p.manifest.patterns.length,
365
+ })), null, 2));
366
+ return;
367
+ }
368
+ if (packages.length === 0) {
369
+ logger.info('No marketplace packages installed');
370
+ logger.info('Use "flow-weaver market search" to find packages');
371
+ return;
372
+ }
373
+ for (const pkg of packages) {
374
+ displayInstalledPackage(pkg);
375
+ }
376
+ logger.info(`${packages.length} package(s) installed`);
377
+ }
378
+ // ── Helpers ──────────────────────────────────────────────────────────────────
379
+ function resolvePackageName(spec) {
380
+ // Handle tarball paths: ./foo-1.0.0.tgz → read name from the tarball
381
+ if (spec.endsWith('.tgz') || spec.endsWith('.tar.gz')) {
382
+ // For local tarballs, try to extract the package name
383
+ const base = path.basename(spec, spec.endsWith('.tar.gz') ? '.tar.gz' : '.tgz');
384
+ // flowweaver-pack-test-1.0.0 → flowweaver-pack-test
385
+ const match = base.match(/^(.+)-\d+\.\d+\.\d+/);
386
+ return match ? match[1] : base;
387
+ }
388
+ // Handle name@version
389
+ if (spec.startsWith('@')) {
390
+ // Scoped: @scope/name@version
391
+ const atIndex = spec.indexOf('@', 1);
392
+ return atIndex > 0 ? spec.slice(0, atIndex) : spec;
393
+ }
394
+ const atIndex = spec.indexOf('@');
395
+ return atIndex > 0 ? spec.slice(0, atIndex) : spec;
396
+ }
397
+ function displayManifestSummary(manifest) {
398
+ if (manifest.nodeTypes.length > 0) {
399
+ logger.log(' Node Types:');
400
+ for (const nt of manifest.nodeTypes) {
401
+ const desc = nt.description ? ` — ${nt.description}` : '';
402
+ logger.log(` - ${nt.name}${desc}`);
403
+ }
404
+ }
405
+ if (manifest.workflows.length > 0) {
406
+ logger.log(' Workflows:');
407
+ for (const wf of manifest.workflows) {
408
+ const desc = wf.description ? ` — ${wf.description}` : '';
409
+ logger.log(` - ${wf.name}${desc}`);
410
+ }
411
+ }
412
+ if (manifest.patterns.length > 0) {
413
+ logger.log(' Patterns:');
414
+ for (const pat of manifest.patterns) {
415
+ const desc = pat.description ? ` — ${pat.description}` : '';
416
+ logger.log(` - ${pat.name}${desc}`);
417
+ }
418
+ }
419
+ logger.newline();
420
+ }
421
+ function displayInstalledPackage(pkg) {
422
+ const m = pkg.manifest;
423
+ logger.log(` ${pkg.name}@${pkg.version}`);
424
+ const counts = [];
425
+ if (m.nodeTypes.length > 0)
426
+ counts.push(`${m.nodeTypes.length} node type(s)`);
427
+ if (m.workflows.length > 0)
428
+ counts.push(`${m.workflows.length} workflow(s)`);
429
+ if (m.patterns.length > 0)
430
+ counts.push(`${m.patterns.length} pattern(s)`);
431
+ if (counts.length > 0) {
432
+ logger.log(` ${counts.join(', ')}`);
433
+ }
434
+ logger.newline();
435
+ }
436
+ //# sourceMappingURL=market.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Migrate command - upgrades workflow files to current syntax
3
+ *
4
+ * Uses the parse → generate round-trip as the primary migration mechanism:
5
+ * the parser adds defaults for missing fields, edge-case migrations transform
6
+ * the AST, and generateInPlace writes current syntax back.
7
+ */
8
+ export interface MigrateOptions {
9
+ dryRun?: boolean;
10
+ diff?: boolean;
11
+ }
12
+ export declare function migrateCommand(globPattern: string, options?: MigrateOptions): Promise<void>;
13
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Migrate command - upgrades workflow files to current syntax
3
+ *
4
+ * Uses the parse → generate round-trip as the primary migration mechanism:
5
+ * the parser adds defaults for missing fields, edge-case migrations transform
6
+ * the AST, and generateInPlace writes current syntax back.
7
+ */
8
+ import * as fs from 'fs';
9
+ import * as path from 'path';
10
+ import { globSync } from 'glob';
11
+ import { parseWorkflow } from '../../api/index.js';
12
+ import { generateInPlace } from '../../api/generate-in-place.js';
13
+ import { WorkflowDiffer, formatDiff } from '../../diff/index.js';
14
+ import { applyMigrations, getRegisteredMigrations } from '../../migration/registry.js';
15
+ import { logger } from '../utils/logger.js';
16
+ import { getErrorMessage } from '../../utils/error-utils.js';
17
+ export async function migrateCommand(globPattern, options = {}) {
18
+ const { dryRun = false, diff = false } = options;
19
+ const files = globSync(globPattern, { ignore: ['**/node_modules/**', '**/*.generated.ts'] });
20
+ if (files.length === 0) {
21
+ logger.warn(`No files matched pattern: ${globPattern}`);
22
+ return;
23
+ }
24
+ const registeredMigrations = getRegisteredMigrations();
25
+ if (registeredMigrations.length > 0) {
26
+ logger.info(`Registered edge-case migrations: ${registeredMigrations.map((m) => m.name).join(', ')}`);
27
+ }
28
+ let migratedCount = 0;
29
+ let skippedCount = 0;
30
+ let errorCount = 0;
31
+ for (const file of files) {
32
+ const filePath = path.resolve(file);
33
+ try {
34
+ const sourceCode = fs.readFileSync(filePath, 'utf8');
35
+ // Parse with current parser (backward-compatible — adds defaults for missing fields)
36
+ const parseResult = await parseWorkflow(filePath);
37
+ if (parseResult.errors.length > 0) {
38
+ logger.error(` ${file}: parse errors — skipping`);
39
+ parseResult.errors.forEach((err) => logger.error(` ${err}`));
40
+ errorCount++;
41
+ continue;
42
+ }
43
+ // Apply edge-case migrations (if any registered)
44
+ let ast = parseResult.ast;
45
+ ast = applyMigrations(ast);
46
+ // Regenerate annotations in-place using current syntax
47
+ const genResult = generateInPlace(sourceCode, ast, {
48
+ allWorkflows: parseResult.allWorkflows,
49
+ });
50
+ if (!genResult.hasChanges) {
51
+ skippedCount++;
52
+ continue;
53
+ }
54
+ if (diff) {
55
+ // Show semantic diff before/after
56
+ const reparsed = await parseWorkflow(filePath);
57
+ if (reparsed.errors.length === 0) {
58
+ const semanticDiff = WorkflowDiffer.compare(parseResult.ast, ast);
59
+ if (!semanticDiff.identical) {
60
+ logger.info(`\n${file}:`);
61
+ // eslint-disable-next-line no-console
62
+ console.log(formatDiff(semanticDiff, 'text'));
63
+ }
64
+ }
65
+ }
66
+ if (dryRun) {
67
+ logger.info(` ${file}: would be updated`);
68
+ migratedCount++;
69
+ continue;
70
+ }
71
+ fs.writeFileSync(filePath, genResult.code, 'utf8');
72
+ logger.success(` ${file}: migrated`);
73
+ migratedCount++;
74
+ }
75
+ catch (error) {
76
+ logger.error(` ${file}: ${getErrorMessage(error)}`);
77
+ errorCount++;
78
+ }
79
+ }
80
+ // Summary
81
+ logger.newline();
82
+ if (dryRun) {
83
+ logger.info(`Dry run complete: ${migratedCount} file(s) would be updated, ${skippedCount} already current, ${errorCount} error(s)`);
84
+ }
85
+ else {
86
+ logger.info(`Migration complete: ${migratedCount} file(s) updated, ${skippedCount} already current, ${errorCount} error(s)`);
87
+ }
88
+ }
89
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1,37 @@
1
+ /**
2
+ * OpenAPI command - generate OpenAPI specification from workflow files
3
+ */
4
+ export interface OpenAPIOptions {
5
+ /** Output file path */
6
+ output?: string;
7
+ /** API title */
8
+ title?: string;
9
+ /** API version */
10
+ version?: string;
11
+ /** API description */
12
+ description?: string;
13
+ /** Output format: json or yaml */
14
+ format?: 'json' | 'yaml';
15
+ /** Server URL */
16
+ server?: string;
17
+ }
18
+ /**
19
+ * Generate OpenAPI specification from workflows in a directory.
20
+ *
21
+ * @param dir - Directory containing workflow files
22
+ * @param options - Generation options
23
+ *
24
+ * @example
25
+ * ```bash
26
+ * # Generate JSON spec to stdout
27
+ * flow-weaver openapi ./workflows
28
+ *
29
+ * # Generate YAML spec to file
30
+ * flow-weaver openapi ./workflows --format yaml --output api-spec.yaml
31
+ *
32
+ * # With custom title and version
33
+ * flow-weaver openapi ./workflows --title "My API" --version "2.0.0"
34
+ * ```
35
+ */
36
+ export declare function openapiCommand(dir: string, options: OpenAPIOptions): Promise<void>;
37
+ //# sourceMappingURL=openapi.d.ts.map
@@ -0,0 +1,67 @@
1
+ /**
2
+ * OpenAPI command - generate OpenAPI specification from workflow files
3
+ */
4
+ import * as path from 'path';
5
+ import * as fs from 'fs';
6
+ import { WorkflowRegistry } from '../../server/workflow-registry.js';
7
+ import { generateOpenAPIJson, generateOpenAPIYaml } from '../../deployment/openapi/generator.js';
8
+ import { logger } from '../utils/logger.js';
9
+ /**
10
+ * Generate OpenAPI specification from workflows in a directory.
11
+ *
12
+ * @param dir - Directory containing workflow files
13
+ * @param options - Generation options
14
+ *
15
+ * @example
16
+ * ```bash
17
+ * # Generate JSON spec to stdout
18
+ * flow-weaver openapi ./workflows
19
+ *
20
+ * # Generate YAML spec to file
21
+ * flow-weaver openapi ./workflows --format yaml --output api-spec.yaml
22
+ *
23
+ * # With custom title and version
24
+ * flow-weaver openapi ./workflows --title "My API" --version "2.0.0"
25
+ * ```
26
+ */
27
+ export async function openapiCommand(dir, options) {
28
+ const workflowDir = path.resolve(dir);
29
+ // Validate directory exists
30
+ if (!fs.existsSync(workflowDir)) {
31
+ throw new Error(`Directory not found: ${workflowDir}`);
32
+ }
33
+ if (!fs.statSync(workflowDir).isDirectory()) {
34
+ throw new Error(`Not a directory: ${workflowDir}`);
35
+ }
36
+ // Initialize registry to discover workflows
37
+ const registry = new WorkflowRegistry(workflowDir);
38
+ await registry.initialize();
39
+ const endpoints = registry.getAllEndpoints();
40
+ if (endpoints.length === 0) {
41
+ throw new Error(`No workflows found in ${workflowDir}`);
42
+ }
43
+ logger.info(`Found ${endpoints.length} workflow(s)`);
44
+ // Generate options
45
+ const generatorOptions = {
46
+ title: options.title || 'Flow Weaver API',
47
+ version: options.version || '1.0.0',
48
+ description: options.description || 'API generated from Flow Weaver workflows',
49
+ servers: options.server ? [{ url: options.server }] : undefined,
50
+ };
51
+ // Generate spec
52
+ const format = options.format || 'json';
53
+ const spec = format === 'yaml'
54
+ ? generateOpenAPIYaml(endpoints, generatorOptions)
55
+ : generateOpenAPIJson(endpoints, generatorOptions);
56
+ // Output
57
+ if (options.output) {
58
+ const outputPath = path.resolve(options.output);
59
+ fs.writeFileSync(outputPath, spec);
60
+ logger.success(`OpenAPI specification written to ${outputPath}`);
61
+ }
62
+ else {
63
+ // Output to stdout
64
+ process.stdout.write(spec + '\n');
65
+ }
66
+ }
67
+ //# sourceMappingURL=openapi.js.map
@@ -0,0 +1,34 @@
1
+ /**
2
+ * CLI pattern commands
3
+ * - list: Find patterns in files/directories
4
+ * - apply: Merge pattern into workflow
5
+ * - extract: Create pattern from workflow nodes
6
+ */
7
+ interface ListOptions {
8
+ json?: boolean;
9
+ }
10
+ interface ApplyOptions {
11
+ preview?: boolean;
12
+ prefix?: string;
13
+ name?: string;
14
+ }
15
+ interface ExtractOptions {
16
+ nodes: string;
17
+ output: string;
18
+ name?: string;
19
+ preview?: boolean;
20
+ }
21
+ /**
22
+ * Find patterns in a file or directory
23
+ */
24
+ export declare function patternListCommand(inputPath: string, options: ListOptions): Promise<void>;
25
+ /**
26
+ * Apply a pattern to a workflow file
27
+ */
28
+ export declare function patternApplyCommand(patternFile: string, targetFile: string, options: ApplyOptions): Promise<void>;
29
+ /**
30
+ * Extract a pattern from workflow nodes
31
+ */
32
+ export declare function patternExtractCommand(sourceFile: string, options: ExtractOptions): Promise<void>;
33
+ export {};
34
+ //# sourceMappingURL=pattern.d.ts.map