@flowdrop/flowdrop 1.0.1 → 1.1.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 (386) hide show
  1. package/README.md +50 -50
  2. package/dist/adapters/WorkflowAdapter.d.ts +1 -1
  3. package/dist/adapters/WorkflowAdapter.js +25 -25
  4. package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +2 -2
  5. package/dist/adapters/agentspec/AgentSpecAdapter.js +133 -122
  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 +2 -2
  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 +22 -20
  18. package/dist/api/enhanced-client.d.ts +3 -3
  19. package/dist/api/enhanced-client.js +73 -72
  20. package/dist/components/App.svelte +1081 -961
  21. package/dist/components/App.svelte.d.ts +9 -6
  22. package/dist/components/CanvasBanner.stories.svelte +23 -20
  23. package/dist/components/CanvasBanner.stories.svelte.d.ts +1 -1
  24. package/dist/components/CanvasBanner.svelte +46 -46
  25. package/dist/components/ConfigForm.svelte +1164 -1065
  26. package/dist/components/ConfigForm.svelte.d.ts +2 -2
  27. package/dist/components/ConfigModal.svelte +180 -180
  28. package/dist/components/ConfigModal.svelte.d.ts +1 -1
  29. package/dist/components/ConfigPanel.stories.svelte +35 -35
  30. package/dist/components/ConfigPanel.stories.svelte.d.ts +1 -1
  31. package/dist/components/ConfigPanel.svelte +178 -167
  32. package/dist/components/ConfigPanel.svelte.d.ts +1 -1
  33. package/dist/components/ConnectionLine.svelte +25 -25
  34. package/dist/components/EdgeRefresher.svelte +26 -26
  35. package/dist/components/FlowDropEdge.stories.svelte +179 -143
  36. package/dist/components/FlowDropEdge.svelte +147 -147
  37. package/dist/components/FlowDropEdge.svelte.d.ts +1 -1
  38. package/dist/components/FlowDropZone.svelte +63 -60
  39. package/dist/components/FlowDropZone.svelte.d.ts +1 -1
  40. package/dist/components/LoadingSpinner.stories.svelte +19 -19
  41. package/dist/components/LoadingSpinner.stories.svelte.d.ts +1 -1
  42. package/dist/components/LoadingSpinner.svelte +21 -21
  43. package/dist/components/LoadingSpinner.svelte.d.ts +1 -1
  44. package/dist/components/Logo.stories.svelte +13 -13
  45. package/dist/components/Logo.stories.svelte.d.ts +1 -1
  46. package/dist/components/Logo.svelte +101 -95
  47. package/dist/components/LogsSidebar.svelte +553 -546
  48. package/dist/components/LogsSidebar.svelte.d.ts +1 -1
  49. package/dist/components/MarkdownDisplay.stories.svelte +29 -23
  50. package/dist/components/MarkdownDisplay.stories.svelte.d.ts +1 -1
  51. package/dist/components/MarkdownDisplay.svelte +16 -14
  52. package/dist/components/Navbar.stories.svelte +43 -38
  53. package/dist/components/Navbar.stories.svelte.d.ts +1 -1
  54. package/dist/components/Navbar.svelte +760 -706
  55. package/dist/components/Navbar.svelte.d.ts +1 -1
  56. package/dist/components/NodeSidebar.svelte +900 -746
  57. package/dist/components/NodeSidebar.svelte.d.ts +3 -1
  58. package/dist/components/NodeStatusOverlay.stories.svelte +82 -70
  59. package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +1 -1
  60. package/dist/components/NodeStatusOverlay.svelte +295 -280
  61. package/dist/components/NodeStatusOverlay.svelte.d.ts +3 -3
  62. package/dist/components/PipelineStatus.svelte +326 -300
  63. package/dist/components/PipelineStatus.svelte.d.ts +4 -4
  64. package/dist/components/PortCoordinateTracker.svelte +49 -47
  65. package/dist/components/PortCoordinateTracker.svelte.d.ts +1 -1
  66. package/dist/components/ReadOnlyDetails.svelte +156 -156
  67. package/dist/components/SchemaForm.stories.svelte +106 -98
  68. package/dist/components/SchemaForm.stories.svelte.d.ts +1 -1
  69. package/dist/components/SchemaForm.svelte +490 -463
  70. package/dist/components/SchemaForm.svelte.d.ts +2 -2
  71. package/dist/components/SettingsModal.svelte +226 -223
  72. package/dist/components/SettingsModal.svelte.d.ts +1 -1
  73. package/dist/components/SettingsPanel.svelte +637 -601
  74. package/dist/components/SettingsPanel.svelte.d.ts +1 -1
  75. package/dist/components/StatusIcon.stories.svelte +62 -49
  76. package/dist/components/StatusIcon.stories.svelte.d.ts +1 -1
  77. package/dist/components/StatusIcon.svelte +87 -87
  78. package/dist/components/StatusIcon.svelte.d.ts +2 -2
  79. package/dist/components/StatusLabel.stories.svelte +12 -12
  80. package/dist/components/StatusLabel.stories.svelte.d.ts +1 -1
  81. package/dist/components/StatusLabel.svelte +19 -19
  82. package/dist/components/ThemeToggle.stories.svelte +16 -16
  83. package/dist/components/ThemeToggle.stories.svelte.d.ts +1 -1
  84. package/dist/components/ThemeToggle.svelte +180 -169
  85. package/dist/components/ThemeToggle.svelte.d.ts +1 -1
  86. package/dist/components/UniversalNode.svelte +150 -138
  87. package/dist/components/UniversalNode.svelte.d.ts +3 -3
  88. package/dist/components/WorkflowEditor.svelte +1069 -1014
  89. package/dist/components/WorkflowEditor.svelte.d.ts +4 -4
  90. package/dist/components/form/FormArray.svelte +1034 -973
  91. package/dist/components/form/FormArray.svelte.d.ts +1 -1
  92. package/dist/components/form/FormAutocomplete.svelte +1021 -978
  93. package/dist/components/form/FormAutocomplete.svelte.d.ts +1 -1
  94. package/dist/components/form/FormCheckboxGroup.stories.svelte +23 -20
  95. package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +1 -1
  96. package/dist/components/form/FormCheckboxGroup.svelte +136 -136
  97. package/dist/components/form/FormCodeEditor.svelte +452 -434
  98. package/dist/components/form/FormField.svelte +366 -355
  99. package/dist/components/form/FormField.svelte.d.ts +2 -2
  100. package/dist/components/form/FormFieldLight.svelte +400 -384
  101. package/dist/components/form/FormFieldLight.svelte.d.ts +1 -1
  102. package/dist/components/form/FormFieldWrapper.stories.svelte +42 -42
  103. package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +1 -1
  104. package/dist/components/form/FormFieldWrapper.svelte +100 -93
  105. package/dist/components/form/FormFieldWrapper.svelte.d.ts +1 -1
  106. package/dist/components/form/FormFieldset.svelte +108 -108
  107. package/dist/components/form/FormFieldset.svelte.d.ts +2 -2
  108. package/dist/components/form/FormMarkdownEditor.svelte +758 -725
  109. package/dist/components/form/FormNumberField.stories.svelte +25 -25
  110. package/dist/components/form/FormNumberField.stories.svelte.d.ts +1 -1
  111. package/dist/components/form/FormNumberField.svelte +88 -88
  112. package/dist/components/form/FormRangeField.stories.svelte +20 -20
  113. package/dist/components/form/FormRangeField.stories.svelte.d.ts +1 -1
  114. package/dist/components/form/FormRangeField.svelte +234 -226
  115. package/dist/components/form/FormSelect.stories.svelte +38 -38
  116. package/dist/components/form/FormSelect.stories.svelte.d.ts +1 -1
  117. package/dist/components/form/FormSelect.svelte +101 -101
  118. package/dist/components/form/FormSelect.svelte.d.ts +1 -1
  119. package/dist/components/form/FormTemplateEditor.svelte +847 -798
  120. package/dist/components/form/FormTemplateEditor.svelte.d.ts +1 -1
  121. package/dist/components/form/FormTextField.stories.svelte +29 -23
  122. package/dist/components/form/FormTextField.stories.svelte.d.ts +1 -1
  123. package/dist/components/form/FormTextField.svelte +68 -68
  124. package/dist/components/form/FormTextarea.stories.svelte +28 -25
  125. package/dist/components/form/FormTextarea.stories.svelte.d.ts +1 -1
  126. package/dist/components/form/FormTextarea.svelte +74 -74
  127. package/dist/components/form/FormToggle.stories.svelte +23 -20
  128. package/dist/components/form/FormToggle.stories.svelte.d.ts +1 -1
  129. package/dist/components/form/FormToggle.svelte +98 -98
  130. package/dist/components/form/FormUISchemaRenderer.svelte +120 -113
  131. package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +3 -3
  132. package/dist/components/form/index.d.ts +19 -19
  133. package/dist/components/form/index.js +18 -18
  134. package/dist/components/form/templateAutocomplete.d.ts +2 -2
  135. package/dist/components/form/templateAutocomplete.js +64 -55
  136. package/dist/components/form/types.d.ts +6 -6
  137. package/dist/components/form/types.js +9 -4
  138. package/dist/components/icons/AlertCircleIcon.svelte +11 -0
  139. package/dist/components/icons/AlertCircleIcon.svelte.d.ts +26 -0
  140. package/dist/components/icons/CogIcon.svelte +11 -0
  141. package/dist/components/icons/CogIcon.svelte.d.ts +26 -0
  142. package/dist/components/interrupt/ChoicePrompt.stories.svelte +54 -38
  143. package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +1 -1
  144. package/dist/components/interrupt/ChoicePrompt.svelte +407 -383
  145. package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +1 -1
  146. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +48 -48
  147. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +1 -1
  148. package/dist/components/interrupt/ConfirmationPrompt.svelte +280 -274
  149. package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +1 -1
  150. package/dist/components/interrupt/FormPrompt.svelte +223 -218
  151. package/dist/components/interrupt/FormPrompt.svelte.d.ts +1 -1
  152. package/dist/components/interrupt/InterruptBubble.svelte +617 -583
  153. package/dist/components/interrupt/InterruptBubble.svelte.d.ts +2 -2
  154. package/dist/components/interrupt/ReviewPrompt.stories.svelte +66 -56
  155. package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +1 -1
  156. package/dist/components/interrupt/ReviewPrompt.svelte +861 -841
  157. package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +1 -1
  158. package/dist/components/interrupt/TextInputPrompt.stories.svelte +38 -33
  159. package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +1 -1
  160. package/dist/components/interrupt/TextInputPrompt.svelte +333 -328
  161. package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +1 -1
  162. package/dist/components/interrupt/index.d.ts +5 -5
  163. package/dist/components/interrupt/index.js +5 -5
  164. package/dist/components/layouts/MainLayout.svelte +724 -691
  165. package/dist/components/layouts/MainLayout.svelte.d.ts +6 -6
  166. package/dist/components/nodes/GatewayNode.stories.svelte +100 -99
  167. package/dist/components/nodes/GatewayNode.svelte +605 -571
  168. package/dist/components/nodes/GatewayNode.svelte.d.ts +3 -3
  169. package/dist/components/nodes/IdeaNode.stories.svelte +44 -43
  170. package/dist/components/nodes/IdeaNode.svelte +451 -437
  171. package/dist/components/nodes/IdeaNode.svelte.d.ts +1 -1
  172. package/dist/components/nodes/NotesNode.stories.svelte +65 -64
  173. package/dist/components/nodes/NotesNode.svelte +380 -369
  174. package/dist/components/nodes/NotesNode.svelte.d.ts +1 -1
  175. package/dist/components/nodes/SimpleNode.stories.svelte +145 -144
  176. package/dist/components/nodes/SimpleNode.svelte +486 -424
  177. package/dist/components/nodes/SimpleNode.svelte.d.ts +1 -1
  178. package/dist/components/nodes/SquareNode.stories.svelte +73 -73
  179. package/dist/components/nodes/SquareNode.svelte +439 -380
  180. package/dist/components/nodes/SquareNode.svelte.d.ts +1 -1
  181. package/dist/components/nodes/TerminalNode.stories.svelte +13 -13
  182. package/dist/components/nodes/TerminalNode.svelte +709 -670
  183. package/dist/components/nodes/TerminalNode.svelte.d.ts +1 -1
  184. package/dist/components/nodes/ToolNode.stories.svelte +181 -180
  185. package/dist/components/nodes/ToolNode.svelte +505 -447
  186. package/dist/components/nodes/ToolNode.svelte.d.ts +1 -1
  187. package/dist/components/nodes/WorkflowNode.stories.svelte +70 -46
  188. package/dist/components/nodes/WorkflowNode.svelte +621 -551
  189. package/dist/components/nodes/WorkflowNode.svelte.d.ts +3 -3
  190. package/dist/components/playground/ChatPanel.svelte +945 -889
  191. package/dist/components/playground/ExecutionLogs.svelte +495 -472
  192. package/dist/components/playground/InputCollector.svelte +449 -428
  193. package/dist/components/playground/MessageBubble.stories.svelte +47 -47
  194. package/dist/components/playground/MessageBubble.stories.svelte.d.ts +1 -1
  195. package/dist/components/playground/MessageBubble.svelte +626 -610
  196. package/dist/components/playground/MessageBubble.svelte.d.ts +1 -1
  197. package/dist/components/playground/Playground.svelte +1088 -1057
  198. package/dist/components/playground/Playground.svelte.d.ts +3 -3
  199. package/dist/components/playground/PlaygroundModal.svelte +208 -204
  200. package/dist/components/playground/PlaygroundModal.svelte.d.ts +3 -3
  201. package/dist/components/playground/SessionManager.svelte +527 -521
  202. package/dist/components/playground/SessionManager.svelte.d.ts +1 -1
  203. package/dist/config/agentSpecEndpoints.d.ts +1 -1
  204. package/dist/config/agentSpecEndpoints.js +20 -20
  205. package/dist/config/constants.js +2 -2
  206. package/dist/config/defaultCategories.d.ts +1 -1
  207. package/dist/config/defaultCategories.js +86 -86
  208. package/dist/config/defaultPortConfig.d.ts +1 -1
  209. package/dist/config/defaultPortConfig.js +144 -144
  210. package/dist/config/endpoints.d.ts +4 -4
  211. package/dist/config/endpoints.js +65 -65
  212. package/dist/config/runtimeConfig.d.ts +2 -2
  213. package/dist/config/runtimeConfig.js +8 -8
  214. package/dist/core/index.d.ts +63 -59
  215. package/dist/core/index.js +35 -33
  216. package/dist/display/index.d.ts +2 -2
  217. package/dist/display/index.js +2 -2
  218. package/dist/editor/index.d.ts +62 -62
  219. package/dist/editor/index.js +53 -53
  220. package/dist/form/code.d.ts +5 -5
  221. package/dist/form/code.js +14 -14
  222. package/dist/form/fieldRegistry.d.ts +3 -3
  223. package/dist/form/fieldRegistry.js +11 -9
  224. package/dist/form/full.d.ts +8 -8
  225. package/dist/form/full.js +9 -9
  226. package/dist/form/index.d.ts +18 -18
  227. package/dist/form/index.js +16 -16
  228. package/dist/form/markdown.d.ts +4 -4
  229. package/dist/form/markdown.js +8 -8
  230. package/dist/helpers/proximityConnect.d.ts +3 -3
  231. package/dist/helpers/proximityConnect.js +34 -32
  232. package/dist/helpers/workflowEditorHelper.d.ts +5 -5
  233. package/dist/helpers/workflowEditorHelper.js +108 -96
  234. package/dist/index.d.ts +6 -6
  235. package/dist/index.js +6 -6
  236. package/dist/mocks/app-environment.js +2 -2
  237. package/dist/mocks/app-forms.js +9 -9
  238. package/dist/mocks/app-navigation.js +11 -11
  239. package/dist/mocks/app-stores.js +8 -8
  240. package/dist/playground/index.d.ts +19 -19
  241. package/dist/playground/index.js +16 -16
  242. package/dist/playground/mount.d.ts +3 -3
  243. package/dist/playground/mount.js +24 -24
  244. package/dist/registry/builtinFormats.js +13 -13
  245. package/dist/registry/builtinNodes.d.ts +2 -2
  246. package/dist/registry/builtinNodes.js +77 -77
  247. package/dist/registry/index.d.ts +4 -4
  248. package/dist/registry/index.js +4 -4
  249. package/dist/registry/nodeComponentRegistry.d.ts +8 -8
  250. package/dist/registry/nodeComponentRegistry.js +11 -9
  251. package/dist/registry/plugin.d.ts +2 -2
  252. package/dist/registry/plugin.js +11 -11
  253. package/dist/registry/workflowFormatRegistry.d.ts +3 -3
  254. package/dist/registry/workflowFormatRegistry.js +2 -2
  255. package/dist/schema/index.d.ts +1 -1
  256. package/dist/schema/index.js +2 -2
  257. package/dist/schemas/v1/workflow.schema.json +22 -107
  258. package/dist/services/agentSpecExecutionService.d.ts +3 -3
  259. package/dist/services/agentSpecExecutionService.js +59 -55
  260. package/dist/services/api.d.ts +2 -2
  261. package/dist/services/api.js +37 -37
  262. package/dist/services/apiVariableService.d.ts +1 -1
  263. package/dist/services/apiVariableService.js +41 -34
  264. package/dist/services/autoSaveService.js +8 -8
  265. package/dist/services/categoriesApi.d.ts +2 -2
  266. package/dist/services/categoriesApi.js +8 -8
  267. package/dist/services/draftStorage.d.ts +1 -1
  268. package/dist/services/draftStorage.js +11 -11
  269. package/dist/services/dynamicSchemaService.d.ts +1 -1
  270. package/dist/services/dynamicSchemaService.js +41 -39
  271. package/dist/services/globalSave.d.ts +2 -2
  272. package/dist/services/globalSave.js +41 -38
  273. package/dist/services/historyService.d.ts +1 -1
  274. package/dist/services/historyService.js +8 -8
  275. package/dist/services/interruptService.d.ts +1 -1
  276. package/dist/services/interruptService.js +35 -29
  277. package/dist/services/nodeExecutionService.d.ts +1 -1
  278. package/dist/services/nodeExecutionService.js +45 -44
  279. package/dist/services/playgroundService.d.ts +1 -1
  280. package/dist/services/playgroundService.js +29 -29
  281. package/dist/services/portConfigApi.d.ts +2 -2
  282. package/dist/services/portConfigApi.js +8 -8
  283. package/dist/services/settingsService.d.ts +2 -2
  284. package/dist/services/settingsService.js +25 -19
  285. package/dist/services/toastService.d.ts +4 -4
  286. package/dist/services/toastService.js +33 -33
  287. package/dist/services/variableService.d.ts +1 -1
  288. package/dist/services/variableService.js +36 -36
  289. package/dist/services/workflowStorage.d.ts +2 -2
  290. package/dist/services/workflowStorage.js +13 -13
  291. package/dist/settings/index.d.ts +7 -7
  292. package/dist/settings/index.js +6 -6
  293. package/dist/skins/default.d.ts +2 -0
  294. package/dist/skins/default.js +1 -0
  295. package/dist/skins/index.d.ts +13 -0
  296. package/dist/skins/index.js +30 -0
  297. package/dist/skins/slate.d.ts +2 -0
  298. package/dist/skins/slate.js +78 -0
  299. package/dist/stores/categoriesStore.svelte.d.ts +1 -1
  300. package/dist/stores/categoriesStore.svelte.js +5 -5
  301. package/dist/stores/editorStateMachine.svelte.d.ts +2 -2
  302. package/dist/stores/editorStateMachine.svelte.js +65 -33
  303. package/dist/stores/historyStore.svelte.d.ts +4 -4
  304. package/dist/stores/historyStore.svelte.js +4 -4
  305. package/dist/stores/interruptStore.svelte.d.ts +3 -3
  306. package/dist/stores/interruptStore.svelte.js +21 -21
  307. package/dist/stores/playgroundStore.svelte.d.ts +2 -2
  308. package/dist/stores/playgroundStore.svelte.js +25 -18
  309. package/dist/stores/portCoordinateStore.svelte.d.ts +2 -2
  310. package/dist/stores/portCoordinateStore.svelte.js +15 -8
  311. package/dist/stores/settingsStore.svelte.d.ts +2 -2
  312. package/dist/stores/settingsStore.svelte.js +62 -57
  313. package/dist/stores/workflowStore.svelte.d.ts +3 -3
  314. package/dist/stores/workflowStore.svelte.js +50 -47
  315. package/dist/stories/CanvasDecorator.svelte +35 -32
  316. package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
  317. package/dist/stories/EdgeDecorator.svelte +102 -99
  318. package/dist/stories/EdgeDecorator.svelte.d.ts +1 -1
  319. package/dist/stories/NodeDecorator.svelte +59 -53
  320. package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
  321. package/dist/stories/utils.d.ts +2 -2
  322. package/dist/stories/utils.js +105 -67
  323. package/dist/styles/base.css +599 -595
  324. package/dist/styles/toast.css +14 -14
  325. package/dist/styles/tokens.css +409 -378
  326. package/dist/svelte-app.d.ts +9 -9
  327. package/dist/svelte-app.js +39 -39
  328. package/dist/themes/default.d.ts +2 -0
  329. package/dist/themes/default.js +9 -0
  330. package/dist/themes/index.d.ts +13 -0
  331. package/dist/themes/index.js +44 -0
  332. package/dist/themes/minimal.d.ts +2 -0
  333. package/dist/themes/minimal.js +11 -0
  334. package/dist/types/agentspec.d.ts +18 -18
  335. package/dist/types/agentspec.js +2 -2
  336. package/dist/types/auth.d.ts +1 -1
  337. package/dist/types/auth.js +6 -6
  338. package/dist/types/config.d.ts +6 -6
  339. package/dist/types/events.d.ts +2 -2
  340. package/dist/types/events.js +2 -2
  341. package/dist/types/index.d.ts +32 -32
  342. package/dist/types/index.js +6 -6
  343. package/dist/types/interrupt.d.ts +6 -6
  344. package/dist/types/interrupt.js +21 -21
  345. package/dist/types/interruptState.d.ts +12 -12
  346. package/dist/types/interruptState.js +66 -66
  347. package/dist/types/playground.d.ts +7 -7
  348. package/dist/types/playground.js +14 -14
  349. package/dist/types/settings.d.ts +5 -3
  350. package/dist/types/settings.js +25 -18
  351. package/dist/types/skin.d.ts +31 -0
  352. package/dist/types/skin.js +1 -0
  353. package/dist/types/theme.d.ts +35 -0
  354. package/dist/types/theme.js +1 -0
  355. package/dist/types/uischema.d.ts +4 -4
  356. package/dist/types/uischema.js +3 -3
  357. package/dist/utils/colors.d.ts +1 -1
  358. package/dist/utils/colors.js +97 -95
  359. package/dist/utils/config.d.ts +2 -2
  360. package/dist/utils/config.js +48 -48
  361. package/dist/utils/connections.d.ts +2 -2
  362. package/dist/utils/connections.js +15 -15
  363. package/dist/utils/errors.js +3 -3
  364. package/dist/utils/fetchWithAuth.d.ts +1 -1
  365. package/dist/utils/fetchWithAuth.js +2 -2
  366. package/dist/utils/handleIds.d.ts +2 -2
  367. package/dist/utils/handleIds.js +8 -8
  368. package/dist/utils/handlePositioning.d.ts +1 -1
  369. package/dist/utils/handlePositioning.js +2 -2
  370. package/dist/utils/icons.d.ts +1 -1
  371. package/dist/utils/icons.js +74 -74
  372. package/dist/utils/logger.d.ts +1 -1
  373. package/dist/utils/logger.js +7 -7
  374. package/dist/utils/nodeStatus.d.ts +1 -1
  375. package/dist/utils/nodeStatus.js +48 -48
  376. package/dist/utils/nodeTypes.d.ts +1 -1
  377. package/dist/utils/nodeTypes.js +21 -20
  378. package/dist/utils/nodeWrapper.d.ts +7 -7
  379. package/dist/utils/nodeWrapper.js +21 -19
  380. package/dist/utils/performanceUtils.d.ts +1 -1
  381. package/dist/utils/performanceUtils.js +2 -1
  382. package/dist/utils/sanitize.js +1 -1
  383. package/dist/utils/uischema.d.ts +2 -2
  384. package/dist/utils/uischema.js +8 -8
  385. package/dist/utils/validation.js +20 -8
  386. package/package.json +1 -1
