@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
@@ -0,0 +1,78 @@
1
+ export const slateSkin = {
2
+ tokens: {
3
+ // --- Display / structural tokens (apply in both light and dark) ---
4
+ // Node icon: hide squircle, show circle dot
5
+ "node-icon-display": "none",
6
+ "node-circle-display": "flex",
7
+ // Sidebar: hide search + header, hide cards, show flat list
8
+ "sidebar-search-display": "none",
9
+ "sidebar-header-display": "none",
10
+ "sidebar-card-display": "none",
11
+ "sidebar-flat-display": "block",
12
+ // Navbar: split buttons instead of dropdown
13
+ "navbar-split-display": "flex",
14
+ "navbar-dropdown-display": "none",
15
+ // --- Light mode color palette (cool lavender-white) ---
16
+ background: "#f6f6ff",
17
+ foreground: "#13131a",
18
+ muted: "#eeeef8",
19
+ "muted-foreground": "#5a5a7a",
20
+ card: "#ffffff",
21
+ "card-foreground": "#13131a",
22
+ border: "#d0d0e8",
23
+ "border-muted": "#e4e4f4",
24
+ "border-strong": "#b0b0cc",
25
+ header: "#ededf8",
26
+ "layout-background": "linear-gradient(135deg, #f4f4ff 0%, #ece8ff 50%, #e6e0ff 100%)",
27
+ // Primary brand colors (website accent purple)
28
+ primary: "#6c63ff",
29
+ "primary-hover": "#5b52ef",
30
+ "primary-foreground": "#ffffff",
31
+ "primary-muted": "rgba(108, 99, 255, 0.1)",
32
+ // Scrollbar
33
+ "scrollbar-thumb": "#d0d0e8",
34
+ "scrollbar-track": "#f0f0f8",
35
+ // Backdrop
36
+ backdrop: "rgba(246, 246, 255, 0.9)",
37
+ // Node border and port ring
38
+ "node-border": "#9898b8",
39
+ "node-border-hover": "#7878a8",
40
+ "handle-border": "#ffffff",
41
+ // Category header: dim purple-grey
42
+ "sidebar-category-color": "#c0c0d8",
43
+ // Flat item text: dark for light bg readability
44
+ "sidebar-flat-item-color": "#4a4a6a",
45
+ },
46
+ darkTokens: {
47
+ // --- Dark mode color palette (deep navy / original slate) ---
48
+ background: "#13131a",
49
+ foreground: "#c0c0d8",
50
+ muted: "#1a1a28",
51
+ "muted-foreground": "#7a7a9a",
52
+ card: "#1a1a28",
53
+ "card-foreground": "#e8e8f0",
54
+ border: "#2a2a3a",
55
+ "border-muted": "#1e1e2a",
56
+ "border-strong": "#3a3a55",
57
+ header: "#1a1a25",
58
+ "layout-background": "#0a0a0f",
59
+ // Primary brand colors
60
+ primary: "#6c63ff",
61
+ "primary-hover": "#7c74ff",
62
+ "primary-foreground": "#ffffff",
63
+ "primary-muted": "rgba(108, 99, 255, 0.15)",
64
+ // Scrollbar
65
+ "scrollbar-thumb": "#2a2a3a",
66
+ "scrollbar-track": "#13131a",
67
+ // Backdrop
68
+ backdrop: "rgba(19, 19, 26, 0.9)",
69
+ // Node border and port ring: purplish-grey matching dark palette
70
+ "node-border": "#9898b8",
71
+ "node-border-hover": "#aeaed0",
72
+ "handle-border": "#9898b8",
73
+ // Category header: extremely dim
74
+ "sidebar-category-color": "#3a3a55",
75
+ // Flat item text: muted, not full-brightness white
76
+ "sidebar-flat-item-color": "#8888aa",
77
+ },
78
+ };
@@ -4,7 +4,7 @@
4
4
  * Manages category definitions with merged defaults and API-provided overrides.
