@flowdrop/flowdrop 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/README.md +94 -51
  2. package/dist/adapters/WorkflowAdapter.d.ts +1 -1
  3. package/dist/adapters/WorkflowAdapter.js +27 -47
  4. package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +2 -2
  5. package/dist/adapters/agentspec/AgentSpecAdapter.js +122 -133
  6. package/dist/adapters/agentspec/agentAdapter.d.ts +2 -2
  7. package/dist/adapters/agentspec/agentAdapter.js +10 -10
  8. package/dist/adapters/agentspec/autoLayout.d.ts +52 -6
  9. package/dist/adapters/agentspec/autoLayout.js +118 -23
  10. package/dist/adapters/agentspec/componentTypeDefaults.d.ts +1 -1
  11. package/dist/adapters/agentspec/componentTypeDefaults.js +120 -120
  12. package/dist/adapters/agentspec/defaultNodeTypes.d.ts +2 -2
  13. package/dist/adapters/agentspec/defaultNodeTypes.js +307 -307
  14. package/dist/adapters/agentspec/index.d.ts +10 -10
  15. package/dist/adapters/agentspec/index.js +6 -6
  16. package/dist/adapters/agentspec/validator.d.ts +2 -2
  17. package/dist/adapters/agentspec/validator.js +20 -22
  18. package/dist/api/enhanced-client.d.ts +3 -3
  19. package/dist/api/enhanced-client.js +72 -73
  20. package/dist/chat/commandClassifier.d.ts +19 -0
  21. package/dist/chat/commandClassifier.js +30 -0
  22. package/dist/chat/index.d.ts +27 -0
  23. package/dist/chat/index.js +32 -0
  24. package/dist/chat/responseParser.d.ts +21 -0
  25. package/dist/chat/responseParser.js +91 -0
  26. package/dist/commands/batch.d.ts +18 -0
  27. package/dist/commands/batch.js +54 -0
  28. package/dist/commands/executor.d.ts +37 -0
  29. package/dist/commands/executor.js +1133 -0
  30. package/dist/commands/index.d.ts +14 -0
  31. package/dist/commands/index.js +17 -0
  32. package/dist/commands/parser.d.ts +16 -0
  33. package/dist/commands/parser.js +295 -0
  34. package/dist/commands/positioner.d.ts +19 -0
  35. package/dist/commands/positioner.js +33 -0
  36. package/dist/commands/storeIntegration.svelte.d.ts +16 -0
  37. package/dist/commands/storeIntegration.svelte.js +67 -0
  38. package/dist/commands/types.d.ts +343 -0
  39. package/dist/commands/types.js +45 -0
  40. package/dist/components/App.svelte +522 -237
  41. package/dist/components/App.svelte.d.ts +11 -8
  42. package/dist/components/CanvasBanner.stories.svelte +10 -16
  43. package/dist/components/CanvasBanner.stories.svelte.d.ts +1 -1
  44. package/dist/components/CanvasBanner.svelte +2 -2
  45. package/dist/components/CanvasBanner.svelte.d.ts +1 -1
  46. package/dist/components/CanvasController.svelte +37 -0
  47. package/dist/components/CanvasController.svelte.d.ts +32 -0
  48. package/dist/components/ConfigForm.svelte +118 -256
  49. package/dist/components/ConfigForm.svelte.d.ts +2 -2
  50. package/dist/components/ConfigMappingRow.svelte +128 -0
  51. package/dist/components/ConfigMappingRow.svelte.d.ts +8 -0
  52. package/dist/components/ConfigModal.svelte +3 -3
  53. package/dist/components/ConfigModal.svelte.d.ts +1 -1
  54. package/dist/components/ConfigPanel.stories.svelte +19 -19
  55. package/dist/components/ConfigPanel.stories.svelte.d.ts +1 -1
  56. package/dist/components/ConfigPanel.svelte +57 -19
  57. package/dist/components/ConfigPanel.svelte.d.ts +3 -1
  58. package/dist/components/ConnectionLine.svelte +4 -4
  59. package/dist/components/EdgeRefresher.svelte +1 -1
  60. package/dist/components/FlowDropEdge.stories.svelte +110 -110
  61. package/dist/components/FlowDropEdge.svelte +11 -19
  62. package/dist/components/FlowDropEdge.svelte.d.ts +1 -1
  63. package/dist/components/FlowDropZone.svelte +6 -9
  64. package/dist/components/FlowDropZone.svelte.d.ts +1 -1
  65. package/dist/components/LoadingSpinner.stories.svelte +13 -13
  66. package/dist/components/LoadingSpinner.stories.svelte.d.ts +1 -1
  67. package/dist/components/LoadingSpinner.svelte +3 -3
  68. package/dist/components/LoadingSpinner.svelte.d.ts +1 -1
  69. package/dist/components/Logo.stories.svelte +4 -4
  70. package/dist/components/Logo.stories.svelte.d.ts +1 -1
  71. package/dist/components/Logo.svelte +3 -9
  72. package/dist/components/LogsSidebar.svelte +46 -53
  73. package/dist/components/LogsSidebar.svelte.d.ts +1 -1
  74. package/dist/components/MarkdownDisplay.stories.svelte +10 -14
  75. package/dist/components/MarkdownDisplay.stories.svelte.d.ts +1 -1
  76. package/dist/components/MarkdownDisplay.svelte +4 -6
  77. package/dist/components/Navbar.stories.svelte +19 -19
  78. package/dist/components/Navbar.stories.svelte.d.ts +1 -1
  79. package/dist/components/Navbar.svelte +28 -49
  80. package/dist/components/Navbar.svelte.d.ts +2 -2
  81. package/dist/components/NodeSidebar.svelte +55 -135
  82. package/dist/components/NodeSidebar.svelte.d.ts +1 -1
  83. package/dist/components/NodeStatusOverlay.stories.svelte +19 -31
  84. package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +1 -1
  85. package/dist/components/NodeStatusOverlay.svelte +40 -55
  86. package/dist/components/NodeStatusOverlay.svelte.d.ts +3 -3
  87. package/dist/components/NodeSwapPicker.svelte +493 -0
  88. package/dist/components/NodeSwapPicker.svelte.d.ts +16 -0
  89. package/dist/components/PipelineStatus.svelte +63 -89
  90. package/dist/components/PipelineStatus.svelte.d.ts +4 -4
  91. package/dist/components/PortCoordinateTracker.svelte +5 -7
  92. package/dist/components/PortCoordinateTracker.svelte.d.ts +1 -1
  93. package/dist/components/PortMappingRow.svelte +205 -0
  94. package/dist/components/PortMappingRow.svelte.d.ts +12 -0
  95. package/dist/components/ReadOnlyDetails.svelte +1 -1
  96. package/dist/components/SchemaForm.stories.svelte +53 -53
  97. package/dist/components/SchemaForm.stories.svelte.d.ts +1 -1
  98. package/dist/components/SchemaForm.svelte +24 -51
  99. package/dist/components/SchemaForm.svelte.d.ts +2 -2
  100. package/dist/components/SettingsModal.svelte +6 -9
  101. package/dist/components/SettingsModal.svelte.d.ts +1 -1
  102. package/dist/components/SettingsPanel.svelte +138 -158
  103. package/dist/components/SettingsPanel.svelte.d.ts +1 -1
  104. package/dist/components/StatusIcon.stories.svelte +16 -29
  105. package/dist/components/StatusIcon.stories.svelte.d.ts +1 -1
  106. package/dist/components/StatusIcon.svelte +19 -19
  107. package/dist/components/StatusIcon.svelte.d.ts +2 -2
  108. package/dist/components/StatusLabel.stories.svelte +8 -8
  109. package/dist/components/StatusLabel.stories.svelte.d.ts +1 -1
  110. package/dist/components/SwapMappingEditor.svelte +529 -0
  111. package/dist/components/SwapMappingEditor.svelte.d.ts +12 -0
  112. package/dist/components/ThemeToggle.stories.svelte +10 -10
  113. package/dist/components/ThemeToggle.stories.svelte.d.ts +1 -1
  114. package/dist/components/ThemeToggle.svelte +22 -33
  115. package/dist/components/ThemeToggle.svelte.d.ts +1 -1
  116. package/dist/components/UniversalNode.svelte +29 -41
  117. package/dist/components/UniversalNode.svelte.d.ts +3 -3
  118. package/dist/components/WorkflowEditor.svelte +210 -170
  119. package/dist/components/WorkflowEditor.svelte.d.ts +12 -4
  120. package/dist/components/chat/AIChatPanel.svelte +797 -0
  121. package/dist/components/chat/AIChatPanel.svelte.d.ts +13 -0
  122. package/dist/components/chat/CommandPreview.svelte +234 -0
  123. package/dist/components/chat/CommandPreview.svelte.d.ts +9 -0
  124. package/dist/components/console/CommandConsole.stories.svelte +111 -0
  125. package/dist/components/console/CommandConsole.stories.svelte.d.ts +27 -0
  126. package/dist/components/console/CommandConsole.svelte +263 -0
  127. package/dist/components/console/CommandConsole.svelte.d.ts +11 -0
  128. package/dist/components/console/ConsoleAutocomplete.svelte +142 -0
  129. package/dist/components/console/ConsoleAutocomplete.svelte.d.ts +21 -0
  130. package/dist/components/console/ConsoleInput.svelte +771 -0
  131. package/dist/components/console/ConsoleInput.svelte.d.ts +16 -0
  132. package/dist/components/console/ConsoleOutput.svelte +116 -0
  133. package/dist/components/console/ConsoleOutput.svelte.d.ts +11 -0
  134. package/dist/components/console/formatters.d.ts +26 -0
  135. package/dist/components/console/formatters.js +116 -0
  136. package/dist/components/form/FormArray.svelte +75 -132
  137. package/dist/components/form/FormArray.svelte.d.ts +1 -1
  138. package/dist/components/form/FormAutocomplete.svelte +65 -108
  139. package/dist/components/form/FormAutocomplete.svelte.d.ts +1 -1
  140. package/dist/components/form/FormCheckboxGroup.stories.svelte +13 -16
  141. package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +1 -1
  142. package/dist/components/form/FormCheckboxGroup.svelte +2 -2
  143. package/dist/components/form/FormCodeEditor.svelte +42 -56
  144. package/dist/components/form/FormField.svelte +79 -90
  145. package/dist/components/form/FormField.svelte.d.ts +2 -2
  146. package/dist/components/form/FormFieldLight.svelte +72 -88
  147. package/dist/components/form/FormFieldLight.svelte.d.ts +1 -1
  148. package/dist/components/form/FormFieldWrapper.stories.svelte +14 -14
  149. package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +1 -1
  150. package/dist/components/form/FormFieldWrapper.svelte +2 -9
  151. package/dist/components/form/FormFieldWrapper.svelte.d.ts +1 -1
  152. package/dist/components/form/FormFieldset.svelte +3 -3
  153. package/dist/components/form/FormFieldset.svelte.d.ts +2 -2
  154. package/dist/components/form/FormMarkdownEditor.svelte +123 -156
  155. package/dist/components/form/FormNumberField.stories.svelte +18 -18
  156. package/dist/components/form/FormNumberField.stories.svelte.d.ts +1 -1
  157. package/dist/components/form/FormNumberField.svelte +6 -6
  158. package/dist/components/form/FormRangeField.stories.svelte +13 -13
  159. package/dist/components/form/FormRangeField.stories.svelte.d.ts +1 -1
  160. package/dist/components/form/FormRangeField.svelte +4 -12
  161. package/dist/components/form/FormSelect.stories.svelte +21 -21
  162. package/dist/components/form/FormSelect.stories.svelte.d.ts +1 -1
  163. package/dist/components/form/FormSelect.svelte +5 -5
  164. package/dist/components/form/FormSelect.svelte.d.ts +1 -1
  165. package/dist/components/form/FormTemplateEditor.svelte +126 -175
  166. package/dist/components/form/FormTemplateEditor.svelte.d.ts +1 -1
  167. package/dist/components/form/FormTextField.stories.svelte +17 -23
  168. package/dist/components/form/FormTextField.stories.svelte.d.ts +1 -1
  169. package/dist/components/form/FormTextField.svelte +4 -4
  170. package/dist/components/form/FormTextarea.stories.svelte +18 -21
  171. package/dist/components/form/FormTextarea.stories.svelte.d.ts +1 -1
  172. package/dist/components/form/FormTextarea.svelte +4 -4
  173. package/dist/components/form/FormToggle.stories.svelte +13 -16
  174. package/dist/components/form/FormToggle.stories.svelte.d.ts +1 -1
  175. package/dist/components/form/FormToggle.svelte +3 -3
  176. package/dist/components/form/FormUISchemaRenderer.svelte +12 -19
  177. package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +3 -3
  178. package/dist/components/form/index.d.ts +19 -19
  179. package/dist/components/form/index.js +18 -18
  180. package/dist/components/form/templateAutocomplete.d.ts +2 -2
  181. package/dist/components/form/templateAutocomplete.js +55 -64
  182. package/dist/components/form/types.d.ts +6 -6
  183. package/dist/components/form/types.js +4 -9
  184. package/dist/components/icons/AlertCircleIcon.svelte +1 -6
  185. package/dist/components/icons/CogIcon.svelte +1 -6
  186. package/dist/components/interrupt/ChoicePrompt.stories.svelte +27 -27
  187. package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +1 -1
  188. package/dist/components/interrupt/ChoicePrompt.svelte +17 -41
  189. package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +1 -1
  190. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +17 -17
  191. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +1 -1
  192. package/dist/components/interrupt/ConfirmationPrompt.svelte +10 -16
  193. package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +1 -1
  194. package/dist/components/interrupt/FormPrompt.svelte +10 -15
  195. package/dist/components/interrupt/FormPrompt.svelte.d.ts +1 -1
  196. package/dist/components/interrupt/InterruptBubble.svelte +87 -121
  197. package/dist/components/interrupt/InterruptBubble.svelte.d.ts +2 -2
  198. package/dist/components/interrupt/ReviewPrompt.stories.svelte +37 -37
  199. package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +1 -1
  200. package/dist/components/interrupt/ReviewPrompt.svelte +55 -75
  201. package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +1 -1
  202. package/dist/components/interrupt/TextInputPrompt.stories.svelte +16 -17
  203. package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +1 -1
  204. package/dist/components/interrupt/TextInputPrompt.svelte +13 -18
  205. package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +1 -1
  206. package/dist/components/interrupt/index.d.ts +6 -5
  207. package/dist/components/interrupt/index.js +6 -5
  208. package/dist/components/layouts/MainLayout.svelte +46 -84
  209. package/dist/components/layouts/MainLayout.svelte.d.ts +6 -6
  210. package/dist/components/nodes/GatewayNode.stories.svelte +64 -65
  211. package/dist/components/nodes/GatewayNode.svelte +37 -70
  212. package/dist/components/nodes/GatewayNode.svelte.d.ts +3 -3
  213. package/dist/components/nodes/IdeaNode.stories.svelte +25 -26
  214. package/dist/components/nodes/IdeaNode.svelte +22 -36
  215. package/dist/components/nodes/IdeaNode.svelte.d.ts +1 -1
  216. package/dist/components/nodes/NotesNode.stories.svelte +37 -38
  217. package/dist/components/nodes/NotesNode.svelte +28 -39
  218. package/dist/components/nodes/NotesNode.svelte.d.ts +1 -1
  219. package/dist/components/nodes/SimpleNode.stories.svelte +137 -138
  220. package/dist/components/nodes/SimpleNode.svelte +44 -74
  221. package/dist/components/nodes/SimpleNode.svelte.d.ts +1 -1
  222. package/dist/components/nodes/SquareNode.stories.svelte +75 -75
  223. package/dist/components/nodes/SquareNode.svelte +42 -68
  224. package/dist/components/nodes/SquareNode.svelte.d.ts +1 -1
  225. package/dist/components/nodes/TerminalNode.stories.svelte +10 -10
  226. package/dist/components/nodes/TerminalNode.svelte +74 -112
  227. package/dist/components/nodes/TerminalNode.svelte.d.ts +1 -1
  228. package/dist/components/nodes/ToolNode.stories.svelte +115 -116
  229. package/dist/components/nodes/ToolNode.svelte +31 -64
  230. package/dist/components/nodes/ToolNode.svelte.d.ts +1 -1
  231. package/dist/components/nodes/WorkflowNode.stories.svelte +84 -89
  232. package/dist/components/nodes/WorkflowNode.svelte +50 -103
  233. package/dist/components/nodes/WorkflowNode.svelte.d.ts +3 -3
  234. package/dist/components/playground/ChatPanel.svelte +47 -103
  235. package/dist/components/playground/ExecutionLogs.svelte +45 -68
  236. package/dist/components/playground/InputCollector.svelte +32 -51
  237. package/dist/components/playground/MessageBubble.stories.svelte +25 -25
  238. package/dist/components/playground/MessageBubble.stories.svelte.d.ts +1 -1
  239. package/dist/components/playground/MessageBubble.svelte +54 -70
  240. package/dist/components/playground/MessageBubble.svelte.d.ts +1 -1
  241. package/dist/components/playground/Playground.svelte +60 -91
  242. package/dist/components/playground/Playground.svelte.d.ts +3 -3
  243. package/dist/components/playground/PlaygroundModal.svelte +8 -12
  244. package/dist/components/playground/PlaygroundModal.svelte.d.ts +3 -3
  245. package/dist/components/playground/SessionManager.svelte +34 -40
  246. package/dist/components/playground/SessionManager.svelte.d.ts +1 -1
  247. package/dist/config/agentSpecEndpoints.d.ts +1 -1
  248. package/dist/config/agentSpecEndpoints.js +20 -20
  249. package/dist/config/constants.js +2 -2
  250. package/dist/config/defaultCategories.d.ts +1 -1
  251. package/dist/config/defaultCategories.js +86 -86
  252. package/dist/config/defaultPortConfig.d.ts +1 -1
  253. package/dist/config/defaultPortConfig.js +144 -144
  254. package/dist/config/endpoints.d.ts +12 -4
  255. package/dist/config/endpoints.js +70 -65
  256. package/dist/config/runtimeConfig.d.ts +2 -2
  257. package/dist/config/runtimeConfig.js +8 -8
  258. package/dist/core/index.d.ts +68 -63
  259. package/dist/core/index.js +44 -35
  260. package/dist/display/index.d.ts +2 -2
  261. package/dist/display/index.js +2 -2
  262. package/dist/editor/index.d.ts +64 -62
  263. package/dist/editor/index.js +57 -55
  264. package/dist/form/code.d.ts +5 -5
  265. package/dist/form/code.js +14 -14
  266. package/dist/form/fieldRegistry.d.ts +3 -3
  267. package/dist/form/fieldRegistry.js +9 -11
  268. package/dist/form/full.d.ts +8 -8
  269. package/dist/form/full.js +9 -9
  270. package/dist/form/index.d.ts +18 -18
  271. package/dist/form/index.js +16 -16
  272. package/dist/form/markdown.d.ts +4 -4
  273. package/dist/form/markdown.js +8 -8
  274. package/dist/helpers/proximityConnect.d.ts +3 -3
  275. package/dist/helpers/proximityConnect.js +40 -35
  276. package/dist/helpers/workflowEditorHelper.d.ts +8 -58
  277. package/dist/helpers/workflowEditorHelper.js +73 -292
  278. package/dist/index.d.ts +6 -6
  279. package/dist/index.js +6 -6
  280. package/dist/mocks/app-environment.js +2 -2
  281. package/dist/mocks/app-forms.js +1 -1
  282. package/dist/mocks/app-navigation.js +2 -2
  283. package/dist/mocks/app-stores.js +3 -3
  284. package/dist/playground/index.d.ts +19 -19
  285. package/dist/playground/index.js +16 -16
  286. package/dist/playground/mount.d.ts +3 -3
  287. package/dist/playground/mount.js +24 -24
  288. package/dist/registry/builtinFormats.js +13 -13
  289. package/dist/registry/builtinNodes.d.ts +2 -2
  290. package/dist/registry/builtinNodes.js +77 -77
  291. package/dist/registry/index.d.ts +4 -4
  292. package/dist/registry/index.js +4 -4
  293. package/dist/registry/nodeComponentRegistry.d.ts +8 -8
  294. package/dist/registry/nodeComponentRegistry.js +9 -11
  295. package/dist/registry/plugin.d.ts +2 -2
  296. package/dist/registry/plugin.js +11 -11
  297. package/dist/registry/workflowFormatRegistry.d.ts +3 -3
  298. package/dist/registry/workflowFormatRegistry.js +2 -2
  299. package/dist/schema/index.d.ts +1 -1
  300. package/dist/schema/index.js +2 -2
  301. package/dist/schemas/v1/workflow.schema.json +107 -22
  302. package/dist/services/agentSpecExecutionService.d.ts +3 -3
  303. package/dist/services/agentSpecExecutionService.js +55 -56
  304. package/dist/services/api.d.ts +2 -2
  305. package/dist/services/api.js +37 -37
  306. package/dist/services/apiVariableService.d.ts +1 -1
  307. package/dist/services/apiVariableService.js +34 -41
  308. package/dist/services/autoSaveService.js +8 -8
  309. package/dist/services/categoriesApi.d.ts +2 -2
  310. package/dist/services/categoriesApi.js +8 -8
  311. package/dist/services/chatService.d.ts +65 -0
  312. package/dist/services/chatService.js +131 -0
  313. package/dist/services/draftStorage.d.ts +1 -1
  314. package/dist/services/draftStorage.js +11 -11
  315. package/dist/services/dynamicSchemaService.d.ts +1 -1
  316. package/dist/services/dynamicSchemaService.js +39 -41
  317. package/dist/services/globalSave.d.ts +2 -2
  318. package/dist/services/globalSave.js +38 -41
  319. package/dist/services/historyService.d.ts +7 -5
  320. package/dist/services/historyService.js +29 -14
  321. package/dist/services/interruptService.d.ts +1 -1
  322. package/dist/services/interruptService.js +29 -35
  323. package/dist/services/nodeExecutionService.d.ts +1 -1
  324. package/dist/services/nodeExecutionService.js +44 -45
  325. package/dist/services/playgroundService.d.ts +1 -1
  326. package/dist/services/playgroundService.js +29 -29
  327. package/dist/services/portConfigApi.d.ts +2 -2
  328. package/dist/services/portConfigApi.js +8 -8
  329. package/dist/services/settingsService.d.ts +2 -2
  330. package/dist/services/settingsService.js +19 -25
  331. package/dist/services/toastService.d.ts +4 -4
  332. package/dist/services/toastService.js +33 -33
  333. package/dist/services/variableService.d.ts +1 -1
  334. package/dist/services/variableService.js +36 -36
  335. package/dist/services/workflowStorage.d.ts +2 -2
  336. package/dist/services/workflowStorage.js +13 -13
  337. package/dist/settings/index.d.ts +7 -7
  338. package/dist/settings/index.js +6 -6
  339. package/dist/skins/default.d.ts +1 -1
  340. package/dist/skins/default.js +1 -1
  341. package/dist/skins/index.d.ts +3 -3
  342. package/dist/skins/index.js +7 -7
  343. package/dist/skins/slate.d.ts +1 -1
  344. package/dist/skins/slate.js +69 -69
  345. package/dist/stores/categoriesStore.svelte.d.ts +1 -1
  346. package/dist/stores/categoriesStore.svelte.js +5 -5
  347. package/dist/stores/editorStateMachine.svelte.d.ts +2 -2
  348. package/dist/stores/editorStateMachine.svelte.js +34 -34
  349. package/dist/stores/historyStore.svelte.d.ts +4 -4
  350. package/dist/stores/historyStore.svelte.js +4 -4
  351. package/dist/stores/interruptStore.svelte.d.ts +3 -3
  352. package/dist/stores/interruptStore.svelte.js +27 -22
  353. package/dist/stores/playgroundStore.svelte.d.ts +3 -3
  354. package/dist/stores/playgroundStore.svelte.js +29 -23
  355. package/dist/stores/portCoordinateStore.svelte.d.ts +6 -2
  356. package/dist/stores/portCoordinateStore.svelte.js +30 -39
  357. package/dist/stores/settingsStore.svelte.d.ts +2 -2
  358. package/dist/stores/settingsStore.svelte.js +57 -62
  359. package/dist/stores/workflowStore.svelte.d.ts +34 -5
  360. package/dist/stores/workflowStore.svelte.js +127 -108
  361. package/dist/stories/CanvasDecorator.svelte +7 -10
  362. package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
  363. package/dist/stories/EdgeDecorator.svelte +28 -31
  364. package/dist/stories/EdgeDecorator.svelte.d.ts +1 -1
  365. package/dist/stories/NodeDecorator.svelte +14 -20
  366. package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
  367. package/dist/stories/utils.d.ts +2 -2
  368. package/dist/stories/utils.js +89 -93
  369. package/dist/styles/base.css +16 -50
  370. package/dist/styles/tokens.css +10 -28
  371. package/dist/svelte-app.d.ts +10 -10
  372. package/dist/svelte-app.js +39 -39
  373. package/dist/themes/default.d.ts +1 -1
  374. package/dist/themes/default.js +4 -4
  375. package/dist/themes/index.d.ts +3 -3
  376. package/dist/themes/index.js +11 -11
  377. package/dist/themes/minimal.d.ts +1 -1
  378. package/dist/themes/minimal.js +5 -5
  379. package/dist/types/agentspec.d.ts +18 -18
  380. package/dist/types/agentspec.js +2 -2
  381. package/dist/types/auth.d.ts +1 -1
  382. package/dist/types/auth.js +6 -6
  383. package/dist/types/chat.d.ts +63 -0
  384. package/dist/types/chat.js +9 -0
  385. package/dist/types/config.d.ts +6 -6
  386. package/dist/types/events.d.ts +28 -2
  387. package/dist/types/events.js +2 -1
  388. package/dist/types/index.d.ts +40 -32
  389. package/dist/types/index.js +6 -6
  390. package/dist/types/interrupt.d.ts +6 -6
  391. package/dist/types/interrupt.js +21 -21
  392. package/dist/types/interruptState.d.ts +12 -12
  393. package/dist/types/interruptState.js +66 -66
  394. package/dist/types/playground.d.ts +7 -7
  395. package/dist/types/playground.js +14 -14
  396. package/dist/types/settings.d.ts +12 -4
  397. package/dist/types/settings.js +21 -23
  398. package/dist/types/skin.d.ts +1 -1
  399. package/dist/types/theme.d.ts +2 -2
  400. package/dist/types/uischema.d.ts +4 -4
  401. package/dist/types/uischema.js +3 -3
  402. package/dist/utils/colors.d.ts +1 -1
  403. package/dist/utils/colors.js +95 -97
  404. package/dist/utils/config.d.ts +2 -2
  405. package/dist/utils/config.js +48 -48
  406. package/dist/utils/connections.d.ts +2 -2
  407. package/dist/utils/connections.js +15 -15
  408. package/dist/utils/edgeStyling.d.ts +42 -0
  409. package/dist/utils/edgeStyling.js +173 -0
  410. package/dist/utils/errors.js +3 -3
  411. package/dist/utils/fetchWithAuth.d.ts +1 -1
  412. package/dist/utils/fetchWithAuth.js +2 -2
  413. package/dist/utils/handleIds.d.ts +2 -2
  414. package/dist/utils/handleIds.js +8 -8
  415. package/dist/utils/handlePositioning.d.ts +1 -1
  416. package/dist/utils/handlePositioning.js +2 -2
  417. package/dist/utils/icons.d.ts +1 -1
  418. package/dist/utils/icons.js +74 -74
  419. package/dist/utils/logger.d.ts +1 -1
  420. package/dist/utils/logger.js +7 -7
  421. package/dist/utils/nodeIds.d.ts +31 -0
  422. package/dist/utils/nodeIds.js +42 -0
  423. package/dist/utils/nodeStatus.d.ts +1 -1
  424. package/dist/utils/nodeStatus.js +48 -48
  425. package/dist/utils/nodeSwap.d.ts +221 -0
  426. package/dist/utils/nodeSwap.js +680 -0
  427. package/dist/utils/nodeTypes.d.ts +1 -1
  428. package/dist/utils/nodeTypes.js +20 -21
  429. package/dist/utils/nodeWrapper.d.ts +7 -7
  430. package/dist/utils/nodeWrapper.js +19 -21
  431. package/dist/utils/performanceUtils.d.ts +1 -1
  432. package/dist/utils/performanceUtils.js +1 -2
  433. package/dist/utils/portUtils.d.ts +2 -2
  434. package/dist/utils/portUtils.js +1 -1
  435. package/dist/utils/sanitize.js +1 -1
  436. package/dist/utils/uischema.d.ts +2 -2
  437. package/dist/utils/uischema.js +8 -8
  438. package/dist/utils/validation.js +8 -8
  439. package/package.json +12 -11
  440. package/dist/helpers/nodeLayoutHelper.d.ts +0 -14
  441. package/dist/helpers/nodeLayoutHelper.js +0 -19
