@flowdrop/flowdrop 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/README.md +94 -51
  2. package/dist/adapters/WorkflowAdapter.d.ts +1 -1
  3. package/dist/adapters/WorkflowAdapter.js +27 -47
  4. package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +2 -2
  5. package/dist/adapters/agentspec/AgentSpecAdapter.js +122 -133
  6. package/dist/adapters/agentspec/agentAdapter.d.ts +2 -2
  7. package/dist/adapters/agentspec/agentAdapter.js +10 -10
  8. package/dist/adapters/agentspec/autoLayout.d.ts +52 -6
  9. package/dist/adapters/agentspec/autoLayout.js +118 -23
  10. package/dist/adapters/agentspec/componentTypeDefaults.d.ts +1 -1
  11. package/dist/adapters/agentspec/componentTypeDefaults.js +120 -120
  12. package/dist/adapters/agentspec/defaultNodeTypes.d.ts +2 -2
  13. package/dist/adapters/agentspec/defaultNodeTypes.js +307 -307
  14. package/dist/adapters/agentspec/index.d.ts +10 -10
  15. package/dist/adapters/agentspec/index.js +6 -6
  16. package/dist/adapters/agentspec/validator.d.ts +2 -2
  17. package/dist/adapters/agentspec/validator.js +20 -22
  18. package/dist/api/enhanced-client.d.ts +3 -3
  19. package/dist/api/enhanced-client.js +72 -73
  20. package/dist/chat/commandClassifier.d.ts +19 -0
  21. package/dist/chat/commandClassifier.js +30 -0
  22. package/dist/chat/index.d.ts +27 -0
  23. package/dist/chat/index.js +32 -0
  24. package/dist/chat/responseParser.d.ts +21 -0
  25. package/dist/chat/responseParser.js +91 -0
  26. package/dist/commands/batch.d.ts +18 -0
  27. package/dist/commands/batch.js +54 -0
  28. package/dist/commands/executor.d.ts +37 -0
  29. package/dist/commands/executor.js +1133 -0
  30. package/dist/commands/index.d.ts +14 -0
  31. package/dist/commands/index.js +17 -0
  32. package/dist/commands/parser.d.ts +16 -0
  33. package/dist/commands/parser.js +295 -0
  34. package/dist/commands/positioner.d.ts +19 -0
  35. package/dist/commands/positioner.js +33 -0
  36. package/dist/commands/storeIntegration.svelte.d.ts +16 -0
  37. package/dist/commands/storeIntegration.svelte.js +67 -0
  38. package/dist/commands/types.d.ts +343 -0
  39. package/dist/commands/types.js +45 -0
  40. package/dist/components/App.svelte +522 -237
  41. package/dist/components/App.svelte.d.ts +11 -8
  42. package/dist/components/CanvasBanner.stories.svelte +10 -16
  43. package/dist/components/CanvasBanner.stories.svelte.d.ts +1 -1
  44. package/dist/components/CanvasBanner.svelte +2 -2
  45. package/dist/components/CanvasBanner.svelte.d.ts +1 -1
  46. package/dist/components/CanvasController.svelte +37 -0
  47. package/dist/components/CanvasController.svelte.d.ts +32 -0
  48. package/dist/components/ConfigForm.svelte +118 -256
  49. package/dist/components/ConfigForm.svelte.d.ts +2 -2
  50. package/dist/components/ConfigMappingRow.svelte +128 -0
  51. package/dist/components/ConfigMappingRow.svelte.d.ts +8 -0
  52. package/dist/components/ConfigModal.svelte +3 -3
  53. package/dist/components/ConfigModal.svelte.d.ts +1 -1
  54. package/dist/components/ConfigPanel.stories.svelte +19 -19
  55. package/dist/components/ConfigPanel.stories.svelte.d.ts +1 -1
  56. package/dist/components/ConfigPanel.svelte +57 -19
  57. package/dist/components/ConfigPanel.svelte.d.ts +3 -1
  58. package/dist/components/ConnectionLine.svelte +4 -4
  59. package/dist/components/EdgeRefresher.svelte +1 -1
  60. package/dist/components/FlowDropEdge.stories.svelte +110 -110
  61. package/dist/components/FlowDropEdge.svelte +11 -19
  62. package/dist/components/FlowDropEdge.svelte.d.ts +1 -1
  63. package/dist/components/FlowDropZone.svelte +6 -9
  64. package/dist/components/FlowDropZone.svelte.d.ts +1 -1
  65. package/dist/components/LoadingSpinner.stories.svelte +13 -13
  66. package/dist/components/LoadingSpinner.stories.svelte.d.ts +1 -1
  67. package/dist/components/LoadingSpinner.svelte +3 -3
  68. package/dist/components/LoadingSpinner.svelte.d.ts +1 -1
  69. package/dist/components/Logo.stories.svelte +4 -4
  70. package/dist/components/Logo.stories.svelte.d.ts +1 -1
  71. package/dist/components/Logo.svelte +3 -9
  72. package/dist/components/LogsSidebar.svelte +46 -53
  73. package/dist/components/LogsSidebar.svelte.d.ts +1 -1
  74. package/dist/components/MarkdownDisplay.stories.svelte +10 -14
  75. package/dist/components/MarkdownDisplay.stories.svelte.d.ts +1 -1
  76. package/dist/components/MarkdownDisplay.svelte +4 -6
  77. package/dist/components/Navbar.stories.svelte +19 -19
  78. package/dist/components/Navbar.stories.svelte.d.ts +1 -1
  79. package/dist/components/Navbar.svelte +28 -49
  80. package/dist/components/Navbar.svelte.d.ts +2 -2
  81. package/dist/components/NodeSidebar.svelte +55 -135
  82. package/dist/components/NodeSidebar.svelte.d.ts +1 -1
  83. package/dist/components/NodeStatusOverlay.stories.svelte +19 -31
  84. package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +1 -1
  85. package/dist/components/NodeStatusOverlay.svelte +40 -55
  86. package/dist/components/NodeStatusOverlay.svelte.d.ts +3 -3
  87. package/dist/components/NodeSwapPicker.svelte +493 -0
  88. package/dist/components/NodeSwapPicker.svelte.d.ts +16 -0
  89. package/dist/components/PipelineStatus.svelte +63 -89
  90. package/dist/components/PipelineStatus.svelte.d.ts +4 -4
  91. package/dist/components/PortCoordinateTracker.svelte +5 -7
  92. package/dist/components/PortCoordinateTracker.svelte.d.ts +1 -1
  93. package/dist/components/PortMappingRow.svelte +205 -0
  94. package/dist/components/PortMappingRow.svelte.d.ts +12 -0
  95. package/dist/components/ReadOnlyDetails.svelte +1 -1
  96. package/dist/components/SchemaForm.stories.svelte +53 -53
  97. package/dist/components/SchemaForm.stories.svelte.d.ts +1 -1
  98. package/dist/components/SchemaForm.svelte +24 -51
  99. package/dist/components/SchemaForm.svelte.d.ts +2 -2
  100. package/dist/components/SettingsModal.svelte +6 -9
  101. package/dist/components/SettingsModal.svelte.d.ts +1 -1
  102. package/dist/components/SettingsPanel.svelte +138 -158
  103. package/dist/components/SettingsPanel.svelte.d.ts +1 -1
  104. package/dist/components/StatusIcon.stories.svelte +16 -29
  105. package/dist/components/StatusIcon.stories.svelte.d.ts +1 -1
  106. package/dist/components/StatusIcon.svelte +19 -19
  107. package/dist/components/StatusIcon.svelte.d.ts +2 -2
  108. package/dist/components/StatusLabel.stories.svelte +8 -8
  109. package/dist/components/StatusLabel.stories.svelte.d.ts +1 -1
  110. package/dist/components/SwapMappingEditor.svelte +529 -0
  111. package/dist/components/SwapMappingEditor.svelte.d.ts +12 -0
  112. package/dist/components/ThemeToggle.stories.svelte +10 -10
  113. package/dist/components/ThemeToggle.stories.svelte.d.ts +1 -1
  114. package/dist/components/ThemeToggle.svelte +22 -33
  115. package/dist/components/ThemeToggle.svelte.d.ts +1 -1
  116. package/dist/components/UniversalNode.svelte +29 -41
  117. package/dist/components/UniversalNode.svelte.d.ts +3 -3
  118. package/dist/components/WorkflowEditor.svelte +210 -170
  119. package/dist/components/WorkflowEditor.svelte.d.ts +12 -4
  120. package/dist/components/chat/AIChatPanel.svelte +797 -0
  121. package/dist/components/chat/AIChatPanel.svelte.d.ts +13 -0
  122. package/dist/components/chat/CommandPreview.svelte +234 -0
  123. package/dist/components/chat/CommandPreview.svelte.d.ts +9 -0
  124. package/dist/components/console/CommandConsole.stories.svelte +111 -0
  125. package/dist/components/console/CommandConsole.stories.svelte.d.ts +27 -0
  126. package/dist/components/console/CommandConsole.svelte +263 -0
  127. package/dist/components/console/CommandConsole.svelte.d.ts +11 -0
  128. package/dist/components/console/ConsoleAutocomplete.svelte +142 -0
  129. package/dist/components/console/ConsoleAutocomplete.svelte.d.ts +21 -0
  130. package/dist/components/console/ConsoleInput.svelte +771 -0
  131. package/dist/components/console/ConsoleInput.svelte.d.ts +16 -0
  132. package/dist/components/console/ConsoleOutput.svelte +116 -0
  133. package/dist/components/console/ConsoleOutput.svelte.d.ts +11 -0
  134. package/dist/components/console/formatters.d.ts +26 -0
  135. package/dist/components/console/formatters.js +116 -0
  136. package/dist/components/form/FormArray.svelte +75 -132
  137. package/dist/components/form/FormArray.svelte.d.ts +1 -1
  138. package/dist/components/form/FormAutocomplete.svelte +65 -108
  139. package/dist/components/form/FormAutocomplete.svelte.d.ts +1 -1
  140. package/dist/components/form/FormCheckboxGroup.stories.svelte +13 -16
  141. package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +1 -1
  142. package/dist/components/form/FormCheckboxGroup.svelte +2 -2
  143. package/dist/components/form/FormCodeEditor.svelte +42 -56
  144. package/dist/components/form/FormField.svelte +79 -90
  145. package/dist/components/form/FormField.svelte.d.ts +2 -2
  146. package/dist/components/form/FormFieldLight.svelte +72 -88
  147. package/dist/components/form/FormFieldLight.svelte.d.ts +1 -1
  148. package/dist/components/form/FormFieldWrapper.stories.svelte +14 -14
  149. package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +1 -1
  150. package/dist/components/form/FormFieldWrapper.svelte +2 -9
  151. package/dist/components/form/FormFieldWrapper.svelte.d.ts +1 -1
  152. package/dist/components/form/FormFieldset.svelte +3 -3
  153. package/dist/components/form/FormFieldset.svelte.d.ts +2 -2
  154. package/dist/components/form/FormMarkdownEditor.svelte +123 -156
  155. package/dist/components/form/FormNumberField.stories.svelte +18 -18
  156. package/dist/components/form/FormNumberField.stories.svelte.d.ts +1 -1
  157. package/dist/components/form/FormNumberField.svelte +6 -6
  158. package/dist/components/form/FormRangeField.stories.svelte +13 -13
  159. package/dist/components/form/FormRangeField.stories.svelte.d.ts +1 -1
  160. package/dist/components/form/FormRangeField.svelte +4 -12
  161. package/dist/components/form/FormSelect.stories.svelte +21 -21
  162. package/dist/components/form/FormSelect.stories.svelte.d.ts +1 -1
  163. package/dist/components/form/FormSelect.svelte +5 -5
  164. package/dist/components/form/FormSelect.svelte.d.ts +1 -1
  165. package/dist/components/form/FormTemplateEditor.svelte +126 -175
  166. package/dist/components/form/FormTemplateEditor.svelte.d.ts +1 -1
  167. package/dist/components/form/FormTextField.stories.svelte +17 -23
  168. package/dist/components/form/FormTextField.stories.svelte.d.ts +1 -1
  169. package/dist/components/form/FormTextField.svelte +4 -4
  170. package/dist/components/form/FormTextarea.stories.svelte +18 -21
  171. package/dist/components/form/FormTextarea.stories.svelte.d.ts +1 -1
  172. package/dist/components/form/FormTextarea.svelte +4 -4
  173. package/dist/components/form/FormToggle.stories.svelte +13 -16
  174. package/dist/components/form/FormToggle.stories.svelte.d.ts +1 -1
  175. package/dist/components/form/FormToggle.svelte +3 -3
  176. package/dist/components/form/FormUISchemaRenderer.svelte +12 -19
  177. package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +3 -3
  178. package/dist/components/form/index.d.ts +19 -19
  179. package/dist/components/form/index.js +18 -18
  180. package/dist/components/form/templateAutocomplete.d.ts +2 -2
  181. package/dist/components/form/templateAutocomplete.js +55 -64
  182. package/dist/components/form/types.d.ts +6 -6
  183. package/dist/components/form/types.js +4 -9
  184. package/dist/components/icons/AlertCircleIcon.svelte +1 -6
  185. package/dist/components/icons/CogIcon.svelte +1 -6
  186. package/dist/components/interrupt/ChoicePrompt.stories.svelte +27 -27
  187. package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +1 -1
  188. package/dist/components/interrupt/ChoicePrompt.svelte +17 -41
  189. package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +1 -1
  190. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +17 -17
  191. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +1 -1
  192. package/dist/components/interrupt/ConfirmationPrompt.svelte +10 -16
  193. package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +1 -1
  194. package/dist/components/interrupt/FormPrompt.svelte +10 -15
  195. package/dist/components/interrupt/FormPrompt.svelte.d.ts +1 -1
  196. package/dist/components/interrupt/InterruptBubble.svelte +87 -121
  197. package/dist/components/interrupt/InterruptBubble.svelte.d.ts +2 -2
  198. package/dist/components/interrupt/ReviewPrompt.stories.svelte +37 -37
  199. package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +1 -1
  200. package/dist/components/interrupt/ReviewPrompt.svelte +55 -75
  201. package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +1 -1
  202. package/dist/components/interrupt/TextInputPrompt.stories.svelte +16 -17
  203. package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +1 -1
  204. package/dist/components/interrupt/TextInputPrompt.svelte +13 -18
  205. package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +1 -1
  206. package/dist/components/interrupt/index.d.ts +6 -5
  207. package/dist/components/interrupt/index.js +6 -5
  208. package/dist/components/layouts/MainLayout.svelte +46 -84
  209. package/dist/components/layouts/MainLayout.svelte.d.ts +6 -6
  210. package/dist/components/nodes/GatewayNode.stories.svelte +64 -65
  211. package/dist/components/nodes/GatewayNode.svelte +37 -70
  212. package/dist/components/nodes/GatewayNode.svelte.d.ts +3 -3
  213. package/dist/components/nodes/IdeaNode.stories.svelte +25 -26
  214. package/dist/components/nodes/IdeaNode.svelte +22 -36
  215. package/dist/components/nodes/IdeaNode.svelte.d.ts +1 -1
  216. package/dist/components/nodes/NotesNode.stories.svelte +37 -38
  217. package/dist/components/nodes/NotesNode.svelte +28 -39
  218. package/dist/components/nodes/NotesNode.svelte.d.ts +1 -1
  219. package/dist/components/nodes/SimpleNode.stories.svelte +137 -138
  220. package/dist/components/nodes/SimpleNode.svelte +44 -74
  221. package/dist/components/nodes/SimpleNode.svelte.d.ts +1 -1
  222. package/dist/components/nodes/SquareNode.stories.svelte +75 -75
  223. package/dist/components/nodes/SquareNode.svelte +42 -68
  224. package/dist/components/nodes/SquareNode.svelte.d.ts +1 -1
  225. package/dist/components/nodes/TerminalNode.stories.svelte +10 -10
  226. package/dist/components/nodes/TerminalNode.svelte +74 -112
  227. package/dist/components/nodes/TerminalNode.svelte.d.ts +1 -1
  228. package/dist/components/nodes/ToolNode.stories.svelte +115 -116
  229. package/dist/components/nodes/ToolNode.svelte +31 -64
  230. package/dist/components/nodes/ToolNode.svelte.d.ts +1 -1
  231. package/dist/components/nodes/WorkflowNode.stories.svelte +84 -89
  232. package/dist/components/nodes/WorkflowNode.svelte +50 -103
  233. package/dist/components/nodes/WorkflowNode.svelte.d.ts +3 -3
  234. package/dist/components/playground/ChatPanel.svelte +47 -103
  235. package/dist/components/playground/ExecutionLogs.svelte +45 -68
  236. package/dist/components/playground/InputCollector.svelte +32 -51
  237. package/dist/components/playground/MessageBubble.stories.svelte +25 -25
  238. package/dist/components/playground/MessageBubble.stories.svelte.d.ts +1 -1
  239. package/dist/components/playground/MessageBubble.svelte +54 -70
  240. package/dist/components/playground/MessageBubble.svelte.d.ts +1 -1
  241. package/dist/components/playground/Playground.svelte +60 -91
  242. package/dist/components/playground/Playground.svelte.d.ts +3 -3
  243. package/dist/components/playground/PlaygroundModal.svelte +8 -12
  244. package/dist/components/playground/PlaygroundModal.svelte.d.ts +3 -3
  245. package/dist/components/playground/SessionManager.svelte +34 -40
  246. package/dist/components/playground/SessionManager.svelte.d.ts +1 -1
  247. package/dist/config/agentSpecEndpoints.d.ts +1 -1
  248. package/dist/config/agentSpecEndpoints.js +20 -20
  249. package/dist/config/constants.js +2 -2
  250. package/dist/config/defaultCategories.d.ts +1 -1
  251. package/dist/config/defaultCategories.js +86 -86
  252. package/dist/config/defaultPortConfig.d.ts +1 -1
  253. package/dist/config/defaultPortConfig.js +144 -144
  254. package/dist/config/endpoints.d.ts +12 -4
  255. package/dist/config/endpoints.js +70 -65
  256. package/dist/config/runtimeConfig.d.ts +2 -2
  257. package/dist/config/runtimeConfig.js +8 -8
  258. package/dist/core/index.d.ts +68 -63
  259. package/dist/core/index.js +44 -35
  260. package/dist/display/index.d.ts +2 -2
  261. package/dist/display/index.js +2 -2
  262. package/dist/editor/index.d.ts +64 -62
  263. package/dist/editor/index.js +57 -55
  264. package/dist/form/code.d.ts +5 -5
  265. package/dist/form/code.js +14 -14
  266. package/dist/form/fieldRegistry.d.ts +3 -3
  267. package/dist/form/fieldRegistry.js +9 -11
  268. package/dist/form/full.d.ts +8 -8
  269. package/dist/form/full.js +9 -9
  270. package/dist/form/index.d.ts +18 -18
  271. package/dist/form/index.js +16 -16
  272. package/dist/form/markdown.d.ts +4 -4
  273. package/dist/form/markdown.js +8 -8
  274. package/dist/helpers/proximityConnect.d.ts +3 -3
  275. package/dist/helpers/proximityConnect.js +40 -35
  276. package/dist/helpers/workflowEditorHelper.d.ts +8 -58
  277. package/dist/helpers/workflowEditorHelper.js +73 -292
  278. package/dist/index.d.ts +6 -6
  279. package/dist/index.js +6 -6
  280. package/dist/mocks/app-environment.js +2 -2
  281. package/dist/mocks/app-forms.js +1 -1
  282. package/dist/mocks/app-navigation.js +2 -2
  283. package/dist/mocks/app-stores.js +3 -3
  284. package/dist/playground/index.d.ts +19 -19
  285. package/dist/playground/index.js +16 -16
  286. package/dist/playground/mount.d.ts +3 -3
  287. package/dist/playground/mount.js +24 -24
  288. package/dist/registry/builtinFormats.js +13 -13
  289. package/dist/registry/builtinNodes.d.ts +2 -2
  290. package/dist/registry/builtinNodes.js +77 -77
  291. package/dist/registry/index.d.ts +4 -4
  292. package/dist/registry/index.js +4 -4
  293. package/dist/registry/nodeComponentRegistry.d.ts +8 -8
  294. package/dist/registry/nodeComponentRegistry.js +9 -11
  295. package/dist/registry/plugin.d.ts +2 -2
  296. package/dist/registry/plugin.js +11 -11
  297. package/dist/registry/workflowFormatRegistry.d.ts +3 -3
  298. package/dist/registry/workflowFormatRegistry.js +2 -2
  299. package/dist/schema/index.d.ts +1 -1
  300. package/dist/schema/index.js +2 -2
  301. package/dist/schemas/v1/workflow.schema.json +107 -22
  302. package/dist/services/agentSpecExecutionService.d.ts +3 -3
  303. package/dist/services/agentSpecExecutionService.js +55 -56
  304. package/dist/services/api.d.ts +2 -2
  305. package/dist/services/api.js +37 -37
  306. package/dist/services/apiVariableService.d.ts +1 -1
  307. package/dist/services/apiVariableService.js +34 -41
  308. package/dist/services/autoSaveService.js +8 -8
  309. package/dist/services/categoriesApi.d.ts +2 -2
  310. package/dist/services/categoriesApi.js +8 -8
  311. package/dist/services/chatService.d.ts +65 -0
  312. package/dist/services/chatService.js +131 -0
  313. package/dist/services/draftStorage.d.ts +1 -1
  314. package/dist/services/draftStorage.js +11 -11
  315. package/dist/services/dynamicSchemaService.d.ts +1 -1
  316. package/dist/services/dynamicSchemaService.js +39 -41
  317. package/dist/services/globalSave.d.ts +2 -2
  318. package/dist/services/globalSave.js +38 -41
  319. package/dist/services/historyService.d.ts +7 -5
  320. package/dist/services/historyService.js +29 -14
  321. package/dist/services/interruptService.d.ts +1 -1
  322. package/dist/services/interruptService.js +29 -35
  323. package/dist/services/nodeExecutionService.d.ts +1 -1
  324. package/dist/services/nodeExecutionService.js +44 -45
  325. package/dist/services/playgroundService.d.ts +1 -1
  326. package/dist/services/playgroundService.js +29 -29
  327. package/dist/services/portConfigApi.d.ts +2 -2
  328. package/dist/services/portConfigApi.js +8 -8
  329. package/dist/services/settingsService.d.ts +2 -2
  330. package/dist/services/settingsService.js +19 -25
  331. package/dist/services/toastService.d.ts +4 -4
  332. package/dist/services/toastService.js +33 -33
  333. package/dist/services/variableService.d.ts +1 -1
  334. package/dist/services/variableService.js +36 -36
  335. package/dist/services/workflowStorage.d.ts +2 -2
  336. package/dist/services/workflowStorage.js +13 -13
  337. package/dist/settings/index.d.ts +7 -7
  338. package/dist/settings/index.js +6 -6
  339. package/dist/skins/default.d.ts +1 -1
  340. package/dist/skins/default.js +1 -1
  341. package/dist/skins/index.d.ts +3 -3
  342. package/dist/skins/index.js +7 -7
  343. package/dist/skins/slate.d.ts +1 -1
  344. package/dist/skins/slate.js +69 -69
  345. package/dist/stores/categoriesStore.svelte.d.ts +1 -1
  346. package/dist/stores/categoriesStore.svelte.js +5 -5
  347. package/dist/stores/editorStateMachine.svelte.d.ts +2 -2
  348. package/dist/stores/editorStateMachine.svelte.js +34 -34
  349. package/dist/stores/historyStore.svelte.d.ts +4 -4
  350. package/dist/stores/historyStore.svelte.js +4 -4
  351. package/dist/stores/interruptStore.svelte.d.ts +3 -3
  352. package/dist/stores/interruptStore.svelte.js +27 -22
  353. package/dist/stores/playgroundStore.svelte.d.ts +3 -3
  354. package/dist/stores/playgroundStore.svelte.js +29 -23
  355. package/dist/stores/portCoordinateStore.svelte.d.ts +6 -2
  356. package/dist/stores/portCoordinateStore.svelte.js +30 -39
  357. package/dist/stores/settingsStore.svelte.d.ts +2 -2
  358. package/dist/stores/settingsStore.svelte.js +57 -62
  359. package/dist/stores/workflowStore.svelte.d.ts +34 -5
  360. package/dist/stores/workflowStore.svelte.js +127 -108
  361. package/dist/stories/CanvasDecorator.svelte +7 -10
  362. package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
  363. package/dist/stories/EdgeDecorator.svelte +28 -31
  364. package/dist/stories/EdgeDecorator.svelte.d.ts +1 -1
  365. package/dist/stories/NodeDecorator.svelte +14 -20
  366. package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
  367. package/dist/stories/utils.d.ts +2 -2
  368. package/dist/stories/utils.js +89 -93
  369. package/dist/styles/base.css +16 -50
  370. package/dist/styles/tokens.css +10 -28
  371. package/dist/svelte-app.d.ts +10 -10
  372. package/dist/svelte-app.js +39 -39
  373. package/dist/themes/default.d.ts +1 -1
  374. package/dist/themes/default.js +4 -4
  375. package/dist/themes/index.d.ts +3 -3
  376. package/dist/themes/index.js +11 -11
  377. package/dist/themes/minimal.d.ts +1 -1
  378. package/dist/themes/minimal.js +5 -5
  379. package/dist/types/agentspec.d.ts +18 -18
  380. package/dist/types/agentspec.js +2 -2
  381. package/dist/types/auth.d.ts +1 -1
  382. package/dist/types/auth.js +6 -6
  383. package/dist/types/chat.d.ts +63 -0
  384. package/dist/types/chat.js +9 -0
  385. package/dist/types/config.d.ts +6 -6
  386. package/dist/types/events.d.ts +28 -2
  387. package/dist/types/events.js +2 -1
  388. package/dist/types/index.d.ts +40 -32
  389. package/dist/types/index.js +6 -6
  390. package/dist/types/interrupt.d.ts +6 -6
  391. package/dist/types/interrupt.js +21 -21
  392. package/dist/types/interruptState.d.ts +12 -12
  393. package/dist/types/interruptState.js +66 -66
  394. package/dist/types/playground.d.ts +7 -7
  395. package/dist/types/playground.js +14 -14
  396. package/dist/types/settings.d.ts +12 -4
  397. package/dist/types/settings.js +21 -23
  398. package/dist/types/skin.d.ts +1 -1
  399. package/dist/types/theme.d.ts +2 -2
  400. package/dist/types/uischema.d.ts +4 -4
  401. package/dist/types/uischema.js +3 -3
  402. package/dist/utils/colors.d.ts +1 -1
  403. package/dist/utils/colors.js +95 -97
  404. package/dist/utils/config.d.ts +2 -2
  405. package/dist/utils/config.js +48 -48
  406. package/dist/utils/connections.d.ts +2 -2
  407. package/dist/utils/connections.js +15 -15
  408. package/dist/utils/edgeStyling.d.ts +42 -0
  409. package/dist/utils/edgeStyling.js +173 -0
  410. package/dist/utils/errors.js +3 -3
  411. package/dist/utils/fetchWithAuth.d.ts +1 -1
  412. package/dist/utils/fetchWithAuth.js +2 -2
  413. package/dist/utils/handleIds.d.ts +2 -2
  414. package/dist/utils/handleIds.js +8 -8
  415. package/dist/utils/handlePositioning.d.ts +1 -1
  416. package/dist/utils/handlePositioning.js +2 -2
  417. package/dist/utils/icons.d.ts +1 -1
  418. package/dist/utils/icons.js +74 -74
  419. package/dist/utils/logger.d.ts +1 -1
  420. package/dist/utils/logger.js +7 -7
  421. package/dist/utils/nodeIds.d.ts +31 -0
  422. package/dist/utils/nodeIds.js +42 -0
  423. package/dist/utils/nodeStatus.d.ts +1 -1
  424. package/dist/utils/nodeStatus.js +48 -48
  425. package/dist/utils/nodeSwap.d.ts +221 -0
  426. package/dist/utils/nodeSwap.js +680 -0
  427. package/dist/utils/nodeTypes.d.ts +1 -1
  428. package/dist/utils/nodeTypes.js +20 -21
  429. package/dist/utils/nodeWrapper.d.ts +7 -7
  430. package/dist/utils/nodeWrapper.js +19 -21
  431. package/dist/utils/performanceUtils.d.ts +1 -1
  432. package/dist/utils/performanceUtils.js +1 -2
  433. package/dist/utils/portUtils.d.ts +2 -2
  434. package/dist/utils/portUtils.js +1 -1
  435. package/dist/utils/sanitize.js +1 -1
  436. package/dist/utils/uischema.d.ts +2 -2
  437. package/dist/utils/uischema.js +8 -8
  438. package/dist/utils/validation.js +8 -8
  439. package/package.json +12 -11
  440. package/dist/helpers/nodeLayoutHelper.d.ts +0 -14
  441. package/dist/helpers/nodeLayoutHelper.js +0 -19
