@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,591 @@
1
+ <!--
2
+ Gateway Node Component
3
+ Visual representation of gateway/branch nodes with branching flow indicators
4
+ Shows active branches and execution paths
5
+ Styled with BEM syntax following WorkflowNode pattern
6
+
7
+ UI Extensions Support:
8
+ - hideUnconnectedHandles: Hides ports that are not connected to reduce visual clutter
9
+ -->
10
+
11
+ <script lang="ts">
12
+ import { Position, Handle } from '@xyflow/svelte';
13
+ import type { WorkflowNode, NodePort, Branch } from '../../types/index.js';
14
+ import Icon from '@iconify/svelte';
15
+ import { getNodeIcon } from '../../utils/icons.js';
16
+ import {
17
+ getDataTypeColorToken,
18
+ getCategoryColorToken,
19
+ getPortBackgroundColor
20
+ } from '../../utils/colors.js';
21
+ import { getConnectedHandles } from '../../stores/workflowStore.svelte.js';
22
+
23
+ interface Props {
24
+ data: WorkflowNode['data'] & {
25
+ nodeId?: string;
26
+ onConfigOpen?: (node: { id: string; type: string; data: WorkflowNode['data'] }) => void;
27
+ };
28
+ selected?: boolean;
29
+ }
30
+
31
+ let props: Props = $props();
32
+
33
+ /**
34
+ * Instance-specific title override from config.
35
+ * Falls back to the original label if not set.
36
+ * This allows users to customize the node title per-instance via config.
37
+ */
38
+ const displayTitle = $derived((props.data.config?.instanceTitle as string) || props.data.label);
39
+
40
+ /**
41
+ * Instance-specific description override from config.
42
+ * Falls back to the metadata description if not set.
43
+ * This allows users to customize the node description per-instance via config.
44
+ */
45
+ const displayDescription = $derived(
46
+ (props.data.config?.instanceDescription as string) || props.data.metadata.description
47
+ );
48
+
49
+ /**
50
+ * Get the hideUnconnectedHandles setting from extensions
51
+ * Merges node type defaults with instance overrides
52
+ */
53
+ const hideUnconnectedHandles = $derived(() => {
54
+ const typeDefault = props.data.metadata?.extensions?.ui?.hideUnconnectedHandles ?? false;
55
+ const instanceOverride = props.data.extensions?.ui?.hideUnconnectedHandles;
56
+ return instanceOverride ?? typeDefault;
57
+ });
58
+
59
+ /**
60
+ * Check if a port should be visible based on connection state and settings
61
+ * @param port - The port to check
62
+ * @param type - Whether this is an 'input' or 'output' port
63
+ * @returns true if the port should be visible
64
+ */
65
+ function isPortVisible(port: NodePort, type: 'input' | 'output'): boolean {
66
+ // Always show if hideUnconnectedHandles is disabled
67
+ if (!hideUnconnectedHandles()) {
68
+ return true;
69
+ }
70
+
71
+ // Always show required ports
72
+ if (port.required) {
73
+ return true;
74
+ }
75
+
76
+ // Check if port is connected
77
+ const handleId = `${props.data.nodeId}-${type}-${port.id}`;
78
+ return getConnectedHandles().has(handleId);
79
+ }
80
+
81
+ /**
82
+ * Derived list of visible input ports based on hideUnconnectedHandles setting
83
+ */
84
+ const visibleInputPorts = $derived(
85
+ props.data.metadata.inputs.filter((port) => isPortVisible(port, 'input'))
86
+ );
87
+
88
+ /**
89
+ * Check if a branch output should be visible based on connection state
90
+ * @param branchName - The branch name to check
91
+ * @returns true if the branch should be visible
92
+ */
93
+ function isBranchVisible(branchName: string): boolean {
94
+ // Always show if hideUnconnectedHandles is disabled
95
+ if (!hideUnconnectedHandles()) {
96
+ return true;
97
+ }
98
+
99
+ // Check if branch output is connected
100
+ const handleId = `${props.data.nodeId}-output-${branchName}`;
101
+ return getConnectedHandles().has(handleId);
102
+ }
103
+
104
+ // Gateway-specific data - branches are calculated at runtime from config
105
+ let branches = $derived((props.data.config?.branches as Branch[]) || []);
106
+ let activeBranches = $derived(
107
+ (props.data.executionInfo?.output?.active_branches as string[]) || []
108
+ );
109
+
110
+ /**
111
+ * Derived list of visible branches based on hideUnconnectedHandles setting
112
+ */
113
+ const visibleBranches = $derived(branches.filter((branch) => isBranchVisible(branch.name)));
114
+
115
+ /**
116
+ * Handle node click - only handle selection, no config opening
117
+ */
118
+ function handleNodeClick(): void {
119
+ // Node selection is handled by Svelte Flow
120
+ }
121
+
122
+ /**
123
+ * Handle double-click to open config
124
+ */
125
+ function handleNodeDoubleClick(): void {
126
+ if (props.data.onConfigOpen) {
127
+ props.data.onConfigOpen({
128
+ id: props.data.nodeId || '',
129
+ type: 'gateway',
130
+ data: props.data
131
+ });
132
+ }
133
+ }
134
+
135
+ /**
136
+ * Handle keyboard events for accessibility
137
+ */
138
+ function handleKeydown(event: KeyboardEvent): void {
139
+ if (event.key === 'Enter' || event.key === ' ') {
140
+ event.preventDefault();
141
+ handleNodeClick();
142
+ }
143
+ }
144
+
145
+ /**
146
+ * Check if a branch is active
147
+ */
148
+ function isBranchActive(branchName: string): boolean {
149
+ return activeBranches.includes(branchName);
150
+ }
151
+ </script>
152
+
153
+ <!-- Node Container -->
154
+ <div
155
+ class="flowdrop-workflow-node flowdrop-workflow-node--gateway"
156
+ class:flowdrop-workflow-node--selected={props.selected}
157
+ onclick={handleNodeClick}
158
+ ondblclick={handleNodeDoubleClick}
159
+ onkeydown={handleKeydown}
160
+ role="button"
161
+ tabindex="0"
162
+ aria-label="Gateway node: {displayTitle}"
163
+ aria-describedby="node-description-{props.data.nodeId || 'unknown'}"
164
+ >
165
+ <!-- Node Header: expands in multiples of 10 (title row 40px + gap 10px + description 20px per line) -->
166
+ <div class="flowdrop-workflow-node__header">
167
+ <div class="flowdrop-workflow-node__header-title">
168
+ <!-- Node Icon with Squircle Background -->
169
+ <div
170
+ class="flowdrop-workflow-node__icon-wrapper"
171
+ style="--_icon-color: {getCategoryColorToken(props.data.metadata.category)}"
172
+ >
173
+ <Icon
174
+ icon={getNodeIcon(props.data.metadata.icon, props.data.metadata.category)}
175
+ class="flowdrop-workflow-node__icon"
176
+ />
177
+ </div>
178
+
179
+ <!-- Node Title - uses instanceTitle override if set -->
180
+ <h3 class="flowdrop-text--sm flowdrop-font--medium flowdrop-truncate flowdrop-flex--1">
181
+ {displayTitle}
182
+ </h3>
183
+ </div>
184
+ <!-- Node Description - line-height 20px so header grows in steps of 10 -->
185
+ <p
186
+ class="flowdrop-workflow-node__header-desc"
187
+ id="node-description-{props.data.nodeId || 'unknown'}"
188
+ >
189
+ {displayDescription}
190
+ </p>
191
+ </div>
192
+
193
+ <!-- Input Ports Container (filtered based on hideUnconnectedHandles) -->
194
+ {#if visibleInputPorts.length > 0}
195
+ <div class="flowdrop-workflow-node__ports">
196
+ <div class="flowdrop-workflow-node__ports-list">
197
+ {#each visibleInputPorts as port, inputIndex (port.id)}
198
+ <div class="flowdrop-workflow-node__port">
199
+ <!-- Input Handle: centered in row, at node edge (ports have no padding) -->
200
+ <Handle
201
+ type="target"
202
+ position={Position.Left}
203
+ id={`${props.data.nodeId}-input-${port.id}`}
204
+ class="flowdrop-workflow-node__handle"
205
+ style="top: 50%; transform: translateY(-50%); --fd-handle-fill: {getDataTypeColorToken(
206
+ port.dataType
207
+ )}; --fd-handle-border-color: var(--fd-handle-border);"
208
+ role="button"
209
+ tabindex={0}
210
+ aria-label="Connect to {port.name} input port"
211
+ />
212
+
213
+ <!-- Port Info: padding lives here so handle position is simple -->
214
+ <div class="flowdrop-workflow-node__port-content flowdrop-flex--1 flowdrop-min-w--0">
215
+ <div class="flowdrop-flex flowdrop-gap--2">
216
+ <span class="flowdrop-text--xs flowdrop-font--medium">{port.name}</span>
217
+ <span
218
+ class="flowdrop-badge flowdrop-badge--sm"
219
+ style="background-color: {getPortBackgroundColor(
220
+ port.dataType,
221
+ 15
222
+ )}; color: {getDataTypeColorToken(
223
+ port.dataType
224
+ )}; border: 1px solid {getPortBackgroundColor(port.dataType, 30)};"
225
+ >
226
+ {port.dataType}
227
+ </span>
228
+ {#if port.required}
229
+ <span class="flowdrop-badge flowdrop-badge--error flowdrop-badge--sm"
230
+ >Required</span
231
+ >
232
+ {/if}
233
+ </div>
234
+ {#if port.description}
235
+ <p class="flowdrop-text--xs flowdrop-text--gray flowdrop-truncate">
236
+ {port.description}
237
+ </p>
238
+ {/if}
239
+ </div>
240
+ </div>
241
+ {/each}
242
+ </div>
243
+ </div>
244
+ {/if}
245
+
246
+ <!-- Branches Section (Output Ports) - filtered based on hideUnconnectedHandles -->
247
+ {#if visibleBranches.length > 0}
248
+ <div class="flowdrop-workflow-node__ports">
249
+ <div class="flowdrop-workflow-node__ports-list">
250
+ {#each visibleBranches as branch, branchIndex (branch.name)}
251
+ {@const isActive = isBranchActive(branch.name)}
252
+ <div class="flowdrop-workflow-node__port">
253
+ <!-- Port Info: padding lives here so handle position is simple -->
254
+ <div
255
+ class="flowdrop-workflow-node__port-content flowdrop-flex--1 flowdrop-min-w--0 flowdrop-text--right"
256
+ >
257
+ <div
258
+ class="flowdrop-flex flowdrop-gap--2 flowdrop-justify--end flowdrop-items--center"
259
+ >
260
+ {#if isActive}
261
+ <span style="color: {getDataTypeColorToken('trigger')};">
262
+ <Icon icon="mdi:check-circle" />
263
+ </span>
264
+ {/if}
265
+ <span
266
+ class="flowdrop-text--xs flowdrop-font--medium"
267
+ class:flowdrop-text--active={isActive}
268
+ >
269
+ {branch.label || branch.name}
270
+ </span>
271
+ <span
272
+ class="flowdrop-badge flowdrop-badge--sm"
273
+ style="background-color: {getPortBackgroundColor(
274
+ 'trigger',
275
+ 15
276
+ )}; color: {getDataTypeColorToken(
277
+ 'trigger'
278
+ )}; border: 1px solid {getPortBackgroundColor('trigger', 30)};"
279
+ >
280
+ trigger
281
+ </span>
282
+ </div>
283
+ </div>
284
+
285
+ <!-- Output Handle: centered in row, at node edge (ports have no padding) -->
286
+ <Handle
287
+ type="source"
288
+ position={Position.Right}
289
+ id={`${props.data.nodeId}-output-${branch.name}`}
290
+ class={`flowdrop-workflow-node__handle ${isActive ? 'flowdrop-workflow-node__handle--active' : ''}`}
291
+ style="top: 50%; transform: translateY(-50%); --fd-handle-fill: {isActive
292
+ ? getDataTypeColorToken('trigger')
293
+ : getDataTypeColorToken(
294
+ 'trigger'
295
+ )}; --fd-handle-border-color: var(--fd-handle-border);"
296
+ role="button"
297
+ tabindex={0}
298
+ aria-label="Connect from {branch.name} branch"
299
+ />
300
+ </div>
301
+ {/each}
302
+ </div>
303
+ </div>
304
+ {:else if branches.length === 0}
305
+ <!-- No branches configured at all -->
306
+ <div class="flowdrop-workflow-node__ports">
307
+ <div class="workflow-node__no-branches">
308
+ <Icon icon="mdi:alert-circle-outline" />
309
+ <span>No branches configured</span>
310
+ </div>
311
+ </div>
312
+ {/if}
313
+ <!-- Note: When all branches are hidden due to hideUnconnectedHandles, we don't show anything -->
314
+
315
+ <!-- Config button -->
316
+ <button
317
+ class="flowdrop-workflow-node__config-btn"
318
+ onclick={handleNodeDoubleClick}
319
+ title="Configure node"
320
+ >
321
+ <Icon icon="mdi:cog" />
322
+ </button>
323
+ </div>
324
+
325
+ <style>
326
+ .flowdrop-workflow-node {
327
+ position: relative;
328
+ background-color: var(--fd-card);
329
+ border: 1.5px solid var(--fd-node-border);
330
+ border-radius: var(--fd-radius-xl);
331
+ box-shadow: var(--fd-shadow-md);
332
+ width: var(--fd-node-default-width);
333
+ z-index: 10;
334
+ color: var(--fd-foreground);
335
+ transition: all var(--fd-transition-fast);
336
+ }
337
+
338
+ .flowdrop-workflow-node--gateway {
339
+ min-width: var(--fd-node-default-width);
340
+ }
341
+
342
+ .flowdrop-workflow-node:hover {
343
+ box-shadow: var(--fd-shadow-lg);
344
+ border-color: var(--fd-node-border-hover);
345
+ }
346
+
347
+ .flowdrop-workflow-node--selected {
348
+ box-shadow:
349
+ 0 0 0 2px var(--fd-primary-muted),
350
+ var(--fd-shadow-lg);
351
+ border-color: var(--fd-primary);
352
+ }
353
+
354
+ .flowdrop-workflow-node--selected:hover {
355
+ box-shadow:
356
+ 0 0 0 2px var(--fd-primary-muted),
357
+ var(--fd-shadow-lg);
358
+ border-color: var(--fd-primary);
359
+ }
360
+
361
+ .flowdrop-workflow-node:focus-visible {
362
+ outline: 2px solid var(--fd-ring);
363
+ outline-offset: 2px;
364
+ }
365
+
366
+ .flowdrop-workflow-node__header {
367
+ box-sizing: border-box;
368
+ padding: var(--fd-node-header-gap) var(--fd-space-xl);
369
+ border-bottom: 1px solid var(--fd-border-muted);
370
+ background: var(--fd-header);
371
+ border-top-left-radius: var(--fd-radius-xl);
372
+ border-top-right-radius: var(--fd-radius-xl);
373
+ display: flex;
374
+ flex-direction: column;
375
+ gap: var(--fd-node-header-gap);
376
+ min-height: calc(
377
+ var(--fd-node-header-gap) * 2 + var(--fd-node-header-title-height) +
378
+ var(--fd-node-header-desc-line)
379
+ );
380
+ }
381
+
382
+ .flowdrop-workflow-node__header-title {
383
+ display: flex;
384
+ align-items: center;
385
+ gap: var(--fd-space-md);
386
+ min-height: var(--fd-node-header-title-height);
387
+ flex-shrink: 0;
388
+ }
389
+
390
+ .flowdrop-workflow-node__header-desc {
391
+ margin: 0;
392
+ font-size: var(--fd-text-xs);
393
+ color: var(--fd-muted-foreground);
394
+ line-height: var(--fd-node-header-desc-line);
395
+ min-height: var(--fd-node-header-desc-line);
396
+ overflow: hidden;
397
+ text-overflow: ellipsis;
398
+ display: -webkit-box;
399
+ -webkit-line-clamp: 3;
400
+ line-clamp: 3;
401
+ -webkit-box-orient: vertical;
402
+ }
403
+
404
+ /* Squircle icon wrapper - Apple-style rounded square background */
405
+ .flowdrop-workflow-node__icon-wrapper {
406
+ display: flex;
407
+ align-items: center;
408
+ justify-content: center;
409
+ width: 2.25rem;
410
+ height: 2.25rem;
411
+ border-radius: 0.5rem;
412
+ background: color-mix(in srgb, var(--_icon-color) var(--fd-node-icon-bg-opacity), transparent);
413
+ flex-shrink: 0;
414
+ transition: all var(--fd-transition-normal);
415
+ }
416
+
417
+ .flowdrop-workflow-node:hover .flowdrop-workflow-node__icon-wrapper {
418
+ background: color-mix(
419
+ in srgb,
420
+ var(--_icon-color) var(--fd-node-icon-bg-opacity-hover),
421
+ transparent
422
+ );
423
+ transform: scale(1.05);
424
+ }
425
+
426
+ .flowdrop-workflow-node__icon-wrapper :global(.flowdrop-workflow-node__icon) {
427
+ width: 1.25rem;
428
+ height: 1.25rem;
429
+ color: var(--fd-node-icon);
430
+ }
431
+
432
+ .flowdrop-workflow-node__header-title h3 {
433
+ margin: 0;
434
+ line-height: 1;
435
+ color: var(--fd-foreground);
436
+ }
437
+
438
+ .flowdrop-workflow-node__ports {
439
+ padding: 0;
440
+ }
441
+
442
+ .flowdrop-workflow-node__ports-list {
443
+ display: flex;
444
+ flex-direction: column;
445
+ gap: var(--fd-node-header-gap);
446
+ padding: var(--fd-node-header-gap) 0;
447
+ }
448
+
449
+ .flowdrop-workflow-node__port {
450
+ display: flex;
451
+ align-items: center;
452
+ gap: 0;
453
+ min-height: var(--fd-node-port-row-height);
454
+ padding: var(--fd-space-3xs) 0;
455
+ position: relative;
456
+ }
457
+
458
+ .flowdrop-workflow-node__port-content {
459
+ padding: 0 var(--fd-space-xl);
460
+ }
461
+
462
+ .flowdrop-badge {
463
+ padding: 0.125rem var(--fd-space-3xs);
464
+ border-radius: var(--fd-radius-sm);
465
+ font-size: 0.625rem;
466
+ font-weight: 500;
467
+ text-transform: uppercase;
468
+ letter-spacing: 0.05em;
469
+ }
470
+
471
+ .flowdrop-badge--error {
472
+ background-color: var(--fd-error);
473
+ color: var(--fd-error-foreground);
474
+ }
475
+
476
+ .flowdrop-badge--sm {
477
+ font-size: 0.625rem;
478
+ padding: 0.125rem var(--fd-space-3xs);
479
+ }
480
+
481
+ .workflow-node__no-branches {
482
+ display: flex;
483
+ align-items: center;
484
+ gap: var(--fd-space-xs);
485
+ padding: var(--fd-space-md);
486
+ background: var(--fd-warning-muted);
487
+ border: 1px solid var(--fd-warning);
488
+ border-radius: var(--fd-radius-lg);
489
+ color: var(--fd-warning-foreground);
490
+ font-size: var(--fd-text-sm);
491
+ }
492
+
493
+ /* Handle overrides: hover scale, active state (base 20px/12px from base.css) */
494
+ :global(.flowdrop-workflow-node__handle:hover) {
495
+ transform: translateY(-50%) scale(1.2);
496
+ }
497
+
498
+ :global(.flowdrop-workflow-node__handle--active::before) {
499
+ transform: scale(1.15);
500
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fd-success) 20%, transparent);
501
+ }
502
+
503
+ /* Utility classes */
504
+ .flowdrop-flex {
505
+ display: flex;
506
+ }
507
+
508
+ .flowdrop-flex--1 {
509
+ flex: 1;
510
+ }
511
+
512
+ .flowdrop-gap--2 {
513
+ gap: var(--fd-space-xs);
514
+ }
515
+
516
+ .flowdrop-items--center {
517
+ align-items: center;
518
+ }
519
+
520
+ .flowdrop-justify--end {
521
+ justify-content: flex-end;
522
+ }
523
+
524
+ .flowdrop-min-w--0 {
525
+ min-width: 0;
526
+ }
527
+
528
+ .flowdrop-text--xs {
529
+ font-size: var(--fd-text-xs);
530
+ line-height: 1rem;
531
+ }
532
+
533
+ .flowdrop-text--sm {
534
+ font-size: var(--fd-text-sm);
535
+ line-height: 1.25rem;
536
+ }
537
+
538
+ .flowdrop-text--gray {
539
+ color: var(--fd-muted-foreground);
540
+ }
541
+
542
+ .flowdrop-text--active {
543
+ color: var(--fd-success);
544
+ font-weight: 600;
545
+ }
546
+
547
+ .flowdrop-font--medium {
548
+ font-weight: 500;
549
+ }
550
+
551
+ .flowdrop-truncate {
552
+ overflow: hidden;
553
+ text-overflow: ellipsis;
554
+ white-space: nowrap;
555
+ }
556
+
557
+ .flowdrop-text--right {
558
+ text-align: right;
559
+ }
560
+
561
+ .flowdrop-workflow-node__config-btn {
562
+ position: absolute;
563
+ top: var(--fd-space-xs);
564
+ right: var(--fd-space-xs);
565
+ width: 1.5rem;
566
+ height: 1.5rem;
567
+ background-color: var(--fd-backdrop);
568
+ border: 1px solid var(--fd-border);
569
+ border-radius: var(--fd-radius-sm);
570
+ color: var(--fd-muted-foreground);
571
+ cursor: pointer;
572
+ display: flex;
573
+ align-items: center;
574
+ justify-content: center;
575
+ opacity: 0;
576
+ transition: all var(--fd-transition-normal);
577
+ backdrop-filter: blur(4px);
578
+ z-index: 15;
579
+ font-size: var(--fd-text-sm);
580
+ }
581
+
582
+ .flowdrop-workflow-node:hover .flowdrop-workflow-node__config-btn {
583
+ opacity: 1;
584
+ }
585
+
586
+ .flowdrop-workflow-node__config-btn:hover {
587
+ background-color: var(--fd-muted);
588
+ border-color: var(--fd-border-strong);
589
+ color: var(--fd-foreground);
590
+ }
591
+ </style>
@@ -0,0 +1,15 @@
1
+ import type { WorkflowNode } from '../../types/index.js';
2
+ interface Props {
3
+ data: WorkflowNode['data'] & {
4
+ nodeId?: string;
5
+ onConfigOpen?: (node: {
6
+ id: string;
7
+ type: string;
8
+ data: WorkflowNode['data'];
9
+ }) => void;
10
+ };
11
+ selected?: boolean;
12
+ }
13
+ declare const GatewayNode: import("svelte").Component<Props, {}, "">;
14
+ type GatewayNode = ReturnType<typeof GatewayNode>;
15
+ export default GatewayNode;
@@ -0,0 +1,52 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import NodeDecorator from '../../stories/NodeDecorator.svelte';
4
+
5
+ const { Story } = defineMeta({
6
+ title: 'Nodes/IdeaNode',
7
+ tags: ['autodocs'],
8
+ parameters: {
9
+ layout: 'centered'
10
+ }
11
+ });
12
+ </script>
13
+
14
+ <Story name="Default">
15
+ <NodeDecorator
16
+ data={{
17
+ label: 'Idea',
18
+ config: {},
19
+ metadata: {
20
+ id: 'idea',
21
+ name: 'Idea',
22
+ description: 'Planning node',
23
+ category: 'helpers',
24
+ version: '1.0.0',
25
+ type: 'idea',
26
+ inputs: [],
27
+ outputs: []
28
+ }
29
+ }}
30
+ />
31
+ </Story>
32
+
33
+ <Story name="With Content">
34
+ <NodeDecorator
35
+ data={{
36
+ label: 'Feature Idea',
37
+ config: {
38
+ content: 'Add batch processing support to handle multiple items in parallel.'
39
+ },
40
+ metadata: {
41
+ id: 'idea',
42
+ name: 'Idea',
43
+ description: 'Planning node',
44
+ category: 'helpers',
45
+ version: '1.0.0',
46
+ type: 'idea',
47
+ inputs: [],
48
+ outputs: []
49
+ }
50
+ }}
51
+ />
52
+ </Story>
@@ -0,0 +1,26 @@
1
+ export default IdeaNode;
2
+ type IdeaNode = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const IdeaNode: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
15
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
+ $$bindings?: Bindings;
17
+ } & Exports;
18
+ (internal: unknown, props: {
19
+ $$events?: Events;
20
+ $$slots?: Slots;
21
+ }): Exports & {
22
+ $set?: any;
23
+ $on?: any;
24
+ };
25
+ z_$$bindings?: Bindings;
26
+ }