@flowdrop/flowdrop 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) 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 +240 -294
  40. package/dist/components/App.svelte.d.ts +9 -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 +42 -56
  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 +44 -74
  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/services/agentSpecExecutionService.d.ts +3 -3
  299. package/dist/services/agentSpecExecutionService.js +55 -56
  300. package/dist/services/api.d.ts +2 -2
  301. package/dist/services/api.js +37 -37
  302. package/dist/services/apiVariableService.d.ts +1 -1
  303. package/dist/services/apiVariableService.js +34 -41
  304. package/dist/services/autoSaveService.js +8 -8
  305. package/dist/services/categoriesApi.d.ts +2 -2
  306. package/dist/services/categoriesApi.js +8 -8
  307. package/dist/services/chatService.d.ts +1 -1
  308. package/dist/services/chatService.js +18 -18
  309. package/dist/services/draftStorage.d.ts +1 -1
  310. package/dist/services/draftStorage.js +11 -11
  311. package/dist/services/dynamicSchemaService.d.ts +1 -1
  312. package/dist/services/dynamicSchemaService.js +39 -41
  313. package/dist/services/globalSave.d.ts +2 -2
  314. package/dist/services/globalSave.js +38 -41
  315. package/dist/services/historyService.d.ts +1 -1
  316. package/dist/services/historyService.js +10 -10
  317. package/dist/services/interruptService.d.ts +1 -1
  318. package/dist/services/interruptService.js +29 -35
  319. package/dist/services/nodeExecutionService.d.ts +1 -1
  320. package/dist/services/nodeExecutionService.js +44 -45
  321. package/dist/services/playgroundService.d.ts +1 -1
  322. package/dist/services/playgroundService.js +29 -29
  323. package/dist/services/portConfigApi.d.ts +2 -2
  324. package/dist/services/portConfigApi.js +8 -8
  325. package/dist/services/settingsService.d.ts +2 -2
  326. package/dist/services/settingsService.js +19 -25
  327. package/dist/services/toastService.d.ts +4 -4
  328. package/dist/services/toastService.js +33 -33
  329. package/dist/services/variableService.d.ts +1 -1
  330. package/dist/services/variableService.js +36 -36
  331. package/dist/services/workflowStorage.d.ts +2 -2
  332. package/dist/services/workflowStorage.js +13 -13
  333. package/dist/settings/index.d.ts +7 -7
  334. package/dist/settings/index.js +6 -6
  335. package/dist/skins/default.d.ts +1 -1
  336. package/dist/skins/default.js +1 -1
  337. package/dist/skins/index.d.ts +3 -3
  338. package/dist/skins/index.js +7 -7
  339. package/dist/skins/slate.d.ts +1 -1
  340. package/dist/skins/slate.js +69 -69
  341. package/dist/stores/categoriesStore.svelte.d.ts +1 -1
  342. package/dist/stores/categoriesStore.svelte.js +5 -5
  343. package/dist/stores/editorStateMachine.svelte.d.ts +2 -2
  344. package/dist/stores/editorStateMachine.svelte.js +34 -34
  345. package/dist/stores/historyStore.svelte.d.ts +4 -4
  346. package/dist/stores/historyStore.svelte.js +4 -4
  347. package/dist/stores/interruptStore.svelte.d.ts +3 -3
  348. package/dist/stores/interruptStore.svelte.js +21 -21
  349. package/dist/stores/playgroundStore.svelte.d.ts +2 -2
  350. package/dist/stores/playgroundStore.svelte.js +18 -21
  351. package/dist/stores/portCoordinateStore.svelte.d.ts +2 -2
  352. package/dist/stores/portCoordinateStore.svelte.js +10 -13
  353. package/dist/stores/settingsStore.svelte.d.ts +2 -2
  354. package/dist/stores/settingsStore.svelte.js +57 -62
  355. package/dist/stores/workflowStore.svelte.d.ts +3 -3
  356. package/dist/stores/workflowStore.svelte.js +46 -47
  357. package/dist/stories/CanvasDecorator.svelte +7 -10
  358. package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
  359. package/dist/stories/EdgeDecorator.svelte +28 -31
  360. package/dist/stories/EdgeDecorator.svelte.d.ts +1 -1
  361. package/dist/stories/NodeDecorator.svelte +14 -20
  362. package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
  363. package/dist/stories/utils.d.ts +2 -2
  364. package/dist/stories/utils.js +89 -93
  365. package/dist/styles/base.css +16 -50
  366. package/dist/styles/tokens.css +10 -28
  367. package/dist/svelte-app.d.ts +10 -10
  368. package/dist/svelte-app.js +39 -39
  369. package/dist/themes/default.d.ts +1 -1
  370. package/dist/themes/default.js +4 -4
  371. package/dist/themes/index.d.ts +3 -3
  372. package/dist/themes/index.js +11 -11
  373. package/dist/themes/minimal.d.ts +1 -1
  374. package/dist/themes/minimal.js +5 -5
  375. package/dist/types/agentspec.d.ts +18 -18
  376. package/dist/types/agentspec.js +2 -2
  377. package/dist/types/auth.d.ts +1 -1
  378. package/dist/types/auth.js +6 -6
  379. package/dist/types/chat.d.ts +2 -2
  380. package/dist/types/config.d.ts +6 -6
  381. package/dist/types/events.d.ts +3 -3
  382. package/dist/types/events.js +2 -2
  383. package/dist/types/index.d.ts +32 -32
  384. package/dist/types/index.js +6 -6
  385. package/dist/types/interrupt.d.ts +6 -6
  386. package/dist/types/interrupt.js +21 -21
  387. package/dist/types/interruptState.d.ts +12 -12
  388. package/dist/types/interruptState.js +66 -66
  389. package/dist/types/playground.d.ts +7 -7
  390. package/dist/types/playground.js +14 -14
  391. package/dist/types/settings.d.ts +7 -5
  392. package/dist/types/settings.js +19 -24
  393. package/dist/types/skin.d.ts +1 -1
  394. package/dist/types/theme.d.ts +2 -2
  395. package/dist/types/uischema.d.ts +4 -4
  396. package/dist/types/uischema.js +3 -3
  397. package/dist/utils/colors.d.ts +1 -1
  398. package/dist/utils/colors.js +95 -97
  399. package/dist/utils/config.d.ts +2 -2
  400. package/dist/utils/config.js +48 -48
  401. package/dist/utils/connections.d.ts +2 -2
  402. package/dist/utils/connections.js +15 -15
  403. package/dist/utils/edgeStyling.d.ts +2 -2
  404. package/dist/utils/edgeStyling.js +36 -39
  405. package/dist/utils/errors.js +3 -3
  406. package/dist/utils/fetchWithAuth.d.ts +1 -1
  407. package/dist/utils/fetchWithAuth.js +2 -2
  408. package/dist/utils/handleIds.d.ts +2 -2
  409. package/dist/utils/handleIds.js +8 -8
  410. package/dist/utils/handlePositioning.d.ts +1 -1
  411. package/dist/utils/handlePositioning.js +2 -2
  412. package/dist/utils/icons.d.ts +1 -1
  413. package/dist/utils/icons.js +74 -74
  414. package/dist/utils/logger.d.ts +1 -1
  415. package/dist/utils/logger.js +7 -7
  416. package/dist/utils/nodeIds.d.ts +1 -1
  417. package/dist/utils/nodeIds.js +1 -1
  418. package/dist/utils/nodeStatus.d.ts +1 -1
  419. package/dist/utils/nodeStatus.js +48 -48
  420. package/dist/utils/nodeSwap.d.ts +9 -9
  421. package/dist/utils/nodeSwap.js +52 -58
  422. package/dist/utils/nodeTypes.d.ts +1 -1
  423. package/dist/utils/nodeTypes.js +20 -21
  424. package/dist/utils/nodeWrapper.d.ts +7 -7
  425. package/dist/utils/nodeWrapper.js +19 -21
  426. package/dist/utils/performanceUtils.d.ts +1 -1
  427. package/dist/utils/performanceUtils.js +1 -2
  428. package/dist/utils/portUtils.d.ts +2 -2
  429. package/dist/utils/portUtils.js +1 -1
  430. package/dist/utils/sanitize.js +1 -1
  431. package/dist/utils/uischema.d.ts +2 -2
  432. package/dist/utils/uischema.js +8 -8
  433. package/dist/utils/validation.js +8 -8
  434. package/package.json +7 -11