@@ -2,241 +2,44 @@
2
2
  * Workflow Editor Helper
3
3
  * Contains business logic for workflow operations
4
4
  */
5
- import { MarkerType } from "@xyflow/svelte";
6
- import { hasCycles, hasInvalidCycles, isLoopbackEdge, } from "../utils/connections.js";
7
- import { workflowApi, nodeApi, setEndpointConfig } from "../services/api.js";
8
- import { v4 as uuidv4 } from "uuid";
9
- import { workflowActions } from "../stores/workflowStore.svelte.js";
10
- import { nodeExecutionService } from "../services/nodeExecutionService.js";
11
- import { WorkflowAdapter } from "../adapters/WorkflowAdapter.js";
12
- import { AgentSpecAdapter } from "../adapters/agentspec/AgentSpecAdapter.js";
13
- import { validateForAgentSpecExport } from "../adapters/agentspec/validator.js";
14
- import { extractPortId } from "../utils/handleIds.js";
15
- import { EDGE_MARKER_SIZES } from "../config/constants.js";
16
- import { logger } from "../utils/logger.js";
5
+ import { hasCycles, hasInvalidCycles } from '../utils/connections.js';
6
+ import { workflowApi, nodeApi, setEndpointConfig } from '../services/api.js';
7
+ import { v4 as uuidv4 } from 'uuid';
8
+ import { workflowActions } from '../stores/workflowStore.svelte.js';
9
+ import { nodeExecutionService } from '../services/nodeExecutionService.js';
10
+ import { WorkflowAdapter } from '../adapters/WorkflowAdapter.js';
11
+ import { AgentSpecAdapter } from '../adapters/agentspec/AgentSpecAdapter.js';
12
+ import { validateForAgentSpecExport } from '../adapters/agentspec/validator.js';
13
+ import { extractPortId } from '../utils/handleIds.js';
14
+ import { logger } from '../utils/logger.js';
15
+ import { generateNodeId, extractConfigDefaults } from '../utils/nodeIds.js';
16
+ import { applyConnectionStyling as applyConnectionStylingUtil, updateEdgeStyles as updateEdgeStylesUtil, isGatewayBranch as isGatewayBranchUtil, getPortDataType as getPortDataTypeUtil, getEdgeCategory as getEdgeCategoryUtil, getEdgeCategoryWithLoopback as getEdgeCategoryWithLoopbackUtil } from '../utils/edgeStyling.js';
17
+ export { generateNodeId, extractConfigDefaults } from '../utils/nodeIds.js';
17
18
  /**
18
- * Generate a unique node ID based on node type and existing nodes
19
- * Format: <node_type>.<number>
20
- * Example: boolean_gateway.1, calculator.2
21
- */
22
- export function generateNodeId(nodeTypeId, existingNodes) {
23
- // Count how many nodes of this type already exist
24
- const existingNodeIds = existingNodes
25
- .filter((node) => node.data?.metadata?.id === nodeTypeId)
26
- .map((node) => node.id);
27
- // Extract the numbers from existing IDs with the same prefix
28
- const existingNumbers = existingNodeIds
29
- .map((id) => {
30
- const match = id.match(new RegExp(`^${nodeTypeId}\\.(\\d+)$`));
31
- return match ? parseInt(match[1], 10) : 0;
32
- })
33
- .filter((num) => num > 0);
34
- // Find the next available number (highest + 1)
35
- const nextNumber = existingNumbers.length > 0 ? Math.max(...existingNumbers) + 1 : 1;
36
- return `${nodeTypeId}.${nextNumber}`;
37
- }
38
- /**
39
- * Edge styling configuration based on source port data type
19
+ * Edge styling configuration based on source port data type.
20
+ * Delegates to standalone functions in utils/edgeStyling.ts.
40
21
  */
