@flowdrop/flowdrop 1.5.0 → 1.6.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.
- package/README.md +46 -47
- package/dist/adapters/WorkflowAdapter.d.ts +1 -1
- package/dist/adapters/WorkflowAdapter.js +26 -26
- package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +2 -2
- package/dist/adapters/agentspec/AgentSpecAdapter.js +122 -133
- package/dist/adapters/agentspec/agentAdapter.d.ts +2 -2
- package/dist/adapters/agentspec/agentAdapter.js +10 -10
- package/dist/adapters/agentspec/autoLayout.d.ts +1 -1
- package/dist/adapters/agentspec/autoLayout.js +7 -9
- package/dist/adapters/agentspec/componentTypeDefaults.d.ts +1 -1
- package/dist/adapters/agentspec/componentTypeDefaults.js +120 -120
- package/dist/adapters/agentspec/defaultNodeTypes.d.ts +2 -2
- package/dist/adapters/agentspec/defaultNodeTypes.js +307 -307
- package/dist/adapters/agentspec/index.d.ts +10 -10
- package/dist/adapters/agentspec/index.js +6 -6
- package/dist/adapters/agentspec/validator.d.ts +2 -2
- package/dist/adapters/agentspec/validator.js +20 -22
- package/dist/api/enhanced-client.d.ts +3 -3
- package/dist/api/enhanced-client.js +72 -73
- package/dist/chat/commandClassifier.js +6 -6
- package/dist/chat/index.d.ts +5 -5
- package/dist/chat/index.js +4 -4
- package/dist/chat/responseParser.d.ts +6 -6
- package/dist/chat/responseParser.js +28 -24
- package/dist/commands/batch.d.ts +1 -1
- package/dist/commands/batch.js +5 -7
- package/dist/commands/executor.d.ts +2 -2
- package/dist/commands/executor.js +320 -231
- package/dist/commands/index.d.ts +6 -6
- package/dist/commands/index.js +5 -5
- package/dist/commands/parser.d.ts +1 -1
- package/dist/commands/parser.js +91 -74
- package/dist/commands/positioner.d.ts +2 -2
- package/dist/commands/positioner.js +1 -1
- package/dist/commands/storeIntegration.svelte.d.ts +2 -2
- package/dist/commands/storeIntegration.svelte.js +5 -5
- package/dist/commands/types.d.ts +42 -42
- package/dist/commands/types.js +2 -2
- package/dist/components/App.svelte +240 -294
- package/dist/components/App.svelte.d.ts +9 -9
- package/dist/components/CanvasBanner.stories.svelte +10 -16
- package/dist/components/CanvasBanner.stories.svelte.d.ts +1 -1
- package/dist/components/CanvasBanner.svelte +2 -2
- package/dist/components/CanvasBanner.svelte.d.ts +1 -1
- package/dist/components/CanvasController.svelte +3 -4
- package/dist/components/ConfigForm.svelte +118 -256
- package/dist/components/ConfigForm.svelte.d.ts +2 -2
- package/dist/components/ConfigMappingRow.svelte +7 -9
- package/dist/components/ConfigMappingRow.svelte.d.ts +1 -1
- package/dist/components/ConfigModal.svelte +3 -3
- package/dist/components/ConfigModal.svelte.d.ts +1 -1
- package/dist/components/ConfigPanel.stories.svelte +19 -19
- package/dist/components/ConfigPanel.stories.svelte.d.ts +1 -1
- package/dist/components/ConfigPanel.svelte +9 -20
- package/dist/components/ConfigPanel.svelte.d.ts +1 -1
- package/dist/components/ConnectionLine.svelte +4 -4
- package/dist/components/EdgeRefresher.svelte +1 -1
- package/dist/components/FlowDropEdge.stories.svelte +110 -110
- package/dist/components/FlowDropEdge.svelte +9 -9
- package/dist/components/FlowDropEdge.svelte.d.ts +1 -1
- package/dist/components/FlowDropZone.svelte +6 -9
- package/dist/components/FlowDropZone.svelte.d.ts +1 -1
- package/dist/components/LoadingSpinner.stories.svelte +13 -13
- package/dist/components/LoadingSpinner.stories.svelte.d.ts +1 -1
- package/dist/components/LoadingSpinner.svelte +3 -3
- package/dist/components/LoadingSpinner.svelte.d.ts +1 -1
- package/dist/components/Logo.stories.svelte +4 -4
- package/dist/components/Logo.stories.svelte.d.ts +1 -1
- package/dist/components/Logo.svelte +3 -9
- package/dist/components/LogsSidebar.svelte +41 -48
- package/dist/components/LogsSidebar.svelte.d.ts +1 -1
- package/dist/components/MarkdownDisplay.stories.svelte +10 -14
- package/dist/components/MarkdownDisplay.stories.svelte.d.ts +1 -1
- package/dist/components/MarkdownDisplay.svelte +4 -6
- package/dist/components/Navbar.stories.svelte +19 -19
- package/dist/components/Navbar.stories.svelte.d.ts +1 -1
- package/dist/components/Navbar.svelte +28 -49
- package/dist/components/Navbar.svelte.d.ts +2 -2
- package/dist/components/NodeSidebar.svelte +42 -88
- package/dist/components/NodeSidebar.svelte.d.ts +1 -1
- package/dist/components/NodeStatusOverlay.stories.svelte +19 -31
- package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +1 -1
- package/dist/components/NodeStatusOverlay.svelte +40 -55
- package/dist/components/NodeStatusOverlay.svelte.d.ts +3 -3
- package/dist/components/NodeSwapPicker.svelte +20 -64
- package/dist/components/NodeSwapPicker.svelte.d.ts +1 -1
- package/dist/components/PipelineStatus.svelte +63 -89
- package/dist/components/PipelineStatus.svelte.d.ts +4 -4
- package/dist/components/PortCoordinateTracker.svelte +5 -7
- package/dist/components/PortCoordinateTracker.svelte.d.ts +1 -1
- package/dist/components/PortMappingRow.svelte +20 -24
- package/dist/components/PortMappingRow.svelte.d.ts +2 -2
- package/dist/components/ReadOnlyDetails.svelte +1 -1
- package/dist/components/SchemaForm.stories.svelte +53 -53
- package/dist/components/SchemaForm.stories.svelte.d.ts +1 -1
- package/dist/components/SchemaForm.svelte +24 -51
- package/dist/components/SchemaForm.svelte.d.ts +2 -2
- package/dist/components/SettingsModal.svelte +6 -9
- package/dist/components/SettingsModal.svelte.d.ts +1 -1
- package/dist/components/SettingsPanel.svelte +138 -158
- package/dist/components/SettingsPanel.svelte.d.ts +1 -1
- package/dist/components/StatusIcon.stories.svelte +16 -29
- package/dist/components/StatusIcon.stories.svelte.d.ts +1 -1
- package/dist/components/StatusIcon.svelte +19 -19
- package/dist/components/StatusIcon.svelte.d.ts +2 -2
- package/dist/components/StatusLabel.stories.svelte +8 -8
- package/dist/components/StatusLabel.stories.svelte.d.ts +1 -1
- package/dist/components/SwapMappingEditor.svelte +35 -56
- package/dist/components/SwapMappingEditor.svelte.d.ts +2 -2
- package/dist/components/ThemeToggle.stories.svelte +10 -10
- package/dist/components/ThemeToggle.stories.svelte.d.ts +1 -1
- package/dist/components/ThemeToggle.svelte +22 -33
- package/dist/components/ThemeToggle.svelte.d.ts +1 -1
- package/dist/components/UniversalNode.svelte +29 -41
- package/dist/components/UniversalNode.svelte.d.ts +3 -3
- package/dist/components/WorkflowEditor.svelte +113 -168
- package/dist/components/WorkflowEditor.svelte.d.ts +4 -4
- package/dist/components/chat/AIChatPanel.svelte +272 -133
- package/dist/components/chat/AIChatPanel.svelte.d.ts +3 -3
- package/dist/components/chat/CommandPreview.svelte +74 -24
- package/dist/components/chat/CommandPreview.svelte.d.ts +1 -1
- package/dist/components/console/CommandConsole.stories.svelte +71 -53
- package/dist/components/console/CommandConsole.stories.svelte.d.ts +1 -1
- package/dist/components/console/CommandConsole.svelte +39 -35
- package/dist/components/console/CommandConsole.svelte.d.ts +2 -2
- package/dist/components/console/ConsoleAutocomplete.svelte +6 -3
- package/dist/components/console/ConsoleInput.svelte +148 -89
- package/dist/components/console/ConsoleInput.svelte.d.ts +1 -1
- package/dist/components/console/ConsoleOutput.svelte +5 -10
- package/dist/components/console/ConsoleOutput.svelte.d.ts +1 -1
- package/dist/components/console/formatters.d.ts +1 -1
- package/dist/components/console/formatters.js +27 -29
- package/dist/components/form/FormArray.svelte +75 -132
- package/dist/components/form/FormArray.svelte.d.ts +1 -1
- package/dist/components/form/FormAutocomplete.svelte +65 -108
- package/dist/components/form/FormAutocomplete.svelte.d.ts +1 -1
- package/dist/components/form/FormCheckboxGroup.stories.svelte +13 -16
- package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormCheckboxGroup.svelte +2 -2
- package/dist/components/form/FormCodeEditor.svelte +42 -56
- package/dist/components/form/FormField.svelte +79 -90
- package/dist/components/form/FormField.svelte.d.ts +2 -2
- package/dist/components/form/FormFieldLight.svelte +72 -88
- package/dist/components/form/FormFieldLight.svelte.d.ts +1 -1
- package/dist/components/form/FormFieldWrapper.stories.svelte +14 -14
- package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormFieldWrapper.svelte +2 -9
- package/dist/components/form/FormFieldWrapper.svelte.d.ts +1 -1
- package/dist/components/form/FormFieldset.svelte +3 -3
- package/dist/components/form/FormFieldset.svelte.d.ts +2 -2
- package/dist/components/form/FormMarkdownEditor.svelte +123 -156
- package/dist/components/form/FormNumberField.stories.svelte +18 -18
- package/dist/components/form/FormNumberField.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormNumberField.svelte +6 -6
- package/dist/components/form/FormRangeField.stories.svelte +13 -13
- package/dist/components/form/FormRangeField.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormRangeField.svelte +4 -12
- package/dist/components/form/FormSelect.stories.svelte +21 -21
- package/dist/components/form/FormSelect.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormSelect.svelte +5 -5
- package/dist/components/form/FormSelect.svelte.d.ts +1 -1
- package/dist/components/form/FormTemplateEditor.svelte +126 -175
- package/dist/components/form/FormTemplateEditor.svelte.d.ts +1 -1
- package/dist/components/form/FormTextField.stories.svelte +17 -23
- package/dist/components/form/FormTextField.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormTextField.svelte +4 -4
- package/dist/components/form/FormTextarea.stories.svelte +18 -21
- package/dist/components/form/FormTextarea.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormTextarea.svelte +4 -4
- package/dist/components/form/FormToggle.stories.svelte +13 -16
- package/dist/components/form/FormToggle.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormToggle.svelte +3 -3
- package/dist/components/form/FormUISchemaRenderer.svelte +12 -19
- package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +3 -3
- package/dist/components/form/index.d.ts +19 -19
- package/dist/components/form/index.js +18 -18
- package/dist/components/form/templateAutocomplete.d.ts +2 -2
- package/dist/components/form/templateAutocomplete.js +55 -64
- package/dist/components/form/types.d.ts +6 -6
- package/dist/components/form/types.js +4 -9
- package/dist/components/icons/AlertCircleIcon.svelte +1 -6
- package/dist/components/icons/CogIcon.svelte +1 -6
- package/dist/components/interrupt/ChoicePrompt.stories.svelte +27 -27
- package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/ChoicePrompt.svelte +17 -41
- package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +17 -17
- package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/ConfirmationPrompt.svelte +10 -16
- package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/FormPrompt.svelte +10 -15
- package/dist/components/interrupt/FormPrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/InterruptBubble.svelte +87 -121
- package/dist/components/interrupt/InterruptBubble.svelte.d.ts +2 -2
- package/dist/components/interrupt/ReviewPrompt.stories.svelte +37 -37
- package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/ReviewPrompt.svelte +55 -75
- package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/TextInputPrompt.stories.svelte +16 -17
- package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/TextInputPrompt.svelte +13 -18
- package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/index.d.ts +6 -6
- package/dist/components/interrupt/index.js +6 -6
- package/dist/components/layouts/MainLayout.svelte +46 -84
- package/dist/components/layouts/MainLayout.svelte.d.ts +6 -6
- package/dist/components/nodes/GatewayNode.stories.svelte +64 -65
- package/dist/components/nodes/GatewayNode.svelte +37 -70
- package/dist/components/nodes/GatewayNode.svelte.d.ts +3 -3
- package/dist/components/nodes/IdeaNode.stories.svelte +25 -26
- package/dist/components/nodes/IdeaNode.svelte +22 -36
- package/dist/components/nodes/IdeaNode.svelte.d.ts +1 -1
- package/dist/components/nodes/NotesNode.stories.svelte +37 -38
- package/dist/components/nodes/NotesNode.svelte +28 -39
- package/dist/components/nodes/NotesNode.svelte.d.ts +1 -1
- package/dist/components/nodes/SimpleNode.stories.svelte +137 -138
- package/dist/components/nodes/SimpleNode.svelte +44 -74
- package/dist/components/nodes/SimpleNode.svelte.d.ts +1 -1
- package/dist/components/nodes/SquareNode.stories.svelte +75 -75
- package/dist/components/nodes/SquareNode.svelte +42 -68
- package/dist/components/nodes/SquareNode.svelte.d.ts +1 -1
- package/dist/components/nodes/TerminalNode.stories.svelte +10 -10
- package/dist/components/nodes/TerminalNode.svelte +74 -112
- package/dist/components/nodes/TerminalNode.svelte.d.ts +1 -1
- package/dist/components/nodes/ToolNode.stories.svelte +115 -116
- package/dist/components/nodes/ToolNode.svelte +31 -64
- package/dist/components/nodes/ToolNode.svelte.d.ts +1 -1
- package/dist/components/nodes/WorkflowNode.stories.svelte +84 -89
- package/dist/components/nodes/WorkflowNode.svelte +50 -103
- package/dist/components/nodes/WorkflowNode.svelte.d.ts +3 -3
- package/dist/components/playground/ChatPanel.svelte +47 -103
- package/dist/components/playground/ExecutionLogs.svelte +45 -68
- package/dist/components/playground/InputCollector.svelte +32 -51
- package/dist/components/playground/MessageBubble.stories.svelte +25 -25
- package/dist/components/playground/MessageBubble.stories.svelte.d.ts +1 -1
- package/dist/components/playground/MessageBubble.svelte +54 -70
- package/dist/components/playground/MessageBubble.svelte.d.ts +1 -1
- package/dist/components/playground/Playground.svelte +60 -91
- package/dist/components/playground/Playground.svelte.d.ts +3 -3
- package/dist/components/playground/PlaygroundModal.svelte +8 -12
- package/dist/components/playground/PlaygroundModal.svelte.d.ts +3 -3
- package/dist/components/playground/SessionManager.svelte +34 -40
- package/dist/components/playground/SessionManager.svelte.d.ts +1 -1
- package/dist/config/agentSpecEndpoints.d.ts +1 -1
- package/dist/config/agentSpecEndpoints.js +20 -20
- package/dist/config/constants.js +2 -2
- package/dist/config/defaultCategories.d.ts +1 -1
- package/dist/config/defaultCategories.js +86 -86
- package/dist/config/defaultPortConfig.d.ts +1 -1
- package/dist/config/defaultPortConfig.js +144 -144
- package/dist/config/endpoints.d.ts +4 -4
- package/dist/config/endpoints.js +68 -68
- package/dist/config/runtimeConfig.d.ts +2 -2
- package/dist/config/runtimeConfig.js +8 -8
- package/dist/core/index.d.ts +68 -68
- package/dist/core/index.js +38 -38
- package/dist/display/index.d.ts +2 -2
- package/dist/display/index.js +2 -2
- package/dist/editor/index.d.ts +64 -64
- package/dist/editor/index.js +54 -54
- package/dist/form/code.d.ts +5 -5
- package/dist/form/code.js +14 -14
- package/dist/form/fieldRegistry.d.ts +3 -3
- package/dist/form/fieldRegistry.js +9 -11
- package/dist/form/full.d.ts +8 -8
- package/dist/form/full.js +9 -9
- package/dist/form/index.d.ts +18 -18
- package/dist/form/index.js +16 -16
- package/dist/form/markdown.d.ts +4 -4
- package/dist/form/markdown.js +8 -8
- package/dist/helpers/proximityConnect.d.ts +3 -3
- package/dist/helpers/proximityConnect.js +32 -34
- package/dist/helpers/workflowEditorHelper.d.ts +6 -6
- package/dist/helpers/workflowEditorHelper.js +64 -68
- package/dist/index.d.ts +6 -6
- package/dist/index.js +6 -6
- package/dist/mocks/app-environment.js +2 -2
- package/dist/mocks/app-forms.js +1 -1
- package/dist/mocks/app-navigation.js +2 -2
- package/dist/mocks/app-stores.js +3 -3
- package/dist/playground/index.d.ts +19 -19
- package/dist/playground/index.js +16 -16
- package/dist/playground/mount.d.ts +3 -3
- package/dist/playground/mount.js +24 -24
- package/dist/registry/builtinFormats.js +13 -13
- package/dist/registry/builtinNodes.d.ts +2 -2
- package/dist/registry/builtinNodes.js +77 -77
- package/dist/registry/index.d.ts +4 -4
- package/dist/registry/index.js +4 -4
- package/dist/registry/nodeComponentRegistry.d.ts +8 -8
- package/dist/registry/nodeComponentRegistry.js +9 -11
- package/dist/registry/plugin.d.ts +2 -2
- package/dist/registry/plugin.js +11 -11
- package/dist/registry/workflowFormatRegistry.d.ts +3 -3
- package/dist/registry/workflowFormatRegistry.js +2 -2
- package/dist/schema/index.d.ts +1 -1
- package/dist/schema/index.js +2 -2
- package/dist/services/agentSpecExecutionService.d.ts +3 -3
- package/dist/services/agentSpecExecutionService.js +55 -56
- package/dist/services/api.d.ts +2 -2
- package/dist/services/api.js +37 -37
- package/dist/services/apiVariableService.d.ts +1 -1
- package/dist/services/apiVariableService.js +34 -41
- package/dist/services/autoSaveService.js +8 -8
- package/dist/services/categoriesApi.d.ts +2 -2
- package/dist/services/categoriesApi.js +8 -8
- package/dist/services/chatService.d.ts +1 -1
- package/dist/services/chatService.js +18 -18
- package/dist/services/draftStorage.d.ts +1 -1
- package/dist/services/draftStorage.js +11 -11
- package/dist/services/dynamicSchemaService.d.ts +1 -1
- package/dist/services/dynamicSchemaService.js +39 -41
- package/dist/services/globalSave.d.ts +2 -2
- package/dist/services/globalSave.js +38 -41
- package/dist/services/historyService.d.ts +1 -1
- package/dist/services/historyService.js +10 -10
- package/dist/services/interruptService.d.ts +1 -1
- package/dist/services/interruptService.js +29 -35
- package/dist/services/nodeExecutionService.d.ts +1 -1
- package/dist/services/nodeExecutionService.js +44 -45
- package/dist/services/playgroundService.d.ts +1 -1
- package/dist/services/playgroundService.js +29 -29
- package/dist/services/portConfigApi.d.ts +2 -2
- package/dist/services/portConfigApi.js +8 -8
- package/dist/services/settingsService.d.ts +2 -2
- package/dist/services/settingsService.js +19 -25
- package/dist/services/toastService.d.ts +4 -4
- package/dist/services/toastService.js +33 -33
- package/dist/services/variableService.d.ts +1 -1
- package/dist/services/variableService.js +36 -36
- package/dist/services/workflowStorage.d.ts +2 -2
- package/dist/services/workflowStorage.js +13 -13
- package/dist/settings/index.d.ts +7 -7
- package/dist/settings/index.js +6 -6
- package/dist/skins/default.d.ts +1 -1
- package/dist/skins/default.js +1 -1
- package/dist/skins/index.d.ts +3 -3
- package/dist/skins/index.js +7 -7
- package/dist/skins/slate.d.ts +1 -1
- package/dist/skins/slate.js +69 -69
- package/dist/stores/categoriesStore.svelte.d.ts +1 -1
- package/dist/stores/categoriesStore.svelte.js +5 -5
- package/dist/stores/editorStateMachine.svelte.d.ts +2 -2
- package/dist/stores/editorStateMachine.svelte.js +34 -34
- package/dist/stores/historyStore.svelte.d.ts +4 -4
- package/dist/stores/historyStore.svelte.js +4 -4
- package/dist/stores/interruptStore.svelte.d.ts +3 -3
- package/dist/stores/interruptStore.svelte.js +21 -21
- package/dist/stores/playgroundStore.svelte.d.ts +2 -2
- package/dist/stores/playgroundStore.svelte.js +18 -21
- package/dist/stores/portCoordinateStore.svelte.d.ts +2 -2
- package/dist/stores/portCoordinateStore.svelte.js +10 -13
- package/dist/stores/settingsStore.svelte.d.ts +2 -2
- package/dist/stores/settingsStore.svelte.js +57 -62
- package/dist/stores/workflowStore.svelte.d.ts +3 -3
- package/dist/stores/workflowStore.svelte.js +46 -47
- package/dist/stories/CanvasDecorator.svelte +7 -10
- package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
- package/dist/stories/EdgeDecorator.svelte +28 -31
- package/dist/stories/EdgeDecorator.svelte.d.ts +1 -1
- package/dist/stories/NodeDecorator.svelte +14 -20
- package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
- package/dist/stories/utils.d.ts +2 -2
- package/dist/stories/utils.js +89 -93
- package/dist/styles/base.css +16 -50
- package/dist/styles/tokens.css +10 -28
- package/dist/svelte-app.d.ts +10 -10
- package/dist/svelte-app.js +39 -39
- package/dist/themes/default.d.ts +1 -1
- package/dist/themes/default.js +4 -4
- package/dist/themes/index.d.ts +3 -3
- package/dist/themes/index.js +11 -11
- package/dist/themes/minimal.d.ts +1 -1
- package/dist/themes/minimal.js +5 -5
- package/dist/types/agentspec.d.ts +18 -18
- package/dist/types/agentspec.js +2 -2
- package/dist/types/auth.d.ts +1 -1
- package/dist/types/auth.js +6 -6
- package/dist/types/chat.d.ts +2 -2
- package/dist/types/config.d.ts +6 -6
- package/dist/types/events.d.ts +3 -3
- package/dist/types/events.js +2 -2
- package/dist/types/index.d.ts +32 -32
- package/dist/types/index.js +6 -6
- package/dist/types/interrupt.d.ts +6 -6
- package/dist/types/interrupt.js +21 -21
- package/dist/types/interruptState.d.ts +12 -12
- package/dist/types/interruptState.js +66 -66
- package/dist/types/playground.d.ts +7 -7
- package/dist/types/playground.js +14 -14
- package/dist/types/settings.d.ts +7 -5
- package/dist/types/settings.js +19 -24
- package/dist/types/skin.d.ts +1 -1
- package/dist/types/theme.d.ts +2 -2
- package/dist/types/uischema.d.ts +4 -4
- package/dist/types/uischema.js +3 -3
- package/dist/utils/colors.d.ts +1 -1
- package/dist/utils/colors.js +95 -97
- package/dist/utils/config.d.ts +2 -2
- package/dist/utils/config.js +48 -48
- package/dist/utils/connections.d.ts +2 -2
- package/dist/utils/connections.js +15 -15
- package/dist/utils/edgeStyling.d.ts +2 -2
- package/dist/utils/edgeStyling.js +36 -39
- package/dist/utils/errors.js +3 -3
- package/dist/utils/fetchWithAuth.d.ts +1 -1
- package/dist/utils/fetchWithAuth.js +2 -2
- package/dist/utils/handleIds.d.ts +2 -2
- package/dist/utils/handleIds.js +8 -8
- package/dist/utils/handlePositioning.d.ts +1 -1
- package/dist/utils/handlePositioning.js +2 -2
- package/dist/utils/icons.d.ts +1 -1
- package/dist/utils/icons.js +74 -74
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.js +7 -7
- package/dist/utils/nodeIds.d.ts +1 -1
- package/dist/utils/nodeIds.js +1 -1
- package/dist/utils/nodeStatus.d.ts +1 -1
- package/dist/utils/nodeStatus.js +48 -48
- package/dist/utils/nodeSwap.d.ts +9 -9
- package/dist/utils/nodeSwap.js +52 -58
- package/dist/utils/nodeTypes.d.ts +1 -1
- package/dist/utils/nodeTypes.js +20 -21
- package/dist/utils/nodeWrapper.d.ts +7 -7
- package/dist/utils/nodeWrapper.js +19 -21
- package/dist/utils/performanceUtils.d.ts +1 -1
- package/dist/utils/performanceUtils.js +1 -2
- package/dist/utils/portUtils.d.ts +2 -2
- package/dist/utils/portUtils.js +1 -1
- package/dist/utils/sanitize.js +1 -1
- package/dist/utils/uischema.d.ts +2 -2
- package/dist/utils/uischema.js +8 -8
- package/dist/utils/validation.js +8 -8
- package/package.json +7 -11
|
@@ -7,29 +7,29 @@
|
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
9
|
<script lang="ts">
|
|
10
|
-
import Icon from
|
|
11
|
-
import { tick } from
|
|
12
|
-
import MessageBubble from
|
|
13
|
-
import { InterruptBubble } from
|
|
14
|
-
import type { PlaygroundMessage } from
|
|
15
|
-
import { hasEnableRunFlag } from
|
|
10
|
+
import Icon from '@iconify/svelte';
|
|
11
|
+
import { tick } from 'svelte';
|
|
12
|
+
import MessageBubble from './MessageBubble.svelte';
|
|
13
|
+
import { InterruptBubble } from '../interrupt/index.js';
|
|
14
|
+
import type { PlaygroundMessage } from '../../types/playground.js';
|
|
15
|
+
import { hasEnableRunFlag } from '../../types/playground.js';
|
|
16
16
|
import {
|
|
17
17
|
isInterruptMetadata,
|
|
18
18
|
extractInterruptMetadata,
|
|
19
|
-
metadataToInterrupt
|
|
20
|
-
} from
|
|
19
|
+
metadataToInterrupt
|
|
20
|
+
} from '../../types/interrupt.js';
|
|
21
21
|
import {
|
|
22
22
|
getMessages,
|
|
23
23
|
getChatMessages,
|
|
24
24
|
getIsExecuting,
|
|
25
25
|
getSessionStatus,
|
|
26
|
-
getCurrentSession
|
|
27
|
-
} from
|
|
26
|
+
getCurrentSession
|
|
27
|
+
} from '../../stores/playgroundStore.svelte.js';
|
|
28
28
|
import {
|
|
29
29
|
getInterruptsMap,
|
|
30
30
|
interruptActions,
|
|
31
|
-
getInterruptByMessageId
|
|
32
|
-
} from
|
|
31
|
+
getInterruptByMessageId
|
|
32
|
+
} from '../../stores/interruptStore.svelte.js';
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
35
|
* Component props
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
let {
|
|
79
79
|
showTimestamps = true,
|
|
80
80
|
autoScroll = true,
|
|
81
|
-
placeholder =
|
|
81
|
+
placeholder = 'Type your message...',
|
|
82
82
|
onSendMessage,
|
|
83
83
|
onStopExecution,
|
|
84
84
|
showLogsInline = false,
|
|
@@ -86,8 +86,8 @@
|
|
|
86
86
|
onInterruptResolved,
|
|
87
87
|
showChatInput = true,
|
|
88
88
|
showRunButton = true,
|
|
89
|
-
predefinedMessage =
|
|
90
|
-
compactSystemMessages = true
|
|
89
|
+
predefinedMessage = 'Run workflow',
|
|
90
|
+
compactSystemMessages = true
|
|
91
91
|
}: Props = $props();
|
|
92
92
|
|
|
93
93
|
/**
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
const noInputsAvailable = $derived(!showChatInput && !showRunButton);
|
|
105
105
|
|
|
106
106
|
/** Input field value */
|
|
107
|
-
let inputValue = $state(
|
|
107
|
+
let inputValue = $state('');
|
|
108
108
|
|
|
109
109
|
/** Reference to the messages container for scrolling */
|
|
110
110
|
let messagesContainer = $state<HTMLDivElement>();
|
|
@@ -115,9 +115,7 @@
|
|
|
115
115
|
/**
|
|
116
116
|
* Filter messages based on showLogsInline setting
|
|
117
117
|
*/
|
|
118
|
-
const displayMessages = $derived(
|
|
119
|
-
showLogsInline ? getMessages() : getChatMessages(),
|
|
120
|
-
);
|
|
118
|
+
const displayMessages = $derived(showLogsInline ? getMessages() : getChatMessages());
|
|
121
119
|
|
|
122
120
|
/**
|
|
123
121
|
* Track previous message count for detecting new messages.
|
|
@@ -151,11 +149,11 @@
|
|
|
151
149
|
if (!activeElement) return false;
|
|
152
150
|
// Check if active element is a form control inside the messages container
|
|
153
151
|
const isFormControl =
|
|
154
|
-
activeElement.tagName ===
|
|
155
|
-
activeElement.tagName ===
|
|
156
|
-
activeElement.tagName ===
|
|
157
|
-
activeElement.tagName ===
|
|
158
|
-
activeElement.getAttribute(
|
|
152
|
+
activeElement.tagName === 'INPUT' ||
|
|
153
|
+
activeElement.tagName === 'TEXTAREA' ||
|
|
154
|
+
activeElement.tagName === 'SELECT' ||
|
|
155
|
+
activeElement.tagName === 'BUTTON' ||
|
|
156
|
+
activeElement.getAttribute('contenteditable') === 'true';
|
|
159
157
|
return isFormControl && messagesContainer.contains(activeElement);
|
|
160
158
|
}
|
|
161
159
|
|
|
@@ -163,9 +161,7 @@
|
|
|
163
161
|
* Check if a message is an interrupt request
|
|
164
162
|
*/
|
|
165
163
|
function isInterruptMessage(message: PlaygroundMessage): boolean {
|
|
166
|
-
return isInterruptMetadata(
|
|
167
|
-
message.metadata as Record<string, unknown> | undefined,
|
|
168
|
-
);
|
|
164
|
+
return isInterruptMetadata(message.metadata as Record<string, unknown> | undefined);
|
|
169
165
|
}
|
|
170
166
|
|
|
171
167
|
/**
|
|
@@ -188,14 +184,10 @@
|
|
|
188
184
|
if (!existing) {
|
|
189
185
|
// Extract and validate interrupt metadata
|
|
190
186
|
const metadata = extractInterruptMetadata(
|
|
191
|
-
message.metadata as Record<string, unknown> | undefined
|
|
187
|
+
message.metadata as Record<string, unknown> | undefined
|
|
192
188
|
);
|
|
193
189
|
if (metadata) {
|
|
194
|
-
const interrupt = metadataToInterrupt(
|
|
195
|
-
metadata,
|
|
196
|
-
message.id,
|
|
197
|
-
message.content,
|
|
198
|
-
);
|
|
190
|
+
const interrupt = metadataToInterrupt(metadata, message.id, message.content);
|
|
199
191
|
interruptActions.addInterrupt(interrupt);
|
|
200
192
|
|
|
201
193
|
// If the message status is 'completed', mark the interrupt as resolved
|
|
@@ -203,11 +195,8 @@
|
|
|
203
195
|
// - "Confirmation Submitted" header
|
|
204
196
|
// - Disabled buttons
|
|
205
197
|
// - "Response submitted" indicator
|
|
206
|
-
if (message.status ===
|
|
207
|
-
interruptActions.resolveInterrupt(
|
|
208
|
-
interrupt.id,
|
|
209
|
-
metadata.response_value,
|
|
210
|
-
);
|
|
198
|
+
if (message.status === 'completed') {
|
|
199
|
+
interruptActions.resolveInterrupt(interrupt.id, metadata.response_value);
|
|
211
200
|
}
|
|
212
201
|
}
|
|
213
202
|
}
|
|
@@ -222,8 +211,8 @@
|
|
|
222
211
|
new Map(
|
|
223
212
|
Array.from(getInterruptsMap().values())
|
|
224
213
|
.filter((i) => i.messageId)
|
|
225
|
-
.map((i) => [i.messageId, i])
|
|
226
|
-
)
|
|
214
|
+
.map((i) => [i.messageId, i])
|
|
215
|
+
)
|
|
227
216
|
);
|
|
228
217
|
|
|
229
218
|
/**
|
|
@@ -236,16 +225,12 @@
|
|
|
236
225
|
/**
|
|
237
226
|
* Check if we should show the welcome state
|
|
238
227
|
*/
|
|
239
|
-
const showWelcome = $derived(
|
|
240
|
-
!getCurrentSession() && displayMessages.length === 0,
|
|
241
|
-
);
|
|
228
|
+
const showWelcome = $derived(!getCurrentSession() && displayMessages.length === 0);
|
|
242
229
|
|
|
243
230
|
/**
|
|
244
231
|
* Check if we should show the empty chat state (session exists but no messages)
|
|
245
232
|
*/
|
|
246
|
-
const showEmptyChat = $derived(
|
|
247
|
-
getCurrentSession() && displayMessages.length === 0,
|
|
248
|
-
);
|
|
233
|
+
const showEmptyChat = $derived(getCurrentSession() && displayMessages.length === 0);
|
|
249
234
|
|
|
250
235
|
/**
|
|
251
236
|
* Handle sending a message
|
|
@@ -257,11 +242,11 @@
|
|
|
257
242
|
}
|
|
258
243
|
|
|
259
244
|
onSendMessage?.(trimmedValue);
|
|
260
|
-
inputValue =
|
|
245
|
+
inputValue = '';
|
|
261
246
|
|
|
262
247
|
// Reset textarea height
|
|
263
248
|
if (inputField) {
|
|
264
|
-
inputField.style.height =
|
|
249
|
+
inputField.style.height = 'auto';
|
|
265
250
|
}
|
|
266
251
|
|
|
267
252
|
// Re-focus the input
|
|
@@ -274,7 +259,7 @@
|
|
|
274
259
|
* Handle keyboard events in the input
|
|
275
260
|
*/
|
|
276
261
|
function handleKeydown(event: KeyboardEvent): void {
|
|
277
|
-
if (event.key ===
|
|
262
|
+
if (event.key === 'Enter' && !event.shiftKey) {
|
|
278
263
|
event.preventDefault();
|
|
279
264
|
handleSend();
|
|
280
265
|
}
|
|
@@ -421,11 +406,7 @@
|
|
|
421
406
|
*/
|
|
422
407
|
$effect(() => {
|
|
423
408
|
const status = getSessionStatus();
|
|
424
|
-
if (
|
|
425
|
-
(status === "idle" || status === "completed") &&
|
|
426
|
-
inputField &&
|
|
427
|
-
!getIsExecuting()
|
|
428
|
-
) {
|
|
409
|
+
if ((status === 'idle' || status === 'completed') && inputField && !getIsExecuting()) {
|
|
429
410
|
tick().then(() => {
|
|
430
411
|
inputField?.focus();
|
|
431
412
|
});
|
|
@@ -449,7 +430,7 @@
|
|
|
449
430
|
*/
|
|
450
431
|
function handleInput(): void {
|
|
451
432
|
if (inputField) {
|
|
452
|
-
inputField.style.height =
|
|
433
|
+
inputField.style.height = 'auto';
|
|
453
434
|
inputField.style.height = `${Math.min(inputField.scrollHeight, 120)}px`;
|
|
454
435
|
}
|
|
455
436
|
}
|
|
@@ -481,24 +462,9 @@
|
|
|
481
462
|
stroke-width="2"
|
|
482
463
|
stroke-linejoin="round"
|
|
483
464
|
/>
|
|
484
|
-
<path
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
stroke-width="2"
|
|
488
|
-
stroke-linejoin="round"
|
|
489
|
-
/>
|
|
490
|
-
<path
|
|
491
|
-
d="M16 12L32 20"
|
|
492
|
-
stroke="currentColor"
|
|
493
|
-
stroke-width="2"
|
|
494
|
-
stroke-linejoin="round"
|
|
495
|
-
/>
|
|
496
|
-
<path
|
|
497
|
-
d="M16 36L32 28"
|
|
498
|
-
stroke="currentColor"
|
|
499
|
-
stroke-width="2"
|
|
500
|
-
stroke-linejoin="round"
|
|
501
|
-
/>
|
|
465
|
+
<path d="M24 24V40" stroke="currentColor" stroke-width="2" stroke-linejoin="round" />
|
|
466
|
+
<path d="M16 12L32 20" stroke="currentColor" stroke-width="2" stroke-linejoin="round" />
|
|
467
|
+
<path d="M16 36L32 28" stroke="currentColor" stroke-width="2" stroke-linejoin="round" />
|
|
502
468
|
</svg>
|
|
503
469
|
</div>
|
|
504
470
|
{#if noInputsAvailable}
|
|
@@ -511,9 +477,7 @@
|
|
|
511
477
|
<p class="chat-panel__welcome-text">Test your flow with a prompt</p>
|
|
512
478
|
{:else}
|
|
513
479
|
<h2 class="chat-panel__welcome-title">Ready to run</h2>
|
|
514
|
-
<p class="chat-panel__welcome-text">
|
|
515
|
-
Click Run to execute your workflow
|
|
516
|
-
</p>
|
|
480
|
+
<p class="chat-panel__welcome-text">Click Run to execute your workflow</p>
|
|
517
481
|
{/if}
|
|
518
482
|
</div>
|
|
519
483
|
{:else if showEmptyChat}
|
|
@@ -539,24 +503,9 @@
|
|
|
539
503
|
stroke-width="2"
|
|
540
504
|
stroke-linejoin="round"
|
|
541
505
|
/>
|
|
542
|
-
<path
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
stroke-width="2"
|
|
546
|
-
stroke-linejoin="round"
|
|
547
|
-
/>
|
|
548
|
-
<path
|
|
549
|
-
d="M16 12L32 20"
|
|
550
|
-
stroke="currentColor"
|
|
551
|
-
stroke-width="2"
|
|
552
|
-
stroke-linejoin="round"
|
|
553
|
-
/>
|
|
554
|
-
<path
|
|
555
|
-
d="M16 36L32 28"
|
|
556
|
-
stroke="currentColor"
|
|
557
|
-
stroke-width="2"
|
|
558
|
-
stroke-linejoin="round"
|
|
559
|
-
/>
|
|
506
|
+
<path d="M24 24V40" stroke="currentColor" stroke-width="2" stroke-linejoin="round" />
|
|
507
|
+
<path d="M16 12L32 20" stroke="currentColor" stroke-width="2" stroke-linejoin="round" />
|
|
508
|
+
<path d="M16 36L32 28" stroke="currentColor" stroke-width="2" stroke-linejoin="round" />
|
|
560
509
|
</svg>
|
|
561
510
|
</div>
|
|
562
511
|
{#if noInputsAvailable}
|
|
@@ -569,9 +518,7 @@
|
|
|
569
518
|
<p class="chat-panel__welcome-text">Test your flow with a prompt</p>
|
|
570
519
|
{:else}
|
|
571
520
|
<h2 class="chat-panel__welcome-title">Ready to run</h2>
|
|
572
|
-
<p class="chat-panel__welcome-text">
|
|
573
|
-
Click Run to execute your workflow
|
|
574
|
-
</p>
|
|
521
|
+
<p class="chat-panel__welcome-text">Click Run to execute your workflow</p>
|
|
575
522
|
{/if}
|
|
576
523
|
</div>
|
|
577
524
|
{:else}
|
|
@@ -617,8 +564,7 @@
|
|
|
617
564
|
<!-- No inputs available - show informational message -->
|
|
618
565
|
<div class="chat-panel__no-inputs">
|
|
619
566
|
<Icon icon="mdi:information-outline" />
|
|
620
|
-
<span>View-only mode. Workflow execution is controlled externally.</span
|
|
621
|
-
>
|
|
567
|
+
<span>View-only mode. Workflow execution is controlled externally.</span>
|
|
622
568
|
</div>
|
|
623
569
|
{:else}
|
|
624
570
|
<div
|
|
@@ -640,7 +586,7 @@
|
|
|
640
586
|
</div>
|
|
641
587
|
{/if}
|
|
642
588
|
|
|
643
|
-
{#if getSessionStatus() ===
|
|
589
|
+
{#if getSessionStatus() === 'running' || getIsExecuting()}
|
|
644
590
|
<button
|
|
645
591
|
type="button"
|
|
646
592
|
class="chat-panel__stop-btn"
|
|
@@ -666,9 +612,7 @@
|
|
|
666
612
|
class="chat-panel__run-btn"
|
|
667
613
|
onclick={handleRun}
|
|
668
614
|
disabled={!runEnabled}
|
|
669
|
-
title={runEnabled
|
|
670
|
-
? "Run workflow"
|
|
671
|
-
: "Waiting for workflow to be ready..."}
|
|
615
|
+
title={runEnabled ? 'Run workflow' : 'Waiting for workflow to be ready...'}
|
|
672
616
|
>
|
|
673
617
|
<Icon icon="mdi:play" />
|
|
674
618
|
Run
|
|
@@ -7,13 +7,10 @@
|
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
9
|
<script lang="ts">
|
|
10
|
-
import Icon from
|
|
11
|
-
import { slide } from
|
|
12
|
-
import type {
|
|
13
|
-
|
|
14
|
-
PlaygroundMessageLevel,
|
|
15
|
-
} from "../../types/playground.js";
|
|
16
|
-
import { getLogMessages } from "../../stores/playgroundStore.svelte.js";
|
|
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';
|
|
17
14
|
|
|
18
15
|
/**
|
|
19
16
|
* Component props
|
|
@@ -27,14 +24,10 @@
|
|
|
27
24
|
onToggle?: (expanded: boolean) => void;
|
|
28
25
|
}
|
|
29
26
|
|
|
30
|
-
let {
|
|
31
|
-
isExpanded = $bindable(false),
|
|
32
|
-
maxHeight = "300px",
|
|
33
|
-
onToggle,
|
|
34
|
-
}: Props = $props();
|
|
27
|
+
let { isExpanded = $bindable(false), maxHeight = '300px', onToggle }: Props = $props();
|
|
35
28
|
|
|
36
29
|
/** Current log level filter */
|
|
37
|
-
let levelFilter = $state<PlaygroundMessageLevel |
|
|
30
|
+
let levelFilter = $state<PlaygroundMessageLevel | 'all'>('all');
|
|
38
31
|
|
|
39
32
|
/** Reference to logs container for auto-scroll */
|
|
40
33
|
let logsContainer = $state<HTMLDivElement>();
|
|
@@ -43,9 +36,9 @@
|
|
|
43
36
|
* Filter logs based on selected level
|
|
44
37
|
*/
|
|
45
38
|
const filteredLogs = $derived(
|
|
46
|
-
levelFilter ===
|
|
39
|
+
levelFilter === 'all'
|
|
47
40
|
? getLogMessages()
|
|
48
|
-
: getLogMessages().filter((log) => log.metadata?.level === levelFilter)
|
|
41
|
+
: getLogMessages().filter((log) => log.metadata?.level === levelFilter)
|
|
49
42
|
);
|
|
50
43
|
|
|
51
44
|
/**
|
|
@@ -53,11 +46,10 @@
|
|
|
53
46
|
*/
|
|
54
47
|
const logCounts = $derived({
|
|
55
48
|
all: getLogMessages().length,
|
|
56
|
-
info: getLogMessages().filter((l) => l.metadata?.level ===
|
|
57
|
-
warning: getLogMessages().filter((l) => l.metadata?.level ===
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
debug: getLogMessages().filter((l) => l.metadata?.level === "debug").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
|
|
61
53
|
});
|
|
62
54
|
|
|
63
55
|
/**
|
|
@@ -73,12 +65,12 @@
|
|
|
73
65
|
*/
|
|
74
66
|
function formatTimestamp(timestamp: string): string {
|
|
75
67
|
const date = new Date(timestamp);
|
|
76
|
-
return date.toLocaleTimeString(
|
|
68
|
+
return date.toLocaleTimeString('en-US', {
|
|
77
69
|
hour12: false,
|
|
78
|
-
hour:
|
|
79
|
-
minute:
|
|
80
|
-
second:
|
|
81
|
-
fractionalSecondDigits: 3
|
|
70
|
+
hour: '2-digit',
|
|
71
|
+
minute: '2-digit',
|
|
72
|
+
second: '2-digit',
|
|
73
|
+
fractionalSecondDigits: 3
|
|
82
74
|
});
|
|
83
75
|
}
|
|
84
76
|
|
|
@@ -87,14 +79,14 @@
|
|
|
87
79
|
*/
|
|
88
80
|
function getLevelIcon(level: PlaygroundMessageLevel | undefined): string {
|
|
89
81
|
switch (level) {
|
|
90
|
-
case
|
|
91
|
-
return
|
|
92
|
-
case
|
|
93
|
-
return
|
|
94
|
-
case
|
|
95
|
-
return
|
|
82
|
+
case 'error':
|
|
83
|
+
return 'mdi:alert-circle';
|
|
84
|
+
case 'warning':
|
|
85
|
+
return 'mdi:alert';
|
|
86
|
+
case 'debug':
|
|
87
|
+
return 'mdi:bug';
|
|
96
88
|
default:
|
|
97
|
-
return
|
|
89
|
+
return 'mdi:information';
|
|
98
90
|
}
|
|
99
91
|
}
|
|
100
92
|
|
|
@@ -105,15 +97,15 @@
|
|
|
105
97
|
const logText = filteredLogs
|
|
106
98
|
.map(
|
|
107
99
|
(log) =>
|
|
108
|
-
`[${formatTimestamp(log.timestamp)}] [${(log.metadata?.level ??
|
|
100
|
+
`[${formatTimestamp(log.timestamp)}] [${(log.metadata?.level ?? 'info').toUpperCase()}] ${log.content}${log.nodeId ? ` (Node: ${log.nodeId})` : ''}`
|
|
109
101
|
)
|
|
110
|
-
.join(
|
|
102
|
+
.join('\n');
|
|
111
103
|
|
|
112
|
-
const blob = new Blob([logText], { type:
|
|
104
|
+
const blob = new Blob([logText], { type: 'text/plain' });
|
|
113
105
|
const url = URL.createObjectURL(blob);
|
|
114
|
-
const link = document.createElement(
|
|
106
|
+
const link = document.createElement('a');
|
|
115
107
|
link.href = url;
|
|
116
|
-
link.download = `playground-logs-${new Date().toISOString().split(
|
|
108
|
+
link.download = `playground-logs-${new Date().toISOString().split('T')[0]}.txt`;
|
|
117
109
|
link.click();
|
|
118
110
|
URL.revokeObjectURL(url);
|
|
119
111
|
}
|
|
@@ -143,21 +135,16 @@
|
|
|
143
135
|
<span class="execution-logs__badge">{logCounts.all}</span>
|
|
144
136
|
{/if}
|
|
145
137
|
{#if logCounts.error > 0}
|
|
146
|
-
<span class="execution-logs__badge execution-logs__badge--error"
|
|
147
|
-
>{logCounts.error}</span
|
|
148
|
-
>
|
|
138
|
+
<span class="execution-logs__badge execution-logs__badge--error">{logCounts.error}</span>
|
|
149
139
|
{/if}
|
|
150
140
|
{#if logCounts.warning > 0}
|
|
151
|
-
<span class="execution-logs__badge execution-logs__badge--warning"
|
|
152
|
-
>{logCounts.warning}</span
|
|
141
|
+
<span class="execution-logs__badge execution-logs__badge--warning">{logCounts.warning}</span
|
|
153
142
|
>
|
|
154
143
|
{/if}
|
|
155
144
|
</div>
|
|
156
145
|
<Icon
|
|
157
146
|
icon="mdi:chevron-down"
|
|
158
|
-
class="execution-logs__chevron {isExpanded
|
|
159
|
-
? 'execution-logs__chevron--expanded'
|
|
160
|
-
: ''}"
|
|
147
|
+
class="execution-logs__chevron {isExpanded ? 'execution-logs__chevron--expanded' : ''}"
|
|
161
148
|
/>
|
|
162
149
|
</button>
|
|
163
150
|
|
|
@@ -170,32 +157,32 @@
|
|
|
170
157
|
<button
|
|
171
158
|
type="button"
|
|
172
159
|
class="execution-logs__filter"
|
|
173
|
-
class:execution-logs__filter--active={levelFilter ===
|
|
174
|
-
onclick={() => (levelFilter =
|
|
160
|
+
class:execution-logs__filter--active={levelFilter === 'all'}
|
|
161
|
+
onclick={() => (levelFilter = 'all')}
|
|
175
162
|
>
|
|
176
163
|
All ({logCounts.all})
|
|
177
164
|
</button>
|
|
178
165
|
<button
|
|
179
166
|
type="button"
|
|
180
167
|
class="execution-logs__filter execution-logs__filter--info"
|
|
181
|
-
class:execution-logs__filter--active={levelFilter ===
|
|
182
|
-
onclick={() => (levelFilter =
|
|
168
|
+
class:execution-logs__filter--active={levelFilter === 'info'}
|
|
169
|
+
onclick={() => (levelFilter = 'info')}
|
|
183
170
|
>
|
|
184
171
|
Info ({logCounts.info})
|
|
185
172
|
</button>
|
|
186
173
|
<button
|
|
187
174
|
type="button"
|
|
188
175
|
class="execution-logs__filter execution-logs__filter--warning"
|
|
189
|
-
class:execution-logs__filter--active={levelFilter ===
|
|
190
|
-
onclick={() => (levelFilter =
|
|
176
|
+
class:execution-logs__filter--active={levelFilter === 'warning'}
|
|
177
|
+
onclick={() => (levelFilter = 'warning')}
|
|
191
178
|
>
|
|
192
179
|
Warning ({logCounts.warning})
|
|
193
180
|
</button>
|
|
194
181
|
<button
|
|
195
182
|
type="button"
|
|
196
183
|
class="execution-logs__filter execution-logs__filter--error"
|
|
197
|
-
class:execution-logs__filter--active={levelFilter ===
|
|
198
|
-
onclick={() => (levelFilter =
|
|
184
|
+
class:execution-logs__filter--active={levelFilter === 'error'}
|
|
185
|
+
onclick={() => (levelFilter = 'error')}
|
|
199
186
|
>
|
|
200
187
|
Error ({logCounts.error})
|
|
201
188
|
</button>
|
|
@@ -212,11 +199,7 @@
|
|
|
212
199
|
</div>
|
|
213
200
|
|
|
214
201
|
<!-- Logs List -->
|
|
215
|
-
<div
|
|
216
|
-
class="execution-logs__list"
|
|
217
|
-
bind:this={logsContainer}
|
|
218
|
-
style="max-height: {maxHeight}"
|
|
219
|
-
>
|
|
202
|
+
<div class="execution-logs__list" bind:this={logsContainer} style="max-height: {maxHeight}">
|
|
220
203
|
{#if filteredLogs.length === 0}
|
|
221
204
|
<div class="execution-logs__empty">
|
|
222
205
|
<Icon icon="mdi:file-document-outline" />
|
|
@@ -226,12 +209,9 @@
|
|
|
226
209
|
{#each filteredLogs as log (log.id)}
|
|
227
210
|
<div
|
|
228
211
|
class="execution-logs__entry"
|
|
229
|
-
class:execution-logs__entry--error={log.metadata?.level ===
|
|
230
|
-
|
|
231
|
-
class:execution-logs__entry--
|
|
232
|
-
"warning"}
|
|
233
|
-
class:execution-logs__entry--debug={log.metadata?.level ===
|
|
234
|
-
"debug"}
|
|
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'}
|
|
235
215
|
>
|
|
236
216
|
<span class="execution-logs__entry-time">
|
|
237
217
|
{formatTimestamp(log.timestamp)}
|
|
@@ -243,10 +223,7 @@
|
|
|
243
223
|
{log.content}
|
|
244
224
|
</span>
|
|
245
225
|
{#if log.nodeId}
|
|
246
|
-
<span
|
|
247
|
-
class="execution-logs__entry-node"
|
|
248
|
-
title="Node: {log.nodeId}"
|
|
249
|
-
>
|
|
226
|
+
<span class="execution-logs__entry-node" title="Node: {log.nodeId}">
|
|
250
227
|
{log.metadata?.nodeLabel ?? log.nodeId}
|
|
251
228
|
</span>
|
|
252
229
|
{/if}
|