@flowdrop/flowdrop 1.5.0 → 1.7.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 (435) hide show
  1. package/README.md +46 -47
  2. package/dist/adapters/WorkflowAdapter.d.ts +1 -1
  3. package/dist/adapters/WorkflowAdapter.js +26 -26
  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 +1 -1
  9. package/dist/adapters/agentspec/autoLayout.js +7 -9
  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.js +6 -6
  21. package/dist/chat/index.d.ts +5 -5
  22. package/dist/chat/index.js +4 -4
  23. package/dist/chat/responseParser.d.ts +6 -6
  24. package/dist/chat/responseParser.js +28 -24
  25. package/dist/commands/batch.d.ts +1 -1
  26. package/dist/commands/batch.js +5 -7
  27. package/dist/commands/executor.d.ts +2 -2
  28. package/dist/commands/executor.js +320 -231
  29. package/dist/commands/index.d.ts +6 -6
  30. package/dist/commands/index.js +5 -5
  31. package/dist/commands/parser.d.ts +1 -1
  32. package/dist/commands/parser.js +91 -74
  33. package/dist/commands/positioner.d.ts +2 -2
  34. package/dist/commands/positioner.js +1 -1
  35. package/dist/commands/storeIntegration.svelte.d.ts +2 -2
  36. package/dist/commands/storeIntegration.svelte.js +5 -5
  37. package/dist/commands/types.d.ts +42 -42
  38. package/dist/commands/types.js +2 -2
  39. package/dist/components/App.svelte +280 -303
  40. package/dist/components/App.svelte.d.ts +11 -9
  41. package/dist/components/CanvasBanner.stories.svelte +10 -16
  42. package/dist/components/CanvasBanner.stories.svelte.d.ts +1 -1
  43. package/dist/components/CanvasBanner.svelte +2 -2
  44. package/dist/components/CanvasBanner.svelte.d.ts +1 -1
  45. package/dist/components/CanvasController.svelte +3 -4
  46. package/dist/components/ConfigForm.svelte +118 -256
  47. package/dist/components/ConfigForm.svelte.d.ts +2 -2
  48. package/dist/components/ConfigMappingRow.svelte +7 -9
  49. package/dist/components/ConfigMappingRow.svelte.d.ts +1 -1
  50. package/dist/components/ConfigModal.svelte +3 -3
  51. package/dist/components/ConfigModal.svelte.d.ts +1 -1
  52. package/dist/components/ConfigPanel.stories.svelte +19 -19
  53. package/dist/components/ConfigPanel.stories.svelte.d.ts +1 -1
  54. package/dist/components/ConfigPanel.svelte +9 -20
  55. package/dist/components/ConfigPanel.svelte.d.ts +1 -1
  56. package/dist/components/ConnectionLine.svelte +4 -4
  57. package/dist/components/EdgeRefresher.svelte +1 -1
  58. package/dist/components/FlowDropEdge.stories.svelte +110 -110
  59. package/dist/components/FlowDropEdge.svelte +9 -9
  60. package/dist/components/FlowDropEdge.svelte.d.ts +1 -1
  61. package/dist/components/FlowDropZone.svelte +6 -9
  62. package/dist/components/FlowDropZone.svelte.d.ts +1 -1
  63. package/dist/components/LoadingSpinner.stories.svelte +13 -13
  64. package/dist/components/LoadingSpinner.stories.svelte.d.ts +1 -1
  65. package/dist/components/LoadingSpinner.svelte +3 -3
  66. package/dist/components/LoadingSpinner.svelte.d.ts +1 -1
  67. package/dist/components/Logo.stories.svelte +4 -4
  68. package/dist/components/Logo.stories.svelte.d.ts +1 -1
  69. package/dist/components/Logo.svelte +3 -9
  70. package/dist/components/LogsSidebar.svelte +41 -48
  71. package/dist/components/LogsSidebar.svelte.d.ts +1 -1
  72. package/dist/components/MarkdownDisplay.stories.svelte +10 -14
  73. package/dist/components/MarkdownDisplay.stories.svelte.d.ts +1 -1
  74. package/dist/components/MarkdownDisplay.svelte +4 -6
  75. package/dist/components/Navbar.stories.svelte +19 -19
  76. package/dist/components/Navbar.stories.svelte.d.ts +1 -1
  77. package/dist/components/Navbar.svelte +28 -49
  78. package/dist/components/Navbar.svelte.d.ts +2 -2
  79. package/dist/components/NodeSidebar.svelte +42 -88
  80. package/dist/components/NodeSidebar.svelte.d.ts +1 -1
  81. package/dist/components/NodeStatusOverlay.stories.svelte +19 -31
  82. package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +1 -1
  83. package/dist/components/NodeStatusOverlay.svelte +40 -55
  84. package/dist/components/NodeStatusOverlay.svelte.d.ts +3 -3
  85. package/dist/components/NodeSwapPicker.svelte +20 -64
  86. package/dist/components/NodeSwapPicker.svelte.d.ts +1 -1
  87. package/dist/components/PipelineStatus.svelte +63 -89
  88. package/dist/components/PipelineStatus.svelte.d.ts +4 -4
  89. package/dist/components/PortCoordinateTracker.svelte +5 -7
  90. package/dist/components/PortCoordinateTracker.svelte.d.ts +1 -1
  91. package/dist/components/PortMappingRow.svelte +20 -24
  92. package/dist/components/PortMappingRow.svelte.d.ts +2 -2
  93. package/dist/components/ReadOnlyDetails.svelte +1 -1
  94. package/dist/components/SchemaForm.stories.svelte +53 -53
  95. package/dist/components/SchemaForm.stories.svelte.d.ts +1 -1
  96. package/dist/components/SchemaForm.svelte +24 -51
  97. package/dist/components/SchemaForm.svelte.d.ts +2 -2
  98. package/dist/components/SettingsModal.svelte +6 -9
  99. package/dist/components/SettingsModal.svelte.d.ts +1 -1
  100. package/dist/components/SettingsPanel.svelte +138 -158
  101. package/dist/components/SettingsPanel.svelte.d.ts +1 -1
  102. package/dist/components/StatusIcon.stories.svelte +16 -29
  103. package/dist/components/StatusIcon.stories.svelte.d.ts +1 -1
  104. package/dist/components/StatusIcon.svelte +19 -19
  105. package/dist/components/StatusIcon.svelte.d.ts +2 -2
  106. package/dist/components/StatusLabel.stories.svelte +8 -8
  107. package/dist/components/StatusLabel.stories.svelte.d.ts +1 -1
  108. package/dist/components/SwapMappingEditor.svelte +35 -56
  109. package/dist/components/SwapMappingEditor.svelte.d.ts +2 -2
  110. package/dist/components/ThemeToggle.stories.svelte +10 -10
  111. package/dist/components/ThemeToggle.stories.svelte.d.ts +1 -1
  112. package/dist/components/ThemeToggle.svelte +22 -33
  113. package/dist/components/ThemeToggle.svelte.d.ts +1 -1
  114. package/dist/components/UniversalNode.svelte +29 -41
  115. package/dist/components/UniversalNode.svelte.d.ts +3 -3
  116. package/dist/components/WorkflowEditor.svelte +113 -168
  117. package/dist/components/WorkflowEditor.svelte.d.ts +4 -4
  118. package/dist/components/chat/AIChatPanel.svelte +272 -133
  119. package/dist/components/chat/AIChatPanel.svelte.d.ts +3 -3
  120. package/dist/components/chat/CommandPreview.svelte +74 -24
  121. package/dist/components/chat/CommandPreview.svelte.d.ts +1 -1
  122. package/dist/components/console/CommandConsole.stories.svelte +71 -53
  123. package/dist/components/console/CommandConsole.stories.svelte.d.ts +1 -1
  124. package/dist/components/console/CommandConsole.svelte +39 -35
  125. package/dist/components/console/CommandConsole.svelte.d.ts +2 -2
  126. package/dist/components/console/ConsoleAutocomplete.svelte +6 -3
  127. package/dist/components/console/ConsoleInput.svelte +148 -89
  128. package/dist/components/console/ConsoleInput.svelte.d.ts +1 -1
  129. package/dist/components/console/ConsoleOutput.svelte +5 -10
  130. package/dist/components/console/ConsoleOutput.svelte.d.ts +1 -1
  131. package/dist/components/console/formatters.d.ts +1 -1
  132. package/dist/components/console/formatters.js +27 -29
  133. package/dist/components/form/FormArray.svelte +75 -132
  134. package/dist/components/form/FormArray.svelte.d.ts +1 -1
  135. package/dist/components/form/FormAutocomplete.svelte +65 -108
  136. package/dist/components/form/FormAutocomplete.svelte.d.ts +1 -1
  137. package/dist/components/form/FormCheckboxGroup.stories.svelte +13 -16
  138. package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +1 -1
  139. package/dist/components/form/FormCheckboxGroup.svelte +2 -2
  140. package/dist/components/form/FormCodeEditor.svelte +46 -59
  141. package/dist/components/form/FormField.svelte +79 -90
  142. package/dist/components/form/FormField.svelte.d.ts +2 -2
  143. package/dist/components/form/FormFieldLight.svelte +72 -88
  144. package/dist/components/form/FormFieldLight.svelte.d.ts +1 -1
  145. package/dist/components/form/FormFieldWrapper.stories.svelte +14 -14
  146. package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +1 -1
  147. package/dist/components/form/FormFieldWrapper.svelte +2 -9
  148. package/dist/components/form/FormFieldWrapper.svelte.d.ts +1 -1
  149. package/dist/components/form/FormFieldset.svelte +3 -3
  150. package/dist/components/form/FormFieldset.svelte.d.ts +2 -2
  151. package/dist/components/form/FormMarkdownEditor.svelte +123 -156
  152. package/dist/components/form/FormNumberField.stories.svelte +18 -18
  153. package/dist/components/form/FormNumberField.stories.svelte.d.ts +1 -1
  154. package/dist/components/form/FormNumberField.svelte +6 -6
  155. package/dist/components/form/FormRangeField.stories.svelte +13 -13
  156. package/dist/components/form/FormRangeField.stories.svelte.d.ts +1 -1
  157. package/dist/components/form/FormRangeField.svelte +4 -12
  158. package/dist/components/form/FormSelect.stories.svelte +21 -21
  159. package/dist/components/form/FormSelect.stories.svelte.d.ts +1 -1
  160. package/dist/components/form/FormSelect.svelte +5 -5
  161. package/dist/components/form/FormSelect.svelte.d.ts +1 -1
  162. package/dist/components/form/FormTemplateEditor.svelte +126 -175
  163. package/dist/components/form/FormTemplateEditor.svelte.d.ts +1 -1
  164. package/dist/components/form/FormTextField.stories.svelte +17 -23
  165. package/dist/components/form/FormTextField.stories.svelte.d.ts +1 -1
  166. package/dist/components/form/FormTextField.svelte +4 -4
  167. package/dist/components/form/FormTextarea.stories.svelte +18 -21
  168. package/dist/components/form/FormTextarea.stories.svelte.d.ts +1 -1
  169. package/dist/components/form/FormTextarea.svelte +4 -4
  170. package/dist/components/form/FormToggle.stories.svelte +13 -16
  171. package/dist/components/form/FormToggle.stories.svelte.d.ts +1 -1
  172. package/dist/components/form/FormToggle.svelte +3 -3
  173. package/dist/components/form/FormUISchemaRenderer.svelte +12 -19
  174. package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +3 -3
  175. package/dist/components/form/index.d.ts +19 -19
  176. package/dist/components/form/index.js +18 -18
  177. package/dist/components/form/templateAutocomplete.d.ts +2 -2
  178. package/dist/components/form/templateAutocomplete.js +55 -64
  179. package/dist/components/form/types.d.ts +6 -6
  180. package/dist/components/form/types.js +4 -9
  181. package/dist/components/icons/AlertCircleIcon.svelte +1 -6
  182. package/dist/components/icons/CogIcon.svelte +1 -6
  183. package/dist/components/interrupt/ChoicePrompt.stories.svelte +27 -27
  184. package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +1 -1
  185. package/dist/components/interrupt/ChoicePrompt.svelte +17 -41
  186. package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +1 -1
  187. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +17 -17
  188. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +1 -1
  189. package/dist/components/interrupt/ConfirmationPrompt.svelte +10 -16
  190. package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +1 -1
  191. package/dist/components/interrupt/FormPrompt.svelte +10 -15
  192. package/dist/components/interrupt/FormPrompt.svelte.d.ts +1 -1
  193. package/dist/components/interrupt/InterruptBubble.svelte +87 -121
  194. package/dist/components/interrupt/InterruptBubble.svelte.d.ts +2 -2
  195. package/dist/components/interrupt/ReviewPrompt.stories.svelte +37 -37
  196. package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +1 -1
  197. package/dist/components/interrupt/ReviewPrompt.svelte +55 -75
  198. package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +1 -1
  199. package/dist/components/interrupt/TextInputPrompt.stories.svelte +16 -17
  200. package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +1 -1
  201. package/dist/components/interrupt/TextInputPrompt.svelte +13 -18
  202. package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +1 -1
  203. package/dist/components/interrupt/index.d.ts +6 -6
  204. package/dist/components/interrupt/index.js +6 -6
  205. package/dist/components/layouts/MainLayout.svelte +46 -84
  206. package/dist/components/layouts/MainLayout.svelte.d.ts +6 -6
  207. package/dist/components/nodes/GatewayNode.stories.svelte +64 -65
  208. package/dist/components/nodes/GatewayNode.svelte +37 -70
  209. package/dist/components/nodes/GatewayNode.svelte.d.ts +3 -3
  210. package/dist/components/nodes/IdeaNode.stories.svelte +25 -26
  211. package/dist/components/nodes/IdeaNode.svelte +22 -36
  212. package/dist/components/nodes/IdeaNode.svelte.d.ts +1 -1
  213. package/dist/components/nodes/NotesNode.stories.svelte +37 -38
  214. package/dist/components/nodes/NotesNode.svelte +28 -39
  215. package/dist/components/nodes/NotesNode.svelte.d.ts +1 -1
  216. package/dist/components/nodes/SimpleNode.stories.svelte +137 -138
  217. package/dist/components/nodes/SimpleNode.svelte +51 -81
  218. package/dist/components/nodes/SimpleNode.svelte.d.ts +1 -1
  219. package/dist/components/nodes/SquareNode.stories.svelte +75 -75
  220. package/dist/components/nodes/SquareNode.svelte +42 -68
  221. package/dist/components/nodes/SquareNode.svelte.d.ts +1 -1
  222. package/dist/components/nodes/TerminalNode.stories.svelte +10 -10
  223. package/dist/components/nodes/TerminalNode.svelte +74 -112
  224. package/dist/components/nodes/TerminalNode.svelte.d.ts +1 -1
  225. package/dist/components/nodes/ToolNode.stories.svelte +115 -116
  226. package/dist/components/nodes/ToolNode.svelte +31 -64
  227. package/dist/components/nodes/ToolNode.svelte.d.ts +1 -1
  228. package/dist/components/nodes/WorkflowNode.stories.svelte +84 -89
  229. package/dist/components/nodes/WorkflowNode.svelte +50 -103
  230. package/dist/components/nodes/WorkflowNode.svelte.d.ts +3 -3
  231. package/dist/components/playground/ChatPanel.svelte +47 -103
  232. package/dist/components/playground/ExecutionLogs.svelte +45 -68
  233. package/dist/components/playground/InputCollector.svelte +32 -51
  234. package/dist/components/playground/MessageBubble.stories.svelte +25 -25
  235. package/dist/components/playground/MessageBubble.stories.svelte.d.ts +1 -1
  236. package/dist/components/playground/MessageBubble.svelte +54 -70
  237. package/dist/components/playground/MessageBubble.svelte.d.ts +1 -1
  238. package/dist/components/playground/Playground.svelte +60 -91
  239. package/dist/components/playground/Playground.svelte.d.ts +3 -3
  240. package/dist/components/playground/PlaygroundModal.svelte +8 -12
  241. package/dist/components/playground/PlaygroundModal.svelte.d.ts +3 -3
  242. package/dist/components/playground/SessionManager.svelte +34 -40
  243. package/dist/components/playground/SessionManager.svelte.d.ts +1 -1
  244. package/dist/config/agentSpecEndpoints.d.ts +1 -1
  245. package/dist/config/agentSpecEndpoints.js +20 -20
  246. package/dist/config/constants.js +2 -2
  247. package/dist/config/defaultCategories.d.ts +1 -1
  248. package/dist/config/defaultCategories.js +86 -86
  249. package/dist/config/defaultPortConfig.d.ts +1 -1
  250. package/dist/config/defaultPortConfig.js +144 -144
  251. package/dist/config/endpoints.d.ts +4 -4
  252. package/dist/config/endpoints.js +68 -68
  253. package/dist/config/runtimeConfig.d.ts +2 -2
  254. package/dist/config/runtimeConfig.js +8 -8
  255. package/dist/core/index.d.ts +68 -68
  256. package/dist/core/index.js +38 -38
  257. package/dist/display/index.d.ts +2 -2
  258. package/dist/display/index.js +2 -2
  259. package/dist/editor/index.d.ts +64 -64
  260. package/dist/editor/index.js +54 -54
  261. package/dist/form/code.d.ts +5 -5
  262. package/dist/form/code.js +14 -14
  263. package/dist/form/fieldRegistry.d.ts +3 -3
  264. package/dist/form/fieldRegistry.js +9 -11
  265. package/dist/form/full.d.ts +8 -8
  266. package/dist/form/full.js +9 -9
  267. package/dist/form/index.d.ts +18 -18
  268. package/dist/form/index.js +16 -16
  269. package/dist/form/markdown.d.ts +4 -4
  270. package/dist/form/markdown.js +8 -8
  271. package/dist/helpers/proximityConnect.d.ts +3 -3
  272. package/dist/helpers/proximityConnect.js +32 -34
  273. package/dist/helpers/workflowEditorHelper.d.ts +6 -6
  274. package/dist/helpers/workflowEditorHelper.js +64 -68
  275. package/dist/index.d.ts +6 -6
  276. package/dist/index.js +6 -6
  277. package/dist/mocks/app-environment.js +2 -2
  278. package/dist/mocks/app-forms.js +1 -1
  279. package/dist/mocks/app-navigation.js +2 -2
  280. package/dist/mocks/app-stores.js +3 -3
  281. package/dist/playground/index.d.ts +19 -19
  282. package/dist/playground/index.js +16 -16
  283. package/dist/playground/mount.d.ts +3 -3
  284. package/dist/playground/mount.js +24 -24
  285. package/dist/registry/builtinFormats.js +13 -13
  286. package/dist/registry/builtinNodes.d.ts +2 -2
  287. package/dist/registry/builtinNodes.js +77 -77
  288. package/dist/registry/index.d.ts +4 -4
  289. package/dist/registry/index.js +4 -4
  290. package/dist/registry/nodeComponentRegistry.d.ts +8 -8
  291. package/dist/registry/nodeComponentRegistry.js +9 -11
  292. package/dist/registry/plugin.d.ts +2 -2
  293. package/dist/registry/plugin.js +11 -11
  294. package/dist/registry/workflowFormatRegistry.d.ts +3 -3
  295. package/dist/registry/workflowFormatRegistry.js +2 -2
  296. package/dist/schema/index.d.ts +1 -1
  297. package/dist/schema/index.js +2 -2
  298. package/dist/schemas/v1/workflow.schema.json +5 -0
  299. package/dist/services/agentSpecExecutionService.d.ts +3 -3
  300. package/dist/services/agentSpecExecutionService.js +55 -56
  301. package/dist/services/api.d.ts +2 -2
  302. package/dist/services/api.js +37 -37
  303. package/dist/services/apiVariableService.d.ts +1 -1
  304. package/dist/services/apiVariableService.js +34 -41
  305. package/dist/services/autoSaveService.js +8 -8
  306. package/dist/services/categoriesApi.d.ts +2 -2
  307. package/dist/services/categoriesApi.js +8 -8
  308. package/dist/services/chatService.d.ts +1 -1
  309. package/dist/services/chatService.js +18 -18
  310. package/dist/services/draftStorage.d.ts +1 -1
  311. package/dist/services/draftStorage.js +11 -11
  312. package/dist/services/dynamicSchemaService.d.ts +1 -1
  313. package/dist/services/dynamicSchemaService.js +39 -41
  314. package/dist/services/globalSave.d.ts +2 -2
  315. package/dist/services/globalSave.js +38 -41
  316. package/dist/services/historyService.d.ts +1 -1
  317. package/dist/services/historyService.js +10 -10
  318. package/dist/services/interruptService.d.ts +1 -1
  319. package/dist/services/interruptService.js +29 -35
  320. package/dist/services/nodeExecutionService.d.ts +1 -1
  321. package/dist/services/nodeExecutionService.js +44 -45
  322. package/dist/services/playgroundService.d.ts +1 -1
  323. package/dist/services/playgroundService.js +29 -29
  324. package/dist/services/portConfigApi.d.ts +2 -2
  325. package/dist/services/portConfigApi.js +8 -8
  326. package/dist/services/settingsService.d.ts +2 -2
  327. package/dist/services/settingsService.js +19 -25
  328. package/dist/services/toastService.d.ts +4 -4
  329. package/dist/services/toastService.js +33 -33
  330. package/dist/services/variableService.d.ts +1 -1
  331. package/dist/services/variableService.js +36 -36
  332. package/dist/services/workflowStorage.d.ts +2 -2
  333. package/dist/services/workflowStorage.js +13 -13
  334. package/dist/settings/index.d.ts +7 -7
  335. package/dist/settings/index.js +6 -6
  336. package/dist/skins/default.d.ts +1 -1
  337. package/dist/skins/default.js +1 -1
  338. package/dist/skins/index.d.ts +3 -3
  339. package/dist/skins/index.js +7 -7
  340. package/dist/skins/slate.d.ts +1 -1
  341. package/dist/skins/slate.js +69 -69
  342. package/dist/stores/categoriesStore.svelte.d.ts +1 -1
  343. package/dist/stores/categoriesStore.svelte.js +5 -5
  344. package/dist/stores/editorStateMachine.svelte.d.ts +2 -2
  345. package/dist/stores/editorStateMachine.svelte.js +34 -34
  346. package/dist/stores/historyStore.svelte.d.ts +4 -4
  347. package/dist/stores/historyStore.svelte.js +4 -4
  348. package/dist/stores/interruptStore.svelte.d.ts +3 -3
  349. package/dist/stores/interruptStore.svelte.js +21 -21
  350. package/dist/stores/playgroundStore.svelte.d.ts +2 -2
  351. package/dist/stores/playgroundStore.svelte.js +18 -21
  352. package/dist/stores/portCoordinateStore.svelte.d.ts +2 -2
  353. package/dist/stores/portCoordinateStore.svelte.js +10 -13
  354. package/dist/stores/settingsStore.svelte.d.ts +2 -2
  355. package/dist/stores/settingsStore.svelte.js +57 -62
  356. package/dist/stores/workflowStore.svelte.d.ts +4 -3
  357. package/dist/stores/workflowStore.svelte.js +47 -47
  358. package/dist/stories/CanvasDecorator.svelte +7 -10
  359. package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
  360. package/dist/stories/EdgeDecorator.svelte +28 -31
  361. package/dist/stories/EdgeDecorator.svelte.d.ts +1 -1
  362. package/dist/stories/NodeDecorator.svelte +14 -20
  363. package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
  364. package/dist/stories/utils.d.ts +2 -2
  365. package/dist/stories/utils.js +89 -93
  366. package/dist/styles/base.css +16 -50
  367. package/dist/styles/tokens.css +10 -28
  368. package/dist/svelte-app.d.ts +10 -10
  369. package/dist/svelte-app.js +39 -39
  370. package/dist/themes/default.d.ts +1 -1
  371. package/dist/themes/default.js +4 -4
  372. package/dist/themes/index.d.ts +3 -3
  373. package/dist/themes/index.js +11 -11
  374. package/dist/themes/minimal.d.ts +1 -1
  375. package/dist/themes/minimal.js +5 -5
  376. package/dist/types/agentspec.d.ts +18 -18
  377. package/dist/types/agentspec.js +2 -2
  378. package/dist/types/auth.d.ts +1 -1
  379. package/dist/types/auth.js +6 -6
  380. package/dist/types/chat.d.ts +2 -2
  381. package/dist/types/config.d.ts +6 -6
  382. package/dist/types/events.d.ts +3 -3
  383. package/dist/types/events.js +2 -2
  384. package/dist/types/index.d.ts +34 -32
  385. package/dist/types/index.js +6 -6
  386. package/dist/types/interrupt.d.ts +6 -6
  387. package/dist/types/interrupt.js +21 -21
  388. package/dist/types/interruptState.d.ts +12 -12
  389. package/dist/types/interruptState.js +66 -66
  390. package/dist/types/playground.d.ts +7 -7
  391. package/dist/types/playground.js +14 -14
  392. package/dist/types/settings.d.ts +7 -5
  393. package/dist/types/settings.js +19 -24
  394. package/dist/types/skin.d.ts +1 -1
  395. package/dist/types/theme.d.ts +2 -2
  396. package/dist/types/uischema.d.ts +4 -4
  397. package/dist/types/uischema.js +3 -3
  398. package/dist/utils/colors.d.ts +1 -1
  399. package/dist/utils/colors.js +95 -97
  400. package/dist/utils/config.d.ts +2 -2
  401. package/dist/utils/config.js +48 -48
  402. package/dist/utils/connections.d.ts +6 -2
  403. package/dist/utils/connections.js +21 -15
  404. package/dist/utils/edgeStyling.d.ts +2 -2
  405. package/dist/utils/edgeStyling.js +36 -39
  406. package/dist/utils/errors.js +3 -3
  407. package/dist/utils/fetchWithAuth.d.ts +1 -1
  408. package/dist/utils/fetchWithAuth.js +2 -2
  409. package/dist/utils/handleIds.d.ts +2 -2
  410. package/dist/utils/handleIds.js +8 -8
  411. package/dist/utils/handlePositioning.d.ts +1 -1
  412. package/dist/utils/handlePositioning.js +2 -2
  413. package/dist/utils/icons.d.ts +1 -1
  414. package/dist/utils/icons.js +74 -74
  415. package/dist/utils/logger.d.ts +1 -1
  416. package/dist/utils/logger.js +7 -7
  417. package/dist/utils/nodeIds.d.ts +1 -1
  418. package/dist/utils/nodeIds.js +1 -1
  419. package/dist/utils/nodeStatus.d.ts +1 -1
  420. package/dist/utils/nodeStatus.js +48 -48
  421. package/dist/utils/nodeSwap.d.ts +9 -9
  422. package/dist/utils/nodeSwap.js +52 -58
  423. package/dist/utils/nodeTypes.d.ts +1 -1
  424. package/dist/utils/nodeTypes.js +20 -21
  425. package/dist/utils/nodeWrapper.d.ts +7 -7
  426. package/dist/utils/nodeWrapper.js +19 -21
  427. package/dist/utils/performanceUtils.d.ts +1 -1
  428. package/dist/utils/performanceUtils.js +1 -2
  429. package/dist/utils/portUtils.d.ts +2 -2
  430. package/dist/utils/portUtils.js +1 -1
  431. package/dist/utils/sanitize.js +1 -1
  432. package/dist/utils/uischema.d.ts +2 -2
  433. package/dist/utils/uischema.js +8 -8
  434. package/dist/utils/validation.js +8 -8
  435. package/package.json +7 -11