41
22
  export class EdgeStylingHelper {
42
- /**
43
- * Extract the port ID from a handle ID
44
- * @param handleId - The handle ID string (e.g., "sample-node.1-output-trigger" or "trigger")
45
- * @returns The port ID (e.g., "trigger") or the handleId itself for short format
46
- */
47
23
  static extractPortIdFromHandle(handleId) {
48
24
  return extractPortId(handleId);
49
25
  }
50
- /**
51
- * Check if a port ID matches a dynamic branch in a Gateway node
52
- * Gateway nodes store branches in config.branches array
53
- * @param node - The workflow node to check
54
- * @param portId - The port ID to look up
55
- * @returns true if the portId matches a gateway branch
56
- */
57
26
  static isGatewayBranch(node, portId) {
58
- // Check if this is a gateway node with dynamic branches
59
- const nodeType = node.data?.metadata?.type || node.type;
60
- if (nodeType !== "gateway") {
61
- return false;
62
- }
63
- // Check if the portId matches a branch name in config.branches
64
- const branches = node.data?.config?.branches;
65
- if (!branches || !Array.isArray(branches)) {
66
- return false;
67
- }
68
- return branches.some((branch) => branch.name === portId);
27
+ return isGatewayBranchUtil(node, portId);
69
28
  }
70
- /**
71
- * Get the data type of a port from a node's metadata
72
- * Also handles dynamic ports like Gateway branches
73
- * @param node - The workflow node containing the port
74
- * @param portId - The port ID to look up
75
- * @param portType - Whether to look in "inputs" or "outputs"
76
- * @returns The port's dataType or null if not found
77
- */
78
29
  static getPortDataType(node, portId, portType) {
79
- // First, check static ports in metadata
80
- const ports = portType === "output"
81
- ? node.data?.metadata?.outputs
82
- : node.data?.metadata?.inputs;
83
- if (ports && Array.isArray(ports)) {
84
- const port = ports.find((p) => p.id === portId);
85
- if (port?.dataType) {
86
- return port.dataType;
87
- }
88
- }
89
- // Check dynamic ports from config (dynamicInputs/dynamicOutputs)
90
- const dynamicKey = portType === "output" ? "dynamicOutputs" : "dynamicInputs";
91
- const dynamicPorts = node.data?.config?.[dynamicKey];
92
- if (dynamicPorts && Array.isArray(dynamicPorts)) {
93
- const dynamicPort = dynamicPorts.find((p) => p.name === portId);
94
- if (dynamicPort?.dataType) {
95
- return dynamicPort.dataType;
96
- }
97
- }
98
- // For output ports, also check dynamic Gateway branches
99
- // Gateway branches are always trigger type (control flow)
100
- if (portType === "output" && this.isGatewayBranch(node, portId)) {
101
- return "trigger";
102
- }
103
- return null;
30
+ return getPortDataTypeUtil(node, portId, portType);
104
31
  }
105
- /**
106
- * Determine the edge category based on source port data type
107
- * Note: This method does not check for loopback edges.
108
- * Use getEdgeCategoryWithLoopback() for full edge categorization.
109
- *
110
- * @param sourcePortDataType - The data type of the source output port
111
- * @returns The edge category for styling
112
- */
113
32
  static getEdgeCategory(sourcePortDataType) {
114
- if (sourcePortDataType === "trigger") {
115
- return "trigger";
116
- }
117
- if (sourcePortDataType === "tool") {
118
- return "tool";
119
- }
120
- // All other data types (string, number, boolean, array, etc.) are "data" edges
121
- return "data";
33
+ return getEdgeCategoryUtil(sourcePortDataType);
122
34
  }
123
- /**
124
- * Determine the full edge category including loopback detection
125
- * Loopback edges take precedence over source port data type
126
- *
127
- * @param edge - The edge to categorize
128
- * @param sourcePortDataType - The data type of the source output port
129
- * @returns The edge category for styling
130
- */
131
35
  static getEdgeCategoryWithLoopback(edge, sourcePortDataType) {
132
- // Loopback edges are identified by their target handle
133
- // Check this first as it takes precedence
134
- if (isLoopbackEdge(edge)) {
135
- return "loopback";
136
- }
137
- // Fall back to source port data type categorization
138
- return this.getEdgeCategory(sourcePortDataType);
36
+ return getEdgeCategoryWithLoopbackUtil(edge, sourcePortDataType);
139
37
  }
140
- /**
141
- * Apply custom styling to connection edges based on edge type:
142
- * - Loopback: Dashed gray line for loop iteration (targets loop_back port)
143
- * - Trigger ports: Solid black line with arrow
144
- * - Tool ports: Dashed amber line with arrow
145
- * - Data ports: Normal gray line with arrow
146
- */
147
38
  static applyConnectionStyling(edge, sourceNode, targetNode) {
148
- // Extract port ID from sourceHandle
149
- const sourcePortId = this.extractPortIdFromHandle(edge.sourceHandle);
150
- // Get the source port's data type
151
- const sourcePortDataType = sourcePortId
152
- ? this.getPortDataType(sourceNode, sourcePortId, "output")
153
- : null;
154
- // Determine edge category (loopback takes precedence)
155
- const edgeCategory = this.getEdgeCategoryWithLoopback(edge, sourcePortDataType);
156
- // Apply styling based on edge category
157
- // Marker colors use CSS custom properties so they respond to theme changes automatically
158
- switch (edgeCategory) {
159
- case "loopback":
160
- // Loopback edges: dashed gray line for loop iteration
161
- edge.style =
162
- "stroke: var(--fd-edge-loopback); stroke-dasharray: var(--fd-edge-loopback-dasharray); stroke-width: var(--fd-edge-loopback-width); opacity: var(--fd-edge-loopback-opacity);";
163
- edge.class = "flowdrop--edge--loopback";
164
- edge.markerEnd = {
165
- type: MarkerType.ArrowClosed,
166
- ...EDGE_MARKER_SIZES.loopback,
167
- color: "var(--fd-edge-loopback)",
168
- };
169
- break;
170
- case "trigger":
171
- // Trigger edges: solid dark line for control flow
172
- edge.style =
173
- "stroke: var(--fd-edge-trigger); stroke-width: var(--fd-edge-trigger-width);";
174
- edge.class = "flowdrop--edge--trigger";
175
- edge.markerEnd = {
176
- type: MarkerType.ArrowClosed,
177
- ...EDGE_MARKER_SIZES.trigger,
178
- color: "var(--fd-edge-trigger)",
179
- };
180
- break;
181
- case "tool":
182
- // Tool edges: dashed amber line
183
- edge.style = "stroke: var(--fd-edge-tool); stroke-dasharray: 5 3;";
184
- edge.class = "flowdrop--edge--tool";
185
- edge.markerEnd = {
186
- type: MarkerType.ArrowClosed,
187
- ...EDGE_MARKER_SIZES.tool,
188
- color: "var(--fd-edge-tool)",
189
- };
190
- break;
191
- case "data":
192
- default:
193
- // Data edges: normal gray line
194
- edge.style = "stroke: var(--fd-edge-data);";
195
- edge.class = "flowdrop--edge--data";
196
- edge.markerEnd = {
197
- type: MarkerType.ArrowClosed,
198
- ...EDGE_MARKER_SIZES.data,
199
- color: "var(--fd-edge-data)",
200
- };
201
- break;
202
- }
203
- // Store metadata in edge data for API and persistence
204
- edge.data = {
205
- ...edge.data,
206
- metadata: {
207
- ...(edge.data?.metadata || {}),
208
- edgeType: edgeCategory,
209
- sourcePortDataType: sourcePortDataType ?? undefined,
210
- },
211
- targetNodeType: targetNode.type,
212
- targetCategory: targetNode.data.metadata.category,
213
- };
39
+ applyConnectionStylingUtil(edge, sourceNode, targetNode);
214
40
  }
215
- /**
216
- * Update existing edges with custom styling rules
217
- */
218
41
  static updateEdgeStyles(edges, nodes) {
219
- return edges.map((edge) => {
220
- // Find source and target nodes
221
- const sourceNode = nodes.find((node) => node.id === edge.source);
222
- const targetNode = nodes.find((node) => node.id === edge.target);
223
- // Create a copy of the edge
224
- const updatedEdge = { ...edge };
225
- if (!sourceNode || !targetNode) {
226
- // Set default edgeType even when nodes are not found
227
- updatedEdge.data = {
228
- ...updatedEdge.data,
229
- metadata: {
230
- ...(updatedEdge.data?.metadata || {}),
231
- edgeType: "data",
232
- },
233
- };
234
- return updatedEdge;
235
- }
236
- // Apply full styling when nodes are available
237
- this.applyConnectionStyling(updatedEdge, sourceNode, targetNode);
238
- return updatedEdge;
239
- });
42
+ return updateEdgeStylesUtil(edges, nodes);
240
43
  }
241
44
  }