@@ -18,8 +18,8 @@
18
18
  -->
19
19
 
20
20
  <script lang="ts">
21
- import { setContext } from "svelte";
22
- import Icon from "@iconify/svelte";
21
+ import { setContext } from 'svelte';
22
+ import Icon from '@iconify/svelte';
23
23
  import type {
24
24
  ConfigSchema,
25
25
  WorkflowNode,
@@ -28,32 +28,25 @@
28
28
  NodePort,
29
29
  DynamicPort,
30
30
  ConfigEditOptions,
31
- AuthProvider,
32
- } from "../types/index.js";
33
- import { dynamicPortToNodePort } from "../types/index.js";
34
- import type { UISchemaElement } from "../types/uischema.js";
35
- import {
36
- FormField,
37
- FormFieldWrapper,
38
- FormToggle,
39
- } from "./form/index.js";
40
- import FormUISchemaRenderer from "./form/FormUISchemaRenderer.svelte";
41
- import type { FieldSchema } from "./form/index.js";
31
+ AuthProvider
32
+ } from '../types/index.js';
33
+ import { dynamicPortToNodePort } from '../types/index.js';
34
+ import type { UISchemaElement } from '../types/uischema.js';
35
+ import { FormField, FormFieldWrapper, FormToggle } from './form/index.js';
36
+ import FormUISchemaRenderer from './form/FormUISchemaRenderer.svelte';
37
+ import type { FieldSchema } from './form/index.js';
42
38
  import {
43
39
  getEffectiveConfigEditOptions,
44
40
  fetchDynamicSchema,
45
41
  resolveExternalEditUrl,
46
42
  invalidateSchemaCache,
47
- type DynamicSchemaResult,
48
- } from "../services/dynamicSchemaService.js";
49
- import { globalSaveWorkflow } from "../services/globalSave.js";
50
- import { getAvailableVariables } from "../services/variableService.js";
51
- import { logger } from "../utils/logger.js";
52
- import {
53
- getDataTypeColorToken,
54
- getPortBackgroundColor,
55
- } from "../utils/colors.js";
56
- import { applyPortOrder } from "../utils/portUtils.js";
43
+ type DynamicSchemaResult
44
+ } from '../services/dynamicSchemaService.js';
45
+ import { globalSaveWorkflow } from '../services/globalSave.js';
46
+ import { getAvailableVariables } from '../services/variableService.js';
47
+ import { logger } from '../utils/logger.js';
48
+ import { getDataTypeColorToken, getPortBackgroundColor } from '../utils/colors.js';
49
+ import { applyPortOrder } from '../utils/portUtils.js';
57
50
 
