@flowdrop/flowdrop 1.0.0 → 1.1.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 (388) hide show
  1. package/README.md +50 -50
  2. package/dist/adapters/WorkflowAdapter.d.ts +1 -1
  3. package/dist/adapters/WorkflowAdapter.js +25 -25
  4. package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +2 -2
  5. package/dist/adapters/agentspec/AgentSpecAdapter.js +133 -122
  6. package/dist/adapters/agentspec/agentAdapter.d.ts +2 -2
  7. package/dist/adapters/agentspec/agentAdapter.js +10 -10
  8. package/dist/adapters/agentspec/autoLayout.d.ts +1 -1
  9. package/dist/adapters/agentspec/autoLayout.js +2 -2
  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 +22 -20
  18. package/dist/api/enhanced-client.d.ts +3 -3
  19. package/dist/api/enhanced-client.js +73 -72
  20. package/dist/components/App.svelte +1081 -961
  21. package/dist/components/App.svelte.d.ts +9 -6
  22. package/dist/components/CanvasBanner.stories.svelte +23 -20
  23. package/dist/components/CanvasBanner.stories.svelte.d.ts +1 -1
  24. package/dist/components/CanvasBanner.svelte +46 -46
  25. package/dist/components/ConfigForm.svelte +1164 -1065
  26. package/dist/components/ConfigForm.svelte.d.ts +2 -2
  27. package/dist/components/ConfigModal.svelte +180 -180
  28. package/dist/components/ConfigModal.svelte.d.ts +1 -1
  29. package/dist/components/ConfigPanel.stories.svelte +35 -35
  30. package/dist/components/ConfigPanel.stories.svelte.d.ts +1 -1
  31. package/dist/components/ConfigPanel.svelte +178 -167
  32. package/dist/components/ConfigPanel.svelte.d.ts +1 -1
  33. package/dist/components/ConnectionLine.svelte +25 -25
  34. package/dist/components/EdgeRefresher.svelte +26 -26
  35. package/dist/components/FlowDropEdge.stories.svelte +197 -0
  36. package/dist/components/FlowDropEdge.stories.svelte.d.ts +26 -0
  37. package/dist/components/FlowDropEdge.svelte +168 -0
  38. package/dist/components/FlowDropEdge.svelte.d.ts +4 -0
  39. package/dist/components/FlowDropZone.svelte +63 -60
  40. package/dist/components/FlowDropZone.svelte.d.ts +1 -1
  41. package/dist/components/LoadingSpinner.stories.svelte +19 -19
  42. package/dist/components/LoadingSpinner.stories.svelte.d.ts +1 -1
  43. package/dist/components/LoadingSpinner.svelte +21 -21
  44. package/dist/components/LoadingSpinner.svelte.d.ts +1 -1
  45. package/dist/components/Logo.stories.svelte +13 -13
  46. package/dist/components/Logo.stories.svelte.d.ts +1 -1
  47. package/dist/components/Logo.svelte +101 -95
  48. package/dist/components/LogsSidebar.svelte +553 -546
  49. package/dist/components/LogsSidebar.svelte.d.ts +1 -1
  50. package/dist/components/MarkdownDisplay.stories.svelte +29 -23
  51. package/dist/components/MarkdownDisplay.stories.svelte.d.ts +1 -1
  52. package/dist/components/MarkdownDisplay.svelte +16 -14
  53. package/dist/components/Navbar.stories.svelte +43 -38
  54. package/dist/components/Navbar.stories.svelte.d.ts +1 -1
  55. package/dist/components/Navbar.svelte +760 -706
  56. package/dist/components/Navbar.svelte.d.ts +1 -1
  57. package/dist/components/NodeSidebar.svelte +900 -746
  58. package/dist/components/NodeSidebar.svelte.d.ts +3 -1
  59. package/dist/components/NodeStatusOverlay.stories.svelte +82 -70
  60. package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +1 -1
  61. package/dist/components/NodeStatusOverlay.svelte +295 -280
  62. package/dist/components/NodeStatusOverlay.svelte.d.ts +3 -3
  63. package/dist/components/PipelineStatus.svelte +326 -300
  64. package/dist/components/PipelineStatus.svelte.d.ts +4 -4
  65. package/dist/components/PortCoordinateTracker.svelte +49 -47
  66. package/dist/components/PortCoordinateTracker.svelte.d.ts +1 -1
  67. package/dist/components/ReadOnlyDetails.svelte +156 -156
  68. package/dist/components/SchemaForm.stories.svelte +106 -98
  69. package/dist/components/SchemaForm.stories.svelte.d.ts +1 -1
  70. package/dist/components/SchemaForm.svelte +490 -463
  71. package/dist/components/SchemaForm.svelte.d.ts +2 -2
  72. package/dist/components/SettingsModal.svelte +226 -223
  73. package/dist/components/SettingsModal.svelte.d.ts +1 -1
  74. package/dist/components/SettingsPanel.svelte +637 -601
  75. package/dist/components/SettingsPanel.svelte.d.ts +1 -1
  76. package/dist/components/StatusIcon.stories.svelte +62 -49
  77. package/dist/components/StatusIcon.stories.svelte.d.ts +1 -1
  78. package/dist/components/StatusIcon.svelte +87 -87
  79. package/dist/components/StatusIcon.svelte.d.ts +2 -2
  80. package/dist/components/StatusLabel.stories.svelte +12 -12
  81. package/dist/components/StatusLabel.stories.svelte.d.ts +1 -1
  82. package/dist/components/StatusLabel.svelte +19 -19
  83. package/dist/components/ThemeToggle.stories.svelte +16 -16
  84. package/dist/components/ThemeToggle.stories.svelte.d.ts +1 -1
  85. package/dist/components/ThemeToggle.svelte +180 -169
  86. package/dist/components/ThemeToggle.svelte.d.ts +1 -1
  87. package/dist/components/UniversalNode.svelte +150 -138
  88. package/dist/components/UniversalNode.svelte.d.ts +3 -3
  89. package/dist/components/WorkflowEditor.svelte +1069 -1007
  90. package/dist/components/WorkflowEditor.svelte.d.ts +4 -4
  91. package/dist/components/form/FormArray.svelte +1034 -973
  92. package/dist/components/form/FormArray.svelte.d.ts +1 -1
  93. package/dist/components/form/FormAutocomplete.svelte +1021 -978
  94. package/dist/components/form/FormAutocomplete.svelte.d.ts +1 -1
  95. package/dist/components/form/FormCheckboxGroup.stories.svelte +23 -20
  96. package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +1 -1
  97. package/dist/components/form/FormCheckboxGroup.svelte +136 -136
  98. package/dist/components/form/FormCodeEditor.svelte +452 -434
  99. package/dist/components/form/FormField.svelte +366 -355
  100. package/dist/components/form/FormField.svelte.d.ts +2 -2
  101. package/dist/components/form/FormFieldLight.svelte +400 -384
  102. package/dist/components/form/FormFieldLight.svelte.d.ts +1 -1
  103. package/dist/components/form/FormFieldWrapper.stories.svelte +42 -42
  104. package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +1 -1
  105. package/dist/components/form/FormFieldWrapper.svelte +100 -93
  106. package/dist/components/form/FormFieldWrapper.svelte.d.ts +1 -1
  107. package/dist/components/form/FormFieldset.svelte +108 -108
  108. package/dist/components/form/FormFieldset.svelte.d.ts +2 -2
  109. package/dist/components/form/FormMarkdownEditor.svelte +758 -725
  110. package/dist/components/form/FormNumberField.stories.svelte +25 -25
  111. package/dist/components/form/FormNumberField.stories.svelte.d.ts +1 -1
  112. package/dist/components/form/FormNumberField.svelte +88 -88
  113. package/dist/components/form/FormRangeField.stories.svelte +20 -20
  114. package/dist/components/form/FormRangeField.stories.svelte.d.ts +1 -1
  115. package/dist/components/form/FormRangeField.svelte +234 -226
  116. package/dist/components/form/FormSelect.stories.svelte +38 -38
  117. package/dist/components/form/FormSelect.stories.svelte.d.ts +1 -1
  118. package/dist/components/form/FormSelect.svelte +101 -101
  119. package/dist/components/form/FormSelect.svelte.d.ts +1 -1
  120. package/dist/components/form/FormTemplateEditor.svelte +847 -798
  121. package/dist/components/form/FormTemplateEditor.svelte.d.ts +1 -1
  122. package/dist/components/form/FormTextField.stories.svelte +29 -23
  123. package/dist/components/form/FormTextField.stories.svelte.d.ts +1 -1
  124. package/dist/components/form/FormTextField.svelte +68 -68
  125. package/dist/components/form/FormTextarea.stories.svelte +28 -25
  126. package/dist/components/form/FormTextarea.stories.svelte.d.ts +1 -1
  127. package/dist/components/form/FormTextarea.svelte +74 -74
  128. package/dist/components/form/FormToggle.stories.svelte +23 -20
  129. package/dist/components/form/FormToggle.stories.svelte.d.ts +1 -1
  130. package/dist/components/form/FormToggle.svelte +98 -98
  131. package/dist/components/form/FormUISchemaRenderer.svelte +120 -113
  132. package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +3 -3
  133. package/dist/components/form/index.d.ts +19 -19
  134. package/dist/components/form/index.js +18 -18
  135. package/dist/components/form/templateAutocomplete.d.ts +2 -2
  136. package/dist/components/form/templateAutocomplete.js +64 -55
  137. package/dist/components/form/types.d.ts +6 -6
  138. package/dist/components/form/types.js +9 -4
  139. package/dist/components/icons/AlertCircleIcon.svelte +11 -0
  140. package/dist/components/icons/AlertCircleIcon.svelte.d.ts +26 -0
  141. package/dist/components/icons/CogIcon.svelte +11 -0
  142. package/dist/components/icons/CogIcon.svelte.d.ts +26 -0
  143. package/dist/components/interrupt/ChoicePrompt.stories.svelte +54 -38
  144. package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +1 -1
  145. package/dist/components/interrupt/ChoicePrompt.svelte +407 -383
  146. package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +1 -1
  147. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +48 -48
  148. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +1 -1
  149. package/dist/components/interrupt/ConfirmationPrompt.svelte +280 -274
  150. package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +1 -1
  151. package/dist/components/interrupt/FormPrompt.svelte +223 -218
  152. package/dist/components/interrupt/FormPrompt.svelte.d.ts +1 -1
  153. package/dist/components/interrupt/InterruptBubble.svelte +617 -583
  154. package/dist/components/interrupt/InterruptBubble.svelte.d.ts +2 -2
  155. package/dist/components/interrupt/ReviewPrompt.stories.svelte +66 -56
  156. package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +1 -1
  157. package/dist/components/interrupt/ReviewPrompt.svelte +861 -841
  158. package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +1 -1
  159. package/dist/components/interrupt/TextInputPrompt.stories.svelte +38 -33
  160. package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +1 -1
  161. package/dist/components/interrupt/TextInputPrompt.svelte +333 -328
  162. package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +1 -1
  163. package/dist/components/interrupt/index.d.ts +5 -5
  164. package/dist/components/interrupt/index.js +5 -5
  165. package/dist/components/layouts/MainLayout.svelte +724 -691
  166. package/dist/components/layouts/MainLayout.svelte.d.ts +6 -6
  167. package/dist/components/nodes/GatewayNode.stories.svelte +100 -99
  168. package/dist/components/nodes/GatewayNode.svelte +605 -571
  169. package/dist/components/nodes/GatewayNode.svelte.d.ts +3 -3
  170. package/dist/components/nodes/IdeaNode.stories.svelte +44 -43
  171. package/dist/components/nodes/IdeaNode.svelte +451 -437
  172. package/dist/components/nodes/IdeaNode.svelte.d.ts +1 -1
  173. package/dist/components/nodes/NotesNode.stories.svelte +65 -64
  174. package/dist/components/nodes/NotesNode.svelte +380 -369
  175. package/dist/components/nodes/NotesNode.svelte.d.ts +1 -1
  176. package/dist/components/nodes/SimpleNode.stories.svelte +145 -144
  177. package/dist/components/nodes/SimpleNode.svelte +486 -424
  178. package/dist/components/nodes/SimpleNode.svelte.d.ts +1 -1
  179. package/dist/components/nodes/SquareNode.stories.svelte +73 -73
  180. package/dist/components/nodes/SquareNode.svelte +439 -380
  181. package/dist/components/nodes/SquareNode.svelte.d.ts +1 -1
  182. package/dist/components/nodes/TerminalNode.stories.svelte +13 -13
  183. package/dist/components/nodes/TerminalNode.svelte +709 -670
  184. package/dist/components/nodes/TerminalNode.svelte.d.ts +1 -1
  185. package/dist/components/nodes/ToolNode.stories.svelte +181 -180
  186. package/dist/components/nodes/ToolNode.svelte +505 -447
  187. package/dist/components/nodes/ToolNode.svelte.d.ts +1 -1
  188. package/dist/components/nodes/WorkflowNode.stories.svelte +70 -46
  189. package/dist/components/nodes/WorkflowNode.svelte +621 -551
  190. package/dist/components/nodes/WorkflowNode.svelte.d.ts +3 -3
  191. package/dist/components/playground/ChatPanel.svelte +945 -889
  192. package/dist/components/playground/ExecutionLogs.svelte +495 -472
  193. package/dist/components/playground/InputCollector.svelte +449 -428
  194. package/dist/components/playground/MessageBubble.stories.svelte +47 -47
  195. package/dist/components/playground/MessageBubble.stories.svelte.d.ts +1 -1
  196. package/dist/components/playground/MessageBubble.svelte +626 -610
  197. package/dist/components/playground/MessageBubble.svelte.d.ts +1 -1
  198. package/dist/components/playground/Playground.svelte +1088 -1057
  199. package/dist/components/playground/Playground.svelte.d.ts +3 -3
  200. package/dist/components/playground/PlaygroundModal.svelte +208 -204
  201. package/dist/components/playground/PlaygroundModal.svelte.d.ts +3 -3
  202. package/dist/components/playground/SessionManager.svelte +527 -521
  203. package/dist/components/playground/SessionManager.svelte.d.ts +1 -1
  204. package/dist/config/agentSpecEndpoints.d.ts +1 -1
  205. package/dist/config/agentSpecEndpoints.js +20 -20
  206. package/dist/config/constants.d.ts +8 -0
  207. package/dist/config/constants.js +10 -2
  208. package/dist/config/defaultCategories.d.ts +1 -1
  209. package/dist/config/defaultCategories.js +86 -86
  210. package/dist/config/defaultPortConfig.d.ts +1 -1
  211. package/dist/config/defaultPortConfig.js +144 -144
  212. package/dist/config/endpoints.d.ts +4 -4
  213. package/dist/config/endpoints.js +65 -65
  214. package/dist/config/runtimeConfig.d.ts +2 -2
  215. package/dist/config/runtimeConfig.js +8 -8
  216. package/dist/core/index.d.ts +63 -59
  217. package/dist/core/index.js +35 -33
  218. package/dist/display/index.d.ts +2 -2
  219. package/dist/display/index.js +2 -2
  220. package/dist/editor/index.d.ts +62 -62
  221. package/dist/editor/index.js +53 -53
  222. package/dist/form/code.d.ts +5 -5
  223. package/dist/form/code.js +14 -14
  224. package/dist/form/fieldRegistry.d.ts +3 -3
  225. package/dist/form/fieldRegistry.js +11 -9
  226. package/dist/form/full.d.ts +8 -8
  227. package/dist/form/full.js +9 -9
  228. package/dist/form/index.d.ts +18 -18
  229. package/dist/form/index.js +16 -16
  230. package/dist/form/markdown.d.ts +4 -4
  231. package/dist/form/markdown.js +8 -8
  232. package/dist/helpers/proximityConnect.d.ts +3 -3
  233. package/dist/helpers/proximityConnect.js +34 -32
  234. package/dist/helpers/workflowEditorHelper.d.ts +5 -5
  235. package/dist/helpers/workflowEditorHelper.js +108 -96
  236. package/dist/index.d.ts +6 -6
  237. package/dist/index.js +6 -6
  238. package/dist/mocks/app-environment.js +2 -2
  239. package/dist/mocks/app-forms.js +9 -9
  240. package/dist/mocks/app-navigation.js +11 -11
  241. package/dist/mocks/app-stores.js +8 -8
  242. package/dist/playground/index.d.ts +19 -19
  243. package/dist/playground/index.js +16 -16
  244. package/dist/playground/mount.d.ts +3 -3
  245. package/dist/playground/mount.js +24 -24
  246. package/dist/registry/builtinFormats.js +13 -13
  247. package/dist/registry/builtinNodes.d.ts +2 -2
  248. package/dist/registry/builtinNodes.js +77 -77
  249. package/dist/registry/index.d.ts +4 -4
  250. package/dist/registry/index.js +4 -4
  251. package/dist/registry/nodeComponentRegistry.d.ts +8 -8
  252. package/dist/registry/nodeComponentRegistry.js +11 -9
  253. package/dist/registry/plugin.d.ts +2 -2
  254. package/dist/registry/plugin.js +11 -11
  255. package/dist/registry/workflowFormatRegistry.d.ts +3 -3
  256. package/dist/registry/workflowFormatRegistry.js +2 -2
  257. package/dist/schema/index.d.ts +1 -1
  258. package/dist/schema/index.js +2 -2
  259. package/dist/schemas/v1/workflow.schema.json +22 -107
  260. package/dist/services/agentSpecExecutionService.d.ts +3 -3
  261. package/dist/services/agentSpecExecutionService.js +59 -55
  262. package/dist/services/api.d.ts +18 -4
  263. package/dist/services/api.js +46 -43
  264. package/dist/services/apiVariableService.d.ts +1 -1
  265. package/dist/services/apiVariableService.js +41 -34
  266. package/dist/services/autoSaveService.js +8 -8
  267. package/dist/services/categoriesApi.d.ts +2 -2
  268. package/dist/services/categoriesApi.js +8 -8
  269. package/dist/services/draftStorage.d.ts +1 -1
  270. package/dist/services/draftStorage.js +11 -11
  271. package/dist/services/dynamicSchemaService.d.ts +1 -1
  272. package/dist/services/dynamicSchemaService.js +41 -39
  273. package/dist/services/globalSave.d.ts +2 -2
  274. package/dist/services/globalSave.js +53 -42
  275. package/dist/services/historyService.d.ts +1 -1
  276. package/dist/services/historyService.js +8 -8
  277. package/dist/services/interruptService.d.ts +1 -1
  278. package/dist/services/interruptService.js +35 -29
  279. package/dist/services/nodeExecutionService.d.ts +1 -1
  280. package/dist/services/nodeExecutionService.js +45 -44
  281. package/dist/services/playgroundService.d.ts +1 -1
  282. package/dist/services/playgroundService.js +29 -29
  283. package/dist/services/portConfigApi.d.ts +2 -2
  284. package/dist/services/portConfigApi.js +8 -8
  285. package/dist/services/settingsService.d.ts +2 -2
  286. package/dist/services/settingsService.js +25 -19
  287. package/dist/services/toastService.d.ts +4 -4
  288. package/dist/services/toastService.js +33 -33
  289. package/dist/services/variableService.d.ts +1 -1
  290. package/dist/services/variableService.js +36 -36
  291. package/dist/services/workflowStorage.d.ts +2 -2
  292. package/dist/services/workflowStorage.js +13 -13
  293. package/dist/settings/index.d.ts +7 -7
  294. package/dist/settings/index.js +6 -6
  295. package/dist/skins/default.d.ts +2 -0
  296. package/dist/skins/default.js +1 -0
  297. package/dist/skins/index.d.ts +13 -0
  298. package/dist/skins/index.js +30 -0
  299. package/dist/skins/slate.d.ts +2 -0
  300. package/dist/skins/slate.js +78 -0
  301. package/dist/stores/categoriesStore.svelte.d.ts +1 -1
  302. package/dist/stores/categoriesStore.svelte.js +5 -5
  303. package/dist/stores/editorStateMachine.svelte.d.ts +2 -2
  304. package/dist/stores/editorStateMachine.svelte.js +65 -33
  305. package/dist/stores/historyStore.svelte.d.ts +4 -4
  306. package/dist/stores/historyStore.svelte.js +4 -4
  307. package/dist/stores/interruptStore.svelte.d.ts +3 -3
  308. package/dist/stores/interruptStore.svelte.js +21 -21
  309. package/dist/stores/playgroundStore.svelte.d.ts +2 -2
  310. package/dist/stores/playgroundStore.svelte.js +25 -18
  311. package/dist/stores/portCoordinateStore.svelte.d.ts +2 -2
  312. package/dist/stores/portCoordinateStore.svelte.js +15 -8
  313. package/dist/stores/settingsStore.svelte.d.ts +2 -2
  314. package/dist/stores/settingsStore.svelte.js +62 -57
  315. package/dist/stores/workflowStore.svelte.d.ts +3 -3
  316. package/dist/stores/workflowStore.svelte.js +50 -47
  317. package/dist/stories/CanvasDecorator.svelte +35 -32
  318. package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
  319. package/dist/stories/EdgeDecorator.svelte +125 -0
  320. package/dist/stories/EdgeDecorator.svelte.d.ts +17 -0
  321. package/dist/stories/NodeDecorator.svelte +59 -53
  322. package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
  323. package/dist/stories/utils.d.ts +2 -2
  324. package/dist/stories/utils.js +105 -67
  325. package/dist/styles/base.css +599 -595
  326. package/dist/styles/toast.css +14 -14
  327. package/dist/styles/tokens.css +409 -378
  328. package/dist/svelte-app.d.ts +9 -9
  329. package/dist/svelte-app.js +39 -39
  330. package/dist/themes/default.d.ts +2 -0
  331. package/dist/themes/default.js +9 -0
  332. package/dist/themes/index.d.ts +13 -0
  333. package/dist/themes/index.js +44 -0
  334. package/dist/themes/minimal.d.ts +2 -0
  335. package/dist/themes/minimal.js +11 -0
  336. package/dist/types/agentspec.d.ts +18 -18
  337. package/dist/types/agentspec.js +2 -2
  338. package/dist/types/auth.d.ts +1 -1
  339. package/dist/types/auth.js +6 -6
  340. package/dist/types/config.d.ts +6 -6
  341. package/dist/types/events.d.ts +2 -2
  342. package/dist/types/events.js +2 -2
  343. package/dist/types/index.d.ts +32 -32
  344. package/dist/types/index.js +6 -6
  345. package/dist/types/interrupt.d.ts +6 -6
  346. package/dist/types/interrupt.js +21 -21
  347. package/dist/types/interruptState.d.ts +12 -12
  348. package/dist/types/interruptState.js +66 -66
  349. package/dist/types/playground.d.ts +7 -7
  350. package/dist/types/playground.js +14 -14
  351. package/dist/types/settings.d.ts +5 -3
  352. package/dist/types/settings.js +25 -18
  353. package/dist/types/skin.d.ts +31 -0
  354. package/dist/types/skin.js +1 -0
  355. package/dist/types/theme.d.ts +35 -0
  356. package/dist/types/theme.js +1 -0
  357. package/dist/types/uischema.d.ts +4 -4
  358. package/dist/types/uischema.js +3 -3
  359. package/dist/utils/colors.d.ts +1 -1
  360. package/dist/utils/colors.js +97 -95
  361. package/dist/utils/config.d.ts +2 -2
  362. package/dist/utils/config.js +48 -48
  363. package/dist/utils/connections.d.ts +2 -2
  364. package/dist/utils/connections.js +15 -15
  365. package/dist/utils/errors.js +3 -3
  366. package/dist/utils/fetchWithAuth.d.ts +1 -1
  367. package/dist/utils/fetchWithAuth.js +2 -2
  368. package/dist/utils/handleIds.d.ts +2 -2
  369. package/dist/utils/handleIds.js +8 -8
  370. package/dist/utils/handlePositioning.d.ts +1 -1
  371. package/dist/utils/handlePositioning.js +2 -2
  372. package/dist/utils/icons.d.ts +1 -1
  373. package/dist/utils/icons.js +74 -74
  374. package/dist/utils/logger.d.ts +1 -1
  375. package/dist/utils/logger.js +7 -7
  376. package/dist/utils/nodeStatus.d.ts +1 -1
  377. package/dist/utils/nodeStatus.js +48 -48
  378. package/dist/utils/nodeTypes.d.ts +1 -1
  379. package/dist/utils/nodeTypes.js +21 -20
  380. package/dist/utils/nodeWrapper.d.ts +7 -7
  381. package/dist/utils/nodeWrapper.js +21 -19
  382. package/dist/utils/performanceUtils.d.ts +1 -1
  383. package/dist/utils/performanceUtils.js +2 -1
  384. package/dist/utils/sanitize.js +1 -1
  385. package/dist/utils/uischema.d.ts +2 -2
  386. package/dist/utils/uischema.js +8 -8
  387. package/dist/utils/validation.js +20 -8
  388. package/package.json +296 -291