5
5
  * Exposes lookup helpers for icon, color, and label resolution.
6
6
  */
7
- import type { CategoryDefinition, NodeCategory } from '../types/index.js';
7
+ import type { CategoryDefinition, NodeCategory } from "../types/index.js";
8
8
  /**
9
9
  * Get all category definitions, sorted by weight.
10
10
  */
@@ -4,7 +4,7 @@
4
4
  * Manages category definitions with merged defaults and API-provided overrides.
5
5
  * Exposes lookup helpers for icon, color, and label resolution.
6
6
  */
7
- import { DEFAULT_CATEGORIES } from '../config/defaultCategories.js';
7
+ import { DEFAULT_CATEGORIES } from "../config/defaultCategories.js";
8
8
  /**
9
9
  * Internal reactive state holding the category definitions.
10
10
  * Initialized with defaults, updated when API data is fetched.
@@ -39,7 +39,7 @@ export function initializeCategories(apiCategories) {
39
39
  for (const cat of apiCategories) {
40
40
  defaultMap.set(cat.name, {
41
41
  ...defaultMap.get(cat.name),
42
- ...cat
42
+ ...cat,
43
43
  });
44
44
  }
45
45
  categoriesState = Array.from(defaultMap.values());
@@ -55,19 +55,19 @@ export function getCategoryLabel(category) {
55
55
  return category
56
56
  .split(/[\s_-]+/)
57
57
  .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
58
- .join(' ');
58
+ .join(" ");
59
59
  }
60
60
  /**
61
61
  * Get the icon for a category.
62
62
  */
63
63
  export function getCategoryIcon(category) {
64
- return categoryMap.get(category)?.icon ?? 'mdi:folder';
64
+ return categoryMap.get(category)?.icon ?? "mdi:folder";
65
65
  }
66
66
  /**
67
67
  * Get the color token for a category.
68
68
  */
69
69
  export function getCategoryColor(category) {
70
- return categoryMap.get(category)?.color ?? 'var(--fd-node-slate)';
70
+ return categoryMap.get(category)?.color ?? "var(--fd-node-slate)";
71
71
  }
72
72
  /**
73
73
  * Get the full category definition, or undefined if not found.
@@ -7,8 +7,8 @@
7
7
  *
8
8
  * @module stores/editorStateMachine
9
9
  */
10
- export type EditorState = 'uninitialized' | 'loading' | 'idle' | 'dragging' | 'connecting' | 'dropping' | 'restoring' | 'deleting' | 'updating_node';
11
- export type EditorEvent = 'WORKFLOW_LOADED' | 'LOAD_COMPLETE' | 'START_DRAG' | 'STOP_DRAG' | 'START_CONNECT' | 'CONNECTION_MADE' | 'CONNECTION_CANCELLED' | 'START_DROP' | 'DROP_COMPLETE' | 'DROP_CANCELLED' | 'START_RESTORE' | 'RESTORE_COMPLETE' | 'EXTERNAL_STORE_CHANGE' | 'SYNC_COMPLETE' | 'START_DELETE' | 'DELETE_COMPLETE' | 'START_NODE_UPDATE' | 'UPDATE_COMPLETE' | 'WORKFLOW_SWITCHED' | 'WORKFLOW_CLEARED' | 'RESET';
10
+ export type EditorState = "uninitialized" | "loading" | "idle" | "dragging" | "connecting" | "dropping" | "restoring" | "deleting" | "updating_node";
11
+ export type EditorEvent = "WORKFLOW_LOADED" | "LOAD_COMPLETE" | "START_DRAG" | "STOP_DRAG" | "START_CONNECT" | "CONNECTION_MADE" | "CONNECTION_CANCELLED" | "START_DROP" | "DROP_COMPLETE" | "DROP_CANCELLED" | "START_RESTORE" | "RESTORE_COMPLETE" | "EXTERNAL_STORE_CHANGE" | "SYNC_COMPLETE" | "START_DELETE" | "DELETE_COMPLETE" | "START_NODE_UPDATE" | "UPDATE_COMPLETE" | "WORKFLOW_SWITCHED" | "WORKFLOW_CLEARED" | "RESET";
12
12
  /** What operations are permitted in the current state */
