@flowdrop/flowdrop 1.0.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 (403) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +252 -0
  3. package/dist/adapters/WorkflowAdapter.d.ts +167 -0
  4. package/dist/adapters/WorkflowAdapter.js +368 -0
  5. package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +96 -0
  6. package/dist/adapters/agentspec/AgentSpecAdapter.js +626 -0
  7. package/dist/adapters/agentspec/agentAdapter.d.ts +59 -0
  8. package/dist/adapters/agentspec/agentAdapter.js +91 -0
  9. package/dist/adapters/agentspec/autoLayout.d.ts +34 -0
  10. package/dist/adapters/agentspec/autoLayout.js +127 -0
  11. package/dist/adapters/agentspec/componentTypeDefaults.d.ts +73 -0
  12. package/dist/adapters/agentspec/componentTypeDefaults.js +238 -0
  13. package/dist/adapters/agentspec/defaultNodeTypes.d.ts +53 -0
  14. package/dist/adapters/agentspec/defaultNodeTypes.js +561 -0
  15. package/dist/adapters/agentspec/index.d.ts +37 -0
  16. package/dist/adapters/agentspec/index.js +39 -0
  17. package/dist/adapters/agentspec/validator.d.ts +34 -0
  18. package/dist/adapters/agentspec/validator.js +169 -0
  19. package/dist/api/enhanced-client.d.ts +183 -0
  20. package/dist/api/enhanced-client.js +430 -0
  21. package/dist/components/App.svelte +981 -0
  22. package/dist/components/App.svelte.d.ts +54 -0
  23. package/dist/components/CanvasBanner.stories.svelte +29 -0
  24. package/dist/components/CanvasBanner.stories.svelte.d.ts +27 -0
  25. package/dist/components/CanvasBanner.svelte +57 -0
  26. package/dist/components/CanvasBanner.svelte.d.ts +8 -0
  27. package/dist/components/ConfigForm.svelte +1138 -0
  28. package/dist/components/ConfigForm.svelte.d.ts +44 -0
  29. package/dist/components/ConfigModal.svelte +188 -0
  30. package/dist/components/ConfigModal.svelte.d.ts +13 -0
  31. package/dist/components/ConfigPanel.stories.svelte +47 -0
  32. package/dist/components/ConfigPanel.stories.svelte.d.ts +27 -0
  33. package/dist/components/ConfigPanel.svelte +182 -0
  34. package/dist/components/ConfigPanel.svelte.d.ts +32 -0
  35. package/dist/components/ConnectionLine.svelte +32 -0
  36. package/dist/components/ConnectionLine.svelte.d.ts +3 -0
  37. package/dist/components/EdgeRefresher.svelte +41 -0
  38. package/dist/components/EdgeRefresher.svelte.d.ts +9 -0
  39. package/dist/components/FlowDropZone.svelte +83 -0
  40. package/dist/components/FlowDropZone.svelte.d.ts +13 -0
  41. package/dist/components/LoadingSpinner.stories.svelte +30 -0
  42. package/dist/components/LoadingSpinner.stories.svelte.d.ts +27 -0
  43. package/dist/components/LoadingSpinner.svelte +36 -0
  44. package/dist/components/LoadingSpinner.svelte.d.ts +8 -0
  45. package/dist/components/Logo.stories.svelte +22 -0
  46. package/dist/components/Logo.stories.svelte.d.ts +27 -0
  47. package/dist/components/Logo.svelte +102 -0
  48. package/dist/components/Logo.svelte.d.ts +26 -0
  49. package/dist/components/LogsSidebar.svelte +563 -0
  50. package/dist/components/LogsSidebar.svelte.d.ts +17 -0
  51. package/dist/components/MarkdownDisplay.stories.svelte +36 -0
  52. package/dist/components/MarkdownDisplay.stories.svelte.d.ts +27 -0
  53. package/dist/components/MarkdownDisplay.svelte +29 -0
  54. package/dist/components/MarkdownDisplay.svelte.d.ts +7 -0
  55. package/dist/components/Navbar.stories.svelte +53 -0
  56. package/dist/components/Navbar.stories.svelte.d.ts +27 -0
  57. package/dist/components/Navbar.svelte +726 -0
  58. package/dist/components/Navbar.svelte.d.ts +29 -0
  59. package/dist/components/NodeSidebar.svelte +762 -0
  60. package/dist/components/NodeSidebar.svelte.d.ts +9 -0
  61. package/dist/components/NodeStatusOverlay.stories.svelte +85 -0
  62. package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +27 -0
  63. package/dist/components/NodeStatusOverlay.svelte +327 -0
  64. package/dist/components/NodeStatusOverlay.svelte.d.ts +11 -0
  65. package/dist/components/PipelineStatus.svelte +314 -0
  66. package/dist/components/PipelineStatus.svelte.d.ts +20 -0
  67. package/dist/components/PortCoordinateTracker.svelte +58 -0
  68. package/dist/components/PortCoordinateTracker.svelte.d.ts +12 -0
  69. package/dist/components/ReadOnlyDetails.svelte +170 -0
  70. package/dist/components/ReadOnlyDetails.svelte.d.ts +25 -0
  71. package/dist/components/SchemaForm.stories.svelte +116 -0
  72. package/dist/components/SchemaForm.stories.svelte.d.ts +27 -0
  73. package/dist/components/SchemaForm.svelte +536 -0
  74. package/dist/components/SchemaForm.svelte.d.ts +83 -0
  75. package/dist/components/SettingsModal.svelte +279 -0
  76. package/dist/components/SettingsModal.svelte.d.ts +23 -0
  77. package/dist/components/SettingsPanel.svelte +638 -0
  78. package/dist/components/SettingsPanel.svelte.d.ts +21 -0
  79. package/dist/components/StatusIcon.stories.svelte +60 -0
  80. package/dist/components/StatusIcon.stories.svelte.d.ts +27 -0
  81. package/dist/components/StatusIcon.svelte +119 -0
  82. package/dist/components/StatusIcon.svelte.d.ts +10 -0
  83. package/dist/components/StatusLabel.stories.svelte +17 -0
  84. package/dist/components/StatusLabel.stories.svelte.d.ts +27 -0
  85. package/dist/components/StatusLabel.svelte +33 -0
  86. package/dist/components/StatusLabel.svelte.d.ts +7 -0
  87. package/dist/components/ThemeToggle.stories.svelte +25 -0
  88. package/dist/components/ThemeToggle.stories.svelte.d.ts +27 -0
  89. package/dist/components/ThemeToggle.svelte +185 -0
  90. package/dist/components/ThemeToggle.svelte.d.ts +14 -0
  91. package/dist/components/UniversalNode.svelte +155 -0
  92. package/dist/components/UniversalNode.svelte.d.ts +15 -0
  93. package/dist/components/WorkflowEditor.svelte +1035 -0
  94. package/dist/components/WorkflowEditor.svelte.d.ts +23 -0
  95. package/dist/components/form/FormArray.svelte +1049 -0
  96. package/dist/components/form/FormArray.svelte.d.ts +22 -0
  97. package/dist/components/form/FormAutocomplete.svelte +1009 -0
  98. package/dist/components/form/FormAutocomplete.svelte.d.ts +25 -0
  99. package/dist/components/form/FormCheckboxGroup.stories.svelte +28 -0
  100. package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +27 -0
  101. package/dist/components/form/FormCheckboxGroup.svelte +155 -0
  102. package/dist/components/form/FormCheckboxGroup.svelte.d.ts +17 -0
  103. package/dist/components/form/FormCodeEditor.svelte +458 -0
  104. package/dist/components/form/FormCodeEditor.svelte.d.ts +25 -0
  105. package/dist/components/form/FormField.svelte +417 -0
  106. package/dist/components/form/FormField.svelte.d.ts +29 -0
  107. package/dist/components/form/FormFieldLight.svelte +425 -0
  108. package/dist/components/form/FormFieldLight.svelte.d.ts +18 -0
  109. package/dist/components/form/FormFieldWrapper.stories.svelte +53 -0
  110. package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +27 -0
  111. package/dist/components/form/FormFieldWrapper.svelte +125 -0
  112. package/dist/components/form/FormFieldWrapper.svelte.d.ts +18 -0
  113. package/dist/components/form/FormFieldset.svelte +142 -0
  114. package/dist/components/form/FormFieldset.svelte.d.ts +11 -0
  115. package/dist/components/form/FormMarkdownEditor.svelte +752 -0
  116. package/dist/components/form/FormMarkdownEditor.svelte.d.ts +33 -0
  117. package/dist/components/form/FormNumberField.stories.svelte +36 -0
  118. package/dist/components/form/FormNumberField.stories.svelte.d.ts +27 -0
  119. package/dist/components/form/FormNumberField.svelte +112 -0
  120. package/dist/components/form/FormNumberField.svelte.d.ts +25 -0
  121. package/dist/components/form/FormRangeField.stories.svelte +31 -0
  122. package/dist/components/form/FormRangeField.stories.svelte.d.ts +27 -0
  123. package/dist/components/form/FormRangeField.svelte +246 -0
  124. package/dist/components/form/FormRangeField.svelte.d.ts +23 -0
  125. package/dist/components/form/FormSelect.stories.svelte +50 -0
  126. package/dist/components/form/FormSelect.stories.svelte.d.ts +27 -0
  127. package/dist/components/form/FormSelect.svelte +129 -0
  128. package/dist/components/form/FormSelect.svelte.d.ts +20 -0
  129. package/dist/components/form/FormTemplateEditor.svelte +825 -0
  130. package/dist/components/form/FormTemplateEditor.svelte.d.ts +41 -0
  131. package/dist/components/form/FormTextField.stories.svelte +30 -0
  132. package/dist/components/form/FormTextField.stories.svelte.d.ts +27 -0
  133. package/dist/components/form/FormTextField.svelte +91 -0
  134. package/dist/components/form/FormTextField.svelte.d.ts +19 -0
  135. package/dist/components/form/FormTextarea.stories.svelte +34 -0
  136. package/dist/components/form/FormTextarea.stories.svelte.d.ts +27 -0
  137. package/dist/components/form/FormTextarea.svelte +97 -0
  138. package/dist/components/form/FormTextarea.svelte.d.ts +21 -0
  139. package/dist/components/form/FormToggle.stories.svelte +30 -0
  140. package/dist/components/form/FormToggle.stories.svelte.d.ts +27 -0
  141. package/dist/components/form/FormToggle.svelte +126 -0
  142. package/dist/components/form/FormToggle.svelte.d.ts +19 -0
  143. package/dist/components/form/FormUISchemaRenderer.svelte +136 -0
  144. package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +32 -0
  145. package/dist/components/form/index.d.ts +50 -0
  146. package/dist/components/form/index.js +54 -0
  147. package/dist/components/form/templateAutocomplete.d.ts +29 -0
  148. package/dist/components/form/templateAutocomplete.js +254 -0
  149. package/dist/components/form/types.d.ts +485 -0
  150. package/dist/components/form/types.js +73 -0
  151. package/dist/components/interrupt/ChoicePrompt.stories.svelte +52 -0
  152. package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +27 -0
  153. package/dist/components/interrupt/ChoicePrompt.svelte +401 -0
  154. package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +23 -0
  155. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +71 -0
  156. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +27 -0
  157. package/dist/components/interrupt/ConfirmationPrompt.svelte +292 -0
  158. package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +25 -0
  159. package/dist/components/interrupt/FormPrompt.svelte +236 -0
  160. package/dist/components/interrupt/FormPrompt.svelte.d.ts +23 -0
  161. package/dist/components/interrupt/InterruptBubble.svelte +601 -0
  162. package/dist/components/interrupt/InterruptBubble.svelte.d.ts +16 -0
  163. package/dist/components/interrupt/ReviewPrompt.stories.svelte +67 -0
  164. package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +27 -0
  165. package/dist/components/interrupt/ReviewPrompt.svelte +861 -0
  166. package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +23 -0
  167. package/dist/components/interrupt/TextInputPrompt.stories.svelte +47 -0
  168. package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +27 -0
  169. package/dist/components/interrupt/TextInputPrompt.svelte +346 -0
  170. package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +23 -0
  171. package/dist/components/interrupt/index.d.ts +13 -0
  172. package/dist/components/interrupt/index.js +15 -0
  173. package/dist/components/layouts/MainLayout.svelte +718 -0
  174. package/dist/components/layouts/MainLayout.svelte.d.ts +62 -0
  175. package/dist/components/nodes/GatewayNode.stories.svelte +108 -0
  176. package/dist/components/nodes/GatewayNode.stories.svelte.d.ts +26 -0
  177. package/dist/components/nodes/GatewayNode.svelte +591 -0
  178. package/dist/components/nodes/GatewayNode.svelte.d.ts +15 -0
  179. package/dist/components/nodes/IdeaNode.stories.svelte +52 -0
  180. package/dist/components/nodes/IdeaNode.stories.svelte.d.ts +26 -0
  181. package/dist/components/nodes/IdeaNode.svelte +455 -0
  182. package/dist/components/nodes/IdeaNode.svelte.d.ts +24 -0
  183. package/dist/components/nodes/NotesNode.stories.svelte +76 -0
  184. package/dist/components/nodes/NotesNode.stories.svelte.d.ts +26 -0
  185. package/dist/components/nodes/NotesNode.svelte +378 -0
  186. package/dist/components/nodes/NotesNode.svelte.d.ts +24 -0
  187. package/dist/components/nodes/SimpleNode.stories.svelte +159 -0
  188. package/dist/components/nodes/SimpleNode.stories.svelte.d.ts +26 -0
  189. package/dist/components/nodes/SimpleNode.svelte +451 -0
  190. package/dist/components/nodes/SimpleNode.svelte.d.ts +25 -0
  191. package/dist/components/nodes/SquareNode.stories.svelte +82 -0
  192. package/dist/components/nodes/SquareNode.stories.svelte.d.ts +26 -0
  193. package/dist/components/nodes/SquareNode.svelte +407 -0
  194. package/dist/components/nodes/SquareNode.svelte.d.ts +25 -0
  195. package/dist/components/nodes/TerminalNode.stories.svelte +25 -0
  196. package/dist/components/nodes/TerminalNode.stories.svelte.d.ts +26 -0
  197. package/dist/components/nodes/TerminalNode.svelte +690 -0
  198. package/dist/components/nodes/TerminalNode.svelte.d.ts +25 -0
  199. package/dist/components/nodes/ToolNode.stories.svelte +189 -0
  200. package/dist/components/nodes/ToolNode.stories.svelte.d.ts +26 -0
  201. package/dist/components/nodes/ToolNode.svelte +471 -0
  202. package/dist/components/nodes/ToolNode.svelte.d.ts +36 -0
  203. package/dist/components/nodes/WorkflowNode.stories.svelte +55 -0
  204. package/dist/components/nodes/WorkflowNode.stories.svelte.d.ts +26 -0
  205. package/dist/components/nodes/WorkflowNode.svelte +571 -0
  206. package/dist/components/nodes/WorkflowNode.svelte.d.ts +15 -0
  207. package/dist/components/playground/ChatPanel.svelte +905 -0
  208. package/dist/components/playground/ChatPanel.svelte.d.ts +46 -0
  209. package/dist/components/playground/ExecutionLogs.svelte +488 -0
  210. package/dist/components/playground/ExecutionLogs.svelte.d.ts +14 -0
  211. package/dist/components/playground/InputCollector.svelte +444 -0
  212. package/dist/components/playground/InputCollector.svelte.d.ts +16 -0
  213. package/dist/components/playground/MessageBubble.stories.svelte +62 -0
  214. package/dist/components/playground/MessageBubble.stories.svelte.d.ts +27 -0
  215. package/dist/components/playground/MessageBubble.svelte +633 -0
  216. package/dist/components/playground/MessageBubble.svelte.d.ts +24 -0
  217. package/dist/components/playground/Playground.svelte +1075 -0
  218. package/dist/components/playground/Playground.svelte.d.ts +25 -0
  219. package/dist/components/playground/PlaygroundModal.svelte +220 -0
  220. package/dist/components/playground/PlaygroundModal.svelte.d.ts +25 -0
  221. package/dist/components/playground/SessionManager.svelte +538 -0
  222. package/dist/components/playground/SessionManager.svelte.d.ts +20 -0
  223. package/dist/config/agentSpecEndpoints.d.ts +70 -0
  224. package/dist/config/agentSpecEndpoints.js +65 -0
  225. package/dist/config/constants.d.ts +43 -0
  226. package/dist/config/constants.js +31 -0
  227. package/dist/config/defaultCategories.d.ts +7 -0
  228. package/dist/config/defaultCategories.js +126 -0
  229. package/dist/config/defaultPortConfig.d.ts +6 -0
  230. package/dist/config/defaultPortConfig.js +201 -0
  231. package/dist/config/endpoints.d.ts +160 -0
  232. package/dist/config/endpoints.js +146 -0
  233. package/dist/config/runtimeConfig.d.ts +47 -0
  234. package/dist/config/runtimeConfig.js +80 -0
  235. package/dist/core/index.d.ts +75 -0
  236. package/dist/core/index.js +92 -0
  237. package/dist/display/index.d.ts +29 -0
  238. package/dist/display/index.js +36 -0
  239. package/dist/editor/index.d.ts +95 -0
  240. package/dist/editor/index.js +138 -0
  241. package/dist/form/code.d.ts +101 -0
  242. package/dist/form/code.js +168 -0
  243. package/dist/form/fieldRegistry.d.ts +169 -0
  244. package/dist/form/fieldRegistry.js +152 -0
  245. package/dist/form/full.d.ts +56 -0
  246. package/dist/form/full.js +80 -0
  247. package/dist/form/index.d.ts +77 -0
  248. package/dist/form/index.js +91 -0
  249. package/dist/form/markdown.d.ts +69 -0
  250. package/dist/form/markdown.js +103 -0
  251. package/dist/helpers/nodeLayoutHelper.d.ts +14 -0
  252. package/dist/helpers/nodeLayoutHelper.js +19 -0
  253. package/dist/helpers/proximityConnect.d.ts +94 -0
  254. package/dist/helpers/proximityConnect.js +314 -0
  255. package/dist/helpers/workflowEditorHelper.d.ts +183 -0
  256. package/dist/helpers/workflowEditorHelper.js +595 -0
  257. package/dist/index.d.ts +37 -0
  258. package/dist/index.js +64 -0
  259. package/dist/mocks/app-environment.d.ts +8 -0
  260. package/dist/mocks/app-environment.js +16 -0
  261. package/dist/mocks/app-forms.d.ts +2 -0
  262. package/dist/mocks/app-forms.js +22 -0
  263. package/dist/mocks/app-navigation.d.ts +5 -0
  264. package/dist/mocks/app-navigation.js +36 -0
  265. package/dist/mocks/app-stores.d.ts +14 -0
  266. package/dist/mocks/app-stores.js +26 -0
  267. package/dist/playground/index.d.ts +131 -0
  268. package/dist/playground/index.js +172 -0
  269. package/dist/playground/mount.d.ts +203 -0
  270. package/dist/playground/mount.js +235 -0
  271. package/dist/registry/BaseRegistry.d.ts +92 -0
  272. package/dist/registry/BaseRegistry.js +124 -0
  273. package/dist/registry/builtinFormats.d.ts +23 -0
  274. package/dist/registry/builtinFormats.js +70 -0
  275. package/dist/registry/builtinNodes.d.ts +77 -0
  276. package/dist/registry/builtinNodes.js +211 -0
  277. package/dist/registry/index.d.ts +8 -0
  278. package/dist/registry/index.js +12 -0
  279. package/dist/registry/nodeComponentRegistry.d.ts +276 -0
  280. package/dist/registry/nodeComponentRegistry.js +262 -0
  281. package/dist/registry/plugin.d.ts +215 -0
  282. package/dist/registry/plugin.js +249 -0
  283. package/dist/registry/workflowFormatRegistry.d.ts +122 -0
  284. package/dist/registry/workflowFormatRegistry.js +96 -0
  285. package/dist/schema/index.d.ts +23 -0
  286. package/dist/schema/index.js +23 -0
  287. package/dist/schemas/v1/workflow.schema.json +1078 -0
  288. package/dist/services/agentSpecExecutionService.d.ts +106 -0
  289. package/dist/services/agentSpecExecutionService.js +334 -0
  290. package/dist/services/api.d.ts +115 -0
  291. package/dist/services/api.js +214 -0
  292. package/dist/services/apiVariableService.d.ts +114 -0
  293. package/dist/services/apiVariableService.js +338 -0
  294. package/dist/services/autoSaveService.d.ts +112 -0
  295. package/dist/services/autoSaveService.js +227 -0
  296. package/dist/services/categoriesApi.d.ts +14 -0
  297. package/dist/services/categoriesApi.js +49 -0
  298. package/dist/services/draftStorage.d.ts +171 -0
  299. package/dist/services/draftStorage.js +299 -0
  300. package/dist/services/dynamicSchemaService.d.ts +108 -0
  301. package/dist/services/dynamicSchemaService.js +444 -0
  302. package/dist/services/globalSave.d.ts +69 -0
  303. package/dist/services/globalSave.js +248 -0
  304. package/dist/services/historyService.d.ts +208 -0
  305. package/dist/services/historyService.js +321 -0
  306. package/dist/services/interruptService.d.ts +133 -0
  307. package/dist/services/interruptService.js +280 -0
  308. package/dist/services/nodeExecutionService.d.ts +63 -0
  309. package/dist/services/nodeExecutionService.js +266 -0
  310. package/dist/services/playgroundService.d.ts +130 -0
  311. package/dist/services/playgroundService.js +321 -0
  312. package/dist/services/portConfigApi.d.ts +14 -0
  313. package/dist/services/portConfigApi.js +54 -0
  314. package/dist/services/settingsService.d.ts +92 -0
  315. package/dist/services/settingsService.js +196 -0
  316. package/dist/services/toastService.d.ts +156 -0
  317. package/dist/services/toastService.js +265 -0
  318. package/dist/services/variableService.d.ts +141 -0
  319. package/dist/services/variableService.js +463 -0
  320. package/dist/services/workflowStorage.d.ts +37 -0
  321. package/dist/services/workflowStorage.js +116 -0
  322. package/dist/settings/index.d.ts +25 -0
  323. package/dist/settings/index.js +33 -0
  324. package/dist/stores/categoriesStore.svelte.d.ts +32 -0
  325. package/dist/stores/categoriesStore.svelte.js +77 -0
  326. package/dist/stores/editorStateMachine.svelte.d.ts +42 -0
  327. package/dist/stores/editorStateMachine.svelte.js +132 -0
  328. package/dist/stores/historyStore.svelte.d.ts +136 -0
  329. package/dist/stores/historyStore.svelte.js +207 -0
  330. package/dist/stores/interruptStore.svelte.d.ts +179 -0
  331. package/dist/stores/interruptStore.svelte.js +346 -0
  332. package/dist/stores/playgroundStore.svelte.d.ts +230 -0
  333. package/dist/stores/playgroundStore.svelte.js +515 -0
  334. package/dist/stores/portCoordinateStore.svelte.d.ts +66 -0
  335. package/dist/stores/portCoordinateStore.svelte.js +186 -0
  336. package/dist/stores/settingsStore.svelte.d.ts +158 -0
  337. package/dist/stores/settingsStore.svelte.js +544 -0
  338. package/dist/stores/workflowStore.svelte.d.ts +260 -0
  339. package/dist/stores/workflowStore.svelte.js +649 -0
  340. package/dist/stories/CanvasDecorator.svelte +49 -0
  341. package/dist/stories/CanvasDecorator.svelte.d.ts +8 -0
  342. package/dist/stories/NodeDecorator.svelte +73 -0
  343. package/dist/stories/NodeDecorator.svelte.d.ts +8 -0
  344. package/dist/stories/utils.d.ts +93 -0
  345. package/dist/stories/utils.js +122 -0
  346. package/dist/styles/base.css +1300 -0
  347. package/dist/styles/toast.css +35 -0
  348. package/dist/styles/tokens.css +475 -0
  349. package/dist/svelte-app.d.ts +150 -0
  350. package/dist/svelte-app.js +295 -0
  351. package/dist/types/agentspec.d.ts +318 -0
  352. package/dist/types/agentspec.js +48 -0
  353. package/dist/types/auth.d.ts +263 -0
  354. package/dist/types/auth.js +229 -0
  355. package/dist/types/config.d.ts +151 -0
  356. package/dist/types/config.js +7 -0
  357. package/dist/types/events.d.ts +190 -0
  358. package/dist/types/events.js +30 -0
  359. package/dist/types/index.d.ts +1234 -0
  360. package/dist/types/index.js +27 -0
  361. package/dist/types/interrupt.d.ts +390 -0
  362. package/dist/types/interrupt.js +145 -0
  363. package/dist/types/interruptState.d.ts +211 -0
  364. package/dist/types/interruptState.js +308 -0
  365. package/dist/types/playground.d.ts +351 -0
  366. package/dist/types/playground.js +95 -0
  367. package/dist/types/settings.d.ts +189 -0
  368. package/dist/types/settings.js +97 -0
  369. package/dist/types/uischema.d.ts +144 -0
  370. package/dist/types/uischema.js +51 -0
  371. package/dist/utils/colors.d.ts +288 -0
  372. package/dist/utils/colors.js +548 -0
  373. package/dist/utils/config.d.ts +37 -0
  374. package/dist/utils/config.js +226 -0
  375. package/dist/utils/connections.d.ts +125 -0
  376. package/dist/utils/connections.js +414 -0
  377. package/dist/utils/errors.d.ts +28 -0
  378. package/dist/utils/errors.js +44 -0
  379. package/dist/utils/fetchWithAuth.d.ts +25 -0
  380. package/dist/utils/fetchWithAuth.js +34 -0
  381. package/dist/utils/handleIds.d.ts +35 -0
  382. package/dist/utils/handleIds.js +58 -0
  383. package/dist/utils/handlePositioning.d.ts +31 -0
  384. package/dist/utils/handlePositioning.js +35 -0
  385. package/dist/utils/icons.d.ts +106 -0
  386. package/dist/utils/icons.js +157 -0
  387. package/dist/utils/logger.d.ts +47 -0
  388. package/dist/utils/logger.js +72 -0
  389. package/dist/utils/nodeStatus.d.ts +53 -0
  390. package/dist/utils/nodeStatus.js +183 -0
  391. package/dist/utils/nodeTypes.d.ts +117 -0
  392. package/dist/utils/nodeTypes.js +244 -0
  393. package/dist/utils/nodeWrapper.d.ts +39 -0
  394. package/dist/utils/nodeWrapper.js +62 -0
  395. package/dist/utils/performanceUtils.d.ts +30 -0
  396. package/dist/utils/performanceUtils.js +108 -0
  397. package/dist/utils/sanitize.d.ts +19 -0
  398. package/dist/utils/sanitize.js +31 -0
  399. package/dist/utils/uischema.d.ts +52 -0
  400. package/dist/utils/uischema.js +88 -0
  401. package/dist/utils/validation.d.ts +29 -0
  402. package/dist/utils/validation.js +39 -0
  403. package/package.json +292 -0