242
45
  /**
@@ -257,33 +60,29 @@ export class NodeOperationsHelper {
257
60
  return fetchedNodes;
258
61
  }
259
62
  catch (error) {
260
- logger.error("Failed to load nodes from API:", error);
63
+ logger.error('Failed to load nodes from API:', error);
261
64
  // Use fallback sample nodes
262
65
  return [
263
66
  {
264
- id: "text-input",
265
- name: "Text Input",
266
- category: "inputs",
267
- description: "Simple text input field",
268
- version: "1.0.0",
269
- icon: "mdi:text-box",
67
+ id: 'text-input',
68
+ name: 'Text Input',
69
+ category: 'inputs',
70
+ description: 'Simple text input field',
71
+ version: '1.0.0',
72
+ icon: 'mdi:text-box',
270
73
  inputs: [],
271
- outputs: [
272
- { id: "text", name: "text", type: "output", dataType: "string" },
273
- ],
74
+ outputs: [{ id: 'text', name: 'text', type: 'output', dataType: 'string' }]
274
75
  },
275
76
  {
276
- id: "text-output",
277
- name: "Text Output",
278
- category: "outputs",
279
- description: "Display text output",
280
- version: "1.0.0",
281
- icon: "mdi:text-box-outline",
282
- inputs: [
283
- { id: "text", name: "text", type: "input", dataType: "string" },
284
- ],
285
- outputs: [],
286
- },
77
+ id: 'text-output',
78
+ name: 'Text Output',
79
+ category: 'outputs',
80
+ description: 'Display text output',
81
+ version: '1.0.0',
82
+ icon: 'mdi:text-box-outline',
83
+ inputs: [{ id: 'text', name: 'text', type: 'input', dataType: 'string' }],
84
+ outputs: []
85
+ }
287
86
  ];
288
87
  }
289
88
  }
@@ -302,7 +101,7 @@ export class NodeOperationsHelper {
302
101
  return executionInfo;
303
102
  }
304
103
  catch (error) {
305
- logger.error("Failed to load node execution info:", error);
104
+ logger.error('Failed to load node execution info:', error);
306
105
  return {};
307
106
  }
308
107
  }
@@ -315,7 +114,7 @@ export class NodeOperationsHelper {
315
114
  // Handle both old format (with type: "node") and new format (direct NodeMetadata)
316
115
  let nodeType;
317
116
  let nodeData;
318
- if (parsedData.type === "node") {
117
+ if (parsedData.type === 'node') {
319
118
  // Old format from sidebar
320
119
  nodeType = parsedData.nodeData.metadata;
321
120
  nodeData = parsedData.nodeData;
@@ -323,28 +122,10 @@ export class NodeOperationsHelper {
323
122
  else {
324
123
  // New format (direct NodeMetadata)
325
124
  nodeType = parsedData;
326
- // Extract initial config from configSchema
327
- let initialConfig = {};
328
- if (nodeType.configSchema &&
329
- typeof nodeType.configSchema === "object") {
330
- // If configSchema is a JSON Schema, extract default values
331
- if (nodeType.configSchema.properties) {
332
- // JSON Schema format - extract defaults
333
- Object.entries(nodeType.configSchema.properties).forEach(([key, prop]) => {
334
- if (prop && typeof prop === "object" && "default" in prop) {
335
- initialConfig[key] = prop.default;
336
- }
337
- });
338
- }
339
- else {
340
- // Simple object format - use as is
341
- initialConfig = { ...nodeType.configSchema };
342
- }
343
- }
344
125
  nodeData = {
345
126
  label: nodeType.name,
346
- config: initialConfig,
347
- metadata: nodeType,
127
+ config: extractConfigDefaults(nodeType.configSchema),
128
+ metadata: nodeType
348
129
  };
349
130
  }
350
131
  // Generate node ID based on node type and existing nodes
@@ -353,18 +134,18 @@ export class NodeOperationsHelper {
353
134
  // UniversalNode component handles internal switching based on metadata and config
354
135
  const newNode = {
355
136
  id: newNodeId,
356
- type: "universalNode",
137
+ type: 'universalNode',
357
138
  position, // Use the position calculated from the drop event
358
139
  deletable: true,
359
140
  data: {
360
141
  ...nodeData,
361
- nodeId: newNodeId, // Use the same ID
362
- },
142
+ nodeId: newNodeId // Use the same ID
143
+ }
363
144
  };
364
145
  return newNode;
365
146
  }
366
147
  catch (error) {
367
- logger.error("Error parsing node data:", error);
148
+ logger.error('Error parsing node data:', error);
368
149
  return null;
369
150
  }
370
151
  }
@@ -379,12 +160,12 @@ export class WorkflowOperationsHelper {
379
160
  static generateMetadata(existingMetadata) {
380
161
  const now = new Date().toISOString();
381
162
  return {
382
- version: "1.0.0",
163
+ version: '1.0.0',
383
164
  createdAt: now,
384
165
  ...(existingMetadata ?? {}),
385
166
  updatedAt: now,
386
167
  versionId: `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
387
- updateNumber: (existingMetadata?.updateNumber || 0) + 1,
168
+ updateNumber: (existingMetadata?.updateNumber || 0) + 1
388
169
  };
389
170
  }
390
171
  /**
@@ -395,7 +176,7 @@ export class WorkflowOperationsHelper {
395
176
  ...workflow,
396
177
  nodes,
397
178
  edges,
398
- metadata: this.generateMetadata(workflow.metadata),
179
+ metadata: this.generateMetadata(workflow.metadata)
399
180
  };
400
181
  }
401
182
  /**
@@ -406,7 +187,7 @@ export class WorkflowOperationsHelper {
406
187
  ...workflow,
407
188
  nodes: [],
408
189
  edges: [],
409
- metadata: this.generateMetadata(workflow.metadata),
190
+ metadata: this.generateMetadata(workflow.metadata)
410
191
  };
411
192
  }
412
193
  /**
@@ -418,10 +199,10 @@ export class WorkflowOperationsHelper {
418
199
  nodes: workflow.nodes.map((node) => node.id === nodeId
419
200
  ? {
420
201
  ...node,
421
- data: { ...node.data, config: { ...newConfig } },
202
+ data: { ...node.data, config: { ...newConfig } }
422
203
  }
423
204
  : node),
424
- metadata: this.generateMetadata(workflow.metadata),
205
+ metadata: this.generateMetadata(workflow.metadata)
425
206
  };
426
207
  }
427
208
  /**
@@ -431,7 +212,7 @@ export class WorkflowOperationsHelper {
431
212
  return {
432
213
  ...workflow,
433
214
  nodes: [...workflow.nodes, node],
434
- metadata: this.generateMetadata(workflow.metadata),
215
+ metadata: this.generateMetadata(workflow.metadata)
435
216
  };
436
217
  }
437
218
  /**
@@ -439,7 +220,7 @@ export class WorkflowOperationsHelper {
439
220
  */