13
13
  export interface StatePermissions {
14
14
  /** Whether the editor can write to the global workflow store */
@@ -7,64 +7,96 @@
7
7
  *
8
8
  * @module stores/editorStateMachine
9
9
  */
10
- import { logger } from '../utils/logger.js';
10
+ import { logger } from "../utils/logger.js";
11
11
  const transitions = {
12
12
  uninitialized: {
13
- WORKFLOW_LOADED: 'loading'
13
+ WORKFLOW_LOADED: "loading",
14
14
  },
15
15
  loading: {
16
- LOAD_COMPLETE: 'idle'
16
+ LOAD_COMPLETE: "idle",
17
17
  },
18
18
  idle: {
19
- START_DRAG: 'dragging',
20
- START_CONNECT: 'connecting',
21
- START_DROP: 'dropping',
22
- START_RESTORE: 'restoring',
23
- EXTERNAL_STORE_CHANGE: 'loading',
24
- START_DELETE: 'deleting',
25
- START_NODE_UPDATE: 'updating_node',
26
- WORKFLOW_SWITCHED: 'loading',
27
- WORKFLOW_CLEARED: 'uninitialized'
19
+ START_DRAG: "dragging",
20
+ START_CONNECT: "connecting",
21
+ START_DROP: "dropping",
22
+ START_RESTORE: "restoring",
23
+ EXTERNAL_STORE_CHANGE: "loading",
24
+ START_DELETE: "deleting",
25
+ START_NODE_UPDATE: "updating_node",
26
+ WORKFLOW_SWITCHED: "loading",
27
+ WORKFLOW_CLEARED: "uninitialized",
28
28
  },
29
29
  dragging: {
30
- STOP_DRAG: 'idle'
30
+ STOP_DRAG: "idle",
31
31
  },
32
32
  connecting: {
33
- CONNECTION_MADE: 'idle',
34
- CONNECTION_CANCELLED: 'idle'
33
+ CONNECTION_MADE: "idle",
34
+ CONNECTION_CANCELLED: "idle",
35
35
  },
36
36
  dropping: {
37
- DROP_COMPLETE: 'idle',
38
- DROP_CANCELLED: 'idle'
37
+ DROP_COMPLETE: "idle",
38
+ DROP_CANCELLED: "idle",
39
39
  },
40
40
  restoring: {
41
- RESTORE_COMPLETE: 'idle'
41
+ RESTORE_COMPLETE: "idle",
42
42
  },
43
43
  deleting: {
44
- DELETE_COMPLETE: 'idle'
44
+ DELETE_COMPLETE: "idle",
45
45
  },
46
46
  updating_node: {
47
- UPDATE_COMPLETE: 'idle'
48
- }
47
+ UPDATE_COMPLETE: "idle",
48
+ },
49
49
  };
50
50
  /** Global transitions valid from any state */
51
51
  const globalTransitions = {
52
- RESET: 'uninitialized',
53
- WORKFLOW_CLEARED: 'uninitialized'
52
+ RESET: "uninitialized",
53
+ WORKFLOW_CLEARED: "uninitialized",
54
54
  };
55
55
  // ---------------------------------------------------------------------------
56
56
  // Permissions table
57
57
  // ---------------------------------------------------------------------------
