@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
@@ -7,482 +7,505 @@
7
7
  -->
8
8
 
9
9
  <script lang="ts">
10
- import Icon from '@iconify/svelte';
11
- import { slide } from 'svelte/transition';
12
- import type { PlaygroundMessage, PlaygroundMessageLevel } from '../../types/playground.js';
13
- import { getLogMessages } from '../../stores/playgroundStore.svelte.js';
14
-
15
- /**
16
- * Component props
17
- */
18
- interface Props {
19
- /** Whether the logs panel is expanded */
20
- isExpanded?: boolean;
21
- /** Maximum height of the logs panel */
22
- maxHeight?: string;
23
- /** Callback when expansion state changes */
24
- onToggle?: (expanded: boolean) => void;
25
- }
26
-
27
- let { isExpanded = $bindable(false), maxHeight = '300px', onToggle }: Props = $props();
28
-
29
- /** Current log level filter */
30
- let levelFilter = $state<PlaygroundMessageLevel | 'all'>('all');
31
-
32
- /** Reference to logs container for auto-scroll */
33
- let logsContainer = $state<HTMLDivElement>();
34
-
35
- /**
36
- * Filter logs based on selected level
37
- */
38
- const filteredLogs = $derived(
39
- levelFilter === 'all'
40
- ? getLogMessages()
41
- : getLogMessages().filter((log) => log.metadata?.level === levelFilter)
42
- );
43
-
44
- /**
45
- * Count of logs by level
46
- */
47
- const logCounts = $derived({
48
- all: getLogMessages().length,
49
- info: getLogMessages().filter((l) => l.metadata?.level === 'info').length,
50
- warning: getLogMessages().filter((l) => l.metadata?.level === 'warning').length,
51
- error: getLogMessages().filter((l) => l.metadata?.level === 'error').length,
52
- debug: getLogMessages().filter((l) => l.metadata?.level === 'debug').length
53
- });
54
-
55
- /**
56
- * Toggle expansion
57
- */
58
- function toggleExpanded(): void {
59
- isExpanded = !isExpanded;
60
- onToggle?.(isExpanded);
61
- }
62
-
63
- /**
64
- * Format timestamp for display
65
- */
66
- function formatTimestamp(timestamp: string): string {
67
- const date = new Date(timestamp);
68
- return date.toLocaleTimeString('en-US', {
69
- hour12: false,
70
- hour: '2-digit',
71
- minute: '2-digit',
72
- second: '2-digit',
73
- fractionalSecondDigits: 3
74
- });
75
- }
76
-
77
- /**
78
- * Get icon for log level
79
- */
80
- function getLevelIcon(level: PlaygroundMessageLevel | undefined): string {
81
- switch (level) {
82
- case 'error':
83
- return 'mdi:alert-circle';
84
- case 'warning':
85
- return 'mdi:alert';
86
- case 'debug':
87
- return 'mdi:bug';
88
- default:
89
- return 'mdi:information';
90
- }
91
- }
92
-
93
- /**
94
- * Export logs to file
95
- */
96
- function exportLogs(): void {
97
- const logText = filteredLogs
98
- .map(
99
- (log) =>
100
- `[${formatTimestamp(log.timestamp)}] [${(log.metadata?.level ?? 'info').toUpperCase()}] ${log.content}${log.nodeId ? ` (Node: ${log.nodeId})` : ''}`
101
- )
102
- .join('\n');
103
-
104
- const blob = new Blob([logText], { type: 'text/plain' });
105
- const url = URL.createObjectURL(blob);
106
- const link = document.createElement('a');
107
- link.href = url;
108
- link.download = `playground-logs-${new Date().toISOString().split('T')[0]}.txt`;
109
- link.click();
110
- URL.revokeObjectURL(url);
111
- }
112
-
113
- /**
114
- * Auto-scroll to bottom when new logs arrive
115
- */
116
- $effect(() => {
117
- if (isExpanded && logsContainer && filteredLogs.length > 0) {
118
- logsContainer.scrollTop = logsContainer.scrollHeight;
119
- }
120
- });
10
+ import Icon from "@iconify/svelte";
11
+ import { slide } from "svelte/transition";
12
+ import type {
13
+ PlaygroundMessage,
14
+ PlaygroundMessageLevel,
15
+ } from "../../types/playground.js";
16
+ import { getLogMessages } from "../../stores/playgroundStore.svelte.js";
17
+
18
+ /**
19
+ * Component props
20
+ */
21
+ interface Props {
22
+ /** Whether the logs panel is expanded */
23
+ isExpanded?: boolean;
24
+ /** Maximum height of the logs panel */
25
+ maxHeight?: string;
26
+ /** Callback when expansion state changes */
27
+ onToggle?: (expanded: boolean) => void;
28
+ }
29
+
30
+ let {
31
+ isExpanded = $bindable(false),
32
+ maxHeight = "300px",
33
+ onToggle,
34
+ }: Props = $props();
35
+
36
+ /** Current log level filter */
37
+ let levelFilter = $state<PlaygroundMessageLevel | "all">("all");
38
+
39
+ /** Reference to logs container for auto-scroll */
40
+ let logsContainer = $state<HTMLDivElement>();
41
+
42
+ /**
43
+ * Filter logs based on selected level
44
+ */
45
+ const filteredLogs = $derived(
46
+ levelFilter === "all"
47
+ ? getLogMessages()
48
+ : getLogMessages().filter((log) => log.metadata?.level === levelFilter),
49
+ );
50
+
51
+ /**
52
+ * Count of logs by level
53
+ */
54
+ const logCounts = $derived({
55
+ all: getLogMessages().length,
56
+ info: getLogMessages().filter((l) => l.metadata?.level === "info").length,
57
+ warning: getLogMessages().filter((l) => l.metadata?.level === "warning")
58
+ .length,
59
+ error: getLogMessages().filter((l) => l.metadata?.level === "error").length,
60
+ debug: getLogMessages().filter((l) => l.metadata?.level === "debug").length,
61
+ });
62
+
63
+ /**
64
+ * Toggle expansion
65
+ */
66
+ function toggleExpanded(): void {
67
+ isExpanded = !isExpanded;
68
+ onToggle?.(isExpanded);
69
+ }
70
+
71
+ /**
72
+ * Format timestamp for display
73
+ */
74
+ function formatTimestamp(timestamp: string): string {
75
+ const date = new Date(timestamp);
76
+ return date.toLocaleTimeString("en-US", {
77
+ hour12: false,
78
+ hour: "2-digit",
79
+ minute: "2-digit",
80
+ second: "2-digit",
81
+ fractionalSecondDigits: 3,
82
+ });
83
+ }
84
+
85
+ /**
86
+ * Get icon for log level
87
+ */
88
+ function getLevelIcon(level: PlaygroundMessageLevel | undefined): string {
89
+ switch (level) {
90
+ case "error":
91
+ return "mdi:alert-circle";
92
+ case "warning":
93
+ return "mdi:alert";
94
+ case "debug":
95
+ return "mdi:bug";
96
+ default:
97
+ return "mdi:information";
98
+ }
99
+ }
100
+
101
+ /**
102
+ * Export logs to file
103
+ */
104
+ function exportLogs(): void {
105
+ const logText = filteredLogs
106
+ .map(
107
+ (log) =>
108
+ `[${formatTimestamp(log.timestamp)}] [${(log.metadata?.level ?? "info").toUpperCase()}] ${log.content}${log.nodeId ? ` (Node: ${log.nodeId})` : ""}`,
109
+ )
110
+ .join("\n");
111
+
112
+ const blob = new Blob([logText], { type: "text/plain" });
113
+ const url = URL.createObjectURL(blob);
114
+ const link = document.createElement("a");
115
+ link.href = url;
116
+ link.download = `playground-logs-${new Date().toISOString().split("T")[0]}.txt`;
117
+ link.click();
118
+ URL.revokeObjectURL(url);
119
+ }
120
+
121
+ /**
122
+ * Auto-scroll to bottom when new logs arrive
123
+ */
124
+ $effect(() => {
125
+ if (isExpanded && logsContainer && filteredLogs.length > 0) {
126
+ logsContainer.scrollTop = logsContainer.scrollHeight;
127
+ }
128
+ });
121
129
  </script>