440
221
  static async saveWorkflow(workflow) {
441
222
  if (!workflow) {
442
- logger.warn("No workflow data available to save");
223
+ logger.warn('No workflow data available to save');
443
224
  return null;
444
225
  }
445
226
  try {
@@ -455,14 +236,14 @@ export class WorkflowOperationsHelper {
455
236
  }
456
237
  const workflowToSave = {
457
238
  id: workflowId,
458
- name: workflow.name || "Untitled Workflow",
239
+ name: workflow.name || 'Untitled Workflow',
459
240
  nodes: workflow.nodes || [],
460
241
  edges: workflow.edges || [],
461
242
  metadata: {
462
- version: "1.0.0",
243
+ version: '1.0.0',
463
244
  createdAt: workflow.metadata?.createdAt || new Date().toISOString(),
464
- updatedAt: new Date().toISOString(),
465
- },
245
+ updatedAt: new Date().toISOString()
246
+ }
466
247
  };
467
248
  const savedWorkflow = await workflowApi.saveWorkflow(workflowToSave);
468
249
  // Update the workflow ID if it changed (new workflow)
@@ -473,14 +254,14 @@ export class WorkflowOperationsHelper {
473
254
  name: workflowToSave.name,
474
255
  metadata: {
475
256
  ...workflowToSave.metadata,
476
- ...savedWorkflow.metadata,
477
- },
257
+ ...savedWorkflow.metadata
258
+ }
478
259
  });