58
58
  const permissions = {
59
- uninitialized: { canWriteToStore: false, canPushHistory: false, suppressEffect: false },
60
- loading: { canWriteToStore: false, canPushHistory: false, suppressEffect: false },
59
+ uninitialized: {
60
+ canWriteToStore: false,
61
+ canPushHistory: false,
62
+ suppressEffect: false,
63
+ },
64
+ loading: {
65
+ canWriteToStore: false,
66
+ canPushHistory: false,
67
+ suppressEffect: false,
68
+ },
61
69
  idle: { canWriteToStore: true, canPushHistory: true, suppressEffect: false },
62
- dragging: { canWriteToStore: true, canPushHistory: false, suppressEffect: true },
63
- connecting: { canWriteToStore: true, canPushHistory: false, suppressEffect: true },
64
- dropping: { canWriteToStore: true, canPushHistory: false, suppressEffect: true },
65
- restoring: { canWriteToStore: true, canPushHistory: false, suppressEffect: true },
66
- deleting: { canWriteToStore: true, canPushHistory: false, suppressEffect: true },
67
- updating_node: { canWriteToStore: true, canPushHistory: false, suppressEffect: true }
70
+ dragging: {
71
+ canWriteToStore: true,
72
+ canPushHistory: false,
73
+ suppressEffect: true,
74
+ },
75
+ connecting: {
76
+ canWriteToStore: true,
77
+ canPushHistory: false,
78
+ suppressEffect: true,
79
+ },
80
+ dropping: {
81
+ canWriteToStore: true,
82
+ canPushHistory: false,
83
+ suppressEffect: true,
84
+ },
85
+ restoring: {
86
+ canWriteToStore: true,
87
+ canPushHistory: false,
88
+ suppressEffect: true,
89
+ },
90
+ deleting: {
91
+ canWriteToStore: true,
92
+ canPushHistory: false,
93
+ suppressEffect: true,
94
+ },
95
+ updating_node: {
96
+ canWriteToStore: true,
97
+ canPushHistory: false,
98
+ suppressEffect: true,
99
+ },
68
100
  };
69
101
  // ---------------------------------------------------------------------------
70
102
  // Factory
@@ -78,7 +110,7 @@ const permissions = {
78
110
  *
79
111
  * Each WorkflowEditor component instance should create its own machine.
80
112
  */
81
- export function createEditorStateMachine(initialState = 'uninitialized') {
113
+ export function createEditorStateMachine(initialState = "uninitialized") {
82
114
  let _current = $state(initialState);
83
115
  let _permissions = $state(permissions[initialState]);
84
116
  const _listeners = new Set();
@@ -127,6 +159,6 @@ export function createEditorStateMachine(initialState = 'uninitialized') {
127
159
  },
128
160
  send,
129
161
  canSend,
130
- onTransition
162
+ onTransition,
131
163
  };
132
164
  }
@@ -6,8 +6,8 @@
6
6
  *
7
7
  * @module stores/historyStore
8
8
  */
9
- import { type HistoryState, type PushOptions } from '../services/historyService.js';
10
- import type { Workflow } from '../types/index.js';
9
+ import { type HistoryState, type PushOptions } from "../services/historyService.js";
10
+ import type { Workflow } from "../types/index.js";
11
11
  /**
12
12
  * Clean up the historyService subscription created at module initialisation.
13
13
  * Call this when tearing down the history store (e.g., in tests or on app
@@ -132,5 +132,5 @@ export declare const historyActions: {
132
132
  */
133
133
  getState: () => HistoryState;
134
134
  };
135
- export type { HistoryEntry, HistoryState, PushOptions } from '../services/historyService.js';
136
- export { HistoryService, historyService } from '../services/historyService.js';
135
+ export type { HistoryEntry, HistoryState, PushOptions, } from "../services/historyService.js";
136
+ export { HistoryService, historyService } from "../services/historyService.js";
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * @module stores/historyStore
8
8
  */
9
- import { historyService } from '../services/historyService.js';
9
+ import { historyService, } from "../services/historyService.js";
10
10
  // =========================================================================
