@flowdrop/flowdrop 1.4.0 → 1.6.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 (441) hide show
  1. package/README.md +94 -51
  2. package/dist/adapters/WorkflowAdapter.d.ts +1 -1
  3. package/dist/adapters/WorkflowAdapter.js +27 -47
  4. package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +2 -2
  5. package/dist/adapters/agentspec/AgentSpecAdapter.js +122 -133
  6. package/dist/adapters/agentspec/agentAdapter.d.ts +2 -2
  7. package/dist/adapters/agentspec/agentAdapter.js +10 -10
  8. package/dist/adapters/agentspec/autoLayout.d.ts +52 -6
  9. package/dist/adapters/agentspec/autoLayout.js +118 -23
  10. package/dist/adapters/agentspec/componentTypeDefaults.d.ts +1 -1
  11. package/dist/adapters/agentspec/componentTypeDefaults.js +120 -120
  12. package/dist/adapters/agentspec/defaultNodeTypes.d.ts +2 -2
  13. package/dist/adapters/agentspec/defaultNodeTypes.js +307 -307
  14. package/dist/adapters/agentspec/index.d.ts +10 -10
  15. package/dist/adapters/agentspec/index.js +6 -6
  16. package/dist/adapters/agentspec/validator.d.ts +2 -2
  17. package/dist/adapters/agentspec/validator.js +20 -22
  18. package/dist/api/enhanced-client.d.ts +3 -3
  19. package/dist/api/enhanced-client.js +72 -73
  20. package/dist/chat/commandClassifier.d.ts +19 -0
  21. package/dist/chat/commandClassifier.js +30 -0
  22. package/dist/chat/index.d.ts +27 -0
  23. package/dist/chat/index.js +32 -0
  24. package/dist/chat/responseParser.d.ts +21 -0
  25. package/dist/chat/responseParser.js +91 -0
  26. package/dist/commands/batch.d.ts +18 -0
  27. package/dist/commands/batch.js +54 -0
  28. package/dist/commands/executor.d.ts +37 -0
  29. package/dist/commands/executor.js +1133 -0
  30. package/dist/commands/index.d.ts +14 -0
  31. package/dist/commands/index.js +17 -0
  32. package/dist/commands/parser.d.ts +16 -0
  33. package/dist/commands/parser.js +295 -0
  34. package/dist/commands/positioner.d.ts +19 -0
  35. package/dist/commands/positioner.js +33 -0
  36. package/dist/commands/storeIntegration.svelte.d.ts +16 -0
  37. package/dist/commands/storeIntegration.svelte.js +67 -0
  38. package/dist/commands/types.d.ts +343 -0
  39. package/dist/commands/types.js +45 -0
  40. package/dist/components/App.svelte +522 -237
  41. package/dist/components/App.svelte.d.ts +11 -8
  42. package/dist/components/CanvasBanner.stories.svelte +10 -16
  43. package/dist/components/CanvasBanner.stories.svelte.d.ts +1 -1
  44. package/dist/components/CanvasBanner.svelte +2 -2
  45. package/dist/components/CanvasBanner.svelte.d.ts +1 -1
  46. package/dist/components/CanvasController.svelte +37 -0
  47. package/dist/components/CanvasController.svelte.d.ts +32 -0
  48. package/dist/components/ConfigForm.svelte +118 -256
  49. package/dist/components/ConfigForm.svelte.d.ts +2 -2
  50. package/dist/components/ConfigMappingRow.svelte +128 -0
  51. package/dist/components/ConfigMappingRow.svelte.d.ts +8 -0
  52. package/dist/components/ConfigModal.svelte +3 -3
  53. package/dist/components/ConfigModal.svelte.d.ts +1 -1
  54. package/dist/components/ConfigPanel.stories.svelte +19 -19
  55. package/dist/components/ConfigPanel.stories.svelte.d.ts +1 -1
  56. package/dist/components/ConfigPanel.svelte +57 -19
  57. package/dist/components/ConfigPanel.svelte.d.ts +3 -1
  58. package/dist/components/ConnectionLine.svelte +4 -4
  59. package/dist/components/EdgeRefresher.svelte +1 -1
  60. package/dist/components/FlowDropEdge.stories.svelte +110 -110
  61. package/dist/components/FlowDropEdge.svelte +11 -19
  62. package/dist/components/FlowDropEdge.svelte.d.ts +1 -1
  63. package/dist/components/FlowDropZone.svelte +6 -9
  64. package/dist/components/FlowDropZone.svelte.d.ts +1 -1
  65. package/dist/components/LoadingSpinner.stories.svelte +13 -13
  66. package/dist/components/LoadingSpinner.stories.svelte.d.ts +1 -1
  67. package/dist/components/LoadingSpinner.svelte +3 -3
  68. package/dist/components/LoadingSpinner.svelte.d.ts +1 -1
  69. package/dist/components/Logo.stories.svelte +4 -4
  70. package/dist/components/Logo.stories.svelte.d.ts +1 -1
  71. package/dist/components/Logo.svelte +3 -9
  72. package/dist/components/LogsSidebar.svelte +46 -53
  73. package/dist/components/LogsSidebar.svelte.d.ts +1 -1
  74. package/dist/components/MarkdownDisplay.stories.svelte +10 -14
  75. package/dist/components/MarkdownDisplay.stories.svelte.d.ts +1 -1
  76. package/dist/components/MarkdownDisplay.svelte +4 -6
  77. package/dist/components/Navbar.stories.svelte +19 -19
  78. package/dist/components/Navbar.stories.svelte.d.ts +1 -1
  79. package/dist/components/Navbar.svelte +28 -49
  80. package/dist/components/Navbar.svelte.d.ts +2 -2
  81. package/dist/components/NodeSidebar.svelte +55 -135
  82. package/dist/components/NodeSidebar.svelte.d.ts +1 -1
  83. package/dist/components/NodeStatusOverlay.stories.svelte +19 -31
  84. package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +1 -1
  85. package/dist/components/NodeStatusOverlay.svelte +40 -55
  86. package/dist/components/NodeStatusOverlay.svelte.d.ts +3 -3
  87. package/dist/components/NodeSwapPicker.svelte +493 -0
  88. package/dist/components/NodeSwapPicker.svelte.d.ts +16 -0
  89. package/dist/components/PipelineStatus.svelte +63 -89
  90. package/dist/components/PipelineStatus.svelte.d.ts +4 -4
  91. package/dist/components/PortCoordinateTracker.svelte +5 -7
  92. package/dist/components/PortCoordinateTracker.svelte.d.ts +1 -1
  93. package/dist/components/PortMappingRow.svelte +205 -0
  94. package/dist/components/PortMappingRow.svelte.d.ts +12 -0
  95. package/dist/components/ReadOnlyDetails.svelte +1 -1
  96. package/dist/components/SchemaForm.stories.svelte +53 -53
  97. package/dist/components/SchemaForm.stories.svelte.d.ts +1 -1
  98. package/dist/components/SchemaForm.svelte +24 -51
  99. package/dist/components/SchemaForm.svelte.d.ts +2 -2
  100. package/dist/components/SettingsModal.svelte +6 -9
  101. package/dist/components/SettingsModal.svelte.d.ts +1 -1
  102. package/dist/components/SettingsPanel.svelte +138 -158
  103. package/dist/components/SettingsPanel.svelte.d.ts +1 -1
  104. package/dist/components/StatusIcon.stories.svelte +16 -29
  105. package/dist/components/StatusIcon.stories.svelte.d.ts +1 -1
  106. package/dist/components/StatusIcon.svelte +19 -19
  107. package/dist/components/StatusIcon.svelte.d.ts +2 -2
  108. package/dist/components/StatusLabel.stories.svelte +8 -8
  109. package/dist/components/StatusLabel.stories.svelte.d.ts +1 -1
  110. package/dist/components/SwapMappingEditor.svelte +529 -0
  111. package/dist/components/SwapMappingEditor.svelte.d.ts +12 -0
  112. package/dist/components/ThemeToggle.stories.svelte +10 -10
  113. package/dist/components/ThemeToggle.stories.svelte.d.ts +1 -1
  114. package/dist/components/ThemeToggle.svelte +22 -33
  115. package/dist/components/ThemeToggle.svelte.d.ts +1 -1
  116. package/dist/components/UniversalNode.svelte +29 -41
  117. package/dist/components/UniversalNode.svelte.d.ts +3 -3
  118. package/dist/components/WorkflowEditor.svelte +210 -170
  119. package/dist/components/WorkflowEditor.svelte.d.ts +12 -4
  120. package/dist/components/chat/AIChatPanel.svelte +797 -0
  121. package/dist/components/chat/AIChatPanel.svelte.d.ts +13 -0
  122. package/dist/components/chat/CommandPreview.svelte +234 -0
  123. package/dist/components/chat/CommandPreview.svelte.d.ts +9 -0
  124. package/dist/components/console/CommandConsole.stories.svelte +111 -0
  125. package/dist/components/console/CommandConsole.stories.svelte.d.ts +27 -0
  126. package/dist/components/console/CommandConsole.svelte +263 -0
  127. package/dist/components/console/CommandConsole.svelte.d.ts +11 -0
  128. package/dist/components/console/ConsoleAutocomplete.svelte +142 -0
  129. package/dist/components/console/ConsoleAutocomplete.svelte.d.ts +21 -0
  130. package/dist/components/console/ConsoleInput.svelte +771 -0
  131. package/dist/components/console/ConsoleInput.svelte.d.ts +16 -0
  132. package/dist/components/console/ConsoleOutput.svelte +116 -0
  133. package/dist/components/console/ConsoleOutput.svelte.d.ts +11 -0
  134. package/dist/components/console/formatters.d.ts +26 -0
  135. package/dist/components/console/formatters.js +116 -0
  136. package/dist/components/form/FormArray.svelte +75 -132
  137. package/dist/components/form/FormArray.svelte.d.ts +1 -1
  138. package/dist/components/form/FormAutocomplete.svelte +65 -108
  139. package/dist/components/form/FormAutocomplete.svelte.d.ts +1 -1
  140. package/dist/components/form/FormCheckboxGroup.stories.svelte +13 -16
  141. package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +1 -1
  142. package/dist/components/form/FormCheckboxGroup.svelte +2 -2
  143. package/dist/components/form/FormCodeEditor.svelte +42 -56
  144. package/dist/components/form/FormField.svelte +79 -90
  145. package/dist/components/form/FormField.svelte.d.ts +2 -2
  146. package/dist/components/form/FormFieldLight.svelte +72 -88
  147. package/dist/components/form/FormFieldLight.svelte.d.ts +1 -1
  148. package/dist/components/form/FormFieldWrapper.stories.svelte +14 -14
  149. package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +1 -1
  150. package/dist/components/form/FormFieldWrapper.svelte +2 -9
  151. package/dist/components/form/FormFieldWrapper.svelte.d.ts +1 -1
  152. package/dist/components/form/FormFieldset.svelte +3 -3
  153. package/dist/components/form/FormFieldset.svelte.d.ts +2 -2
  154. package/dist/components/form/FormMarkdownEditor.svelte +123 -156
  155. package/dist/components/form/FormNumberField.stories.svelte +18 -18
  156. package/dist/components/form/FormNumberField.stories.svelte.d.ts +1 -1
  157. package/dist/components/form/FormNumberField.svelte +6 -6
  158. package/dist/components/form/FormRangeField.stories.svelte +13 -13
  159. package/dist/components/form/FormRangeField.stories.svelte.d.ts +1 -1
  160. package/dist/components/form/FormRangeField.svelte +4 -12
  161. package/dist/components/form/FormSelect.stories.svelte +21 -21
  162. package/dist/components/form/FormSelect.stories.svelte.d.ts +1 -1
  163. package/dist/components/form/FormSelect.svelte +5 -5
  164. package/dist/components/form/FormSelect.svelte.d.ts +1 -1
  165. package/dist/components/form/FormTemplateEditor.svelte +126 -175
  166. package/dist/components/form/FormTemplateEditor.svelte.d.ts +1 -1
  167. package/dist/components/form/FormTextField.stories.svelte +17 -23
  168. package/dist/components/form/FormTextField.stories.svelte.d.ts +1 -1
  169. package/dist/components/form/FormTextField.svelte +4 -4
  170. package/dist/components/form/FormTextarea.stories.svelte +18 -21
  171. package/dist/components/form/FormTextarea.stories.svelte.d.ts +1 -1
  172. package/dist/components/form/FormTextarea.svelte +4 -4
  173. package/dist/components/form/FormToggle.stories.svelte +13 -16
  174. package/dist/components/form/FormToggle.stories.svelte.d.ts +1 -1
  175. package/dist/components/form/FormToggle.svelte +3 -3
  176. package/dist/components/form/FormUISchemaRenderer.svelte +12 -19
  177. package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +3 -3
  178. package/dist/components/form/index.d.ts +19 -19
  179. package/dist/components/form/index.js +18 -18
  180. package/dist/components/form/templateAutocomplete.d.ts +2 -2
  181. package/dist/components/form/templateAutocomplete.js +55 -64
  182. package/dist/components/form/types.d.ts +6 -6
  183. package/dist/components/form/types.js +4 -9
  184. package/dist/components/icons/AlertCircleIcon.svelte +1 -6
  185. package/dist/components/icons/CogIcon.svelte +1 -6
  186. package/dist/components/interrupt/ChoicePrompt.stories.svelte +27 -27
  187. package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +1 -1
  188. package/dist/components/interrupt/ChoicePrompt.svelte +17 -41
  189. package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +1 -1
  190. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +17 -17
  191. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +1 -1
  192. package/dist/components/interrupt/ConfirmationPrompt.svelte +10 -16
  193. package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +1 -1
  194. package/dist/components/interrupt/FormPrompt.svelte +10 -15
  195. package/dist/components/interrupt/FormPrompt.svelte.d.ts +1 -1
  196. package/dist/components/interrupt/InterruptBubble.svelte +87 -121
  197. package/dist/components/interrupt/InterruptBubble.svelte.d.ts +2 -2
  198. package/dist/components/interrupt/ReviewPrompt.stories.svelte +37 -37
  199. package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +1 -1
  200. package/dist/components/interrupt/ReviewPrompt.svelte +55 -75
  201. package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +1 -1
  202. package/dist/components/interrupt/TextInputPrompt.stories.svelte +16 -17
  203. package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +1 -1
  204. package/dist/components/interrupt/TextInputPrompt.svelte +13 -18
  205. package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +1 -1
  206. package/dist/components/interrupt/index.d.ts +6 -5
  207. package/dist/components/interrupt/index.js +6 -5
  208. package/dist/components/layouts/MainLayout.svelte +46 -84
  209. package/dist/components/layouts/MainLayout.svelte.d.ts +6 -6
  210. package/dist/components/nodes/GatewayNode.stories.svelte +64 -65
  211. package/dist/components/nodes/GatewayNode.svelte +37 -70
  212. package/dist/components/nodes/GatewayNode.svelte.d.ts +3 -3
  213. package/dist/components/nodes/IdeaNode.stories.svelte +25 -26
  214. package/dist/components/nodes/IdeaNode.svelte +22 -36
  215. package/dist/components/nodes/IdeaNode.svelte.d.ts +1 -1
  216. package/dist/components/nodes/NotesNode.stories.svelte +37 -38
  217. package/dist/components/nodes/NotesNode.svelte +28 -39
  218. package/dist/components/nodes/NotesNode.svelte.d.ts +1 -1
  219. package/dist/components/nodes/SimpleNode.stories.svelte +137 -138
  220. package/dist/components/nodes/SimpleNode.svelte +44 -74
  221. package/dist/components/nodes/SimpleNode.svelte.d.ts +1 -1
  222. package/dist/components/nodes/SquareNode.stories.svelte +75 -75
  223. package/dist/components/nodes/SquareNode.svelte +42 -68
  224. package/dist/components/nodes/SquareNode.svelte.d.ts +1 -1
  225. package/dist/components/nodes/TerminalNode.stories.svelte +10 -10
  226. package/dist/components/nodes/TerminalNode.svelte +74 -112
  227. package/dist/components/nodes/TerminalNode.svelte.d.ts +1 -1
  228. package/dist/components/nodes/ToolNode.stories.svelte +115 -116
  229. package/dist/components/nodes/ToolNode.svelte +31 -64
  230. package/dist/components/nodes/ToolNode.svelte.d.ts +1 -1
  231. package/dist/components/nodes/WorkflowNode.stories.svelte +84 -89
  232. package/dist/components/nodes/WorkflowNode.svelte +50 -103
  233. package/dist/components/nodes/WorkflowNode.svelte.d.ts +3 -3
  234. package/dist/components/playground/ChatPanel.svelte +47 -103
  235. package/dist/components/playground/ExecutionLogs.svelte +45 -68
  236. package/dist/components/playground/InputCollector.svelte +32 -51
  237. package/dist/components/playground/MessageBubble.stories.svelte +25 -25
  238. package/dist/components/playground/MessageBubble.stories.svelte.d.ts +1 -1
  239. package/dist/components/playground/MessageBubble.svelte +54 -70
  240. package/dist/components/playground/MessageBubble.svelte.d.ts +1 -1
  241. package/dist/components/playground/Playground.svelte +60 -91
  242. package/dist/components/playground/Playground.svelte.d.ts +3 -3
  243. package/dist/components/playground/PlaygroundModal.svelte +8 -12
  244. package/dist/components/playground/PlaygroundModal.svelte.d.ts +3 -3
  245. package/dist/components/playground/SessionManager.svelte +34 -40
  246. package/dist/components/playground/SessionManager.svelte.d.ts +1 -1
  247. package/dist/config/agentSpecEndpoints.d.ts +1 -1
  248. package/dist/config/agentSpecEndpoints.js +20 -20
  249. package/dist/config/constants.js +2 -2
  250. package/dist/config/defaultCategories.d.ts +1 -1
  251. package/dist/config/defaultCategories.js +86 -86
  252. package/dist/config/defaultPortConfig.d.ts +1 -1
  253. package/dist/config/defaultPortConfig.js +144 -144
  254. package/dist/config/endpoints.d.ts +12 -4
  255. package/dist/config/endpoints.js +70 -65
  256. package/dist/config/runtimeConfig.d.ts +2 -2
  257. package/dist/config/runtimeConfig.js +8 -8
  258. package/dist/core/index.d.ts +68 -63
  259. package/dist/core/index.js +44 -35
  260. package/dist/display/index.d.ts +2 -2
  261. package/dist/display/index.js +2 -2
  262. package/dist/editor/index.d.ts +64 -62
  263. package/dist/editor/index.js +57 -55
  264. package/dist/form/code.d.ts +5 -5
  265. package/dist/form/code.js +14 -14
  266. package/dist/form/fieldRegistry.d.ts +3 -3
  267. package/dist/form/fieldRegistry.js +9 -11
  268. package/dist/form/full.d.ts +8 -8
  269. package/dist/form/full.js +9 -9
  270. package/dist/form/index.d.ts +18 -18
  271. package/dist/form/index.js +16 -16
  272. package/dist/form/markdown.d.ts +4 -4
  273. package/dist/form/markdown.js +8 -8
  274. package/dist/helpers/proximityConnect.d.ts +3 -3
  275. package/dist/helpers/proximityConnect.js +40 -35
  276. package/dist/helpers/workflowEditorHelper.d.ts +8 -58
  277. package/dist/helpers/workflowEditorHelper.js +73 -292
  278. package/dist/index.d.ts +6 -6
  279. package/dist/index.js +6 -6
  280. package/dist/mocks/app-environment.js +2 -2
  281. package/dist/mocks/app-forms.js +1 -1
  282. package/dist/mocks/app-navigation.js +2 -2
  283. package/dist/mocks/app-stores.js +3 -3
  284. package/dist/playground/index.d.ts +19 -19
  285. package/dist/playground/index.js +16 -16
  286. package/dist/playground/mount.d.ts +3 -3
  287. package/dist/playground/mount.js +24 -24
  288. package/dist/registry/builtinFormats.js +13 -13
  289. package/dist/registry/builtinNodes.d.ts +2 -2
  290. package/dist/registry/builtinNodes.js +77 -77
  291. package/dist/registry/index.d.ts +4 -4
  292. package/dist/registry/index.js +4 -4
  293. package/dist/registry/nodeComponentRegistry.d.ts +8 -8
  294. package/dist/registry/nodeComponentRegistry.js +9 -11
  295. package/dist/registry/plugin.d.ts +2 -2
  296. package/dist/registry/plugin.js +11 -11
  297. package/dist/registry/workflowFormatRegistry.d.ts +3 -3
  298. package/dist/registry/workflowFormatRegistry.js +2 -2
  299. package/dist/schema/index.d.ts +1 -1
  300. package/dist/schema/index.js +2 -2
  301. package/dist/schemas/v1/workflow.schema.json +107 -22
  302. package/dist/services/agentSpecExecutionService.d.ts +3 -3
  303. package/dist/services/agentSpecExecutionService.js +55 -56
  304. package/dist/services/api.d.ts +2 -2
  305. package/dist/services/api.js +37 -37
  306. package/dist/services/apiVariableService.d.ts +1 -1
  307. package/dist/services/apiVariableService.js +34 -41
  308. package/dist/services/autoSaveService.js +8 -8
  309. package/dist/services/categoriesApi.d.ts +2 -2
  310. package/dist/services/categoriesApi.js +8 -8
  311. package/dist/services/chatService.d.ts +65 -0
  312. package/dist/services/chatService.js +131 -0
  313. package/dist/services/draftStorage.d.ts +1 -1
  314. package/dist/services/draftStorage.js +11 -11
  315. package/dist/services/dynamicSchemaService.d.ts +1 -1
  316. package/dist/services/dynamicSchemaService.js +39 -41
  317. package/dist/services/globalSave.d.ts +2 -2
  318. package/dist/services/globalSave.js +38 -41
  319. package/dist/services/historyService.d.ts +7 -5
  320. package/dist/services/historyService.js +29 -14
  321. package/dist/services/interruptService.d.ts +1 -1
  322. package/dist/services/interruptService.js +29 -35
  323. package/dist/services/nodeExecutionService.d.ts +1 -1
  324. package/dist/services/nodeExecutionService.js +44 -45
  325. package/dist/services/playgroundService.d.ts +1 -1
  326. package/dist/services/playgroundService.js +29 -29
  327. package/dist/services/portConfigApi.d.ts +2 -2
  328. package/dist/services/portConfigApi.js +8 -8
  329. package/dist/services/settingsService.d.ts +2 -2
  330. package/dist/services/settingsService.js +19 -25
  331. package/dist/services/toastService.d.ts +4 -4
  332. package/dist/services/toastService.js +33 -33
  333. package/dist/services/variableService.d.ts +1 -1
  334. package/dist/services/variableService.js +36 -36
  335. package/dist/services/workflowStorage.d.ts +2 -2
  336. package/dist/services/workflowStorage.js +13 -13
  337. package/dist/settings/index.d.ts +7 -7
  338. package/dist/settings/index.js +6 -6
  339. package/dist/skins/default.d.ts +1 -1
  340. package/dist/skins/default.js +1 -1
  341. package/dist/skins/index.d.ts +3 -3
  342. package/dist/skins/index.js +7 -7
  343. package/dist/skins/slate.d.ts +1 -1
  344. package/dist/skins/slate.js +69 -69
  345. package/dist/stores/categoriesStore.svelte.d.ts +1 -1
  346. package/dist/stores/categoriesStore.svelte.js +5 -5
  347. package/dist/stores/editorStateMachine.svelte.d.ts +2 -2
  348. package/dist/stores/editorStateMachine.svelte.js +34 -34
  349. package/dist/stores/historyStore.svelte.d.ts +4 -4
  350. package/dist/stores/historyStore.svelte.js +4 -4
  351. package/dist/stores/interruptStore.svelte.d.ts +3 -3
  352. package/dist/stores/interruptStore.svelte.js +27 -22
  353. package/dist/stores/playgroundStore.svelte.d.ts +3 -3
  354. package/dist/stores/playgroundStore.svelte.js +29 -23
  355. package/dist/stores/portCoordinateStore.svelte.d.ts +6 -2
  356. package/dist/stores/portCoordinateStore.svelte.js +30 -39
  357. package/dist/stores/settingsStore.svelte.d.ts +2 -2
  358. package/dist/stores/settingsStore.svelte.js +57 -62
  359. package/dist/stores/workflowStore.svelte.d.ts +34 -5
  360. package/dist/stores/workflowStore.svelte.js +127 -108
  361. package/dist/stories/CanvasDecorator.svelte +7 -10
  362. package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
  363. package/dist/stories/EdgeDecorator.svelte +28 -31
  364. package/dist/stories/EdgeDecorator.svelte.d.ts +1 -1
  365. package/dist/stories/NodeDecorator.svelte +14 -20
  366. package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
  367. package/dist/stories/utils.d.ts +2 -2
  368. package/dist/stories/utils.js +89 -93
  369. package/dist/styles/base.css +16 -50
  370. package/dist/styles/tokens.css +10 -28
  371. package/dist/svelte-app.d.ts +10 -10
  372. package/dist/svelte-app.js +39 -39
  373. package/dist/themes/default.d.ts +1 -1
  374. package/dist/themes/default.js +4 -4
  375. package/dist/themes/index.d.ts +3 -3
  376. package/dist/themes/index.js +11 -11
  377. package/dist/themes/minimal.d.ts +1 -1
  378. package/dist/themes/minimal.js +5 -5
  379. package/dist/types/agentspec.d.ts +18 -18
  380. package/dist/types/agentspec.js +2 -2
  381. package/dist/types/auth.d.ts +1 -1
  382. package/dist/types/auth.js +6 -6
  383. package/dist/types/chat.d.ts +63 -0
  384. package/dist/types/chat.js +9 -0
  385. package/dist/types/config.d.ts +6 -6
  386. package/dist/types/events.d.ts +28 -2
  387. package/dist/types/events.js +2 -1
  388. package/dist/types/index.d.ts +40 -32
  389. package/dist/types/index.js +6 -6
  390. package/dist/types/interrupt.d.ts +6 -6
  391. package/dist/types/interrupt.js +21 -21
  392. package/dist/types/interruptState.d.ts +12 -12
  393. package/dist/types/interruptState.js +66 -66
  394. package/dist/types/playground.d.ts +7 -7
  395. package/dist/types/playground.js +14 -14
  396. package/dist/types/settings.d.ts +12 -4
  397. package/dist/types/settings.js +21 -23
  398. package/dist/types/skin.d.ts +1 -1
  399. package/dist/types/theme.d.ts +2 -2
  400. package/dist/types/uischema.d.ts +4 -4
  401. package/dist/types/uischema.js +3 -3
  402. package/dist/utils/colors.d.ts +1 -1
  403. package/dist/utils/colors.js +95 -97
  404. package/dist/utils/config.d.ts +2 -2
  405. package/dist/utils/config.js +48 -48
  406. package/dist/utils/connections.d.ts +2 -2
  407. package/dist/utils/connections.js +15 -15
  408. package/dist/utils/edgeStyling.d.ts +42 -0
  409. package/dist/utils/edgeStyling.js +173 -0
  410. package/dist/utils/errors.js +3 -3
  411. package/dist/utils/fetchWithAuth.d.ts +1 -1
  412. package/dist/utils/fetchWithAuth.js +2 -2
  413. package/dist/utils/handleIds.d.ts +2 -2
  414. package/dist/utils/handleIds.js +8 -8
  415. package/dist/utils/handlePositioning.d.ts +1 -1
  416. package/dist/utils/handlePositioning.js +2 -2
  417. package/dist/utils/icons.d.ts +1 -1
  418. package/dist/utils/icons.js +74 -74
  419. package/dist/utils/logger.d.ts +1 -1
  420. package/dist/utils/logger.js +7 -7
  421. package/dist/utils/nodeIds.d.ts +31 -0
  422. package/dist/utils/nodeIds.js +42 -0
  423. package/dist/utils/nodeStatus.d.ts +1 -1
  424. package/dist/utils/nodeStatus.js +48 -48
  425. package/dist/utils/nodeSwap.d.ts +221 -0
  426. package/dist/utils/nodeSwap.js +680 -0
  427. package/dist/utils/nodeTypes.d.ts +1 -1
  428. package/dist/utils/nodeTypes.js +20 -21
  429. package/dist/utils/nodeWrapper.d.ts +7 -7
  430. package/dist/utils/nodeWrapper.js +19 -21
  431. package/dist/utils/performanceUtils.d.ts +1 -1
  432. package/dist/utils/performanceUtils.js +1 -2
  433. package/dist/utils/portUtils.d.ts +2 -2
  434. package/dist/utils/portUtils.js +1 -1
  435. package/dist/utils/sanitize.js +1 -1
  436. package/dist/utils/uischema.d.ts +2 -2
  437. package/dist/utils/uischema.js +8 -8
  438. package/dist/utils/validation.js +8 -8
  439. package/package.json +12 -11
  440. package/dist/helpers/nodeLayoutHelper.d.ts +0 -14
  441. package/dist/helpers/nodeLayoutHelper.js +0 -19