479
260
  }
480
261
  return savedWorkflow;
481
262
  }
482
263
  catch (error) {
483
- logger.error("Failed to save workflow:", error);
264
+ logger.error('Failed to save workflow:', error);
484
265
  throw error;
485
266
  }
486
267
  }
@@ -489,26 +270,26 @@ export class WorkflowOperationsHelper {
489
270
  */
490
271
  static exportWorkflow(workflow) {
491
272
  if (!workflow) {
492
- logger.warn("No workflow data available to export");
273
+ logger.warn('No workflow data available to export');
493
274
  return;
494
275
  }
495
276
  // Use the same ID logic as saveWorkflow
496
277
  const workflowId = workflow.id || uuidv4();
497
278
  const workflowToExport = {
498
279
  id: workflowId,
499
- name: workflow.name || "Untitled Workflow",
280
+ name: workflow.name || 'Untitled Workflow',
500
281
  nodes: workflow.nodes || [],
501
282
  edges: workflow.edges || [],
502
283
  metadata: {
503
- version: "1.0.0",
284
+ version: '1.0.0',
504
285
  createdAt: workflow.metadata?.createdAt || new Date().toISOString(),
505
- updatedAt: new Date().toISOString(),
506
- },
286
+ updatedAt: new Date().toISOString()
287
+ }
507
288
  };
508
289
  const dataStr = JSON.stringify(workflowToExport, null, 2);
509
- const dataBlob = new Blob([dataStr], { type: "application/json" });
290
+ const dataBlob = new Blob([dataStr], { type: 'application/json' });
510
291
  const url = URL.createObjectURL(dataBlob);
511
- const link = document.createElement("a");
292
+ const link = document.createElement('a');
512
293
  link.href = url;
513
294
  link.download = `${workflowToExport.name}.json`;
514
295
  link.click();
@@ -527,8 +308,8 @@ export class WorkflowOperationsHelper {
527
308
  if (!workflow) {
528
309
  return {
529
310
  valid: false,
530
- errors: ["No workflow data available to export"],
531
- warnings: [],
311
+ errors: ['No workflow data available to export'],
312
+ warnings: []
532
313
  };
533
314
  }
534
315
  // Convert to StandardWorkflow first
@@ -543,11 +324,11 @@ export class WorkflowOperationsHelper {
543
324
  const agentSpecAdapter = new AgentSpecAdapter();
544
325
  const agentSpecJson = agentSpecAdapter.exportJSON(standardWorkflow);
545
326
  // Trigger download
546
- const dataBlob = new Blob([agentSpecJson], { type: "application/json" });
327
+ const dataBlob = new Blob([agentSpecJson], { type: 'application/json' });
547
328
  const url = URL.createObjectURL(dataBlob);
548
- const link = document.createElement("a");
329
+ const link = document.createElement('a');
549
330
  link.href = url;
550
- link.download = `${workflow.name || "workflow"}-agentspec.json`;
331
+ link.download = `${workflow.name || 'workflow'}-agentspec.json`;
551
332
  link.click();
552
333
  URL.revokeObjectURL(url);
553
334
  return validation;
package/dist/index.d.ts CHANGED
@@ -29,9 +29,9 @@
29
29
  *
30
30
  * @module flowdrop
31
31
  */
32
- export * from "./core/index.js";
33
- export * from "./form/index.js";
34
- export * from "./display/index.js";
35
- export * from "./playground/index.js";
36
- export * from "./editor/index.js";
37
- export * from "./settings/index.js";
32
+ export * from './core/index.js';
33
+ export * from './form/index.js';
34
+ export * from './display/index.js';
35
+ export * from './playground/index.js';
36
+ export * from './editor/index.js';
37
+ export * from './settings/index.js';
package/dist/index.js CHANGED
@@ -39,26 +39,26 @@
39
39
  // ============================================================================
40
40
  // Core Exports (Types & Utilities - No Heavy Dependencies)
41
41
  // ============================================================================
42
- export * from "./core/index.js";
42
+ export * from './core/index.js';
43
43
  // ============================================================================
44
44
  // Form Exports
45
45
  // ============================================================================
46
- export * from "./form/index.js";
46
+ export * from './form/index.js';
47
47
  // Note: Heavy form fields (code, markdown) are NOT auto-registered.
48
48
  // Users must import from form/code or form/markdown and register explicitly.
49
49
  // ============================================================================
50
50
  // Display Exports
51
51
  // ============================================================================
52
- export * from "./display/index.js";
52
+ export * from './display/index.js';
53
53
  // ============================================================================
54
54
  // Playground Exports
55
55
  // ============================================================================
56
- export * from "./playground/index.js";
56
+ export * from './playground/index.js';
57
57
  // ============================================================================
58
58
  // Editor Exports (includes @xyflow/svelte and auto-registers builtin nodes)
59
59
  // ============================================================================
60
- export * from "./editor/index.js";
60
+ export * from './editor/index.js';
61
61
  // ============================================================================
62
62
  // Settings Exports (stores, services, components, types)
63
63
  // ============================================================================
64
- export * from "./settings/index.js";
64
+ export * from './settings/index.js';
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  // Mock browser check
7
- export const browser = typeof window !== "undefined";
7
+ export const browser = typeof window !== 'undefined';
8
8
 
9
9
  // Mock dev check
10
10
  export const dev = false;
@@ -13,4 +13,4 @@ export const dev = false;
13
13
  export const building = false;
14
14
 
15
15
  // Mock version
16
- export const version = "1.0.0";
16
+ export const version = '1.0.0';
@@ -10,7 +10,7 @@ export const enhance = (form, options = {}) => {
10
10
  event.preventDefault();
11
11
  // Basic form handling for library context
12
12
  if (options.onResult) {
13
- options.onResult({ type: "success" });
13
+ options.onResult({ type: 'success' });
14
14
  }
15
15
  };
16
16
  };
@@ -3,12 +3,12 @@
3
3
  * Provides minimal implementations for SvelteKit navigation in library context
4
4
  */
5
5
 
6
- import { logger } from "../utils/logger.js";
6
+ import { logger } from '../utils/logger.js';
7
7
 
8
8
  // Mock goto function
9
9
  export const goto = async () => {
10
10
  // No-op for library context
11
- logger.warn("Navigation not available in library context");
11
+ logger.warn('Navigation not available in library context');
12
12
  };
13
13
 
14
14
  // Mock invalidate function
@@ -3,17 +3,17 @@
3
3
  * Provides minimal implementations for SvelteKit stores in library context
4
4
  */
5
5
 
6
- import { writable } from "svelte/store";
6
+ import { writable } from 'svelte/store';
7
7
 
8
8
  // Mock page store
9
9
  export const page = writable({
10
- url: new URL("http://localhost:3000"),
10
+ url: new URL('http://localhost:3000'),
11
11
  params: {},
12
12
  route: { id: null },
13
13
  status: 200,
14
14
  error: null,
15
15
  data: {},
16
- form: null,
16
+ form: null
17
17
  });
18
18
 
19
19
  // Mock navigating store