58
51
  interface Props {
59
52
  /** Optional workflow node (if provided, schema and values are derived from it) */
@@ -88,15 +81,9 @@
88
81
  /** Auth provider for API requests (used for template variable API mode) */
89
82
  authProvider?: AuthProvider;
90
83
  /** Callback when any field value changes (fired on blur for immediate sync) */
91
- onChange?: (
92
- config: Record<string, unknown>,
93
- uiExtensions?: NodeUIExtensions,
94
- ) => void;
84
+ onChange?: (config: Record<string, unknown>, uiExtensions?: NodeUIExtensions) => void;
95
85
  /** Callback when form is saved (includes both config and extensions if enabled) */
96
- onSave?: (
97
- config: Record<string, unknown>,
98
- uiExtensions?: NodeUIExtensions,
99
- ) => void;
86
+ onSave?: (config: Record<string, unknown>, uiExtensions?: NodeUIExtensions) => void;
100
87
  /** Callback when form is cancelled */
101
88
  onCancel?: () => void;
102
89
  }
@@ -114,16 +101,13 @@
114
101
  authProvider,
115
102
  onChange,
116
103
  onSave,
117
- onCancel,
104
+ onCancel
118
105
  }: Props = $props();
119
106
 
120
107
  // Set context for child components (e.g., FormAutocomplete)
121
108
  // Use getter functions to ensure child components always get the current prop value,
122
109
  // even if the prop changes after initial mount
123
- setContext<() => AuthProvider | undefined>(
124
- "flowdrop:getAuthProvider",
125
- () => authProvider,
126
- );
110
+ setContext<() => AuthProvider | undefined>('flowdrop:getAuthProvider', () => authProvider);
127
111
 
128
112
  /**
129
113
  * State for dynamic schema loading
@@ -170,9 +154,7 @@
170
154
  return fetchedDynamicSchema;
171
155
  }
172
156
  // Otherwise use the direct prop or node metadata
173
- return (
174
- schema ?? (node?.data.metadata?.configSchema as ConfigSchema | undefined)
175
- );
157
+ return schema ?? (node?.data.metadata?.configSchema as ConfigSchema | undefined);
176
158
  });
177
159
 
178
160
  /**
@@ -180,9 +162,7 @@
180
162
  * Priority: direct uiSchema prop > node metadata uiSchema
181
163
  */
182
164
  const configUISchema = $derived.by<UISchemaElement | undefined>(() => {
183
- return (
184
- uiSchema ?? (node?.data.metadata?.uiSchema as UISchemaElement | undefined)
185
- );
165
+ return uiSchema ?? (node?.data.metadata?.uiSchema as UISchemaElement | undefined);
186
166
  });
187
167
 
188
168
  /**
@@ -247,23 +227,20 @@
247
227
  const result: DynamicSchemaResult = await fetchDynamicSchema(
248
228
  configEditOptions.dynamicSchema,
249
229
  node,
250
- workflowId,
230
+ workflowId
251
231
  );
252
232
 
253
233
  if (result.success && result.schema) {
254
234
  fetchedDynamicSchema = result.schema;
255
235
  } else {
256
236
  dynamicSchemaError =
257
- result.error ??
258
- configEditOptions.errorMessage ??
259
- "Failed to load configuration schema";
237
+ result.error ?? configEditOptions.errorMessage ?? 'Failed to load configuration schema';
260
238
  }
261
239
  } catch (err) {
262
240
  dynamicSchemaError =
263
241
  err instanceof Error
264
242
  ? err.message
265
- : (configEditOptions.errorMessage ??
266
- "Failed to load configuration schema");
243
+ : (configEditOptions.errorMessage ?? 'Failed to load configuration schema');
267
244
  } finally {
268
245
  dynamicSchemaLoading = false;
269
246
  }
@@ -287,12 +264,8 @@
287
264
  * Get the resolved external edit URL
288
265
  */
289
266
  function getExternalEditUrl(): string {
290
- if (!node || !configEditOptions?.externalEditLink) return "#";
291
- return resolveExternalEditUrl(
292
- configEditOptions.externalEditLink,
293
- node,
294
- workflowId,
295
- );
267
+ if (!node || !configEditOptions?.externalEditLink) return '#';
268
+ return resolveExternalEditUrl(configEditOptions.externalEditLink, node, workflowId);
296
269
  }
297
270
 
298
271
  /**
@@ -302,11 +275,10 @@
302
275
  if (!node || !configEditOptions?.externalEditLink) return;
303
276
 
304
277
  const url = getExternalEditUrl();
305
- const openInNewTab =
306
- configEditOptions.externalEditLink.openInNewTab !== false;
278
+ const openInNewTab = configEditOptions.externalEditLink.openInNewTab !== false;
307
279
 
308
280
  if (openInNewTab) {
309
- window.open(url, "_blank", "noopener,noreferrer");
281
+ window.open(url, '_blank', 'noopener,noreferrer');
310
282
  } else {
311
283
  window.location.href = url;
312
284
  }
@@ -331,9 +303,7 @@
331
303
  const fieldConfig = field as Record<string, unknown>;
332
304
  // Use existing value if available, otherwise use default
333
305
  mergedConfig[key] =
334
- initialConfig[key] !== undefined
335
- ? initialConfig[key]
336
- : fieldConfig.default;
306
+ initialConfig[key] !== undefined ? initialConfig[key] : fieldConfig.default;
337
307
  });
338
308
  configValues = mergedConfig;
339
309
  }
@@ -344,8 +314,7 @@
344
314
  */
