@flowdrop/flowdrop 1.0.1 → 1.2.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 (385) 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 +1090 -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 +52 -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 +179 -143
  36. package/dist/components/FlowDropEdge.svelte +147 -147
  37. package/dist/components/FlowDropEdge.svelte.d.ts +1 -1
  38. package/dist/components/FlowDropZone.svelte +63 -60
  39. package/dist/components/FlowDropZone.svelte.d.ts +1 -1
  40. package/dist/components/LoadingSpinner.stories.svelte +19 -19
  41. package/dist/components/LoadingSpinner.stories.svelte.d.ts +1 -1
  42. package/dist/components/LoadingSpinner.svelte +21 -21
  43. package/dist/components/LoadingSpinner.svelte.d.ts +1 -1
  44. package/dist/components/Logo.stories.svelte +13 -13
  45. package/dist/components/Logo.stories.svelte.d.ts +1 -1
  46. package/dist/components/Logo.svelte +101 -95
  47. package/dist/components/LogsSidebar.svelte +553 -546
  48. package/dist/components/LogsSidebar.svelte.d.ts +1 -1
  49. package/dist/components/MarkdownDisplay.stories.svelte +29 -23
  50. package/dist/components/MarkdownDisplay.stories.svelte.d.ts +1 -1
  51. package/dist/components/MarkdownDisplay.svelte +16 -14
  52. package/dist/components/Navbar.stories.svelte +43 -38
  53. package/dist/components/Navbar.stories.svelte.d.ts +1 -1
  54. package/dist/components/Navbar.svelte +760 -706
  55. package/dist/components/Navbar.svelte.d.ts +1 -1
  56. package/dist/components/NodeSidebar.svelte +905 -746
  57. package/dist/components/NodeSidebar.svelte.d.ts +5 -1
  58. package/dist/components/NodeStatusOverlay.stories.svelte +82 -70
  59. package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +1 -1
  60. package/dist/components/NodeStatusOverlay.svelte +295 -280
  61. package/dist/components/NodeStatusOverlay.svelte.d.ts +3 -3
  62. package/dist/components/PipelineStatus.svelte +326 -300
  63. package/dist/components/PipelineStatus.svelte.d.ts +4 -4
  64. package/dist/components/PortCoordinateTracker.svelte +49 -47
  65. package/dist/components/PortCoordinateTracker.svelte.d.ts +1 -1
  66. package/dist/components/ReadOnlyDetails.svelte +156 -156
  67. package/dist/components/SchemaForm.stories.svelte +106 -98
  68. package/dist/components/SchemaForm.stories.svelte.d.ts +1 -1
  69. package/dist/components/SchemaForm.svelte +490 -463
  70. package/dist/components/SchemaForm.svelte.d.ts +2 -2
  71. package/dist/components/SettingsModal.svelte +226 -223
  72. package/dist/components/SettingsModal.svelte.d.ts +1 -1
  73. package/dist/components/SettingsPanel.svelte +637 -601
  74. package/dist/components/SettingsPanel.svelte.d.ts +1 -1
  75. package/dist/components/StatusIcon.stories.svelte +62 -49
  76. package/dist/components/StatusIcon.stories.svelte.d.ts +1 -1
  77. package/dist/components/StatusIcon.svelte +87 -87
  78. package/dist/components/StatusIcon.svelte.d.ts +2 -2
  79. package/dist/components/StatusLabel.stories.svelte +12 -12
  80. package/dist/components/StatusLabel.stories.svelte.d.ts +1 -1
  81. package/dist/components/StatusLabel.svelte +19 -19
  82. package/dist/components/ThemeToggle.stories.svelte +16 -16
  83. package/dist/components/ThemeToggle.stories.svelte.d.ts +1 -1
  84. package/dist/components/ThemeToggle.svelte +180 -169
  85. package/dist/components/ThemeToggle.svelte.d.ts +1 -1
  86. package/dist/components/UniversalNode.svelte +150 -138
  87. package/dist/components/UniversalNode.svelte.d.ts +3 -3
  88. package/dist/components/WorkflowEditor.svelte +1069 -1014
  89. package/dist/components/WorkflowEditor.svelte.d.ts +4 -4
  90. package/dist/components/form/FormArray.svelte +1034 -973
  91. package/dist/components/form/FormArray.svelte.d.ts +1 -1
  92. package/dist/components/form/FormAutocomplete.svelte +1021 -978
  93. package/dist/components/form/FormAutocomplete.svelte.d.ts +1 -1
  94. package/dist/components/form/FormCheckboxGroup.stories.svelte +23 -20
  95. package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +1 -1
  96. package/dist/components/form/FormCheckboxGroup.svelte +136 -136
  97. package/dist/components/form/FormCodeEditor.svelte +452 -434
  98. package/dist/components/form/FormField.svelte +366 -355
  99. package/dist/components/form/FormField.svelte.d.ts +2 -2
  100. package/dist/components/form/FormFieldLight.svelte +400 -384
  101. package/dist/components/form/FormFieldLight.svelte.d.ts +1 -1
  102. package/dist/components/form/FormFieldWrapper.stories.svelte +42 -42
  103. package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +1 -1
  104. package/dist/components/form/FormFieldWrapper.svelte +100 -93
  105. package/dist/components/form/FormFieldWrapper.svelte.d.ts +1 -1
  106. package/dist/components/form/FormFieldset.svelte +108 -108
  107. package/dist/components/form/FormFieldset.svelte.d.ts +2 -2
  108. package/dist/components/form/FormMarkdownEditor.svelte +758 -725
  109. package/dist/components/form/FormNumberField.stories.svelte +25 -25
  110. package/dist/components/form/FormNumberField.stories.svelte.d.ts +1 -1
  111. package/dist/components/form/FormNumberField.svelte +88 -88
  112. package/dist/components/form/FormRangeField.stories.svelte +20 -20
  113. package/dist/components/form/FormRangeField.stories.svelte.d.ts +1 -1
  114. package/dist/components/form/FormRangeField.svelte +234 -226
  115. package/dist/components/form/FormSelect.stories.svelte +38 -38
  116. package/dist/components/form/FormSelect.stories.svelte.d.ts +1 -1
  117. package/dist/components/form/FormSelect.svelte +101 -101
  118. package/dist/components/form/FormSelect.svelte.d.ts +1 -1
  119. package/dist/components/form/FormTemplateEditor.svelte +847 -798
  120. package/dist/components/form/FormTemplateEditor.svelte.d.ts +1 -1
  121. package/dist/components/form/FormTextField.stories.svelte +29 -23
  122. package/dist/components/form/FormTextField.stories.svelte.d.ts +1 -1
  123. package/dist/components/form/FormTextField.svelte +68 -68
  124. package/dist/components/form/FormTextarea.stories.svelte +28 -25
  125. package/dist/components/form/FormTextarea.stories.svelte.d.ts +1 -1
  126. package/dist/components/form/FormTextarea.svelte +74 -74
  127. package/dist/components/form/FormToggle.stories.svelte +23 -20
  128. package/dist/components/form/FormToggle.stories.svelte.d.ts +1 -1
  129. package/dist/components/form/FormToggle.svelte +98 -98
  130. package/dist/components/form/FormUISchemaRenderer.svelte +120 -113
  131. package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +3 -3
  132. package/dist/components/form/index.d.ts +19 -19
  133. package/dist/components/form/index.js +18 -18
  134. package/dist/components/form/templateAutocomplete.d.ts +2 -2
  135. package/dist/components/form/templateAutocomplete.js +64 -55
  136. package/dist/components/form/types.d.ts +6 -6
  137. package/dist/components/form/types.js +9 -4
  138. package/dist/components/icons/AlertCircleIcon.svelte +11 -0
  139. package/dist/components/icons/AlertCircleIcon.svelte.d.ts +26 -0
  140. package/dist/components/icons/CogIcon.svelte +11 -0
  141. package/dist/components/icons/CogIcon.svelte.d.ts +26 -0
  142. package/dist/components/interrupt/ChoicePrompt.stories.svelte +54 -38
  143. package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +1 -1
  144. package/dist/components/interrupt/ChoicePrompt.svelte +407 -383
  145. package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +1 -1
  146. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +48 -48
  147. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +1 -1
  148. package/dist/components/interrupt/ConfirmationPrompt.svelte +280 -274
  149. package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +1 -1
  150. package/dist/components/interrupt/FormPrompt.svelte +223 -218
  151. package/dist/components/interrupt/FormPrompt.svelte.d.ts +1 -1
  152. package/dist/components/interrupt/InterruptBubble.svelte +617 -583
  153. package/dist/components/interrupt/InterruptBubble.svelte.d.ts +2 -2
  154. package/dist/components/interrupt/ReviewPrompt.stories.svelte +66 -56
  155. package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +1 -1
  156. package/dist/components/interrupt/ReviewPrompt.svelte +861 -841
  157. package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +1 -1
  158. package/dist/components/interrupt/TextInputPrompt.stories.svelte +38 -33
  159. package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +1 -1
  160. package/dist/components/interrupt/TextInputPrompt.svelte +333 -328
  161. package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +1 -1
  162. package/dist/components/interrupt/index.d.ts +5 -5
  163. package/dist/components/interrupt/index.js +5 -5
  164. package/dist/components/layouts/MainLayout.svelte +724 -691
  165. package/dist/components/layouts/MainLayout.svelte.d.ts +6 -6
  166. package/dist/components/nodes/GatewayNode.stories.svelte +100 -99
  167. package/dist/components/nodes/GatewayNode.svelte +605 -571
  168. package/dist/components/nodes/GatewayNode.svelte.d.ts +3 -3
  169. package/dist/components/nodes/IdeaNode.stories.svelte +44 -43
  170. package/dist/components/nodes/IdeaNode.svelte +451 -437
  171. package/dist/components/nodes/IdeaNode.svelte.d.ts +1 -1
  172. package/dist/components/nodes/NotesNode.stories.svelte +65 -64
  173. package/dist/components/nodes/NotesNode.svelte +380 -369
  174. package/dist/components/nodes/NotesNode.svelte.d.ts +1 -1
  175. package/dist/components/nodes/SimpleNode.stories.svelte +145 -144
  176. package/dist/components/nodes/SimpleNode.svelte +486 -424
  177. package/dist/components/nodes/SimpleNode.svelte.d.ts +1 -1
  178. package/dist/components/nodes/SquareNode.stories.svelte +73 -73
  179. package/dist/components/nodes/SquareNode.svelte +439 -380
  180. package/dist/components/nodes/SquareNode.svelte.d.ts +1 -1
  181. package/dist/components/nodes/TerminalNode.stories.svelte +13 -13
  182. package/dist/components/nodes/TerminalNode.svelte +709 -670
  183. package/dist/components/nodes/TerminalNode.svelte.d.ts +1 -1
  184. package/dist/components/nodes/ToolNode.stories.svelte +181 -180
  185. package/dist/components/nodes/ToolNode.svelte +505 -447
  186. package/dist/components/nodes/ToolNode.svelte.d.ts +1 -1
  187. package/dist/components/nodes/WorkflowNode.stories.svelte +70 -46
  188. package/dist/components/nodes/WorkflowNode.svelte +621 -551
  189. package/dist/components/nodes/WorkflowNode.svelte.d.ts +3 -3
  190. package/dist/components/playground/ChatPanel.svelte +945 -889
  191. package/dist/components/playground/ExecutionLogs.svelte +495 -472
  192. package/dist/components/playground/InputCollector.svelte +449 -428
  193. package/dist/components/playground/MessageBubble.stories.svelte +47 -47
  194. package/dist/components/playground/MessageBubble.stories.svelte.d.ts +1 -1
  195. package/dist/components/playground/MessageBubble.svelte +626 -610
  196. package/dist/components/playground/MessageBubble.svelte.d.ts +1 -1
  197. package/dist/components/playground/Playground.svelte +1088 -1057
  198. package/dist/components/playground/Playground.svelte.d.ts +3 -3
  199. package/dist/components/playground/PlaygroundModal.svelte +208 -204
  200. package/dist/components/playground/PlaygroundModal.svelte.d.ts +3 -3
  201. package/dist/components/playground/SessionManager.svelte +527 -521
  202. package/dist/components/playground/SessionManager.svelte.d.ts +1 -1
  203. package/dist/config/agentSpecEndpoints.d.ts +1 -1
  204. package/dist/config/agentSpecEndpoints.js +20 -20
  205. package/dist/config/constants.js +2 -2
  206. package/dist/config/defaultCategories.d.ts +1 -1
  207. package/dist/config/defaultCategories.js +86 -86
  208. package/dist/config/defaultPortConfig.d.ts +1 -1
  209. package/dist/config/defaultPortConfig.js +144 -144
  210. package/dist/config/endpoints.d.ts +4 -4
  211. package/dist/config/endpoints.js +65 -65
  212. package/dist/config/runtimeConfig.d.ts +2 -2
  213. package/dist/config/runtimeConfig.js +8 -8
  214. package/dist/core/index.d.ts +63 -59
  215. package/dist/core/index.js +35 -33
  216. package/dist/display/index.d.ts +2 -2
  217. package/dist/display/index.js +2 -2
  218. package/dist/editor/index.d.ts +62 -62
  219. package/dist/editor/index.js +53 -53
  220. package/dist/form/code.d.ts +5 -5
  221. package/dist/form/code.js +14 -14
  222. package/dist/form/fieldRegistry.d.ts +3 -3
  223. package/dist/form/fieldRegistry.js +11 -9
  224. package/dist/form/full.d.ts +8 -8
  225. package/dist/form/full.js +9 -9
  226. package/dist/form/index.d.ts +18 -18
  227. package/dist/form/index.js +16 -16
  228. package/dist/form/markdown.d.ts +4 -4
  229. package/dist/form/markdown.js +8 -8
  230. package/dist/helpers/proximityConnect.d.ts +3 -3
  231. package/dist/helpers/proximityConnect.js +34 -32
  232. package/dist/helpers/workflowEditorHelper.d.ts +5 -5
  233. package/dist/helpers/workflowEditorHelper.js +108 -96
  234. package/dist/index.d.ts +6 -6
  235. package/dist/index.js +6 -6
  236. package/dist/mocks/app-environment.js +2 -2
  237. package/dist/mocks/app-forms.js +9 -9
  238. package/dist/mocks/app-navigation.js +11 -11
  239. package/dist/mocks/app-stores.js +8 -8
  240. package/dist/playground/index.d.ts +19 -19
  241. package/dist/playground/index.js +16 -16
  242. package/dist/playground/mount.d.ts +3 -3
  243. package/dist/playground/mount.js +24 -24
  244. package/dist/registry/builtinFormats.js +13 -13
  245. package/dist/registry/builtinNodes.d.ts +2 -2
  246. package/dist/registry/builtinNodes.js +77 -77
  247. package/dist/registry/index.d.ts +4 -4
  248. package/dist/registry/index.js +4 -4
  249. package/dist/registry/nodeComponentRegistry.d.ts +8 -8
  250. package/dist/registry/nodeComponentRegistry.js +11 -9
  251. package/dist/registry/plugin.d.ts +2 -2
  252. package/dist/registry/plugin.js +11 -11
  253. package/dist/registry/workflowFormatRegistry.d.ts +3 -3
  254. package/dist/registry/workflowFormatRegistry.js +2 -2
  255. package/dist/schema/index.d.ts +1 -1
  256. package/dist/schema/index.js +2 -2
  257. package/dist/services/agentSpecExecutionService.d.ts +3 -3
  258. package/dist/services/agentSpecExecutionService.js +59 -55
  259. package/dist/services/api.d.ts +2 -2
  260. package/dist/services/api.js +37 -37
  261. package/dist/services/apiVariableService.d.ts +1 -1
  262. package/dist/services/apiVariableService.js +41 -34
  263. package/dist/services/autoSaveService.js +8 -8
  264. package/dist/services/categoriesApi.d.ts +2 -2
  265. package/dist/services/categoriesApi.js +8 -8
  266. package/dist/services/draftStorage.d.ts +1 -1
  267. package/dist/services/draftStorage.js +11 -11
  268. package/dist/services/dynamicSchemaService.d.ts +1 -1
  269. package/dist/services/dynamicSchemaService.js +41 -39
  270. package/dist/services/globalSave.d.ts +2 -2
  271. package/dist/services/globalSave.js +41 -38
  272. package/dist/services/historyService.d.ts +1 -1
  273. package/dist/services/historyService.js +8 -8
  274. package/dist/services/interruptService.d.ts +1 -1
  275. package/dist/services/interruptService.js +35 -29
  276. package/dist/services/nodeExecutionService.d.ts +1 -1
  277. package/dist/services/nodeExecutionService.js +45 -44
  278. package/dist/services/playgroundService.d.ts +1 -1
  279. package/dist/services/playgroundService.js +29 -29
  280. package/dist/services/portConfigApi.d.ts +2 -2
  281. package/dist/services/portConfigApi.js +8 -8
  282. package/dist/services/settingsService.d.ts +2 -2
  283. package/dist/services/settingsService.js +25 -19
  284. package/dist/services/toastService.d.ts +4 -4
  285. package/dist/services/toastService.js +33 -33
  286. package/dist/services/variableService.d.ts +1 -1
  287. package/dist/services/variableService.js +36 -36
  288. package/dist/services/workflowStorage.d.ts +2 -2
  289. package/dist/services/workflowStorage.js +13 -13
  290. package/dist/settings/index.d.ts +7 -7
  291. package/dist/settings/index.js +6 -6
  292. package/dist/skins/default.d.ts +2 -0
  293. package/dist/skins/default.js +1 -0
  294. package/dist/skins/index.d.ts +13 -0
  295. package/dist/skins/index.js +30 -0
  296. package/dist/skins/slate.d.ts +2 -0
  297. package/dist/skins/slate.js +78 -0
  298. package/dist/stores/categoriesStore.svelte.d.ts +1 -1
  299. package/dist/stores/categoriesStore.svelte.js +5 -5
  300. package/dist/stores/editorStateMachine.svelte.d.ts +2 -2
  301. package/dist/stores/editorStateMachine.svelte.js +65 -33
  302. package/dist/stores/historyStore.svelte.d.ts +4 -4
  303. package/dist/stores/historyStore.svelte.js +4 -4
  304. package/dist/stores/interruptStore.svelte.d.ts +3 -3
  305. package/dist/stores/interruptStore.svelte.js +21 -21
  306. package/dist/stores/playgroundStore.svelte.d.ts +2 -2
  307. package/dist/stores/playgroundStore.svelte.js +25 -18
  308. package/dist/stores/portCoordinateStore.svelte.d.ts +2 -2
  309. package/dist/stores/portCoordinateStore.svelte.js +15 -8
  310. package/dist/stores/settingsStore.svelte.d.ts +2 -2
  311. package/dist/stores/settingsStore.svelte.js +62 -57
  312. package/dist/stores/workflowStore.svelte.d.ts +3 -3
  313. package/dist/stores/workflowStore.svelte.js +50 -47
  314. package/dist/stories/CanvasDecorator.svelte +35 -32
  315. package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
  316. package/dist/stories/EdgeDecorator.svelte +102 -99
  317. package/dist/stories/EdgeDecorator.svelte.d.ts +1 -1
  318. package/dist/stories/NodeDecorator.svelte +59 -53
  319. package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
  320. package/dist/stories/utils.d.ts +2 -2
  321. package/dist/stories/utils.js +105 -67
  322. package/dist/styles/base.css +599 -595
  323. package/dist/styles/toast.css +14 -14
  324. package/dist/styles/tokens.css +409 -378
  325. package/dist/svelte-app.d.ts +12 -9
  326. package/dist/svelte-app.js +40 -39
  327. package/dist/themes/default.d.ts +2 -0
  328. package/dist/themes/default.js +9 -0
  329. package/dist/themes/index.d.ts +13 -0
  330. package/dist/themes/index.js +44 -0
  331. package/dist/themes/minimal.d.ts +2 -0
  332. package/dist/themes/minimal.js +11 -0
  333. package/dist/types/agentspec.d.ts +18 -18
  334. package/dist/types/agentspec.js +2 -2
  335. package/dist/types/auth.d.ts +1 -1
  336. package/dist/types/auth.js +6 -6
  337. package/dist/types/config.d.ts +6 -6
  338. package/dist/types/events.d.ts +2 -2
  339. package/dist/types/events.js +2 -2
  340. package/dist/types/index.d.ts +32 -32
  341. package/dist/types/index.js +6 -6
  342. package/dist/types/interrupt.d.ts +6 -6
  343. package/dist/types/interrupt.js +21 -21
  344. package/dist/types/interruptState.d.ts +12 -12
  345. package/dist/types/interruptState.js +66 -66
  346. package/dist/types/playground.d.ts +7 -7
  347. package/dist/types/playground.js +14 -14
  348. package/dist/types/settings.d.ts +5 -3
  349. package/dist/types/settings.js +25 -18
  350. package/dist/types/skin.d.ts +31 -0
  351. package/dist/types/skin.js +1 -0
  352. package/dist/types/theme.d.ts +35 -0
  353. package/dist/types/theme.js +1 -0
  354. package/dist/types/uischema.d.ts +4 -4
  355. package/dist/types/uischema.js +3 -3
  356. package/dist/utils/colors.d.ts +1 -1
  357. package/dist/utils/colors.js +97 -95
  358. package/dist/utils/config.d.ts +2 -2
  359. package/dist/utils/config.js +48 -48
  360. package/dist/utils/connections.d.ts +2 -2
  361. package/dist/utils/connections.js +15 -15
  362. package/dist/utils/errors.js +3 -3
  363. package/dist/utils/fetchWithAuth.d.ts +1 -1
  364. package/dist/utils/fetchWithAuth.js +2 -2
  365. package/dist/utils/handleIds.d.ts +2 -2
  366. package/dist/utils/handleIds.js +8 -8
  367. package/dist/utils/handlePositioning.d.ts +1 -1
  368. package/dist/utils/handlePositioning.js +2 -2
  369. package/dist/utils/icons.d.ts +1 -1
  370. package/dist/utils/icons.js +74 -74
  371. package/dist/utils/logger.d.ts +1 -1
  372. package/dist/utils/logger.js +7 -7
  373. package/dist/utils/nodeStatus.d.ts +1 -1
  374. package/dist/utils/nodeStatus.js +48 -48
  375. package/dist/utils/nodeTypes.d.ts +1 -1
  376. package/dist/utils/nodeTypes.js +21 -20
  377. package/dist/utils/nodeWrapper.d.ts +7 -7
  378. package/dist/utils/nodeWrapper.js +21 -19
  379. package/dist/utils/performanceUtils.d.ts +1 -1
  380. package/dist/utils/performanceUtils.js +2 -1
  381. package/dist/utils/sanitize.js +1 -1
  382. package/dist/utils/uischema.d.ts +2 -2
  383. package/dist/utils/uischema.js +8 -8
  384. package/dist/utils/validation.js +20 -8
  385. package/package.json +1 -1