122
130
 
123
131
  <div class="execution-logs" class:execution-logs--expanded={isExpanded}>
124
- <!-- Header -->
125
- <button
126
- type="button"
127
- class="execution-logs__header"
128
- onclick={toggleExpanded}
129
- aria-expanded={isExpanded}
130
- >
131
- <div class="execution-logs__title">
132
- <Icon icon="mdi:console" />
133
- <span>Execution Logs</span>
134
- {#if logCounts.all > 0}
135
- <span class="execution-logs__badge">{logCounts.all}</span>
136
- {/if}
137
- {#if logCounts.error > 0}
138
- <span class="execution-logs__badge execution-logs__badge--error">{logCounts.error}</span>
139
- {/if}
140
- {#if logCounts.warning > 0}
141
- <span class="execution-logs__badge execution-logs__badge--warning">{logCounts.warning}</span
142
- >
143
- {/if}
144
- </div>
145
- <Icon
146
- icon="mdi:chevron-down"
147
- class="execution-logs__chevron {isExpanded ? 'execution-logs__chevron--expanded' : ''}"
148
- />
149
- </button>
150
-
151
- <!-- Content -->
152
- {#if isExpanded}
153
- <div class="execution-logs__content" transition:slide={{ duration: 200 }}>
154
- <!-- Toolbar -->
155
- <div class="execution-logs__toolbar">
156
- <div class="execution-logs__filters">
157
- <button
158
- type="button"
159
- class="execution-logs__filter"
160
- class:execution-logs__filter--active={levelFilter === 'all'}
161
- onclick={() => (levelFilter = 'all')}
162
- >
163
- All ({logCounts.all})
164
- </button>
165
- <button
166
- type="button"
167
- class="execution-logs__filter execution-logs__filter--info"
168
- class:execution-logs__filter--active={levelFilter === 'info'}
169
- onclick={() => (levelFilter = 'info')}
170
- >
171
- Info ({logCounts.info})
172
- </button>
173
- <button
174
- type="button"
175
- class="execution-logs__filter execution-logs__filter--warning"
176
- class:execution-logs__filter--active={levelFilter === 'warning'}
177
- onclick={() => (levelFilter = 'warning')}
178
- >
179
- Warning ({logCounts.warning})
180
- </button>
181
- <button
182
- type="button"
183
- class="execution-logs__filter execution-logs__filter--error"
184
- class:execution-logs__filter--active={levelFilter === 'error'}
185
- onclick={() => (levelFilter = 'error')}
186
- >
187
- Error ({logCounts.error})
188
- </button>
189
- </div>
190
- <button
191
- type="button"
192
- class="execution-logs__export"
193
- onclick={exportLogs}
194
- disabled={filteredLogs.length === 0}
195
- title="Export logs"
196
- >
197
- <Icon icon="mdi:download" />
198
- </button>
199
- </div>
200
-
201
- <!-- Logs List -->
202
- <div class="execution-logs__list" bind:this={logsContainer} style="max-height: {maxHeight}">
203
- {#if filteredLogs.length === 0}
204
- <div class="execution-logs__empty">
205
- <Icon icon="mdi:file-document-outline" />
206
- <span>No logs to display</span>
207
- </div>
208
- {:else}
209
- {#each filteredLogs as log (log.id)}
210
- <div
211
- class="execution-logs__entry"
212
- class:execution-logs__entry--error={log.metadata?.level === 'error'}
213
- class:execution-logs__entry--warning={log.metadata?.level === 'warning'}
214
- class:execution-logs__entry--debug={log.metadata?.level === 'debug'}
215
- >
216
- <span class="execution-logs__entry-time">
217
- {formatTimestamp(log.timestamp)}
218
- </span>
219
- <span class="execution-logs__entry-level">
220
- <Icon icon={getLevelIcon(log.metadata?.level)} />
221
- </span>
222
- <span class="execution-logs__entry-content">
223
- {log.content}
224
- </span>
225
- {#if log.nodeId}
226
- <span class="execution-logs__entry-node" title="Node: {log.nodeId}">
227
- {log.metadata?.nodeLabel ?? log.nodeId}
228
- </span>
229
- {/if}
230
- </div>
231
- {/each}
232
- {/if}
233
- </div>
234
- </div>
235
- {/if}
132
+ <!-- Header -->
133
+ <button
134
+ type="button"
135
+ class="execution-logs__header"
136
+ onclick={toggleExpanded}
137
+ aria-expanded={isExpanded}
138
+ >
139
+ <div class="execution-logs__title">
140
+ <Icon icon="mdi:console" />
141
+ <span>Execution Logs</span>
142
+ {#if logCounts.all > 0}
143
+ <span class="execution-logs__badge">{logCounts.all}</span>
144
+ {/if}
145
+ {#if logCounts.error > 0}
146
+ <span class="execution-logs__badge execution-logs__badge--error"
147
+ >{logCounts.error}</span
148
+ >
149
+ {/if}
150
+ {#if logCounts.warning > 0}
151
+ <span class="execution-logs__badge execution-logs__badge--warning"
152
+ >{logCounts.warning}</span
153
+ >
154
+ {/if}
155
+ </div>
156
+ <Icon
157
+ icon="mdi:chevron-down"
158
+ class="execution-logs__chevron {isExpanded
159
+ ? 'execution-logs__chevron--expanded'
160
+ : ''}"
161
+ />
162
+ </button>
163
+
164
+ <!-- Content -->
165
+ {#if isExpanded}
166
+ <div class="execution-logs__content" transition:slide={{ duration: 200 }}>
167
+ <!-- Toolbar -->
168
+ <div class="execution-logs__toolbar">
169
+ <div class="execution-logs__filters">
170
+ <button
171
+ type="button"
172
+ class="execution-logs__filter"
173
+ class:execution-logs__filter--active={levelFilter === "all"}
174
+ onclick={() => (levelFilter = "all")}
175
+ >
176
+ All ({logCounts.all})
177
+ </button>
178
+ <button
179
+ type="button"
180
+ class="execution-logs__filter execution-logs__filter--info"
181
+ class:execution-logs__filter--active={levelFilter === "info"}
182
+ onclick={() => (levelFilter = "info")}
183
+ >
184
+ Info ({logCounts.info})
185
+ </button>
186
+ <button
187
+ type="button"
188
+ class="execution-logs__filter execution-logs__filter--warning"
189
+ class:execution-logs__filter--active={levelFilter === "warning"}
190
+ onclick={() => (levelFilter = "warning")}
191
+ >
192
+ Warning ({logCounts.warning})
193
+ </button>
194
+ <button
195
+ type="button"
196
+ class="execution-logs__filter execution-logs__filter--error"
197
+ class:execution-logs__filter--active={levelFilter === "error"}
198
+ onclick={() => (levelFilter = "error")}
199
+ >
200
+ Error ({logCounts.error})
201
+ </button>
202
+ </div>
203
+ <button
204
+ type="button"
205
+ class="execution-logs__export"
206
+ onclick={exportLogs}
207
+ disabled={filteredLogs.length === 0}
208
+ title="Export logs"
209
+ >
210
+ <Icon icon="mdi:download" />
211
+ </button>
212
+ </div>
213
+
214
+ <!-- Logs List -->
215
+ <div
216
+ class="execution-logs__list"
217
+ bind:this={logsContainer}
218
+ style="max-height: {maxHeight}"
219
+ >
220
+ {#if filteredLogs.length === 0}
221
+ <div class="execution-logs__empty">
222
+ <Icon icon="mdi:file-document-outline" />
223
+ <span>No logs to display</span>
224
+ </div>
225
+ {:else}
226
+ {#each filteredLogs as log (log.id)}
227
+ <div
228
+ class="execution-logs__entry"
229
+ class:execution-logs__entry--error={log.metadata?.level ===
230
+ "error"}
231
+ class:execution-logs__entry--warning={log.metadata?.level ===
232
+ "warning"}
233
+ class:execution-logs__entry--debug={log.metadata?.level ===
234
+ "debug"}
235
+ >
236
+ <span class="execution-logs__entry-time">
237
+ {formatTimestamp(log.timestamp)}
238
+ </span>
239
+ <span class="execution-logs__entry-level">
240
+ <Icon icon={getLevelIcon(log.metadata?.level)} />
241
+ </span>
242
+ <span class="execution-logs__entry-content">
243
+ {log.content}
244
+ </span>
245
+ {#if log.nodeId}
246
+ <span
247
+ class="execution-logs__entry-node"
248
+ title="Node: {log.nodeId}"
249
+ >
250
+ {log.metadata?.nodeLabel ?? log.nodeId}
251
+ </span>
252
+ {/if}
253
+ </div>
254
+ {/each}
255
+ {/if}
256
+ </div>
257
+ </div>
258
+ {/if}
236
259
  </div>
237
260
 
238
261
  <style>
239
- .execution-logs {
240
- border-top: 1px solid var(--fd-border);
241
- background-color: var(--fd-muted);
242
- }
243
-
244
- /* Header */
245
- .execution-logs__header {
246
- display: flex;
247
- align-items: center;
248
- justify-content: space-between;
249
- width: 100%;
250
- padding: var(--fd-space-md) var(--fd-space-xl);
251
- border: none;
252
- background: transparent;
253
- cursor: pointer;
254
- transition: background-color var(--fd-transition-normal);
255
- }
256
-
257
- .execution-logs__header:hover {
258
- background-color: var(--fd-secondary);
259
- }
260
-
261
- .execution-logs__title {
262
- display: flex;
263
- align-items: center;
264
- gap: var(--fd-space-xs);
265
- font-size: var(--fd-text-sm);
266
- font-weight: 500;
267
- color: var(--fd-foreground);
268
- }
269
-
270
- .execution-logs__badge {
271
- display: inline-flex;
272
- align-items: center;
273
- justify-content: center;
274
- min-width: 1.25rem;
275
- height: 1.25rem;
276
- padding: 0 var(--fd-space-3xs);
277
- border-radius: var(--fd-radius-full);
278
- font-size: var(--fd-text-xs);
279
- font-weight: 600;
280
- background-color: var(--fd-secondary);
281
- color: var(--fd-secondary-foreground);
282
- }
283
-
284
- .execution-logs__badge--error {
285
- background-color: var(--fd-error-muted);
286
- color: var(--fd-error);
287
- }
288
-
289
- .execution-logs__badge--warning {
290
- background-color: var(--fd-warning-muted);
291
- color: var(--fd-warning);
292
- }
293
-
294
- :global(.execution-logs__chevron) {
295
- transition: transform var(--fd-transition-normal);
296
- color: var(--fd-muted-foreground);
297
- }
298
-
299
- :global(.execution-logs__chevron--expanded) {
300
- transform: rotate(180deg);
301
- }
302
-
303
- /* Content */
304
- .execution-logs__content {
305
- border-top: 1px solid var(--fd-border);
306
- }
307
-
308
- /* Toolbar */
309
- .execution-logs__toolbar {
310
- display: flex;
311
- align-items: center;
312
- justify-content: space-between;
313
- padding: var(--fd-space-xs) var(--fd-space-xl);
314
- background-color: var(--fd-background);
315
- border-bottom: 1px solid var(--fd-border);
316
- }
317
-
318
- .execution-logs__filters {
319
- display: flex;
320
- gap: var(--fd-space-3xs);
321
- }
322
-
323
- .execution-logs__filter {
324
- padding: var(--fd-space-3xs) var(--fd-space-xs);
325
- border: 1px solid transparent;
326
- border-radius: var(--fd-radius-md);
327
- background: transparent;
328
- font-size: var(--fd-text-xs);
329
- color: var(--fd-muted-foreground);
330
- cursor: pointer;
331
- transition: all var(--fd-transition-normal);
332
- }
333
-
334
- .execution-logs__filter:hover {
335
- background-color: var(--fd-muted);
336
- }
337
-
338
- .execution-logs__filter--active {
339
- background-color: var(--fd-secondary);
340
- color: var(--fd-foreground);
341
- font-weight: 500;
342
- }
343
-
344
- .execution-logs__filter--info.execution-logs__filter--active {
345
- background-color: var(--fd-info-muted);
346
- color: var(--fd-info);
347
- }
348
-
349
- .execution-logs__filter--warning.execution-logs__filter--active {
350
- background-color: var(--fd-warning-muted);
351
- color: var(--fd-warning);
352
- }
353
-
354
- .execution-logs__filter--error.execution-logs__filter--active {
355
- background-color: var(--fd-error-muted);
356
- color: var(--fd-error);
357
- }
358
-
359
- .execution-logs__export {
360
- display: flex;
361
- align-items: center;
362
- justify-content: center;
363
- width: var(--fd-playground-icon-btn-size);
364
- height: var(--fd-playground-icon-btn-size);
365
- border: 1px solid var(--fd-border);
366
- border-radius: var(--fd-radius-md);
367
- background: var(--fd-background);
368
- color: var(--fd-muted-foreground);
369
- cursor: pointer;
370
- transition: all var(--fd-transition-normal);
371
- }
372
-
373
- .execution-logs__export:hover:not(:disabled) {
374
- background-color: var(--fd-muted);
375
- color: var(--fd-foreground);
376
- }
377
-
378
- .execution-logs__export:disabled {
379
- opacity: 0.5;
380
- cursor: not-allowed;
381
- }
382
-
383
- /* Logs List */
384
- .execution-logs__list {
385
- overflow-y: auto;
386
- font-family: var(--fd-font-mono);
387
- font-size: var(--fd-text-xs);
388
- line-height: var(--fd-leading-normal);
389
- }
390
-
391
- .execution-logs__empty {
392
- display: flex;
393
- align-items: center;
394
- justify-content: center;
395
- gap: var(--fd-space-xs);
396
- padding: var(--fd-space-4xl);
397
- color: var(--fd-muted-foreground);
398
- }
399
-
400
- .execution-logs__entry {
401
- display: flex;
402
- align-items: flex-start;
403
- gap: var(--fd-space-xs);
404
- padding: var(--fd-space-3xs) var(--fd-space-xl);
405
- border-bottom: 1px solid var(--fd-border-muted);
406
- background-color: var(--fd-background);
407
- }
408
-
409
- .execution-logs__entry:hover {
410
- background-color: var(--fd-muted);
411
- }
412
-
413
- .execution-logs__entry--error {
414
- background-color: var(--fd-error-muted);
415
- }
416
-
417
- .execution-logs__entry--error:hover {
418
- background-color: var(--fd-error-muted);
419
- opacity: 0.9;
420
- }
421
-
422
- .execution-logs__entry--warning {
423
- background-color: var(--fd-warning-muted);
424
- }
425
-
426
- .execution-logs__entry--warning:hover {
427
- background-color: var(--fd-warning-muted);
428
- opacity: 0.9;
429
- }
430
-
431
- .execution-logs__entry--debug {
432
- color: var(--fd-accent);
433
- }
434
-
435
- .execution-logs__entry-time {
436
- flex-shrink: 0;
437
- color: var(--fd-muted-foreground);
438
- }
439
-
440
- .execution-logs__entry-level {
441
- flex-shrink: 0;
442
- display: flex;
443
- align-items: center;
444
- }
445
-
446
- .execution-logs__entry--error .execution-logs__entry-level {
447
- color: var(--fd-error);
448
- }
449
-
450
- .execution-logs__entry--warning .execution-logs__entry-level {
451
- color: var(--fd-warning);
452
- }
453
-
454
- .execution-logs__entry--debug .execution-logs__entry-level {
455
- color: var(--fd-accent);
456
- }
457
-
458
- .execution-logs__entry-content {
459
- flex: 1;
460
- min-width: 0;
461
- word-break: break-word;
462
- color: var(--fd-foreground);
463
- }
464
-
465
- .execution-logs__entry-node {
466
- flex-shrink: 0;
467
- padding: 0.125rem var(--fd-space-3xs);
468
- background-color: var(--fd-secondary);
469
- border-radius: var(--fd-radius-sm);
470
- color: var(--fd-muted-foreground);
471
- font-size: var(--fd-text-xs);
472
- }
473
-
474
- /* Responsive */
475
- @media (max-width: 640px) {
476
- .execution-logs__filters {
477
- flex-wrap: wrap;
478
- }
479
-
480
- .execution-logs__entry {
481
- flex-wrap: wrap;
482
- }
483
-
484
- .execution-logs__entry-node {
485
- margin-left: auto;
486
- }
487
- }
262
+ .execution-logs {
263
+ border-top: 1px solid var(--fd-border);
264
+ background-color: var(--fd-muted);
265
+ }
266
+
267
+ /* Header */
268
+ .execution-logs__header {
269
+ display: flex;
270
+ align-items: center;
271
+ justify-content: space-between;
272
+ width: 100%;
273
+ padding: var(--fd-space-md) var(--fd-space-xl);
274
+ border: none;
275
+ background: transparent;
276
+ cursor: pointer;
277
+ transition: background-color var(--fd-transition-normal);
278
+ }
279
+
280
+ .execution-logs__header:hover {
281
+ background-color: var(--fd-secondary);
282
+ }
283
+
284
+ .execution-logs__title {
285
+ display: flex;
286
+ align-items: center;
287
+ gap: var(--fd-space-xs);
288
+ font-size: var(--fd-text-sm);
289
+ font-weight: 500;
290
+ color: var(--fd-foreground);
291
+ }
292
+
293
+ .execution-logs__badge {
294
+ display: inline-flex;
295
+ align-items: center;
296
+ justify-content: center;
297
+ min-width: 1.25rem;
298
+ height: 1.25rem;
299
+ padding: 0 var(--fd-space-3xs);
300
+ border-radius: var(--fd-radius-full);
301
+ font-size: var(--fd-text-xs);
302
+ font-weight: 600;
303
+ background-color: var(--fd-secondary);
304
+ color: var(--fd-secondary-foreground);
305
+ }
306
+
307
+ .execution-logs__badge--error {
308
+ background-color: var(--fd-error-muted);
309
+ color: var(--fd-error);
310
+ }
311
+
312
+ .execution-logs__badge--warning {
313
+ background-color: var(--fd-warning-muted);
314
+ color: var(--fd-warning);
315
+ }
316
+
317
+ :global(.execution-logs__chevron) {
318
+ transition: transform var(--fd-transition-normal);
319
+ color: var(--fd-muted-foreground);
320
+ }
321
+
322
+ :global(.execution-logs__chevron--expanded) {
323
+ transform: rotate(180deg);
324
+ }
325
+
326
+ /* Content */
327
+ .execution-logs__content {
328
+ border-top: 1px solid var(--fd-border);
329
+ }
330
+
331
+ /* Toolbar */
332
+ .execution-logs__toolbar {
333
+ display: flex;
334
+ align-items: center;
335
+ justify-content: space-between;
336
+ padding: var(--fd-space-xs) var(--fd-space-xl);
337
+ background-color: var(--fd-background);
338
+ border-bottom: 1px solid var(--fd-border);
339
+ }
340
+
341
+ .execution-logs__filters {
342
+ display: flex;
343
+ gap: var(--fd-space-3xs);
344
+ }
345
+
346
+ .execution-logs__filter {
347
+ padding: var(--fd-space-3xs) var(--fd-space-xs);
348
+ border: 1px solid transparent;
349
+ border-radius: var(--fd-radius-md);
350
+ background: transparent;
351
+ font-size: var(--fd-text-xs);
352
+ color: var(--fd-muted-foreground);
353
+ cursor: pointer;
354
+ transition: all var(--fd-transition-normal);
355
+ }
356
+
357
+ .execution-logs__filter:hover {
358
+ background-color: var(--fd-muted);
359
+ }
360
+
361
+ .execution-logs__filter--active {
362
+ background-color: var(--fd-secondary);
363
+ color: var(--fd-foreground);
364
+ font-weight: 500;
365
+ }
366
+
367
+ .execution-logs__filter--info.execution-logs__filter--active {
368
+ background-color: var(--fd-info-muted);
369
+ color: var(--fd-info);
370
+ }
371
+
372
+ .execution-logs__filter--warning.execution-logs__filter--active {
373
+ background-color: var(--fd-warning-muted);
374
+ color: var(--fd-warning);
375
+ }
376
+
377
+ .execution-logs__filter--error.execution-logs__filter--active {
378
+ background-color: var(--fd-error-muted);
379
+ color: var(--fd-error);
380
+ }
381
+
382
+ .execution-logs__export {
383
+ display: flex;
384
+ align-items: center;
385
+ justify-content: center;
386
+ width: var(--fd-playground-icon-btn-size);
387
+ height: var(--fd-playground-icon-btn-size);
388
+ border: 1px solid var(--fd-border);
389
+ border-radius: var(--fd-radius-md);
390
+ background: var(--fd-background);
391
+ color: var(--fd-muted-foreground);
392
+ cursor: pointer;
393
+ transition: all var(--fd-transition-normal);
394
+ }
395
+
396
+ .execution-logs__export:hover:not(:disabled) {
397
+ background-color: var(--fd-muted);
398
+ color: var(--fd-foreground);
399
+ }
400
+
401
+ .execution-logs__export:disabled {
402
+ opacity: 0.5;
403
+ cursor: not-allowed;
404
+ }
405
+
406
+ /* Logs List */
407
+ .execution-logs__list {
408
+ overflow-y: auto;
409
+ font-family: var(--fd-font-mono);
410
+ font-size: var(--fd-text-xs);
411
+ line-height: var(--fd-leading-normal);
412
+ }
413
+
414
+ .execution-logs__empty {
415
+ display: flex;
416
+ align-items: center;
417
+ justify-content: center;
418
+ gap: var(--fd-space-xs);
419
+ padding: var(--fd-space-4xl);
420
+ color: var(--fd-muted-foreground);
421
+ }
422
+
423
+ .execution-logs__entry {
424
+ display: flex;
425
+ align-items: flex-start;
426
+ gap: var(--fd-space-xs);
427
+ padding: var(--fd-space-3xs) var(--fd-space-xl);
428
+ border-bottom: 1px solid var(--fd-border-muted);
429
+ background-color: var(--fd-background);
430
+ }
431
+
432
+ .execution-logs__entry:hover {
433
+ background-color: var(--fd-muted);
434
+ }
435
+
436
+ .execution-logs__entry--error {
437
+ background-color: var(--fd-error-muted);
438
+ }
439
+
440
+ .execution-logs__entry--error:hover {
441
+ background-color: var(--fd-error-muted);
442
+ opacity: 0.9;
443
+ }
444
+
445
+ .execution-logs__entry--warning {
446
+ background-color: var(--fd-warning-muted);
447
+ }
448
+
449
+ .execution-logs__entry--warning:hover {
450
+ background-color: var(--fd-warning-muted);
451
+ opacity: 0.9;
452
+ }
453
+
454
+ .execution-logs__entry--debug {
455
+ color: var(--fd-accent);
456
+ }
457
+
458
+ .execution-logs__entry-time {
459
+ flex-shrink: 0;
460
+ color: var(--fd-muted-foreground);
461
+ }
462
+
463
+ .execution-logs__entry-level {
464
+ flex-shrink: 0;
465
+ display: flex;
466
+ align-items: center;
467
+ }
468
+
469
+ .execution-logs__entry--error .execution-logs__entry-level {
470
+ color: var(--fd-error);
471
+ }
472
+
473
+ .execution-logs__entry--warning .execution-logs__entry-level {
474
+ color: var(--fd-warning);
475
+ }
476
+
477
+ .execution-logs__entry--debug .execution-logs__entry-level {
478
+ color: var(--fd-accent);
479
+ }
480
+
481
+ .execution-logs__entry-content {
482
+ flex: 1;
483
+ min-width: 0;
484
+ word-break: break-word;
485
+ color: var(--fd-foreground);
486
+ }
487
+
488
+ .execution-logs__entry-node {
489
+ flex-shrink: 0;
490
+ padding: 0.125rem var(--fd-space-3xs);
491
+ background-color: var(--fd-secondary);
492
+ border-radius: var(--fd-radius-sm);
493
+ color: var(--fd-muted-foreground);
494
+ font-size: var(--fd-text-xs);
495
+ }
496
+
497
+ /* Responsive */
498
+ @media (max-width: 640px) {
499
+ .execution-logs__filters {
500
+ flex-wrap: wrap;
501
+ }
502
+
503
+ .execution-logs__entry {
504
+ flex-wrap: wrap;
505
+ }
506
+
507
+ .execution-logs__entry-node {
508
+ margin-left: auto;
509
+ }
510
+ }
488
511
  </style>