345
315
  $effect(() => {
346
316
  uiExtensionValues = {
347
- hideUnconnectedHandles:
348
- initialUIExtensions.hideUnconnectedHandles ?? false,
317
+ hideUnconnectedHandles: initialUIExtensions.hideUnconnectedHandles ?? false,
349
318
  portOrder: initialUIExtensions.portOrder
350
319
  ? {
351
320
  inputs: initialUIExtensions.portOrder.inputs
@@ -353,7 +322,7 @@
353
322
  : undefined,
354
323
  outputs: initialUIExtensions.portOrder.outputs
355
324
  ? [...initialUIExtensions.portOrder.outputs]
356
- : undefined,
325
+ : undefined
357
326
  }
358
327
  : undefined,
359
328
  hiddenPorts: initialUIExtensions.hiddenPorts
@@ -363,9 +332,9 @@
363
332
  : undefined,
364
333
  outputs: initialUIExtensions.hiddenPorts.outputs
365
334
  ? [...initialUIExtensions.hiddenPorts.outputs]
366
- : undefined,
335
+ : undefined
367
336
  }
368
- : undefined,
337
+ : undefined
369
338
  };
370
339
  });
371
340
 
@@ -376,13 +345,10 @@
376
345
  const allInputPortsForUI = $derived.by<NodePort[]>(() => {
377
346
  if (!node) return [];
378
347
  const staticInputs = node.data.metadata.inputs ?? [];
379
- const dynInputs = (
380
- (node.data.config?.dynamicInputs as DynamicPort[]) || []
381
- ).map((p) => dynamicPortToNodePort(p, "input"));
382
- return applyPortOrder(
383
- [...staticInputs, ...dynInputs],
384
- uiExtensionValues.portOrder?.inputs,
348
+ const dynInputs = ((node.data.config?.dynamicInputs as DynamicPort[]) || []).map((p) =>
349
+ dynamicPortToNodePort(p, 'input')
385
350
  );
351
+ return applyPortOrder([...staticInputs, ...dynInputs], uiExtensionValues.portOrder?.inputs);
386
352
  });
387
353
 
388
354
  /**
@@ -392,25 +358,17 @@
392
358
  const allOutputPortsForUI = $derived.by<NodePort[]>(() => {
393
359
  if (!node) return [];
394
360
  const staticOutputs = node.data.metadata.outputs ?? [];
395
- const dynOutputs = (
396
- (node.data.config?.dynamicOutputs as DynamicPort[]) || []
397
- ).map((p) => dynamicPortToNodePort(p, "output"));
398
- return applyPortOrder(
399
- [...staticOutputs, ...dynOutputs],
400
- uiExtensionValues.portOrder?.outputs,
361
+ const dynOutputs = ((node.data.config?.dynamicOutputs as DynamicPort[]) || []).map((p) =>
362
+ dynamicPortToNodePort(p, 'output')
401
363
  );
364
+ return applyPortOrder([...staticOutputs, ...dynOutputs], uiExtensionValues.portOrder?.outputs);
402
365
  });
403
366
 
404
367
  /**
405
368
  * Move a port one position up or down in the display order.
406
369
  */
407
- function movePort(
408
- direction: "inputs" | "outputs",
409
- portId: string,
410
- delta: -1 | 1,
411
- ): void {
412
- const list =
413
- direction === "inputs" ? allInputPortsForUI : allOutputPortsForUI;
370
+ function movePort(direction: 'inputs' | 'outputs', portId: string, delta: -1 | 1): void {
371
+ const list = direction === 'inputs' ? allInputPortsForUI : allOutputPortsForUI;
414
372
  const idx = list.findIndex((p) => p.id === portId);
415
373
  if (idx === -1) return;
416
374
  const newIdx = idx + delta;
@@ -419,7 +377,7 @@
419
377
  [newOrder[idx], newOrder[newIdx]] = [newOrder[newIdx], newOrder[idx]];
420
378
  uiExtensionValues.portOrder = {
421
379
  ...uiExtensionValues.portOrder,
422
- [direction]: newOrder,
380
+ [direction]: newOrder
423
381
  };
424
382
  handleFormBlur();
425
383
  }
@@ -427,18 +385,13 @@
427
385
  /**
428
386
  * Toggle manual visibility of a port. Required ports cannot be hidden.
429
387
  */
430
- function togglePortHidden(
431
- direction: "inputs" | "outputs",
432
- portId: string,
433
- ): void {
388
+ function togglePortHidden(direction: 'inputs' | 'outputs', portId: string): void {
434
389
  const current = uiExtensionValues.hiddenPorts?.[direction] ?? [];
435
390
  const isHidden = current.includes(portId);
436
- const next = isHidden
437
- ? current.filter((id) => id !== portId)
438
- : [...current, portId];
391
+ const next = isHidden ? current.filter((id) => id !== portId) : [...current, portId];
439
392
  uiExtensionValues.hiddenPorts = {
440
393
  ...uiExtensionValues.hiddenPorts,
441
- [direction]: next.length > 0 ? next : undefined,
394
+ [direction]: next.length > 0 ? next : undefined
442
395
  };
443
396
  handleFormBlur();
444
397
  }
@@ -446,15 +399,13 @@
446
399
  /**
447
400
  * Reset all port customizations (order + hidden) for a direction back to defaults.
448
401
  */
449
- function resetPortCustomizations(direction: "inputs" | "outputs"): void {
402
+ function resetPortCustomizations(direction: 'inputs' | 'outputs'): void {
450
403
  const order = { ...uiExtensionValues.portOrder };
451
404
  const hidden = { ...uiExtensionValues.hiddenPorts };
452
405
  delete order[direction];
453
406
  delete hidden[direction];
454
- uiExtensionValues.portOrder =
455
- Object.keys(order).length > 0 ? order : undefined;
456
- uiExtensionValues.hiddenPorts =
457
- Object.keys(hidden).length > 0 ? hidden : undefined;
407
+ uiExtensionValues.portOrder = Object.keys(order).length > 0 ? order : undefined;
408
+ uiExtensionValues.hiddenPorts = Object.keys(hidden).length > 0 ? hidden : undefined;
458
409
  handleFormBlur();
459
410
  }
460
411
 
@@ -480,8 +431,7 @@
480
431
  */
481
432
  function handleFormBlur(): void {
482
433
  if (onChange) {
483
- const extensions =
484
- showUIExtensions && node ? uiExtensionValues : undefined;
434
+ const extensions = showUIExtensions && node ? uiExtensionValues : undefined;
485
435
  onChange({ ...configValues }, extensions);
486
436
  }
487
437
  }
@@ -493,34 +443,23 @@
493
443
  */
494
444
  async function handleSave(): Promise<void> {
495
445
  // Collect all form values including hidden fields
496
- const form = document.querySelector(".config-form");
446
+ const form = document.querySelector('.config-form');
497
447
  const updatedConfig: Record<string, unknown> = { ...configValues };
498
448
 
499
449
  if (form) {
500
- const inputs = form.querySelectorAll("input, select, textarea");
450
+ const inputs = form.querySelectorAll('input, select, textarea');
501
451
  inputs.forEach((input: Element) => {
502
- const inputEl = input as
503
- | HTMLInputElement
504
- | HTMLSelectElement
505
- | HTMLTextAreaElement;
452
+ const inputEl = input as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;
506
453
  // Skip UI extension fields (prefixed with ext-)
507
- if (inputEl.id && !inputEl.id.startsWith("ext-")) {
508
- if (
509
- inputEl instanceof HTMLInputElement &&
510
- inputEl.type === "checkbox"
511
- ) {
454
+ if (inputEl.id && !inputEl.id.startsWith('ext-')) {
455
+ if (inputEl instanceof HTMLInputElement && inputEl.type === 'checkbox') {
512
456
  updatedConfig[inputEl.id] = inputEl.checked;
513
457
  } else if (
514
458
  inputEl instanceof HTMLInputElement &&
515
- (inputEl.type === "number" || inputEl.type === "range")
516
- ) {
517
- updatedConfig[inputEl.id] = inputEl.value
518
- ? Number(inputEl.value)
519
- : inputEl.value;
520
- } else if (
521
- inputEl instanceof HTMLInputElement &&
522
- inputEl.type === "hidden"
459
+ (inputEl.type === 'number' || inputEl.type === 'range')
523
460
  ) {
461
+ updatedConfig[inputEl.id] = inputEl.value ? Number(inputEl.value) : inputEl.value;
462
+ } else if (inputEl instanceof HTMLInputElement && inputEl.type === 'hidden') {
524
463
  // Parse hidden field values that might be JSON
525
464
  try {
526
465
  const parsed = JSON.parse(inputEl.value);
@@ -540,14 +479,10 @@
540
479
  if (initialConfig && configSchema?.properties) {
541
480
  Object.entries(configSchema.properties).forEach(
542
481
  ([key, property]: [string, Record<string, unknown>]) => {
543
- if (
544
- property.format === "hidden" &&
545
- !(key in updatedConfig) &&
546
- key in initialConfig
547
- ) {
482
+ if (property.format === 'hidden' && !(key in updatedConfig) && key in initialConfig) {
548
483
  updatedConfig[key] = initialConfig[key];
549
484
  }
550
- },
485
+ }
551
486
  );
552
487
  }
553
488
 
@@ -566,7 +501,7 @@
566
501
  try {
567
502
  await globalSaveWorkflow();
568
503
  } catch (error) {
569
- logger.error("Failed to save workflow after config save:", error);
504
+ logger.error('Failed to save workflow after config save:', error);
570
505
  } finally {
571
506
  isSavingWorkflow = false;
572
507
  }
@@ -585,7 +520,7 @@
585
520
 
586
521
  // Process template fields to compute variable schema
587
522
  if (
588
- fieldSchema.format === "template" &&
523
+ fieldSchema.format === 'template' &&
589
524
  node &&
590
525
  workflowNodes.length > 0 &&
591
526
  workflowEdges.length > 0
@@ -594,23 +529,18 @@
594
529
  const variablesConfig = fieldSchema.variables;
595
530
 
596
531
  // Compute the variable schema with optional port filtering and port name prefixing
597
- const computedSchema = getAvailableVariables(
598
- node,
599
- workflowNodes,
600
- workflowEdges,
601
- {
602
- targetPortIds: variablesConfig?.ports,
603
- includePortName: variablesConfig?.includePortName,
604
- },
605
- );
532
+ const computedSchema = getAvailableVariables(node, workflowNodes, workflowEdges, {
533
+ targetPortIds: variablesConfig?.ports,
534
+ includePortName: variablesConfig?.includePortName
535
+ });
606
536
 
607
537
  // Merge computed schema with any pre-defined schema
608
538
  const mergedSchema = variablesConfig?.schema
609
539
  ? {
610
540
  variables: {
611
541
  ...computedSchema.variables,
612
- ...variablesConfig.schema.variables,
613
- },
542
+ ...variablesConfig.schema.variables
543
+ }
614
544
  }
615
545
  : computedSchema;
616
546
 
@@ -618,8 +548,8 @@
618
548
  ...fieldSchema,
619
549
  variables: {
620
550
  ...variablesConfig,
621
- schema: mergedSchema,
622
- },
551
+ schema: mergedSchema
552
+ }
623
553
  } as FieldSchema;
624
554
  }
625
555
 
@@ -637,7 +567,7 @@
637
567
  <div class="config-form__admin-edit-content">
638
568
  <p class="config-form__admin-edit-description">
639
569
  {configEditOptions.externalEditLink.description ??
640
- "This node requires external configuration. Click the button below to open the configuration panel."}
570
+ 'This node requires external configuration. Click the button below to open the configuration panel.'}
641
571
  </p>
642
572
  <button
643
573
  type="button"
@@ -645,13 +575,9 @@
645
575
  onclick={handleExternalEditClick}
646
576
  >
647
577
  <Icon
648
- icon={configEditOptions.externalEditLink.icon ??
649
- "heroicons:arrow-top-right-on-square"}
578
+ icon={configEditOptions.externalEditLink.icon ?? 'heroicons:arrow-top-right-on-square'}
650
579
  />
651
- <span
652
- >{configEditOptions.externalEditLink.label ??
653
- "Configure Externally"}</span
654
- >
580
+ <span>{configEditOptions.externalEditLink.label ?? 'Configure Externally'}</span>
655
581
  </button>
656
582
  </div>
657
583
  </div>
@@ -662,7 +588,7 @@
662
588
  <div class="config-form__loading">
663
589
  <div class="config-form__loading-spinner"></div>
664
590
  <p class="config-form__loading-text">
665
- {configEditOptions?.loadingMessage ?? "Loading configuration options..."}
591
+ {configEditOptions?.loadingMessage ?? 'Loading configuration options...'}
666
592
  </p>
667
593
  </div>
668
594
  {:else if dynamicSchemaError}
@@ -690,12 +616,9 @@
690
616
  >
691
617
  <Icon
692
618
  icon={configEditOptions.externalEditLink.icon ??
693
- "heroicons:arrow-top-right-on-square"}
619
+ 'heroicons:arrow-top-right-on-square'}
694
620
  />
695
- <span
696
- >{configEditOptions.externalEditLink.label ??
697
- "Use External Editor"}</span
698
- >
621
+ <span>{configEditOptions.externalEditLink.label ?? 'Use External Editor'}</span>
699
622
  </button>
700
623
  {/if}
701
624
  </div>
@@ -726,17 +649,13 @@
726
649
  type="button"
727
650
  class="config-form__schema-external"
728
651
  onclick={handleExternalEditClick}
729
- title={configEditOptions.externalEditLink.description ??
730
- "Open external editor"}
652
+ title={configEditOptions.externalEditLink.description ?? 'Open external editor'}
731
653
  >
732
654
  <Icon
733
655
  icon={configEditOptions.externalEditLink.icon ??
734
- "heroicons:arrow-top-right-on-square"}
656
+ 'heroicons:arrow-top-right-on-square'}
735
657
  />
736
- <span
737
- >{configEditOptions.externalEditLink.label ??
738
- "External Editor"}</span
739
- >
658
+ <span>{configEditOptions.externalEditLink.label ?? 'External Editor'}</span>
740
659
  </button>
741
660
  {/if}
742
661
  </div>
@@ -760,9 +679,7 @@
760
679
  />
761
680
  {:else}
762
681
  {#each Object.entries(configSchema.properties) as [key, field], index (key)}
763
- {@const fieldSchema = toFieldSchema(
764
- field as Record<string, unknown>,
765
- )}
682
+ {@const fieldSchema = toFieldSchema(field as Record<string, unknown>)}
766
683
  {@const required = isFieldRequired(key)}
767
684
 
768
685
  <FormField
@@ -788,11 +705,7 @@
788
705
  <Icon icon="heroicons:bug-ant" class="config-form__debug-icon" />
789
706
  <span>Debug - Config Schema</span>
790
707
  </div>
791
- <pre class="config-form__debug-content">{JSON.stringify(
792
- configSchema,
793
- null,
794
- 2,
795
- )}</pre>
708
+ <pre class="config-form__debug-content">{JSON.stringify(configSchema, null, 2)}</pre>
796
709
  </div>
797
710
  {/if}
798
711
 
@@ -800,10 +713,7 @@
800
713
  {#if showUIExtensions && node}
801
714
  <div class="config-form__extensions">
802
715
  <div class="config-form__extensions-header">
803
- <Icon
804
- icon="heroicons:adjustments-horizontal"
805
- class="config-form__extensions-icon"
806
- />
716
+ <Icon icon="heroicons:adjustments-horizontal" class="config-form__extensions-icon" />
807
717
  <span>Display Settings</span>
808
718
  </div>
809
719
  <div class="config-form__extensions-content">
@@ -835,7 +745,7 @@
835
745
  <button
836
746
  type="button"
837
747
  class="config-form__port-order-reset"
838
- onclick={() => resetPortCustomizations("inputs")}
748
+ onclick={() => resetPortCustomizations('inputs')}
839
749
  title="Reset to default order and visibility"
840
750
  >
841
751
  <Icon icon="heroicons:arrow-uturn-left" />
@@ -846,26 +756,21 @@
846
756
  <ul class="config-form__port-order-list">
847
757
  {#each allInputPortsForUI as port, i (port.id)}
848
758
  {@const isHidden =
849
- uiExtensionValues.hiddenPorts?.inputs?.includes(port.id) ??
850
- false}
759
+ uiExtensionValues.hiddenPorts?.inputs?.includes(port.id) ?? false}
851
760
  {@const isRequired = port.required ?? false}
852
761
  <li
853
762
  class="config-form__port-order-item"
854
763
  class:config-form__port-order-item--hidden={isHidden}
855
764
  >
856
- <span class="config-form__port-order-name">{port.name}</span
857
- >
765
+ <span class="config-form__port-order-name">{port.name}</span>
858
766
  <span
859
767
  class="config-form__port-order-badge"
860
768
  style="background-color:{getPortBackgroundColor(
861
769
  port.dataType,
862
- 15,
770
+ 15
863
771
  )};color:{getDataTypeColorToken(
864
- port.dataType,
865
- )};border:1px solid {getPortBackgroundColor(
866
- port.dataType,
867
- 30,
868
- )}"
772
+ port.dataType
773
+ )};border:1px solid {getPortBackgroundColor(port.dataType, 30)}"
869
774
  >
870
775
  {port.dataType}
871
776
  </span>
@@ -874,23 +779,19 @@
874
779
  type="button"
875
780
  disabled={isRequired}
876
781
  title={isRequired
877
- ? "Required ports cannot be hidden"
782
+ ? 'Required ports cannot be hidden'
878
783
  : isHidden
879
- ? "Show port"
880
- : "Hide port"}
784
+ ? 'Show port'
785
+ : 'Hide port'}
881
786
  class:active={isHidden}
882
- onclick={() => togglePortHidden("inputs", port.id)}
787
+ onclick={() => togglePortHidden('inputs', port.id)}
883
788
  >
884
- <Icon
885
- icon={isHidden
886
- ? "heroicons:eye-slash"
887
- : "heroicons:eye"}
888
- />
789
+ <Icon icon={isHidden ? 'heroicons:eye-slash' : 'heroicons:eye'} />
889
790
  </button>
890
791
  <button
891
792
  type="button"
892
793
  disabled={i === 0 || allInputPortsForUI.length === 1}
893
- onclick={() => movePort("inputs", port.id, -1)}
794
+ onclick={() => movePort('inputs', port.id, -1)}
894
795
  title="Move up"
895
796
  >
896
797
  <Icon icon="heroicons:chevron-up" />
@@ -899,7 +800,7 @@
899
800
  type="button"
900
801
  disabled={i === allInputPortsForUI.length - 1 ||
901
802
  allInputPortsForUI.length === 1}
902
- onclick={() => movePort("inputs", port.id, 1)}
803
+ onclick={() => movePort('inputs', port.id, 1)}
903
804
  title="Move down"
904
805
  >
905
806
  <Icon icon="heroicons:chevron-down" />
@@ -920,7 +821,7 @@
920
821
  <button
921
822
  type="button"
922
823
  class="config-form__port-order-reset"
923
- onclick={() => resetPortCustomizations("outputs")}
824
+ onclick={() => resetPortCustomizations('outputs')}
924
825
  title="Reset to default order and visibility"
925
826
  >
926
827
  <Icon icon="heroicons:arrow-uturn-left" />
@@ -931,26 +832,21 @@
931
832
  <ul class="config-form__port-order-list">
932
833
  {#each allOutputPortsForUI as port, i (port.id)}
933
834
  {@const isHidden =
934
- uiExtensionValues.hiddenPorts?.outputs?.includes(port.id) ??
935
- false}
835
+ uiExtensionValues.hiddenPorts?.outputs?.includes(port.id) ?? false}
936
836
  {@const isRequired = port.required ?? false}
937
837
  <li
938
838
  class="config-form__port-order-item"
939
839
  class:config-form__port-order-item--hidden={isHidden}
940
840
  >
941
- <span class="config-form__port-order-name">{port.name}</span
942
- >
841
+ <span class="config-form__port-order-name">{port.name}</span>
943
842
  <span
944
843
  class="config-form__port-order-badge"
945
844
  style="background-color:{getPortBackgroundColor(
946
845
  port.dataType,
947
- 15,
846
+ 15
948
847
  )};color:{getDataTypeColorToken(
949
- port.dataType,
950
- )};border:1px solid {getPortBackgroundColor(
951
- port.dataType,
952
- 30,
953
- )}"
848
+ port.dataType
849
+ )};border:1px solid {getPortBackgroundColor(port.dataType, 30)}"
954
850
  >
