@flowdrop/flowdrop 1.5.0 → 1.7.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 +280 -303
- package/dist/components/App.svelte.d.ts +11 -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 +46 -59
- 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 +51 -81
- 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/schemas/v1/workflow.schema.json +5 -0
- 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 +4 -3
- package/dist/stores/workflowStore.svelte.js +47 -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 +34 -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 +6 -2
- package/dist/utils/connections.js +21 -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
|
@@ -8,18 +8,15 @@
|
|
|
8
8
|
-->
|
|
9
9
|
|
|
10
10
|
<script lang="ts">
|
|
11
|
-
import { onMount, onDestroy } from
|
|
12
|
-
import Icon from
|
|
13
|
-
import ChatPanel from
|
|
14
|
-
import type { Workflow } from
|
|
15
|
-
import type { EndpointConfig } from
|
|
16
|
-
import type {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
} from
|
|
20
|
-
import { playgroundService } from "../../services/playgroundService.js";
|
|
21
|
-
import { interruptService } from "../../services/interruptService.js";
|
|
22
|
-
import { setEndpointConfig } from "../../services/api.js";
|
|
11
|
+
import { onMount, onDestroy } from 'svelte';
|
|
12
|
+
import Icon from '@iconify/svelte';
|
|
13
|
+
import ChatPanel from './ChatPanel.svelte';
|
|
14
|
+
import type { Workflow } from '../../types/index.js';
|
|
15
|
+
import type { EndpointConfig } from '../../config/endpoints.js';
|
|
16
|
+
import type { PlaygroundMode, PlaygroundConfig } from '../../types/playground.js';
|
|
17
|
+
import { playgroundService } from '../../services/playgroundService.js';
|
|
18
|
+
import { interruptService } from '../../services/interruptService.js';
|
|
19
|
+
import { setEndpointConfig } from '../../services/api.js';
|
|
23
20
|
import {
|
|
24
21
|
getCurrentSession,
|
|
25
22
|
getSessions,
|
|
@@ -28,10 +25,10 @@
|
|
|
28
25
|
getError,
|
|
29
26
|
playgroundActions,
|
|
30
27
|
getInputFields,
|
|
31
|
-
createPollingCallback
|
|
32
|
-
} from
|
|
33
|
-
import { interruptActions } from
|
|
34
|
-
import { logger } from
|
|
28
|
+
createPollingCallback
|
|
29
|
+
} from '../../stores/playgroundStore.svelte.js';
|
|
30
|
+
import { interruptActions } from '../../stores/interruptStore.svelte.js';
|
|
31
|
+
import { logger } from '../../utils/logger.js';
|
|
35
32
|
|
|
36
33
|
/**
|
|
37
34
|
* Component props
|
|
@@ -56,11 +53,11 @@
|
|
|
56
53
|
let {
|
|
57
54
|
workflowId,
|
|
58
55
|
workflow,
|
|
59
|
-
mode =
|
|
56
|
+
mode = 'standalone',
|
|
60
57
|
initialSessionId,
|
|
61
58
|
endpointConfig,
|
|
62
59
|
config = {},
|
|
63
|
-
onClose
|
|
60
|
+
onClose
|
|
64
61
|
}: Props = $props();
|
|
65
62
|
|
|
66
63
|
/** Current input values from InputCollector */
|
|
@@ -109,15 +106,12 @@
|
|
|
109
106
|
// Handle auto-run after initialization is complete
|
|
110
107
|
if (config.autoRun && !autoRunTriggered) {
|
|
111
108
|
autoRunTriggered = true;
|
|
112
|
-
const predefinedMessage = config.predefinedMessage ??
|
|
113
|
-
logger.debug(
|
|
114
|
-
"[Playground] Auto-run triggered with message:",
|
|
115
|
-
predefinedMessage,
|
|
116
|
-
);
|
|
109
|
+
const predefinedMessage = config.predefinedMessage ?? 'Run workflow';
|
|
110
|
+
logger.debug('[Playground] Auto-run triggered with message:', predefinedMessage);
|
|
117
111
|
await handleSendMessage(predefinedMessage);
|
|
118
112
|
}
|
|
119
113
|
} catch (err) {
|
|
120
|
-
logger.error(
|
|
114
|
+
logger.error('[Playground] Initialization error:', err);
|
|
121
115
|
}
|
|
122
116
|
};
|
|
123
117
|
|
|
@@ -165,7 +159,7 @@
|
|
|
165
159
|
if (!sessionExists) {
|
|
166
160
|
logger.warn(
|
|
167
161
|
`[Playground] Initial session "${sessionId}" not found in available sessions. ` +
|
|
168
|
-
`Available sessions: ${sessionList.map((s) => s.id).join(
|
|
162
|
+
`Available sessions: ${sessionList.map((s) => s.id).join(', ') || 'none'}`
|
|
169
163
|
);
|
|
170
164
|
// Don't set error - just log warning and let user pick a session
|
|
171
165
|
initialSessionLoaded = true;
|
|
@@ -178,7 +172,7 @@
|
|
|
178
172
|
initialSessionLoaded = true;
|
|
179
173
|
loadedInitialSessionId = sessionId;
|
|
180
174
|
} catch (err) {
|
|
181
|
-
logger.error(
|
|
175
|
+
logger.error('[Playground] Failed to load initial session:', err);
|
|
182
176
|
// Mark as attempted to prevent retry loops
|
|
183
177
|
initialSessionLoaded = true;
|
|
184
178
|
loadedInitialSessionId = sessionId;
|
|
@@ -205,8 +199,8 @@
|
|
|
205
199
|
openMenuId = null;
|
|
206
200
|
}
|
|
207
201
|
|
|
208
|
-
document.addEventListener(
|
|
209
|
-
return () => document.removeEventListener(
|
|
202
|
+
document.addEventListener('click', onDocumentClick);
|
|
203
|
+
return () => document.removeEventListener('click', onDocumentClick);
|
|
210
204
|
});
|
|
211
205
|
|
|
212
206
|
/**
|
|
@@ -220,10 +214,9 @@
|
|
|
220
214
|
const sessionList = await playgroundService.listSessions(workflowId);
|
|
221
215
|
playgroundActions.setSessions(sessionList);
|
|
222
216
|
} catch (err) {
|
|
223
|
-
const errorMessage =
|
|
224
|
-
err instanceof Error ? err.message : "Failed to load sessions";
|
|
217
|
+
const errorMessage = err instanceof Error ? err.message : 'Failed to load sessions';
|
|
225
218
|
playgroundActions.setError(errorMessage);
|
|
226
|
-
logger.error(
|
|
219
|
+
logger.error('Failed to load sessions:', err);
|
|
227
220
|
} finally {
|
|
228
221
|
playgroundActions.setLoading(false);
|
|
229
222
|
}
|
|
@@ -246,14 +239,13 @@
|
|
|
246
239
|
playgroundActions.setMessages(response.data ?? []);
|
|
247
240
|
|
|
248
241
|
// Start polling if session is running
|
|
249
|
-
if (session.status ===
|
|
242
|
+
if (session.status === 'running') {
|
|
250
243
|
startPolling(sessionId);
|
|
251
244
|
}
|
|
252
245
|
} catch (err) {
|
|
253
|
-
const errorMessage =
|
|
254
|
-
err instanceof Error ? err.message : "Failed to load session";
|
|
246
|
+
const errorMessage = err instanceof Error ? err.message : 'Failed to load session';
|
|
255
247
|
playgroundActions.setError(errorMessage);
|
|
256
|
-
logger.error(
|
|
248
|
+
logger.error('Failed to load session:', err);
|
|
257
249
|
} finally {
|
|
258
250
|
playgroundActions.setLoading(false);
|
|
259
251
|
}
|
|
@@ -268,18 +260,14 @@
|
|
|
268
260
|
|
|
269
261
|
try {
|
|
270
262
|
const sessionName = `Session ${getSessions().length + 1}`;
|
|
271
|
-
const session = await playgroundService.createSession(
|
|
272
|
-
workflowId,
|
|
273
|
-
sessionName,
|
|
274
|
-
);
|
|
263
|
+
const session = await playgroundService.createSession(workflowId, sessionName);
|
|
275
264
|
playgroundActions.addSession(session);
|
|
276
265
|
playgroundActions.setCurrentSession(session);
|
|
277
266
|
playgroundActions.clearMessages();
|
|
278
267
|
} catch (err) {
|
|
279
|
-
const errorMessage =
|
|
280
|
-
err instanceof Error ? err.message : "Failed to create session";
|
|
268
|
+
const errorMessage = err instanceof Error ? err.message : 'Failed to create session';
|
|
281
269
|
playgroundActions.setError(errorMessage);
|
|
282
|
-
logger.error(
|
|
270
|
+
logger.error('Failed to create session:', err);
|
|
283
271
|
} finally {
|
|
284
272
|
playgroundActions.setLoading(false);
|
|
285
273
|
}
|
|
@@ -313,10 +301,9 @@
|
|
|
313
301
|
playgroundService.stopPolling();
|
|
314
302
|
}
|
|
315
303
|
} catch (err) {
|
|
316
|
-
const errorMessage =
|
|
317
|
-
err instanceof Error ? err.message : "Failed to delete session";
|
|
304
|
+
const errorMessage = err instanceof Error ? err.message : 'Failed to delete session';
|
|
318
305
|
playgroundActions.setError(errorMessage);
|
|
319
|
-
logger.error(
|
|
306
|
+
logger.error('Failed to delete session:', err);
|
|
320
307
|
}
|
|
321
308
|
}
|
|
322
309
|
|
|
@@ -386,30 +373,24 @@
|
|
|
386
373
|
if (!inputs[field.nodeId]) {
|
|
387
374
|
inputs[field.nodeId] = {};
|
|
388
375
|
}
|
|
389
|
-
(inputs[field.nodeId] as Record<string, unknown>)[field.fieldId] =
|
|
390
|
-
inputValues[key];
|
|
376
|
+
(inputs[field.nodeId] as Record<string, unknown>)[field.fieldId] = inputValues[key];
|
|
391
377
|
}
|
|
392
378
|
});
|
|
393
379
|
|
|
394
380
|
// Send message
|
|
395
|
-
const message = await playgroundService.sendMessage(
|
|
396
|
-
sessionId,
|
|
397
|
-
content,
|
|
398
|
-
inputs,
|
|
399
|
-
);
|
|
381
|
+
const message = await playgroundService.sendMessage(sessionId, content, inputs);
|
|
400
382
|
playgroundActions.addMessage(message);
|
|
401
383
|
|
|
402
384
|
// Update session status
|
|
403
|
-
playgroundActions.updateSessionStatus(
|
|
385
|
+
playgroundActions.updateSessionStatus('running');
|
|
404
386
|
|
|
405
387
|
// Start polling for responses
|
|
406
388
|
startPolling(sessionId);
|
|
407
389
|
} catch (err) {
|
|
408
|
-
const errorMessage =
|
|
409
|
-
err instanceof Error ? err.message : "Failed to send message";
|
|
390
|
+
const errorMessage = err instanceof Error ? err.message : 'Failed to send message';
|
|
410
391
|
playgroundActions.setError(errorMessage);
|
|
411
392
|
playgroundActions.setExecuting(false);
|
|
412
|
-
logger.error(
|
|
393
|
+
logger.error('Failed to send message:', err);
|
|
413
394
|
}
|
|
414
395
|
}
|
|
415
396
|
|
|
@@ -426,12 +407,11 @@
|
|
|
426
407
|
await playgroundService.stopExecution(sessionId);
|
|
427
408
|
playgroundService.stopPolling();
|
|
428
409
|
playgroundActions.setExecuting(false);
|
|
429
|
-
playgroundActions.updateSessionStatus(
|
|
410
|
+
playgroundActions.updateSessionStatus('idle');
|
|
430
411
|
} catch (err) {
|
|
431
|
-
const errorMessage =
|
|
432
|
-
err instanceof Error ? err.message : "Failed to stop execution";
|
|
412
|
+
const errorMessage = err instanceof Error ? err.message : 'Failed to stop execution';
|
|
433
413
|
playgroundActions.setError(errorMessage);
|
|
434
|
-
logger.error(
|
|
414
|
+
logger.error('Failed to stop execution:', err);
|
|
435
415
|
}
|
|
436
416
|
}
|
|
437
417
|
|
|
@@ -449,7 +429,7 @@
|
|
|
449
429
|
sessionId,
|
|
450
430
|
pollingCallback,
|
|
451
431
|
pollingInterval,
|
|
452
|
-
config.shouldStopPolling
|
|
432
|
+
config.shouldStopPolling
|
|
453
433
|
);
|
|
454
434
|
}
|
|
455
435
|
|
|
@@ -465,10 +445,7 @@
|
|
|
465
445
|
const response = await playgroundService.getMessages(sessionId);
|
|
466
446
|
pollingCallback(response);
|
|
467
447
|
} catch (err) {
|
|
468
|
-
logger.error(
|
|
469
|
-
"[Playground] Failed to refresh messages after interrupt:",
|
|
470
|
-
err,
|
|
471
|
-
);
|
|
448
|
+
logger.error('[Playground] Failed to refresh messages after interrupt:', err);
|
|
472
449
|
}
|
|
473
450
|
}
|
|
474
451
|
|
|
@@ -484,7 +461,7 @@
|
|
|
484
461
|
const diffDays = Math.floor(diffMs / 86400000);
|
|
485
462
|
|
|
486
463
|
if (diffMins < 1) {
|
|
487
|
-
return
|
|
464
|
+
return 'Just now';
|
|
488
465
|
}
|
|
489
466
|
if (diffMins < 60) {
|
|
490
467
|
return `${diffMins}m ago`;
|
|
@@ -495,18 +472,18 @@
|
|
|
495
472
|
if (diffDays < 7) {
|
|
496
473
|
return `${diffDays}d ago`;
|
|
497
474
|
}
|
|
498
|
-
return date.toLocaleDateString(
|
|
499
|
-
month:
|
|
500
|
-
day:
|
|
475
|
+
return date.toLocaleDateString('en-US', {
|
|
476
|
+
month: 'short',
|
|
477
|
+
day: 'numeric'
|
|
501
478
|
});
|
|
502
479
|
}
|
|
503
480
|
</script>
|
|
504
481
|
|
|
505
482
|
<div
|
|
506
483
|
class="playground"
|
|
507
|
-
class:playground--embedded={mode ===
|
|
508
|
-
class:playground--standalone={mode ===
|
|
509
|
-
class:playground--modal={mode ===
|
|
484
|
+
class:playground--embedded={mode === 'embedded'}
|
|
485
|
+
class:playground--standalone={mode === 'standalone'}
|
|
486
|
+
class:playground--modal={mode === 'modal'}
|
|
510
487
|
class:playground--no-sidebar={config.showSidebar === false}
|
|
511
488
|
>
|
|
512
489
|
<div class="playground__container">
|
|
@@ -514,23 +491,21 @@
|
|
|
514
491
|
{#if config.showSidebar !== false}
|
|
515
492
|
<aside
|
|
516
493
|
class="playground__sidebar"
|
|
517
|
-
style={config.sidebarWidth
|
|
518
|
-
? `--fd-playground-sidebar-width: ${config.sidebarWidth}`
|
|
519
|
-
: ""}
|
|
494
|
+
style={config.sidebarWidth ? `--fd-playground-sidebar-width: ${config.sidebarWidth}` : ''}
|
|
520
495
|
>
|
|
521
496
|
<!-- Sidebar Header -->
|
|
522
497
|
<div class="playground__sidebar-header">
|
|
523
498
|
<div class="playground__sidebar-title">
|
|
524
499
|
<span>Playground</span>
|
|
525
500
|
</div>
|
|
526
|
-
{#if (mode ===
|
|
501
|
+
{#if (mode === 'embedded' || mode === 'modal') && onClose}
|
|
527
502
|
<button
|
|
528
503
|
type="button"
|
|
529
504
|
class="playground__sidebar-close"
|
|
530
505
|
onclick={onClose}
|
|
531
506
|
title="Close playground"
|
|
532
507
|
>
|
|
533
|
-
{#if mode ===
|
|
508
|
+
{#if mode === 'modal'}
|
|
534
509
|
<Icon icon="mdi:close" />
|
|
535
510
|
{:else}
|
|
536
511
|
<Icon icon="mdi:dock-right" />
|
|
@@ -555,9 +530,7 @@
|
|
|
555
530
|
<!-- Sessions List - click a session to load it -->
|
|
556
531
|
<div class="playground__sessions-wrap">
|
|
557
532
|
{#if getSessions().length > 0}
|
|
558
|
-
<p class="playground__sessions-hint">
|
|
559
|
-
Click a session to load it
|
|
560
|
-
</p>
|
|
533
|
+
<p class="playground__sessions-hint">Click a session to load it</p>
|
|
561
534
|
{/if}
|
|
562
535
|
<div class="playground__sessions">
|
|
563
536
|
{#if getSessions().length === 0 && !getIsLoading()}
|
|
@@ -568,15 +541,13 @@
|
|
|
568
541
|
{#each getSessions() as session (session.id)}
|
|
569
542
|
<div
|
|
570
543
|
class="playground__session"
|
|
571
|
-
class:playground__session--active={getCurrentSession()
|
|
572
|
-
?.id === session.id}
|
|
544
|
+
class:playground__session--active={getCurrentSession()?.id === session.id}
|
|
573
545
|
role="button"
|
|
574
546
|
tabindex="0"
|
|
575
547
|
title="Click to load this session"
|
|
576
548
|
aria-label="Load session: {session.name}"
|
|
577
549
|
onclick={() => handleSelectSession(session.id)}
|
|
578
|
-
onkeydown={(e) =>
|
|
579
|
-
e.key === "Enter" && handleSelectSession(session.id)}
|
|
550
|
+
onkeydown={(e) => e.key === 'Enter' && handleSelectSession(session.id)}
|
|
580
551
|
>
|
|
581
552
|
<span class="playground__session-name" title={session.name}>
|
|
582
553
|
{session.name}
|
|
@@ -585,8 +556,7 @@
|
|
|
585
556
|
<button
|
|
586
557
|
type="button"
|
|
587
558
|
class="playground__session-menu"
|
|
588
|
-
class:playground__session-menu--open={openMenuId ===
|
|
589
|
-
session.id}
|
|
559
|
+
class:playground__session-menu--open={openMenuId === session.id}
|
|
590
560
|
onclick={(e) => handleMenuToggle(e, session.id)}
|
|
591
561
|
title="Session options"
|
|
592
562
|
>
|
|
@@ -657,11 +627,11 @@
|
|
|
657
627
|
<ChatPanel
|
|
658
628
|
showTimestamps={config.showTimestamps ?? true}
|
|
659
629
|
autoScroll={config.autoScroll ?? true}
|
|
660
|
-
showLogsInline={config.logDisplayMode ===
|
|
630
|
+
showLogsInline={config.logDisplayMode === 'inline'}
|
|
661
631
|
enableMarkdown={config.enableMarkdown ?? true}
|
|
662
632
|
showChatInput={config.showChatInput ?? true}
|
|
663
633
|
showRunButton={config.showRunButton ?? true}
|
|
664
|
-
predefinedMessage={config.predefinedMessage ??
|
|
634
|
+
predefinedMessage={config.predefinedMessage ?? 'Run workflow'}
|
|
665
635
|
onSendMessage={handleSendMessage}
|
|
666
636
|
onStopExecution={handleStopExecution}
|
|
667
637
|
onInterruptResolved={handleInterruptResolved}
|
|
@@ -680,8 +650,7 @@
|
|
|
680
650
|
overflow: hidden; /* Prevent playground-level scrolling */
|
|
681
651
|
background-color: var(--fd-muted);
|
|
682
652
|
font-family:
|
|
683
|
-
-apple-system, BlinkMacSystemFont,
|
|
684
|
-
Arial, sans-serif;
|
|
653
|
+
-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
685
654
|
}
|
|
686
655
|
|
|
687
656
|
.playground--embedded {
|
|
@@ -695,7 +664,7 @@
|
|
|
695
664
|
}
|
|
696
665
|
|
|
697
666
|
/* Dark mode override for standalone */
|
|
698
|
-
:global([data-theme=
|
|
667
|
+
:global([data-theme='dark']) .playground--standalone {
|
|
699
668
|
background: linear-gradient(135deg, #141418 0%, #1a1a2e 50%, #16162a 100%);
|
|
700
669
|
}
|
|
701
670
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Workflow } from
|
|
2
|
-
import type { EndpointConfig } from
|
|
3
|
-
import type { PlaygroundMode, PlaygroundConfig } from
|
|
1
|
+
import type { Workflow } from '../../types/index.js';
|
|
2
|
+
import type { EndpointConfig } from '../../config/endpoints.js';
|
|
3
|
+
import type { PlaygroundMode, PlaygroundConfig } from '../../types/playground.js';
|
|
4
4
|
/**
|
|
5
5
|
* Component props
|
|
6
6
|
*/
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
9
|
<script lang="ts">
|
|
10
|
-
import Icon from
|
|
11
|
-
import Playground from
|
|
12
|
-
import type { Workflow } from
|
|
13
|
-
import type { EndpointConfig } from
|
|
14
|
-
import type { PlaygroundConfig } from
|
|
10
|
+
import Icon from '@iconify/svelte';
|
|
11
|
+
import Playground from './Playground.svelte';
|
|
12
|
+
import type { Workflow } from '../../types/index.js';
|
|
13
|
+
import type { EndpointConfig } from '../../config/endpoints.js';
|
|
14
|
+
import type { PlaygroundConfig } from '../../types/playground.js';
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Component props
|
|
@@ -40,14 +40,14 @@
|
|
|
40
40
|
initialSessionId,
|
|
41
41
|
endpointConfig,
|
|
42
42
|
config = {},
|
|
43
|
-
onClose
|
|
43
|
+
onClose
|
|
44
44
|
}: Props = $props();
|
|
45
45
|
|
|
46
46
|
/**
|
|
47
47
|
* Close modal on Escape key
|
|
48
48
|
*/
|
|
49
49
|
function handleKeydown(event: KeyboardEvent): void {
|
|
50
|
-
if (event.key ===
|
|
50
|
+
if (event.key === 'Escape') {
|
|
51
51
|
onClose();
|
|
52
52
|
}
|
|
53
53
|
}
|
|
@@ -75,11 +75,7 @@
|
|
|
75
75
|
>
|
|
76
76
|
<!-- Modal Container -->
|
|
77
77
|
<!-- svelte-ignore a11y_no_static_element_interactions a11y_click_events_have_key_events — role="presentation" container stops backdrop click propagation -->
|
|
78
|
-
<div
|
|
79
|
-
class="playground-modal"
|
|
80
|
-
onclick={(e) => e.stopPropagation()}
|
|
81
|
-
role="presentation"
|
|
82
|
-
>
|
|
78
|
+
<div class="playground-modal" onclick={(e) => e.stopPropagation()} role="presentation">
|
|
83
79
|
<!-- Modal Header -->
|
|
84
80
|
<div class="playground-modal__header">
|
|
85
81
|
<div class="playground-modal__title" id="playground-modal-title">
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Workflow } from
|
|
2
|
-
import type { EndpointConfig } from
|
|
3
|
-
import type { PlaygroundConfig } from
|
|
1
|
+
import type { Workflow } from '../../types/index.js';
|
|
2
|
+
import type { EndpointConfig } from '../../config/endpoints.js';
|
|
3
|
+
import type { PlaygroundConfig } from '../../types/playground.js';
|
|
4
4
|
/**
|
|
5
5
|
* Component props
|
|
6
6
|
*/
|
|
@@ -7,15 +7,15 @@
|
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
9
|
<script lang="ts">
|
|
10
|
-
import Icon from
|
|
11
|
-
import { slide } from
|
|
12
|
-
import type { PlaygroundSession } from
|
|
10
|
+
import Icon from '@iconify/svelte';
|
|
11
|
+
import { slide } from 'svelte/transition';
|
|
12
|
+
import type { PlaygroundSession } from '../../types/playground.js';
|
|
13
13
|
import {
|
|
14
14
|
getSessions,
|
|
15
15
|
getCurrentSession,
|
|
16
16
|
getIsLoading,
|
|
17
|
-
getSessionCount
|
|
18
|
-
} from
|
|
17
|
+
getSessionCount
|
|
18
|
+
} from '../../stores/playgroundStore.svelte.js';
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Component props
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
/** Callback when user wants to delete a session */
|
|
33
33
|
onDeleteSession?: (sessionId: string) => void;
|
|
34
34
|
/** Display mode: sidebar or dropdown */
|
|
35
|
-
mode?:
|
|
35
|
+
mode?: 'sidebar' | 'dropdown';
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
let {
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
onCreateSession,
|
|
42
42
|
onSelectSession,
|
|
43
43
|
onDeleteSession,
|
|
44
|
-
mode =
|
|
44
|
+
mode = 'sidebar'
|
|
45
45
|
}: Props = $props();
|
|
46
46
|
|
|
47
47
|
/** Session pending deletion (for confirmation) */
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
*/
|
|
61
61
|
function handleSelectSession(sessionId: string): void {
|
|
62
62
|
onSelectSession?.(sessionId);
|
|
63
|
-
if (mode ===
|
|
63
|
+
if (mode === 'dropdown') {
|
|
64
64
|
isExpanded = false;
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
const diffDays = Math.floor(diffMs / 86400000);
|
|
106
106
|
|
|
107
107
|
if (diffMins < 1) {
|
|
108
|
-
return
|
|
108
|
+
return 'Just now';
|
|
109
109
|
}
|
|
110
110
|
if (diffMins < 60) {
|
|
111
111
|
return `${diffMins}m ago`;
|
|
@@ -116,41 +116,41 @@
|
|
|
116
116
|
if (diffDays < 7) {
|
|
117
117
|
return `${diffDays}d ago`;
|
|
118
118
|
}
|
|
119
|
-
return date.toLocaleDateString(
|
|
120
|
-
month:
|
|
121
|
-
day:
|
|
119
|
+
return date.toLocaleDateString('en-US', {
|
|
120
|
+
month: 'short',
|
|
121
|
+
day: 'numeric'
|
|
122
122
|
});
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
/**
|
|
126
126
|
* Get status icon
|
|
127
127
|
*/
|
|
128
|
-
function getStatusIcon(status: PlaygroundSession[
|
|
128
|
+
function getStatusIcon(status: PlaygroundSession['status']): string {
|
|
129
129
|
switch (status) {
|
|
130
|
-
case
|
|
131
|
-
return
|
|
132
|
-
case
|
|
133
|
-
return
|
|
134
|
-
case
|
|
135
|
-
return
|
|
130
|
+
case 'running':
|
|
131
|
+
return 'mdi:loading';
|
|
132
|
+
case 'completed':
|
|
133
|
+
return 'mdi:check-circle';
|
|
134
|
+
case 'failed':
|
|
135
|
+
return 'mdi:alert-circle';
|
|
136
136
|
default:
|
|
137
|
-
return
|
|
137
|
+
return 'mdi:circle-outline';
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
/**
|
|
142
142
|
* Get status color class
|
|
143
143
|
*/
|
|
144
|
-
function getStatusClass(status: PlaygroundSession[
|
|
144
|
+
function getStatusClass(status: PlaygroundSession['status']): string {
|
|
145
145
|
switch (status) {
|
|
146
|
-
case
|
|
147
|
-
return
|
|
148
|
-
case
|
|
149
|
-
return
|
|
150
|
-
case
|
|
151
|
-
return
|
|
146
|
+
case 'running':
|
|
147
|
+
return 'session-manager__status--running';
|
|
148
|
+
case 'completed':
|
|
149
|
+
return 'session-manager__status--completed';
|
|
150
|
+
case 'failed':
|
|
151
|
+
return 'session-manager__status--failed';
|
|
152
152
|
default:
|
|
153
|
-
return
|
|
153
|
+
return 'session-manager__status--idle';
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
</script>
|
|
@@ -158,8 +158,8 @@
|
|
|
158
158
|
<div
|
|
159
159
|
class="session-manager"
|
|
160
160
|
class:session-manager--expanded={isExpanded}
|
|
161
|
-
class:session-manager--sidebar={mode ===
|
|
162
|
-
class:session-manager--dropdown={mode ===
|
|
161
|
+
class:session-manager--sidebar={mode === 'sidebar'}
|
|
162
|
+
class:session-manager--dropdown={mode === 'dropdown'}
|
|
163
163
|
>
|
|
164
164
|
<!-- Header / Toggle -->
|
|
165
165
|
<button
|
|
@@ -177,9 +177,7 @@
|
|
|
177
177
|
</div>
|
|
178
178
|
<Icon
|
|
179
179
|
icon="mdi:chevron-down"
|
|
180
|
-
class="session-manager__chevron {isExpanded
|
|
181
|
-
? 'session-manager__chevron--expanded'
|
|
182
|
-
: ''}"
|
|
180
|
+
class="session-manager__chevron {isExpanded ? 'session-manager__chevron--expanded' : ''}"
|
|
183
181
|
/>
|
|
184
182
|
</button>
|
|
185
183
|
|
|
@@ -208,13 +206,11 @@
|
|
|
208
206
|
{#each getSessions() as session (session.id)}
|
|
209
207
|
<div
|
|
210
208
|
class="session-manager__item"
|
|
211
|
-
class:session-manager__item--active={getCurrentSession()?.id ===
|
|
212
|
-
session.id}
|
|
209
|
+
class:session-manager__item--active={getCurrentSession()?.id === session.id}
|
|
213
210
|
role="button"
|
|
214
211
|
tabindex="0"
|
|
215
212
|
onclick={() => handleSelectSession(session.id)}
|
|
216
|
-
onkeydown={(e) =>
|
|
217
|
-
e.key === "Enter" && handleSelectSession(session.id)}
|
|
213
|
+
onkeydown={(e) => e.key === 'Enter' && handleSelectSession(session.id)}
|
|
218
214
|
>
|
|
219
215
|
<div class="session-manager__item-info">
|
|
220
216
|
<div class="session-manager__item-header">
|
|
@@ -222,9 +218,7 @@
|
|
|
222
218
|
{session.name}
|
|
223
219
|
</span>
|
|
224
220
|
<span
|
|
225
|
-
class="session-manager__status {getStatusClass(
|
|
226
|
-
session.status,
|
|
227
|
-
)}"
|
|
221
|
+
class="session-manager__status {getStatusClass(session.status)}"
|
|
228
222
|
title={session.status}
|
|
229
223
|
>
|
|
230
224
|
<Icon icon={getStatusIcon(session.status)} />
|
|
@@ -13,7 +13,7 @@ interface Props {
|
|
|
13
13
|
/** Callback when user wants to delete a session */
|
|
14
14
|
onDeleteSession?: (sessionId: string) => void;
|
|
15
15
|
/** Display mode: sidebar or dropdown */
|
|
16
|
-
mode?:
|
|
16
|
+
mode?: 'sidebar' | 'dropdown';
|
|
17
17
|
}
|
|
18
18
|
declare const SessionManager: import("svelte").Component<Props, {}, "isExpanded">;
|
|
19
19
|
type SessionManager = ReturnType<typeof SessionManager>;
|