@@ -9,19 +9,19 @@
9
9
  *
10
10
  * Works with both built-in types and custom registered types.
11
11
  */
12
- import { nodeComponentRegistry } from "../registry/nodeComponentRegistry.js";
13
- import { resolveBuiltinAlias, isBuiltinType, } from "../registry/builtinNodes.js";
12
+ import { nodeComponentRegistry } from '../registry/nodeComponentRegistry.js';
13
+ import { resolveBuiltinAlias, isBuiltinType } from '../registry/builtinNodes.js';
14
14
  /**
15
15
  * Display names for built-in node types.
16
16
  */
17
17
  const TYPE_DISPLAY_NAMES = {
18
- note: "Note (sticky note style)",
19
- simple: "Simple (compact layout)",
20
- square: "Square (geometric layout)",
21
- tool: "Tool (specialized for agent tools)",
22
- gateway: "Gateway (branching control flow)",
23
- terminal: "Terminal (start/end/exit)",
24
- default: "Default (standard workflow node)",
18
+ note: 'Note (sticky note style)',
19
+ simple: 'Simple (compact layout)',
20
+ square: 'Square (geometric layout)',
21
+ tool: 'Tool (specialized for agent tools)',
22
+ gateway: 'Gateway (branching control flow)',
23
+ terminal: 'Terminal (start/end/exit)',
24
+ default: 'Default (standard workflow node)'
25
25
  };
