@flowdrop/flowdrop 1.5.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. package/README.md +46 -47
  2. package/dist/adapters/WorkflowAdapter.d.ts +1 -1
  3. package/dist/adapters/WorkflowAdapter.js +26 -26
  4. package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +2 -2
  5. package/dist/adapters/agentspec/AgentSpecAdapter.js +122 -133
  6. package/dist/adapters/agentspec/agentAdapter.d.ts +2 -2
  7. package/dist/adapters/agentspec/agentAdapter.js +10 -10
  8. package/dist/adapters/agentspec/autoLayout.d.ts +1 -1
  9. package/dist/adapters/agentspec/autoLayout.js +7 -9
  10. package/dist/adapters/agentspec/componentTypeDefaults.d.ts +1 -1
  11. package/dist/adapters/agentspec/componentTypeDefaults.js +120 -120
  12. package/dist/adapters/agentspec/defaultNodeTypes.d.ts +2 -2
  13. package/dist/adapters/agentspec/defaultNodeTypes.js +307 -307
  14. package/dist/adapters/agentspec/index.d.ts +10 -10
  15. package/dist/adapters/agentspec/index.js +6 -6
  16. package/dist/adapters/agentspec/validator.d.ts +2 -2
  17. package/dist/adapters/agentspec/validator.js +20 -22
  18. package/dist/api/enhanced-client.d.ts +3 -3
  19. package/dist/api/enhanced-client.js +72 -73
  20. package/dist/chat/commandClassifier.js +6 -6
  21. package/dist/chat/index.d.ts +5 -5
  22. package/dist/chat/index.js +4 -4
  23. package/dist/chat/responseParser.d.ts +6 -6
  24. package/dist/chat/responseParser.js +28 -24
  25. package/dist/commands/batch.d.ts +1 -1
  26. package/dist/commands/batch.js +5 -7
  27. package/dist/commands/executor.d.ts +2 -2
  28. package/dist/commands/executor.js +320 -231
  29. package/dist/commands/index.d.ts +6 -6
  30. package/dist/commands/index.js +5 -5
  31. package/dist/commands/parser.d.ts +1 -1
  32. package/dist/commands/parser.js +91 -74
  33. package/dist/commands/positioner.d.ts +2 -2
  34. package/dist/commands/positioner.js +1 -1
  35. package/dist/commands/storeIntegration.svelte.d.ts +2 -2
  36. package/dist/commands/storeIntegration.svelte.js +5 -5
  37. package/dist/commands/types.d.ts +42 -42
  38. package/dist/commands/types.js +2 -2
  39. package/dist/components/App.svelte +280 -303
  40. package/dist/components/App.svelte.d.ts +11 -9
  41. package/dist/components/CanvasBanner.stories.svelte +10 -16
  42. package/dist/components/CanvasBanner.stories.svelte.d.ts +1 -1
  43. package/dist/components/CanvasBanner.svelte +2 -2
  44. package/dist/components/CanvasBanner.svelte.d.ts +1 -1
  45. package/dist/components/CanvasController.svelte +3 -4
  46. package/dist/components/ConfigForm.svelte +118 -256
  47. package/dist/components/ConfigForm.svelte.d.ts +2 -2
  48. package/dist/components/ConfigMappingRow.svelte +7 -9
  49. package/dist/components/ConfigMappingRow.svelte.d.ts +1 -1
  50. package/dist/components/ConfigModal.svelte +3 -3
  51. package/dist/components/ConfigModal.svelte.d.ts +1 -1
  52. package/dist/components/ConfigPanel.stories.svelte +19 -19
  53. package/dist/components/ConfigPanel.stories.svelte.d.ts +1 -1
  54. package/dist/components/ConfigPanel.svelte +9 -20
  55. package/dist/components/ConfigPanel.svelte.d.ts +1 -1
  56. package/dist/components/ConnectionLine.svelte +4 -4
  57. package/dist/components/EdgeRefresher.svelte +1 -1
  58. package/dist/components/FlowDropEdge.stories.svelte +110 -110
  59. package/dist/components/FlowDropEdge.svelte +9 -9
  60. package/dist/components/FlowDropEdge.svelte.d.ts +1 -1
  61. package/dist/components/FlowDropZone.svelte +6 -9
  62. package/dist/components/FlowDropZone.svelte.d.ts +1 -1
  63. package/dist/components/LoadingSpinner.stories.svelte +13 -13
  64. package/dist/components/LoadingSpinner.stories.svelte.d.ts +1 -1
  65. package/dist/components/LoadingSpinner.svelte +3 -3
  66. package/dist/components/LoadingSpinner.svelte.d.ts +1 -1
  67. package/dist/components/Logo.stories.svelte +4 -4
  68. package/dist/components/Logo.stories.svelte.d.ts +1 -1
  69. package/dist/components/Logo.svelte +3 -9
  70. package/dist/components/LogsSidebar.svelte +41 -48
  71. package/dist/components/LogsSidebar.svelte.d.ts +1 -1
  72. package/dist/components/MarkdownDisplay.stories.svelte +10 -14
  73. package/dist/components/MarkdownDisplay.stories.svelte.d.ts +1 -1
  74. package/dist/components/MarkdownDisplay.svelte +4 -6
  75. package/dist/components/Navbar.stories.svelte +19 -19
  76. package/dist/components/Navbar.stories.svelte.d.ts +1 -1
  77. package/dist/components/Navbar.svelte +28 -49
  78. package/dist/components/Navbar.svelte.d.ts +2 -2
  79. package/dist/components/NodeSidebar.svelte +42 -88
  80. package/dist/components/NodeSidebar.svelte.d.ts +1 -1
  81. package/dist/components/NodeStatusOverlay.stories.svelte +19 -31
  82. package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +1 -1
  83. package/dist/components/NodeStatusOverlay.svelte +40 -55
  84. package/dist/components/NodeStatusOverlay.svelte.d.ts +3 -3
  85. package/dist/components/NodeSwapPicker.svelte +20 -64
  86. package/dist/components/NodeSwapPicker.svelte.d.ts +1 -1
  87. package/dist/components/PipelineStatus.svelte +63 -89
  88. package/dist/components/PipelineStatus.svelte.d.ts +4 -4
  89. package/dist/components/PortCoordinateTracker.svelte +5 -7
  90. package/dist/components/PortCoordinateTracker.svelte.d.ts +1 -1
  91. package/dist/components/PortMappingRow.svelte +20 -24
  92. package/dist/components/PortMappingRow.svelte.d.ts +2 -2
  93. package/dist/components/ReadOnlyDetails.svelte +1 -1
  94. package/dist/components/SchemaForm.stories.svelte +53 -53
  95. package/dist/components/SchemaForm.stories.svelte.d.ts +1 -1
  96. package/dist/components/SchemaForm.svelte +24 -51
  97. package/dist/components/SchemaForm.svelte.d.ts +2 -2
  98. package/dist/components/SettingsModal.svelte +6 -9
  99. package/dist/components/SettingsModal.svelte.d.ts +1 -1
  100. package/dist/components/SettingsPanel.svelte +138 -158
  101. package/dist/components/SettingsPanel.svelte.d.ts +1 -1
  102. package/dist/components/StatusIcon.stories.svelte +16 -29
  103. package/dist/components/StatusIcon.stories.svelte.d.ts +1 -1
  104. package/dist/components/StatusIcon.svelte +19 -19
  105. package/dist/components/StatusIcon.svelte.d.ts +2 -2
  106. package/dist/components/StatusLabel.stories.svelte +8 -8
  107. package/dist/components/StatusLabel.stories.svelte.d.ts +1 -1
  108. package/dist/components/SwapMappingEditor.svelte +35 -56
  109. package/dist/components/SwapMappingEditor.svelte.d.ts +2 -2
  110. package/dist/components/ThemeToggle.stories.svelte +10 -10
  111. package/dist/components/ThemeToggle.stories.svelte.d.ts +1 -1
  112. package/dist/components/ThemeToggle.svelte +22 -33
  113. package/dist/components/ThemeToggle.svelte.d.ts +1 -1
  114. package/dist/components/UniversalNode.svelte +29 -41
  115. package/dist/components/UniversalNode.svelte.d.ts +3 -3
  116. package/dist/components/WorkflowEditor.svelte +113 -168
  117. package/dist/components/WorkflowEditor.svelte.d.ts +4 -4
  118. package/dist/components/chat/AIChatPanel.svelte +272 -133
  119. package/dist/components/chat/AIChatPanel.svelte.d.ts +3 -3
  120. package/dist/components/chat/CommandPreview.svelte +74 -24
  121. package/dist/components/chat/CommandPreview.svelte.d.ts +1 -1
  122. package/dist/components/console/CommandConsole.stories.svelte +71 -53
  123. package/dist/components/console/CommandConsole.stories.svelte.d.ts +1 -1
  124. package/dist/components/console/CommandConsole.svelte +39 -35
  125. package/dist/components/console/CommandConsole.svelte.d.ts +2 -2
  126. package/dist/components/console/ConsoleAutocomplete.svelte +6 -3
  127. package/dist/components/console/ConsoleInput.svelte +148 -89
  128. package/dist/components/console/ConsoleInput.svelte.d.ts +1 -1
  129. package/dist/components/console/ConsoleOutput.svelte +5 -10
  130. package/dist/components/console/ConsoleOutput.svelte.d.ts +1 -1
  131. package/dist/components/console/formatters.d.ts +1 -1
  132. package/dist/components/console/formatters.js +27 -29
  133. package/dist/components/form/FormArray.svelte +75 -132
  134. package/dist/components/form/FormArray.svelte.d.ts +1 -1
  135. package/dist/components/form/FormAutocomplete.svelte +65 -108
  136. package/dist/components/form/FormAutocomplete.svelte.d.ts +1 -1
  137. package/dist/components/form/FormCheckboxGroup.stories.svelte +13 -16
  138. package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +1 -1
  139. package/dist/components/form/FormCheckboxGroup.svelte +2 -2
  140. package/dist/components/form/FormCodeEditor.svelte +46 -59
  141. package/dist/components/form/FormField.svelte +79 -90
  142. package/dist/components/form/FormField.svelte.d.ts +2 -2
  143. package/dist/components/form/FormFieldLight.svelte +72 -88
  144. package/dist/components/form/FormFieldLight.svelte.d.ts +1 -1
  145. package/dist/components/form/FormFieldWrapper.stories.svelte +14 -14
  146. package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +1 -1
  147. package/dist/components/form/FormFieldWrapper.svelte +2 -9
  148. package/dist/components/form/FormFieldWrapper.svelte.d.ts +1 -1
  149. package/dist/components/form/FormFieldset.svelte +3 -3
  150. package/dist/components/form/FormFieldset.svelte.d.ts +2 -2
  151. package/dist/components/form/FormMarkdownEditor.svelte +123 -156
  152. package/dist/components/form/FormNumberField.stories.svelte +18 -18
  153. package/dist/components/form/FormNumberField.stories.svelte.d.ts +1 -1
  154. package/dist/components/form/FormNumberField.svelte +6 -6
  155. package/dist/components/form/FormRangeField.stories.svelte +13 -13
  156. package/dist/components/form/FormRangeField.stories.svelte.d.ts +1 -1
  157. package/dist/components/form/FormRangeField.svelte +4 -12
  158. package/dist/components/form/FormSelect.stories.svelte +21 -21
  159. package/dist/components/form/FormSelect.stories.svelte.d.ts +1 -1
  160. package/dist/components/form/FormSelect.svelte +5 -5
  161. package/dist/components/form/FormSelect.svelte.d.ts +1 -1
  162. package/dist/components/form/FormTemplateEditor.svelte +126 -175
  163. package/dist/components/form/FormTemplateEditor.svelte.d.ts +1 -1
  164. package/dist/components/form/FormTextField.stories.svelte +17 -23
  165. package/dist/components/form/FormTextField.stories.svelte.d.ts +1 -1
  166. package/dist/components/form/FormTextField.svelte +4 -4
  167. package/dist/components/form/FormTextarea.stories.svelte +18 -21
  168. package/dist/components/form/FormTextarea.stories.svelte.d.ts +1 -1
  169. package/dist/components/form/FormTextarea.svelte +4 -4
  170. package/dist/components/form/FormToggle.stories.svelte +13 -16
  171. package/dist/components/form/FormToggle.stories.svelte.d.ts +1 -1
  172. package/dist/components/form/FormToggle.svelte +3 -3
  173. package/dist/components/form/FormUISchemaRenderer.svelte +12 -19
  174. package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +3 -3
  175. package/dist/components/form/index.d.ts +19 -19
  176. package/dist/components/form/index.js +18 -18
  177. package/dist/components/form/templateAutocomplete.d.ts +2 -2
  178. package/dist/components/form/templateAutocomplete.js +55 -64
  179. package/dist/components/form/types.d.ts +6 -6
  180. package/dist/components/form/types.js +4 -9
  181. package/dist/components/icons/AlertCircleIcon.svelte +1 -6
  182. package/dist/components/icons/CogIcon.svelte +1 -6
  183. package/dist/components/interrupt/ChoicePrompt.stories.svelte +27 -27
  184. package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +1 -1
  185. package/dist/components/interrupt/ChoicePrompt.svelte +17 -41
  186. package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +1 -1
  187. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +17 -17
  188. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +1 -1
  189. package/dist/components/interrupt/ConfirmationPrompt.svelte +10 -16
  190. package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +1 -1
  191. package/dist/components/interrupt/FormPrompt.svelte +10 -15
  192. package/dist/components/interrupt/FormPrompt.svelte.d.ts +1 -1
  193. package/dist/components/interrupt/InterruptBubble.svelte +87 -121
  194. package/dist/components/interrupt/InterruptBubble.svelte.d.ts +2 -2
  195. package/dist/components/interrupt/ReviewPrompt.stories.svelte +37 -37
  196. package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +1 -1
  197. package/dist/components/interrupt/ReviewPrompt.svelte +55 -75
  198. package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +1 -1
  199. package/dist/components/interrupt/TextInputPrompt.stories.svelte +16 -17
  200. package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +1 -1
  201. package/dist/components/interrupt/TextInputPrompt.svelte +13 -18
  202. package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +1 -1
  203. package/dist/components/interrupt/index.d.ts +6 -6
  204. package/dist/components/interrupt/index.js +6 -6
  205. package/dist/components/layouts/MainLayout.svelte +46 -84
  206. package/dist/components/layouts/MainLayout.svelte.d.ts +6 -6
  207. package/dist/components/nodes/GatewayNode.stories.svelte +64 -65
  208. package/dist/components/nodes/GatewayNode.svelte +37 -70
  209. package/dist/components/nodes/GatewayNode.svelte.d.ts +3 -3
  210. package/dist/components/nodes/IdeaNode.stories.svelte +25 -26
  211. package/dist/components/nodes/IdeaNode.svelte +22 -36
  212. package/dist/components/nodes/IdeaNode.svelte.d.ts +1 -1
  213. package/dist/components/nodes/NotesNode.stories.svelte +37 -38
  214. package/dist/components/nodes/NotesNode.svelte +28 -39
  215. package/dist/components/nodes/NotesNode.svelte.d.ts +1 -1
  216. package/dist/components/nodes/SimpleNode.stories.svelte +137 -138
  217. package/dist/components/nodes/SimpleNode.svelte +51 -81
  218. package/dist/components/nodes/SimpleNode.svelte.d.ts +1 -1
  219. package/dist/components/nodes/SquareNode.stories.svelte +75 -75
  220. package/dist/components/nodes/SquareNode.svelte +42 -68
  221. package/dist/components/nodes/SquareNode.svelte.d.ts +1 -1
  222. package/dist/components/nodes/TerminalNode.stories.svelte +10 -10
  223. package/dist/components/nodes/TerminalNode.svelte +74 -112
  224. package/dist/components/nodes/TerminalNode.svelte.d.ts +1 -1
  225. package/dist/components/nodes/ToolNode.stories.svelte +115 -116
  226. package/dist/components/nodes/ToolNode.svelte +31 -64
  227. package/dist/components/nodes/ToolNode.svelte.d.ts +1 -1
  228. package/dist/components/nodes/WorkflowNode.stories.svelte +84 -89
  229. package/dist/components/nodes/WorkflowNode.svelte +50 -103
  230. package/dist/components/nodes/WorkflowNode.svelte.d.ts +3 -3
  231. package/dist/components/playground/ChatPanel.svelte +47 -103
  232. package/dist/components/playground/ExecutionLogs.svelte +45 -68
  233. package/dist/components/playground/InputCollector.svelte +32 -51
  234. package/dist/components/playground/MessageBubble.stories.svelte +25 -25
  235. package/dist/components/playground/MessageBubble.stories.svelte.d.ts +1 -1
  236. package/dist/components/playground/MessageBubble.svelte +54 -70
  237. package/dist/components/playground/MessageBubble.svelte.d.ts +1 -1
  238. package/dist/components/playground/Playground.svelte +60 -91
  239. package/dist/components/playground/Playground.svelte.d.ts +3 -3
  240. package/dist/components/playground/PlaygroundModal.svelte +8 -12
  241. package/dist/components/playground/PlaygroundModal.svelte.d.ts +3 -3
  242. package/dist/components/playground/SessionManager.svelte +34 -40
  243. package/dist/components/playground/SessionManager.svelte.d.ts +1 -1
  244. package/dist/config/agentSpecEndpoints.d.ts +1 -1
  245. package/dist/config/agentSpecEndpoints.js +20 -20
  246. package/dist/config/constants.js +2 -2
  247. package/dist/config/defaultCategories.d.ts +1 -1
  248. package/dist/config/defaultCategories.js +86 -86
  249. package/dist/config/defaultPortConfig.d.ts +1 -1
  250. package/dist/config/defaultPortConfig.js +144 -144
  251. package/dist/config/endpoints.d.ts +4 -4
  252. package/dist/config/endpoints.js +68 -68
  253. package/dist/config/runtimeConfig.d.ts +2 -2
  254. package/dist/config/runtimeConfig.js +8 -8
  255. package/dist/core/index.d.ts +68 -68
  256. package/dist/core/index.js +38 -38
  257. package/dist/display/index.d.ts +2 -2
  258. package/dist/display/index.js +2 -2
  259. package/dist/editor/index.d.ts +64 -64
  260. package/dist/editor/index.js +54 -54
  261. package/dist/form/code.d.ts +5 -5
  262. package/dist/form/code.js +14 -14
  263. package/dist/form/fieldRegistry.d.ts +3 -3
  264. package/dist/form/fieldRegistry.js +9 -11
  265. package/dist/form/full.d.ts +8 -8
  266. package/dist/form/full.js +9 -9
  267. package/dist/form/index.d.ts +18 -18
  268. package/dist/form/index.js +16 -16
  269. package/dist/form/markdown.d.ts +4 -4
  270. package/dist/form/markdown.js +8 -8
  271. package/dist/helpers/proximityConnect.d.ts +3 -3
  272. package/dist/helpers/proximityConnect.js +32 -34
  273. package/dist/helpers/workflowEditorHelper.d.ts +6 -6
  274. package/dist/helpers/workflowEditorHelper.js +64 -68
  275. package/dist/index.d.ts +6 -6
  276. package/dist/index.js +6 -6
  277. package/dist/mocks/app-environment.js +2 -2
  278. package/dist/mocks/app-forms.js +1 -1
  279. package/dist/mocks/app-navigation.js +2 -2
  280. package/dist/mocks/app-stores.js +3 -3
  281. package/dist/playground/index.d.ts +19 -19
  282. package/dist/playground/index.js +16 -16
  283. package/dist/playground/mount.d.ts +3 -3
  284. package/dist/playground/mount.js +24 -24
  285. package/dist/registry/builtinFormats.js +13 -13
  286. package/dist/registry/builtinNodes.d.ts +2 -2
  287. package/dist/registry/builtinNodes.js +77 -77
  288. package/dist/registry/index.d.ts +4 -4
  289. package/dist/registry/index.js +4 -4
  290. package/dist/registry/nodeComponentRegistry.d.ts +8 -8
  291. package/dist/registry/nodeComponentRegistry.js +9 -11
  292. package/dist/registry/plugin.d.ts +2 -2
  293. package/dist/registry/plugin.js +11 -11
  294. package/dist/registry/workflowFormatRegistry.d.ts +3 -3
  295. package/dist/registry/workflowFormatRegistry.js +2 -2
  296. package/dist/schema/index.d.ts +1 -1
  297. package/dist/schema/index.js +2 -2
  298. package/dist/schemas/v1/workflow.schema.json +5 -0
  299. package/dist/services/agentSpecExecutionService.d.ts +3 -3
  300. package/dist/services/agentSpecExecutionService.js +55 -56
  301. package/dist/services/api.d.ts +2 -2
  302. package/dist/services/api.js +37 -37
  303. package/dist/services/apiVariableService.d.ts +1 -1
  304. package/dist/services/apiVariableService.js +34 -41
  305. package/dist/services/autoSaveService.js +8 -8
  306. package/dist/services/categoriesApi.d.ts +2 -2
  307. package/dist/services/categoriesApi.js +8 -8
  308. package/dist/services/chatService.d.ts +1 -1
  309. package/dist/services/chatService.js +18 -18
  310. package/dist/services/draftStorage.d.ts +1 -1
  311. package/dist/services/draftStorage.js +11 -11
  312. package/dist/services/dynamicSchemaService.d.ts +1 -1
  313. package/dist/services/dynamicSchemaService.js +39 -41
  314. package/dist/services/globalSave.d.ts +2 -2
  315. package/dist/services/globalSave.js +38 -41
  316. package/dist/services/historyService.d.ts +1 -1
  317. package/dist/services/historyService.js +10 -10
  318. package/dist/services/interruptService.d.ts +1 -1
  319. package/dist/services/interruptService.js +29 -35
  320. package/dist/services/nodeExecutionService.d.ts +1 -1
  321. package/dist/services/nodeExecutionService.js +44 -45
  322. package/dist/services/playgroundService.d.ts +1 -1
  323. package/dist/services/playgroundService.js +29 -29
  324. package/dist/services/portConfigApi.d.ts +2 -2
  325. package/dist/services/portConfigApi.js +8 -8
  326. package/dist/services/settingsService.d.ts +2 -2
  327. package/dist/services/settingsService.js +19 -25
  328. package/dist/services/toastService.d.ts +4 -4
  329. package/dist/services/toastService.js +33 -33
  330. package/dist/services/variableService.d.ts +1 -1
  331. package/dist/services/variableService.js +36 -36
  332. package/dist/services/workflowStorage.d.ts +2 -2
  333. package/dist/services/workflowStorage.js +13 -13
  334. package/dist/settings/index.d.ts +7 -7
  335. package/dist/settings/index.js +6 -6
  336. package/dist/skins/default.d.ts +1 -1
  337. package/dist/skins/default.js +1 -1
  338. package/dist/skins/index.d.ts +3 -3
  339. package/dist/skins/index.js +7 -7
  340. package/dist/skins/slate.d.ts +1 -1
  341. package/dist/skins/slate.js +69 -69
  342. package/dist/stores/categoriesStore.svelte.d.ts +1 -1
  343. package/dist/stores/categoriesStore.svelte.js +5 -5
  344. package/dist/stores/editorStateMachine.svelte.d.ts +2 -2
  345. package/dist/stores/editorStateMachine.svelte.js +34 -34
  346. package/dist/stores/historyStore.svelte.d.ts +4 -4
  347. package/dist/stores/historyStore.svelte.js +4 -4
  348. package/dist/stores/interruptStore.svelte.d.ts +3 -3
  349. package/dist/stores/interruptStore.svelte.js +21 -21
  350. package/dist/stores/playgroundStore.svelte.d.ts +2 -2
  351. package/dist/stores/playgroundStore.svelte.js +18 -21
  352. package/dist/stores/portCoordinateStore.svelte.d.ts +2 -2
  353. package/dist/stores/portCoordinateStore.svelte.js +10 -13
  354. package/dist/stores/settingsStore.svelte.d.ts +2 -2
  355. package/dist/stores/settingsStore.svelte.js +57 -62
  356. package/dist/stores/workflowStore.svelte.d.ts +4 -3
  357. package/dist/stores/workflowStore.svelte.js +47 -47
  358. package/dist/stories/CanvasDecorator.svelte +7 -10
  359. package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
  360. package/dist/stories/EdgeDecorator.svelte +28 -31
  361. package/dist/stories/EdgeDecorator.svelte.d.ts +1 -1
  362. package/dist/stories/NodeDecorator.svelte +14 -20
  363. package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
  364. package/dist/stories/utils.d.ts +2 -2
  365. package/dist/stories/utils.js +89 -93
  366. package/dist/styles/base.css +16 -50
  367. package/dist/styles/tokens.css +10 -28
  368. package/dist/svelte-app.d.ts +10 -10
  369. package/dist/svelte-app.js +39 -39
  370. package/dist/themes/default.d.ts +1 -1
  371. package/dist/themes/default.js +4 -4
  372. package/dist/themes/index.d.ts +3 -3
  373. package/dist/themes/index.js +11 -11
  374. package/dist/themes/minimal.d.ts +1 -1
  375. package/dist/themes/minimal.js +5 -5
  376. package/dist/types/agentspec.d.ts +18 -18
  377. package/dist/types/agentspec.js +2 -2
  378. package/dist/types/auth.d.ts +1 -1
  379. package/dist/types/auth.js +6 -6
  380. package/dist/types/chat.d.ts +2 -2
  381. package/dist/types/config.d.ts +6 -6
  382. package/dist/types/events.d.ts +3 -3
  383. package/dist/types/events.js +2 -2
  384. package/dist/types/index.d.ts +34 -32
  385. package/dist/types/index.js +6 -6
  386. package/dist/types/interrupt.d.ts +6 -6
  387. package/dist/types/interrupt.js +21 -21
  388. package/dist/types/interruptState.d.ts +12 -12
  389. package/dist/types/interruptState.js +66 -66
  390. package/dist/types/playground.d.ts +7 -7
  391. package/dist/types/playground.js +14 -14
  392. package/dist/types/settings.d.ts +7 -5
  393. package/dist/types/settings.js +19 -24
  394. package/dist/types/skin.d.ts +1 -1
  395. package/dist/types/theme.d.ts +2 -2
  396. package/dist/types/uischema.d.ts +4 -4
  397. package/dist/types/uischema.js +3 -3
  398. package/dist/utils/colors.d.ts +1 -1
  399. package/dist/utils/colors.js +95 -97
  400. package/dist/utils/config.d.ts +2 -2
  401. package/dist/utils/config.js +48 -48
  402. package/dist/utils/connections.d.ts +6 -2
  403. package/dist/utils/connections.js +21 -15
  404. package/dist/utils/edgeStyling.d.ts +2 -2
  405. package/dist/utils/edgeStyling.js +36 -39
  406. package/dist/utils/errors.js +3 -3
  407. package/dist/utils/fetchWithAuth.d.ts +1 -1
  408. package/dist/utils/fetchWithAuth.js +2 -2
  409. package/dist/utils/handleIds.d.ts +2 -2
  410. package/dist/utils/handleIds.js +8 -8
  411. package/dist/utils/handlePositioning.d.ts +1 -1
  412. package/dist/utils/handlePositioning.js +2 -2
  413. package/dist/utils/icons.d.ts +1 -1
  414. package/dist/utils/icons.js +74 -74
  415. package/dist/utils/logger.d.ts +1 -1
  416. package/dist/utils/logger.js +7 -7
  417. package/dist/utils/nodeIds.d.ts +1 -1
  418. package/dist/utils/nodeIds.js +1 -1
  419. package/dist/utils/nodeStatus.d.ts +1 -1
  420. package/dist/utils/nodeStatus.js +48 -48
  421. package/dist/utils/nodeSwap.d.ts +9 -9
  422. package/dist/utils/nodeSwap.js +52 -58
  423. package/dist/utils/nodeTypes.d.ts +1 -1
  424. package/dist/utils/nodeTypes.js +20 -21
  425. package/dist/utils/nodeWrapper.d.ts +7 -7
  426. package/dist/utils/nodeWrapper.js +19 -21
  427. package/dist/utils/performanceUtils.d.ts +1 -1
  428. package/dist/utils/performanceUtils.js +1 -2
  429. package/dist/utils/portUtils.d.ts +2 -2
  430. package/dist/utils/portUtils.js +1 -1
  431. package/dist/utils/sanitize.js +1 -1
  432. package/dist/utils/uischema.d.ts +2 -2
  433. package/dist/utils/uischema.js +8 -8
  434. package/dist/utils/validation.js +8 -8
  435. package/package.json +7 -11
