@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,35 @@
1
+ /**
2
+ * Utility functions for calculating handle positions on nodes
3
+ */
4
+ /**
5
+ * Calculate handle position along a circle arc using cos/sin
6
+ *
7
+ * Distributes handles evenly along an arc on the left or right side of a circle.
8
+ * For N handles, they are positioned at angles calculated as:
9
+ * angle = centerAngle - arcSpan/2 + arcSpan * (index + 1) / (count + 1)
10
+ *
11
+ * @param index - The index of the handle (0-based)
12
+ * @param count - Total number of handles on this side
13
+ * @param side - 'left' for inputs, 'right' for outputs
14
+ * @param radius - The radius of the circle (default: 40px for 80px diameter)
15
+ * @param arcSpan - The arc span in radians (default: 5π/6 = 150°)
16
+ * @returns Object with left and top pixel values relative to the circle's bounding box
17
+ *
18
+ * @example
19
+ * // Single handle on left side - positioned at center (180°)
20
+ * getCircleHandlePosition(0, 1, 'left') // { left: 0, top: 36 }
21
+ *
22
+ * @example
23
+ * // Two handles on left side - positioned at 150° and 210°
24
+ * getCircleHandlePosition(0, 2, 'left') // { left: ~4.8, top: ~18 }
25
+ * getCircleHandlePosition(1, 2, 'left') // { left: ~4.8, top: ~54 }
26
+ */
27
+ export function getCircleHandlePosition(index, count, side, radius = 40, arcSpan = (Math.PI * 5) / 6) {
28
+ const centerAngle = side === 'left' ? Math.PI : 0; // 180° for left, 0° for right
29
+ const angle = centerAngle - arcSpan / 2 + (arcSpan * (index + 1)) / (count + 1);
30
+ const centerOffset = radius; // center of the circle (assuming square bounding box)
31
+ return {
32
+ left: centerOffset + radius * Math.cos(angle),
33
+ top: centerOffset + radius * Math.sin(angle)
34
+ };
35
+ }
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Centralized icon management for FlowDrop
3
+ * Ensures consistent icon usage across all components
4
+ */
5
+ import type { NodeCategory } from '../types/index.js';
6
+ /**
7
+ * Default icons for different contexts
8
+ */
9
+ export declare const DEFAULT_ICONS: {
10
+ readonly NODE: "mdi:cube";
11
+ readonly CATEGORY: "mdi:folder";
12
+ readonly ADD: "mdi:plus";
13
+ readonly REMOVE: "mdi:minus";
14
+ readonly EDIT: "mdi:pencil";
15
+ readonly SAVE: "mdi:content-save";
16
+ readonly LOAD: "mdi:folder-open";
17
+ readonly EXPORT: "mdi:download";
18
+ readonly IMPORT: "mdi:upload";
19
+ readonly SEARCH: "mdi:magnify";
20
+ readonly CLOSE: "mdi:close";
21
+ readonly SETTINGS: "mdi:cog";
22
+ readonly HELP: "mdi:help-circle";
23
+ readonly SUCCESS: "mdi:check-circle";
24
+ readonly ERROR: "mdi:alert-circle";
25
+ readonly WARNING: "mdi:alert";
26
+ readonly INFO: "mdi:information";
27
+ readonly LOADING: "mdi:loading";
28
+ readonly HOME: "mdi:home";
29
+ readonly BACK: "mdi:arrow-left";
30
+ readonly FORWARD: "mdi:arrow-right";
31
+ readonly UP: "mdi:arrow-up";
32
+ readonly DOWN: "mdi:arrow-down";
33
+ readonly WORKFLOW: "mdi:graph";
34
+ readonly NODE_ADD: "mdi:plus-circle";
35
+ readonly NODE_DELETE: "mdi:minus-circle";
36
+ readonly CONNECTION: "mdi:connection";
37
+ readonly DATA: "mdi:database";
38
+ readonly FILE: "mdi:file";
39
+ readonly TEXT: "mdi:text";
40
+ readonly JSON: "mdi:code-json";
41
+ readonly MODEL: "mdi:chip";
42
+ readonly BRAIN: "mdi:brain";
43
+ readonly VECTOR: "mdi:vector-point";
44
+ readonly ROBOT: "mdi:robot";
45
+ readonly TOOL: "mdi:wrench";
46
+ readonly CALCULATOR: "mdi:calculator";
47
+ readonly CLOCK: "mdi:clock";
48
+ readonly CHAT: "mdi:chat";
49
+ readonly MESSAGE: "mdi:message";
50
+ readonly EMAIL: "mdi:email";
51
+ readonly WEBHOOK: "mdi:webhook";
52
+ readonly STORAGE: "mdi:database";
53
+ readonly MEMORY: "mdi:memory";
54
+ readonly CACHE: "mdi:cached";
55
+ readonly PROCESS: "mdi:cog";
56
+ readonly FILTER: "mdi:filter";
57
+ readonly SORT: "mdi:sort";
58
+ readonly TRANSFORM: "mdi:transform";
59
+ readonly LOGIC: "mdi:git-branch";
60
+ readonly CONDITION: "mdi:source-fork";
61
+ readonly LOOP: "mdi:loop";
62
+ readonly API: "mdi:api";
63
+ readonly LINK: "mdi:link";
64
+ readonly PLUGIN: "mdi:puzzle";
65
+ readonly BUNDLE: "mdi:package-variant";
66
+ };
67
+ /**
68
+ * Category-specific icons for built-in categories.
69
+ * Custom categories fall back to DEFAULT_ICONS.CATEGORY.
70
+ * These serve as static defaults; the categories store provides dynamic overrides.
71
+ */
72
+ export declare const CATEGORY_ICONS: Record<string, string>;
73
+ /**
74
+ * Get the appropriate icon for a node
75
+ * @param nodeIcon - The node's specific icon
76
+ * @param category - The node's category
77
+ * @returns The icon to use
78
+ */
79
+ export declare function getNodeIcon(nodeIcon?: string, category?: NodeCategory): string;
80
+ /**
81
+ * Get the appropriate icon for a category.
82
+ * Checks the categories store first (which includes API overrides),
83
+ * then falls back to the static CATEGORY_ICONS map, then to the default.
84
+ * @param category - The category
85
+ * @returns The icon to use
86
+ */
87
+ export declare function getCategoryIcon(category: NodeCategory): string;
88
+ /**
89
+ * Get a default icon by key
90
+ * @param key - The icon key from DEFAULT_ICONS
91
+ * @returns The icon string
92
+ */
93
+ export declare function getDefaultIcon(key: keyof typeof DEFAULT_ICONS): string;
94
+ /**
95
+ * Validate if an icon string is properly formatted
96
+ * @param icon - The icon string to validate
97
+ * @returns True if valid, false otherwise
98
+ */
99
+ export declare function isValidIcon(icon: string): boolean;
100
+ /**
101
+ * Get a fallback icon if the provided icon is invalid
102
+ * @param icon - The icon to check
103
+ * @param fallback - The fallback icon to use
104
+ * @returns The valid icon string
105
+ */
106
+ export declare function getValidIcon(icon: string, fallback?: string): string;
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Centralized icon management for FlowDrop
3
+ * Ensures consistent icon usage across all components
4
+ */
5
+ import { getCategoryIcon as getCategoryIconFromStore } from '../stores/categoriesStore.svelte.js';
6
+ /**
7
+ * Default icons for different contexts
8
+ */
9
+ export const DEFAULT_ICONS = {
10
+ // Node fallback icons
11
+ NODE: 'mdi:cube',
12
+ CATEGORY: 'mdi:folder',
13
+ // UI action icons
14
+ ADD: 'mdi:plus',
15
+ REMOVE: 'mdi:minus',
16
+ EDIT: 'mdi:pencil',
17
+ SAVE: 'mdi:content-save',
18
+ LOAD: 'mdi:folder-open',
19
+ EXPORT: 'mdi:download',
20
+ IMPORT: 'mdi:upload',
21
+ SEARCH: 'mdi:magnify',
22
+ CLOSE: 'mdi:close',
23
+ SETTINGS: 'mdi:cog',
24
+ HELP: 'mdi:help-circle',
25
+ // Status icons
26
+ SUCCESS: 'mdi:check-circle',
27
+ ERROR: 'mdi:alert-circle',
28
+ WARNING: 'mdi:alert',
29
+ INFO: 'mdi:information',
30
+ LOADING: 'mdi:loading',
31
+ // Navigation icons
32
+ HOME: 'mdi:home',
33
+ BACK: 'mdi:arrow-left',
34
+ FORWARD: 'mdi:arrow-right',
35
+ UP: 'mdi:arrow-up',
36
+ DOWN: 'mdi:arrow-down',
37
+ // Workflow icons
38
+ WORKFLOW: 'mdi:graph',
39
+ NODE_ADD: 'mdi:plus-circle',
40
+ NODE_DELETE: 'mdi:minus-circle',
41
+ CONNECTION: 'mdi:connection',
42
+ // Data icons
43
+ DATA: 'mdi:database',
44
+ FILE: 'mdi:file',
45
+ TEXT: 'mdi:text',
46
+ JSON: 'mdi:code-json',
47
+ // Model and processing icons
48
+ MODEL: 'mdi:chip',
49
+ BRAIN: 'mdi:brain',
50
+ VECTOR: 'mdi:vector-point',
51
+ ROBOT: 'mdi:robot',
52
+ // Tool icons
53
+ TOOL: 'mdi:wrench',
54
+ CALCULATOR: 'mdi:calculator',
55
+ CLOCK: 'mdi:clock',
56
+ // Communication icons
57
+ CHAT: 'mdi:chat',
58
+ MESSAGE: 'mdi:message',
59
+ EMAIL: 'mdi:email',
60
+ WEBHOOK: 'mdi:webhook',
61
+ // Storage icons
62
+ STORAGE: 'mdi:database',
63
+ MEMORY: 'mdi:memory',
64
+ CACHE: 'mdi:cached',
65
+ // Processing icons
66
+ PROCESS: 'mdi:cog',
67
+ FILTER: 'mdi:filter',
68
+ SORT: 'mdi:sort',
69
+ TRANSFORM: 'mdi:transform',
70
+ // Logic icons
71
+ LOGIC: 'mdi:git-branch',
72
+ CONDITION: 'mdi:source-fork',
73
+ LOOP: 'mdi:loop',
74
+ // Integration icons
75
+ API: 'mdi:api',
76
+ LINK: 'mdi:link',
77
+ PLUGIN: 'mdi:puzzle',
78
+ BUNDLE: 'mdi:package-variant'
79
+ };
80
+ /**
81
+ * Category-specific icons for built-in categories.
82
+ * Custom categories fall back to DEFAULT_ICONS.CATEGORY.
83
+ * These serve as static defaults; the categories store provides dynamic overrides.
84
+ */
85
+ export const CATEGORY_ICONS = {
86
+ triggers: 'mdi:lightning-bolt',
87
+ inputs: 'mdi:arrow-down-circle',
88
+ outputs: 'mdi:arrow-up-circle',
89
+ prompts: 'mdi:message-text',
90
+ models: 'mdi:robot',
91
+ processing: 'mdi:cog',
92
+ logic: 'mdi:source-branch',
93
+ data: 'mdi:database',
94
+ helpers: 'mdi:help-circle',
95
+ tools: 'mdi:wrench',
96
+ 'vector stores': 'mdi:vector-square',
97
+ embeddings: 'mdi:vector-polygon',
98
+ memories: 'mdi:brain',
99
+ agents: 'mdi:account-cog',
100
+ ai: 'mdi:shimmer',
101
+ interrupts: 'mdi:hand-back-left',
102
+ bundles: 'mdi:package-variant'
103
+ };
104
+ /**
105
+ * Get the appropriate icon for a node
106
+ * @param nodeIcon - The node's specific icon
107
+ * @param category - The node's category
108
+ * @returns The icon to use
109
+ */
110
+ export function getNodeIcon(nodeIcon, category) {
111
+ // If node has a specific icon, use it
112
+ if (nodeIcon) {
113
+ return nodeIcon;
114
+ }
115
+ // If category is provided, use category icon from store (which includes API overrides)
116
+ if (category) {
117
+ return getCategoryIconFromStore(category);
118
+ }
119
+ // Fallback to default node icon
120
+ return DEFAULT_ICONS.NODE;
121
+ }
122
+ /**
123
+ * Get the appropriate icon for a category.
124
+ * Checks the categories store first (which includes API overrides),
125
+ * then falls back to the static CATEGORY_ICONS map, then to the default.
126
+ * @param category - The category
127
+ * @returns The icon to use
128
+ */
129
+ export function getCategoryIcon(category) {
130
+ return getCategoryIconFromStore(category);
131
+ }
132
+ /**
133
+ * Get a default icon by key
134
+ * @param key - The icon key from DEFAULT_ICONS
135
+ * @returns The icon string
136
+ */
137
+ export function getDefaultIcon(key) {
138
+ return DEFAULT_ICONS[key];
139
+ }
140
+ /**
141
+ * Validate if an icon string is properly formatted
142
+ * @param icon - The icon string to validate
143
+ * @returns True if valid, false otherwise
144
+ */
145
+ export function isValidIcon(icon) {
146
+ // Check if it's a valid iconify format (e.g., "mdi:icon-name")
147
+ return /^[a-z-]+:[a-z-]+$/.test(icon);
148
+ }
149
+ /**
150
+ * Get a fallback icon if the provided icon is invalid
151
+ * @param icon - The icon to check
152
+ * @param fallback - The fallback icon to use
153
+ * @returns The valid icon string
154
+ */
155
+ export function getValidIcon(icon, fallback = DEFAULT_ICONS.NODE) {
156
+ return isValidIcon(icon) ? icon : fallback;
157
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * FlowDrop Logger
3
+ *
4
+ * Lightweight configurable logger for the FlowDrop library.
5
+ * Disabled by default — consumers enable it for debugging.
6
+ *
7
+ * @module utils/logger
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { setLogLevel } from '@flowdrop/flowdrop/core';
12
+ *
13
+ * // Enable debug logging during development
14
+ * setLogLevel('debug');
15
+ *
16
+ * // Enable only warnings and errors
17
+ * setLogLevel('warn');
18
+ *
19
+ * // Disable all logging (default)
20
+ * setLogLevel('none');
21
+ * ```
22
+ */
23
+ /** Log severity levels. `'none'` disables all output. */
24
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'none';
25
+ /**
26
+ * Set the minimum log level for FlowDrop library output.
27
+ * Messages below this level are silently discarded.
28
+ *
29
+ * @param level - The minimum severity to display. Use `'none'` to disable all output.
30
+ */
31
+ export declare function setLogLevel(level: LogLevel): void;
32
+ /**
33
+ * Get the current log level.
34
+ */
35
+ export declare function getLogLevel(): LogLevel;
36
+ /**
37
+ * FlowDrop library logger.
38
+ *
39
+ * All methods are no-ops when the log level is set to `'none'` (default).
40
+ * Enable output by calling `setLogLevel()`.
41
+ */
42
+ export declare const logger: {
43
+ debug(message: string, ...args: unknown[]): void;
44
+ info(message: string, ...args: unknown[]): void;
45
+ warn(message: string, ...args: unknown[]): void;
46
+ error(message: string, ...args: unknown[]): void;
47
+ };
@@ -0,0 +1,72 @@
1
+ /**
2
+ * FlowDrop Logger
3
+ *
4
+ * Lightweight configurable logger for the FlowDrop library.
5
+ * Disabled by default — consumers enable it for debugging.
6
+ *
7
+ * @module utils/logger
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { setLogLevel } from '@flowdrop/flowdrop/core';
12
+ *
13
+ * // Enable debug logging during development
14
+ * setLogLevel('debug');
15
+ *
16
+ * // Enable only warnings and errors
17
+ * setLogLevel('warn');
18
+ *
19
+ * // Disable all logging (default)
20
+ * setLogLevel('none');
21
+ * ```
22
+ */
23
+ const LOG_PRIORITY = {
24
+ debug: 0,
25
+ info: 1,
26
+ warn: 2,
27
+ error: 3,
28
+ none: 4
29
+ };
30
+ let currentLevel = 'none';
31
+ /**
32
+ * Set the minimum log level for FlowDrop library output.
33
+ * Messages below this level are silently discarded.
34
+ *
35
+ * @param level - The minimum severity to display. Use `'none'` to disable all output.
36
+ */
37
+ export function setLogLevel(level) {
38
+ currentLevel = level;
39
+ }
40
+ /**
41
+ * Get the current log level.
42
+ */
43
+ export function getLogLevel() {
44
+ return currentLevel;
45
+ }
46
+ function shouldLog(level) {
47
+ return LOG_PRIORITY[level] >= LOG_PRIORITY[currentLevel];
48
+ }
49
+ /**
50
+ * FlowDrop library logger.
51
+ *
52
+ * All methods are no-ops when the log level is set to `'none'` (default).
53
+ * Enable output by calling `setLogLevel()`.
54
+ */
55
+ export const logger = {
56
+ debug(message, ...args) {
57
+ if (shouldLog('debug'))
58
+ console.debug(`[FlowDrop] ${message}`, ...args);
59
+ },
60
+ info(message, ...args) {
61
+ if (shouldLog('info'))
62
+ console.info(`[FlowDrop] ${message}`, ...args);
63
+ },
64
+ warn(message, ...args) {
65
+ if (shouldLog('warn'))
66
+ console.warn(`[FlowDrop] ${message}`, ...args);
67
+ },
68
+ error(message, ...args) {
69
+ if (shouldLog('error'))
70
+ console.error(`[FlowDrop] ${message}`, ...args);
71
+ }
72
+ };
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Node Status Utility Functions
3
+ * Provides utilities for managing and displaying node execution status
4
+ */
5
+ import type { NodeExecutionStatus, NodeExecutionInfo } from '../types/index.js';
6
+ /**
7
+ * Get the display color for a node execution status
8
+ */
9
+ export declare function getStatusColor(status: NodeExecutionStatus): string;
10
+ /**
11
+ * Get the display icon for a node execution status
12
+ */
13
+ export declare function getStatusIcon(status: NodeExecutionStatus): string;
14
+ /**
15
+ * Get the display label for a node execution status
16
+ */
17
+ export declare function getStatusLabel(status: NodeExecutionStatus): string;
18
+ /**
19
+ * Get the background color for a node execution status overlay
20
+ */
21
+ export declare function getStatusBackgroundColor(status: NodeExecutionStatus): string;
22
+ /**
23
+ * Get the text color for a node execution status overlay
24
+ */
25
+ export declare function getStatusTextColor(status: NodeExecutionStatus): string;
26
+ /**
27
+ * Create a default NodeExecutionInfo object
28
+ */
29
+ export declare function createDefaultExecutionInfo(): NodeExecutionInfo;
30
+ /**
31
+ * Update node execution info when execution starts
32
+ */
33
+ export declare function updateExecutionStart(executionInfo: NodeExecutionInfo): NodeExecutionInfo;
34
+ /**
35
+ * Update node execution info when execution completes successfully
36
+ */
37
+ export declare function updateExecutionComplete(executionInfo: NodeExecutionInfo, duration: number): NodeExecutionInfo;
38
+ /**
39
+ * Update node execution info when execution fails
40
+ */
41
+ export declare function updateExecutionFailed(executionInfo: NodeExecutionInfo, error: string, duration: number): NodeExecutionInfo;
42
+ /**
43
+ * Reset node execution info
44
+ */
45
+ export declare function resetExecutionInfo(executionInfo: NodeExecutionInfo): NodeExecutionInfo;
46
+ /**
47
+ * Format execution duration for display
48
+ */
49
+ export declare function formatExecutionDuration(duration?: number): string;
50
+ /**
51
+ * Format last executed timestamp for display
52
+ */
53
+ export declare function formatLastExecuted(timestamp?: string): string;
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Node Status Utility Functions
3
+ * Provides utilities for managing and displaying node execution status
4
+ */
5
+ /**
6
+ * Get the display color for a node execution status
7
+ */
8
+ export function getStatusColor(status) {
9
+ const statusColors = {
10
+ idle: '#6b7280', // gray
11
+ pending: '#f59e0b', // amber
12
+ running: '#3b82f6', // blue
13
+ completed: '#10b981', // emerald
14
+ failed: '#ef4444', // red
15
+ cancelled: '#6b7280', // gray
16
+ skipped: '#8b5cf6' // violet
17
+ };
18
+ return statusColors[status] || statusColors.idle;
19
+ }
20
+ /**
21
+ * Get the display icon for a node execution status
22
+ */
23
+ export function getStatusIcon(status) {
24
+ const statusIcons = {
25
+ idle: 'mdi:circle-outline',
26
+ pending: 'mdi:clock-outline',
27
+ running: 'mdi:loading',
28
+ completed: 'mdi:check-circle',
29
+ failed: 'mdi:alert-circle',
30
+ cancelled: 'mdi:cancel',
31
+ skipped: 'mdi:skip-next'
32
+ };
33
+ return statusIcons[status] || statusIcons.idle;
34
+ }
35
+ /**
36
+ * Get the display label for a node execution status
37
+ */
38
+ export function getStatusLabel(status) {
39
+ const statusLabels = {
40
+ idle: 'Idle',
41
+ pending: 'Pending',
42
+ running: 'Running',
43
+ completed: 'Completed',
44
+ failed: 'Failed',
45
+ cancelled: 'Cancelled',
46
+ skipped: 'Skipped'
47
+ };
48
+ return statusLabels[status] || statusLabels.idle;
49
+ }
50
+ /**
51
+ * Get the background color for a node execution status overlay
52
+ */
53
+ export function getStatusBackgroundColor(status) {
54
+ const statusBackgroundColors = {
55
+ idle: '#f9fafb', // light gray
56
+ pending: '#fef3c7', // light amber
57
+ running: '#dbeafe', // light blue
58
+ completed: '#d1fae5', // light emerald
59
+ failed: '#fee2e2', // light red
60
+ cancelled: '#f3f4f6', // light gray
61
+ skipped: '#ede9fe' // light violet
62
+ };
63
+ return statusBackgroundColors[status] || statusBackgroundColors.idle;
64
+ }
65
+ /**
66
+ * Get the text color for a node execution status overlay
67
+ */
68
+ export function getStatusTextColor(status) {
69
+ const statusTextColors = {
70
+ idle: '#6b7280', // gray
71
+ pending: '#d97706', // amber
72
+ running: '#1d4ed8', // blue
73
+ completed: '#059669', // emerald
74
+ failed: '#dc2626', // red
75
+ cancelled: '#6b7280', // gray
76
+ skipped: '#7c3aed' // violet
77
+ };
78
+ return statusTextColors[status] || statusTextColors.idle;
79
+ }
80
+ /**
81
+ * Create a default NodeExecutionInfo object
82
+ */
83
+ export function createDefaultExecutionInfo() {
84
+ return {
85
+ status: 'idle',
86
+ executionCount: 0,
87
+ isExecuting: false
88
+ };
89
+ }
90
+ /**
91
+ * Update node execution info when execution starts
92
+ */
93
+ export function updateExecutionStart(executionInfo) {
94
+ return {
95
+ ...executionInfo,
96
+ status: 'running',
97
+ isExecuting: true
98
+ };
99
+ }
100
+ /**
101
+ * Update node execution info when execution completes successfully
102
+ */
103
+ export function updateExecutionComplete(executionInfo, duration) {
104
+ return {
105
+ ...executionInfo,
106
+ status: 'completed',
107
+ executionCount: executionInfo.executionCount + 1,
108
+ lastExecuted: new Date().toISOString(),
109
+ lastExecutionDuration: duration,
110
+ isExecuting: false,
111
+ lastError: undefined // Clear any previous error
112
+ };
113
+ }
114
+ /**
115
+ * Update node execution info when execution fails
116
+ */
117
+ export function updateExecutionFailed(executionInfo, error, duration) {
118
+ return {
119
+ ...executionInfo,
120
+ status: 'failed',
121
+ executionCount: executionInfo.executionCount + 1,
122
+ lastExecuted: new Date().toISOString(),
123
+ lastExecutionDuration: duration,
124
+ isExecuting: false,
125
+ lastError: error
126
+ };
127
+ }
128
+ /**
129
+ * Reset node execution info
130
+ */
131
+ export function resetExecutionInfo(executionInfo) {
132
+ return {
133
+ ...executionInfo,
134
+ status: 'idle',
135
+ isExecuting: false,
136
+ lastError: undefined
137
+ };
138
+ }
139
+ /**
140
+ * Format execution duration for display
141
+ */
142
+ export function formatExecutionDuration(duration) {
143
+ if (!duration)
144
+ return 'N/A';
145
+ if (duration < 1000) {
146
+ return `${Math.round(duration)}ms`;
147
+ }
148
+ else if (duration < 60000) {
149
+ return `${(duration / 1000).toFixed(1)}s`;
150
+ }
151
+ else {
152
+ const minutes = Math.floor(duration / 60000);
153
+ const seconds = Math.floor((duration % 60000) / 1000);
154
+ return `${minutes}m ${seconds}s`;
155
+ }
156
+ }
157
+ /**
158
+ * Format last executed timestamp for display
159
+ */
160
+ export function formatLastExecuted(timestamp) {
161
+ if (!timestamp)
162
+ return 'Never';
163
+ const date = new Date(timestamp);
164
+ const now = new Date();
165
+ const diffMs = now.getTime() - date.getTime();
166
+ if (diffMs < 60000) {
167
+ // Less than 1 minute
168
+ return 'Just now';
169
+ }
170
+ else if (diffMs < 3600000) {
171
+ // Less than 1 hour
172
+ const minutes = Math.floor(diffMs / 60000);
173
+ return `${minutes}m ago`;
174
+ }
175
+ else if (diffMs < 86400000) {
176
+ // Less than 1 day
177
+ const hours = Math.floor(diffMs / 3600000);
178
+ return `${hours}h ago`;
179
+ }
180
+ else {
181
+ return date.toLocaleDateString();
182
+ }
183
+ }