955
851
  {port.dataType}
956
852
  </span>
@@ -959,23 +855,19 @@
959
855
  type="button"
960
856
  disabled={isRequired}
961
857
  title={isRequired
962
- ? "Required ports cannot be hidden"
858
+ ? 'Required ports cannot be hidden'
963
859
  : isHidden
964
- ? "Show port"
965
- : "Hide port"}
860
+ ? 'Show port'
861
+ : 'Hide port'}
966
862
  class:active={isHidden}
967
- onclick={() => togglePortHidden("outputs", port.id)}
863
+ onclick={() => togglePortHidden('outputs', port.id)}
968
864
  >
969
- <Icon
970
- icon={isHidden
971
- ? "heroicons:eye-slash"
972
- : "heroicons:eye"}
973
- />
865
+ <Icon icon={isHidden ? 'heroicons:eye-slash' : 'heroicons:eye'} />
974
866
  </button>
975
867
  <button
976
868
  type="button"
977
869
  disabled={i === 0 || allOutputPortsForUI.length === 1}
978
- onclick={() => movePort("outputs", port.id, -1)}
870
+ onclick={() => movePort('outputs', port.id, -1)}
979
871
  title="Move up"
980
872
  >
981
873
  <Icon icon="heroicons:chevron-up" />
@@ -984,7 +876,7 @@
984
876
  type="button"