@@ -5,310 +5,336 @@
5
5
  -->
6
6
 
7
7
  <script lang="ts">
8
- import { onMount } from 'svelte';
9
- import App from './App.svelte';
10
- import LogsSidebar from './LogsSidebar.svelte';
11
- import { EnhancedFlowDropApiClient } from '../api/enhanced-client.js';
12
- import { createEndpointConfig } from '../config/endpoints.js';
13
- import type { Workflow } from '../types/index.js';
14
- import type { EndpointConfig } from '../config/endpoints.js';
15
- import { logger } from '../utils/logger.js';
16
-
17
- interface Props {
18
- pipelineId: string;
19
- workflow: Workflow;
20
- apiClient?: EnhancedFlowDropApiClient;
21
- baseUrl?: string;
22
- endpointConfig?: EndpointConfig;
23
- onActionsReady?: (
24
- actions: Array<{
25
- label: string;
26
- href: string;
27
- icon?: string;
28
- variant?: 'primary' | 'secondary' | 'outline';
29
- onclick?: (event: Event) => void;
30
- }>
31
- ) => void;
32
- }
33
-
34
- let { pipelineId, workflow, apiClient, baseUrl, endpointConfig, onActionsReady }: Props =
35
- $props();
36
-
37
- // Initialize API client if not provided
38
- // svelte-ignore state_referenced_locally — client created once from props
39
- const client =
40
- apiClient ||
41
- new EnhancedFlowDropApiClient(
42
- endpointConfig ?? createEndpointConfig(baseUrl || '/api/flowdrop')
43
- );
44
-
45
- // Pipeline status and job data
46
- let pipelineStatus = $state<string>('unknown');
47
- interface PipelineNodeStatus {
48
- status: string;
49
- [key: string]: unknown;
50
- }
51
-
52
- let jobStatusData = $state<{
53
- jobs: Record<string, unknown>[];
54
- node_statuses: Record<string, PipelineNodeStatus>;
55
- status_summary: {
56
- total: number;
57
- pending: number;
58
- running: number;
59
- completed: number;
60
- failed: number;
61
- cancelled: number;
62
- };
63
- }>({
64
- jobs: [],
65
- node_statuses: {},
66
- status_summary: {
67
- total: 0,
68
- pending: 0,
69
- running: 0,
70
- completed: 0,
71
- failed: 0,
72
- cancelled: 0
73
- }
74
- });
75
-
76
- // Node statuses for visual indicators
77
- let nodeStatuses = $state<Record<string, 'pending' | 'running' | 'completed' | 'error'>>({});
78
-
79
- // Loading and error states
80
- let isLoadingJobStatus = $state(false);
81
-
82
- // Logs sidebar state
83
- let isLogsSidebarOpen = $state(false);
84
- let logs = $state<Array<{ level: string; message: string; timestamp: string }>>([]);
85
-
86
- /**
87
- * Fetch pipeline data including job information
88
- */
89
- async function fetchPipelineData(): Promise<void> {
90
- if (!pipelineId) return;
91
-
92
- try {
93
- isLoadingJobStatus = true;
94
- const pipelineData = await client.getPipelineData(pipelineId);
95
-
96
- pipelineStatus = pipelineData.status;
97
- jobStatusData = {
98
- jobs: pipelineData.jobs || [],
99
- node_statuses: pipelineData.node_statuses || {},
100
- status_summary: pipelineData.job_status_summary || {
101
- total: 0,
102
- pending: 0,
103
- running: 0,
104
- completed: 0,
105
- failed: 0,
106
- cancelled: 0
107
- }
108
- };
109
-
110
- // Update node statuses based on job data
111
- if (jobStatusData.node_statuses) {
112
- const newNodeStatuses: Record<string, 'pending' | 'running' | 'completed' | 'error'> = {};
113
-
114
- // Initialize all nodes as pending
115
- if (workflow && workflow.nodes) {
116
- workflow.nodes.forEach((node) => {
117
- newNodeStatuses[node.id] = 'pending';
118
- });
119
- }
120
-
121
- // Override with actual job statuses
122
- for (const nodeId in jobStatusData.node_statuses) {
123
- const status = jobStatusData.node_statuses[nodeId].status;
124
- if (['pending', 'running', 'completed', 'failed', 'cancelled'].includes(status)) {
125
- newNodeStatuses[nodeId] =
126
- status === 'failed' ? 'error' : (status as 'pending' | 'running' | 'completed');
127
- }
128
- }
129
- nodeStatuses = newNodeStatuses;
130
- }
131
-
132
- addLog('info', `Job status updated: ${jobStatusData.status_summary.total} total jobs`);
133
- } catch (error) {
134
- logger.error('Failed to fetch pipeline data:', error);
135
- addLog(
136
- 'error',
137
- `Failed to fetch pipeline data: ${error instanceof Error ? error.message : 'Unknown error'}`
138
- );
139
- } finally {
140
- isLoadingJobStatus = false;
141
- }
142
- }
143
-
144
- /**
145
- * Add a log entry
146
- */
147
- function addLog(level: string, message: string): void {
148
- logs = [
149
- ...logs,
150
- {
151
- level,
152
- message,
153
- timestamp: new Date().toISOString()
154
- }
155
- ];
156
- }
157
-
158
- /**
159
- * Toggle logs sidebar
160
- */
161
- function toggleLogsSidebar(): void {
162
- isLogsSidebarOpen = !isLogsSidebarOpen;
163
- }
164
-
165
- /**
166
- * Get pipeline actions for the parent navbar
167
- */
168
- function getPipelineActions() {
169
- return [
170
- {
171
- label: isLoadingJobStatus ? 'Refreshing...' : 'Refresh Status',
172
- href: '#refresh',
173
- icon: isLoadingJobStatus ? 'mdi:loading' : 'mdi:refresh',
174
- variant: 'outline' as const,
175
- onclick: (e: Event) => {
176
- e.preventDefault();
177
- fetchPipelineData();
178
- }
179
- },
180
- {
181
- label: 'View Logs',
182
- href: '#logs',
183
- icon: 'mdi:file-document-outline',
184
- variant: 'outline' as const,
185
- onclick: (e: Event) => {
186
- e.preventDefault();
187
- toggleLogsSidebar();
188
- }
189
- }
190
- ];
191
- }
192
-
193
- // Fetch pipeline data on mount
194
- onMount(() => {
195
- fetchPipelineData();
196
- // Expose actions to parent
197
- if (onActionsReady) {
198
- onActionsReady(getPipelineActions());
199
- }
200
-
201
- // Listen for custom events from the layout navbar
202
- const handleRefresh = () => fetchPipelineData();
203
- const handleViewLogs = () => toggleLogsSidebar();
204
-
205
- window.addEventListener('pipeline-refresh', handleRefresh);
206
- window.addEventListener('pipeline-view-logs', handleViewLogs);
207
-
208
- return () => {
209
- window.removeEventListener('pipeline-refresh', handleRefresh);
210
- window.removeEventListener('pipeline-view-logs', handleViewLogs);
211
- };
212
- });
213
-
214
- // Send pipeline breadcrumbs to layout when they change
215
- $effect(() => {
216
- if (pipelineStatus && pipelineId && workflow) {
217
- const breadcrumbs = [
218
- {
219
- label: 'Home',
220
- href: '/',
221
- icon: 'mdi:home'
222
- },
223
- {
224
- label: 'Workflows',
225
- href: '/',
226
- icon: 'mdi:view-list'
227
- },
228
- {
229
- label: workflow.name || 'Workflow',
230
- href: `/workflow/${workflow.id}/edit`,
231
- icon: 'mdi:workflow'
232
- },
233
- {
234
- label: 'Pipelines',
235
- href: `/workflow/${workflow.id}/pipelines`,
236
- icon: 'mdi:source-branch'
237
- },
238
- {
239
- label: `Pipeline ${pipelineId} - ${pipelineStatus}`,
240
- icon: 'mdi:play-circle'
241
- }
242
- ];
243
-
244
- window.dispatchEvent(
245
- new CustomEvent('page-breadcrumbs-update', {
246
- detail: { breadcrumbs }
247
- })
248
- );
249
- }
250
- });
251
-
252
- // Update actions when loading state changes
253
- $effect(() => {
254
- if (onActionsReady) {
255
- onActionsReady(getPipelineActions());
256
- }
257
- });
258
-
259
- // Auto-refresh pipeline data every 5 seconds when pipeline is running
260
- let refreshInterval: NodeJS.Timeout | null = null;
261
-
262
- $effect(() => {
263
- // Clear existing interval
264
- if (refreshInterval) {
265
- clearInterval(refreshInterval);
266
- refreshInterval = null;
267
- }
268
-
269
- // Only start polling if pipeline is running
270
- if (pipelineStatus === 'running' && pipelineId) {
271
- refreshInterval = setInterval(() => {
272
- fetchPipelineData();
273
- }, 5000);
274
- }
275
- });
276
-
277
- // Note: Interval cleanup is handled by the $effect above.
278
- // In Svelte 5, $effect cleanup runs both on re-execution and component destroy.
8
+ import { onMount } from "svelte";
9
+ import App from "./App.svelte";
10
+ import LogsSidebar from "./LogsSidebar.svelte";
11
+ import { EnhancedFlowDropApiClient } from "../api/enhanced-client.js";
12
+ import { createEndpointConfig } from "../config/endpoints.js";
13
+ import type { Workflow } from "../types/index.js";
14
+ import type { EndpointConfig } from "../config/endpoints.js";
15
+ import { logger } from "../utils/logger.js";
16
+
17
+ interface Props {
18
+ pipelineId: string;
19
+ workflow: Workflow;
20
+ apiClient?: EnhancedFlowDropApiClient;
21
+ baseUrl?: string;
22
+ endpointConfig?: EndpointConfig;
23
+ onActionsReady?: (
24
+ actions: Array<{
25
+ label: string;
26
+ href: string;
27
+ icon?: string;
28
+ variant?: "primary" | "secondary" | "outline";
29
+ onclick?: (event: Event) => void;
30
+ }>,
31
+ ) => void;
32
+ }
33
+
34
+ let {
35
+ pipelineId,
36
+ workflow,
37
+ apiClient,
38
+ baseUrl,
39
+ endpointConfig,
40
+ onActionsReady,
41
+ }: Props = $props();
42
+
43
+ // Initialize API client if not provided
44
+ // svelte-ignore state_referenced_locally — client created once from props
45
+ const client =
46
+ apiClient ||
47
+ new EnhancedFlowDropApiClient(
48
+ endpointConfig ?? createEndpointConfig(baseUrl || "/api/flowdrop"),
49
+ );
50
+
51
+ // Pipeline status and job data
52
+ let pipelineStatus = $state<string>("unknown");
53
+ interface PipelineNodeStatus {
54
+ status: string;
55
+ [key: string]: unknown;
56
+ }
57
+
58
+ let jobStatusData = $state<{
59
+ jobs: Record<string, unknown>[];
60
+ node_statuses: Record<string, PipelineNodeStatus>;
61
+ status_summary: {
62
+ total: number;
63
+ pending: number;
64
+ running: number;
65
+ completed: number;
66
+ failed: number;
67
+ cancelled: number;
68
+ };
69
+ }>({
70
+ jobs: [],
71
+ node_statuses: {},
72
+ status_summary: {
73
+ total: 0,
74
+ pending: 0,
75
+ running: 0,
76
+ completed: 0,
77
+ failed: 0,
78
+ cancelled: 0,
79
+ },
80
+ });
81
+
82
+ // Node statuses for visual indicators
83
+ let nodeStatuses = $state<
84
+ Record<string, "pending" | "running" | "completed" | "error">
85
+ >({});
86
+
87
+ // Loading and error states
88
+ let isLoadingJobStatus = $state(false);
89
+
90
+ // Logs sidebar state
91
+ let isLogsSidebarOpen = $state(false);
92
+ let logs = $state<
93
+ Array<{ level: string; message: string; timestamp: string }>
94
+ >([]);
95
+
96
+ /**
97
+ * Fetch pipeline data including job information
98
+ */
99
+ async function fetchPipelineData(): Promise<void> {
100
+ if (!pipelineId) return;
101
+
102
+ try {
103
+ isLoadingJobStatus = true;
104
+ const pipelineData = await client.getPipelineData(pipelineId);
105
+
106
+ pipelineStatus = pipelineData.status;
107
+ jobStatusData = {
108
+ jobs: pipelineData.jobs || [],
109
+ node_statuses: pipelineData.node_statuses || {},
110
+ status_summary: pipelineData.job_status_summary || {
111
+ total: 0,
112
+ pending: 0,
113
+ running: 0,
114
+ completed: 0,
115
+ failed: 0,
116
+ cancelled: 0,
117
+ },
118
+ };
119
+
120
+ // Update node statuses based on job data
121
+ if (jobStatusData.node_statuses) {
122
+ const newNodeStatuses: Record<
123
+ string,
124
+ "pending" | "running" | "completed" | "error"
125
+ > = {};
126
+
127
+ // Initialize all nodes as pending
128
+ if (workflow && workflow.nodes) {
129
+ workflow.nodes.forEach((node) => {
130
+ newNodeStatuses[node.id] = "pending";
131
+ });
132
+ }
133
+
134
+ // Override with actual job statuses
135
+ for (const nodeId in jobStatusData.node_statuses) {
136
+ const status = jobStatusData.node_statuses[nodeId].status;
137
+ if (
138
+ ["pending", "running", "completed", "failed", "cancelled"].includes(
139
+ status,
140
+ )
141
+ ) {
142
+ newNodeStatuses[nodeId] =
143
+ status === "failed"
144
+ ? "error"
145
+ : (status as "pending" | "running" | "completed");
146
+ }
147
+ }
148
+ nodeStatuses = newNodeStatuses;
149
+ }
150
+
151
+ addLog(
152
+ "info",
153
+ `Job status updated: ${jobStatusData.status_summary.total} total jobs`,
154
+ );
155
+ } catch (error) {
156
+ logger.error("Failed to fetch pipeline data:", error);
157
+ addLog(
158
+ "error",
159
+ `Failed to fetch pipeline data: ${error instanceof Error ? error.message : "Unknown error"}`,
160
+ );
161
+ } finally {
162
+ isLoadingJobStatus = false;
163
+ }
164
+ }
165
+
166
+ /**
167
+ * Add a log entry
168
+ */
169
+ function addLog(level: string, message: string): void {
170
+ logs = [
171
+ ...logs,
172
+ {
173
+ level,
174
+ message,
175
+ timestamp: new Date().toISOString(),
176
+ },
177
+ ];
178
+ }
179
+
180
+ /**
181
+ * Toggle logs sidebar
182
+ */
183
+ function toggleLogsSidebar(): void {
184
+ isLogsSidebarOpen = !isLogsSidebarOpen;
185
+ }
186
+
187
+ /**
188
+ * Get pipeline actions for the parent navbar
189
+ */
190
+ function getPipelineActions() {
191
+ return [
192
+ {
193
+ label: isLoadingJobStatus ? "Refreshing..." : "Refresh Status",
194
+ href: "#refresh",
195
+ icon: isLoadingJobStatus ? "mdi:loading" : "mdi:refresh",
196
+ variant: "outline" as const,
197
+ onclick: (e: Event) => {
198
+ e.preventDefault();
199
+ fetchPipelineData();
200
+ },
201
+ },
202
+ {
203
+ label: "View Logs",
204
+ href: "#logs",
205
+ icon: "mdi:file-document-outline",
206
+ variant: "outline" as const,
207
+ onclick: (e: Event) => {
208
+ e.preventDefault();
209
+ toggleLogsSidebar();
210
+ },
211
+ },
212
+ ];
213
+ }
214
+
215
+ // Fetch pipeline data on mount
216
+ onMount(() => {
217
+ fetchPipelineData();
218
+ // Expose actions to parent
219
+ if (onActionsReady) {
220
+ onActionsReady(getPipelineActions());
221
+ }
222
+
223
+ // Listen for custom events from the layout navbar
224
+ const handleRefresh = () => fetchPipelineData();
225
+ const handleViewLogs = () => toggleLogsSidebar();
226
+
227
+ window.addEventListener("pipeline-refresh", handleRefresh);
228
+ window.addEventListener("pipeline-view-logs", handleViewLogs);
229
+
230
+ return () => {
231
+ window.removeEventListener("pipeline-refresh", handleRefresh);
232
+ window.removeEventListener("pipeline-view-logs", handleViewLogs);
233
+ };
234
+ });
235
+
236
+ // Send pipeline breadcrumbs to layout when they change
237
+ $effect(() => {
238
+ if (pipelineStatus && pipelineId && workflow) {
239
+ const breadcrumbs = [
240
+ {
241
+ label: "Home",
242
+ href: "/",
243
+ icon: "mdi:home",
244
+ },
245
+ {
246
+ label: "Workflows",
247
+ href: "/",
248
+ icon: "mdi:view-list",
249
+ },
250
+ {
251
+ label: workflow.name || "Workflow",
252
+ href: `/workflow/${workflow.id}/edit`,
253
+ icon: "mdi:workflow",
254
+ },
255
+ {
256
+ label: "Pipelines",
257
+ href: `/workflow/${workflow.id}/pipelines`,
258
+ icon: "mdi:source-branch",
259
+ },
260
+ {
261
+ label: `Pipeline ${pipelineId} - ${pipelineStatus}`,
262
+ icon: "mdi:play-circle",
263
+ },
264
+ ];
265
+
266
+ window.dispatchEvent(
267
+ new CustomEvent("page-breadcrumbs-update", {
268
+ detail: { breadcrumbs },
269
+ }),
270
+ );
271
+ }
272
+ });
273
+
274
+ // Update actions when loading state changes
275
+ $effect(() => {
276
+ if (onActionsReady) {
277
+ onActionsReady(getPipelineActions());
278
+ }
279
+ });
280
+
281
+ // Auto-refresh pipeline data every 5 seconds when pipeline is running
282
+ let refreshInterval: NodeJS.Timeout | null = null;
283
+
284
+ $effect(() => {
285
+ // Clear existing interval
286
+ if (refreshInterval) {
287
+ clearInterval(refreshInterval);
288
+ refreshInterval = null;
289
+ }
290
+
291
+ // Only start polling if pipeline is running
292
+ if (pipelineStatus === "running" && pipelineId) {
293
+ refreshInterval = setInterval(() => {
294
+ fetchPipelineData();
295
+ }, 5000);
296
+ }
297
+ });
298
+
299
+ // Note: Interval cleanup is handled by the $effect above.
300
+ // In Svelte 5, $effect cleanup runs both on re-execution and component destroy.
279
301
  </script>