@@ -9,8 +9,8 @@
9
9
  *
10
10
  * @module stores/settingsStore
11
11
  */
12
- import { DEFAULT_SETTINGS, SETTINGS_STORAGE_KEY } from '../types/settings.js';
13
- import { logger } from '../utils/logger.js';
12
+ import { DEFAULT_SETTINGS, SETTINGS_STORAGE_KEY } from "../types/settings.js";
13
+ import { logger } from "../utils/logger.js";
14
14
  // =========================================================================
15
15
  // Internal State
16
16
  // =========================================================================
@@ -32,7 +32,7 @@ const changeListeners = new Set();
32
32
  * @returns Saved settings or null if not found/invalid
33
33
  */
34
34
  function loadFromStorage() {
35
- if (typeof window === 'undefined') {
35
+ if (typeof window === "undefined") {
36
36
  return null;
37
37
  }
38
38
  try {
@@ -44,7 +44,7 @@ function loadFromStorage() {
44
44
  }
45
45
  }
46
46
  catch (error) {
47
- logger.warn('Failed to load settings from localStorage:', error);
47
+ logger.warn("Failed to load settings from localStorage:", error);
48
48
  }
49
49
  return null;
50
50
  }
@@ -54,14 +54,14 @@ function loadFromStorage() {
54
54
  * @param settings - Settings to persist
55
55
  */
56
56
  function saveToStorage(settings) {
57
- if (typeof window === 'undefined') {
57
+ if (typeof window === "undefined") {
58
58
  return;
59
59
  }
60
60
  try {
61
61
  localStorage.setItem(SETTINGS_STORAGE_KEY, JSON.stringify(settings));
62
62
  }
63
63
  catch (error) {
64
- logger.warn('Failed to save settings to localStorage:', error);
64
+ logger.warn("Failed to save settings to localStorage:", error);
65
65
  }
66
66
  }
67
67
  // =========================================================================
@@ -80,7 +80,7 @@ function deepMergeSettings(target, source) {
80
80
  editor: { ...target.editor },
81
81
  ui: { ...target.ui },
82
82
  behavior: { ...target.behavior },
83
- api: { ...target.api }
83
+ api: { ...target.api },
84
84
  };
85
85
  // Merge theme settings
86
86
  if (source.theme) {
@@ -117,15 +117,15 @@ const initialSettings = loadFromStorage() ?? DEFAULT_SETTINGS;
117
117
  let storeState = $state({
118
118
  settings: initialSettings,
119
119
  initialized: true,
120
- syncStatus: 'idle',
120
+ syncStatus: "idle",
121
121
  lastSyncedAt: null,
122
- syncError: null
122
+ syncError: null,
123
123
  });
124
124
  /**
125
125
  * System theme preference using $state rune
126
126
  * Updates when system preference changes
127
127
  */
128
- let systemThemeState = $state(typeof window !== 'undefined' ? getSystemTheme() : 'light');
128
+ let systemThemeState = $state(typeof window !== "undefined" ? getSystemTheme() : "light");
129
129
  // =========================================================================
130
130
  // Getter Functions (replacing derived stores)
131
131
  // =========================================================================
@@ -142,7 +142,7 @@ export function getSyncStatus() {
142
142
  return {
143
143
  status: storeState.syncStatus,
144
144
  lastSyncedAt: storeState.lastSyncedAt,
145
- error: storeState.syncError
145
+ error: storeState.syncError,
146
146
  };
147
147
  }
148
148
  /**
@@ -187,7 +187,7 @@ export function getTheme() {
187
187
  * (replaces resolvedTheme derived store)
188
188
  */
189
189
  export function getResolvedTheme() {
190
- if (storeState.settings.theme.preference === 'auto') {
190
+ if (storeState.settings.theme.preference === "auto") {
191
191
  return systemThemeState;
192
192
  }
193
193
  return storeState.settings.theme.preference;
@@ -205,10 +205,12 @@ export function getSystemThemeState() {
205
205
  * Get the system's color scheme preference
206
206
  */
207
207
  function getSystemTheme() {
208
- if (typeof window === 'undefined') {
209
- return 'light';
208
+ if (typeof window === "undefined") {
209
+ return "light";
210
210
  }
211
- return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
211
+ return window.matchMedia("(prefers-color-scheme: dark)").matches
212
+ ? "dark"
213
+ : "light";
212
214
  }
213
215
  /**
214
216
  * Initialize the system theme change listener.
@@ -217,16 +219,16 @@ function getSystemTheme() {
217
219
  * @returns Cleanup function that removes the listener
218
220
  */
219
221
  export function initThemeListener() {
220
- if (typeof window === 'undefined') {
222
+ if (typeof window === "undefined") {
221
223
  return () => { };
222
224
  }
223
- const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
225
+ const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
224
226
  const handleSystemThemeChange = (event) => {
225
- systemThemeState = event.matches ? 'dark' : 'light';
227
+ systemThemeState = event.matches ? "dark" : "light";
226
228
  };
227
- mediaQuery.addEventListener('change', handleSystemThemeChange);
229
+ mediaQuery.addEventListener("change", handleSystemThemeChange);
228
230
  return () => {
229
- mediaQuery.removeEventListener('change', handleSystemThemeChange);
231
+ mediaQuery.removeEventListener("change", handleSystemThemeChange);
230
232
  };
231
233
  }
232
234
  // =========================================================================
@@ -240,14 +242,14 @@ function notifyChange(category, key, previousValue, newValue) {
240
242
  category,
241
243
  key,
242
244
  previousValue,
243
- newValue
245
+ newValue,
244
246
  };
245
247
  changeListeners.forEach((listener) => {
246
248
  try {
247
249
  listener(event);
248
250
  }
249
251
  catch (error) {
250
- logger.error('Settings change listener error:', error);
252
+ logger.error("Settings change listener error:", error);
251
253
  }
252
254
  });
253
255
  }
@@ -270,7 +272,7 @@ export function updateSettings(partial) {
270
272
  // Notify listeners for each changed category
271
273
  for (const category of Object.keys(partial)) {
272
274
  const partialCategory = partial[category];
273
- if (partialCategory && typeof partialCategory === 'object') {
275
+ if (partialCategory && typeof partialCategory === "object") {
274
276
  for (const key of Object.keys(partialCategory)) {
275
277
  const prevCat = getCategoryAsRecord(previousSettings, category);
276
278
  const newCat = getCategoryAsRecord(newSettings, category);
@@ -282,7 +284,7 @@ export function updateSettings(partial) {
282
284
  }
283
285
  storeState = {
284
286
  ...storeState,
285
- settings: newSettings
287
+ settings: newSettings,
286
288
  };
287
289
  }
288
290
  /**
@@ -294,7 +296,8 @@ export function resetSettings(categories) {
294
296
  if (categories && categories.length > 0) {
295
297
  const partial = {};
296
298
  for (const category of categories) {
297
- partial[category] = DEFAULT_SETTINGS[category];
299
+ partial[category] =
300
+ DEFAULT_SETTINGS[category];
298
301
  }
299
302
  updateSettings(partial);
300
303
  }
@@ -302,7 +305,7 @@ export function resetSettings(categories) {
302
305
  saveToStorage(DEFAULT_SETTINGS);
303
306
  storeState = {
304
307
  ...storeState,
305
- settings: DEFAULT_SETTINGS
308
+ settings: DEFAULT_SETTINGS,
306
309
  };
307
310
  }
308
311
  }
@@ -324,11 +327,11 @@ export function setTheme(newTheme) {
324
327
  export function toggleTheme() {
325
328
  const currentTheme = getTheme();
326
329
  const currentResolved = getResolvedTheme();
327
- if (currentTheme === 'auto') {
328
- setTheme(currentResolved === 'dark' ? 'light' : 'dark');
330
+ if (currentTheme === "auto") {
331
+ setTheme(currentResolved === "dark" ? "light" : "dark");
329
332
  }
330
333
  else {
331
- setTheme(currentTheme === 'dark' ? 'light' : 'dark');
334
+ setTheme(currentTheme === "dark" ? "light" : "dark");
332
335
  }
333
336
  }
334
337
  /**
@@ -337,14 +340,14 @@ export function toggleTheme() {
337
340
  export function cycleTheme() {
338
341
  const currentTheme = getTheme();
339
342
  switch (currentTheme) {
340
- case 'light':
341
- setTheme('dark');
343
+ case "light":
344
+ setTheme("dark");
342
345
  break;
343
- case 'dark':
344
- setTheme('auto');
346
+ case "dark":
347
+ setTheme("auto");
345
348
  break;
346
- case 'auto':
347
- setTheme('light');
349
+ case "auto":
350
+ setTheme("light");
348
351
  break;
349
352
  }
350
353
  }
@@ -354,10 +357,10 @@ export function cycleTheme() {
354
357
  * @param resolved - The resolved theme to apply
355
358
  */
356
359
  function applyTheme(resolved) {
357
- if (typeof document === 'undefined') {
360
+ if (typeof document === "undefined") {
358
361
  return;
359
362
  }
360
- document.documentElement.setAttribute('data-theme', resolved);
363
+ document.documentElement.setAttribute("data-theme", resolved);
361
364
  }
362
365
  /**
363
366
  * Stored cleanup function for the theme effect.
@@ -406,10 +409,10 @@ export function initializeTheme() {
406
409
  * @returns true if running in browser and theme is applied
407
410
  */
408
411
  export function isThemeInitialized() {
409
- if (typeof document === 'undefined') {
412
+ if (typeof document === "undefined") {
410
413
  return false;
411
414
  }
412
- return document.documentElement.hasAttribute('data-theme');
415
+ return document.documentElement.hasAttribute("data-theme");
413
416
  }
414
417
  // =========================================================================
415
418
  // API Sync Functions
@@ -429,30 +432,30 @@ export function setSettingsService(service) {
429
432
  */
430
433
  export async function syncSettingsToApi() {
431
434
  if (!settingsService) {
432
- logger.warn('Settings service not configured for API sync');
435
+ logger.warn("Settings service not configured for API sync");
433
436
  return;
434
437
  }
435
438
  storeState = {
436
439
  ...storeState,
437
- syncStatus: 'syncing',
438
- syncError: null
440
+ syncStatus: "syncing",
441
+ syncError: null,
439
442
  };
440
443
  try {
441
444
  const currentSettings = getSettings();
442
445
  await settingsService.savePreferences(currentSettings);
443
446
  storeState = {
444
447
  ...storeState,
445
- syncStatus: 'synced',
448
+ syncStatus: "synced",
446
449
  lastSyncedAt: Date.now(),
447
- syncError: null
450
+ syncError: null,
448
451
  };
449
452
  }
450
453
  catch (error) {
451
- const errorMessage = error instanceof Error ? error.message : 'Failed to sync settings';
454
+ const errorMessage = error instanceof Error ? error.message : "Failed to sync settings";
452
455
  storeState = {
453
456
  ...storeState,
454
- syncStatus: 'error',
455
- syncError: errorMessage
457
+ syncStatus: "error",
458
+ syncError: errorMessage,
456
459
  };
457
460
  throw error;
458
461
  }
@@ -464,13 +467,13 @@ export async function syncSettingsToApi() {
464
467
  */
465
468
  export async function loadSettingsFromApi() {
466
469
  if (!settingsService) {
467
- logger.warn('Settings service not configured for API sync');
470
+ logger.warn("Settings service not configured for API sync");
468
471
  return;
469
472
  }
470
473
  storeState = {
471
474
  ...storeState,
472
- syncStatus: 'syncing',
473
- syncError: null
475
+ syncStatus: "syncing",
476
+ syncError: null,
474
477
  };
475
478
  try {
476
479
  const apiSettingsData = await settingsService.getPreferences();
@@ -478,19 +481,21 @@ export async function loadSettingsFromApi() {
478
481
  storeState = {
479
482
  ...storeState,
480
483
  settings: mergedSettings,
481
- syncStatus: 'synced',
484
+ syncStatus: "synced",
482
485
  lastSyncedAt: Date.now(),
483
- syncError: null
486
+ syncError: null,
484
487
  };
485
488
  // Also persist to localStorage
486
489
  saveToStorage(mergedSettings);
487
490
  }
488
491
  catch (error) {
489
- const errorMessage = error instanceof Error ? error.message : 'Failed to load settings from API';
492
+ const errorMessage = error instanceof Error
493
+ ? error.message
494
+ : "Failed to load settings from API";
490
495
  storeState = {
491
496
  ...storeState,
492
- syncStatus: 'error',
493
- syncError: errorMessage
497
+ syncStatus: "error",
498
+ syncError: errorMessage,
494
499
  };
495
500
  throw error;
496
501
  }
@@ -525,7 +530,7 @@ export async function initializeSettings(options) {
525
530
  const withDefaults = deepMergeSettings(currentSettings, options.defaults);
526
531
  storeState = {
527
532
  ...storeState,
528
- settings: withDefaults
533
+ settings: withDefaults,
529
534
  };
530
535
  saveToStorage(withDefaults);
531
536
  }
@@ -538,7 +543,7 @@ export async function initializeSettings(options) {
538
543
  }
539
544
  catch {
540
545
  // Silently fail - local settings are still available
541
- logger.warn('Failed to sync settings from API on initialization');
546
+ logger.warn("Failed to sync settings from API on initialization");
542
547
  }
543
548
  }
544
549
  }
@@ -10,9 +10,9 @@
10
10
  *
11
11
  * @module stores/workflowStore
12
12
  */
13
- import type { Workflow, WorkflowNode, WorkflowEdge } from '../types';
14
- import type { WorkflowChangeType } from '../types/events.js';
15
- type WorkflowMetadata = NonNullable<Workflow['metadata']>;
13
+ import type { Workflow, WorkflowNode, WorkflowEdge } from "../types";
14
+ import type { WorkflowChangeType } from "../types/events.js";
15
+ type WorkflowMetadata = NonNullable<Workflow["metadata"]>;
16
16
  /**
17
17
  * Get the current workflow store value reactively
18
18
  *
@@ -10,14 +10,14 @@
10
10
  *
11
11
  * @module stores/workflowStore
12
12
  */
13
- import { DEFAULT_WORKFLOW_FORMAT } from '../types/index.js';
14
- import { historyService } from '../services/historyService.js';
13
+ import { DEFAULT_WORKFLOW_FORMAT } from "../types/index.js";
14
+ import { historyService } from "../services/historyService.js";
15
15
  /**
16
16
  * Safely build updated workflow metadata, providing defaults for required fields.
17
17
  */
18
18
  function buildMetadata(existing, updates) {
19
19
  return {
20
- version: existing?.version ?? '1.0',
20
+ version: existing?.version ?? "1.0",
21
21
  createdAt: existing?.createdAt ?? new Date().toISOString(),
22
22
  updatedAt: new Date().toISOString(),
23
23
  author: existing?.author,
@@ -25,7 +25,7 @@ function buildMetadata(existing, updates) {
25
25
  versionId: existing?.versionId,
26
26
  updateNumber: existing?.updateNumber,
27
27
  format: existing?.format,
28
- ...updates
28
+ ...updates,
29
29
  };
30
30
  }
31
31
  // =========================================================================
@@ -106,7 +106,7 @@ export function getWorkflowId() {
106
106
  * @returns The workflow name or 'Untitled Workflow'
107
107
  */
108
108
  export function getWorkflowName() {
109
- return workflowState?.name ?? 'Untitled Workflow';
109
+ return workflowState?.name ?? "Untitled Workflow";
110
110
  }
111
111
  /**
112
112
  * Get the workflow nodes reactively
@@ -131,11 +131,11 @@ export function getWorkflowEdges() {
131
131
  */
132
132
  export function getWorkflowMetadata() {
133
133
  return (workflowState?.metadata ?? {
134
- version: '1.0.0',
134
+ version: "1.0.0",
135
135
  createdAt: new Date().toISOString(),
136
136
  updatedAt: new Date().toISOString(),
137
137
  versionId: `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
138
- updateNumber: 0
138
+ updateNumber: 0,
139
139
  });
140
140
  }
141
141
  /**
@@ -155,7 +155,7 @@ export function getWorkflowChanged() {
155
155
  return {
156
156
  nodes: getWorkflowNodes(),
157
157
  edges: getWorkflowEdges(),
158
- name: getWorkflowName()
158
+ name: getWorkflowName(),
159
159
  };
160
160
  }
161
161
  /**
@@ -171,7 +171,7 @@ export function getWorkflowValidation() {
171
171
  hasEdges: edges.length > 0,
172
172
  nodeCount: nodes.length,
173
173
  edgeCount: edges.length,
174
- isValid: nodes.length > 0 && edges.length >= 0
174
+ isValid: nodes.length > 0 && edges.length >= 0,
175
175
  };
176
176
  }
177
177
  /**
@@ -184,7 +184,7 @@ export function getWorkflowMetadataChanged() {
184
184
  return {
185
185
  createdAt: metadata.createdAt,
186
186
  updatedAt: metadata.updatedAt,
187
- version: metadata.version ?? '1.0.0'
187
+ version: metadata.version ?? "1.0.0",
188
188
  };
189
189
  }
190
190
  /**
@@ -256,16 +256,16 @@ function createSnapshot(workflow) {
256
256
  position: n.position,
257
257
  data: {
258
258
  label: n.data.label,
259
- config: n.data.config
260
- }
259
+ config: n.data.config,
260
+ },
261
261
  })),
262
262
  edges: workflow.edges.map((e) => ({
263
263
  id: e.id,
264
264
  source: e.source,
265
265
  target: e.target,
266
266
  sourceHandle: e.sourceHandle,
267
- targetHandle: e.targetHandle
268
- }))
267
+ targetHandle: e.targetHandle,
268
+ })),
269
269
  };
270
270
  return JSON.stringify(toSnapshot);
271
271
  }
@@ -403,7 +403,8 @@ function hasWorkflowDataChanged(currentWorkflow, newNodes, newEdges) {
403
403
  return true;
404
404
  if (currentEdge.id !== newEdge.id)
405
405
  return true;
406
- if (currentEdge.source !== newEdge.source || currentEdge.target !== newEdge.target)
406
+ if (currentEdge.source !== newEdge.source ||
407
+ currentEdge.target !== newEdge.target)
407
408
  return true;
408
409
  }
409
410
  return false;
@@ -442,7 +443,7 @@ export const workflowActions = {
442
443
  */
443
444
  updateWorkflow: (workflow) => {
444
445
  workflowState = workflow;
445
- notifyWorkflowChange('metadata');
446
+ notifyWorkflowChange("metadata");
446
447
  },
447
448
  /**
448
449
  * Restore workflow from history (undo/redo)
@@ -452,7 +453,7 @@ export const workflowActions = {
452
453
  restoreFromHistory: (workflow) => {
453
454
  isRestoringFromHistory = true;
454
455
  workflowState = workflow;
455
- notifyWorkflowChange('metadata');
456
+ notifyWorkflowChange("metadata");
456
457
  isRestoringFromHistory = false;
457
458
  },
458
459
  /**
@@ -472,10 +473,10 @@ export const workflowActions = {
472
473
  nodes,
473
474
  metadata: buildMetadata(workflowState.metadata, {
474
475
  versionId,
475
- updateNumber: (workflowState.metadata?.updateNumber ?? 0) + 1
476
- })
476
+ updateNumber: (workflowState.metadata?.updateNumber ?? 0) + 1,
477
+ }),
477
478
  };
478
- notifyWorkflowChange('node_move');
479
+ notifyWorkflowChange("node_move");
479
480
  },
480
481
  /**
481
482
  * Update edges
@@ -494,10 +495,10 @@ export const workflowActions = {
494
495
  edges,
495
496
  metadata: buildMetadata(workflowState.metadata, {
496
497
  versionId,
497
- updateNumber: (workflowState.metadata?.updateNumber ?? 0) + 1
498
- })
498
+ updateNumber: (workflowState.metadata?.updateNumber ?? 0) + 1,
499
+ }),
499
500
  };
500
- notifyWorkflowChange('edge_add');
501
+ notifyWorkflowChange("edge_add");
501
502
  },
502
503
  /**
503
504
  * Update workflow name
@@ -508,23 +509,23 @@ export const workflowActions = {
508
509
  workflowState = {
509
510
  ...workflowState,
510
511
  name,
511
- metadata: buildMetadata(workflowState.metadata)
512
+ metadata: buildMetadata(workflowState.metadata),
512
513
  };
513
- notifyWorkflowChange('name');
514
+ notifyWorkflowChange("name");
514
515
  },
515
516
  /**
516
517
  * Add a node
517
518
  */
518
519
  addNode: (node) => {
519
- pushToHistory('Add node');
520
+ pushToHistory("Add node");
520
521
  if (!workflowState)
521
522
  return;
522
523
  workflowState = {
523
524
  ...workflowState,
524
525
  nodes: [...workflowState.nodes, node],
525
- metadata: buildMetadata(workflowState.metadata)
526
+ metadata: buildMetadata(workflowState.metadata),
526
527
  };
527
- notifyWorkflowChange('node_add');
528
+ notifyWorkflowChange("node_add");
528
529
  },
529
530
  /**
530
531
  * Remove a node
@@ -533,44 +534,44 @@ export const workflowActions = {
533
534
  * A single undo will restore both the node and its edges.
534
535
  */
535
536
  removeNode: (nodeId) => {
536
- pushToHistory('Delete node');
537
+ pushToHistory("Delete node");
537
538
  if (!workflowState)
538
539
  return;
539
540
  workflowState = {
540
541
  ...workflowState,
541
542
  nodes: workflowState.nodes.filter((node) => node.id !== nodeId),
542
543
  edges: workflowState.edges.filter((edge) => edge.source !== nodeId && edge.target !== nodeId),
543
- metadata: buildMetadata(workflowState.metadata)
544
+ metadata: buildMetadata(workflowState.metadata),
544
545
  };
545
- notifyWorkflowChange('node_remove');
546
+ notifyWorkflowChange("node_remove");
546
547
  },
547
548
  /**
548
549
  * Add an edge
549
550
  */
550
551
  addEdge: (edge) => {
551
- pushToHistory('Add connection');
552
+ pushToHistory("Add connection");
552
553
  if (!workflowState)
553
554
  return;
554
555
  workflowState = {
555
556
  ...workflowState,
556
557
  edges: [...workflowState.edges, edge],
557
- metadata: buildMetadata(workflowState.metadata)
558
+ metadata: buildMetadata(workflowState.metadata),
558
559
  };
559
- notifyWorkflowChange('edge_add');
560
+ notifyWorkflowChange("edge_add");
560
561
  },
561
562
  /**
562
563
  * Remove an edge
563
564
  */
564
565
  removeEdge: (edgeId) => {
565
- pushToHistory('Delete connection');
566
+ pushToHistory("Delete connection");
566
567
  if (!workflowState)
567
568
  return;
568
569
  workflowState = {
569
570
  ...workflowState,
570
571
  edges: workflowState.edges.filter((edge) => edge.id !== edgeId),
571
- metadata: buildMetadata(workflowState.metadata)
572
+ metadata: buildMetadata(workflowState.metadata),
572
573
  };
573
- notifyWorkflowChange('edge_remove');
574
+ notifyWorkflowChange("edge_remove");
574
575
  },
575
576
  /**
576
577
  * Update a specific node
@@ -578,15 +579,15 @@ export const workflowActions = {
578
579
  * Used for config changes. Pushes to history for undo support.
579
580
  */
580
581
  updateNode: (nodeId, updates) => {
581
- pushToHistory('Update node config');
582
+ pushToHistory("Update node config");
582
583
  if (!workflowState)
583
584
  return;
584
585
  workflowState = {
585
586
  ...workflowState,
586
587
  nodes: workflowState.nodes.map((node) => node.id === nodeId ? { ...node, ...updates } : node),
587
- metadata: buildMetadata(workflowState.metadata)
588
+ metadata: buildMetadata(workflowState.metadata),
588
589
  };
589
- notifyWorkflowChange('node_config');
590
+ notifyWorkflowChange("node_config");
590
591
  },
591
592
  /**
592
593
  * Clear the workflow
@@ -610,9 +611,9 @@ export const workflowActions = {
610
611
  return;
611
612
  workflowState = {
612
613
  ...workflowState,
613
- metadata: buildMetadata(workflowState.metadata, metadata)
614
+ metadata: buildMetadata(workflowState.metadata, metadata),
614
615
  };
615
- notifyWorkflowChange('metadata');
616
+ notifyWorkflowChange("metadata");
616
617
  },
617
618
  /**
618
619
  * Batch update nodes and edges
@@ -621,7 +622,7 @@ export const workflowActions = {
621
622
  * Creates a single history entry for the entire batch.
622
623
  */
623
624
  batchUpdate: (updates) => {
624
- pushToHistory('Batch update');
625
+ pushToHistory("Batch update");
625
626
  if (!workflowState)
626
627
  return;
627
628
  workflowState = {
@@ -629,10 +630,12 @@ export const workflowActions = {
629
630
  ...(updates.nodes && { nodes: updates.nodes }),
630
631
  ...(updates.edges && { edges: updates.edges }),
631
632
  ...(updates.name && { name: updates.name }),
632
- ...(updates.description !== undefined && { description: updates.description }),
633
- metadata: buildMetadata(workflowState.metadata, updates.metadata ?? undefined)
633
+ ...(updates.description !== undefined && {
634
+ description: updates.description,
635
+ }),
636
+ metadata: buildMetadata(workflowState.metadata, updates.metadata ?? undefined),
634
637
  };
635
- notifyWorkflowChange('metadata');
638
+ notifyWorkflowChange("metadata");
636
639
  },
637
640
  /**
638
641
  * Push current state to history manually
@@ -645,5 +648,5 @@ export const workflowActions = {
645
648
  */
646
649
  pushHistory: (description, workflow) => {
647
650
  pushToHistory(description, workflow);
648
- }
651
+ },
649
652
  };