@@ -13,60 +13,54 @@
13
13
  BackgroundVariant,
14
14
  MiniMap,
15
15
  SvelteFlowProvider,
16
- type ColorMode,
17
- } from "@xyflow/svelte";
18
- import "@xyflow/svelte/dist/style.css";
16
+ type ColorMode
17
+ } from '@xyflow/svelte';
18
+ import '@xyflow/svelte/dist/style.css';
19
19
  import {
20
20
  getResolvedTheme,
21
21
  getEditorSettings,
22
- getBehaviorSettings,
23
- } from "../stores/settingsStore.svelte.js";
22
+ getBehaviorSettings
23
+ } from '../stores/settingsStore.svelte.js';
24
24
  import type {
25
25
  WorkflowNode as WorkflowNodeType,
26
26
  NodeMetadata,
27
27
  Workflow,
28
- WorkflowEdge,
29
- } from "../types/index.js";
30
- import CanvasBanner from "./CanvasBanner.svelte";
31
- import CanvasController from "./CanvasController.svelte";
32
- import FlowDropZone from "./FlowDropZone.svelte";
33
- import EdgeRefresher from "./EdgeRefresher.svelte";
34
- import { tick, untrack } from "svelte";
35
- import type { EndpointConfig } from "../config/endpoints.js";
36
- import ConnectionLine from "./ConnectionLine.svelte";
37
- import FlowDropEdge from "./FlowDropEdge.svelte";
38
- import {
39
- getWorkflowStore,
40
- workflowActions,
41
- } from "../stores/workflowStore.svelte.js";
42
- import {
43
- historyActions,
44
- setOnRestoreCallback,
45
- } from "../stores/historyStore.svelte.js";
46
- import UniversalNode from "./UniversalNode.svelte";
28
+ WorkflowEdge
29
+ } from '../types/index.js';
30
+ import CanvasBanner from './CanvasBanner.svelte';
31
+ import CanvasController from './CanvasController.svelte';
32
+ import FlowDropZone from './FlowDropZone.svelte';
33
+ import EdgeRefresher from './EdgeRefresher.svelte';
34
+ import { tick, untrack } from 'svelte';
35
+ import type { EndpointConfig } from '../config/endpoints.js';
36
+ import ConnectionLine from './ConnectionLine.svelte';
37
+ import FlowDropEdge from './FlowDropEdge.svelte';
38
+ import { getWorkflowStore, workflowActions } from '../stores/workflowStore.svelte.js';
39
+ import { historyActions, setOnRestoreCallback } from '../stores/historyStore.svelte.js';
40
+ import UniversalNode from './UniversalNode.svelte';
47
41
  import {
48
42
  EdgeStylingHelper,
49
43
  NodeOperationsHelper,
50
44
  WorkflowOperationsHelper,
51
- ConfigurationHelper,
52
- } from "../helpers/workflowEditorHelper.js";
53
- import type { NodeExecutionInfo } from "../types/index.js";
54
- import { Toaster } from "svelte-5-french-toast";
45
+ ConfigurationHelper
46
+ } from '../helpers/workflowEditorHelper.js';
47
+ import type { NodeExecutionInfo } from '../types/index.js';
48
+ import { Toaster } from 'svelte-5-french-toast';
55
49
  import {
56
50
  flowdropToastOptions,
57
51
  FLOWDROP_TOASTER_CLASS,
58
- apiToasts,
59
- } from "../services/toastService.js";
52
+ apiToasts
53
+ } from '../services/toastService.js';
60
54
  import {
61
55
  ProximityConnectHelper,
62
- type ProximityEdgeCandidate,
63
- } from "../helpers/proximityConnect.js";
64
- import PortCoordinateTracker from "./PortCoordinateTracker.svelte";
65
- import { getPortCoordinateSnapshot } from "../stores/portCoordinateStore.svelte.js";
66
- import { logger } from "../utils/logger.js";
67
- import { validateWorkflowData } from "../utils/validation.js";
68
- import { createEditorStateMachine } from "../stores/editorStateMachine.svelte.js";
69
- import Icon from "@iconify/svelte";
56
+ type ProximityEdgeCandidate
57
+ } from '../helpers/proximityConnect.js';
58
+ import PortCoordinateTracker from './PortCoordinateTracker.svelte';
59
+ import { getPortCoordinateSnapshot } from '../stores/portCoordinateStore.svelte.js';
60
+ import { logger } from '../utils/logger.js';
61
+ import { validateWorkflowData } from '../utils/validation.js';
62
+ import { createEditorStateMachine } from '../stores/editorStateMachine.svelte.js';
63
+ import Icon from '@iconify/svelte';
70
64
 