@@ -9,26 +9,72 @@
9
9
  * 3. Position nodes with configurable spacing
10
10
  * 4. Fan out branches vertically from BranchingNode
11
11
  */
12
- import type { AgentSpecFlow } from "../../types/agentspec.js";
12
+ import type { AgentSpecFlow } from '../../types/agentspec.js';
13
+ /** Measured dimensions for a node */
14
+ export interface NodeDimensions {
15
+ width: number;
16
+ height: number;
17
+ }
13
18
  /** Layout configuration */
14
19
  export interface AutoLayoutConfig {
15
- /** Horizontal spacing between layers (px) */
16
- horizontalSpacing: number;
17
- /** Vertical spacing between nodes in the same layer (px) */
18
- verticalSpacing: number;
20
+ /** Minimum horizontal gap between the right edge of one layer and the left edge of the next (px) */
21
+ horizontalGap: number;
22
+ /** Minimum vertical gap between the bottom edge of one node and the top edge of the next in the same layer (px) */
23
+ verticalGap: number;
19
24
  /** Starting X position */
20
25
  startX: number;
21
26
  /** Starting Y position */
22
27
  startY: number;
28
+ /** Fallback node width when measured dimensions are unavailable */
29
+ defaultNodeWidth: number;
30
+ /** Fallback node height when measured dimensions are unavailable */
31
+ defaultNodeHeight: number;
23
32
  }