26
26
  /**
27
27
  * Gets the SvelteFlow component name for a given NodeType.
@@ -38,7 +38,7 @@ export function getComponentNameForNodeType(nodeType) {
38
38
  return resolvedType;
39
39
  }
40
40
  // Unknown type - return workflowNode as default
41
- return "workflowNode";
41
+ return 'workflowNode';
42
42
  }
43
43
  /**
44
44
  * Gets the available node types for a given NodeMetadata.
@@ -54,7 +54,7 @@ export function getAvailableNodeTypes(metadata) {
54
54
  if (metadata.type) {
55
55
  return [metadata.type];
56
56
  }
57
- return ["default"];
57
+ return ['default'];
58
58
  }
59
59
  /**
60
60
  * Gets the primary (default) node type for a given NodeMetadata.
@@ -92,8 +92,7 @@ export function resolveNodeType(metadata, configNodeType) {
92
92
  return configNodeType;
93
93
  }
94
94
  // Check if it's a registered custom type
95
- if (nodeComponentRegistry.has(configNodeType) ||
96
- nodeComponentRegistry.has(resolvedConfig)) {
95
+ if (nodeComponentRegistry.has(configNodeType) || nodeComponentRegistry.has(resolvedConfig)) {
97
96
  return configNodeType;
98
97
  }
99
98
  }
@@ -172,7 +171,7 @@ export function getNodeTypeOneOfOptions(metadata, includeCustomTypes = false) {
172
171
  // Optionally include all registered custom types
173
172
  if (includeCustomTypes) {
174
173
  const registrations = nodeComponentRegistry.filter({
175
- predicate: (reg) => !isBuiltinType(reg.type) && !includedTypes.has(reg.type),
174
+ predicate: (reg) => !isBuiltinType(reg.type) && !includedTypes.has(reg.type)
176
175
  });
177
176
  for (const reg of registrations) {
178
177
  options.push({ const: reg.type, title: reg.displayName });
@@ -195,11 +194,11 @@ export function createNodeTypeConfigProperty(metadata, defaultType) {
195
194
  const oneOf = getNodeTypeOneOfOptions(metadata);
196
195
  const primaryType = defaultType ?? getPrimaryNodeType(metadata);
197
196
  return {
198
- type: "string",
199
- title: "Node Type",
200
- description: "Choose the visual representation for this node",
197
+ type: 'string',
198
+ title: 'Node Type',
199
+ description: 'Choose the visual representation for this node',
201
200
  default: primaryType,
202
- oneOf,
201
+ oneOf
203
202
  };
204
203
  }
205
204
  /**
@@ -227,12 +226,12 @@ export function getAllNodeTypes() {
227
226
  */