985
877
  disabled={i === allOutputPortsForUI.length - 1 ||
986
878
  allOutputPortsForUI.length === 1}
987
- onclick={() => movePort("outputs", port.id, 1)}
879
+ onclick={() => movePort('outputs', port.id, 1)}
988
880
  title="Move down"
989
881
  >
990
882
  <Icon icon="heroicons:chevron-down" />
@@ -1034,9 +926,7 @@
1034
926
  <div class="config-form__empty-icon">
1035
927
  <Icon icon="heroicons:cog-6-tooth" />
1036
928
  </div>
1037
- <p class="config-form__empty-text">
1038
- No configuration options available for this node.
1039
- </p>
929
+ <p class="config-form__empty-text">No configuration options available for this node.</p>
1040
930
  {#if configEditOptions?.externalEditLink}
1041
931
  <button
1042
932
  type="button"
@@ -1044,13 +934,9 @@
1044
934
  onclick={handleExternalEditClick}
1045
935
  >
1046
936
  <Icon
1047
- icon={configEditOptions.externalEditLink.icon ??
1048
- "heroicons:arrow-top-right-on-square"}
937
+ icon={configEditOptions.externalEditLink.icon ?? 'heroicons:arrow-top-right-on-square'}
1049
938
  />
1050
- <span
1051
- >{configEditOptions.externalEditLink.label ??
1052
- "Configure Externally"}</span
1053
- >
939
+ <span>{configEditOptions.externalEditLink.label ?? 'Configure Externally'}</span>
1054
940
  </button>
1055
941
  {/if}
1056
942
  </div>
@@ -1144,11 +1030,7 @@
1144
1030
  }
