@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
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module stores/playgroundStore
|
|
8
8
|
*/
|
|
9
|
-
import type { PlaygroundSession, PlaygroundMessage, PlaygroundInputField, PlaygroundSessionStatus, PlaygroundMessagesApiResponse } from
|
|
10
|
-
import type { Workflow } from
|
|
9
|
+
import type { PlaygroundSession, PlaygroundMessage, PlaygroundInputField, PlaygroundSessionStatus, PlaygroundMessagesApiResponse } from '../types/playground.js';
|
|
10
|
+
import type { Workflow } from '../types/index.js';
|
|
11
11
|
/**
|
|
12
12
|
* Get the current session
|
|
13
13
|
*/
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module stores/playgroundStore
|
|
8
8
|
*/
|
|
9
|
-
import { isChatInputNode, defaultIsTerminalStatus
|
|
10
|
-
import { logger } from
|
|
9
|
+
import { isChatInputNode, defaultIsTerminalStatus } from '../types/playground.js';
|
|
10
|
+
import { logger } from '../utils/logger.js';
|
|
11
11
|
// =========================================================================
|
|
12
12
|
// Core State
|
|
13
13
|
// =========================================================================
|
|
@@ -101,7 +101,7 @@ export function getLastPollTimestamp() {
|
|
|
101
101
|
* Get current session status
|
|
102
102
|
*/
|
|
103
103
|
export function getSessionStatus() {
|
|
104
|
-
return _currentSession?.status ??
|
|
104
|
+
return _currentSession?.status ?? 'idle';
|
|
105
105
|
}
|
|
106
106
|
/**
|
|
107
107
|
* Get message count
|
|
@@ -113,13 +113,13 @@ export function getMessageCount() {
|
|
|
113
113
|
* Get chat messages (excludes log messages)
|
|
114
114
|
*/
|
|
115
115
|
export function getChatMessages() {
|
|
116
|
-
return _messages.filter((m) => m.role !==
|
|
116
|
+
return _messages.filter((m) => m.role !== 'log');
|
|
117
117
|
}
|
|
118
118
|
/**
|
|
119
119
|
* Get log messages only
|
|
120
120
|
*/
|
|
121
121
|
export function getLogMessages() {
|
|
122
|
-
return _messages.filter((m) => m.role ===
|
|
122
|
+
return _messages.filter((m) => m.role === 'log');
|
|
123
123
|
}
|
|
124
124
|
/**
|
|
125
125
|
* Get the latest message
|
|
@@ -145,21 +145,21 @@ export function getInputFields() {
|
|
|
145
145
|
const nodeTypeId = node.data.metadata?.id ?? node.type;
|
|
146
146
|
// Check if this is an input-type node
|
|
147
147
|
// The category can be "inputs" (standard) or variations like "input"
|
|
148
|
-
const categoryStr = String(category ||
|
|
149
|
-
const isInputCategory = categoryStr ===
|
|
148
|
+
const categoryStr = String(category || '');
|
|
149
|
+
const isInputCategory = categoryStr === 'inputs' || categoryStr === 'input';
|
|
150
150
|
if (isInputCategory || isChatInputNode(nodeTypeId)) {
|
|
151
151
|
// Get output ports that provide data
|
|
152
152
|
const outputs = node.data.metadata?.outputs ?? [];
|
|
153
153
|
outputs.forEach((output) => {
|
|
154
|
-
if (output.type ===
|
|
154
|
+
if (output.type === 'output') {
|
|
155
155
|
// Create a field for each output
|
|
156
156
|
const field = {
|
|
157
157
|
nodeId: node.id,
|
|
158
158
|
fieldId: output.id,
|
|
159
159
|
label: node.data.label || output.name || nodeTypeId,
|
|
160
|
-
type: output.dataType ||
|
|
160
|
+
type: output.dataType || 'string',
|
|
161
161
|
defaultValue: node.data.config?.[output.id],
|
|
162
|
-
required: output.required ?? false
|
|
162
|
+
required: output.required ?? false
|
|
163
163
|
};
|
|
164
164
|
// Check for schema in configSchema
|
|
165
165
|
const configSchema = node.data.metadata?.configSchema;
|
|
@@ -178,10 +178,10 @@ export function getInputFields() {
|
|
|
178
178
|
nodeId: node.id,
|
|
179
179
|
fieldId: key,
|
|
180
180
|
label: schema.title || key,
|
|
181
|
-
type: schema.type ||
|
|
181
|
+
type: schema.type || 'string',
|
|
182
182
|
defaultValue: node.data.config?.[key] ?? schema.default,
|
|
183
183
|
required: configSchema.required?.includes(key) ?? false,
|
|
184
|
-
schema
|
|
184
|
+
schema
|
|
185
185
|
};
|
|
186
186
|
fields.push(field);
|
|
187
187
|
});
|
|
@@ -196,7 +196,7 @@ export function getInputFields() {
|
|
|
196
196
|
*/
|
|
197
197
|
export function getHasChatInput() {
|
|
198
198
|
const fields = getInputFields();
|
|
199
|
-
return fields.some((field) => isChatInputNode(field.nodeId) || field.type ===
|
|
199
|
+
return fields.some((field) => isChatInputNode(field.nodeId) || field.type === 'string');
|
|
200
200
|
}
|
|
201
201
|
/**
|
|
202
202
|
* Get session count
|
|
@@ -275,13 +275,13 @@ export const playgroundActions = {
|
|
|
275
275
|
_currentSession = {
|
|
276
276
|
..._currentSession,
|
|
277
277
|
status,
|
|
278
|
-
updatedAt: new Date().toISOString()
|
|
278
|
+
updatedAt: new Date().toISOString()
|
|
279
279
|
};
|
|
280
280
|
}
|
|
281
281
|
// Also update in sessions list
|
|
282
282
|
const session = _currentSession;
|
|
283
283
|
if (session) {
|
|
284
|
-
_sessions = _sessions.map((s) => s.id === session.id ? { ...s, status } : s);
|
|
284
|
+
_sessions = _sessions.map((s) => (s.id === session.id ? { ...s, status } : s));
|
|
285
285
|
}
|
|
286
286
|
},
|
|
287
287
|
/**
|
|
@@ -353,10 +353,7 @@ export const playgroundActions = {
|
|
|
353
353
|
const existingIds = new Set(_messages.map((m) => m.id));
|
|
354
354
|
const uniqueNewMessages = newMessages.filter((m) => !existingIds.has(m.id));
|
|
355
355
|
// Sort the combined messages chronologically
|
|
356
|
-
_messages = sortMessagesChronologically([
|
|
357
|
-
..._messages,
|
|
358
|
-
...uniqueNewMessages,
|
|
359
|
-
]);
|
|
356
|
+
_messages = sortMessagesChronologically([..._messages, ...uniqueNewMessages]);
|
|
360
357
|
},
|
|
361
358
|
/**
|
|
362
359
|
* Clear all messages
|
|
@@ -422,7 +419,7 @@ export const playgroundActions = {
|
|
|
422
419
|
_messages = [];
|
|
423
420
|
_lastPollTimestamp = null;
|
|
424
421
|
}
|
|
425
|
-
}
|
|
422
|
+
}
|
|
426
423
|
};
|
|
427
424
|
// =========================================================================
|
|
428
425
|
// Polling Callback Factory
|
|
@@ -526,6 +523,6 @@ export async function refreshSessionMessages(fetchMessages, isTerminalStatus) {
|
|
|
526
523
|
callback(response);
|
|
527
524
|
}
|
|
528
525
|
catch (err) {
|
|
529
|
-
logger.error(
|
|
526
|
+
logger.error('[playgroundStore] Failed to refresh messages:', err);
|
|
530
527
|
}
|
|
531
528
|
}
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
* which SvelteFlow already maintains for all node types. This avoids replicating
|
|
13
13
|
* CSS positioning logic and stays automatically accurate.
|
|
14
14
|
*/
|
|
15
|
-
import type { WorkflowNode as WorkflowNodeType, PortCoordinate, PortCoordinateMap } from
|
|
16
|
-
import type { InternalNode } from
|
|
15
|
+
import type { WorkflowNode as WorkflowNodeType, PortCoordinate, PortCoordinateMap } from '../types/index.js';
|
|
16
|
+
import type { InternalNode } from '@xyflow/svelte';
|
|
17
17
|
/**
|
|
18
18
|
* Rebuild coordinates for ALL nodes from SvelteFlow internals.
|
|
19
19
|
* Call on initial workflow load (after render) and after bulk changes.
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
* which SvelteFlow already maintains for all node types. This avoids replicating
|
|
13
13
|
* CSS positioning logic and stays automatically accurate.
|
|
14
14
|
*/
|
|
15
|
-
import { SvelteMap } from
|
|
16
|
-
import { untrack } from
|
|
17
|
-
import { ProximityConnectHelper } from
|
|
15
|
+
import { SvelteMap } from 'svelte/reactivity';
|
|
16
|
+
import { untrack } from 'svelte';
|
|
17
|
+
import { ProximityConnectHelper } from '../helpers/proximityConnect.js';
|
|
18
18
|
/** Reactive state holding all port absolute coordinates, keyed by handleId */
|
|
19
19
|
let coordinates = $state(new SvelteMap());
|
|
20
20
|
/**
|
|
@@ -28,14 +28,14 @@ function parseHandleId(handleId) {
|
|
|
28
28
|
// Match the last occurrence of -input- or -output- to handle nodeIds with hyphens
|
|
29
29
|
const inputMatch = handleId.match(/^(.+)-input-(.+)$/);
|
|
30
30
|
if (inputMatch) {
|
|
31
|
-
return { nodeId: inputMatch[1], direction:
|
|
31
|
+
return { nodeId: inputMatch[1], direction: 'input', portId: inputMatch[2] };
|
|
32
32
|
}
|
|
33
33
|
const outputMatch = handleId.match(/^(.+)-output-(.+)$/);
|
|
34
34
|
if (outputMatch) {
|
|
35
35
|
return {
|
|
36
36
|
nodeId: outputMatch[1],
|
|
37
|
-
direction:
|
|
38
|
-
portId: outputMatch[2]
|
|
37
|
+
direction: 'output',
|
|
38
|
+
portId: outputMatch[2]
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
41
|
return null;
|
|
@@ -46,11 +46,11 @@ function parseHandleId(handleId) {
|
|
|
46
46
|
*/
|
|
47
47
|
function buildPortDataTypeLookup(node) {
|
|
48
48
|
const lookup = new Map();
|
|
49
|
-
const inputs = ProximityConnectHelper.getAllPorts(node,
|
|
49
|
+
const inputs = ProximityConnectHelper.getAllPorts(node, 'input');
|
|
50
50
|
for (const port of inputs) {
|
|
51
51
|
lookup.set(`input-${port.id}`, port.dataType);
|
|
52
52
|
}
|
|
53
|
-
const outputs = ProximityConnectHelper.getAllPorts(node,
|
|
53
|
+
const outputs = ProximityConnectHelper.getAllPorts(node, 'output');
|
|
54
54
|
for (const port of outputs) {
|
|
55
55
|
lookup.set(`output-${port.id}`, port.dataType);
|
|
56
56
|
}
|
|
@@ -70,10 +70,7 @@ function computeNodePortCoordinates(node, internalNode) {
|
|
|
70
70
|
const posAbs = internalNode.internals.positionAbsolute;
|
|
71
71
|
const dataTypeLookup = buildPortDataTypeLookup(node);
|
|
72
72
|
const result = [];
|
|
73
|
-
const allHandles = [
|
|
74
|
-
...(handleBounds.source ?? []),
|
|
75
|
-
...(handleBounds.target ?? []),
|
|
76
|
-
];
|
|
73
|
+
const allHandles = [...(handleBounds.source ?? []), ...(handleBounds.target ?? [])];
|
|
77
74
|
for (const handle of allHandles) {
|
|
78
75
|
if (!handle.id)
|
|
79
76
|
continue;
|
|
@@ -90,7 +87,7 @@ function computeNodePortCoordinates(node, internalNode) {
|
|
|
90
87
|
handleId: handle.id,
|
|
91
88
|
nodeId: parsed.nodeId,
|
|
92
89
|
direction: parsed.direction,
|
|
93
|
-
dataType
|
|
90
|
+
dataType
|
|
94
91
|
});
|
|
95
92
|
}
|
|
96
93
|
return result;
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @module stores/settingsStore
|
|
11
11
|
*/
|
|
12
|
-
import type { FlowDropSettings, ThemeSettings, EditorSettings, UISettings, BehaviorSettings, ApiSettings, PartialSettings, SyncStatus, ResolvedTheme, ThemePreference, SettingsChangeCallback, SettingsCategory } from
|
|
13
|
-
export type { ThemePreference, ResolvedTheme } from
|
|
12
|
+
import type { FlowDropSettings, ThemeSettings, EditorSettings, UISettings, BehaviorSettings, ApiSettings, PartialSettings, SyncStatus, ResolvedTheme, ThemePreference, SettingsChangeCallback, SettingsCategory } from '../types/settings.js';
|
|
13
|
+
export type { ThemePreference, ResolvedTheme } from '../types/settings.js';
|
|
14
14
|
/**
|
|
15
15
|
* Get current settings (replaces settingsStore derived store)
|
|
16
16
|
*/
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @module stores/settingsStore
|
|
11
11
|
*/
|
|
12
|
-
import { DEFAULT_SETTINGS, SETTINGS_STORAGE_KEY } from
|
|
13
|
-
import { logger } from
|
|
12
|
+
import { DEFAULT_SETTINGS, SETTINGS_STORAGE_KEY } from '../types/settings.js';
|
|
13
|
+
import { logger } from '../utils/logger.js';
|
|
14
14
|
// =========================================================================
|
|
15
15
|
// Internal State
|
|
16
16
|
// =========================================================================
|
|
@@ -32,7 +32,7 @@ const changeListeners = new Set();
|
|
|
32
32
|
* @returns Saved settings or null if not found/invalid
|
|
33
33
|
*/
|
|
34
34
|
function loadFromStorage() {
|
|
35
|
-
if (typeof window ===
|
|
35
|
+
if (typeof window === 'undefined') {
|
|
36
36
|
return null;
|
|
37
37
|
}
|
|
38
38
|
try {
|
|
@@ -44,7 +44,7 @@ function loadFromStorage() {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
catch (error) {
|
|
47
|
-
logger.warn(
|
|
47
|
+
logger.warn('Failed to load settings from localStorage:', error);
|
|
48
48
|
}
|
|
49
49
|
return null;
|
|
50
50
|
}
|
|
@@ -54,14 +54,14 @@ function loadFromStorage() {
|
|
|
54
54
|
* @param settings - Settings to persist
|
|
55
55
|
*/
|
|
56
56
|
function saveToStorage(settings) {
|
|
57
|
-
if (typeof window ===
|
|
57
|
+
if (typeof window === 'undefined') {
|
|
58
58
|
return;
|
|
59
59
|
}
|
|
60
60
|
try {
|
|
61
61
|
localStorage.setItem(SETTINGS_STORAGE_KEY, JSON.stringify(settings));
|
|
62
62
|
}
|
|
63
63
|
catch (error) {
|
|
64
|
-
logger.warn(
|
|
64
|
+
logger.warn('Failed to save settings to localStorage:', error);
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
// =========================================================================
|
|
@@ -80,7 +80,7 @@ function deepMergeSettings(target, source) {
|
|
|
80
80
|
editor: { ...target.editor },
|
|
81
81
|
ui: { ...target.ui },
|
|
82
82
|
behavior: { ...target.behavior },
|
|
83
|
-
api: { ...target.api }
|
|
83
|
+
api: { ...target.api }
|
|
84
84
|
};
|
|
85
85
|
// Merge theme settings
|
|
86
86
|
if (source.theme) {
|
|
@@ -117,15 +117,15 @@ const initialSettings = loadFromStorage() ?? DEFAULT_SETTINGS;
|
|
|
117
117
|
let storeState = $state({
|
|
118
118
|
settings: initialSettings,
|
|
119
119
|
initialized: true,
|
|
120
|
-
syncStatus:
|
|
120
|
+
syncStatus: 'idle',
|
|
121
121
|
lastSyncedAt: null,
|
|
122
|
-
syncError: null
|
|
122
|
+
syncError: null
|
|
123
123
|
});
|
|
124
124
|
/**
|
|
125
125
|
* System theme preference using $state rune
|
|
126
126
|
* Updates when system preference changes
|
|
127
127
|
*/
|
|
128
|
-
let systemThemeState = $state(typeof window !==
|
|
128
|
+
let systemThemeState = $state(typeof window !== 'undefined' ? getSystemTheme() : 'light');
|
|
129
129
|
// =========================================================================
|
|
130
130
|
// Getter Functions (replacing derived stores)
|
|
131
131
|
// =========================================================================
|
|
@@ -142,7 +142,7 @@ export function getSyncStatus() {
|
|
|
142
142
|
return {
|
|
143
143
|
status: storeState.syncStatus,
|
|
144
144
|
lastSyncedAt: storeState.lastSyncedAt,
|
|
145
|
-
error: storeState.syncError
|
|
145
|
+
error: storeState.syncError
|
|
146
146
|
};
|
|
147
147
|
}
|
|
148
148
|
/**
|
|
@@ -187,7 +187,7 @@ export function getTheme() {
|
|
|
187
187
|
* (replaces resolvedTheme derived store)
|
|
188
188
|
*/
|
|
189
189
|
export function getResolvedTheme() {
|
|
190
|
-
if (storeState.settings.theme.preference ===
|
|
190
|
+
if (storeState.settings.theme.preference === 'auto') {
|
|
191
191
|
return systemThemeState;
|
|
192
192
|
}
|
|
193
193
|
return storeState.settings.theme.preference;
|
|
@@ -205,12 +205,10 @@ export function getSystemThemeState() {
|
|
|
205
205
|
* Get the system's color scheme preference
|
|
206
206
|
*/
|
|
207
207
|
function getSystemTheme() {
|
|
208
|
-
if (typeof window ===
|
|
209
|
-
return
|
|
208
|
+
if (typeof window === 'undefined') {
|
|
209
|
+
return 'light';
|
|
210
210
|
}
|
|
211
|
-
return window.matchMedia(
|
|
212
|
-
? "dark"
|
|
213
|
-
: "light";
|
|
211
|
+
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
|
214
212
|
}
|
|
215
213
|
/**
|
|
216
214
|
* Initialize the system theme change listener.
|
|
@@ -219,16 +217,16 @@ function getSystemTheme() {
|
|
|
219
217
|
* @returns Cleanup function that removes the listener
|
|
220
218
|
*/
|
|
221
219
|
export function initThemeListener() {
|
|
222
|
-
if (typeof window ===
|
|
220
|
+
if (typeof window === 'undefined') {
|
|
223
221
|
return () => { };
|
|
224
222
|
}
|
|
225
|
-
const mediaQuery = window.matchMedia(
|
|
223
|
+
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
|
|
226
224
|
const handleSystemThemeChange = (event) => {
|
|
227
|
-
systemThemeState = event.matches ?
|
|
225
|
+
systemThemeState = event.matches ? 'dark' : 'light';
|
|
228
226
|
};
|
|
229
|
-
mediaQuery.addEventListener(
|
|
227
|
+
mediaQuery.addEventListener('change', handleSystemThemeChange);
|
|
230
228
|
return () => {
|
|
231
|
-
mediaQuery.removeEventListener(
|
|
229
|
+
mediaQuery.removeEventListener('change', handleSystemThemeChange);
|
|
232
230
|
};
|
|
233
231
|
}
|
|
234
232
|
// =========================================================================
|
|
@@ -242,14 +240,14 @@ function notifyChange(category, key, previousValue, newValue) {
|
|
|
242
240
|
category,
|
|
243
241
|
key,
|
|
244
242
|
previousValue,
|
|
245
|
-
newValue
|
|
243
|
+
newValue
|
|
246
244
|
};
|
|
247
245
|
changeListeners.forEach((listener) => {
|
|
248
246
|
try {
|
|
249
247
|
listener(event);
|
|
250
248
|
}
|
|
251
249
|
catch (error) {
|
|
252
|
-
logger.error(
|
|
250
|
+
logger.error('Settings change listener error:', error);
|
|
253
251
|
}
|
|
254
252
|
});
|
|
255
253
|
}
|
|
@@ -272,7 +270,7 @@ export function updateSettings(partial) {
|
|
|
272
270
|
// Notify listeners for each changed category
|
|
273
271
|
for (const category of Object.keys(partial)) {
|
|
274
272
|
const partialCategory = partial[category];
|
|
275
|
-
if (partialCategory && typeof partialCategory ===
|
|
273
|
+
if (partialCategory && typeof partialCategory === 'object') {
|
|
276
274
|
for (const key of Object.keys(partialCategory)) {
|
|
277
275
|
const prevCat = getCategoryAsRecord(previousSettings, category);
|
|
278
276
|
const newCat = getCategoryAsRecord(newSettings, category);
|
|
@@ -284,7 +282,7 @@ export function updateSettings(partial) {
|
|
|
284
282
|
}
|
|
285
283
|
storeState = {
|
|
286
284
|
...storeState,
|
|
287
|
-
settings: newSettings
|
|
285
|
+
settings: newSettings
|
|
288
286
|
};
|
|
289
287
|
}
|
|
290
288
|
/**
|
|
@@ -296,8 +294,7 @@ export function resetSettings(categories) {
|
|
|
296
294
|
if (categories && categories.length > 0) {
|
|
297
295
|
const partial = {};
|
|
298
296
|
for (const category of categories) {
|
|
299
|
-
partial[category] =
|
|
300
|
-
DEFAULT_SETTINGS[category];
|
|
297
|
+
partial[category] = DEFAULT_SETTINGS[category];
|
|
301
298
|
}
|
|
302
299
|
updateSettings(partial);
|
|
303
300
|
}
|
|
@@ -305,7 +302,7 @@ export function resetSettings(categories) {
|
|
|
305
302
|
saveToStorage(DEFAULT_SETTINGS);
|
|
306
303
|
storeState = {
|
|
307
304
|
...storeState,
|
|
308
|
-
settings: DEFAULT_SETTINGS
|
|
305
|
+
settings: DEFAULT_SETTINGS
|
|
309
306
|
};
|
|
310
307
|
}
|
|
311
308
|
}
|
|
@@ -327,11 +324,11 @@ export function setTheme(newTheme) {
|
|
|
327
324
|
export function toggleTheme() {
|
|
328
325
|
const currentTheme = getTheme();
|
|
329
326
|
const currentResolved = getResolvedTheme();
|
|
330
|
-
if (currentTheme ===
|
|
331
|
-
setTheme(currentResolved ===
|
|
327
|
+
if (currentTheme === 'auto') {
|
|
328
|
+
setTheme(currentResolved === 'dark' ? 'light' : 'dark');
|
|
332
329
|
}
|
|
333
330
|
else {
|
|
334
|
-
setTheme(currentTheme ===
|
|
331
|
+
setTheme(currentTheme === 'dark' ? 'light' : 'dark');
|
|
335
332
|
}
|
|
336
333
|
}
|
|
337
334
|
/**
|
|
@@ -340,14 +337,14 @@ export function toggleTheme() {
|
|
|
340
337
|
export function cycleTheme() {
|
|
341
338
|
const currentTheme = getTheme();
|
|
342
339
|
switch (currentTheme) {
|
|
343
|
-
case
|
|
344
|
-
setTheme(
|
|
340
|
+
case 'light':
|
|
341
|
+
setTheme('dark');
|
|
345
342
|
break;
|
|
346
|
-
case
|
|
347
|
-
setTheme(
|
|
343
|
+
case 'dark':
|
|
344
|
+
setTheme('auto');
|
|
348
345
|
break;
|
|
349
|
-
case
|
|
350
|
-
setTheme(
|
|
346
|
+
case 'auto':
|
|
347
|
+
setTheme('light');
|
|
351
348
|
break;
|
|
352
349
|
}
|
|
353
350
|
}
|
|
@@ -357,10 +354,10 @@ export function cycleTheme() {
|
|
|
357
354
|
* @param resolved - The resolved theme to apply
|
|
358
355
|
*/
|
|
359
356
|
function applyTheme(resolved) {
|
|
360
|
-
if (typeof document ===
|
|
357
|
+
if (typeof document === 'undefined') {
|
|
361
358
|
return;
|
|
362
359
|
}
|
|
363
|
-
document.documentElement.setAttribute(
|
|
360
|
+
document.documentElement.setAttribute('data-theme', resolved);
|
|
364
361
|
}
|
|
365
362
|
/**
|
|
366
363
|
* Stored cleanup function for the theme effect.
|
|
@@ -409,10 +406,10 @@ export function initializeTheme() {
|
|
|
409
406
|
* @returns true if running in browser and theme is applied
|
|
410
407
|
*/
|
|
411
408
|
export function isThemeInitialized() {
|
|
412
|
-
if (typeof document ===
|
|
409
|
+
if (typeof document === 'undefined') {
|
|
413
410
|
return false;
|
|
414
411
|
}
|
|
415
|
-
return document.documentElement.hasAttribute(
|
|
412
|
+
return document.documentElement.hasAttribute('data-theme');
|
|
416
413
|
}
|
|
417
414
|
// =========================================================================
|
|
418
415
|
// API Sync Functions
|
|
@@ -432,30 +429,30 @@ export function setSettingsService(service) {
|
|
|
432
429
|
*/
|
|
433
430
|
export async function syncSettingsToApi() {
|
|
434
431
|
if (!settingsService) {
|
|
435
|
-
logger.warn(
|
|
432
|
+
logger.warn('Settings service not configured for API sync');
|
|
436
433
|
return;
|
|
437
434
|
}
|
|
438
435
|
storeState = {
|
|
439
436
|
...storeState,
|
|
440
|
-
syncStatus:
|
|
441
|
-
syncError: null
|
|
437
|
+
syncStatus: 'syncing',
|
|
438
|
+
syncError: null
|
|
442
439
|
};
|
|
443
440
|
try {
|
|
444
441
|
const currentSettings = getSettings();
|
|
445
442
|
await settingsService.savePreferences(currentSettings);
|
|
446
443
|
storeState = {
|
|
447
444
|
...storeState,
|
|
448
|
-
syncStatus:
|
|
445
|
+
syncStatus: 'synced',
|
|
449
446
|
lastSyncedAt: Date.now(),
|
|
450
|
-
syncError: null
|
|
447
|
+
syncError: null
|
|
451
448
|
};
|
|
452
449
|
}
|
|
453
450
|
catch (error) {
|
|
454
|
-
const errorMessage = error instanceof Error ? error.message :
|
|
451
|
+
const errorMessage = error instanceof Error ? error.message : 'Failed to sync settings';
|
|
455
452
|
storeState = {
|
|
456
453
|
...storeState,
|
|
457
|
-
syncStatus:
|
|
458
|
-
syncError: errorMessage
|
|
454
|
+
syncStatus: 'error',
|
|
455
|
+
syncError: errorMessage
|
|
459
456
|
};
|
|
460
457
|
throw error;
|
|
461
458
|
}
|
|
@@ -467,13 +464,13 @@ export async function syncSettingsToApi() {
|
|
|
467
464
|
*/
|
|
468
465
|
export async function loadSettingsFromApi() {
|
|
469
466
|
if (!settingsService) {
|
|
470
|
-
logger.warn(
|
|
467
|
+
logger.warn('Settings service not configured for API sync');
|
|
471
468
|
return;
|
|
472
469
|
}
|
|
473
470
|
storeState = {
|
|
474
471
|
...storeState,
|
|
475
|
-
syncStatus:
|
|
476
|
-
syncError: null
|
|
472
|
+
syncStatus: 'syncing',
|
|
473
|
+
syncError: null
|
|
477
474
|
};
|
|
478
475
|
try {
|
|
479
476
|
const apiSettingsData = await settingsService.getPreferences();
|
|
@@ -481,21 +478,19 @@ export async function loadSettingsFromApi() {
|
|
|
481
478
|
storeState = {
|
|
482
479
|
...storeState,
|
|
483
480
|
settings: mergedSettings,
|
|
484
|
-
syncStatus:
|
|
481
|
+
syncStatus: 'synced',
|
|
485
482
|
lastSyncedAt: Date.now(),
|
|
486
|
-
syncError: null
|
|
483
|
+
syncError: null
|
|
487
484
|
};
|
|
488
485
|
// Also persist to localStorage
|
|
489
486
|
saveToStorage(mergedSettings);
|
|
490
487
|
}
|
|
491
488
|
catch (error) {
|
|
492
|
-
const errorMessage = error instanceof Error
|
|
493
|
-
? error.message
|
|
494
|
-
: "Failed to load settings from API";
|
|
489
|
+
const errorMessage = error instanceof Error ? error.message : 'Failed to load settings from API';
|
|
495
490
|
storeState = {
|
|
496
491
|
...storeState,
|
|
497
|
-
syncStatus:
|
|
498
|
-
syncError: errorMessage
|
|
492
|
+
syncStatus: 'error',
|
|
493
|
+
syncError: errorMessage
|
|
499
494
|
};
|
|
500
495
|
throw error;
|
|
501
496
|
}
|
|
@@ -530,7 +525,7 @@ export async function initializeSettings(options) {
|
|
|
530
525
|
const withDefaults = deepMergeSettings(currentSettings, options.defaults);
|
|
531
526
|
storeState = {
|
|
532
527
|
...storeState,
|
|
533
|
-
settings: withDefaults
|
|
528
|
+
settings: withDefaults
|
|
534
529
|
};
|
|
535
530
|
saveToStorage(withDefaults);
|
|
536
531
|
}
|
|
@@ -543,7 +538,7 @@ export async function initializeSettings(options) {
|
|
|
543
538
|
}
|
|
544
539
|
catch {
|
|
545
540
|
// Silently fail - local settings are still available
|
|
546
|
-
logger.warn(
|
|
541
|
+
logger.warn('Failed to sync settings from API on initialization');
|
|
547
542
|
}
|
|
548
543
|
}
|
|
549
544
|
}
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
*
|
|
11
11
|
* @module stores/workflowStore
|
|
12
12
|
*/
|
|
13
|
-
import type { Workflow, WorkflowNode, WorkflowEdge } from
|
|
14
|
-
import type { WorkflowChangeType } from
|
|
15
|
-
type WorkflowMetadata = NonNullable<Workflow[
|
|
13
|
+
import type { Workflow, WorkflowNode, WorkflowEdge } from '../types';
|
|
14
|
+
import type { WorkflowChangeType } from '../types/events.js';
|
|
15
|
+
type WorkflowMetadata = NonNullable<Workflow['metadata']>;
|
|
16
16
|
/**
|
|
17
17
|
* Get the current workflow store value reactively
|
|
18
18
|
*
|
|
@@ -263,6 +263,7 @@ export declare const workflowActions: {
|
|
|
263
263
|
name?: string;
|
|
264
264
|
description?: string;
|
|
265
265
|
metadata?: Partial<Workflow["metadata"]>;
|
|
266
|
+
config?: Record<string, unknown>;
|
|
266
267
|
}) => void;
|
|
267
268
|
/**
|
|
268
269
|
* Swap a node — atomically replaces nodes and edges with a descriptive history entry.
|