280
302
 
281
303
  <div class="pipeline-status-container">
282
- <!-- Workflow Visualization using App component -->
283
- <App
284
- {workflow}
285
- height="100vh"
286
- width="100%"
287
- showNavbar={false}
288
- disableSidebar={true}
289
- lockWorkflow={true}
290
- readOnly={true}
291
- {nodeStatuses}
292
- {pipelineId}
293
- {endpointConfig}
294
- />
295
-
296
- <!-- Logs Sidebar -->
297
- {#if isLogsSidebarOpen}
298
- <LogsSidebar {logs} isOpen={isLogsSidebarOpen} onClose={() => (isLogsSidebarOpen = false)} />
299
- {/if}
304
+ <!-- Workflow Visualization using App component -->
305
+ <App
306
+ {workflow}
307
+ height="100vh"
308
+ width="100%"
309
+ showNavbar={false}
310
+ disableSidebar={true}
311
+ lockWorkflow={true}
312
+ readOnly={true}
313
+ {nodeStatuses}
314
+ {pipelineId}
315
+ {endpointConfig}
316
+ />
317
+
318
+ <!-- Logs Sidebar -->
319
+ {#if isLogsSidebarOpen}
320
+ <LogsSidebar
321
+ {logs}
322
+ isOpen={isLogsSidebarOpen}
323
+ onClose={() => (isLogsSidebarOpen = false)}
324
+ />
325
+ {/if}
300
326
  </div>
301
327
 
302
328
  <style>
303
- .pipeline-status-container {
304
- display: flex;
305
- flex-direction: column;
306
- height: 100vh;
307
- background: var(--fd-layout-background, var(--fd-muted));
308
- }
309
-
310
- /* Dark mode override */
311
- :global([data-theme='dark']) .pipeline-status-container {
312
- background: linear-gradient(135deg, #141418 0%, #1a1a2e 50%, #16162a 100%);
313
- }
329
+ .pipeline-status-container {
330
+ display: flex;
331
+ flex-direction: column;
332
+ height: 100vh;
333
+ background: var(--fd-layout-background, var(--fd-muted));
334
+ }
335
+
336
+ /* Dark mode override */
337
+ :global([data-theme="dark"]) .pipeline-status-container {
338
+ background: linear-gradient(135deg, #141418 0%, #1a1a2e 50%, #16162a 100%);
339
+ }
314
340
  </style>
@@ -1,6 +1,6 @@
1
- import { EnhancedFlowDropApiClient } from '../api/enhanced-client.js';
2
- import type { Workflow } from '../types/index.js';
3
- import type { EndpointConfig } from '../config/endpoints.js';
1
+ import { EnhancedFlowDropApiClient } from "../api/enhanced-client.js";
2
+ import type { Workflow } from "../types/index.js";
3
+ import type { EndpointConfig } from "../config/endpoints.js";
4
4
  interface Props {
5
5
  pipelineId: string;
6
6
  workflow: Workflow;
@@ -11,7 +11,7 @@ interface Props {
11
11
  label: string;
12
12
  href: string;
13
13
  icon?: string;
14
- variant?: 'primary' | 'secondary' | 'outline';
14
+ variant?: "primary" | "secondary" | "outline";
15
15
  onclick?: (event: Event) => void;
16
16
  }>) => void;
17
17
  }