24
33
  /**
25
34
  * Compute node positions for an Agent Spec flow using layered layout.
35
+ * Takes actual node dimensions into account to prevent overlap.
26
36
  *
27
37
  * @param flow - The Agent Spec flow to layout
28
38
  * @param config - Optional layout configuration
39
+ * @param nodeDimensions - Optional map of node name to measured {width, height}
29
40
  * @returns Map of node name to {x, y} position
30
41
  */
31
- export declare function computeAutoLayout(flow: AgentSpecFlow, config?: Partial<AutoLayoutConfig>): Map<string, {
42
+ export declare function computeAutoLayout(flow: AgentSpecFlow, config?: Partial<AutoLayoutConfig>, nodeDimensions?: Map<string, NodeDimensions>): Map<string, {
43
+ x: number;
44
+ y: number;
45
+ }>;
46
+ /** Input position for beautify: existing node placement */
47
+ export interface NodePosition {
48
+ x: number;
49
+ y: number;
50
+ }
51
+ /** Beautify configuration */
52
+ export interface BeautifyLayoutConfig {
53
+ /** Minimum horizontal gap between the right edge of one column and the left edge of the next (px) */
54
+ horizontalGap: number;
55
+ /** Minimum vertical gap between the bottom edge of one node and the top edge of the next in the same column (px) */
56
+ verticalGap: number;
57
+ /** Fallback node width when measured dimensions are unavailable */
58
+ defaultNodeWidth: number;
59
+ /** Fallback node height when measured dimensions are unavailable */
60
+ defaultNodeHeight: number;
61
+ }
62
+ /**
63
+ * Beautify existing node positions: preserve relative column/row ordering
64
+ * but apply uniform spacing based on actual node dimensions.
65
+ *
66
+ * Algorithm:
67
+ * 1. Cluster nodes into columns by X proximity (gap threshold = median width)
68
+ * 2. Sort columns left-to-right by their median X
69
+ * 3. Within each column, sort nodes top-to-bottom by their original Y
70
+ * 4. Re-position with uniform horizontal and vertical gaps
71
+ *
72
+ * @param positions - Current node positions (keyed by node id)
73
+ * @param config - Optional spacing configuration
74
+ * @param nodeDimensions - Optional map of node id to measured {width, height}
75
+ * @returns Map of node id to new {x, y} position
76
+ */
77
+ export declare function computeBeautifyLayout(positions: Map<string, NodePosition>, config?: Partial<BeautifyLayoutConfig>, nodeDimensions?: Map<string, NodeDimensions>): Map<string, {
32
78
  x: number;
33
79
  y: number;
34
80
  }>;
@@ -10,36 +10,41 @@
10
10
  * 4. Fan out branches vertically from BranchingNode
11
11
  */
12
12
  const DEFAULT_CONFIG = {
13
- horizontalSpacing: 300,
14
- verticalSpacing: 150,
13
+ horizontalGap: 120,
14
+ verticalGap: 40,
15
15
  startX: 100,
16
16
  startY: 100,
17
+ defaultNodeWidth: 220,
18
+ defaultNodeHeight: 150
17
19
  };
18
20
  /**
19
21
  * Compute node positions for an Agent Spec flow using layered layout.
22
+ * Takes actual node dimensions into account to prevent overlap.
20
23
  *
21
24
  * @param flow - The Agent Spec flow to layout
22
25
  * @param config - Optional layout configuration
26
+ * @param nodeDimensions - Optional map of node name to measured {width, height}
23
27
  * @returns Map of node name to {x, y} position
24
28
  */
25
- export function computeAutoLayout(flow, config = {}) {
29
+ export function computeAutoLayout(flow, config = {}, nodeDimensions) {
26
30
  const cfg = { ...DEFAULT_CONFIG, ...config };
27
31
  const positions = new Map();
28
32
  if (flow.nodes.length === 0)
29
33
  return positions;
34
+ const getDims = (name) => nodeDimensions?.get(name) ?? {
35
+ width: cfg.defaultNodeWidth,
36
+ height: cfg.defaultNodeHeight
37
+ };
30
38
  // Build adjacency list from control-flow edges
31
39
  const adjacency = new Map();
32
- const inDegree = new Map();
33
40
  for (const node of flow.nodes) {
34
41
  adjacency.set(node.name, []);
35
- inDegree.set(node.name, 0);
36
42
  }
37
43
  for (const edge of flow.control_flow_connections) {
38
44
  const neighbors = adjacency.get(edge.from_node);
39
45
  if (neighbors) {
40
46
  neighbors.push(edge.to_node);
41
47
  }
42
- inDegree.set(edge.to_node, (inDegree.get(edge.to_node) || 0) + 1);
43
48
  }
44
49
  // Also consider data-flow edges for connectivity (but don't affect layering priority)
45
50
  if (flow.data_flow_connections) {
@@ -74,21 +79,116 @@ export function computeAutoLayout(flow, config = {}) {
74
79
  }
75
80
  // Sort layers and assign positions
76
81
  const sortedLayers = Array.from(layerGroups.keys()).sort((a, b) => a - b);
82
+ // Compute X positions layer by layer, using the widest node in each layer
83
+ const layerXPositions = new Map();
84
+ let currentX = cfg.startX;
77
85
  for (const layerIndex of sortedLayers) {
86
+ layerXPositions.set(layerIndex, currentX);
87
+ // Advance X by the widest node in this layer + horizontal gap
78
88
  const nodesInLayer = layerGroups.get(layerIndex);
79
- const x = cfg.startX + layerIndex * cfg.horizontalSpacing;
80
- // Center nodes vertically
81
- const totalHeight = (nodesInLayer.length - 1) * cfg.verticalSpacing;
82
- const startY = cfg.startY - totalHeight / 2;
89
+ const maxWidth = Math.max(...nodesInLayer.map((name) => getDims(name).width));
90
+ currentX += maxWidth + cfg.horizontalGap;
91
+ }
92
+ // Compute Y positions within each layer, using actual node heights
93
+ for (const layerIndex of sortedLayers) {
94
+ const nodesInLayer = layerGroups.get(layerIndex);
95
+ const x = layerXPositions.get(layerIndex);
96
+ // Calculate total height of this column (sum of node heights + gaps)
97
+ const heights = nodesInLayer.map((name) => getDims(name).height);
98
+ const totalHeight = heights.reduce((sum, h) => sum + h, 0) + (nodesInLayer.length - 1) * cfg.verticalGap;
99
+ // Center the column vertically around startY
100
+ let y = cfg.startY - totalHeight / 2;
83
101
  for (let i = 0; i < nodesInLayer.length; i++) {
84
- positions.set(nodesInLayer[i], {
85
- x,
86
- y: startY + i * cfg.verticalSpacing,
87
- });
102
+ positions.set(nodesInLayer[i], { x, y });
103
+ y += heights[i] + cfg.verticalGap;
88
104
  }
89
105
  }
90
106
  return positions;
91
107
  }
108
+ const DEFAULT_BEAUTIFY_CONFIG = {
109
+ horizontalGap: 120,
110
+ verticalGap: 40,
111
+ defaultNodeWidth: 220,
112
+ defaultNodeHeight: 150
113
+ };
114
+ /**
115
+ * Beautify existing node positions: preserve relative column/row ordering
116
+ * but apply uniform spacing based on actual node dimensions.
117
+ *
118
+ * Algorithm:
119
+ * 1. Cluster nodes into columns by X proximity (gap threshold = median width)
120
+ * 2. Sort columns left-to-right by their median X
121
+ * 3. Within each column, sort nodes top-to-bottom by their original Y
122
+ * 4. Re-position with uniform horizontal and vertical gaps
123
+ *
124
+ * @param positions - Current node positions (keyed by node id)
125
+ * @param config - Optional spacing configuration
126
+ * @param nodeDimensions - Optional map of node id to measured {width, height}
127
+ * @returns Map of node id to new {x, y} position
128
+ */
129
+ export function computeBeautifyLayout(positions, config = {}, nodeDimensions) {
130
+ const cfg = { ...DEFAULT_BEAUTIFY_CONFIG, ...config };
131
+ const result = new Map();
132
+ if (positions.size === 0)
133
+ return result;
134
+ const getDims = (id) => nodeDimensions?.get(id) ?? {
135
+ width: cfg.defaultNodeWidth,
136
+ height: cfg.defaultNodeHeight
137
+ };
138
+ // Collect all nodes sorted by X
139
+ const entries = Array.from(positions.entries()).map(([id, pos]) => ({
140
+ id,
141
+ x: pos.x,
142
+ y: pos.y
143
+ }));
144
+ entries.sort((a, b) => a.x - b.x);
145
+ // Determine clustering threshold: half the median node width
146
+ const widths = entries.map((e) => getDims(e.id).width);
147
+ const sortedWidths = [...widths].sort((a, b) => a - b);
148
+ const medianWidth = sortedWidths[Math.floor(sortedWidths.length / 2)];
149
+ const clusterThreshold = medianWidth * 0.75;
150
+ // Cluster into columns by X proximity
151
+ const columns = [];
152
+ let currentColumn = [entries[0]];
153
+ for (let i = 1; i < entries.length; i++) {
154
+ const prevX = currentColumn[currentColumn.length - 1].x;
155
+ if (entries[i].x - prevX > clusterThreshold) {
156
+ columns.push(currentColumn);
157
+ currentColumn = [entries[i]];
158
+ }
159
+ else {
160
+ currentColumn.push(entries[i]);
161
+ }
162
+ }
163
+ columns.push(currentColumn);
164
+ // Sort each column's nodes top-to-bottom by original Y
165
+ for (const col of columns) {
166
+ col.sort((a, b) => a.y - b.y);
167
+ }
168
+ // Compute the global vertical center from the original positions
169
+ const allYs = entries.map((e) => e.y);
170
+ const globalCenterY = (Math.min(...allYs) + Math.max(...allYs)) / 2;
171
+ // Assign new positions column by column
172
+ let currentX = entries[0].x; // Start from the leftmost original X
173
+ for (const col of columns) {
174
+ // Find the widest node in this column
175
+ const maxWidth = Math.max(...col.map((e) => getDims(e.id).width));
176
+ // Calculate total height of this column
177
+ const heights = col.map((e) => getDims(e.id).height);
178
+ const totalHeight = heights.reduce((sum, h) => sum + h, 0) + (col.length - 1) * cfg.verticalGap;
179
+ // Center column vertically around the global center
180
+ let y = globalCenterY - totalHeight / 2;
181
+ for (let i = 0; i < col.length; i++) {
182
+ result.set(col[i].id, { x: currentX, y });
183
+ y += heights[i] + cfg.verticalGap;
184
+ }
185
+ currentX += maxWidth + cfg.horizontalGap;
186
+ }
187
+ return result;
188
+ }
189
+ // ============================================================================
190
+ // Layer Assignment (for auto-layout)
191
+ // ============================================================================
92
192
  /**
93
193
  * Assign layers using longest path from the start node (modified BFS).
94
194
  * This ensures branching nodes fan out properly and convergence points
@@ -97,28 +197,23 @@ export function computeAutoLayout(flow, config = {}) {
97
197
  function assignLayers(startNode, adjacency, nodeCount) {
98
198
  const layers = new Map();
99
199
  layers.set(startNode, 0);
100
- // Use BFS but take the maximum layer for each node
101
- // (longest path ensures proper branching layout)
200
+ // Longest-path BFS: re-queue neighbors whenever their layer increases.
201
+ // This ensures convergence nodes (reached via multiple branches) are
202
+ // placed at the depth of the longest path, not the shortest.
102
203
  const queue = [startNode];
103
- const visited = new Set();
104
204
  let iterations = 0;
105
205
  const maxIterations = nodeCount * nodeCount + 100; // Safety limit for cycles
106
206
  while (queue.length > 0 && iterations < maxIterations) {
107
207
  iterations++;
108
208
  const current = queue.shift();
109
- if (visited.has(current))
110
- continue;
111
- visited.add(current);
112
209
  const currentLayer = layers.get(current) || 0;
113
210
  const neighbors = adjacency.get(current) || [];
114
211
  for (const neighbor of neighbors) {
115
212
  const existingLayer = layers.get(neighbor);
116
213
  const newLayer = currentLayer + 1;
117
- // Take the max layer (longest path)
214
+ // Only update and re-queue when we find a longer path
118
215
  if (existingLayer === undefined || newLayer > existingLayer) {
119
216
  layers.set(neighbor, newLayer);
120
- }
121
- if (!visited.has(neighbor)) {
122
217
  queue.push(neighbor);
123
218
  }
124
219
  }
@@ -8,7 +8,7 @@
8
8
  * Full node type definitions are user-provided via getDefaultAgentSpecNodeTypes()
9
9
  * or custom node arrays passed to mountFlowDropApp().
10
10
  */
11
- import type { NodePort } from "../../types/index.js";
11
+ import type { NodePort } from '../../types/index.js';
12
12
  /** Namespace prefix for Agent Spec node type IDs */
13
13
  export declare const AGENTSPEC_NAMESPACE = "agentspec";
14
14
  /** Standard trigger input port — control flow into a node */
@@ -12,187 +12,187 @@
12
12
  // Constants
13
13
  // ============================================================================
14
14
  /** Namespace prefix for Agent Spec node type IDs */
15
- export const AGENTSPEC_NAMESPACE = "agentspec";
15
+ export const AGENTSPEC_NAMESPACE = 'agentspec';
16
16
  // ============================================================================
17
17
  // Standard ports (adapter infrastructure)
18
18
  // ============================================================================
19
19
  /** Standard trigger input port — control flow into a node */
20
20
  export const TRIGGER_INPUT = {
21
- id: "trigger",
22
- name: "Trigger",
23
- type: "input",
24
- dataType: "trigger",
21
+ id: 'trigger',
22
+ name: 'Trigger',
23
+ type: 'input',
24
+ dataType: 'trigger',
25
25
  required: false,
26
- description: "Control flow input",
26
+ description: 'Control flow input'
27
27
  };
28
28
  /** Standard trigger output port — control flow out of a node */
29
29
  export const TRIGGER_OUTPUT = {
30
- id: "trigger",
31
- name: "Trigger",
32
- type: "output",
33
- dataType: "trigger",
30
+ id: 'trigger',
31
+ name: 'Trigger',
32
+ type: 'output',
33
+ dataType: 'trigger',
34
34
  required: false,
35
- description: "Control flow output",
35
+ description: 'Control flow output'
36
36
  };
37
37
  /** Tool input port for tool_node */
38
38
  const TOOL_INPUT = {
39
- id: "tool",
40
- name: "Tool",
41
- type: "input",
42
- dataType: "tool",
39
+ id: 'tool',
40
+ name: 'Tool',
41
+ type: 'input',
42
+ dataType: 'tool',
43
43
  required: false,
44
- description: "Tool connection",
44
+ description: 'Tool connection'
45
45
  };
46
46
  /** Tool output port for tool_node */
47
47
  const TOOL_OUTPUT = {
48
- id: "tool",
49
- name: "Tool",
50
- type: "output",
51
- dataType: "tool",
52
- description: "Tool passthrough",
48
+ id: 'tool',
49
+ name: 'Tool',
50
+ type: 'output',
51
+ dataType: 'tool',
52
+ description: 'Tool passthrough'
53
53
  };
54
54
  // ============================================================================
55
55
  // Defaults mapping
56
56
  // ============================================================================
57
57
  const COMPONENT_TYPE_DEFAULTS = new Map([
58
58
  [
59
- "start_node",
59
+ 'start_node',
60
60
  {
61
- visualType: "terminal",
62
- category: "triggers",
63
- color: "#22c55e",
64
- icon: "mdi:play-circle",
65
- badge: "START",
66
- defaultName: "Start",
67
- defaultDescription: "Flow entry point. Defines the initial inputs for the flow.",
61
+ visualType: 'terminal',
62
+ category: 'triggers',
63
+ color: '#22c55e',
64
+ icon: 'mdi:play-circle',
65
+ badge: 'START',
66
+ defaultName: 'Start',
67
+ defaultDescription: 'Flow entry point. Defines the initial inputs for the flow.',
68
68
  triggerInputs: [],
69
- triggerOutputs: [TRIGGER_OUTPUT],
70
- },
69
+ triggerOutputs: [TRIGGER_OUTPUT]
70
+ }
71
71
  ],
72
72
  [
73
- "end_node",
73
+ 'end_node',
74
74
  {
75
- visualType: "terminal",
76
- category: "outputs",
77
- color: "#ef4444",
78
- icon: "mdi:stop-circle",
79
- badge: "END",
80
- defaultName: "End",
81
- defaultDescription: "Flow exit point. Defines the final outputs of the flow.",
75
+ visualType: 'terminal',
76
+ category: 'outputs',
77
+ color: '#ef4444',
78
+ icon: 'mdi:stop-circle',
79
+ badge: 'END',
80
+ defaultName: 'End',
81
+ defaultDescription: 'Flow exit point. Defines the final outputs of the flow.',
82
82
  triggerInputs: [TRIGGER_INPUT],
83
- triggerOutputs: [],
84
- },
83
+ triggerOutputs: []
84
+ }
85
85
  ],
86
86
  [
87
- "llm_node",
87
+ 'llm_node',
88
88
  {
89
- visualType: "default",
90
- category: "ai",
91
- color: "#8b5cf6",
92
- icon: "mdi:brain",
93
- badge: "LLM",
94
- defaultName: "LLM",
95
- defaultDescription: "Generate text using a large language model with configurable prompts.",
89
+ visualType: 'default',
90
+ category: 'ai',
91
+ color: '#8b5cf6',
92
+ icon: 'mdi:brain',
93
+ badge: 'LLM',
94
+ defaultName: 'LLM',
95
+ defaultDescription: 'Generate text using a large language model with configurable prompts.',
96
96
  triggerInputs: [TRIGGER_INPUT],
97
- triggerOutputs: [TRIGGER_OUTPUT],
98
- },
97
+ triggerOutputs: [TRIGGER_OUTPUT]
98
+ }
99
99
  ],
100
100
  [
101
- "branching_node",
101
+ 'branching_node',
102
102
  {
103
- visualType: "gateway",
104
- category: "logic",
105
- color: "#f59e0b",
106
- icon: "mdi:source-branch",
107
- badge: "BRANCH",
108
- defaultName: "Branch",
109
- defaultDescription: "Route execution to different paths based on conditions.",
103
+ visualType: 'gateway',
104
+ category: 'logic',
105
+ color: '#f59e0b',
106
+ icon: 'mdi:source-branch',
107
+ badge: 'BRANCH',
108
+ defaultName: 'Branch',
109
+ defaultDescription: 'Route execution to different paths based on conditions.',
110
110
  triggerInputs: [TRIGGER_INPUT],
111
- triggerOutputs: [],
112
- },
111
+ triggerOutputs: []
112
+ }
113
113
  ],
114
114
  [
115
- "tool_node",
115
+ 'tool_node',
116
116
  {
117
- visualType: "tool",
118
- category: "tools",
119
- color: "#06b6d4",
120
- icon: "mdi:wrench",
121
- badge: "TOOL",
122
- defaultName: "Tool",
123
- defaultDescription: "Execute a tool function with inputs and receive outputs.",
117
+ visualType: 'tool',
118
+ category: 'tools',
119
+ color: '#06b6d4',
120
+ icon: 'mdi:wrench',
121
+ badge: 'TOOL',
122
+ defaultName: 'Tool',
123
+ defaultDescription: 'Execute a tool function with inputs and receive outputs.',
124
124
  triggerInputs: [TRIGGER_INPUT, TOOL_INPUT],
125
- triggerOutputs: [TRIGGER_OUTPUT, TOOL_OUTPUT],
126
- },
125
+ triggerOutputs: [TRIGGER_OUTPUT, TOOL_OUTPUT]
126
+ }
127
127
  ],