11
11
  // Reactive State (Runes)
12
12
  // =========================================================================
@@ -18,7 +18,7 @@ let historyState = $state({
18
18
  canRedo: false,
19
19
  currentIndex: 0,
20
20
  historyLength: 0,
21
- isInTransaction: false
21
+ isInTransaction: false,
22
22
  });
23
23
  // Subscribe to history service changes and update the rune state.
24
24
  // The unsubscribe function is stored so it can be called via
@@ -202,6 +202,6 @@ export const historyActions = {
202
202
  */
203
203
  getState: () => {
204
204
  return historyState;
205
- }
205
+ },
206
206
  };
207
- export { HistoryService, historyService } from '../services/historyService.js';
207
+ export { HistoryService, historyService } from "../services/historyService.js";
@@ -6,9 +6,9 @@
6
6
  *
7
7
  * @module stores/interruptStore
8
8
  */
9
- import { SvelteMap } from 'svelte/reactivity';
10
- import type { Interrupt } from '../types/interrupt.js';
11
- import { type InterruptState, type TransitionResult } from '../types/interruptState.js';
9
+ import { SvelteMap } from "svelte/reactivity";
10
+ import type { Interrupt } from "../types/interrupt.js";
11
+ import { type InterruptState, type TransitionResult } from "../types/interruptState.js";
12
12
  /**
13
13
  * Extended interrupt with state machine
14
14
  */
@@ -6,9 +6,9 @@
6
6
  *
7
7
  * @module stores/interruptStore
8
8
  */
9
- import { SvelteMap } from 'svelte/reactivity';
10
- import { initialState, transition, isTerminalState, isSubmitting as checkIsSubmitting, hasError as checkHasError, getErrorMessage, getResolvedValue, toLegacyStatus } from '../types/interruptState.js';
11
- import { logger } from '../utils/logger.js';
9
+ import { SvelteMap } from "svelte/reactivity";
10
+ import { initialState, transition, isTerminalState, isSubmitting as checkIsSubmitting, hasError as checkHasError, getErrorMessage, getResolvedValue, toLegacyStatus, } from "../types/interruptState.js";
11
+ import { logger } from "../utils/logger.js";
12
12
  // =========================================================================
13
13
  // Core Reactive State
14
14
  // =========================================================================