@@ -5,8 +5,8 @@
5
5
  *
6
6
  * @module services/dynamicSchemaService
7
7
  */
8
- import { getEndpointConfig } from './api.js';
9
- import { DEFAULT_CACHE_TTL_MS } from '../config/constants.js';
8
+ import { getEndpointConfig } from "./api.js";
9
+ import { DEFAULT_CACHE_TTL_MS } from "../config/constants.js";
10
10
  /**
11
11
  * Schema cache with TTL support
12
12
  * Key format: `{nodeTypeId}:{instanceId}` or `{nodeTypeId}` for type-level caching
@@ -30,13 +30,13 @@ const DEFAULT_CACHE_TTL = DEFAULT_CACHE_TTL_MS;
30
30
  * ```
31
31
  */
32
32
  function resolveVariablePath(context, path) {
33
- const parts = path.split('.');
33
+ const parts = path.split(".");
34
34
  let current = context;
35
35
  for (const part of parts) {
36
36
  if (current === null || current === undefined) {
37
37
  return undefined;
38
38
  }
39
- if (typeof current === 'object' && part in current) {
39
+ if (typeof current === "object" && part in current) {
40
40
  current = current[part];
41
41
  }
42
42
  else {
@@ -77,7 +77,7 @@ function resolveTemplate(template, parameterMapping, context) {
77
77
  const value = resolveVariablePath(context, contextPath);
78
78
  if (value !== undefined) {
79
79
  // Use global regex to replace all occurrences
80
- const regex = new RegExp(`\\{${variableName}\\}`, 'g');
80
+ const regex = new RegExp(`\\{${variableName}\\}`, "g");
81
81
  resolved = resolved.replace(regex, encodeURIComponent(value));
82
82
  }
83
83
  }
@@ -145,7 +145,7 @@ export async function fetchDynamicSchema(endpoint, node, workflowId) {
145
145
  metadata: node.data.metadata,
146
146
  config: node.data.config,
147
147
  extensions: node.data.extensions,
148
- workflowId
148
+ workflowId,
149
149
  };
150
150
  // Generate cache key
151
151
  const cacheKey = generateCacheKey(endpoint, context);
@@ -156,39 +156,41 @@ export async function fetchDynamicSchema(endpoint, node, workflowId) {
156
156
  return {
157
157
  success: true,
158
158
  schema: cached.schema,
159
- fromCache: true
159
+ fromCache: true,
160
160
  };
161
161
  }
162
162
  }
163
163
  // Resolve the URL with template variables
164
164
  let url = resolveTemplate(endpoint.url, endpoint.parameterMapping, context);
165
165
  // If URL is relative, try to prepend base URL from endpoint config
166
- if (url.startsWith('/')) {
166
+ if (url.startsWith("/")) {
167
167
  const currentConfig = getEndpointConfig();
168
168
  if (currentConfig?.baseUrl) {
169
169
  // Remove trailing slash from base URL and leading slash from relative URL
170
- const baseUrl = currentConfig.baseUrl.replace(/\/$/, '');
170
+ const baseUrl = currentConfig.baseUrl.replace(/\/$/, "");
171
171
  url = `${baseUrl}${url}`;
172
172
  }
173
173
  }
174
174
  // Prepare request options
175
- const method = endpoint.method ?? 'GET';
175
+ const method = endpoint.method ?? "GET";
176
176
  const timeout = endpoint.timeout ?? 10000;
177
177
  const headers = {
178
- Accept: 'application/json',
179
- 'Content-Type': 'application/json',
180
- ...endpoint.headers
178
+ Accept: "application/json",
179
+ "Content-Type": "application/json",
180
+ ...endpoint.headers,
181
181
  };
182
182
  // Add auth headers from endpoint config if available
183
183
  const currentConfig = getEndpointConfig();
184
184
  if (currentConfig?.auth) {
185
- if (currentConfig.auth.type === 'bearer' && currentConfig.auth.token) {
186
- headers['Authorization'] = `Bearer ${currentConfig.auth.token}`;
185
+ if (currentConfig.auth.type === "bearer" && currentConfig.auth.token) {
186
+ headers["Authorization"] = `Bearer ${currentConfig.auth.token}`;
187
187
  }
188
- else if (currentConfig.auth.type === 'api_key' && currentConfig.auth.apiKey) {
189
- headers['X-API-Key'] = currentConfig.auth.apiKey;
188
+ else if (currentConfig.auth.type === "api_key" &&
189
+ currentConfig.auth.apiKey) {
190
+ headers["X-API-Key"] = currentConfig.auth.apiKey;
190
191
  }
191
- else if (currentConfig.auth.type === 'custom' && currentConfig.auth.headers) {
192
+ else if (currentConfig.auth.type === "custom" &&
193
+ currentConfig.auth.headers) {
192
194
  Object.assign(headers, currentConfig.auth.headers);
193
195
  }
194
196
  }
@@ -196,14 +198,14 @@ export async function fetchDynamicSchema(endpoint, node, workflowId) {
196
198
  const fetchOptions = {
197
199
  method,
198
200
  headers,
199
- signal: AbortSignal.timeout(timeout)
201
+ signal: AbortSignal.timeout(timeout),
200
202
  };
201
203
  // Add body for non-GET requests
202
- if (method !== 'GET' && endpoint.body) {
204
+ if (method !== "GET" && endpoint.body) {
203
205
  // Resolve any template variables in the body
204
206
  const resolvedBody = {};
205
207
  for (const [key, value] of Object.entries(endpoint.body)) {
206
- if (typeof value === 'string') {
208
+ if (typeof value === "string") {
207
209
  resolvedBody[key] = resolveTemplate(value, endpoint.parameterMapping, context);
208
210
  }
209
211
  else {
@@ -218,7 +220,7 @@ export async function fetchDynamicSchema(endpoint, node, workflowId) {
218
220
  const errorText = await response.text();
219
221
  return {
220
222
  success: false,
221
- error: `HTTP ${response.status}: ${errorText || response.statusText}`
223
+ error: `HTTP ${response.status}: ${errorText || response.statusText}`,
222
224
  };
223
225
  }
224
226
  const data = await response.json();
@@ -227,26 +229,26 @@ export async function fetchDynamicSchema(endpoint, node, workflowId) {
227
229
  // 2. Wrapped in { data: ConfigSchema } or { schema: ConfigSchema }
228
230
  // 3. Wrapped in { success: true, data: ConfigSchema }
229
231
  let schema;
230
- if (data.type === 'object' && data.properties) {
232
+ if (data.type === "object" && data.properties) {
231
233
  // Direct ConfigSchema
232
234
  schema = data;
233
235
  }
234
- else if (data.data?.type === 'object' && data.data?.properties) {
236
+ else if (data.data?.type === "object" && data.data?.properties) {
235
237
  // Wrapped in { data: ... }
236
238
  schema = data.data;
237
239
  }
238
- else if (data.schema?.type === 'object' && data.schema?.properties) {
240
+ else if (data.schema?.type === "object" && data.schema?.properties) {
239
241
  // Wrapped in { schema: ... }
240
242
  schema = data.schema;
241
243
  }
242
- else if (data.success && data.data?.type === 'object') {
244
+ else if (data.success && data.data?.type === "object") {
243
245
  // Wrapped in { success: true, data: ... }
244
246
  schema = data.data;
245
247
  }
246
248
  if (!schema) {
247
249
  return {
248
250
  success: false,
249
- error: 'Invalid schema format received from endpoint'
251
+ error: "Invalid schema format received from endpoint",
250
252
  };
251
253
  }
252
254
  // Cache the schema (if caching is enabled)
@@ -254,32 +256,32 @@ export async function fetchDynamicSchema(endpoint, node, workflowId) {
254
256
  schemaCache.set(cacheKey, {
255
257
  schema,
256
258
  cachedAt: Date.now(),
257
- cacheKey
259
+ cacheKey,
258
260
  });
259
261
  }
260
262
  return {
261
263
  success: true,
262
264
  schema,
263
- fromCache: false
265
+ fromCache: false,
264
266
  };
265
267
  }
266
268
  catch (error) {
267
269
  // Handle specific error types
268
270
  if (error instanceof Error) {
269
- if (error.name === 'AbortError' || error.name === 'TimeoutError') {
271
+ if (error.name === "AbortError" || error.name === "TimeoutError") {
270
272
  return {
271
273
  success: false,
272
- error: `Request timed out after ${timeout}ms`
274
+ error: `Request timed out after ${timeout}ms`,
273
275
  };
274
276
  }
275
277
  return {
276
278
  success: false,
277
- error: error.message
279
+ error: error.message,
278
280
  };
279
281
  }
280
282
  return {
281
283
  success: false,
282
- error: 'Unknown error occurred while fetching schema'
284
+ error: "Unknown error occurred while fetching schema",
283
285
  };
284
286
  }
285
287
  }
@@ -311,13 +313,13 @@ export function resolveExternalEditUrl(link, node, workflowId, callbackUrl) {
311
313
  metadata: node.data.metadata,
312
314
  config: node.data.config,
313
315
  extensions: node.data.extensions,
314
- workflowId
316
+ workflowId,
315
317
  };
316
318
  // Resolve the URL with template variables
317
319
  let url = resolveTemplate(link.url, link.parameterMapping, context);
318
320
  // Append callback URL if configured
319
321
  if (callbackUrl && link.callbackUrlParam) {
320
- const separator = url.includes('?') ? '&' : '?';
322
+ const separator = url.includes("?") ? "&" : "?";
321
323
  url = `${url}${separator}${link.callbackUrlParam}=${encodeURIComponent(callbackUrl)}`;
322
324
  }
323
325
  return url;
@@ -351,16 +353,16 @@ export function getEffectiveConfigEditOptions(node) {
351
353
  externalEditLink: (instanceConfig.externalEditLink ?? typeConfig.externalEditLink)
352
354
  ? {
353
355
  ...(typeConfig.externalEditLink ?? {}),
354
- ...(instanceConfig.externalEditLink ?? {})
356
+ ...(instanceConfig.externalEditLink ?? {}),
355
357
  }
356
358
  : undefined,
357
359
  // Deep merge dynamic schema
358
360
  dynamicSchema: (instanceConfig.dynamicSchema ?? typeConfig.dynamicSchema)
359
361
  ? {
360
362
  ...(typeConfig.dynamicSchema ?? {}),
361
- ...(instanceConfig.dynamicSchema ?? {})
363
+ ...(instanceConfig.dynamicSchema ?? {}),
362
364
  }
363
- : undefined
365
+ : undefined,
364
366
  };
365
367
  }
366
368
  /**
@@ -393,7 +395,7 @@ export function invalidateSchemaCache(node, endpoint) {
393
395
  type: node.type,
394
396
  metadata: node.data.metadata,
395
397
  config: node.data.config,
396
- extensions: node.data.extensions
398
+ extensions: node.data.extensions,
397
399
  };
398
400
  const cacheKey = generateCacheKey(endpoint, context);
399
401
  schemaCache.delete(cacheKey);
@@ -7,8 +7,8 @@
7
7
  * reimplementing the logic, ensuring "blur active element" flushing and metadata
8
8
  * construction happen in exactly one place.
9
9
  */
10
- import type { Workflow } from '../types/index.js';
11
- import type { FlowDropEventHandlers, FlowDropFeatures } from '../types/events.js';
10
+ import type { Workflow } from "../types/index.js";
11
+ import type { FlowDropEventHandlers, FlowDropFeatures } from "../types/events.js";
12
12
  /**
13
13
  * Minimal interface for the enhanced API client used when an authProvider is present.
14
14
  * Matches the surface of EnhancedFlowDropApiClient that save needs.
@@ -7,14 +7,14 @@
7
7
  * reimplementing the logic, ensuring "blur active element" flushing and metadata
8
8
  * construction happen in exactly one place.
9
9
  */
10
- import { tick } from 'svelte';
11
- import { getWorkflowStore, workflowActions, markAsSaved as storeMarkAsSaved } from '../stores/workflowStore.svelte.js';
12
- import { workflowApi, setEndpointConfig } from './api.js';
13
- import { createEndpointConfig } from '../config/endpoints.js';
14
- import { v4 as uuidv4 } from 'uuid';
15
- import { DEFAULT_WORKFLOW_FORMAT } from '../types/index.js';
16
- import { apiToasts, workflowToasts, dismissToast } from './toastService.js';
17
- import { DEFAULT_FEATURES } from '../types/events.js';
10
+ import { tick } from "svelte";
11
+ import { getWorkflowStore, workflowActions, markAsSaved as storeMarkAsSaved, } from "../stores/workflowStore.svelte.js";
12
+ import { workflowApi, setEndpointConfig } from "./api.js";
13
+ import { createEndpointConfig } from "../config/endpoints.js";
14
+ import { v4 as uuidv4 } from "uuid";
15
+ import { DEFAULT_WORKFLOW_FORMAT } from "../types/index.js";
16
+ import { apiToasts, workflowToasts, dismissToast } from "./toastService.js";
17
+ import { DEFAULT_FEATURES } from "../types/events.js";
18
18
  // ---------------------------------------------------------------------------
19
19
  // Internal helpers
20
20
  // ---------------------------------------------------------------------------
@@ -25,7 +25,7 @@ import { DEFAULT_FEATURES } from '../types/events.js';
25
25
  */
26
26
  async function ensureApiConfiguration() {
27
27
  try {
28
- const { getEndpointConfig } = await import('./api.js');
28
+ const { getEndpointConfig } = await import("./api.js");
29
29
  const currentConfig = getEndpointConfig();
30
30
  if (currentConfig && currentConfig.baseUrl) {
31
31
  return;
@@ -35,20 +35,20 @@ async function ensureApiConfiguration() {
35
35
  // Could not check existing API configuration, initializing
36
36
  }
37
37
  // API configuration is not initialized — derive URL from window.location when available
38
- const apiBaseUrl = typeof window !== 'undefined'
38
+ const apiBaseUrl = typeof window !== "undefined"
39
39
  ? `${window.location.protocol}//${window.location.host}/api/flowdrop`
40
- : '/api/flowdrop';
40
+ : "/api/flowdrop";
41
41
  const config = createEndpointConfig(apiBaseUrl, {
42
42
  auth: {
43
- type: 'none'
43
+ type: "none",
44
44
  },
45
45
  timeout: 10000,
46
46
  retry: {
47
47
  enabled: true,
48
48
  maxAttempts: 2,
49
49
  delay: 1000,
50
- backoff: 'exponential'
51
- }
50
+ backoff: "exponential",
51
+ },
52
52
  });
53
53
  setEndpointConfig(config);
54
54
  }
@@ -60,7 +60,8 @@ async function ensureApiConfiguration() {
60
60
  * Must be called once, in this file only, so the logic lives in exactly one place.
61
61
  */
62
62
  async function flushPendingFormChanges() {
63
- if (typeof document !== 'undefined' && document.activeElement instanceof HTMLElement) {
63
+ if (typeof document !== "undefined" &&
64
+ document.activeElement instanceof HTMLElement) {
64
65
  document.activeElement.blur();
65
66
  }
66
67
  // Wait for any pending DOM / Svelte reactive updates before reading the store
@@ -93,7 +94,7 @@ export async function globalSaveWorkflow(options = {}) {
93
94
  const currentWorkflow = getWorkflowStore();
94
95
  if (!currentWorkflow) {
95
96
  if (features.showToasts) {
96
- apiToasts.error('Save workflow', 'No workflow to save');
97
+ apiToasts.error("Save workflow", "No workflow to save");
97
98
  }
98
99
  return;
99
100
  }
@@ -104,7 +105,9 @@ export async function globalSaveWorkflow(options = {}) {
104
105
  return;
105
106
  }
106
107
  }
107
- const loadingToast = features.showToasts ? apiToasts.loading('Saving workflow') : null;
108
+ const loadingToast = features.showToasts
109
+ ? apiToasts.loading("Saving workflow")
110
+ : null;
108
111
  try {
109
112
  // Ensure API configuration is initialised (needed when called outside App.svelte)
110
113
  await ensureApiConfiguration();
@@ -118,17 +121,17 @@ export async function globalSaveWorkflow(options = {}) {
118
121
  const workflowId = currentWorkflow.id || uuidv4();
119
122
  const finalWorkflow = {
120
123
  id: workflowId,
121
- name: currentWorkflow.name || 'Untitled Workflow',
122
- description: currentWorkflow.description || '',
124
+ name: currentWorkflow.name || "Untitled Workflow",
125
+ description: currentWorkflow.description || "",
123
126
  nodes: currentWorkflow.nodes || [],
124
127
  edges: currentWorkflow.edges || [],
125
128
  metadata: {
126
129
  ...currentWorkflow.metadata,
127
- version: currentWorkflow.metadata?.version || '1.0.0',
130
+ version: currentWorkflow.metadata?.version || "1.0.0",
128
131
  format: currentWorkflow.metadata?.format || DEFAULT_WORKFLOW_FORMAT,
129
132
  createdAt: currentWorkflow.metadata?.createdAt || new Date().toISOString(),
130
- updatedAt: new Date().toISOString()
131
- }
133
+ updatedAt: new Date().toISOString(),
134
+ },
132
135
  };
133
136
  // Step 4 — Persist
134
137
  let savedWorkflow;
@@ -158,8 +161,8 @@ export async function globalSaveWorkflow(options = {}) {
158
161
  name: finalWorkflow.name,
159
162
  metadata: {
160
163
  ...finalWorkflow.metadata,
161
- ...savedWorkflow.metadata
162
- }
164
+ ...savedWorkflow.metadata,
165
+ },
163
166
  });
164
167
  }
165
168
  // Step 6a — Mark dirty state as clean
@@ -184,7 +187,7 @@ export async function globalSaveWorkflow(options = {}) {
184
187
  catch (error) {
185
188
  if (loadingToast)
186
189
  dismissToast(loadingToast);
187
- const errorObj = error instanceof Error ? error : new Error('Unknown error occurred');
190
+ const errorObj = error instanceof Error ? error : new Error("Unknown error occurred");
188
191
  // onSaveError hook
189
192
  const currentWorkflowForError = getWorkflowStore();
190
193
  if (eventHandlers?.onSaveError && currentWorkflowForError) {
@@ -193,10 +196,10 @@ export async function globalSaveWorkflow(options = {}) {
193
196
  // onApiError hook — return true suppresses the default toast
194
197
  let suppressToast = false;
195
198
  if (eventHandlers?.onApiError) {
196
- suppressToast = eventHandlers.onApiError(errorObj, 'save') === true;
199
+ suppressToast = eventHandlers.onApiError(errorObj, "save") === true;
197
200
  }
198
201
  if (features.showToasts && !suppressToast) {
199
- apiToasts.error('Save workflow', errorObj.message);
202
+ apiToasts.error("Save workflow", errorObj.message);
200
203
  }
201
204
  throw error;
202
205
  }
@@ -217,30 +220,30 @@ export async function globalExportWorkflow(options = {}) {
217
220
  const currentWorkflow = getWorkflowStore();
218
221
  if (!currentWorkflow) {
219
222
  if (features.showToasts) {
220
- apiToasts.error('Export workflow', 'No workflow to export');
223
+ apiToasts.error("Export workflow", "No workflow to export");
221
224
  }
222
225
  return;
223
226
  }
224
227
  // Build the canonical export object — preserve all metadata fields
225
228
  const finalWorkflow = {
226
- id: currentWorkflow.id || 'untitled-workflow',
227
- name: currentWorkflow.name || 'Untitled Workflow',
228
- description: currentWorkflow.description || '',
229
+ id: currentWorkflow.id || "untitled-workflow",
230
+ name: currentWorkflow.name || "Untitled Workflow",
231
+ description: currentWorkflow.description || "",
229
232
  nodes: currentWorkflow.nodes || [],
230
233
  edges: currentWorkflow.edges || [],
231
234
  metadata: {
232
235
  ...currentWorkflow.metadata,
233
- version: currentWorkflow.metadata?.version || '1.0.0',
236
+ version: currentWorkflow.metadata?.version || "1.0.0",
234
237
  format: currentWorkflow.metadata?.format || DEFAULT_WORKFLOW_FORMAT,
235
238
  createdAt: currentWorkflow.metadata?.createdAt || new Date().toISOString(),
236
- updatedAt: new Date().toISOString()
237
- }
239
+ updatedAt: new Date().toISOString(),
240
+ },
238
241
  };
239
242
  // Trigger browser download
240
243
  const dataStr = JSON.stringify(finalWorkflow, null, 2);
241
- const dataBlob = new Blob([dataStr], { type: 'application/json' });
244
+ const dataBlob = new Blob([dataStr], { type: "application/json" });
242
245
  const url = URL.createObjectURL(dataBlob);
243
- const link = document.createElement('a');
246
+ const link = document.createElement("a");
244
247
  link.href = url;
245
248
  link.download = `${finalWorkflow.name}.json`;
246
249
  link.click();
@@ -250,7 +253,7 @@ export async function globalExportWorkflow(options = {}) {
250
253
  }
251
254
  }
252
255
  catch (error) {
253
- const errorObj = error instanceof Error ? error : new Error('Unknown error occurred');
254
- apiToasts.error('Export workflow', errorObj.message);
256
+ const errorObj = error instanceof Error ? error : new Error("Unknown error occurred");
257
+ apiToasts.error("Export workflow", errorObj.message);
255
258
  }
256
259
  }
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * @module services/historyService
8
8
  */
9
- import type { Workflow } from '../types/index.js';
9
+ import type { Workflow } from "../types/index.js";
10
10
  /**
11
11
  * Represents a single entry in the history stack
12
12
  */
@@ -6,8 +6,8 @@
6
6
  *
7
7
  * @module services/historyService
8
8
  */
9
- import { DEFAULT_BEHAVIOR_SETTINGS } from '../types/settings.js';
10
- import { logger } from '../utils/logger.js';
9
+ import { DEFAULT_BEHAVIOR_SETTINGS } from "../types/settings.js";
10
+ import { logger } from "../utils/logger.js";
11
11
  // =========================================================================
12
12
  // History Service Class
13
13
  // =========================================================================
@@ -77,7 +77,7 @@ export class HistoryService {
77
77
  this.undoStack.push({
78
78
  snapshot: this.cloneWorkflow(workflow),
79
79
  timestamp: Date.now(),
80
- description: 'Initial state'
80
+ description: "Initial state",
81
81
  });
82
82
  this.notifyChange();
83
83
  }
@@ -154,7 +154,7 @@ export class HistoryService {
154
154
  */
155
155
  startTransaction(workflow, description) {
156
156
  if (this.inTransaction) {
157
- logger.warn('HistoryService: Transaction already in progress, ignoring startTransaction');
157
+ logger.warn("HistoryService: Transaction already in progress, ignoring startTransaction");
158
158
  return;
159
159
  }
160
160
  this.inTransaction = true;
@@ -168,7 +168,7 @@ export class HistoryService {
168
168
  */
169
169
  commitTransaction() {
170
170
  if (!this.inTransaction || !this.transactionSnapshot) {
171
- logger.warn('HistoryService: No transaction in progress, ignoring commitTransaction');
171
+ logger.warn("HistoryService: No transaction in progress, ignoring commitTransaction");
172
172
  return;
173
173
  }
174
174
  // Push the snapshot captured at transaction start
@@ -205,7 +205,7 @@ export class HistoryService {
205
205
  this.undoStack.push({
206
206
  snapshot: this.cloneWorkflow(currentWorkflow),
207
207
  timestamp: Date.now(),
208
- description: 'Initial state'
208
+ description: "Initial state",
209
209
  });
210
210
  }
211
211
  this.notifyChange();
@@ -221,7 +221,7 @@ export class HistoryService {
221
221
  canRedo: this.redoStack.length > 0,
222
222
  currentIndex: this.undoStack.length - 1,
223
223
  historyLength: this.undoStack.length + this.redoStack.length,
224
- isInTransaction: this.inTransaction
224
+ isInTransaction: this.inTransaction,
225
225
  };
226
226
  }
227
227
  /**
@@ -272,7 +272,7 @@ export class HistoryService {
272
272
  this.undoStack.push({
273
273
  snapshot: this.cloneWorkflow(workflow),
274
274
  timestamp: Date.now(),
275
- description
275
+ description,
276
276
  });
277
277
  // Trim history if over limit
278
278
  this.trimHistory();
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * @module services/interruptService
9
9
  */
10
- import type { Interrupt, InterruptPollingConfig } from '../types/interrupt.js';
10
+ import type { Interrupt, InterruptPollingConfig } from "../types/interrupt.js";
11
11
  /**
12
12
  * Interrupt Service class
13
13
  *