@@ -25,13 +25,13 @@
25
25
  * if (!result.valid) console.error(result.errors);
26
26
  * ```
27
27
  */
28
- export { AgentSpecAdapter } from "./AgentSpecAdapter.js";
29
- export { AgentSpecAgentAdapter } from "./agentAdapter.js";
30
- export type { AgentConfig, AgentSpecImportResult } from "./agentAdapter.js";
31
- export { getAgentSpecNodeMetadata, getDefaultAgentSpecNodeTypes, createAgentSpecNodeMetadata, } from "./defaultNodeTypes.js";
32
- export { getComponentTypeDefaults, extractComponentType, isAgentSpecNodeId, AGENTSPEC_NAMESPACE, } from "./componentTypeDefaults.js";
33
- export type { ComponentTypeDefaults } from "./componentTypeDefaults.js";
34
- export { validateForAgentSpecExport, validateAgentSpecFlow, } from "./validator.js";
35
- export type { AgentSpecValidationResult } from "./validator.js";
36
- export { computeAutoLayout } from "./autoLayout.js";
37
- export type { AutoLayoutConfig } from "./autoLayout.js";
28
+ export { AgentSpecAdapter } from './AgentSpecAdapter.js';
29
+ export { AgentSpecAgentAdapter } from './agentAdapter.js';
30
+ export type { AgentConfig, AgentSpecImportResult } from './agentAdapter.js';
31
+ export { getAgentSpecNodeMetadata, getDefaultAgentSpecNodeTypes, createAgentSpecNodeMetadata } from './defaultNodeTypes.js';
32
+ export { getComponentTypeDefaults, extractComponentType, isAgentSpecNodeId, AGENTSPEC_NAMESPACE } from './componentTypeDefaults.js';
33
+ export type { ComponentTypeDefaults } from './componentTypeDefaults.js';
34
+ export { validateForAgentSpecExport, validateAgentSpecFlow } from './validator.js';
35
+ export type { AgentSpecValidationResult } from './validator.js';
36
+ export { computeAutoLayout } from './autoLayout.js';
37
+ export type { AutoLayoutConfig } from './autoLayout.js';
@@ -26,14 +26,14 @@
26
26
  * ```