@@ -0,0 +1,430 @@
1
+ /**
2
+ * Enhanced API Client for FlowDrop
3
+ *
4
+ * Uses configurable endpoints and supports pluggable authentication providers.
5
+ *
6
+ * @module api/enhanced-client
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';
13
+ /**
14
+ * API error with additional context
15
+ */
16
+ export class ApiError extends Error {
17
+ /** HTTP status code */
18
+ status;
19
+ /** Original error data from API */
20
+ errorData;
21
+ /** Operation that was being performed */
22
+ operation;
23
+ constructor(message, status, operation, errorData = {}) {
24
+ super(message);
25
+ this.name = 'ApiError';
26
+ this.status = status;
27
+ this.operation = operation;
28
+ this.errorData = errorData;
29
+ }
30
+ }
31
+ /**
32
+ * Enhanced HTTP API client for FlowDrop with configurable endpoints
33
+ *
34
+ * Supports pluggable authentication via AuthProvider interface.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * // With AuthProvider
39
+ * const client = new EnhancedFlowDropApiClient(config, authProvider);
40
+ *
41
+ * // Without authentication
42
+ * const client = new EnhancedFlowDropApiClient(config);
43
+ * ```
44
+ */
45
+ export class EnhancedFlowDropApiClient {
46
+ config;
47
+ authProvider;
48
+ /**
49
+ * Create a new EnhancedFlowDropApiClient
50
+ *
51
+ * @param config - Endpoint configuration
52
+ * @param authProvider - Optional authentication provider (defaults to NoAuthProvider)
53
+ */
54
+ constructor(config, authProvider) {
55
+ this.config = config;
56
+ // Use provided AuthProvider or default to no authentication
57
+ this.authProvider = authProvider ?? new NoAuthProvider();
58
+ }
59
+ /**
60
+ * Make HTTP request with error handling, retry logic, timeout, and auth support
61
+ *
62
+ * Uses apiSettings for timeout and retry configuration, falling back to EndpointConfig values.
63
+ *
64
+ * @param endpointKey - Key identifying the endpoint (for method/header lookup)
65
+ * @param endpointPath - The endpoint path template
66
+ * @param params - URL parameters to substitute
67
+ * @param options - Additional fetch options
68
+ * @param operation - Description of the operation (for error messages)
69
+ */
70
+ async request(endpointKey, endpointPath, params, options = {}, operation = 'API request') {
71
+ const url = buildEndpointUrl(this.config, endpointPath, params);
72
+ const method = options.method ?? getEndpointMethod(this.config, endpointKey);
73
+ const configHeaders = getEndpointHeaders(this.config, endpointKey);
74
+ // Get user settings for timeout and retry
75
+ const userApiSettings = getApiSettings();
76
+ // Get auth headers from provider
77
+ const authHeaders = await this.authProvider.getAuthHeaders();
78
+ // Merge headers: config headers < auth headers < request-specific headers
79
+ const headers = {
80
+ ...configHeaders,
81
+ ...authHeaders,
82
+ ...options.headers
83
+ };
84
+ // Create AbortController for timeout
85
+ const controller = new AbortController();
86
+ const timeoutMs = userApiSettings.timeout ?? this.config.timeout ?? DEFAULT_API_TIMEOUT_MS;
87
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
88
+ const fetchConfig = {
89
+ method,
90
+ headers,
91
+ signal: controller.signal,
92
+ ...options
93
+ };
94
+ let lastError = null;
95
+ // Determine retry settings: user settings override config
96
+ const retryEnabled = userApiSettings.retryEnabled ?? this.config.retry?.enabled ?? false;
97
+ const maxAttempts = retryEnabled
98
+ ? (userApiSettings.retryAttempts ?? this.config.retry?.maxAttempts ?? 3)
99
+ : 1;
100
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
101
+ try {
102
+ const response = await fetch(url, fetchConfig);
103
+ // Clear timeout on successful response
104
+ clearTimeout(timeoutId);
105
+ // Handle 401 Unauthorized
106
+ if (response.status === 401) {
107
+ if (this.authProvider.onUnauthorized) {
108
+ const refreshed = await this.authProvider.onUnauthorized();
109
+ if (refreshed && attempt < maxAttempts) {
110
+ // Get new auth headers and retry
111
+ const newAuthHeaders = await this.authProvider.getAuthHeaders();
112
+ fetchConfig.headers = {
113
+ ...configHeaders,
114
+ ...newAuthHeaders,
115
+ ...options.headers
116
+ };
117
+ continue; // Retry with new headers
118
+ }
119
+ }
120
+ throw new ApiError('Unauthorized', 401, operation, {});
121
+ }
122
+ // Handle 403 Forbidden
123
+ if (response.status === 403) {
124
+ if (this.authProvider.onForbidden) {
125
+ await this.authProvider.onForbidden();
126
+ }
127
+ throw new ApiError('Forbidden', 403, operation, {});
128
+ }
129
+ // Handle other errors
130
+ if (!response.ok) {
131
+ const errorData = await response.json().catch(() => ({}));
132
+ throw new ApiError(errorData.error ?? `HTTP ${response.status}: ${response.statusText}`, response.status, operation, errorData);
133
+ }
134
+ const data = await response.json();
135
+ return data;
136
+ }
137
+ catch (error) {
138
+ // Clear timeout on error
139
+ clearTimeout(timeoutId);
140
+ // Handle abort (timeout)
141
+ if (error instanceof Error && error.name === 'AbortError') {
142
+ lastError = new ApiError(`Request timeout after ${timeoutMs}ms`, 0, operation, {
143
+ timeout: true
144
+ });
145
+ // Don't retry on timeout - it's a client-side timeout
146
+ logger.error(`API request timed out after ${timeoutMs}ms:`, lastError);
147
+ throw lastError;
148
+ }
149
+ // If it's already an ApiError, preserve it
150
+ if (error instanceof ApiError) {
151
+ lastError = error;
152
+ }
153
+ else {
154
+ lastError = error instanceof Error ? error : new Error(String(error));
155
+ }
156
+ // Don't retry on auth errors (401, 403) or last attempt
157
+ if ((lastError instanceof ApiError &&
158
+ (lastError.status === 401 || lastError.status === 403)) ||
159
+ attempt === maxAttempts) {
160
+ logger.error(`API request failed after ${attempt} attempts:`, lastError);
161
+ throw lastError;
162
+ }
163
+ // Wait before retry with exponential backoff
164
+ const baseDelay = this.config.retry?.delay ?? 1000;
165
+ const backoffDelay = this.config.retry?.backoff === 'exponential'
166
+ ? baseDelay * Math.pow(2, attempt - 1)
167
+ : baseDelay;
168
+ await new Promise((resolve) => setTimeout(resolve, backoffDelay));
169
+ }
170
+ }
171
+ throw lastError;
172
+ }
173
+ /**
174
+ * Update the auth provider
175
+ *
176
+ * Useful for updating auth after token refresh in parent application.
177
+ * Note: Per specification, this should rarely be needed as auth is typically
178
+ * set at mount time and requires remount to change.
179
+ *
180
+ * @param authProvider - New authentication provider
181
+ */
182
+ setAuthProvider(authProvider) {
183
+ this.authProvider = authProvider;
184
+ }
185
+ /**
186
+ * Get current auth provider
187
+ *
188
+ * @returns The current AuthProvider instance
189
+ */
190
+ getAuthProvider() {
191
+ return this.authProvider;
192
+ }
193
+ // =========================================================================
194
+ // Node API Methods
195
+ // =========================================================================
196
+ /**
197
+ * Fetch all available node types
198
+ */
199
+ async getAvailableNodes() {
200
+ const response = await this.request('nodes.list', this.config.endpoints.nodes.list, undefined, {}, 'fetch available nodes');
201
+ if (!response.success || !response.data) {
202
+ throw new Error(response.error ?? 'Failed to fetch available nodes');
203
+ }
204
+ return response.data;
205
+ }
206
+ /**
207
+ * Fetch nodes filtered by category
208
+ */
209
+ async getNodesByCategory(category) {
210
+ const response = await this.request('nodes.byCategory', this.config.endpoints.nodes.byCategory, { category }, {}, 'fetch nodes by category');
211
+ if (!response.success || !response.data) {
212
+ throw new Error(response.error ?? 'Failed to fetch nodes by category');
213
+ }
214
+ return response.data;
215
+ }
216
+ /**
217
+ * Fetch metadata for a specific node type
218
+ */
219
+ async getNodeMetadata(nodeId) {
220
+ const response = await this.request('nodes.metadata', this.config.endpoints.nodes.metadata, { id: nodeId }, {}, 'fetch node metadata');
221
+ if (!response.success || !response.data) {
222
+ throw new Error(response.error ?? 'Failed to fetch node metadata');
223
+ }
224
+ return response.data;
225
+ }
226
+ // =========================================================================
227
+ // Workflow API Methods
228
+ // =========================================================================
229
+ /**
230
+ * Save a new workflow
231
+ */
232
+ async saveWorkflow(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');
237
+ if (!response.success || !response.data) {
238
+ throw new Error(response.error ?? 'Failed to save workflow');
239
+ }
240
+ return response.data;
241
+ }
242
+ /**
243
+ * Update an existing workflow
244
+ */
245
+ async updateWorkflow(workflowId, 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');
250
+ if (!response.success || !response.data) {
251
+ throw new Error(response.error ?? 'Failed to update workflow');
252
+ }
253
+ return response.data;
254
+ }
255
+ /**
256
+ * Load a workflow by ID
257
+ */
258
+ async loadWorkflow(workflowId) {
259
+ const response = await this.request('workflows.get', this.config.endpoints.workflows.get, { id: workflowId }, {}, 'load workflow');
260
+ if (!response.success || !response.data) {
261
+ throw new Error(response.error ?? 'Failed to load workflow');
262
+ }
263
+ return response.data;
264
+ }
265
+ /**
266
+ * List all workflows
267
+ */
268
+ async listWorkflows() {
269
+ const response = await this.request('workflows.list', this.config.endpoints.workflows.list, undefined, {}, 'list workflows');
270
+ if (!response.success || !response.data) {
271
+ throw new Error(response.error ?? 'Failed to list workflows');
272
+ }
273
+ return response.data;
274
+ }
275
+ /**
276
+ * Delete a workflow
277
+ */
278
+ async deleteWorkflow(workflowId) {
279
+ const response = await this.request('workflows.delete', this.config.endpoints.workflows.delete, { id: workflowId }, { method: 'DELETE' }, 'delete workflow');
280
+ if (!response.success) {
281
+ throw new Error(response.error ?? 'Failed to delete workflow');
282
+ }
283
+ }
284
+ /**
285
+ * Validate a workflow
286
+ */
287
+ async validateWorkflow(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');
292
+ if (!response.success || !response.data) {
293
+ throw new Error(response.error ?? 'Failed to validate workflow');
294
+ }
295
+ return response.data;
296
+ }
297
+ /**
298
+ * Export a workflow as JSON string
299
+ */
300
+ async exportWorkflow(workflowId) {
301
+ const response = await this.request('workflows.export', this.config.endpoints.workflows.export, { id: workflowId }, {}, 'export workflow');
302
+ if (!response.success || !response.data) {
303
+ throw new Error(response.error ?? 'Failed to export workflow');
304
+ }
305
+ return response.data;
306
+ }
307
+ /**
308
+ * Import a workflow from JSON
309
+ */
310
+ async importWorkflow(workflowJson) {
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');
315
+ if (!response.success || !response.data) {
316
+ throw new Error(response.error ?? 'Failed to import workflow');
317
+ }
318
+ return response.data;
319
+ }
320
+ // =========================================================================
321
+ // Execution API Methods
322
+ // =========================================================================
323
+ /**
324
+ * Execute a workflow
325
+ */
326
+ async executeWorkflow(workflowId, inputs) {
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');
331
+ if (!response.success || !response.data) {
332
+ throw new Error(response.error ?? 'Failed to execute workflow');
333
+ }
334
+ return response.data;
335
+ }
336
+ /**
337
+ * Get execution status
338
+ */
339
+ async getExecutionStatus(executionId) {
340
+ const response = await this.request('executions.status', this.config.endpoints.executions.status, { id: executionId }, {}, 'get execution status');
341
+ if (!response.success || !response.data) {
342
+ throw new Error(response.error ?? 'Failed to get execution status');
343
+ }
344
+ return response.data;
345
+ }
346
+ /**
347
+ * Cancel a running execution
348
+ */
349
+ async cancelExecution(executionId) {
350
+ const response = await this.request('executions.cancel', this.config.endpoints.executions.cancel, { id: executionId }, { method: 'POST' }, 'cancel execution');
351
+ if (!response.success) {
352
+ throw new Error(response.error ?? 'Failed to cancel execution');
353
+ }
354
+ }
355
+ /**
356
+ * Get execution logs
357
+ */
358
+ async getExecutionLogs(executionId) {
359
+ const response = await this.request('executions.logs', this.config.endpoints.executions.logs, { id: executionId }, {}, 'get execution logs');
360
+ if (!response.success || !response.data) {
361
+ throw new Error(response.error ?? 'Failed to get execution logs');
362
+ }
363
+ return response.data;
364
+ }
365
+ // =========================================================================
366
+ // Template API Methods
367
+ // =========================================================================
368
+ /**
369
+ * List available templates
370
+ */
371
+ async listTemplates() {
372
+ const response = await this.request('templates.list', this.config.endpoints.templates.list, undefined, {}, 'list templates');
373
+ if (!response.success || !response.data) {
374
+ throw new Error(response.error ?? 'Failed to list templates');
375
+ }
376
+ return response.data;
377
+ }
378
+ /**
379
+ * Get a template by ID
380
+ */
381
+ async getTemplate(templateId) {
382
+ const response = await this.request('templates.get', this.config.endpoints.templates.get, { id: templateId }, {}, 'get template');
383
+ if (!response.success || !response.data) {
384
+ throw new Error(response.error ?? 'Failed to get template');
385
+ }
386
+ return response.data;
387
+ }
388
+ // =========================================================================
389
+ // System API Methods
390
+ // =========================================================================
391
+ /**
392
+ * Get system health status
393
+ */
394
+ async getSystemHealth() {
395
+ const response = await this.request('system.health', this.config.endpoints.system.health, undefined, {}, 'get system health');
396
+ if (!response.success || !response.data) {
397
+ throw new Error(response.error ?? 'Failed to get system health');
398
+ }
399
+ return response.data;
400
+ }
401
+ /**
402
+ * Get system configuration
403
+ */
404
+ async getSystemConfig() {
405
+ const response = await this.request('system.config', this.config.endpoints.system.config, undefined, {}, 'get system config');
406
+ if (!response.success || !response.data) {
407
+ throw new Error(response.error ?? 'Failed to get system config');
408
+ }
409
+ return response.data;
410
+ }
411
+ /**
412
+ * Get system version information
413
+ */
414
+ async getSystemVersion() {
415
+ const response = await this.request('system.version', this.config.endpoints.system.version, undefined, {}, 'get system version');
416
+ if (!response.success || !response.data) {
417
+ throw new Error(response.error ?? 'Failed to get system version');
418
+ }
419
+ return response.data;
420
+ }
421
+ // =========================================================================
422
+ // Pipeline API Methods
423
+ // =========================================================================
424
+ /**
425
+ * Fetch pipeline data including job information and status
426
+ */
427
+ async getPipelineData(pipelineId) {
428
+ return this.request('pipelines.get', this.config.endpoints.pipelines.get, { id: pipelineId }, {}, 'get pipeline data');
429
+ }
430
+ }