71
65
  interface Props {
72
66
  nodes?: NodeMetadata[];
@@ -80,10 +74,7 @@
80
74
  // New configuration options for pipeline status mode
81
75
  lockWorkflow?: boolean;
82
76
  readOnly?: boolean;
83
- nodeStatuses?: Record<
84
- string,
85
- "pending" | "running" | "completed" | "error"
86
- >;
77
+ nodeStatuses?: Record<string, 'pending' | 'running' | 'completed' | 'error'>;
87
78
  // Pipeline ID for fetching node execution info from jobs
88
79
  pipelineId?: string;
89
80
  // Console toggle
@@ -130,18 +121,15 @@
130
121
  * Key for SvelteFlow component — changes when workflow ID changes.
131
122
  * Forces SvelteFlow to remount with fresh state, allowing fitView to work correctly.
132
123
  */
133
- let svelteFlowKey = $derived(getWorkflowStore()?.id ?? "default");
124
+ let svelteFlowKey = $derived(getWorkflowStore()?.id ?? 'default');
134
125
 
135
126
  /**
136
127
  * Derive snap grid configuration from editor settings
137
128
  */
138
129
  let snapGrid = $derived(
139
130
  getEditorSettings().snapToGrid
140
- ? ([getEditorSettings().gridSize, getEditorSettings().gridSize] as [
141
- number,
142
- number,
143
- ])
144
- : undefined,
131
+ ? ([getEditorSettings().gridSize, getEditorSettings().gridSize] as [number, number])
132
+ : undefined
145
133
  );
146
134
 
147
135
  /**
@@ -150,7 +138,7 @@
150
138
  let initialViewport = $derived({
151
139
  zoom: getEditorSettings().defaultZoom,
152
140
  x: 0,
153
- y: 0,
141
+ y: 0
154
142
  });
155
143
 
156
144
  // ---------------------------------------------------------------------------
@@ -164,13 +152,10 @@
164
152
  ...node,
165
153
  data: {
166
154
  ...node.data,
167
- onConfigOpen: props.openConfigSidebar,
168
- },
155
+ onConfigOpen: props.openConfigSidebar
156
+ }
169
157
  }));
170
- const styledEdges = EdgeStylingHelper.updateEdgeStyles(
171
- workflow.edges,
172
- nodesWithCallbacks,
173
- );
158
+ const styledEdges = EdgeStylingHelper.updateEdgeStyles(workflow.edges, nodesWithCallbacks);
174
159
  return { nodes: nodesWithCallbacks, edges: styledEdges };
175
160
  }
176
161
 
@@ -183,7 +168,7 @@
183
168
  const updatedWorkflow = WorkflowOperationsHelper.updateWorkflow(
184
169
  storeValue,
185
170
  flowNodes,
186
- flowEdges,
171
+ flowEdges
187
172
  );
188
173
  workflowActions.updateWorkflow(updatedWorkflow);
189
174
  }
@@ -206,7 +191,7 @@
206
191
  flowNodes = [];
207
192
  flowEdges = [];
208
193
  previousSyncedWorkflowId = null;
209
- untrack(() => machine.send("WORKFLOW_CLEARED"));
194
+ untrack(() => machine.send('WORKFLOW_CLEARED'));
210
195
  }
211
196
  return;
212
197
  }
@@ -215,9 +200,7 @@
215
200
 
216
201
  if (isNewWorkflow) {
217
202
  untrack(() =>
218
- machine.send(
219
- previousSyncedWorkflowId ? "WORKFLOW_SWITCHED" : "WORKFLOW_LOADED",
220
- ),
203
+ machine.send(previousSyncedWorkflowId ? 'WORKFLOW_SWITCHED' : 'WORKFLOW_LOADED')
221
204
  );
222
205
  }
223
206
 
@@ -233,7 +216,7 @@
233
216
  }
234
217
 
235
218
  if (isNewWorkflow) {
236
- untrack(() => machine.send("LOAD_COMPLETE"));
219
+ untrack(() => machine.send('LOAD_COMPLETE'));
237
220
  }
238
221
  });
239
222
 
@@ -268,12 +251,12 @@
268
251
  }
269
252
 
270
253
  // Schedule loading with requestIdleCallback (falls back to setTimeout)
271
- if (typeof requestIdleCallback !== "undefined") {
254
+ if (typeof requestIdleCallback !== 'undefined') {
272
255
  loadExecutionInfoTimeout = requestIdleCallback(
273
256
  () => {
274
257
  loadNodeExecutionInfo();
275
258
  },
276
- { timeout: 500 },
259
+ { timeout: 500 }
277
260
  ) as unknown as number;
278
261
  } else {
279
262
  loadExecutionInfoTimeout = setTimeout(() => {
@@ -287,14 +270,14 @@
287
270
  // ---------------------------------------------------------------------------
288
271
  $effect(() => {
289
272
  setOnRestoreCallback((restoredWorkflow: Workflow) => {
290
- machine.send("START_RESTORE");
273
+ machine.send('START_RESTORE');
291
274
  // Update the store (effect is suppressed during 'restoring')
292
275
  workflowActions.restoreFromHistory(restoredWorkflow);
293
276
  // Derive flowNodes/flowEdges directly for immediate visual update
294
277
  const derived = buildFlowNodesFromStore(restoredWorkflow);
295
278
  flowNodes = derived.nodes;
296
279
  flowEdges = derived.edges;
297
- machine.send("RESTORE_COMPLETE");
280
+ machine.send('RESTORE_COMPLETE');
298
281
  // After RESTORE_COMPLETE → idle, the sync effect runs but produces
299
282
  // the same data (no-op re-derive).
300
283
  });
@@ -316,15 +299,15 @@
316
299
 
317
300
  const executionInfo = await NodeOperationsHelper.loadNodeExecutionInfo(
318
301
  workflow,
319
- props.pipelineId,
302
+ props.pipelineId
320
303
  );
321
304
 
322
305
  if (executionInfoAbortController?.signal.aborted) return;
323
306
 
324
307
  const defaultExecutionInfo: NodeExecutionInfo = {
325
- status: "idle" as const,
308
+ status: 'idle' as const,
326
309
  executionCount: 0,
327
- isExecuting: false,
310
+ isExecuting: false
328
311
  };
329
312
 
330
313
  // Update flowNodes with execution info (visual-only, no store sync needed)
@@ -332,14 +315,14 @@
332
315
  ...node,
333
316
  data: {
334
317
  ...node.data,
335
- executionInfo: executionInfo[node.id] || defaultExecutionInfo,
336
- },
318
+ executionInfo: executionInfo[node.id] || defaultExecutionInfo
319
+ }
337
320
  }));
338
321
 
339
322
  executionInfoAbortController = null;
340
323
  } catch (error) {
341
- if (error instanceof Error && error.name !== "AbortError") {
342
- logger.error("Failed to load node execution info:", error);
324
+ if (error instanceof Error && error.name !== 'AbortError') {
325
+ logger.error('Failed to load node execution info:', error);
343
326
  }
344
327
  }
345
328
  }
@@ -351,12 +334,12 @@
351
334
  // Node types for Svelte Flow - using UniversalNode for all node types
352
335
  // All nodes use 'universalNode' type, and UniversalNode handles internal switching
353
336
  const nodeTypes = {
354
- universalNode: UniversalNode,
337
+ universalNode: UniversalNode
355
338
  };
356
339
 
357
340
  // Use custom edge that shortens the path so the stroke ends at the arrow base
358
341
  const edgeTypes = {
359
- default: FlowDropEdge,
342
+ default: FlowDropEdge
360
343
  };
361
344
 
362
345
  // Handle arrows in our custom connection handler
@@ -370,7 +353,7 @@
370
353
  * position updates. SvelteFlow mutates flowNodes directly via bind:nodes.
371
354
  */
372
355
  function handleNodeDragStart(): void {
373
- machine.send("START_DRAG");
356
+ machine.send('START_DRAG');
374
357
  // Clear any leftover proximity previews
375
358
  currentProximityCandidates = [];
376
359
  }
@@ -381,7 +364,7 @@
381
364
  * Uses port-to-port distance via the port coordinate store.
382
365
  */
383
366
  function handleNodeDrag({
384
- targetNode,
367
+ targetNode
385
368
  }: {
386
369
  targetNode: WorkflowNodeType | null;
387
370
  nodes: WorkflowNodeType[];
@@ -415,13 +398,13 @@
415
398
  targetNode.id,
416
399
  portCoordinates,
417
400
  baseEdges,
418
- getEditorSettings().proximityConnectDistance,
401
+ getEditorSettings().proximityConnectDistance
419
402
  )
420
403
  : ProximityConnectHelper.findCompatibleEdges(
421
404
  targetNode,
422
405
  flowNodes,
423
406
  baseEdges,
424
- getEditorSettings().proximityConnectDistance,
407
+ getEditorSettings().proximityConnectDistance
425
408
  );
426
409
 
427
410
  // Create preview edges
@@ -442,24 +425,17 @@
442
425
  portCoordNodeToUpdate = null;
443
426
 
444
427
  // Finalize proximity connect if there are candidates
445
- if (
446
- getEditorSettings().proximityConnect &&
447
- currentProximityCandidates.length > 0
448
- ) {
428
+ if (getEditorSettings().proximityConnect && currentProximityCandidates.length > 0) {
449
429
  const baseEdges = ProximityConnectHelper.removePreviewEdges(flowEdges);
450
430
  const permanentEdges = ProximityConnectHelper.createPermanentEdges(
451
- currentProximityCandidates,
431
+ currentProximityCandidates
452
432
  );
453
433
 
454
434
  for (const edge of permanentEdges) {
455
435
  const sourceNode = flowNodes.find((n) => n.id === edge.source);
456
436
  const targetNode = flowNodes.find((n) => n.id === edge.target);
457
437
  if (sourceNode && targetNode) {
458
- EdgeStylingHelper.applyConnectionStyling(
459
- edge,
460
- sourceNode,
461
- targetNode,
462
- );
438
+ EdgeStylingHelper.applyConnectionStyling(edge, sourceNode, targetNode);
463
439
  }
464
440
  }
465
441
 
@@ -473,11 +449,11 @@
473
449
  // Push history AFTER the drag completed
474
450
  const storeValue = getWorkflowStore();
475
451
  if (storeValue) {
476
- workflowActions.pushHistory("Move node", storeValue);
452
+ workflowActions.pushHistory('Move node', storeValue);
477
453
  }
478
454
 
479
455
  // Transition to idle — sync effect is now unblocked
480
- machine.send("STOP_DRAG");
456
+ machine.send('STOP_DRAG');
481
457
  }
482
458
 
483
459
  /**
@@ -489,7 +465,7 @@
489
465
  sourceHandle?: string;
490
466
  targetHandle?: string;
491
467
  }): Promise<void> {
492
- machine.send("START_CONNECT");
468
+ machine.send('START_CONNECT');
493
469
 
494
470
  // SvelteFlow auto-creates the edge via bind:edges — wait for DOM update
495
471
  await tick();
@@ -502,10 +478,10 @@
502
478
 
503
479
  const storeValue = getWorkflowStore();
504
480
  if (storeValue) {
505
- workflowActions.pushHistory("Add connection", storeValue);
481
+ workflowActions.pushHistory('Add connection', storeValue);
506
482
  }
507
483
 
508
- machine.send("CONNECTION_MADE");
484
+ machine.send('CONNECTION_MADE');
509
485
  }
510
486
 
511
487
  /**
@@ -527,17 +503,17 @@
527
503
  const edgeCount = params.edges.length;
528
504
 
529
505
  // Build a descriptive message
530
- let message = "Are you sure you want to delete ";
506
+ let message = 'Are you sure you want to delete ';
531
507
  const parts: string[] = [];
532
508
 
533
509
  if (nodeCount > 0) {
534
- parts.push(`${nodeCount} node${nodeCount > 1 ? "s" : ""}`);
510
+ parts.push(`${nodeCount} node${nodeCount > 1 ? 's' : ''}`);
535
511
  }
536
512
  if (edgeCount > 0) {
537
- parts.push(`${edgeCount} connection${edgeCount > 1 ? "s" : ""}`);
513
+ parts.push(`${edgeCount} connection${edgeCount > 1 ? 's' : ''}`);
538
514
  }
539
515
 
540
- message += parts.join(" and ") + "?";
516
+ message += parts.join(' and ') + '?';
541
517
 
542
518
  // Show native confirmation dialog
543
519
  const confirmed = window.confirm(message);
@@ -554,18 +530,14 @@
554
530
  /**
555
531
  * Handle node deletion - automatically remove connected edges and push to history
556
532
  */
557
- function handleNodesDelete(params: {
558
- nodes: WorkflowNodeType[];
559
- edges: WorkflowEdge[];
560
- }): void {
561
- machine.send("START_DELETE");
533
+ function handleNodesDelete(params: { nodes: WorkflowNodeType[]; edges: WorkflowEdge[] }): void {
534
+ machine.send('START_DELETE');
562
535
 
563
536
  const deletedNodeIds = new Set(params.nodes.map((node) => node.id));
564
537
 
565
538
  // Filter out edges connected to deleted nodes
566
539
  flowEdges = flowEdges.filter(
567
- (edge) =>
568
- !deletedNodeIds.has(edge.source) && !deletedNodeIds.has(edge.target),
540
+ (edge) => !deletedNodeIds.has(edge.source) && !deletedNodeIds.has(edge.target)
569
541
  );
570
542
 
571
543
  // Sync to store
@@ -574,20 +546,20 @@
574
546
  // Push to history AFTER the deletion so undo restores the previous state
575
547
  const nodeCount = params.nodes.length;
576
548
  const edgeCount = params.edges.length;
577
- let description = "Delete";
549
+ let description = 'Delete';
578
550
  if (nodeCount > 0 && edgeCount > 0) {
579
- description = `Delete ${nodeCount} node${nodeCount > 1 ? "s" : ""} and ${edgeCount} connection${edgeCount > 1 ? "s" : ""}`;
551
+ description = `Delete ${nodeCount} node${nodeCount > 1 ? 's' : ''} and ${edgeCount} connection${edgeCount > 1 ? 's' : ''}`;
580
552
  } else if (nodeCount > 0) {
581
- description = `Delete ${nodeCount} node${nodeCount > 1 ? "s" : ""}`;
553
+ description = `Delete ${nodeCount} node${nodeCount > 1 ? 's' : ''}`;
582
554
  } else if (edgeCount > 0) {
583
- description = `Delete ${edgeCount} connection${edgeCount > 1 ? "s" : ""}`;
555
+ description = `Delete ${edgeCount} connection${edgeCount > 1 ? 's' : ''}`;
584
556
  }
585
557
  const storeValue = getWorkflowStore();
586
558
  if (storeValue) {
587
559
  workflowActions.pushHistory(description, storeValue);
588
560
  }
589
561
 
590
- machine.send("DELETE_COMPLETE");
562
+ machine.send('DELETE_COMPLETE');
591
563
  }
592
564
 
593
565
  // Edge styling will be handled when edges are first created or manually updated
@@ -613,21 +585,17 @@
613
585
  */
614
586
  async function handleNodeDrop(
615
587
  nodeTypeData: string,
616
- position: { x: number; y: number },
588
+ position: { x: number; y: number }
617
589
  ): Promise<void> {
618
- machine.send("START_DROP");
590
+ machine.send('START_DROP');
619
591
 
620
- const newNode = NodeOperationsHelper.createNodeFromDrop(
621
- nodeTypeData,
622
- position,
623
- flowNodes,
624
- );
592
+ const newNode = NodeOperationsHelper.createNodeFromDrop(nodeTypeData, position, flowNodes);
625
593
 
626
594
  if (newNode) {
627
595
  // Add onConfigOpen callback and append to flowNodes for immediate visual feedback
628
596
  const nodeWithCallback = {
629
597
  ...newNode,
630
- data: { ...newNode.data, onConfigOpen: props.openConfigSidebar },
598
+ data: { ...newNode.data, onConfigOpen: props.openConfigSidebar }
631
599
  };
632
600
  flowNodes = [...flowNodes, nodeWithCallback];
633
601
 
@@ -638,13 +606,13 @@
638
606
 
639
607
  const storeValue = getWorkflowStore();
640
608
  if (storeValue) {
641
- workflowActions.pushHistory("Add node", storeValue);
609
+ workflowActions.pushHistory('Add node', storeValue);
642
610
  }
643
611
  } else {
644
- logger.warn("Failed to create node from drop data");
612
+ logger.warn('Failed to create node from drop data');
645
613
  }
646
614
 
647
- machine.send("DROP_COMPLETE");
615
+ machine.send('DROP_COMPLETE');
648
616
  }
649
617
 
650
618
  /**
@@ -658,34 +626,27 @@
658
626
  reader.onload = (event) => {
659
627
  try {
660
628
  const text = event.target?.result;
661
- if (typeof text !== "string") {
662
- throw new Error("Could not read file contents.");
629
+ if (typeof text !== 'string') {
630
+ throw new Error('Could not read file contents.');
663
631
  }
664
632
  const data = JSON.parse(text);
665
633
  const validation = validateWorkflowData(data);
666
634
  if (!validation.valid) {
667
- apiToasts.error(
668
- "Import workflow",
669
- validation.error ?? "Invalid workflow JSON",
670
- );
671
- logger.warn(
672
- "Workflow file drop validation failed:",
673
- validation.error,
674
- );
635
+ apiToasts.error('Import workflow', validation.error ?? 'Invalid workflow JSON');
636
+ logger.warn('Workflow file drop validation failed:', validation.error);
675
637
  return;
676
638
  }
677
639
  workflowActions.initialize(data as Workflow);
678
640
  } catch (error) {
679
- const errorObj =
680
- error instanceof Error ? error : new Error("Unknown error occurred");
681
- logger.error("Workflow file drop import failed:", errorObj);
682
- apiToasts.error("Import workflow", errorObj.message);
641
+ const errorObj = error instanceof Error ? error : new Error('Unknown error occurred');
642
+ logger.error('Workflow file drop import failed:', errorObj);
643
+ apiToasts.error('Import workflow', errorObj.message);
683
644
  }
684
645
  };
685
646
  reader.onerror = () => {
686
- const message = "Failed to read the dropped file.";
647
+ const message = 'Failed to read the dropped file.';
687
648
  logger.error(message);
688
- apiToasts.error("Import workflow", message);
649
+ apiToasts.error('Import workflow', message);
689
650
  };
690
651
  reader.readAsText(file);
691
652
  }
@@ -709,9 +670,9 @@
709
670
  */
710
671
  export function updateNodeData(
711
672
  nodeId: string,
712
- dataUpdates: Partial<WorkflowNodeType["data"]>,
673
+ dataUpdates: Partial<WorkflowNodeType['data']>
713
674
  ): void {
714
- machine.send("START_NODE_UPDATE");
675
+ machine.send('START_NODE_UPDATE');
715
676
 
716
677
  flowNodes = flowNodes.map((node) => {
717
678
  if (node.id === nodeId) {
@@ -719,14 +680,14 @@
719
680
  ...node,
720
681
  data: {
721
682
  ...node.data,
722
- ...dataUpdates,
723
- },
683
+ ...dataUpdates
684
+ }
724
685
  };
725
686
  }
726
687
  return node;
727
688
  });
728
689
 
729
- machine.send("UPDATE_COMPLETE");
690
+ machine.send('UPDATE_COMPLETE');
730
691
  }
731
692
 
732
693
  /**
@@ -794,23 +755,21 @@
794
755
  // Don't handle shortcuts if user is typing in an input, textarea, or contenteditable
795
756
  const target = event.target as HTMLElement;
796
757
  const isInputElement =
797
- target.tagName === "INPUT" ||
798
- target.tagName === "TEXTAREA" ||
799
- target.isContentEditable;
758
+ target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable;
800
759
 
801
760
  if (isInputElement) {
802
761
  return;
803
762
  }
804
763
 
805
764
  // Undo: Ctrl+Z (without Shift)
806
- if (event.key === "z" && !event.shiftKey) {
765
+ if (event.key === 'z' && !event.shiftKey) {
807
766
  event.preventDefault();
808
767
  historyActions.undo();
809
768
  return;
810
769
  }
811
770
 
812
771
  // Redo: Ctrl+Shift+Z or Ctrl+Y
813
- if ((event.key === "z" && event.shiftKey) || event.key === "y") {
772
+ if ((event.key === 'z' && event.shiftKey) || event.key === 'y') {
814
773
  event.preventDefault();
815
774
  historyActions.redo();
816
775
  return;
@@ -825,10 +784,7 @@
825
784
  <CanvasController bind:this={canvasControllerRef} />
826
785
 
827
786
  <!-- EdgeRefresher component - handles updateNodeInternals calls -->
828
- <EdgeRefresher
829
- {nodeIdToRefresh}
830
- onRefreshComplete={handleEdgeRefreshComplete}
831
- />
787
+ <EdgeRefresher {nodeIdToRefresh} onRefreshComplete={handleEdgeRefreshComplete} />
832
788
 
833
789
  <!-- Port Coordinate Tracker - maintains port positions for proximity connect -->
834
790
  <PortCoordinateTracker
@@ -842,10 +798,7 @@
842
798
  <div class="flowdrop-workflow-editor__main">
843
799
  <!-- Flow Canvas -->
844
800
  <div class="flowdrop-canvas">
845
- <FlowDropZone
846
- ondrop={handleNodeDrop}
847
- onfiledrop={handleWorkflowFileDrop}
848
- >
801
+ <FlowDropZone ondrop={handleNodeDrop} onfiledrop={handleWorkflowFileDrop}>
849
802
  {#key svelteFlowKey}
850
803
  <SvelteFlow
851
804
  bind:nodes={flowNodes}
@@ -858,7 +811,7 @@
858
811
  source: connection.source,
859
812
  target: connection.target,
860
813
  sourceHandle: connection.sourceHandle ?? undefined,
861
- targetHandle: connection.targetHandle ?? undefined,
814
+ targetHandle: connection.targetHandle ?? undefined
862
815
  })}
863
816
  onbeforedelete={handleBeforeDelete}
864
817
  ondelete={handleNodesDelete}
@@ -894,9 +847,7 @@
894
847
  gap={getEditorSettings().gridSize}
895
848
  bgColor="var(--fd-background)"
896
849
  variant={BackgroundVariant.Dots}
897
- patternColor={getEditorSettings().showGrid
898
- ? undefined
899
- : "transparent"}
850
+ patternColor={getEditorSettings().showGrid ? undefined : 'transparent'}
900
851
  />
901
852
  {#if getEditorSettings().showMinimap}
902
853
  <MiniMap />
@@ -937,18 +888,14 @@
937
888
  <div class="flowdrop-status-bar" aria-live="polite" aria-atomic="true">
938
889
  <div class="flowdrop-status-bar__content">
939
890
  <div class="flowdrop-flex flowdrop-gap--4">
940
- <span class="flowdrop-text--xs flowdrop-text--gray"
941
- >{flowNodes.length} nodes</span
942
- >
891
+ <span class="flowdrop-text--xs flowdrop-text--gray">{flowNodes.length} nodes</span>
943
892
  <span class="flowdrop-text--xs flowdrop-text--gray">•</span>
944
- <span class="flowdrop-text--xs flowdrop-text--gray"
945
- >{flowEdges.length} connections</span
893
+ <span class="flowdrop-text--xs flowdrop-text--gray">{flowEdges.length} connections</span
946
894
  >
947
895
 
948
896
  {#if hasCycles}
949
897
  <span class="flowdrop-text--xs flowdrop-text--gray">•</span>
950
- <span
951
- class="flowdrop-text--xs flowdrop-font--medium flowdrop-text--error"
898
+ <span class="flowdrop-text--xs flowdrop-font--medium flowdrop-text--error"
952
899
  >⚠️ Cycles detected</span
953
900
  >
954
901
  {/if}
@@ -1085,9 +1032,7 @@
1085
1032
  :global(.flowdrop-workflow-editor .svelte-flow__edge.selected) {
1086
1033
  stroke: var(--fd-primary) !important;
1087
1034
  stroke-width: 3 !important;
1088
- filter: drop-shadow(
1089
- 0 0 4px color-mix(in srgb, var(--fd-primary) 50%, transparent)
1090
- );
1035
+ filter: drop-shadow(0 0 4px color-mix(in srgb, var(--fd-primary) 50%, transparent));
1091
1036
  }
1092
1037
 
1093
1038
  :global(.flowdrop-workflow-editor .svelte-flow__edge.selected path) {
@@ -1,6 +1,6 @@
1
- import "@xyflow/svelte/dist/style.css";
2
- import type { WorkflowNode as WorkflowNodeType, NodeMetadata } from "../types/index.js";
3
- import type { EndpointConfig } from "../config/endpoints.js";
1
+ import '@xyflow/svelte/dist/style.css';
2
+ import type { WorkflowNode as WorkflowNodeType, NodeMetadata } from '../types/index.js';
3
+ import type { EndpointConfig } from '../config/endpoints.js';
4
4
  interface Props {
5
5
  nodes?: NodeMetadata[];
6
6
  endpointConfig?: EndpointConfig;
@@ -12,7 +12,7 @@ interface Props {
12
12
  closeConfigSidebar?: () => void;
13
13
  lockWorkflow?: boolean;
14
14
  readOnly?: boolean;
15
- nodeStatuses?: Record<string, "pending" | "running" | "completed" | "error">;
15
+ nodeStatuses?: Record<string, 'pending' | 'running' | 'completed' | 'error'>;
16
16
  pipelineId?: string;
17
17
  consoleOpen?: boolean;
18
18
  onToggleConsole?: () => void;