@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,151 @@
1
+ /**
2
+ * Connection operations for workflow manipulation
3
+ */
4
+ import { withoutValidation, validatePortReference, portReferencesEqual, } from "../helpers.js";
5
+ /**
6
+ * Add a connection between two ports
7
+ *
8
+ * @param ast - Workflow to modify
9
+ * @param from - Source port reference (string "node.port" or object)
10
+ * @param to - Target port reference (string "node.port" or object)
11
+ * @returns Modified workflow
12
+ * @throws {Error} If connection already exists
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * // Using string format
17
+ * const ast = addConnection(workflow, 'Start.input', 'processor.input');
18
+ *
19
+ * // Using object format
20
+ * const ast = addConnection(
21
+ * workflow,
22
+ * { node: 'Start', port: 'input' },
23
+ * { node: 'processor', port: 'input' }
24
+ * );
25
+ * ```
26
+ */
27
+ export function addConnection(ast, from, to) {
28
+ const fromRef = validatePortReference(from);
29
+ const toRef = validatePortReference(to);
30
+ // Check for duplicate connection
31
+ const exists = ast.connections.some((conn) => portReferencesEqual(conn.from, fromRef) &&
32
+ portReferencesEqual(conn.to, toRef));
33
+ if (exists) {
34
+ throw new Error(`Connection already exists: ${fromRef.node}.${fromRef.port} → ${toRef.node}.${toRef.port}`);
35
+ }
36
+ return withoutValidation(ast, (draft) => {
37
+ draft.connections.push({
38
+ type: "Connection",
39
+ from: fromRef,
40
+ to: toRef,
41
+ });
42
+ });
43
+ }
44
+ /**
45
+ * Remove a connection.
46
+ * Uses no validation to allow deletion even when workflow has other errors.
47
+ *
48
+ * @param ast - Workflow to modify
49
+ * @param from - Source port reference
50
+ * @param to - Target port reference
51
+ * @returns Modified workflow
52
+ * @throws {Error} If connection doesn't exist
53
+ */
54
+ export function removeConnection(ast, from, to) {
55
+ const fromRef = validatePortReference(from);
56
+ const toRef = validatePortReference(to);
57
+ // Verify connection exists first
58
+ const connIndex = ast.connections.findIndex((conn) => portReferencesEqual(conn.from, fromRef) &&
59
+ portReferencesEqual(conn.to, toRef));
60
+ if (connIndex === -1) {
61
+ throw new Error(`Connection not found: ${fromRef.node}.${fromRef.port} → ${toRef.node}.${toRef.port}`);
62
+ }
63
+ return withoutValidation(ast, (draft) => {
64
+ const idx = draft.connections.findIndex((conn) => portReferencesEqual(conn.from, fromRef) &&
65
+ portReferencesEqual(conn.to, toRef));
66
+ draft.connections.splice(idx, 1);
67
+ });
68
+ }
69
+ /**
70
+ * Remove all connections for a node (or specific port).
71
+ * Uses no validation to allow deletion even when workflow has other errors.
72
+ *
73
+ * @param ast - Workflow to modify
74
+ * @param nodeId - Node ID
75
+ * @param portName - Optional port name to filter
76
+ * @returns Modified workflow
77
+ */
78
+ export function removeAllConnections(ast, nodeId, portName) {
79
+ return withoutValidation(ast, (draft) => {
80
+ draft.connections = draft.connections.filter((conn) => {
81
+ const matchesFrom = conn.from.node === nodeId &&
82
+ (!portName || conn.from.port === portName);
83
+ const matchesTo = conn.to.node === nodeId && (!portName || conn.to.port === portName);
84
+ return !matchesFrom && !matchesTo;
85
+ });
86
+ });
87
+ }
88
+ /**
89
+ * Reconnect (change target of existing connection).
90
+ * Uses no validation to allow reconnecting even when workflow has other errors.
91
+ *
92
+ * @param ast - Workflow to modify
93
+ * @param from - Source port reference (identifies connection)
94
+ * @param oldTo - Old target port reference
95
+ * @param newTo - New target port reference
96
+ * @returns Modified workflow
97
+ */
98
+ export function reconnect(ast, from, oldTo, newTo) {
99
+ const fromRef = validatePortReference(from);
100
+ const oldToRef = validatePortReference(oldTo);
101
+ const newToRef = validatePortReference(newTo);
102
+ // Verify connection exists
103
+ const connExists = ast.connections.find((c) => portReferencesEqual(c.from, fromRef) &&
104
+ portReferencesEqual(c.to, oldToRef));
105
+ if (!connExists) {
106
+ throw new Error(`Connection not found: ${fromRef.node}.${fromRef.port} → ${oldToRef.node}.${oldToRef.port}`);
107
+ }
108
+ return withoutValidation(ast, (draft) => {
109
+ const conn = draft.connections.find((c) => portReferencesEqual(c.from, fromRef) &&
110
+ portReferencesEqual(c.to, oldToRef));
111
+ conn.to = newToRef;
112
+ });
113
+ }
114
+ /**
115
+ * Add multiple connections at once.
116
+ * Uses no validation to allow adding even when workflow has other errors.
117
+ *
118
+ * @param ast - Workflow to modify
119
+ * @param connections - Array of connections to add
120
+ * @returns Modified workflow
121
+ */
122
+ export function addConnections(ast, connections) {
123
+ return withoutValidation(ast, (draft) => {
124
+ connections.forEach((conn) => {
125
+ // Check for duplicates
126
+ const exists = draft.connections.some((c) => portReferencesEqual(c.from, conn.from) &&
127
+ portReferencesEqual(c.to, conn.to));
128
+ if (!exists) {
129
+ draft.connections.push(conn);
130
+ }
131
+ });
132
+ });
133
+ }
134
+ /**
135
+ * Replace all connections for a node.
136
+ * Uses no validation to allow replacing even when workflow has other errors.
137
+ *
138
+ * @param ast - Workflow to modify
139
+ * @param nodeId - Node ID
140
+ * @param connections - New connections
141
+ * @returns Modified workflow
142
+ */
143
+ export function replaceConnections(ast, nodeId, connections) {
144
+ return withoutValidation(ast, (draft) => {
145
+ // Remove existing connections
146
+ draft.connections = draft.connections.filter((conn) => conn.from.node !== nodeId && conn.to.node !== nodeId);
147
+ // Add new connections
148
+ draft.connections.push(...connections);
149
+ });
150
+ }
151
+ //# sourceMappingURL=connections.js.map
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @module api/manipulation
3
+ *
4
+ * # Manipulation API
5
+ *
6
+ * Immutable operations for programmatic workflow modification.
7
+ * All functions return a new AST (never mutate the original).
8
+ *
9
+ * ## Operation Categories
10
+ *
11
+ * | Category | Functions |
12
+ * |-------------|-----------|
13
+ * | Workflow | `cloneWorkflow`, `renameWorkflow`, `setWorkflowPorts` |
14
+ * | Node Types | `addNodeType`, `removeNodeType`, `updateNodeType` |
15
+ * | Nodes | `addNode`, `removeNode`, `renameNode`, `setNodePosition` |
16
+ * | Connections | `addConnection`, `removeConnection`, `reconnect` |
17
+ * | Ports | `swapPortOrder`, `swapNodeInstancePortOrder` |
18
+ * | Scopes | `createScope`, `removeScope`, `addToScope` |
19
+ *
20
+ * ## Validation Options
21
+ *
22
+ * Operations validate by default. Use wrappers for control:
23
+ * - `withValidation(workflow)` - Full validation (default)
24
+ * - `withMinimalValidation(workflow)` - Skip expensive checks
25
+ * - `withoutValidation(workflow)` - No validation (use with caution)
26
+ */
27
+ export { withoutValidation, type RemoveOptions, type NodeFilter, type OperationResult, validatePortReference, portReferencesEqual, formatPortReference, generateUniqueNodeId, assertNodeExists, assertNodeNotExists, } from "./validation.js";
28
+ export { cloneWorkflow, setWorkflowDescription, setWorkflowMetadata, setOutputFileType, renameWorkflow, setWorkflowPorts, } from "./workflow.js";
29
+ export { addNodeType, removeNodeType, updateNodeType, getNodeType, hasNodeType, listNodeTypes, renameNodeType, replaceNodeTypes, } from "./node-types.js";
30
+ export { addNode, removeNode, renameNode, updateNode, addNodes, removeNodes, setNodeConfig, setNodePosition, setNodeMinimized, setNodeSize, setNodeLabel, } from "./nodes.js";
31
+ export { addConnection, removeConnection, removeAllConnections, reconnect, addConnections, replaceConnections, } from "./connections.js";
32
+ export { swapPortOrder, swapNodeInstancePortOrder, setStartExitPorts, setInstancePortConfigs, } from "./ports.js";
33
+ export { createScope, removeScope, addToScope, removeFromScope, moveToScope, } from "./scopes.js";
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @module api/manipulation
3
+ *
4
+ * # Manipulation API
5
+ *
6
+ * Immutable operations for programmatic workflow modification.
7
+ * All functions return a new AST (never mutate the original).
8
+ *
9
+ * ## Operation Categories
10
+ *
11
+ * | Category | Functions |
12
+ * |-------------|-----------|
13
+ * | Workflow | `cloneWorkflow`, `renameWorkflow`, `setWorkflowPorts` |
14
+ * | Node Types | `addNodeType`, `removeNodeType`, `updateNodeType` |
15
+ * | Nodes | `addNode`, `removeNode`, `renameNode`, `setNodePosition` |
16
+ * | Connections | `addConnection`, `removeConnection`, `reconnect` |
17
+ * | Ports | `swapPortOrder`, `swapNodeInstancePortOrder` |
18
+ * | Scopes | `createScope`, `removeScope`, `addToScope` |
19
+ *
20
+ * ## Validation Options
21
+ *
22
+ * Operations validate by default. Use wrappers for control:
23
+ * - `withValidation(workflow)` - Full validation (default)
24
+ * - `withMinimalValidation(workflow)` - Skip expensive checks
25
+ * - `withoutValidation(workflow)` - No validation (use with caution)
26
+ */
27
+ // Re-export validation utilities
28
+ export { withoutValidation, validatePortReference, portReferencesEqual, formatPortReference, generateUniqueNodeId, assertNodeExists, assertNodeNotExists, } from "./validation.js";
29
+ // Re-export workflow-level operations
30
+ export { cloneWorkflow, setWorkflowDescription, setWorkflowMetadata, setOutputFileType, renameWorkflow, setWorkflowPorts, } from "./workflow.js";
31
+ // Re-export node type operations
32
+ export { addNodeType, removeNodeType, updateNodeType, getNodeType, hasNodeType, listNodeTypes, renameNodeType, replaceNodeTypes, } from "./node-types.js";
33
+ // Re-export node instance operations
34
+ export { addNode, removeNode, renameNode, updateNode, addNodes, removeNodes, setNodeConfig, setNodePosition, setNodeMinimized, setNodeSize, setNodeLabel, } from "./nodes.js";
35
+ // Re-export connection operations
36
+ export { addConnection, removeConnection, removeAllConnections, reconnect, addConnections, replaceConnections, } from "./connections.js";
37
+ // Re-export port operations
38
+ export { swapPortOrder, swapNodeInstancePortOrder, setStartExitPorts, setInstancePortConfigs, } from "./ports.js";
39
+ // Re-export scope operations
40
+ export { createScope, removeScope, addToScope, removeFromScope, moveToScope, } from "./scopes.js";
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Node type operations for workflow manipulation
3
+ */
4
+ import type { TWorkflowAST, TNodeTypeAST } from "../../ast/types.js";
5
+ /**
6
+ * Add a node type definition to the workflow (idempotent).
7
+ * Uses no validation to allow adding even when workflow has other errors.
8
+ *
9
+ * If a node type with the same name already exists, returns the AST unchanged
10
+ * without throwing an error. This handles state desync between server and client,
11
+ * race conditions, double-clicks, and server restarts gracefully.
12
+ *
13
+ * @param ast - Workflow to modify
14
+ * @param nodeType - Node type to add
15
+ * @returns Modified workflow (or unchanged if node type already exists)
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const ast = addNodeType(workflow, {
20
+ * type: 'NodeType',
21
+ * name: 'double',
22
+ * functionName: 'double',
23
+ * inputs: { x: { dataType: 'NUMBER' } },
24
+ * outputs: { result: { dataType: 'NUMBER' } },
25
+ * hasSuccessPort: true,
26
+ * hasFailurePort: true,
27
+ * executeWhen: 'CONJUNCTION'
28
+ * });
29
+ * ```
30
+ */
31
+ export declare function addNodeType(ast: TWorkflowAST, nodeType: TNodeTypeAST): TWorkflowAST;
32
+ /**
33
+ * Remove a node type from the workflow.
34
+ * Uses minimal validation (only checks type exists and has no instances)
35
+ * to allow deletion even when the workflow has other validation errors.
36
+ *
37
+ * @param ast - Workflow to modify
38
+ * @param typeName - Name of node type to remove
39
+ * @returns Modified workflow
40
+ * @throws {Error} If node type doesn't exist or instances reference it
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const ast = removeNodeType(workflow, 'obsoleteType');
45
+ * ```
46
+ */
47
+ export declare function removeNodeType(ast: TWorkflowAST, typeName: string): TWorkflowAST;
48
+ /**
49
+ * Update an existing node type.
50
+ * Uses no validation to allow updates even when workflow has other errors.
51
+ *
52
+ * @param ast - Workflow to modify
53
+ * @param typeName - Name of node type to update
54
+ * @param updates - Partial node type to merge
55
+ * @returns Modified workflow
56
+ * @throws {Error} If node type doesn't exist
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * const ast = updateNodeType(workflow, 'processor', {
61
+ * label: 'Data Processor',
62
+ * description: 'Processes incoming data'
63
+ * });
64
+ * ```
65
+ */
66
+ export declare function updateNodeType(ast: TWorkflowAST, typeName: string, updates: Partial<Omit<TNodeTypeAST, "type" | "name">>): TWorkflowAST;
67
+ /**
68
+ * Get a node type by name
69
+ *
70
+ * @param ast - Workflow to query
71
+ * @param typeName - Name of node type
72
+ * @returns Node type or undefined
73
+ */
74
+ export declare function getNodeType(ast: TWorkflowAST, typeName: string): TNodeTypeAST | undefined;
75
+ /**
76
+ * Check if node type exists
77
+ *
78
+ * @param ast - Workflow to query
79
+ * @param typeName - Name of node type
80
+ * @returns True if exists
81
+ */
82
+ export declare function hasNodeType(ast: TWorkflowAST, typeName: string): boolean;
83
+ /**
84
+ * List all node types
85
+ *
86
+ * @param ast - Workflow to query
87
+ * @returns Array of node types
88
+ */
89
+ export declare function listNodeTypes(ast: TWorkflowAST): TNodeTypeAST[];
90
+ /**
91
+ * Rename a node type and update all instances that reference it.
92
+ * Uses no validation to allow renames even when workflow has other errors.
93
+ *
94
+ * @param ast - Workflow to modify
95
+ * @param oldTypeName - Current name of the node type
96
+ * @param newTypeName - New name for the node type
97
+ * @returns Modified workflow
98
+ * @throws {Error} If node type doesn't exist or new name already exists
99
+ *
100
+ * @example
101
+ * ```typescript
102
+ * const ast = renameNodeType(workflow, 'OldTypeName', 'NewTypeName');
103
+ * ```
104
+ */
105
+ export declare function renameNodeType(ast: TWorkflowAST, oldTypeName: string, newTypeName: string): TWorkflowAST;
106
+ /**
107
+ * Replace all node types in workflow.
108
+ * Uses no validation to allow replacement even when workflow has other errors.
109
+ *
110
+ * @param ast - Workflow to modify
111
+ * @param nodeTypes - New array of node types
112
+ * @returns Modified workflow
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * const ast = replaceNodeTypes(workflow, [
117
+ * { type: 'NodeType', name: 'type1', ... },
118
+ * { type: 'NodeType', name: 'type2', ... }
119
+ * ]);
120
+ * ```
121
+ */
122
+ export declare function replaceNodeTypes(ast: TWorkflowAST, nodeTypes: TNodeTypeAST[]): TWorkflowAST;
123
+ //# sourceMappingURL=node-types.d.ts.map
@@ -0,0 +1,200 @@
1
+ /**
2
+ * Node type operations for workflow manipulation
3
+ */
4
+ import { produce } from "immer";
5
+ import { withoutValidation } from "../helpers.js";
6
+ /**
7
+ * Add a node type definition to the workflow (idempotent).
8
+ * Uses no validation to allow adding even when workflow has other errors.
9
+ *
10
+ * If a node type with the same name already exists, returns the AST unchanged
11
+ * without throwing an error. This handles state desync between server and client,
12
+ * race conditions, double-clicks, and server restarts gracefully.
13
+ *
14
+ * @param ast - Workflow to modify
15
+ * @param nodeType - Node type to add
16
+ * @returns Modified workflow (or unchanged if node type already exists)
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const ast = addNodeType(workflow, {
21
+ * type: 'NodeType',
22
+ * name: 'double',
23
+ * functionName: 'double',
24
+ * inputs: { x: { dataType: 'NUMBER' } },
25
+ * outputs: { result: { dataType: 'NUMBER' } },
26
+ * hasSuccessPort: true,
27
+ * hasFailurePort: true,
28
+ * executeWhen: 'CONJUNCTION'
29
+ * });
30
+ * ```
31
+ */
32
+ export function addNodeType(ast, nodeType) {
33
+ const existingIndex = ast.nodeTypes.findIndex((nt) => nt.name === nodeType.name);
34
+ // If node type already exists, check if we need to update it with new properties
35
+ // (e.g., importSource for npm types that were parsed without @import annotation)
36
+ if (existingIndex >= 0) {
37
+ const existing = ast.nodeTypes[existingIndex];
38
+ const newImportSource = nodeType.importSource;
39
+ const existingImportSource = existing.importSource;
40
+ // If the new type has importSource but the existing one doesn't, update it
41
+ if (newImportSource && !existingImportSource) {
42
+ return produce(ast, (draft) => {
43
+ draft.nodeTypes[existingIndex].importSource = newImportSource;
44
+ });
45
+ }
46
+ // Otherwise, return unchanged (idempotent)
47
+ return ast;
48
+ }
49
+ // Add new node type
50
+ return produce(ast, (draft) => {
51
+ draft.nodeTypes.push(nodeType);
52
+ });
53
+ }
54
+ /**
55
+ * Remove a node type from the workflow.
56
+ * Uses minimal validation (only checks type exists and has no instances)
57
+ * to allow deletion even when the workflow has other validation errors.
58
+ *
59
+ * @param ast - Workflow to modify
60
+ * @param typeName - Name of node type to remove
61
+ * @returns Modified workflow
62
+ * @throws {Error} If node type doesn't exist or instances reference it
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * const ast = removeNodeType(workflow, 'obsoleteType');
67
+ * ```
68
+ */
69
+ export function removeNodeType(ast, typeName) {
70
+ // First, verify node type exists
71
+ const typeIndex = ast.nodeTypes.findIndex((nt) => nt.name === typeName);
72
+ if (typeIndex === -1) {
73
+ throw new Error(`Node type "${typeName}" not found`);
74
+ }
75
+ // Check if any instances reference this type
76
+ const functionName = ast.nodeTypes[typeIndex].functionName;
77
+ const referencingInstances = ast.instances.filter((inst) => inst.nodeType === functionName);
78
+ if (referencingInstances.length > 0) {
79
+ throw new Error(`Cannot remove node type "${typeName}": ${referencingInstances.length} instance(s) still reference it (${referencingInstances.map((i) => i.id).join(", ")})`);
80
+ }
81
+ return withoutValidation(ast, (draft) => {
82
+ const idx = draft.nodeTypes.findIndex((nt) => nt.name === typeName);
83
+ draft.nodeTypes.splice(idx, 1);
84
+ });
85
+ }
86
+ /**
87
+ * Update an existing node type.
88
+ * Uses no validation to allow updates even when workflow has other errors.
89
+ *
90
+ * @param ast - Workflow to modify
91
+ * @param typeName - Name of node type to update
92
+ * @param updates - Partial node type to merge
93
+ * @returns Modified workflow
94
+ * @throws {Error} If node type doesn't exist
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * const ast = updateNodeType(workflow, 'processor', {
99
+ * label: 'Data Processor',
100
+ * description: 'Processes incoming data'
101
+ * });
102
+ * ```
103
+ */
104
+ export function updateNodeType(ast, typeName, updates) {
105
+ // Verify node type exists
106
+ if (!ast.nodeTypes.find((nt) => nt.name === typeName)) {
107
+ throw new Error(`Node type "${typeName}" not found`);
108
+ }
109
+ return withoutValidation(ast, (draft) => {
110
+ const nodeType = draft.nodeTypes.find((nt) => nt.name === typeName);
111
+ Object.assign(nodeType, updates);
112
+ });
113
+ }
114
+ /**
115
+ * Get a node type by name
116
+ *
117
+ * @param ast - Workflow to query
118
+ * @param typeName - Name of node type
119
+ * @returns Node type or undefined
120
+ */
121
+ export function getNodeType(ast, typeName) {
122
+ return ast.nodeTypes.find((nt) => nt.name === typeName);
123
+ }
124
+ /**
125
+ * Check if node type exists
126
+ *
127
+ * @param ast - Workflow to query
128
+ * @param typeName - Name of node type
129
+ * @returns True if exists
130
+ */
131
+ export function hasNodeType(ast, typeName) {
132
+ return ast.nodeTypes.some((nt) => nt.name === typeName);
133
+ }
134
+ /**
135
+ * List all node types
136
+ *
137
+ * @param ast - Workflow to query
138
+ * @returns Array of node types
139
+ */
140
+ export function listNodeTypes(ast) {
141
+ return [...ast.nodeTypes];
142
+ }
143
+ /**
144
+ * Rename a node type and update all instances that reference it.
145
+ * Uses no validation to allow renames even when workflow has other errors.
146
+ *
147
+ * @param ast - Workflow to modify
148
+ * @param oldTypeName - Current name of the node type
149
+ * @param newTypeName - New name for the node type
150
+ * @returns Modified workflow
151
+ * @throws {Error} If node type doesn't exist or new name already exists
152
+ *
153
+ * @example
154
+ * ```typescript
155
+ * const ast = renameNodeType(workflow, 'OldTypeName', 'NewTypeName');
156
+ * ```
157
+ */
158
+ export function renameNodeType(ast, oldTypeName, newTypeName) {
159
+ // Check if new name already exists
160
+ if (ast.nodeTypes.some((nt) => nt.name === newTypeName)) {
161
+ throw new Error(`Node type "${newTypeName}" already exists`);
162
+ }
163
+ return withoutValidation(ast, (draft) => {
164
+ // Find the node type in nodeTypes array
165
+ const nodeTypeIndex = draft.nodeTypes.findIndex((nt) => nt.name === oldTypeName);
166
+ // Rename the node type if it exists in nodeTypes array
167
+ if (nodeTypeIndex >= 0) {
168
+ draft.nodeTypes[nodeTypeIndex].name = newTypeName;
169
+ }
170
+ // Update all instances that reference this node type
171
+ draft.instances.forEach((instance) => {
172
+ if (instance.nodeType === oldTypeName) {
173
+ instance.nodeType = newTypeName;
174
+ }
175
+ });
176
+ });
177
+ }
178
+ /**
179
+ * Replace all node types in workflow.
180
+ * Uses no validation to allow replacement even when workflow has other errors.
181
+ *
182
+ * @param ast - Workflow to modify
183
+ * @param nodeTypes - New array of node types
184
+ * @returns Modified workflow
185
+ *
186
+ * @example
187
+ * ```typescript
188
+ * const ast = replaceNodeTypes(workflow, [
189
+ * { type: 'NodeType', name: 'type1', ... },
190
+ * { type: 'NodeType', name: 'type2', ... }
191
+ * ]);
192
+ * ```
193
+ */
194
+ export function replaceNodeTypes(ast, nodeTypes) {
195
+ // Use produce directly with simplified type to avoid excessive type instantiation
196
+ return produce(ast, (draft) => {
197
+ draft.nodeTypes = nodeTypes;
198
+ });
199
+ }
200
+ //# sourceMappingURL=node-types.js.map
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Node instance operations for workflow manipulation
3
+ */
4
+ import type { TWorkflowAST, TNodeInstanceAST, TNodeInstanceConfig } from "../../ast/types.js";
5
+ import { type RemoveOptions } from "../helpers.js";
6
+ /**
7
+ * Add a node instance to the workflow
8
+ *
9
+ * @param ast - Workflow to modify
10
+ * @param node - Node instance to add
11
+ * @returns Modified workflow
12
+ * @throws {Error} If node ID already exists or node type doesn't exist
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const ast = addNode(workflow, {
17
+ * type: 'NodeInstance',
18
+ * id: 'processor1',
19
+ * nodeType: 'dataProcessor'
20
+ * });
21
+ * ```
22
+ */
23
+ export declare function addNode(ast: TWorkflowAST, node: TNodeInstanceAST): TWorkflowAST;
24
+ /**
25
+ * Remove a node instance from the workflow.
26
+ * Uses minimal validation (only checks node exists) to allow deletion
27
+ * even when the workflow has other validation errors.
28
+ *
29
+ * @param ast - Workflow to modify
30
+ * @param nodeId - ID of node to remove
31
+ * @param options - Remove options
32
+ * @returns Modified workflow
33
+ * @throws {Error} If node doesn't exist
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * // Remove node and all its connections
38
+ * const ast = removeNode(workflow, 'processor1');
39
+ *
40
+ * // Remove node, keep connections (will fail validation)
41
+ * const ast = removeNode(workflow, 'processor1', { removeConnections: false });
42
+ * ```
43
+ */
44
+ export declare function removeNode(ast: TWorkflowAST, nodeId: string, options?: RemoveOptions): TWorkflowAST;
45
+ /**
46
+ * Rename a node instance (updates all connections)
47
+ *
48
+ * @param ast - Workflow to modify
49
+ * @param oldId - Current node ID
50
+ * @param newId - New node ID
51
+ * @returns Modified workflow
52
+ * @throws {Error} If old ID doesn't exist or new ID already exists
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * const ast = renameNode(workflow, 'processor1', 'dataProcessor');
57
+ * // All connections updated automatically
58
+ * ```
59
+ */
60
+ export declare function renameNode(ast: TWorkflowAST, oldId: string, newId: string): TWorkflowAST;
61
+ /**
62
+ * Update a node instance
63
+ *
64
+ * @param ast - Workflow to modify
65
+ * @param nodeId - ID of node to update
66
+ * @param updates - Partial node instance to merge
67
+ * @returns Modified workflow
68
+ * @throws {Error} If node doesn't exist
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * const ast = updateNode(workflow, 'processor1', {
73
+ * config: { x: 100, y: 200, label: 'Main Processor' }
74
+ * });
75
+ * ```
76
+ */
77
+ export declare function updateNode(ast: TWorkflowAST, nodeId: string, updates: Partial<Omit<TNodeInstanceAST, "type" | "id">>): TWorkflowAST;
78
+ /**
79
+ * Add multiple nodes at once.
80
+ * Uses no validation to allow adding even when workflow has other errors.
81
+ *
82
+ * @param ast - Workflow to modify
83
+ * @param nodes - Array of node instances to add
84
+ * @returns Modified workflow
85
+ */
86
+ export declare function addNodes(ast: TWorkflowAST, nodes: TNodeInstanceAST[]): TWorkflowAST;
87
+ /**
88
+ * Remove multiple nodes at once.
89
+ * Uses minimal validation (only checks nodes exist) to allow deletion
90
+ * even when the workflow has other validation errors.
91
+ *
92
+ * @param ast - Workflow to modify
93
+ * @param nodeIds - Array of node IDs to remove
94
+ * @returns Modified workflow
95
+ */
96
+ export declare function removeNodes(ast: TWorkflowAST, nodeIds: string[]): TWorkflowAST;
97
+ /**
98
+ * Set node configuration
99
+ *
100
+ * @param ast - Workflow to modify
101
+ * @param nodeId - ID of node to configure
102
+ * @param config - Configuration to set
103
+ * @returns Modified workflow
104
+ */
105
+ export declare function setNodeConfig(ast: TWorkflowAST, nodeId: string, config: TNodeInstanceConfig): TWorkflowAST;
106
+ /**
107
+ * Set node position (UI coordinates)
108
+ *
109
+ * @param ast - Workflow to modify
110
+ * @param nodeId - ID of node to position (including virtual nodes "Start" and "Exit")
111
+ * @param x - X coordinate
112
+ * @param y - Y coordinate
113
+ * @returns Modified workflow
114
+ */
115
+ export declare function setNodePosition(ast: TWorkflowAST, nodeId: string, x: number, y: number): TWorkflowAST;
116
+ /**
117
+ * Set node minimized state (UI state)
118
+ *
119
+ * @param ast - Workflow to modify
120
+ * @param nodeId - ID of node to minimize/expand
121
+ * @param minimized - Whether the node is minimized
122
+ * @returns Modified workflow
123
+ */
124
+ export declare function setNodeMinimized(ast: TWorkflowAST, nodeId: string, minimized: boolean): TWorkflowAST;
125
+ /**
126
+ * Set node label (UI display name)
127
+ *
128
+ * @param ast - Workflow to modify
129
+ * @param nodeId - ID of node to label
130
+ * @param label - Label to set (empty string or undefined clears the label)
131
+ * @returns Modified workflow
132
+ */
133
+ export declare function setNodeLabel(ast: TWorkflowAST, nodeId: string, label: string | undefined): TWorkflowAST;
134
+ /**
135
+ * Set node size (UI state)
136
+ *
137
+ * @param ast - Workflow to modify
138
+ * @param nodeId - ID of node to resize
139
+ * @param width - Node width
140
+ * @param height - Node height
141
+ * @returns Modified workflow
142
+ */
143
+ export declare function setNodeSize(ast: TWorkflowAST, nodeId: string, width: number, height: number): TWorkflowAST;
144
+ //# sourceMappingURL=nodes.d.ts.map