@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,444 @@
1
+ /**
2
+ * Dynamic Schema Service
3
+ * Handles fetching configuration schemas from REST endpoints at runtime.
4
+ * Used for nodes where the config schema cannot be determined at workflow load time.
5
+ *
6
+ * @module services/dynamicSchemaService
7
+ */
8
+ import { getEndpointConfig } from './api.js';
9
+ import { DEFAULT_CACHE_TTL_MS } from '../config/constants.js';
10
+ /**
11
+ * Schema cache with TTL support
12
+ * Key format: `{nodeTypeId}:{instanceId}` or `{nodeTypeId}` for type-level caching
13
+ */
14
+ const schemaCache = new Map();
15
+ /** Local alias for cache TTL */
16
+ const DEFAULT_CACHE_TTL = DEFAULT_CACHE_TTL_MS;
17
+ /**
18
+ * Resolves a template variable path from the node context.
19
+ * Supports dot-notation paths like "metadata.id", "config.apiKey", "id"
20
+ *
21
+ * @param context - The node context containing all available data
22
+ * @param path - Dot-notation path to resolve (e.g., "metadata.id")
23
+ * @returns The resolved value as a string, or undefined if not found
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const context = { id: "node-1", metadata: { id: "llm-node" } };
28
+ * resolveVariablePath(context, "metadata.id"); // Returns "llm-node"
29
+ * resolveVariablePath(context, "id"); // Returns "node-1"
30
+ * ```
31
+ */
32
+ function resolveVariablePath(context, path) {
33
+ const parts = path.split('.');
34
+ let current = context;
35
+ for (const part of parts) {
36
+ if (current === null || current === undefined) {
37
+ return undefined;
38
+ }
39
+ if (typeof current === 'object' && part in current) {
40
+ current = current[part];
41
+ }
42
+ else {
43
+ return undefined;
44
+ }
45
+ }
46
+ // Convert to string if not already
47
+ if (current === null || current === undefined) {
48
+ return undefined;
49
+ }
50
+ return String(current);
51
+ }
52
+ /**
53
+ * Replaces template variables in a URL or string with values from the node context.
54
+ * Template variables use curly brace syntax: {variableName}
55
+ *
56
+ * @param template - The template string with variables
57
+ * @param parameterMapping - Maps variable names to context paths
58
+ * @param context - The node context containing all available data
59
+ * @returns The resolved string with all variables replaced
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * const url = "/api/nodes/{nodeTypeId}/schema?instance={instanceId}";
64
+ * const mapping = { nodeTypeId: "metadata.id", instanceId: "id" };
65
+ * const context = { id: "node-1", metadata: { id: "llm-node" } };
66
+ * resolveTemplate(url, mapping, context);
67
+ * // Returns "/api/nodes/llm-node/schema?instance=node-1"
68
+ * ```
69
+ */
70
+ function resolveTemplate(template, parameterMapping, context) {
71
+ if (!parameterMapping) {
72
+ return template;
73
+ }
74
+ let resolved = template;
75
+ // Replace each mapped variable
76
+ for (const [variableName, contextPath] of Object.entries(parameterMapping)) {
77
+ const value = resolveVariablePath(context, contextPath);
78
+ if (value !== undefined) {
79
+ // Use global regex to replace all occurrences
80
+ const regex = new RegExp(`\\{${variableName}\\}`, 'g');
81
+ resolved = resolved.replace(regex, encodeURIComponent(value));
82
+ }
83
+ }
84
+ // Also try to resolve any unmapped variables directly from context
85
+ const remainingVariables = resolved.match(/\{([^}]+)\}/g);
86
+ if (remainingVariables) {
87
+ for (const variable of remainingVariables) {
88
+ const variableName = variable.slice(1, -1); // Remove { and }
89
+ const value = resolveVariablePath(context, variableName);
90
+ if (value !== undefined) {
91
+ resolved = resolved.replace(variable, encodeURIComponent(value));
92
+ }
93
+ }
94
+ }
95
+ return resolved;
96
+ }
97
+ /**
98
+ * Generates a cache key for a schema based on the node context and endpoint configuration.
99
+ *
100
+ * @param endpoint - The dynamic schema endpoint configuration
101
+ * @param context - The node context
102
+ * @returns A unique cache key string
103
+ */
104
+ function generateCacheKey(endpoint, context) {
105
+ const url = resolveTemplate(endpoint.url, endpoint.parameterMapping, context);
106
+ return `schema:${url}`;
107
+ }
108
+ /**
109
+ * Checks if a cached schema is still valid (not expired).
110
+ *
111
+ * @param entry - The cache entry to check
112
+ * @param ttl - Time-to-live in milliseconds
113
+ * @returns True if the cache entry is still valid
114
+ */
115
+ function isCacheValid(entry, ttl = DEFAULT_CACHE_TTL) {
116
+ return Date.now() - entry.cachedAt < ttl;
117
+ }
118
+ /**
119
+ * Fetches a dynamic configuration schema from a REST endpoint.
120
+ *
121
+ * @param endpoint - The dynamic schema endpoint configuration
122
+ * @param node - The workflow node instance
123
+ * @param workflowId - Optional workflow ID for context
124
+ * @returns A promise that resolves to the schema result
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * const endpoint: DynamicSchemaEndpoint = {
129
+ * url: "/api/nodes/{nodeTypeId}/schema",
130
+ * method: "GET",
131
+ * parameterMapping: { nodeTypeId: "metadata.id" }
132
+ * };
133
+ *
134
+ * const result = await fetchDynamicSchema(endpoint, node);
135
+ * if (result.success && result.schema) {
136
+ * // Use the fetched schema
137
+ * }
138
+ * ```
139
+ */
140
+ export async function fetchDynamicSchema(endpoint, node, workflowId) {
141
+ // Build the context from the node
142
+ const context = {
143
+ id: node.id,
144
+ type: node.type,
145
+ metadata: node.data.metadata,
146
+ config: node.data.config,
147
+ extensions: node.data.extensions,
148
+ workflowId
149
+ };
150
+ // Generate cache key
151
+ const cacheKey = generateCacheKey(endpoint, context);
152
+ // Check cache first (if caching is enabled)
153
+ if (endpoint.cacheSchema !== false) {
154
+ const cached = schemaCache.get(cacheKey);
155
+ if (cached && isCacheValid(cached)) {
156
+ return {
157
+ success: true,
158
+ schema: cached.schema,
159
+ fromCache: true
160
+ };
161
+ }
162
+ }
163
+ // Resolve the URL with template variables
164
+ let url = resolveTemplate(endpoint.url, endpoint.parameterMapping, context);
165
+ // If URL is relative, try to prepend base URL from endpoint config
166
+ if (url.startsWith('/')) {
167
+ const currentConfig = getEndpointConfig();
168
+ if (currentConfig?.baseUrl) {
169
+ // Remove trailing slash from base URL and leading slash from relative URL
170
+ const baseUrl = currentConfig.baseUrl.replace(/\/$/, '');
171
+ url = `${baseUrl}${url}`;
172
+ }
173
+ }
174
+ // Prepare request options
175
+ const method = endpoint.method ?? 'GET';
176
+ const timeout = endpoint.timeout ?? 10000;
177
+ const headers = {
178
+ Accept: 'application/json',
179
+ 'Content-Type': 'application/json',
180
+ ...endpoint.headers
181
+ };
182
+ // Add auth headers from endpoint config if available
183
+ const currentConfig = getEndpointConfig();
184
+ if (currentConfig?.auth) {
185
+ if (currentConfig.auth.type === 'bearer' && currentConfig.auth.token) {
186
+ headers['Authorization'] = `Bearer ${currentConfig.auth.token}`;
187
+ }
188
+ else if (currentConfig.auth.type === 'api_key' && currentConfig.auth.apiKey) {
189
+ headers['X-API-Key'] = currentConfig.auth.apiKey;
190
+ }
191
+ else if (currentConfig.auth.type === 'custom' && currentConfig.auth.headers) {
192
+ Object.assign(headers, currentConfig.auth.headers);
193
+ }
194
+ }
195
+ // Prepare fetch options
196
+ const fetchOptions = {
197
+ method,
198
+ headers,
199
+ signal: AbortSignal.timeout(timeout)
200
+ };
201
+ // Add body for non-GET requests
202
+ if (method !== 'GET' && endpoint.body) {
203
+ // Resolve any template variables in the body
204
+ const resolvedBody = {};
205
+ for (const [key, value] of Object.entries(endpoint.body)) {
206
+ if (typeof value === 'string') {
207
+ resolvedBody[key] = resolveTemplate(value, endpoint.parameterMapping, context);
208
+ }
209
+ else {
210
+ resolvedBody[key] = value;
211
+ }
212
+ }
213
+ fetchOptions.body = JSON.stringify(resolvedBody);
214
+ }
215
+ try {
216
+ const response = await fetch(url, fetchOptions);
217
+ if (!response.ok) {
218
+ const errorText = await response.text();
219
+ return {
220
+ success: false,
221
+ error: `HTTP ${response.status}: ${errorText || response.statusText}`
222
+ };
223
+ }
224
+ const data = await response.json();
225
+ // The response could be:
226
+ // 1. Direct ConfigSchema object
227
+ // 2. Wrapped in { data: ConfigSchema } or { schema: ConfigSchema }
228
+ // 3. Wrapped in { success: true, data: ConfigSchema }
229
+ let schema;
230
+ if (data.type === 'object' && data.properties) {
231
+ // Direct ConfigSchema
232
+ schema = data;
233
+ }
234
+ else if (data.data?.type === 'object' && data.data?.properties) {
235
+ // Wrapped in { data: ... }
236
+ schema = data.data;
237
+ }
238
+ else if (data.schema?.type === 'object' && data.schema?.properties) {
239
+ // Wrapped in { schema: ... }
240
+ schema = data.schema;
241
+ }
242
+ else if (data.success && data.data?.type === 'object') {
243
+ // Wrapped in { success: true, data: ... }
244
+ schema = data.data;
245
+ }
246
+ if (!schema) {
247
+ return {
248
+ success: false,
249
+ error: 'Invalid schema format received from endpoint'
250
+ };
251
+ }
252
+ // Cache the schema (if caching is enabled)
253
+ if (endpoint.cacheSchema !== false) {
254
+ schemaCache.set(cacheKey, {
255
+ schema,
256
+ cachedAt: Date.now(),
257
+ cacheKey
258
+ });
259
+ }
260
+ return {
261
+ success: true,
262
+ schema,
263
+ fromCache: false
264
+ };
265
+ }
266
+ catch (error) {
267
+ // Handle specific error types
268
+ if (error instanceof Error) {
269
+ if (error.name === 'AbortError' || error.name === 'TimeoutError') {
270
+ return {
271
+ success: false,
272
+ error: `Request timed out after ${timeout}ms`
273
+ };
274
+ }
275
+ return {
276
+ success: false,
277
+ error: error.message
278
+ };
279
+ }
280
+ return {
281
+ success: false,
282
+ error: 'Unknown error occurred while fetching schema'
283
+ };
284
+ }
285
+ }
286
+ /**
287
+ * Resolves an external edit link URL with template variables.
288
+ *
289
+ * @param link - The external edit link configuration
290
+ * @param node - The workflow node instance
291
+ * @param workflowId - Optional workflow ID for context
292
+ * @param callbackUrl - Optional callback URL to append
293
+ * @returns The resolved URL string
294
+ *
295
+ * @example
296
+ * ```typescript
297
+ * const link: ExternalEditLink = {
298
+ * url: "https://admin.example.com/nodes/{nodeTypeId}/edit/{instanceId}",
299
+ * parameterMapping: { nodeTypeId: "metadata.id", instanceId: "id" }
300
+ * };
301
+ *
302
+ * const url = resolveExternalEditUrl(link, node, workflowId);
303
+ * // Returns "https://admin.example.com/nodes/llm-node/edit/node-1"
304
+ * ```
305
+ */
306
+ export function resolveExternalEditUrl(link, node, workflowId, callbackUrl) {
307
+ // Build the context from the node
308
+ const context = {
309
+ id: node.id,
310
+ type: node.type,
311
+ metadata: node.data.metadata,
312
+ config: node.data.config,
313
+ extensions: node.data.extensions,
314
+ workflowId
315
+ };
316
+ // Resolve the URL with template variables
317
+ let url = resolveTemplate(link.url, link.parameterMapping, context);
318
+ // Append callback URL if configured
319
+ if (callbackUrl && link.callbackUrlParam) {
320
+ const separator = url.includes('?') ? '&' : '?';
321
+ url = `${url}${separator}${link.callbackUrlParam}=${encodeURIComponent(callbackUrl)}`;
322
+ }
323
+ return url;
324
+ }
325
+ /**
326
+ * Gets the effective config edit options for a node.
327
+ * Merges node type defaults with instance-level overrides.
328
+ *
329
+ * @param node - The workflow node instance
330
+ * @returns The merged config edit options, or undefined if not configured
331
+ */
332
+ export function getEffectiveConfigEditOptions(node) {
333
+ const typeConfig = node.data.metadata?.configEdit;
334
+ const instanceConfig = node.data.extensions?.configEdit;
335
+ // If neither is defined, return undefined
336
+ if (!typeConfig && !instanceConfig) {
337
+ return undefined;
338
+ }
339
+ // If only one is defined, return it
340
+ if (!typeConfig) {
341
+ return instanceConfig;
342
+ }
343
+ if (!instanceConfig) {
344
+ return typeConfig;
345
+ }
346
+ // Merge both configurations (instance overrides type)
347
+ return {
348
+ ...typeConfig,
349
+ ...instanceConfig,
350
+ // Deep merge external edit link
351
+ externalEditLink: (instanceConfig.externalEditLink ?? typeConfig.externalEditLink)
352
+ ? {
353
+ ...(typeConfig.externalEditLink ?? {}),
354
+ ...(instanceConfig.externalEditLink ?? {})
355
+ }
356
+ : undefined,
357
+ // Deep merge dynamic schema
358
+ dynamicSchema: (instanceConfig.dynamicSchema ?? typeConfig.dynamicSchema)
359
+ ? {
360
+ ...(typeConfig.dynamicSchema ?? {}),
361
+ ...(instanceConfig.dynamicSchema ?? {})
362
+ }
363
+ : undefined
364
+ };
365
+ }
366
+ /**
367
+ * Clears the schema cache.
368
+ * Can optionally clear only entries matching a specific pattern.
369
+ *
370
+ * @param pattern - Optional pattern to match cache keys (e.g., node type ID)
371
+ */
372
+ export function clearSchemaCache(pattern) {
373
+ if (!pattern) {
374
+ schemaCache.clear();
375
+ return;
376
+ }
377
+ // Clear matching entries
378
+ for (const key of schemaCache.keys()) {
379
+ if (key.includes(pattern)) {
380
+ schemaCache.delete(key);
381
+ }
382
+ }
383
+ }
384
+ /**
385
+ * Invalidates a specific schema cache entry for a node.
386
+ *
387
+ * @param node - The workflow node to invalidate cache for
388
+ * @param endpoint - The dynamic schema endpoint configuration
389
+ */
390
+ export function invalidateSchemaCache(node, endpoint) {
391
+ const context = {
392
+ id: node.id,
393
+ type: node.type,
394
+ metadata: node.data.metadata,
395
+ config: node.data.config,
396
+ extensions: node.data.extensions
397
+ };
398
+ const cacheKey = generateCacheKey(endpoint, context);
399
+ schemaCache.delete(cacheKey);
400
+ }
401
+ /**
402
+ * Checks if a node has config edit options configured.
403
+ *
404
+ * @param node - The workflow node to check
405
+ * @returns True if the node has config edit options configured
406
+ */
407
+ export function hasConfigEditOptions(node) {
408
+ return getEffectiveConfigEditOptions(node) !== undefined;
409
+ }
410
+ /**
411
+ * Determines if external edit should be shown for a node.
412
+ *
413
+ * @param node - The workflow node to check
414
+ * @returns True if external edit link should be shown
415
+ */
416
+ export function shouldShowExternalEdit(node) {
417
+ const config = getEffectiveConfigEditOptions(node);
418
+ if (!config)
419
+ return false;
420
+ // Show external edit if configured and not preferring dynamic schema
421
+ if (config.externalEditLink) {
422
+ if (config.dynamicSchema && config.preferDynamicSchema) {
423
+ return false; // Prefer dynamic schema, so don't show external by default
424
+ }
425
+ return true;
426
+ }
427
+ return false;
428
+ }
429
+ /**
430
+ * Determines if dynamic schema should be used for a node.
431
+ *
432
+ * @param node - The workflow node to check
433
+ * @returns True if dynamic schema should be fetched
434
+ */
435
+ export function shouldUseDynamicSchema(node) {
436
+ const config = getEffectiveConfigEditOptions(node);
437
+ if (!config)
438
+ return false;
439
+ // Use dynamic schema if configured
440
+ if (config.dynamicSchema) {
441
+ return true;
442
+ }
443
+ return false;
444
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Global Save Service
3
+ * Provides save and export functionality that can be accessed from anywhere in the app.
4
+ * This is the single source of truth for save/export logic.
5
+ *
6
+ * App.svelte delegates to globalSaveWorkflow() / globalExportWorkflow() rather than
7
+ * reimplementing the logic, ensuring "blur active element" flushing and metadata
8
+ * construction happen in exactly one place.
9
+ */
10
+ import type { Workflow } from '../types/index.js';
11
+ import type { FlowDropEventHandlers, FlowDropFeatures } from '../types/events.js';
12
+ /**
13
+ * Minimal interface for the enhanced API client used when an authProvider is present.
14
+ * Matches the surface of EnhancedFlowDropApiClient that save needs.
15
+ */
16
+ export interface SaveApiClient {
17
+ saveWorkflow(workflow: Workflow): Promise<Workflow>;
18
+ updateWorkflow(id: string, workflow: Workflow): Promise<Workflow>;
19
+ }
20
+ /**
21
+ * Options accepted by globalSaveWorkflow().
22
+ * All fields are optional — omitting them falls back to the basic behaviour
23
+ * (no event handlers, always show toasts, legacy workflowApi).
24
+ */
25
+ export interface GlobalSaveOptions {
26
+ /** Enhanced API client with authProvider support. Falls back to legacy workflowApi when absent. */
27
+ apiClient?: SaveApiClient | null;
28
+ /** Event handler hooks (onBeforeSave, onAfterSave, onSaveError, onApiError). */
29
+ eventHandlers?: FlowDropEventHandlers;
30
+ /** Feature flags (showToasts). Defaults to DEFAULT_FEATURES. */
31
+ features?: Partial<FlowDropFeatures>;
32
+ /**
33
+ * Callback invoked after a successful save to clear the dirty state.
34
+ * Pass workflowStore's markAsSaved here when calling from App.svelte.
35
+ */
36
+ onMarkAsSaved?: () => void;
37
+ }
38
+ /**
39
+ * Options accepted by globalExportWorkflow().
40
+ */
41
+ export interface GlobalExportOptions {
42
+ /** Feature flags (showToasts). Defaults to DEFAULT_FEATURES. */
43
+ features?: Partial<FlowDropFeatures>;
44
+ }
45
+ /**
46
+ * Save the current workflow to the backend.
47
+ *
48
+ * This is the single source of truth for save logic. App.svelte delegates
49
+ * to this function rather than reimplementing the steps.
50
+ *
51
+ * Steps performed:
52
+ * 1. Flush pending form changes (blur active element + tick)
53
+ * 2. Optionally call onBeforeSave — return false cancels the save
54
+ * 3. Build the canonical Workflow object (preserving metadata, format, etc.)
55
+ * 4. Persist via enhanced apiClient or legacy workflowApi
56
+ * 5. Update the store if the server assigned a new ID
57
+ * 6. Call onMarkAsSaved / onAfterSave hooks
58
+ * 7. Show toast notifications (respecting features.showToasts)
59
+ */
60
+ export declare function globalSaveWorkflow(options?: GlobalSaveOptions): Promise<void>;
61
+ /**
62
+ * Export the current workflow as a downloadable JSON file.
63
+ *
64
+ * This is the single source of truth for export logic. App.svelte delegates
65
+ * to this function rather than reimplementing the steps.
66
+ *
67
+ * Preserves all metadata fields (format, tags, etc.) consistently with save.
68
+ */
69
+ export declare function globalExportWorkflow(options?: GlobalExportOptions): Promise<void>;