228
227
  function formatTypeName(type) {
229
228
  // Handle namespaced types (e.g., "mylib:fancy" -> "Mylib: Fancy")
230
- if (type.includes(":")) {
231
- const [namespace, name] = type.split(":");
229
+ if (type.includes(':')) {
230
+ const [namespace, name] = type.split(':');
232
231
  return `${capitalize(namespace)}: ${capitalize(name)}`;
233
232
  }
234
233
  // Capitalize and add spaces for camelCase
235
- return capitalize(type.replace(/([A-Z])/g, " $1").trim());
234
+ return capitalize(type.replace(/([A-Z])/g, ' $1').trim());
236
235
  }
237
236
  /**
238
237
  * Capitalize the first letter of a string.
@@ -2,13 +2,13 @@
2
2
  * Node Wrapper Utilities
3
3
  * Provides utilities for wrapping nodes with status overlays
4
4
  */
5
- import type { NodeExecutionInfo } from "../types/index.js";
5
+ import type { NodeExecutionInfo } from '../types/index.js';
6
6
  /**
7
7
  * Configuration for node status overlay
8
8
  */
9
9
  export interface NodeStatusConfig {
10
- position?: "top-left" | "top-right" | "bottom-left" | "bottom-right";
11
- size?: "sm" | "md" | "lg";
10
+ position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
11
+ size?: 'sm' | 'md' | 'lg';
12
12
  showDetails?: boolean;
13
13
  }
14
14
  /**
@@ -21,8 +21,8 @@ export declare const DEFAULT_NODE_STATUS_CONFIG: NodeStatusConfig;
21
21
  export declare function createNodeWrapperConfig(nodeId: string, executionInfo?: NodeExecutionInfo, config?: NodeStatusConfig): {
22
22
  nodeId: string;
23
23
  executionInfo?: NodeExecutionInfo;
24
- statusPosition: NodeStatusConfig["position"];
25
- statusSize: NodeStatusConfig["size"];
24
+ statusPosition: NodeStatusConfig['position'];
25
+ statusSize: NodeStatusConfig['size'];
26
26
  showStatusDetails: boolean;
27
27
  };
28
28
  /**
@@ -32,8 +32,8 @@ export declare function shouldShowNodeStatus(executionInfo?: NodeExecutionInfo):
32
32
  /**
33
33
  * Get optimal status position based on node type
34
34
  */
35
- export declare function getOptimalStatusPosition(nodeType: string): NodeStatusConfig["position"];
35
+ export declare function getOptimalStatusPosition(nodeType: string): NodeStatusConfig['position'];
36
36
  /**
37
37
  * Get optimal status size based on node type
38
38
  */
39
- export declare function getOptimalStatusSize(nodeType: string): NodeStatusConfig["size"];
39
+ export declare function getOptimalStatusSize(nodeType: string): NodeStatusConfig['size'];
@@ -6,9 +6,9 @@
6
6
  * Default configuration for node status overlays
7
7
  */
8
8
  export const DEFAULT_NODE_STATUS_CONFIG = {
9
- position: "top-right",
10
- size: "md",
11
- showDetails: true,
9
+ position: 'top-right',
10
+ size: 'md',
11
+ showDetails: true
12
12
  };
13
13
  /**
14
14
  * Create a node wrapper configuration
@@ -19,7 +19,7 @@ export function createNodeWrapperConfig(nodeId, executionInfo, config = {}) {
19
19
  executionInfo,
20
20
  statusPosition: config.position || DEFAULT_NODE_STATUS_CONFIG.position,
21
21
  statusSize: config.size || DEFAULT_NODE_STATUS_CONFIG.size,
22
- showStatusDetails: config.showDetails ?? DEFAULT_NODE_STATUS_CONFIG.showDetails ?? true,
22
+ showStatusDetails: config.showDetails ?? DEFAULT_NODE_STATUS_CONFIG.showDetails ?? true
23
23
  };
24
24
  }
25
25
  /**
@@ -28,23 +28,21 @@ export function createNodeWrapperConfig(nodeId, executionInfo, config = {}) {
28
28
  export function shouldShowNodeStatus(executionInfo) {
29
29
  if (!executionInfo)
30
30
  return false;
31
- return (executionInfo.status !== "idle" ||
32
- executionInfo.executionCount > 0 ||
33
- executionInfo.isExecuting);
31
+ return (executionInfo.status !== 'idle' || executionInfo.executionCount > 0 || executionInfo.isExecuting);
34
32
  }
35
33
  /**
36
34
  * Get optimal status position based on node type
37
35
  */
38
36
  export function getOptimalStatusPosition(nodeType) {
39
37
  switch (nodeType) {
40
- case "tool":
41
- return "top-left";
42
- case "note":
43
- return "bottom-right";
44
- case "simple":
45
- case "square":
38
+ case 'tool':
39
+ return 'top-left';
40
+ case 'note':
41
+ return 'bottom-right';
42
+ case 'simple':
43
+ case 'square':
46
44
  default:
47
- return "top-right";
45
+ return 'top-right';
48
46
  }
49
47
  }
50
48
  /**
@@ -52,13 +50,13 @@ export function getOptimalStatusPosition(nodeType) {
52
50
  */
53
51
  export function getOptimalStatusSize(nodeType) {
54
52
  switch (nodeType) {
55
- case "tool":
56
- return "sm";
57
- case "note":
58
- return "sm";
59
- case "simple":
60
- case "square":
53
+ case 'tool':
54
+ return 'sm';
55
+ case 'note':
56
+ return 'sm';
57
+ case 'simple':
58
+ case 'square':
61
59
  default:
62
- return "md";
60
+ return 'md';
63
61
  }
64
62
  }
@@ -2,7 +2,7 @@
2
2
  * Performance Utilities
3
3
  * Helper functions for optimizing performance in the FlowDrop app
4
4
  */
5
- import type { WorkflowNode, WorkflowEdge } from "../types/index.js";
5
+ import type { WorkflowNode, WorkflowEdge } from '../types/index.js';
6
6
  /**
7
7
  * Fast shallow comparison for workflow nodes
8
8
  * Avoids expensive JSON.stringify operations
@@ -16,8 +16,7 @@ export function areNodeArraysEqual(nodes1, nodes2) {
16
16
  if (node1?.id !== node2?.id)
17
17
  return false;
18
18
  // Check position (most common change during drag)
19
- if (node1?.position?.x !== node2?.position?.x ||
20
- node1?.position?.y !== node2?.position?.y) {
19
+ if (node1?.position?.x !== node2?.position?.x || node1?.position?.y !== node2?.position?.y) {
21
20
  return false;
22
21
  }
23
22
  // Check selected state
@@ -1,4 +1,4 @@
1
- import type { NodePort } from "../types/index.js";
1
+ import type { NodePort } from '../types/index.js';
2
2
  /**
3
3
  * Sort ports by an ordered array of port IDs.
4
4
  * Ports not listed appear at the end in their original order.
@@ -18,7 +18,7 @@ export declare function getPortTop(index: number, count: number): number;
18
18
  * 2. `hideUnconnectedHandles` — hide if not present in the connected handles set
19
19
  * 3. Default — visible
20
20
  */
21
- export declare function isPortVisible(port: NodePort, direction: "input" | "output", hiddenPorts: {
21
+ export declare function isPortVisible(port: NodePort, direction: 'input' | 'output', hiddenPorts: {
22
22
  inputs?: string[];
23
23
  outputs?: string[];
24
24
  }, hideUnconnectedHandles: boolean, connectedHandles: Set<string>, nodeId: string | undefined): boolean;
@@ -32,7 +32,7 @@ export function getPortTop(index, count) {
32
32
  * 3. Default — visible
33
33
  */
34
34
  export function isPortVisible(port, direction, hiddenPorts, hideUnconnectedHandles, connectedHandles, nodeId) {
35
- const hiddenList = direction === "input" ? hiddenPorts.inputs : hiddenPorts.outputs;
35
+ const hiddenList = direction === 'input' ? hiddenPorts.inputs : hiddenPorts.outputs;
36
36
  if (hiddenList?.includes(port.id))
37
37
  return false;
38
38
  if (hideUnconnectedHandles) {
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * @module utils/sanitize
9
9
  */
10
- import DOMPurify from "dompurify";
10
+ import DOMPurify from 'dompurify';
11
11
  /**
12
12
  * Sanitize an HTML string to prevent XSS attacks.
13
13
  *
@@ -4,8 +4,8 @@
4
4
  * Functions for resolving JSON Pointer scope strings to property keys,
5
5
  * and for generating default UISchema from a ConfigSchema.
6
6
  */
7
- import type { ConfigSchema } from "../types/index.js";
8
- import type { UISchemaElement, UISchemaVerticalLayout } from "../types/uischema.js";
7
+ import type { ConfigSchema } from '../types/index.js';
8
+ import type { UISchemaElement, UISchemaVerticalLayout } from '../types/uischema.js';
9
9
  /**
10
10
  * Resolve a JSON Pointer scope string to a property key.
11
11
  *
@@ -20,13 +20,13 @@
20
20
  * ```
21
21
  */
22
22
  export function resolveScopeToKey(scope) {
23
- const prefix = "#/properties/";
23
+ const prefix = '#/properties/';
24
24
  if (!scope.startsWith(prefix)) {
25
25
  return null;
26
26
  }
27
27
  const key = scope.slice(prefix.length);
28
28
  // Only support single-level property references (no nested paths)
29
- if (key.includes("/") || key.length === 0) {
29
+ if (key.includes('/') || key.length === 0) {
30
30
  return null;
31
31
  }
32
32
  return key;
@@ -53,12 +53,12 @@ export function keyToScope(key) {
53
53
  */
54
54
  export function generateDefaultUISchema(schema) {
55
55
  const elements = Object.keys(schema.properties).map((key) => ({
56
- type: "Control",
57
- scope: keyToScope(key),
56
+ type: 'Control',
57
+ scope: keyToScope(key)
58
58
  }));
59
59
  return {
60
- type: "VerticalLayout",
61
- elements,
60
+ type: 'VerticalLayout',
61
+ elements
62
62
  };
63
63
  }
64
64
  /**
@@ -72,12 +72,12 @@ export function generateDefaultUISchema(schema) {
72
72
  export function collectReferencedKeys(element) {
73
73
  const keys = new Set();
74
74
  function walk(el) {
75
- if (el.type === "Control") {
75
+ if (el.type === 'Control') {
76
76
  const key = resolveScopeToKey(el.scope);
77
77
  if (key)
78
78
  keys.add(key);
79
79
  }
80
- else if (el.type === "VerticalLayout" || el.type === "Group") {
80
+ else if (el.type === 'VerticalLayout' || el.type === 'Group') {
81
81
  for (const child of el.elements) {
82
82
  walk(child);
83
83
  }
@@ -19,32 +19,32 @@
19
19
  * @returns A `WorkflowValidationResult` indicating whether the data is valid.
20
20
  */
21
21
  export function validateWorkflowData(data) {
22
- if (data === null || typeof data !== "object" || Array.isArray(data)) {
23
- return { valid: false, error: "Workflow must be a JSON object." };
22
+ if (data === null || typeof data !== 'object' || Array.isArray(data)) {
23
+ return { valid: false, error: 'Workflow must be a JSON object.' };
24
24
  }
25
25
  const obj = data;
26
- if (typeof obj.id !== "string" || obj.id.trim() === "") {
26
+ if (typeof obj.id !== 'string' || obj.id.trim() === '') {
27
27
  return {
28
28
  valid: false,
29
- error: 'Workflow JSON must contain a non-empty string "id" field.',
29
+ error: 'Workflow JSON must contain a non-empty string "id" field.'
30
30
  };
31
31
  }
32
- if (typeof obj.name !== "string" || obj.name.trim() === "") {
32
+ if (typeof obj.name !== 'string' || obj.name.trim() === '') {
33
33
  return {
34
34
  valid: false,
35
- error: 'Workflow JSON must contain a non-empty string "name" field.',
35
+ error: 'Workflow JSON must contain a non-empty string "name" field.'
36
36
  };
37
37
  }
38
38
  if (!Array.isArray(obj.nodes)) {
39
39
  return {
40
40
  valid: false,
41
- error: 'Workflow JSON must contain a "nodes" array.',
41
+ error: 'Workflow JSON must contain a "nodes" array.'
42
42
  };
43
43
  }
44
44
  if (!Array.isArray(obj.edges)) {
45
45
  return {
46
46
  valid: false,
47
- error: 'Workflow JSON must contain an "edges" array.',
47
+ error: 'Workflow JSON must contain an "edges" array.'
48
48
  };
49
49
  }
50
50
  return { valid: true };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "A drop-in visual workflow editor for any web application. You own the backend. You own the data. You own the orchestration.",
4
4
  "license": "MIT",
5
5
  "private": false,
6
- "version": "1.4.0",
6
+ "version": "1.6.0",
7
7
  "author": "Shibin Das (D34dMan)",
8
8
  "bugs": {
9
9
  "url": "https://github.com/flowdrop-io/flowdrop/issues"
@@ -46,7 +46,8 @@
46
46
  "files": [
47
47
  "dist",
48
48
  "!dist/**/*.test.*",
49
- "!dist/**/*.spec.*"
49
+ "!dist/**/*.spec.*",
50
+ "!dist/**/*.map"
50
51
  ],
51
52
  "sideEffects": [
52
53
  "**/*.css",
@@ -112,6 +113,11 @@
112
113
  "./schema": {
113
114
  "default": "./dist/schemas/v1/workflow.schema.json"
114
115
  },
116
+ "./chat": {
117
+ "types": "./dist/chat/index.d.ts",
118
+ "svelte": "./dist/chat/index.js",
119
+ "default": "./dist/chat/index.js"
120
+ },
115
121
  "./schema/v1": {
116
122
  "default": "./dist/schemas/v1/workflow.schema.json"
117
123
  }
@@ -209,10 +215,10 @@
209
215
  "eslint-plugin-storybook": "^10.2.15",
210
216
  "eslint-plugin-svelte": "^3.0.0",
211
217
  "globals": "^16.0.0",
212
- "happy-dom": "^20.0.11",
218
+ "happy-dom": "^20.8.9",
213
219
  "msw": "^2.12.7",
214
220
  "npm-watch": "^0.13.0",
215
- "picomatch": "^4.0.3",
221
+ "picomatch": "^4.0.4",
216
222
  "playwright": "^1.53.0",
217
223
  "prettier": "^3.4.2",
218
224
  "prettier-plugin-svelte": "^3.3.3",
@@ -224,16 +230,11 @@
224
230
  "terser": "^5.43.1",
225
231
  "typescript": "^5.0.0",
226
232
  "typescript-eslint": "^8.20.0",
227
- "vite": "^6.2.6",
233
+ "vite": "^6.4.2",
228
234
  "vite-plugin-devtools-json": "^0.2.1",
229
235
  "vitest": "^3.2.3",
230
236
  "vitest-browser-svelte": "^0.1.0",
231
- "yaml": "^2.8.2"
232
- },
233
- "overrides": {
234
- "@sveltejs/kit": {
235
- "cookie": "0.7.2"
236
- }
237
+ "yaml": "^2.8.3"
237
238
  },
238
239
  "engines": {
239
240
  "node": ">=18"
@@ -1,14 +0,0 @@
1
- /**
2
- * Node layout helper
3
- * Utilities for node dimensions and port positions aligned to a 10px grid.
4
- * Used so edge connection points (handle centers) land on multiples of 10.
5
- */
6
- /**
7
- * Y position (in px) for the center of a port handle in a list-based node
8
- * (WorkflowNode, GatewayNode). Layout: header 60px, then section title row 20px,
9
- * then port rows 20px each. First port center = 90px, then 110, 130, … (multiples of 10).
10
- *
11
- * @param portIndex - Zero-based index in the combined list (section title counts as row 0; first port is index 0)
12
- * @returns Y coordinate in px for the handle center (use with transform: translateY(-50%))
13
- */
14
- export declare function getPortCenterY(portIndex: number): number;
@@ -1,19 +0,0 @@
1
- /**
2
- * Node layout helper
3
- * Utilities for node dimensions and port positions aligned to a 10px grid.
4
- * Used so edge connection points (handle centers) land on multiples of 10.
5
- */
6
- /**
7
- * Y position (in px) for the center of a port handle in a list-based node
8
- * (WorkflowNode, GatewayNode). Layout: header 60px, then section title row 20px,
9
- * then port rows 20px each. First port center = 90px, then 110, 130, … (multiples of 10).
10
- *
11
- * @param portIndex - Zero-based index in the combined list (section title counts as row 0; first port is index 0)
12
- * @returns Y coordinate in px for the handle center (use with transform: translateY(-50%))
13
- */
14
- export function getPortCenterY(portIndex) {
15
- const headerHeight = 60;
16
- const sectionTitleHeight = 20;
17
- const rowHeight = 20;
18
- return headerHeight + sectionTitleHeight + (portIndex + 0.5) * rowHeight;
19
- }