128
128
  [
129
- "api_node",
129
+ 'api_node',
130
130
  {
131
- visualType: "default",
132
- category: "data",
133
- color: "#3b82f6",
134
- icon: "mdi:api",
135
- badge: "API",
136
- defaultName: "API Call",
137
- defaultDescription: "Make an HTTP API call with configurable endpoint, method, and headers.",
131
+ visualType: 'default',
132
+ category: 'data',
133
+ color: '#3b82f6',
134
+ icon: 'mdi:api',
135
+ badge: 'API',
136
+ defaultName: 'API Call',
137
+ defaultDescription: 'Make an HTTP API call with configurable endpoint, method, and headers.',
138
138
  triggerInputs: [TRIGGER_INPUT],
139
- triggerOutputs: [TRIGGER_OUTPUT],
140
- },
139
+ triggerOutputs: [TRIGGER_OUTPUT]
140
+ }
141
141
  ],
142
142
  [
143
- "agent_node",
143
+ 'agent_node',
144
144
  {
145
- visualType: "default",
146
- category: "agents",
147
- color: "#ec4899",
148
- icon: "mdi:robot",
149
- badge: "AGENT",
150
- defaultName: "Agent",
151
- defaultDescription: "Run a multi-round agent conversation within the flow.",
145
+ visualType: 'default',
146
+ category: 'agents',
147
+ color: '#ec4899',
148
+ icon: 'mdi:robot',
149
+ badge: 'AGENT',
150
+ defaultName: 'Agent',
151
+ defaultDescription: 'Run a multi-round agent conversation within the flow.',
152
152
  triggerInputs: [TRIGGER_INPUT],
153
- triggerOutputs: [TRIGGER_OUTPUT],
154
- },
153
+ triggerOutputs: [TRIGGER_OUTPUT]
154
+ }
155
155
  ],
