@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
|
@@ -6,80 +6,78 @@
|
|
|
6
6
|
-->
|
|
7
7
|
|
|
8
8
|
<script lang="ts">
|
|
9
|
-
import type { NodeExecutionInfo } from
|
|
10
|
-
import Icon from
|
|
11
|
-
import StatusLabel from
|
|
9
|
+
import type { NodeExecutionInfo } from '../types/index.js';
|
|
10
|
+
import Icon from '@iconify/svelte';
|
|
11
|
+
import StatusLabel from './StatusLabel.svelte';
|
|
12
12
|
import {
|
|
13
13
|
getStatusColor,
|
|
14
14
|
getStatusIcon,
|
|
15
15
|
getStatusLabel,
|
|
16
16
|
getStatusBackgroundColor,
|
|
17
17
|
formatExecutionDuration,
|
|
18
|
-
formatLastExecuted
|
|
19
|
-
} from
|
|
18
|
+
formatLastExecuted
|
|
19
|
+
} from '../utils/nodeStatus.js';
|
|
20
20
|
|
|
21
21
|
interface Props {
|
|
22
22
|
nodeId?: string;
|
|
23
23
|
executionInfo?: NodeExecutionInfo;
|
|
24
|
-
position?:
|
|
25
|
-
size?:
|
|
24
|
+
position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
25
|
+
size?: 'sm' | 'md' | 'lg';
|
|
26
26
|
showDetails?: boolean;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
let props: Props = $props();
|
|
30
30
|
|
|
31
31
|
// Default values
|
|
32
|
-
let position = $derived(props.position ||
|
|
33
|
-
let size = $derived(props.size ||
|
|
32
|
+
let position = $derived(props.position || 'top-right');
|
|
33
|
+
let size = $derived(props.size || 'md');
|
|
34
34
|
let showDetails = $derived(props.showDetails || false);
|
|
35
35
|
let isHovered = $state(false);
|
|
36
36
|
|
|
37
37
|
// Size configurations - optimized for larger, centered overlay
|
|
38
38
|
const sizeConfig = {
|
|
39
39
|
sm: {
|
|
40
|
-
statusSize:
|
|
41
|
-
iconSize:
|
|
42
|
-
labelSize:
|
|
43
|
-
padding:
|
|
40
|
+
statusSize: '18px',
|
|
41
|
+
iconSize: '10px',
|
|
42
|
+
labelSize: '0.75rem',
|
|
43
|
+
padding: '6px 12px'
|
|
44
44
|
},
|
|
45
45
|
md: {
|
|
46
|
-
statusSize:
|
|
47
|
-
iconSize:
|
|
48
|
-
labelSize:
|
|
49
|
-
padding:
|
|
46
|
+
statusSize: '24px',
|
|
47
|
+
iconSize: '14px',
|
|
48
|
+
labelSize: '0.875rem',
|
|
49
|
+
padding: '8px 16px'
|
|
50
50
|
},
|
|
51
51
|
lg: {
|
|
52
|
-
statusSize:
|
|
53
|
-
iconSize:
|
|
54
|
-
labelSize:
|
|
55
|
-
padding:
|
|
56
|
-
}
|
|
52
|
+
statusSize: '28px',
|
|
53
|
+
iconSize: '16px',
|
|
54
|
+
labelSize: '1rem',
|
|
55
|
+
padding: '10px 20px'
|
|
56
|
+
}
|
|
57
57
|
};
|
|
58
58
|
|
|
59
59
|
const config = $derived(sizeConfig[size]);
|
|
60
60
|
|
|
61
61
|
// Position styles - horizontal center aligned with top edge of node
|
|
62
62
|
const positionStyles = {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
'top-left': 'top: -24px; left: 50%; transform: translateX(-50%);',
|
|
64
|
+
'top-right': 'top: -24px; left: 50%; transform: translateX(-50%);',
|
|
65
|
+
'bottom-left': 'top: -24px; left: 50%; transform: translateX(-50%);',
|
|
66
|
+
'bottom-right': 'top: -24px; left: 50%; transform: translateX(-50%);'
|
|
67
67
|
};
|
|
68
68
|
|
|
69
69
|
// Get execution info or default
|
|
70
70
|
let executionInfo = $derived(
|
|
71
71
|
props.executionInfo || {
|
|
72
|
-
status:
|
|
72
|
+
status: 'idle' as const,
|
|
73
73
|
executionCount: 0,
|
|
74
|
-
isExecuting: false
|
|
75
|
-
}
|
|
74
|
+
isExecuting: false
|
|
75
|
+
}
|
|
76
76
|
);
|
|
77
77
|
|
|
78
78
|
// Show overlay if there's meaningful status information
|
|
79
79
|
let shouldShow = $derived(
|
|
80
|
-
executionInfo.status !==
|
|
81
|
-
executionInfo.executionCount > 0 ||
|
|
82
|
-
executionInfo.isExecuting,
|
|
80
|
+
executionInfo.status !== 'idle' || executionInfo.executionCount > 0 || executionInfo.isExecuting
|
|
83
81
|
);
|
|
84
82
|
</script>
|
|
85
83
|
|
|
@@ -88,9 +86,9 @@
|
|
|
88
86
|
class="node-status-overlay"
|
|
89
87
|
class:node-status-overlay--hovered={isHovered}
|
|
90
88
|
class:node-status-overlay--top-left={true}
|
|
91
|
-
class:node-status-overlay--sm={size ===
|
|
92
|
-
class:node-status-overlay--md={size ===
|
|
93
|
-
class:node-status-overlay--lg={size ===
|
|
89
|
+
class:node-status-overlay--sm={size === 'sm'}
|
|
90
|
+
class:node-status-overlay--md={size === 'md'}
|
|
91
|
+
class:node-status-overlay--lg={size === 'lg'}
|
|
94
92
|
style="
|
|
95
93
|
{positionStyles[position]}
|
|
96
94
|
--status-size: {config.statusSize};
|
|
@@ -100,9 +98,7 @@
|
|
|
100
98
|
"
|
|
101
99
|
onmouseenter={() => (isHovered = true)}
|
|
102
100
|
onmouseleave={() => (isHovered = false)}
|
|
103
|
-
title="{getStatusLabel(
|
|
104
|
-
executionInfo.status,
|
|
105
|
-
)} - Executed {executionInfo.executionCount} times"
|
|
101
|
+
title="{getStatusLabel(executionInfo.status)} - Executed {executionInfo.executionCount} times"
|
|
106
102
|
role="status"
|
|
107
103
|
aria-label="Node execution status: {getStatusLabel(executionInfo.status)}"
|
|
108
104
|
>
|
|
@@ -115,10 +111,7 @@
|
|
|
115
111
|
class="node-status-overlay__status-icon"
|
|
116
112
|
style="background-color: {getStatusColor(executionInfo.status)}"
|
|
117
113
|
>
|
|
118
|
-
<Icon
|
|
119
|
-
icon={getStatusIcon(executionInfo.status)}
|
|
120
|
-
class="node-status-overlay__icon"
|
|
121
|
-
/>
|
|
114
|
+
<Icon icon={getStatusIcon(executionInfo.status)} class="node-status-overlay__icon" />
|
|
122
115
|
</div>
|
|
123
116
|
<StatusLabel
|
|
124
117
|
label={getStatusLabel(executionInfo.status)}
|
|
@@ -144,9 +137,7 @@
|
|
|
144
137
|
</div>
|
|
145
138
|
<div class="node-status-overlay__detail-item">
|
|
146
139
|
<span class="node-status-overlay__detail-label">Executions:</span>
|
|
147
|
-
<span class="node-status-overlay__detail-value"
|
|
148
|
-
>{executionInfo.executionCount}</span
|
|
149
|
-
>
|
|
140
|
+
<span class="node-status-overlay__detail-value">{executionInfo.executionCount}</span>
|
|
150
141
|
</div>
|
|
151
142
|
{#if executionInfo.lastExecuted}
|
|
152
143
|
<div class="node-status-overlay__detail-item">
|
|
@@ -160,20 +151,14 @@
|
|
|
160
151
|
<div class="node-status-overlay__detail-item">
|
|
161
152
|
<span class="node-status-overlay__detail-label">Duration:</span>
|
|
162
153
|
<span class="node-status-overlay__detail-value"
|
|
163
|
-
>{formatExecutionDuration(
|
|
164
|
-
executionInfo.lastExecutionDuration,
|
|
165
|
-
)}</span
|
|
154
|
+
>{formatExecutionDuration(executionInfo.lastExecutionDuration)}</span
|
|
166
155
|
>
|
|
167
156
|
</div>
|
|
168
157
|
{/if}
|
|
169
158
|
{#if executionInfo.lastError}
|
|
170
|
-
<div
|
|
171
|
-
class="node-status-overlay__detail-item node-status-overlay__detail-item--error"
|
|
172
|
-
>
|
|
159
|
+
<div class="node-status-overlay__detail-item node-status-overlay__detail-item--error">
|
|
173
160
|
<span class="node-status-overlay__detail-label">Error:</span>
|
|
174
|
-
<span class="node-status-overlay__detail-value"
|
|
175
|
-
>{executionInfo.lastError}</span
|
|
176
|
-
>
|
|
161
|
+
<span class="node-status-overlay__detail-value">{executionInfo.lastError}</span>
|
|
177
162
|
</div>
|
|
178
163
|
{/if}
|
|
179
164
|
</div>
|
|
@@ -326,7 +311,7 @@
|
|
|
326
311
|
}
|
|
327
312
|
|
|
328
313
|
/* Animation for running status */
|
|
329
|
-
.node-status-overlay__status-icon[style*=
|
|
314
|
+
.node-status-overlay__status-icon[style*='running'] {
|
|
330
315
|
animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
331
316
|
}
|
|
332
317
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { NodeExecutionInfo } from
|
|
1
|
+
import type { NodeExecutionInfo } from '../types/index.js';
|
|
2
2
|
interface Props {
|
|
3
3
|
nodeId?: string;
|
|
4
4
|
executionInfo?: NodeExecutionInfo;
|
|
5
|
-
position?:
|
|
6
|
-
size?:
|
|
5
|
+
position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
6
|
+
size?: 'sm' | 'md' | 'lg';
|
|
7
7
|
showDetails?: boolean;
|
|
8
8
|
}
|
|
9
9
|
declare const NodeStatusOverlay: import("svelte").Component<Props, {}, "">;
|
|
@@ -6,18 +6,12 @@
|
|
|
6
6
|
-->
|
|
7
7
|
|
|
8
8
|
<script lang="ts">
|
|
9
|
-
import type {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
} from
|
|
15
|
-
import Icon from "@iconify/svelte";
|
|
16
|
-
import { getNodeIcon, getCategoryIcon } from "../utils/icons.js";
|
|
17
|
-
import { getCategoryColorToken } from "../utils/colors.js";
|
|
18
|
-
import { getCategoryLabel } from "../stores/categoriesStore.svelte.js";
|
|
19
|
-
import { getVersionUpgrade } from "../utils/nodeSwap.js";
|
|
20
|
-
|
|
9
|
+
import type { NodeMetadata, NodeCategory, WorkflowFormat, WorkflowNode } from '../types/index.js';
|
|
10
|
+
import Icon from '@iconify/svelte';
|
|
11
|
+
import { getNodeIcon, getCategoryIcon } from '../utils/icons.js';
|
|
12
|
+
import { getCategoryColorToken } from '../utils/colors.js';
|
|
13
|
+
import { getCategoryLabel } from '../stores/categoriesStore.svelte.js';
|
|
14
|
+
import { getVersionUpgrade } from '../utils/nodeSwap.js';
|
|
21
15
|
|
|
22
16
|
interface Props {
|
|
23
17
|
/** The node being swapped */
|
|
@@ -32,20 +26,12 @@
|
|
|
32
26
|
onCancel: () => void;
|
|
33
27
|
}
|
|
34
28
|
|
|
35
|
-
const {
|
|
36
|
-
currentNode,
|
|
37
|
-
availableNodes,
|
|
38
|
-
activeFormat,
|
|
39
|
-
onSelect,
|
|
40
|
-
onCancel,
|
|
41
|
-
}: Props = $props();
|
|
29
|
+
const { currentNode, availableNodes, activeFormat, onSelect, onCancel }: Props = $props();
|
|
42
30
|
|
|
43
|
-
let searchInput = $state(
|
|
31
|
+
let searchInput = $state('');
|
|
44
32
|
|
|
45
33
|
/** Check version upgrade availability */
|
|
46
|
-
let versionUpgrade = $derived(
|
|
47
|
-
getVersionUpgrade(currentNode.data.metadata, availableNodes),
|
|
48
|
-
);
|
|
34
|
+
let versionUpgrade = $derived(getVersionUpgrade(currentNode.data.metadata, availableNodes));
|
|
49
35
|
|
|
50
36
|
/** Filter nodes compatible with active format */
|
|
51
37
|
function isNodeCompatibleWithFormat(node: NodeMetadata): boolean {
|
|
@@ -55,9 +41,7 @@
|
|
|
55
41
|
}
|
|
56
42
|
|
|
57
43
|
/** Nodes filtered by format compatibility */
|
|
58
|
-
let formatCompatibleNodes = $derived(
|
|
59
|
-
availableNodes.filter((n) => isNodeCompatibleWithFormat(n)),
|
|
60
|
-
);
|
|
44
|
+
let formatCompatibleNodes = $derived(availableNodes.filter((n) => isNodeCompatibleWithFormat(n)));
|
|
61
45
|
|
|
62
46
|
/** Apply search filter */
|
|
63
47
|
let filteredNodes = $derived.by(() => {
|
|
@@ -68,7 +52,7 @@
|
|
|
68
52
|
(node) =>
|
|
69
53
|
node.name.toLowerCase().includes(query) ||
|
|
70
54
|
node.description.toLowerCase().includes(query) ||
|
|
71
|
-
node.tags?.some((tag) => tag.toLowerCase().includes(query))
|
|
55
|
+
node.tags?.some((tag) => tag.toLowerCase().includes(query))
|
|
72
56
|
);
|
|
73
57
|
}
|
|
74
58
|
return nodes;
|
|
@@ -96,11 +80,7 @@
|
|
|
96
80
|
<div class="swap-picker">
|
|
97
81
|
<!-- Header -->
|
|
98
82
|
<div class="swap-picker__header">
|
|
99
|
-
<button
|
|
100
|
-
class="swap-picker__back"
|
|
101
|
-
onclick={onCancel}
|
|
102
|
-
aria-label="Back to configuration"
|
|
103
|
-
>
|
|
83
|
+
<button class="swap-picker__back" onclick={onCancel} aria-label="Back to configuration">
|
|
104
84
|
<Icon icon="heroicons:arrow-left" />
|
|
105
85
|
</button>
|
|
106
86
|
<h2 class="swap-picker__title">Swap Node</h2>
|
|
@@ -114,10 +94,7 @@
|
|
|
114
94
|
|
|
115
95
|
<!-- Version upgrade banner -->
|
|
116
96
|
{#if versionUpgrade}
|
|
117
|
-
<button
|
|
118
|
-
class="swap-picker__upgrade"
|
|
119
|
-
onclick={() => onSelect(versionUpgrade!)}
|
|
120
|
-
>
|
|
97
|
+
<button class="swap-picker__upgrade" onclick={() => onSelect(versionUpgrade!)}>
|
|
121
98
|
<Icon icon="heroicons:arrow-up-circle" />
|
|
122
99
|
<div class="swap-picker__upgrade-info">
|
|
123
100
|
<span class="swap-picker__upgrade-title">Upgrade Available</span>
|
|
@@ -156,10 +133,7 @@
|
|
|
156
133
|
</div>
|
|
157
134
|
<div class="swap-picker__flat-list">
|
|
158
135
|
{#each categoryNodes as nodeType (nodeType.id)}
|
|
159
|
-
<button
|
|
160
|
-
class="swap-picker__flat-item"
|
|
161
|
-
onclick={() => onSelect(nodeType)}
|
|
162
|
-
>
|
|
136
|
+
<button class="swap-picker__flat-item" onclick={() => onSelect(nodeType)}>
|
|
163
137
|
<span
|
|
164
138
|
class="swap-picker__flat-dot"
|
|
165
139
|
style="background: {getCategoryColorToken(nodeType.category)}"
|
|
@@ -188,19 +162,12 @@
|
|
|
188
162
|
</div>
|
|
189
163
|
<div class="swap-picker__category-items">
|
|
190
164
|
{#each categoryNodes as nodeType (nodeType.id)}
|
|
191
|
-
<button
|
|
192
|
-
class="swap-picker__item"
|
|
193
|
-
onclick={() => onSelect(nodeType)}
|
|
194
|
-
>
|
|
165
|
+
<button class="swap-picker__item" onclick={() => onSelect(nodeType)}>
|
|
195
166
|
<span
|
|
196
167
|
class="swap-picker__item-icon"
|
|
197
|
-
style="--_icon-color: {getCategoryColorToken(
|
|
198
|
-
nodeType.category,
|
|
199
|
-
)}"
|
|
168
|
+
style="--_icon-color: {getCategoryColorToken(nodeType.category)}"
|
|
200
169
|
>
|
|
201
|
-
<Icon
|
|
202
|
-
icon={getNodeIcon(nodeType.icon, nodeType.category)}
|
|
203
|
-
/>
|
|
170
|
+
<Icon icon={getNodeIcon(nodeType.icon, nodeType.category)} />
|
|
204
171
|
</span>
|
|
205
172
|
<div class="swap-picker__item-info">
|
|
206
173
|
<span class="swap-picker__item-name">{nodeType.name}</span>
|
|
@@ -208,10 +175,7 @@
|
|
|
208
175
|
{nodeType.description}
|
|
209
176
|
</span>
|
|
210
177
|
</div>
|
|
211
|
-
<Icon
|
|
212
|
-
icon="heroicons:chevron-right"
|
|
213
|
-
class="swap-picker__item-arrow"
|
|
214
|
-
/>
|
|
178
|
+
<Icon icon="heroicons:chevron-right" class="swap-picker__item-arrow" />
|
|
215
179
|
</button>
|
|
216
180
|
{/each}
|
|
217
181
|
</div>
|
|
@@ -439,11 +403,7 @@
|
|
|
439
403
|
width: 1.25rem;
|
|
440
404
|
height: 1.25rem;
|
|
441
405
|
border-radius: 0.25rem;
|
|
442
|
-
background: color-mix(
|
|
443
|
-
in srgb,
|
|
444
|
-
var(--_icon-color) var(--fd-node-icon-bg-opacity),
|
|
445
|
-
transparent
|
|
446
|
-
);
|
|
406
|
+
background: color-mix(in srgb, var(--_icon-color) var(--fd-node-icon-bg-opacity), transparent);
|
|
447
407
|
color: var(--fd-node-icon);
|
|
448
408
|
font-size: 0.625rem;
|
|
449
409
|
display: flex;
|
|
@@ -498,11 +458,7 @@
|
|
|
498
458
|
width: 1.75rem;
|
|
499
459
|
height: 1.75rem;
|
|
500
460
|
border-radius: 0.375rem;
|
|
501
|
-
background: color-mix(
|
|
502
|
-
in srgb,
|
|
503
|
-
var(--_icon-color) var(--fd-node-icon-bg-opacity),
|
|
504
|
-
transparent
|
|
505
|
-
);
|
|
461
|
+
background: color-mix(in srgb, var(--_icon-color) var(--fd-node-icon-bg-opacity), transparent);
|
|
506
462
|
color: var(--fd-node-icon);
|
|
507
463
|
font-size: var(--fd-text-xs);
|
|
508
464
|
display: flex;
|
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
-->
|
|
6
6
|
|
|
7
7
|
<script lang="ts">
|
|
8
|
-
import { onMount } from
|
|
9
|
-
import App from
|
|
10
|
-
import LogsSidebar from
|
|
11
|
-
import { EnhancedFlowDropApiClient } from
|
|
12
|
-
import { createEndpointConfig } from
|
|
13
|
-
import type { Workflow } from
|
|
14
|
-
import type { EndpointConfig } from
|
|
15
|
-
import { logger } from
|
|
8
|
+
import { onMount } from 'svelte';
|
|
9
|
+
import App from './App.svelte';
|
|
10
|
+
import LogsSidebar from './LogsSidebar.svelte';
|
|
11
|
+
import { EnhancedFlowDropApiClient } from '../api/enhanced-client.js';
|
|
12
|
+
import { createEndpointConfig } from '../config/endpoints.js';
|
|
13
|
+
import type { Workflow } from '../types/index.js';
|
|
14
|
+
import type { EndpointConfig } from '../config/endpoints.js';
|
|
15
|
+
import { logger } from '../utils/logger.js';
|
|
16
16
|
|
|
17
17
|
interface Props {
|
|
18
18
|
pipelineId: string;
|
|
@@ -25,31 +25,25 @@
|
|
|
25
25
|
label: string;
|
|
26
26
|
href: string;
|
|
27
27
|
icon?: string;
|
|
28
|
-
variant?:
|
|
28
|
+
variant?: 'primary' | 'secondary' | 'outline';
|
|
29
29
|
onclick?: (event: Event) => void;
|
|
30
|
-
}
|
|
30
|
+
}>
|
|
31
31
|
) => void;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
let {
|
|
35
|
-
|
|
36
|
-
workflow,
|
|
37
|
-
apiClient,
|
|
38
|
-
baseUrl,
|
|
39
|
-
endpointConfig,
|
|
40
|
-
onActionsReady,
|
|
41
|
-
}: Props = $props();
|
|
34
|
+
let { pipelineId, workflow, apiClient, baseUrl, endpointConfig, onActionsReady }: Props =
|
|
35
|
+
$props();
|
|
42
36
|
|
|
43
37
|
// Initialize API client if not provided
|
|
44
38
|
// svelte-ignore state_referenced_locally — client created once from props
|
|
45
39
|
const client =
|
|
46
40
|
apiClient ||
|
|
47
41
|
new EnhancedFlowDropApiClient(
|
|
48
|
-
endpointConfig ?? createEndpointConfig(baseUrl ||
|
|
42
|
+
endpointConfig ?? createEndpointConfig(baseUrl || '/api/flowdrop')
|
|
49
43
|
);
|
|
50
44
|
|
|
51
45
|
// Pipeline status and job data
|
|
52
|
-
let pipelineStatus = $state<string>(
|
|
46
|
+
let pipelineStatus = $state<string>('unknown');
|
|
53
47
|
interface PipelineNodeStatus {
|
|
54
48
|
status: string;
|
|
55
49
|
[key: string]: unknown;
|
|
@@ -75,23 +69,19 @@
|
|
|
75
69
|
running: 0,
|
|
76
70
|
completed: 0,
|
|
77
71
|
failed: 0,
|
|
78
|
-
cancelled: 0
|
|
79
|
-
}
|
|
72
|
+
cancelled: 0
|
|
73
|
+
}
|
|
80
74
|
});
|
|
81
75
|
|
|
82
76
|
// Node statuses for visual indicators
|
|
83
|
-
let nodeStatuses = $state<
|
|
84
|
-
Record<string, "pending" | "running" | "completed" | "error">
|
|
85
|
-
>({});
|
|
77
|
+
let nodeStatuses = $state<Record<string, 'pending' | 'running' | 'completed' | 'error'>>({});
|
|
86
78
|
|
|
87
79
|
// Loading and error states
|
|
88
80
|
let isLoadingJobStatus = $state(false);
|
|
89
81
|
|
|
90
82
|
// Logs sidebar state
|
|
91
83
|
let isLogsSidebarOpen = $state(false);
|
|
92
|
-
let logs = $state<
|
|
93
|
-
Array<{ level: string; message: string; timestamp: string }>
|
|
94
|
-
>([]);
|
|
84
|
+
let logs = $state<Array<{ level: string; message: string; timestamp: string }>>([]);
|
|
95
85
|
|
|
96
86
|
/**
|
|
97
87
|
* Fetch pipeline data including job information
|
|
@@ -113,50 +103,38 @@
|
|
|
113
103
|
running: 0,
|
|
114
104
|
completed: 0,
|
|
115
105
|
failed: 0,
|
|
116
|
-
cancelled: 0
|
|
117
|
-
}
|
|
106
|
+
cancelled: 0
|
|
107
|
+
}
|
|
118
108
|
};
|
|
119
109
|
|
|
120
110
|
// Update node statuses based on job data
|
|
121
111
|
if (jobStatusData.node_statuses) {
|
|
122
|
-
const newNodeStatuses: Record<
|
|
123
|
-
string,
|
|
124
|
-
"pending" | "running" | "completed" | "error"
|
|
125
|
-
> = {};
|
|
112
|
+
const newNodeStatuses: Record<string, 'pending' | 'running' | 'completed' | 'error'> = {};
|
|
126
113
|
|
|
127
114
|
// Initialize all nodes as pending
|
|
128
115
|
if (workflow && workflow.nodes) {
|
|
129
116
|
workflow.nodes.forEach((node) => {
|
|
130
|
-
newNodeStatuses[node.id] =
|
|
117
|
+
newNodeStatuses[node.id] = 'pending';
|
|
131
118
|
});
|
|
132
119
|
}
|
|
133
120
|
|
|
134
121
|
// Override with actual job statuses
|
|
135
122
|
for (const nodeId in jobStatusData.node_statuses) {
|
|
136
123
|
const status = jobStatusData.node_statuses[nodeId].status;
|
|
137
|
-
if (
|
|
138
|
-
["pending", "running", "completed", "failed", "cancelled"].includes(
|
|
139
|
-
status,
|
|
140
|
-
)
|
|
141
|
-
) {
|
|
124
|
+
if (['pending', 'running', 'completed', 'failed', 'cancelled'].includes(status)) {
|
|
142
125
|
newNodeStatuses[nodeId] =
|
|
143
|
-
status ===
|
|
144
|
-
? "error"
|
|
145
|
-
: (status as "pending" | "running" | "completed");
|
|
126
|
+
status === 'failed' ? 'error' : (status as 'pending' | 'running' | 'completed');
|
|
146
127
|
}
|
|
147
128
|
}
|
|
148
129
|
nodeStatuses = newNodeStatuses;
|
|
149
130
|
}
|
|
150
131
|
|
|
151
|
-
addLog(
|
|
152
|
-
"info",
|
|
153
|
-
`Job status updated: ${jobStatusData.status_summary.total} total jobs`,
|
|
154
|
-
);
|
|
132
|
+
addLog('info', `Job status updated: ${jobStatusData.status_summary.total} total jobs`);
|
|
155
133
|
} catch (error) {
|
|
156
|
-
logger.error(
|
|
134
|
+
logger.error('Failed to fetch pipeline data:', error);
|
|
157
135
|
addLog(
|
|
158
|
-
|
|
159
|
-
`Failed to fetch pipeline data: ${error instanceof Error ? error.message :
|
|
136
|
+
'error',
|
|
137
|
+
`Failed to fetch pipeline data: ${error instanceof Error ? error.message : 'Unknown error'}`
|
|
160
138
|
);
|
|
161
139
|
} finally {
|
|
162
140
|
isLoadingJobStatus = false;
|
|
@@ -172,8 +150,8 @@
|
|
|
172
150
|
{
|
|
173
151
|
level,
|
|
174
152
|
message,
|
|
175
|
-
timestamp: new Date().toISOString()
|
|
176
|
-
}
|
|
153
|
+
timestamp: new Date().toISOString()
|
|
154
|
+
}
|
|
177
155
|
];
|
|
178
156
|
}
|
|
179
157
|
|
|
@@ -190,25 +168,25 @@
|
|
|
190
168
|
function getPipelineActions() {
|
|
191
169
|
return [
|
|
192
170
|
{
|
|
193
|
-
label: isLoadingJobStatus ?
|
|
194
|
-
href:
|
|
195
|
-
icon: isLoadingJobStatus ?
|
|
196
|
-
variant:
|
|
171
|
+
label: isLoadingJobStatus ? 'Refreshing...' : 'Refresh Status',
|
|
172
|
+
href: '#refresh',
|
|
173
|
+
icon: isLoadingJobStatus ? 'mdi:loading' : 'mdi:refresh',
|
|
174
|
+
variant: 'outline' as const,
|
|
197
175
|
onclick: (e: Event) => {
|
|
198
176
|
e.preventDefault();
|
|
199
177
|
fetchPipelineData();
|
|
200
|
-
}
|
|
178
|
+
}
|
|
201
179
|
},
|
|
202
180
|
{
|
|
203
|
-
label:
|
|
204
|
-
href:
|
|
205
|
-
icon:
|
|
206
|
-
variant:
|
|
181
|
+
label: 'View Logs',
|
|
182
|
+
href: '#logs',
|
|
183
|
+
icon: 'mdi:file-document-outline',
|
|
184
|
+
variant: 'outline' as const,
|
|
207
185
|
onclick: (e: Event) => {
|
|
208
186
|
e.preventDefault();
|
|
209
187
|
toggleLogsSidebar();
|
|
210
|
-
}
|
|
211
|
-
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
212
190
|
];
|
|
213
191
|
}
|
|
214
192
|
|
|
@@ -224,12 +202,12 @@
|
|
|
224
202
|
const handleRefresh = () => fetchPipelineData();
|
|
225
203
|
const handleViewLogs = () => toggleLogsSidebar();
|
|
226
204
|
|
|
227
|
-
window.addEventListener(
|
|
228
|
-
window.addEventListener(
|
|
205
|
+
window.addEventListener('pipeline-refresh', handleRefresh);
|
|
206
|
+
window.addEventListener('pipeline-view-logs', handleViewLogs);
|
|
229
207
|
|
|
230
208
|
return () => {
|
|
231
|
-
window.removeEventListener(
|
|
232
|
-
window.removeEventListener(
|
|
209
|
+
window.removeEventListener('pipeline-refresh', handleRefresh);
|
|
210
|
+
window.removeEventListener('pipeline-view-logs', handleViewLogs);
|
|
233
211
|
};
|
|
234
212
|
});
|
|
235
213
|
|
|
@@ -238,35 +216,35 @@
|
|
|
238
216
|
if (pipelineStatus && pipelineId && workflow) {
|
|
239
217
|
const breadcrumbs = [
|
|
240
218
|
{
|
|
241
|
-
label:
|
|
242
|
-
href:
|
|
243
|
-
icon:
|
|
219
|
+
label: 'Home',
|
|
220
|
+
href: '/',
|
|
221
|
+
icon: 'mdi:home'
|
|
244
222
|
},
|
|
245
223
|
{
|
|
246
|
-
label:
|
|
247
|
-
href:
|
|
248
|
-
icon:
|
|
224
|
+
label: 'Workflows',
|
|
225
|
+
href: '/',
|
|
226
|
+
icon: 'mdi:view-list'
|
|
249
227
|
},
|
|
250
228
|
{
|
|
251
|
-
label: workflow.name ||
|
|
229
|
+
label: workflow.name || 'Workflow',
|
|
252
230
|
href: `/workflow/${workflow.id}/edit`,
|
|
253
|
-
icon:
|
|
231
|
+
icon: 'mdi:workflow'
|
|
254
232
|
},
|
|
255
233
|
{
|
|
256
|
-
label:
|
|
234
|
+
label: 'Pipelines',
|
|
257
235
|
href: `/workflow/${workflow.id}/pipelines`,
|
|
258
|
-
icon:
|
|
236
|
+
icon: 'mdi:source-branch'
|
|
259
237
|
},
|
|
260
238
|
{
|
|
261
239
|
label: `Pipeline ${pipelineId} - ${pipelineStatus}`,
|
|
262
|
-
icon:
|
|
263
|
-
}
|
|
240
|
+
icon: 'mdi:play-circle'
|
|
241
|
+
}
|
|
264
242
|
];
|
|
265
243
|
|
|
266
244
|
window.dispatchEvent(
|
|
267
|
-
new CustomEvent(
|
|
268
|
-
detail: { breadcrumbs }
|
|
269
|
-
})
|
|
245
|
+
new CustomEvent('page-breadcrumbs-update', {
|
|
246
|
+
detail: { breadcrumbs }
|
|
247
|
+
})
|
|
270
248
|
);
|
|
271
249
|
}
|
|
272
250
|
});
|
|
@@ -289,7 +267,7 @@
|
|
|
289
267
|
}
|
|
290
268
|
|
|
291
269
|
// Only start polling if pipeline is running
|
|
292
|
-
if (pipelineStatus ===
|
|
270
|
+
if (pipelineStatus === 'running' && pipelineId) {
|
|
293
271
|
refreshInterval = setInterval(() => {
|
|
294
272
|
fetchPipelineData();
|
|
295
273
|
}, 5000);
|
|
@@ -317,11 +295,7 @@
|
|
|
317
295
|
|
|
318
296
|
<!-- Logs Sidebar -->
|
|
319
297
|
{#if isLogsSidebarOpen}
|
|
320
|
-
<LogsSidebar
|
|
321
|
-
{logs}
|
|
322
|
-
isOpen={isLogsSidebarOpen}
|
|
323
|
-
onClose={() => (isLogsSidebarOpen = false)}
|
|
324
|
-
/>
|
|
298
|
+
<LogsSidebar {logs} isOpen={isLogsSidebarOpen} onClose={() => (isLogsSidebarOpen = false)} />
|
|
325
299
|
{/if}
|
|
326
300
|
</div>
|
|
327
301
|
|
|
@@ -334,7 +308,7 @@
|
|
|
334
308
|
}
|
|
335
309
|
|
|
336
310
|
/* Dark mode override */
|
|
337
|
-
:global([data-theme=
|
|
311
|
+
:global([data-theme='dark']) .pipeline-status-container {
|
|
338
312
|
background: linear-gradient(135deg, #141418 0%, #1a1a2e 50%, #16162a 100%);
|
|
339
313
|
}
|
|
340
314
|
</style>
|