27
27
  */
28
28
  // Core adapter
29
- export { AgentSpecAdapter } from "./AgentSpecAdapter.js";
29
+ export { AgentSpecAdapter } from './AgentSpecAdapter.js';
30
30
  // Agent-level adapter (wraps flow with agent/tools/LLM config)
31
- export { AgentSpecAgentAdapter } from "./agentAdapter.js";
31
+ export { AgentSpecAgentAdapter } from './agentAdapter.js';
32
32
  // Default node types (optional starter templates — users can provide their own)
33
- export { getAgentSpecNodeMetadata, getDefaultAgentSpecNodeTypes, createAgentSpecNodeMetadata, } from "./defaultNodeTypes.js";
33
+ export { getAgentSpecNodeMetadata, getDefaultAgentSpecNodeTypes, createAgentSpecNodeMetadata } from './defaultNodeTypes.js';
34
34
  // Component type defaults (adapter infrastructure)
35
- export { getComponentTypeDefaults, extractComponentType, isAgentSpecNodeId, AGENTSPEC_NAMESPACE, } from "./componentTypeDefaults.js";
35
+ export { getComponentTypeDefaults, extractComponentType, isAgentSpecNodeId, AGENTSPEC_NAMESPACE } from './componentTypeDefaults.js';
36
36
  // Validation