@@ -64,7 +64,7 @@ export function getPendingInterruptCount() {
64
64
  export function getResolvedInterrupts() {
65
65
  const resolved = [];
66
66
  interrupts.forEach((interrupt) => {
67
- if (interrupt.machineState.status === 'resolved') {
67
+ if (interrupt.machineState.status === "resolved") {
68
68
  resolved.push(interrupt);
69
69
  }
70
70
  });
@@ -97,7 +97,7 @@ function applyAction(interruptId, action) {
97
97
  return {
98
98
  state: initialState,
99
99
  valid: false,
100
- error: `Interrupt not found: ${interruptId}`
100
+ error: `Interrupt not found: ${interruptId}`,
101
101
  };
102
102
  }
103
103
  const result = transition(interrupt.machineState, action);
@@ -110,11 +110,11 @@ function applyAction(interruptId, action) {
110
110
  machineState: result.state,
111
111
  status: toLegacyStatus(result.state),
112
112
  responseValue: getResolvedValue(result.state) ?? current.responseValue,
113
- resolvedAt: result.state.status === 'resolved'
113
+ resolvedAt: result.state.status === "resolved"
114
114
  ? result.state.resolvedAt
115
- : result.state.status === 'cancelled'
115
+ : result.state.status === "cancelled"
116
116
  ? result.state.cancelledAt
117
- : current.resolvedAt
117
+ : current.resolvedAt,
118
118
  };
119
119
  interrupts.set(interruptId, newInterrupt);
120
120
  }
@@ -142,7 +142,7 @@ export const interruptActions = {
142
142
  const machineState = existing?.machineState ?? initialState;
143
143
  const interruptWithState = {
144
144
  ...interrupt,
145
- machineState
145
+ machineState,
146
146
  };
147
147
  interrupts.set(interrupt.id, interruptWithState);
148
148
  },
@@ -159,7 +159,7 @@ export const interruptActions = {
159
159
  const machineState = existing?.machineState ?? initialState;
160
160
  const interruptWithState = {
161
161
  ...interrupt,
162
- machineState
162
+ machineState,
163
163
  };
164
164
  interrupts.set(interrupt.id, interruptWithState);
165
165
  });
@@ -172,7 +172,7 @@ export const interruptActions = {
172
172
  * @returns Transition result
173
173
  */
174
174
  startSubmit: (interruptId, value) => {
175
- return applyAction(interruptId, { type: 'SUBMIT', value });
175
+ return applyAction(interruptId, { type: "SUBMIT", value });
176
176
  },
177
177
  /**
178
178
  * Start cancelling an interrupt (user clicked cancel)
@@ -181,7 +181,7 @@ export const interruptActions = {
181
181
  * @returns Transition result
182
182
  */
183
183
  startCancel: (interruptId) => {
184
- return applyAction(interruptId, { type: 'CANCEL' });
184
+ return applyAction(interruptId, { type: "CANCEL" });
185
185
  },
186
186
  /**
187
187
  * Mark submission as successful
@@ -190,7 +190,7 @@ export const interruptActions = {
190
190
  * @returns Transition result
191
191
  */
192
192
  submitSuccess: (interruptId) => {
193
- return applyAction(interruptId, { type: 'SUCCESS' });
193
+ return applyAction(interruptId, { type: "SUCCESS" });
194
194
  },
195
195
  /**
196
196
  * Mark submission as failed
@@ -200,7 +200,7 @@ export const interruptActions = {
200
200
  * @returns Transition result
201
201
  */
202
202
  submitFailure: (interruptId, error) => {
203
- return applyAction(interruptId, { type: 'FAILURE', error });
203
+ return applyAction(interruptId, { type: "FAILURE", error });
204
204
  },
205
205
  /**
206
206
  * Retry a failed submission
@@ -209,7 +209,7 @@ export const interruptActions = {
209
209
  * @returns Transition result
210
210
  */
211
211
  retry: (interruptId) => {
212
- return applyAction(interruptId, { type: 'RETRY' });
212
+ return applyAction(interruptId, { type: "RETRY" });
213
213
  },
214
214
  /**
215
215
  * Reset an interrupt to idle state
@@ -218,7 +218,7 @@ export const interruptActions = {
218
218
  * @returns Transition result
219
219
  */
220
220
  resetInterrupt: (interruptId) => {
221
- return applyAction(interruptId, { type: 'RESET' });
221
+ return applyAction(interruptId, { type: "RESET" });
222
222
  },
223
223
  /**
224
224
  * Mark an interrupt as resolved with the user's response
@@ -227,9 +227,9 @@ export const interruptActions = {
227
227
  * @param value - The resolved value
228
228
  */
229
229
  resolveInterrupt: (interruptId, value) => {
230
- const submitResult = applyAction(interruptId, { type: 'SUBMIT', value });
230
+ const submitResult = applyAction(interruptId, { type: "SUBMIT", value });
231
231
  if (submitResult.valid) {
232
- applyAction(interruptId, { type: 'SUCCESS' });
232
+ applyAction(interruptId, { type: "SUCCESS" });
233
233
  }
234
234
  },
235
235
  /**
@@ -238,9 +238,9 @@ export const interruptActions = {
238
238
  * @param interruptId - The interrupt ID
239
239
  */
240
240
  cancelInterrupt: (interruptId) => {
241
- const cancelResult = applyAction(interruptId, { type: 'CANCEL' });
241
+ const cancelResult = applyAction(interruptId, { type: "CANCEL" });
242
242
  if (cancelResult.valid) {
243
- applyAction(interruptId, { type: 'SUCCESS' });
243
+ applyAction(interruptId, { type: "SUCCESS" });
244
244
  }
245
245
  },
246
246
  /**
@@ -276,7 +276,7 @@ export const interruptActions = {
276
276
  */
277
277
  reset: () => {
278
278
  interrupts.clear();
279
- }
279
+ },
280
280
  };