1145
1031
 
1146
1032
  .config-form__button--primary {
1147
- background: linear-gradient(
1148
- 135deg,
1149
- var(--fd-primary) 0%,
1150
- var(--fd-primary-hover) 100%
1151
- );
1033
+ background: linear-gradient(135deg, var(--fd-primary) 0%, var(--fd-primary-hover) 100%);
1152
1034
  color: var(--fd-primary-foreground);
1153
1035
  box-shadow:
1154
1036
  0 1px 3px rgba(59, 130, 246, 0.3),
@@ -1156,11 +1038,7 @@
1156
1038
  }
1157
1039
 
1158
1040
  .config-form__button--primary:hover {
1159
- background: linear-gradient(
1160
- 135deg,
1161
- var(--fd-primary-hover) 0%,
1162
- var(--fd-primary-hover) 100%
1163
- );
1041
+ background: linear-gradient(135deg, var(--fd-primary-hover) 0%, var(--fd-primary-hover) 100%);
1164
1042
  box-shadow:
1165
1043
  0 4px 12px rgba(59, 130, 246, 0.35),
1166
1044
  inset 0 1px 0 rgba(255, 255, 255, 0.1);
@@ -1381,7 +1259,7 @@
1381
1259
  margin: 0;
1382
1260
  padding: var(--fd-space-xl);
1383
1261
  font-size: var(--fd-text-xs);
1384
- font-family: "Monaco", "Menlo", "Ubuntu Mono", monospace;
1262
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
1385
1263
  color: var(--fd-foreground);
1386
1264
  overflow-x: auto;
1387
1265
  background-color: var(--fd-background);
@@ -1430,11 +1308,7 @@
1430
1308
  ============================================ */
1431
1309
 
1432
1310
  .config-form__admin-edit {
1433
- background: linear-gradient(
1434
- 135deg,
1435
- var(--fd-info-muted) 0%,
1436
- var(--fd-primary-muted) 100%
1437
- );
1311
+ background: linear-gradient(135deg, var(--fd-info-muted) 0%, var(--fd-primary-muted) 100%);
1438
1312
  border: 1px solid var(--fd-primary);
1439
1313
  border-radius: 0.625rem;
1440
1314
  overflow: hidden;
@@ -1446,11 +1320,7 @@
1446
1320
  align-items: center;
1447
1321
  gap: var(--fd-space-xs);
1448
1322
  padding: var(--fd-space-md) var(--fd-space-xl);
1449
- background: linear-gradient(
1450
- 135deg,
1451
- var(--fd-primary-muted) 0%,
1452
- var(--fd-primary-muted) 100%
1453
- );
1323
+ background: linear-gradient(135deg, var(--fd-primary-muted) 0%, var(--fd-primary-muted) 100%);
1454
1324
  border-bottom: 1px solid var(--fd-primary);
1455
1325
  font-size: 0.8125rem;
1456
1326
  font-weight: 600;
@@ -1622,11 +1492,7 @@
1622
1492
  ============================================ */
1623
1493
 
1624
1494
  .config-form__button--external {
1625
- background: linear-gradient(
1626
- 135deg,
1627
- var(--fd-accent) 0%,
1628
- var(--fd-primary) 100%
1629
- );
1495
+ background: linear-gradient(135deg, var(--fd-accent) 0%, var(--fd-primary) 100%);
1630
1496
  color: var(--fd-accent-foreground);
1631
1497
  box-shadow:
1632
1498
  0 1px 3px rgba(99, 102, 241, 0.3),
@@ -1634,11 +1500,7 @@
1634
1500
  }
1635
1501
 
1636
1502
  .config-form__button--external:hover {
1637
- background: linear-gradient(
1638
- 135deg,
1639
- var(--fd-accent-hover) 0%,
1640
- var(--fd-primary-hover) 100%
1641
- );
1503
+ background: linear-gradient(135deg, var(--fd-accent-hover) 0%, var(--fd-primary-hover) 100%);
1642
1504
  box-shadow:
1643
1505
  0 4px 12px rgba(99, 102, 241, 0.35),
1644
1506
  inset 0 1px 0 rgba(255, 255, 255, 0.1);