37
- export { validateForAgentSpecExport, validateAgentSpecFlow, } from "./validator.js";
37
+ export { validateForAgentSpecExport, validateAgentSpecFlow } from './validator.js';
38
38
  // Auto-layout
39
- export { computeAutoLayout } from "./autoLayout.js";
39
+ export { computeAutoLayout } from './autoLayout.js';
@@ -4,8 +4,8 @@
4
4
  * Validates workflows against Agent Spec constraints for export,
5
5
  * and validates imported Agent Spec documents for correctness.
6
6
  */
7
- import type { AgentSpecFlow } from "../../types/agentspec.js";
8
- import type { StandardWorkflow } from "../WorkflowAdapter.js";
7
+ import type { AgentSpecFlow } from '../../types/agentspec.js';
8
+ import type { StandardWorkflow } from '../WorkflowAdapter.js';
9
9
  /** Validation result */
10
10
  export interface AgentSpecValidationResult {
11
11
  valid: boolean;
@@ -16,38 +16,36 @@ export function validateForAgentSpecExport(workflow) {
16
16
  const errors = [];
17
17
  const warnings = [];
18
18
  if (workflow.nodes.length === 0) {
19
- errors.push("Workflow has no nodes");
19
+ errors.push('Workflow has no nodes');
20
20
  return { valid: false, errors, warnings };
21
21
  }
22
22
  // Check for start nodes
23
23
  const startNodes = workflow.nodes.filter((n) => {
24
- const ext = n.data.metadata.extensions?.["agentspec:component_type"];
25
- if (ext === "start_node")
24
+ const ext = n.data.metadata.extensions?.['agentspec:component_type'];
25
+ if (ext === 'start_node')
26
26
  return true;
27
- return (n.data.metadata.type === "terminal" &&
28
- n.data.metadata.category === "triggers");
27
+ return n.data.metadata.type === 'terminal' && n.data.metadata.category === 'triggers';
29
28
  });
30
29
  if (startNodes.length === 0) {
31
- errors.push("Agent Spec requires exactly one StartNode. No start node found (terminal node with triggers category).");
30
+ errors.push('Agent Spec requires exactly one StartNode. No start node found (terminal node with triggers category).');
32
31
  }
33
32
  else if (startNodes.length > 1) {
34
- errors.push(`Agent Spec requires exactly one StartNode. Found ${startNodes.length}: ${startNodes.map((n) => n.id).join(", ")}`);
33
+ errors.push(`Agent Spec requires exactly one StartNode. Found ${startNodes.length}: ${startNodes.map((n) => n.id).join(', ')}`);
35
34
  }
36
35
  // Check for end nodes
37
36
  const endNodes = workflow.nodes.filter((n) => {
38
- const ext = n.data.metadata.extensions?.["agentspec:component_type"];
39
- if (ext === "end_node")
37
+ const ext = n.data.metadata.extensions?.['agentspec:component_type'];
38
+ if (ext === 'end_node')
40
39
  return true;
41
- return (n.data.metadata.type === "terminal" &&
42
- n.data.metadata.category === "outputs");
40
+ return n.data.metadata.type === 'terminal' && n.data.metadata.category === 'outputs';
43
41
  });
44
42
  if (endNodes.length === 0) {
45
- errors.push("Agent Spec requires at least one EndNode. No end node found (terminal node with outputs category).");
43
+ errors.push('Agent Spec requires at least one EndNode. No end node found (terminal node with outputs category).');
46
44
  }
47
45
  // Check gateway nodes have branches
48
46
  const gatewayNodes = workflow.nodes.filter((n) => {
49
- const ext = n.data.metadata.extensions?.["agentspec:component_type"];
50
- return ext === "branching_node" || n.data.metadata.type === "gateway";
47
+ const ext = n.data.metadata.extensions?.['agentspec:component_type'];
48
+ return ext === 'branching_node' || n.data.metadata.type === 'gateway';
51
49
  });
52
50
  for (const gw of gatewayNodes) {
53
51
  const branches = gw.data.config?.branches;
@@ -63,7 +61,7 @@ export function validateForAgentSpecExport(workflow) {
63
61
  }
64
62
  const disconnected = workflow.nodes.filter((n) => !connectedNodes.has(n.id));
65
63
  if (disconnected.length > 0) {
66
- warnings.push(`${disconnected.length} node(s) are not connected to any edges: ${disconnected.map((n) => n.data.label || n.id).join(", ")}`);
64
+ warnings.push(`${disconnected.length} node(s) are not connected to any edges: ${disconnected.map((n) => n.data.label || n.id).join(', ')}`);
67
65
  }
68
66
  return { valid: errors.length === 0, errors, warnings };
69
67
  }
@@ -81,27 +79,27 @@ export function validateAgentSpecFlow(flow) {
81
79
  const errors = [];
82
80
  const warnings = [];
83
81
  if (!flow.nodes || flow.nodes.length === 0) {
84
- errors.push("Flow has no nodes");
82
+ errors.push('Flow has no nodes');
85
83
  return { valid: false, errors, warnings };
86
84
  }
87
85
  // Build node name set
88
86
  const nodeNames = new Set(flow.nodes.map((n) => n.name));
89
87
  // Check start_node exists
90
88
  if (!flow.start_node) {
91
- errors.push("Flow is missing start_node reference");
89
+ errors.push('Flow is missing start_node reference');
92
90
  }
93
91
  else if (!nodeNames.has(flow.start_node)) {
94
92
  errors.push(`start_node "${flow.start_node}" does not match any node name`);
95
93
  }
96
94
  // Check start_node is actually a start_node type
97
95
  const startNode = flow.nodes.find((n) => n.name === flow.start_node);
98
- if (startNode && startNode.component_type !== "start_node") {
96
+ if (startNode && startNode.component_type !== 'start_node') {
99
97
  warnings.push(`start_node "${flow.start_node}" has component_type "${startNode.component_type}" instead of "start_node"`);
100
98
  }
101
99
  // Check for end nodes
102
- const endNodes = flow.nodes.filter((n) => n.component_type === "end_node");
100
+ const endNodes = flow.nodes.filter((n) => n.component_type === 'end_node');
103
101
  if (endNodes.length === 0) {
104
- warnings.push("Flow has no EndNode. Consider adding one for clarity.");
102
+ warnings.push('Flow has no EndNode. Consider adding one for clarity.');
105
103
  }
106
104
  // Check for duplicate node names
107
105
  const nameCount = new Map();
@@ -124,7 +122,7 @@ export function validateAgentSpecFlow(flow) {
124
122
  // Validate from_branch references
125
123
  if (edge.from_branch) {
126
124
  const fromNode = flow.nodes.find((n) => n.name === edge.from_node);
127
- if (fromNode && fromNode.component_type === "branching_node") {
125
+ if (fromNode && fromNode.component_type === 'branching_node') {
128
126
  const branchingNode = fromNode;
129
127
  if (!branchingNode.branches?.some((b) => b.name === edge.from_branch)) {
130
128
  errors.push(`Control flow edge "${edge.name}" references branch "${edge.from_branch}" which doesn't exist on node "${edge.from_node}"`);
@@ -160,7 +158,7 @@ export function validateAgentSpecFlow(flow) {
160
158
  }
161
159
  // Validate branching nodes have branches
162
160
  for (const node of flow.nodes) {
163
- if (node.component_type === "branching_node") {
161
+ if (node.component_type === 'branching_node') {
164
162
  const bn = node;
165
163
  if (!bn.branches || bn.branches.length === 0) {
166
164
  warnings.push(`BranchingNode "${node.name}" has no branches defined`);
@@ -5,9 +5,9 @@
5
5
  *
6
6
  * @module api/enhanced-client
7
7
  */
8
- import type { NodeMetadata, Workflow, ExecutionResult } from "../types/index.js";
9
- import type { EndpointConfig } from "../config/endpoints.js";
10
- import type { AuthProvider } from "../types/auth.js";
8
+ import type { NodeMetadata, Workflow, ExecutionResult } from '../types/index.js';
9
+ import type { EndpointConfig } from '../config/endpoints.js';
10
+ import type { AuthProvider } from '../types/auth.js';
11
11
  /**
12
12
  * API error with additional context
13
13
  */
@@ -5,11 +5,11 @@
5
5
  *
6
6
  * @module api/enhanced-client
7
7
  */
8
- import { buildEndpointUrl, getEndpointMethod, getEndpointHeaders, } from "../config/endpoints.js";
9
- import { NoAuthProvider } from "../types/auth.js";
10
- import { getApiSettings } from "../stores/settingsStore.svelte.js";
11
- import { logger } from "../utils/logger.js";
12
- import { DEFAULT_API_TIMEOUT_MS } from "../config/constants.js";
8
+ import { buildEndpointUrl, getEndpointMethod, getEndpointHeaders } from '../config/endpoints.js';
9
+ import { NoAuthProvider } from '../types/auth.js';
10
+ import { getApiSettings } from '../stores/settingsStore.svelte.js';
11
+ import { logger } from '../utils/logger.js';
12
+ import { DEFAULT_API_TIMEOUT_MS } from '../config/constants.js';
13
13
  /**
14
14
  * API error with additional context
15
15
  */
@@ -22,7 +22,7 @@ export class ApiError extends Error {
22
22
  operation;
23
23
  constructor(message, status, operation, errorData = {}) {
24
24
  super(message);
25
- this.name = "ApiError";
25
+ this.name = 'ApiError';
26
26
  this.status = status;
27
27
  this.operation = operation;
28
28
  this.errorData = errorData;
@@ -67,7 +67,7 @@ export class EnhancedFlowDropApiClient {
67
67
  * @param options - Additional fetch options
68
68
  * @param operation - Description of the operation (for error messages)
69
69
  */
70
- async request(endpointKey, endpointPath, params, options = {}, operation = "API request") {
70
+ async request(endpointKey, endpointPath, params, options = {}, operation = 'API request') {
71
71
  const url = buildEndpointUrl(this.config, endpointPath, params);
72
72
  const method = options.method ?? getEndpointMethod(this.config, endpointKey);
73
73
  const configHeaders = getEndpointHeaders(this.config, endpointKey);
@@ -79,7 +79,7 @@ export class EnhancedFlowDropApiClient {
79
79
  const headers = {
80
80
  ...configHeaders,
81
81
  ...authHeaders,
82
- ...options.headers,
82
+ ...options.headers
83
83
  };
84
84
  // Create AbortController for timeout
85
85
  const controller = new AbortController();
@@ -89,7 +89,7 @@ export class EnhancedFlowDropApiClient {
89
89
  method,
90
90
  headers,
91
91
  signal: controller.signal,
92
- ...options,
92
+ ...options
93
93
  };
94
94
  let lastError = null;
95
95
  // Determine retry settings: user settings override config
@@ -112,25 +112,24 @@ export class EnhancedFlowDropApiClient {
112
112
  fetchConfig.headers = {
113
113
  ...configHeaders,
114
114
  ...newAuthHeaders,
115
- ...options.headers,
115
+ ...options.headers
116
116
  };
117
117
  continue; // Retry with new headers
118
118
  }
119
119
  }
120
- throw new ApiError("Unauthorized", 401, operation, {});
120
+ throw new ApiError('Unauthorized', 401, operation, {});
121
121
  }
122
122
  // Handle 403 Forbidden
123
123
  if (response.status === 403) {
124
124
  if (this.authProvider.onForbidden) {
125
125
  await this.authProvider.onForbidden();
126
126
  }
127
- throw new ApiError("Forbidden", 403, operation, {});
127
+ throw new ApiError('Forbidden', 403, operation, {});
128
128
  }
129
129
  // Handle other errors
130
130
  if (!response.ok) {
131
131
  const errorData = await response.json().catch(() => ({}));
132
- throw new ApiError(errorData.error ??
133
- `HTTP ${response.status}: ${response.statusText}`, response.status, operation, errorData);
132
+ throw new ApiError(errorData.error ?? `HTTP ${response.status}: ${response.statusText}`, response.status, operation, errorData);
134
133
  }
135
134
  const data = await response.json();
136
135
  return data;
@@ -139,9 +138,9 @@ export class EnhancedFlowDropApiClient {
139
138
  // Clear timeout on error
140
139
  clearTimeout(timeoutId);
141
140
  // Handle abort (timeout)
142
- if (error instanceof Error && error.name === "AbortError") {
141
+ if (error instanceof Error && error.name === 'AbortError') {
143
142
  lastError = new ApiError(`Request timeout after ${timeoutMs}ms`, 0, operation, {
144
- timeout: true,
143
+ timeout: true
145
144
  });
146
145
  // Don't retry on timeout - it's a client-side timeout
147
146
  logger.error(`API request timed out after ${timeoutMs}ms:`, lastError);
@@ -163,7 +162,7 @@ export class EnhancedFlowDropApiClient {
163
162
  }
164
163
  // Wait before retry with exponential backoff
165
164
  const baseDelay = this.config.retry?.delay ?? 1000;
166
- const backoffDelay = this.config.retry?.backoff === "exponential"
165
+ const backoffDelay = this.config.retry?.backoff === 'exponential'
167
166
  ? baseDelay * Math.pow(2, attempt - 1)
168
167
  : baseDelay;
169
168
  await new Promise((resolve) => setTimeout(resolve, backoffDelay));
@@ -198,9 +197,9 @@ export class EnhancedFlowDropApiClient {
198
197
  * Fetch all available node types
199
198
  */
200
199
  async getAvailableNodes() {
201
- const response = await this.request("nodes.list", this.config.endpoints.nodes.list, undefined, {}, "fetch available nodes");
200
+ const response = await this.request('nodes.list', this.config.endpoints.nodes.list, undefined, {}, 'fetch available nodes');
202
201
  if (!response.success || !response.data) {
203
- throw new Error(response.error ?? "Failed to fetch available nodes");
202
+ throw new Error(response.error ?? 'Failed to fetch available nodes');
204
203
  }
205
204
  return response.data;
206
205
  }
@@ -208,9 +207,9 @@ export class EnhancedFlowDropApiClient {
208
207
  * Fetch nodes filtered by category
209
208
  */
210
209
  async getNodesByCategory(category) {
211
- const response = await this.request("nodes.byCategory", this.config.endpoints.nodes.byCategory, { category }, {}, "fetch nodes by category");
210
+ const response = await this.request('nodes.byCategory', this.config.endpoints.nodes.byCategory, { category }, {}, 'fetch nodes by category');
212
211
  if (!response.success || !response.data) {
213
- throw new Error(response.error ?? "Failed to fetch nodes by category");
212
+ throw new Error(response.error ?? 'Failed to fetch nodes by category');
214
213
  }
215
214
  return response.data;
216
215
  }
@@ -218,9 +217,9 @@ export class EnhancedFlowDropApiClient {
218
217
  * Fetch metadata for a specific node type
219
218
  */
220
219
  async getNodeMetadata(nodeId) {
221
- const response = await this.request("nodes.metadata", this.config.endpoints.nodes.metadata, { id: nodeId }, {}, "fetch node metadata");
220
+ const response = await this.request('nodes.metadata', this.config.endpoints.nodes.metadata, { id: nodeId }, {}, 'fetch node metadata');
222
221
  if (!response.success || !response.data) {
223
- throw new Error(response.error ?? "Failed to fetch node metadata");
222
+ throw new Error(response.error ?? 'Failed to fetch node metadata');
224
223
  }
225
224
  return response.data;
226
225
  }
@@ -231,12 +230,12 @@ export class EnhancedFlowDropApiClient {
231
230
  * Save a new workflow
232
231
  */
233
232
  async saveWorkflow(workflow) {
234
- const response = await this.request("workflows.create", this.config.endpoints.workflows.create, undefined, {
235
- method: "POST",
236
- body: JSON.stringify(workflow),
237
- }, "save workflow");
233
+ const response = await this.request('workflows.create', this.config.endpoints.workflows.create, undefined, {
234
+ method: 'POST',
235
+ body: JSON.stringify(workflow)
236
+ }, 'save workflow');
238
237
  if (!response.success || !response.data) {
239
- throw new Error(response.error ?? "Failed to save workflow");
238
+ throw new Error(response.error ?? 'Failed to save workflow');
240
239
  }
241
240
  return response.data;
242
241
  }
@@ -244,12 +243,12 @@ export class EnhancedFlowDropApiClient {
244
243
  * Update an existing workflow
245
244
  */
246
245
  async updateWorkflow(workflowId, workflow) {
247
- const response = await this.request("workflows.update", this.config.endpoints.workflows.update, { id: workflowId }, {
248
- method: "PUT",
249
- body: JSON.stringify(workflow),
250
- }, "update workflow");
246
+ const response = await this.request('workflows.update', this.config.endpoints.workflows.update, { id: workflowId }, {
247
+ method: 'PUT',
248
+ body: JSON.stringify(workflow)
249
+ }, 'update workflow');
251
250
  if (!response.success || !response.data) {
252
- throw new Error(response.error ?? "Failed to update workflow");
251
+ throw new Error(response.error ?? 'Failed to update workflow');
253
252
  }
254
253
  return response.data;
255
254
  }
@@ -257,9 +256,9 @@ export class EnhancedFlowDropApiClient {
257
256
  * Load a workflow by ID
258
257
  */
259
258
  async loadWorkflow(workflowId) {
260
- const response = await this.request("workflows.get", this.config.endpoints.workflows.get, { id: workflowId }, {}, "load workflow");
259
+ const response = await this.request('workflows.get', this.config.endpoints.workflows.get, { id: workflowId }, {}, 'load workflow');
261
260
  if (!response.success || !response.data) {
262
- throw new Error(response.error ?? "Failed to load workflow");
261
+ throw new Error(response.error ?? 'Failed to load workflow');
263
262
  }
264
263
  return response.data;
265
264
  }
@@ -267,9 +266,9 @@ export class EnhancedFlowDropApiClient {
267
266
  * List all workflows
268
267
  */
269
268
  async listWorkflows() {
270
- const response = await this.request("workflows.list", this.config.endpoints.workflows.list, undefined, {}, "list workflows");
269
+ const response = await this.request('workflows.list', this.config.endpoints.workflows.list, undefined, {}, 'list workflows');
271
270
  if (!response.success || !response.data) {
272
- throw new Error(response.error ?? "Failed to list workflows");
271
+ throw new Error(response.error ?? 'Failed to list workflows');
273
272
  }
274
273
  return response.data;
275
274
  }
@@ -277,21 +276,21 @@ export class EnhancedFlowDropApiClient {
277
276
  * Delete a workflow
278
277
  */
279
278
  async deleteWorkflow(workflowId) {
280
- const response = await this.request("workflows.delete", this.config.endpoints.workflows.delete, { id: workflowId }, { method: "DELETE" }, "delete workflow");
279
+ const response = await this.request('workflows.delete', this.config.endpoints.workflows.delete, { id: workflowId }, { method: 'DELETE' }, 'delete workflow');
281
280
  if (!response.success) {
282
- throw new Error(response.error ?? "Failed to delete workflow");
281
+ throw new Error(response.error ?? 'Failed to delete workflow');
283
282
  }
284
283
  }
285
284
  /**
286
285
  * Validate a workflow
287
286
  */
288
287
  async validateWorkflow(workflow) {
289
- const response = await this.request("workflows.validate", this.config.endpoints.workflows.validate, undefined, {
290
- method: "POST",
291
- body: JSON.stringify(workflow),
292
- }, "validate workflow");
288
+ const response = await this.request('workflows.validate', this.config.endpoints.workflows.validate, undefined, {
289
+ method: 'POST',
290
+ body: JSON.stringify(workflow)
291
+ }, 'validate workflow');
293
292
  if (!response.success || !response.data) {
294
- throw new Error(response.error ?? "Failed to validate workflow");
293
+ throw new Error(response.error ?? 'Failed to validate workflow');
295
294
  }
296
295
  return response.data;
297
296
  }
@@ -299,9 +298,9 @@ export class EnhancedFlowDropApiClient {
299
298
  * Export a workflow as JSON string
300
299
  */
301
300
  async exportWorkflow(workflowId) {
302
- const response = await this.request("workflows.export", this.config.endpoints.workflows.export, { id: workflowId }, {}, "export workflow");
301
+ const response = await this.request('workflows.export', this.config.endpoints.workflows.export, { id: workflowId }, {}, 'export workflow');
303
302
  if (!response.success || !response.data) {
304
- throw new Error(response.error ?? "Failed to export workflow");
303
+ throw new Error(response.error ?? 'Failed to export workflow');
305
304
  }
306
305
  return response.data;
307
306
  }
@@ -309,12 +308,12 @@ export class EnhancedFlowDropApiClient {
309
308
  * Import a workflow from JSON
310
309
  */
311
310
  async importWorkflow(workflowJson) {
312
- const response = await this.request("workflows.import", this.config.endpoints.workflows.import, undefined, {
313
- method: "POST",
314
- body: JSON.stringify({ workflow: workflowJson }),
315
- }, "import workflow");
311
+ const response = await this.request('workflows.import', this.config.endpoints.workflows.import, undefined, {
312
+ method: 'POST',
313
+ body: JSON.stringify({ workflow: workflowJson })
314
+ }, 'import workflow');
316
315
  if (!response.success || !response.data) {
317
- throw new Error(response.error ?? "Failed to import workflow");
316
+ throw new Error(response.error ?? 'Failed to import workflow');
318
317
  }
319
318
  return response.data;
320
319
  }
@@ -325,12 +324,12 @@ export class EnhancedFlowDropApiClient {
325
324
  * Execute a workflow
326
325
  */
327
326
  async executeWorkflow(workflowId, inputs) {
328
- const response = await this.request("executions.execute", this.config.endpoints.executions.execute, { id: workflowId }, {
329
- method: "POST",
330
- body: JSON.stringify({ inputs }),
331
- }, "execute workflow");
327
+ const response = await this.request('executions.execute', this.config.endpoints.executions.execute, { id: workflowId }, {
328
+ method: 'POST',
329
+ body: JSON.stringify({ inputs })
330
+ }, 'execute workflow');
332
331
  if (!response.success || !response.data) {
333
- throw new Error(response.error ?? "Failed to execute workflow");
332
+ throw new Error(response.error ?? 'Failed to execute workflow');
334
333
  }
335
334
  return response.data;
336
335
  }
@@ -338,9 +337,9 @@ export class EnhancedFlowDropApiClient {
338
337
  * Get execution status
339
338
  */
340
339
  async getExecutionStatus(executionId) {
341
- const response = await this.request("executions.status", this.config.endpoints.executions.status, { id: executionId }, {}, "get execution status");
340
+ const response = await this.request('executions.status', this.config.endpoints.executions.status, { id: executionId }, {}, 'get execution status');
342
341
  if (!response.success || !response.data) {
343
- throw new Error(response.error ?? "Failed to get execution status");
342
+ throw new Error(response.error ?? 'Failed to get execution status');
344
343
  }
345
344
  return response.data;
346
345
  }
@@ -348,18 +347,18 @@ export class EnhancedFlowDropApiClient {
348
347
  * Cancel a running execution
349
348
  */
350
349
  async cancelExecution(executionId) {
351
- const response = await this.request("executions.cancel", this.config.endpoints.executions.cancel, { id: executionId }, { method: "POST" }, "cancel execution");
350
+ const response = await this.request('executions.cancel', this.config.endpoints.executions.cancel, { id: executionId }, { method: 'POST' }, 'cancel execution');
352
351
  if (!response.success) {
353
- throw new Error(response.error ?? "Failed to cancel execution");
352
+ throw new Error(response.error ?? 'Failed to cancel execution');
354
353
  }
355
354
  }
356
355
  /**
357
356
  * Get execution logs
358
357
  */
359
358
  async getExecutionLogs(executionId) {
360
- const response = await this.request("executions.logs", this.config.endpoints.executions.logs, { id: executionId }, {}, "get execution logs");
359
+ const response = await this.request('executions.logs', this.config.endpoints.executions.logs, { id: executionId }, {}, 'get execution logs');
361
360
  if (!response.success || !response.data) {
362
- throw new Error(response.error ?? "Failed to get execution logs");
361
+ throw new Error(response.error ?? 'Failed to get execution logs');
363
362
  }
364
363
  return response.data;
365
364
  }
@@ -370,9 +369,9 @@ export class EnhancedFlowDropApiClient {
370
369
  * List available templates
371
370
  */
372
371
  async listTemplates() {
373
- const response = await this.request("templates.list", this.config.endpoints.templates.list, undefined, {}, "list templates");
372
+ const response = await this.request('templates.list', this.config.endpoints.templates.list, undefined, {}, 'list templates');
374
373
  if (!response.success || !response.data) {
375
- throw new Error(response.error ?? "Failed to list templates");
374
+ throw new Error(response.error ?? 'Failed to list templates');
376
375
  }
377
376
  return response.data;
378
377
  }
@@ -380,9 +379,9 @@ export class EnhancedFlowDropApiClient {
380
379
  * Get a template by ID
381
380
  */
382
381
  async getTemplate(templateId) {
383
- const response = await this.request("templates.get", this.config.endpoints.templates.get, { id: templateId }, {}, "get template");
382
+ const response = await this.request('templates.get', this.config.endpoints.templates.get, { id: templateId }, {}, 'get template');
384
383
  if (!response.success || !response.data) {
385
- throw new Error(response.error ?? "Failed to get template");
384
+ throw new Error(response.error ?? 'Failed to get template');
386
385
  }
387
386
  return response.data;
388
387
  }
@@ -393,9 +392,9 @@ export class EnhancedFlowDropApiClient {
393
392
  * Get system health status
394
393
  */
395
394
  async getSystemHealth() {
396
- const response = await this.request("system.health", this.config.endpoints.system.health, undefined, {}, "get system health");
395
+ const response = await this.request('system.health', this.config.endpoints.system.health, undefined, {}, 'get system health');
397
396
  if (!response.success || !response.data) {
398
- throw new Error(response.error ?? "Failed to get system health");
397
+ throw new Error(response.error ?? 'Failed to get system health');
399
398
  }
400
399
  return response.data;
401
400
  }
@@ -403,9 +402,9 @@ export class EnhancedFlowDropApiClient {
403
402
  * Get system configuration
404
403
  */
405
404
  async getSystemConfig() {
406
- const response = await this.request("system.config", this.config.endpoints.system.config, undefined, {}, "get system config");
405
+ const response = await this.request('system.config', this.config.endpoints.system.config, undefined, {}, 'get system config');
407
406
  if (!response.success || !response.data) {
408
- throw new Error(response.error ?? "Failed to get system config");
407
+ throw new Error(response.error ?? 'Failed to get system config');
409
408
  }
410
409
  return response.data;
411
410
  }
@@ -413,9 +412,9 @@ export class EnhancedFlowDropApiClient {
413
412
  * Get system version information
414
413
  */
415
414
  async getSystemVersion() {
416
- const response = await this.request("system.version", this.config.endpoints.system.version, undefined, {}, "get system version");
415
+ const response = await this.request('system.version', this.config.endpoints.system.version, undefined, {}, 'get system version');
417
416
  if (!response.success || !response.data) {
418
- throw new Error(response.error ?? "Failed to get system version");
417
+ throw new Error(response.error ?? 'Failed to get system version');
419
418
  }
420
419
  return response.data;
421
420
  }
@@ -426,6 +425,6 @@ export class EnhancedFlowDropApiClient {
426
425
  * Fetch pipeline data including job information and status
427
426
  */
428
427
  async getPipelineData(pipelineId) {
429
- return this.request("pipelines.get", this.config.endpoints.pipelines.get, { id: pipelineId }, {}, "get pipeline data");
428
+ return this.request('pipelines.get', this.config.endpoints.pipelines.get, { id: pipelineId }, {}, 'get pipeline data');
430
429
  }
431
430
  }
@@ -9,12 +9,12 @@
9
9
  */
10
10
  /** Commands that only read workflow state without modifying it */
11
11
  const READ_ONLY_COMMANDS = new Set([
12
- "list_nodes",
13
- "list_edges",
14
- "list_types",
15
- "info",
16
- "get_config",
17
- "help",
12
+ 'list_nodes',
13
+ 'list_edges',
14
+ 'list_types',
15
+ 'info',
16
+ 'get_config',
17
+ 'help'
18
18
  ]);
19
19
  /**
20
20
  * Determine whether a DSL command type is mutating (modifies workflow state).
@@ -20,8 +20,8 @@
20
20
  * />
21
21
  * ```
22
22
  */
23
- export { default as AIChatPanel } from "../components/chat/AIChatPanel.svelte";
24
- export { default as CommandPreview } from "../components/chat/CommandPreview.svelte";
25
- export { extractCommands } from "./responseParser.js";
26
- export { isMutatingCommand } from "./commandClassifier.js";
27
- export type { ChatMessageRole, ChatHistoryMessage, ChatRequest, ChatResponse, ExtractedCommands, CommandExecutionStatus, CommandPreviewItem, } from "../types/chat.js";
23
+ export { default as AIChatPanel } from '../components/chat/AIChatPanel.svelte';
24
+ export { default as CommandPreview } from '../components/chat/CommandPreview.svelte';
25
+ export { extractCommands } from './responseParser.js';
26
+ export { isMutatingCommand } from './commandClassifier.js';
27
+ export type { ChatMessageRole, ChatHistoryMessage, ChatRequest, ChatResponse, ExtractedCommands, CommandExecutionStatus, CommandPreviewItem } from '../types/chat.js';
@@ -23,10 +23,10 @@
23
23
  // ============================================================================
24
24
  // Chat Components
25
25
  // ============================================================================
26
- export { default as AIChatPanel } from "../components/chat/AIChatPanel.svelte";
27
- export { default as CommandPreview } from "../components/chat/CommandPreview.svelte";
26
+ export { default as AIChatPanel } from '../components/chat/AIChatPanel.svelte';
27
+ export { default as CommandPreview } from '../components/chat/CommandPreview.svelte';
28
28
  // ============================================================================
29
29
  // Chat Utilities
30
30
  // ============================================================================
31
- export { extractCommands } from "./responseParser.js";
32
- export { isMutatingCommand } from "./commandClassifier.js";
31
+ export { extractCommands } from './responseParser.js';
32
+ export { isMutatingCommand } from './commandClassifier.js';