281
281
  // =========================================================================
282
282
  // Utilities
@@ -6,8 +6,8 @@
6
6
  *
7
7
  * @module stores/playgroundStore
8
8
  */
9
- import type { PlaygroundSession, PlaygroundMessage, PlaygroundInputField, PlaygroundSessionStatus, PlaygroundMessagesApiResponse } from '../types/playground.js';
10
- import type { Workflow } from '../types/index.js';
9
+ import type { PlaygroundSession, PlaygroundMessage, PlaygroundInputField, PlaygroundSessionStatus, PlaygroundMessagesApiResponse } from "../types/playground.js";
10
+ import type { Workflow } from "../types/index.js";
11
11
  /**
12
12
  * Get the current session
13
13
  */
@@ -6,8 +6,8 @@
6
6
  *
7
7
  * @module stores/playgroundStore
8
8
  */
9
- import { isChatInputNode, defaultIsTerminalStatus } from '../types/playground.js';
10
- import { logger } from '../utils/logger.js';
9
+ import { isChatInputNode, defaultIsTerminalStatus, } from "../types/playground.js";
10
+ import { logger } from "../utils/logger.js";
11
11
  // =========================================================================
12
12
  // Core State
13
13
  // =========================================================================
@@ -101,7 +101,7 @@ export function getLastPollTimestamp() {
101
101
  * Get current session status
102
102
  */
103
103
  export function getSessionStatus() {
104
- return _currentSession?.status ?? 'idle';
104
+ return _currentSession?.status ?? "idle";
105
105
  }
106
106
  /**
107
107
  * Get message count
@@ -113,13 +113,13 @@ export function getMessageCount() {
113
113
  * Get chat messages (excludes log messages)
114
114
  */
115
115
  export function getChatMessages() {
116
- return _messages.filter((m) => m.role !== 'log');
116
+ return _messages.filter((m) => m.role !== "log");
117
117
  }
118
118
  /**
119
119
  * Get log messages only
120
120
  */
121
121
  export function getLogMessages() {
122
- return _messages.filter((m) => m.role === 'log');
122
+ return _messages.filter((m) => m.role === "log");
123
123
  }
124
124
  /**
125
125
  * Get the latest message
@@ -145,21 +145,21 @@ export function getInputFields() {
145
145
  const nodeTypeId = node.data.metadata?.id ?? node.type;
146
146
  // Check if this is an input-type node
147
147
  // The category can be "inputs" (standard) or variations like "input"
148
- const categoryStr = String(category || '');
149
- const isInputCategory = categoryStr === 'inputs' || categoryStr === 'input';
148
+ const categoryStr = String(category || "");
149
+ const isInputCategory = categoryStr === "inputs" || categoryStr === "input";
150
150
  if (isInputCategory || isChatInputNode(nodeTypeId)) {
151
151
  // Get output ports that provide data
152
152
  const outputs = node.data.metadata?.outputs ?? [];
153
153
  outputs.forEach((output) => {
154
- if (output.type === 'output') {
154
+ if (output.type === "output") {
155
155
  // Create a field for each output
156
156
  const field = {
157
157
  nodeId: node.id,
158
158
  fieldId: output.id,
159
159
  label: node.data.label || output.name || nodeTypeId,
160
- type: output.dataType || 'string',
160
+ type: output.dataType || "string",
161
161
  defaultValue: node.data.config?.[output.id],
162
- required: output.required ?? false
162
+ required: output.required ?? false,
163
163
  };
164
164
  // Check for schema in configSchema
165
165
  const configSchema = node.data.metadata?.configSchema;
@@ -178,10 +178,10 @@ export function getInputFields() {
178
178
  nodeId: node.id,
179
179
  fieldId: key,
180
180
  label: schema.title || key,
181
- type: schema.type || 'string',
181
+ type: schema.type || "string",
182
182
  defaultValue: node.data.config?.[key] ?? schema.default,
183
183
  required: configSchema.required?.includes(key) ?? false,
184
- schema
184
+ schema,
185
185
  };
186
186
  fields.push(field);
187
187
  });
@@ -196,7 +196,7 @@ export function getInputFields() {
196
196
  */
197
197
  export function getHasChatInput() {
198
198
  const fields = getInputFields();
199
- return fields.some((field) => isChatInputNode(field.nodeId) || field.type === 'string');
199
+ return fields.some((field) => isChatInputNode(field.nodeId) || field.type === "string");
200
200
  }
201
201
  /**
202
202
  * Get session count
@@ -272,12 +272,16 @@ export const playgroundActions = {
272
272
  */
273
273
  updateSessionStatus: (status) => {
274
274
  if (_currentSession) {
275
- _currentSession = { ..._currentSession, status, updatedAt: new Date().toISOString() };
275
+ _currentSession = {
276
+ ..._currentSession,
277
+ status,
278
+ updatedAt: new Date().toISOString(),
279
+ };
276
280
  }
277
281
  // Also update in sessions list
278
282
  const session = _currentSession;
279
283
  if (session) {
280
- _sessions = _sessions.map((s) => (s.id === session.id ? { ...s, status } : s));
284
+ _sessions = _sessions.map((s) => s.id === session.id ? { ...s, status } : s);
281
285
  }
282
286
  },
283
287
  /**
@@ -340,7 +344,10 @@ export const playgroundActions = {
340
344
  const existingIds = new Set(_messages.map((m) => m.id));
341
345
  const uniqueNewMessages = newMessages.filter((m) => !existingIds.has(m.id));
342
346
  // Sort the combined messages chronologically
343
- _messages = sortMessagesChronologically([..._messages, ...uniqueNewMessages]);
347
+ _messages = sortMessagesChronologically([
348
+ ..._messages,
349
+ ...uniqueNewMessages,
350
+ ]);
344
351
  },
345
352
  /**
346
353
  * Clear all messages
@@ -406,7 +413,7 @@ export const playgroundActions = {
406
413
  _messages = [];
407
414
  _lastPollTimestamp = null;
408
415
  }
409
- }
416
+ },
410
417
  };
411
418
  // =========================================================================
412
419
  // Polling Callback Factory
@@ -510,6 +517,6 @@ export async function refreshSessionMessages(fetchMessages, isTerminalStatus) {
510
517
  callback(response);
511
518
  }
512
519
  catch (err) {
513
- logger.error('[playgroundStore] Failed to refresh messages:', err);
520
+ logger.error("[playgroundStore] Failed to refresh messages:", err);
514
521
  }
515
522
  }
@@ -12,8 +12,8 @@
12
12
  * which SvelteFlow already maintains for all node types. This avoids replicating
13
13
  * CSS positioning logic and stays automatically accurate.
14
14
  */
15
- import type { WorkflowNode as WorkflowNodeType, PortCoordinate, PortCoordinateMap } from '../types/index.js';
16
- import type { InternalNode } from '@xyflow/svelte';
15
+ import type { WorkflowNode as WorkflowNodeType, PortCoordinate, PortCoordinateMap } from "../types/index.js";
16
+ import type { InternalNode } from "@xyflow/svelte";
17
17
  /**
18
18
  * Rebuild coordinates for ALL nodes from SvelteFlow internals.
19
19
  * Call on initial workflow load (after render) and after bulk changes.