156
156
  [
157
- "flow_node",
157
+ 'flow_node',
158
158
  {
159
- visualType: "simple",
160
- category: "processing",
161
- color: "#14b8a6",
162
- icon: "mdi:sitemap",
163
- badge: "FLOW",
164
- defaultName: "Sub-Flow",
165
- defaultDescription: "Execute another flow as a sub-routine within this flow.",
159
+ visualType: 'simple',
160
+ category: 'processing',
161
+ color: '#14b8a6',
162
+ icon: 'mdi:sitemap',
163
+ badge: 'FLOW',
164
+ defaultName: 'Sub-Flow',
165
+ defaultDescription: 'Execute another flow as a sub-routine within this flow.',
166
166
  triggerInputs: [TRIGGER_INPUT],
167
- triggerOutputs: [TRIGGER_OUTPUT],
168
- },
167
+ triggerOutputs: [TRIGGER_OUTPUT]
168
+ }
169
169
  ],
170
170
  [
171
- "map_node",
171
+ 'map_node',
172
172
  {
173
- visualType: "default",
174
- category: "processing",
175
- color: "#f97316",
176
- icon: "mdi:map-marker-path",
177
- badge: "MAP",
178
- defaultName: "Map",
179
- defaultDescription: "Apply a flow or operation to each item in a collection (map-reduce).",
173
+ visualType: 'default',
174
+ category: 'processing',
175
+ color: '#f97316',
176
+ icon: 'mdi:map-marker-path',
177
+ badge: 'MAP',
178
+ defaultName: 'Map',
179
+ defaultDescription: 'Apply a flow or operation to each item in a collection (map-reduce).',
180
180
  triggerInputs: [TRIGGER_INPUT],
181
- triggerOutputs: [TRIGGER_OUTPUT],
182
- },
183
- ],
181
+ triggerOutputs: [TRIGGER_OUTPUT]
182
+ }
183
+ ]
184
184
  ]);
185
185
  /** Fallback defaults for unrecognized component types */
186
186
  const UNKNOWN_DEFAULTS = {
187
- visualType: "default",
188
- category: "processing",
189
- color: "#6b7280",
190
- icon: "mdi:puzzle",
191
- badge: "",
192
- defaultName: "Unknown",
193
- defaultDescription: "Agent Spec node",
187
+ visualType: 'default',
188
+ category: 'processing',
189
+ color: '#6b7280',
190
+ icon: 'mdi:puzzle',
191
+ badge: '',
192
+ defaultName: 'Unknown',
193
+ defaultDescription: 'Agent Spec node',
194
194
  triggerInputs: [TRIGGER_INPUT],
195
- triggerOutputs: [TRIGGER_OUTPUT],
195
+ triggerOutputs: [TRIGGER_OUTPUT]
196
196
  };
197
197
  // ============================================================================
198
198
  // Public API
@@ -18,8 +18,8 @@
18
18
  * });
19
19
  * ```
20
20
  */
21
- import type { NodeMetadata, NodePort } from "../../types/index.js";
22
- import type { AgentSpecNodeComponentType } from "../../types/agentspec.js";
21
+ import type { NodeMetadata, NodePort } from '../../types/index.js';
22
+ import type { AgentSpecNodeComponentType } from '../../types/agentspec.js';
23
23
  /**
24
24
  * Get FlowDrop NodeMetadata for an Agent Spec component type.
25
25
  *