@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
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
-->
|
|
19
19
|
|
|
20
20
|
<script lang="ts">
|
|
21
|
-
import { setContext } from
|
|
22
|
-
import Icon from
|
|
21
|
+
import { setContext } from 'svelte';
|
|
22
|
+
import Icon from '@iconify/svelte';
|
|
23
23
|
import type {
|
|
24
24
|
ConfigSchema,
|
|
25
25
|
WorkflowNode,
|
|
@@ -28,32 +28,25 @@
|
|
|
28
28
|
NodePort,
|
|
29
29
|
DynamicPort,
|
|
30
30
|
ConfigEditOptions,
|
|
31
|
-
AuthProvider
|
|
32
|
-
} from
|
|
33
|
-
import { dynamicPortToNodePort } from
|
|
34
|
-
import type { UISchemaElement } from
|
|
35
|
-
import {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
FormToggle,
|
|
39
|
-
} from "./form/index.js";
|
|
40
|
-
import FormUISchemaRenderer from "./form/FormUISchemaRenderer.svelte";
|
|
41
|
-
import type { FieldSchema } from "./form/index.js";
|
|
31
|
+
AuthProvider
|
|
32
|
+
} from '../types/index.js';
|
|
33
|
+
import { dynamicPortToNodePort } from '../types/index.js';
|
|
34
|
+
import type { UISchemaElement } from '../types/uischema.js';
|
|
35
|
+
import { FormField, FormFieldWrapper, FormToggle } from './form/index.js';
|
|
36
|
+
import FormUISchemaRenderer from './form/FormUISchemaRenderer.svelte';
|
|
37
|
+
import type { FieldSchema } from './form/index.js';
|
|
42
38
|
import {
|
|
43
39
|
getEffectiveConfigEditOptions,
|
|
44
40
|
fetchDynamicSchema,
|
|
45
41
|
resolveExternalEditUrl,
|
|
46
42
|
invalidateSchemaCache,
|
|
47
|
-
type DynamicSchemaResult
|
|
48
|
-
} from
|
|
49
|
-
import { globalSaveWorkflow } from
|
|
50
|
-
import { getAvailableVariables } from
|
|
51
|
-
import { logger } from
|
|
52
|
-
import {
|
|
53
|
-
|
|
54
|
-
getPortBackgroundColor,
|
|
55
|
-
} from "../utils/colors.js";
|
|
56
|
-
import { applyPortOrder } from "../utils/portUtils.js";
|
|
43
|
+
type DynamicSchemaResult
|
|
44
|
+
} from '../services/dynamicSchemaService.js';
|
|
45
|
+
import { globalSaveWorkflow } from '../services/globalSave.js';
|
|
46
|
+
import { getAvailableVariables } from '../services/variableService.js';
|
|
47
|
+
import { logger } from '../utils/logger.js';
|
|
48
|
+
import { getDataTypeColorToken, getPortBackgroundColor } from '../utils/colors.js';
|
|
49
|
+
import { applyPortOrder } from '../utils/portUtils.js';
|
|
57
50
|
|
|
58
51
|
interface Props {
|
|
59
52
|
/** Optional workflow node (if provided, schema and values are derived from it) */
|
|
@@ -88,15 +81,9 @@
|
|
|
88
81
|
/** Auth provider for API requests (used for template variable API mode) */
|
|
89
82
|
authProvider?: AuthProvider;
|
|
90
83
|
/** Callback when any field value changes (fired on blur for immediate sync) */
|
|
91
|
-
onChange?: (
|
|
92
|
-
config: Record<string, unknown>,
|
|
93
|
-
uiExtensions?: NodeUIExtensions,
|
|
94
|
-
) => void;
|
|
84
|
+
onChange?: (config: Record<string, unknown>, uiExtensions?: NodeUIExtensions) => void;
|
|
95
85
|
/** Callback when form is saved (includes both config and extensions if enabled) */
|
|
96
|
-
onSave?: (
|
|
97
|
-
config: Record<string, unknown>,
|
|
98
|
-
uiExtensions?: NodeUIExtensions,
|
|
99
|
-
) => void;
|
|
86
|
+
onSave?: (config: Record<string, unknown>, uiExtensions?: NodeUIExtensions) => void;
|
|
100
87
|
/** Callback when form is cancelled */
|
|
101
88
|
onCancel?: () => void;
|
|
102
89
|
}
|
|
@@ -114,16 +101,13 @@
|
|
|
114
101
|
authProvider,
|
|
115
102
|
onChange,
|
|
116
103
|
onSave,
|
|
117
|
-
onCancel
|
|
104
|
+
onCancel
|
|
118
105
|
}: Props = $props();
|
|
119
106
|
|
|
120
107
|
// Set context for child components (e.g., FormAutocomplete)
|
|
121
108
|
// Use getter functions to ensure child components always get the current prop value,
|
|
122
109
|
// even if the prop changes after initial mount
|
|
123
|
-
setContext<() => AuthProvider | undefined>(
|
|
124
|
-
"flowdrop:getAuthProvider",
|
|
125
|
-
() => authProvider,
|
|
126
|
-
);
|
|
110
|
+
setContext<() => AuthProvider | undefined>('flowdrop:getAuthProvider', () => authProvider);
|
|
127
111
|
|
|
128
112
|
/**
|
|
129
113
|
* State for dynamic schema loading
|
|
@@ -170,9 +154,7 @@
|
|
|
170
154
|
return fetchedDynamicSchema;
|
|
171
155
|
}
|
|
172
156
|
// Otherwise use the direct prop or node metadata
|
|
173
|
-
return (
|
|
174
|
-
schema ?? (node?.data.metadata?.configSchema as ConfigSchema | undefined)
|
|
175
|
-
);
|
|
157
|
+
return schema ?? (node?.data.metadata?.configSchema as ConfigSchema | undefined);
|
|
176
158
|
});
|
|
177
159
|
|
|
178
160
|
/**
|
|
@@ -180,9 +162,7 @@
|
|
|
180
162
|
* Priority: direct uiSchema prop > node metadata uiSchema
|
|
181
163
|
*/
|
|
182
164
|
const configUISchema = $derived.by<UISchemaElement | undefined>(() => {
|
|
183
|
-
return (
|
|
184
|
-
uiSchema ?? (node?.data.metadata?.uiSchema as UISchemaElement | undefined)
|
|
185
|
-
);
|
|
165
|
+
return uiSchema ?? (node?.data.metadata?.uiSchema as UISchemaElement | undefined);
|
|
186
166
|
});
|
|
187
167
|
|
|
188
168
|
/**
|
|
@@ -247,23 +227,20 @@
|
|
|
247
227
|
const result: DynamicSchemaResult = await fetchDynamicSchema(
|
|
248
228
|
configEditOptions.dynamicSchema,
|
|
249
229
|
node,
|
|
250
|
-
workflowId
|
|
230
|
+
workflowId
|
|
251
231
|
);
|
|
252
232
|
|
|
253
233
|
if (result.success && result.schema) {
|
|
254
234
|
fetchedDynamicSchema = result.schema;
|
|
255
235
|
} else {
|
|
256
236
|
dynamicSchemaError =
|
|
257
|
-
result.error ??
|
|
258
|
-
configEditOptions.errorMessage ??
|
|
259
|
-
"Failed to load configuration schema";
|
|
237
|
+
result.error ?? configEditOptions.errorMessage ?? 'Failed to load configuration schema';
|
|
260
238
|
}
|
|
261
239
|
} catch (err) {
|
|
262
240
|
dynamicSchemaError =
|
|
263
241
|
err instanceof Error
|
|
264
242
|
? err.message
|
|
265
|
-
: (configEditOptions.errorMessage ??
|
|
266
|
-
"Failed to load configuration schema");
|
|
243
|
+
: (configEditOptions.errorMessage ?? 'Failed to load configuration schema');
|
|
267
244
|
} finally {
|
|
268
245
|
dynamicSchemaLoading = false;
|
|
269
246
|
}
|
|
@@ -287,12 +264,8 @@
|
|
|
287
264
|
* Get the resolved external edit URL
|
|
288
265
|
*/
|
|
289
266
|
function getExternalEditUrl(): string {
|
|
290
|
-
if (!node || !configEditOptions?.externalEditLink) return
|
|
291
|
-
return resolveExternalEditUrl(
|
|
292
|
-
configEditOptions.externalEditLink,
|
|
293
|
-
node,
|
|
294
|
-
workflowId,
|
|
295
|
-
);
|
|
267
|
+
if (!node || !configEditOptions?.externalEditLink) return '#';
|
|
268
|
+
return resolveExternalEditUrl(configEditOptions.externalEditLink, node, workflowId);
|
|
296
269
|
}
|
|
297
270
|
|
|
298
271
|
/**
|
|
@@ -302,11 +275,10 @@
|
|
|
302
275
|
if (!node || !configEditOptions?.externalEditLink) return;
|
|
303
276
|
|
|
304
277
|
const url = getExternalEditUrl();
|
|
305
|
-
const openInNewTab =
|
|
306
|
-
configEditOptions.externalEditLink.openInNewTab !== false;
|
|
278
|
+
const openInNewTab = configEditOptions.externalEditLink.openInNewTab !== false;
|
|
307
279
|
|
|
308
280
|
if (openInNewTab) {
|
|
309
|
-
window.open(url,
|
|
281
|
+
window.open(url, '_blank', 'noopener,noreferrer');
|
|
310
282
|
} else {
|
|
311
283
|
window.location.href = url;
|
|
312
284
|
}
|
|
@@ -331,9 +303,7 @@
|
|
|
331
303
|
const fieldConfig = field as Record<string, unknown>;
|
|
332
304
|
// Use existing value if available, otherwise use default
|
|
333
305
|
mergedConfig[key] =
|
|
334
|
-
initialConfig[key] !== undefined
|
|
335
|
-
? initialConfig[key]
|
|
336
|
-
: fieldConfig.default;
|
|
306
|
+
initialConfig[key] !== undefined ? initialConfig[key] : fieldConfig.default;
|
|
337
307
|
});
|
|
338
308
|
configValues = mergedConfig;
|
|
339
309
|
}
|
|
@@ -344,8 +314,7 @@
|
|
|
344
314
|
*/
|
|
345
315
|
$effect(() => {
|
|
346
316
|
uiExtensionValues = {
|
|
347
|
-
hideUnconnectedHandles:
|
|
348
|
-
initialUIExtensions.hideUnconnectedHandles ?? false,
|
|
317
|
+
hideUnconnectedHandles: initialUIExtensions.hideUnconnectedHandles ?? false,
|
|
349
318
|
portOrder: initialUIExtensions.portOrder
|
|
350
319
|
? {
|
|
351
320
|
inputs: initialUIExtensions.portOrder.inputs
|
|
@@ -353,7 +322,7 @@
|
|
|
353
322
|
: undefined,
|
|
354
323
|
outputs: initialUIExtensions.portOrder.outputs
|
|
355
324
|
? [...initialUIExtensions.portOrder.outputs]
|
|
356
|
-
: undefined
|
|
325
|
+
: undefined
|
|
357
326
|
}
|
|
358
327
|
: undefined,
|
|
359
328
|
hiddenPorts: initialUIExtensions.hiddenPorts
|
|
@@ -363,9 +332,9 @@
|
|
|
363
332
|
: undefined,
|
|
364
333
|
outputs: initialUIExtensions.hiddenPorts.outputs
|
|
365
334
|
? [...initialUIExtensions.hiddenPorts.outputs]
|
|
366
|
-
: undefined
|
|
335
|
+
: undefined
|
|
367
336
|
}
|
|
368
|
-
: undefined
|
|
337
|
+
: undefined
|
|
369
338
|
};
|
|
370
339
|
});
|
|
371
340
|
|
|
@@ -376,13 +345,10 @@
|
|
|
376
345
|
const allInputPortsForUI = $derived.by<NodePort[]>(() => {
|
|
377
346
|
if (!node) return [];
|
|
378
347
|
const staticInputs = node.data.metadata.inputs ?? [];
|
|
379
|
-
const dynInputs = (
|
|
380
|
-
(
|
|
381
|
-
).map((p) => dynamicPortToNodePort(p, "input"));
|
|
382
|
-
return applyPortOrder(
|
|
383
|
-
[...staticInputs, ...dynInputs],
|
|
384
|
-
uiExtensionValues.portOrder?.inputs,
|
|
348
|
+
const dynInputs = ((node.data.config?.dynamicInputs as DynamicPort[]) || []).map((p) =>
|
|
349
|
+
dynamicPortToNodePort(p, 'input')
|
|
385
350
|
);
|
|
351
|
+
return applyPortOrder([...staticInputs, ...dynInputs], uiExtensionValues.portOrder?.inputs);
|
|
386
352
|
});
|
|
387
353
|
|
|
388
354
|
/**
|
|
@@ -392,25 +358,17 @@
|
|
|
392
358
|
const allOutputPortsForUI = $derived.by<NodePort[]>(() => {
|
|
393
359
|
if (!node) return [];
|
|
394
360
|
const staticOutputs = node.data.metadata.outputs ?? [];
|
|
395
|
-
const dynOutputs = (
|
|
396
|
-
(
|
|
397
|
-
).map((p) => dynamicPortToNodePort(p, "output"));
|
|
398
|
-
return applyPortOrder(
|
|
399
|
-
[...staticOutputs, ...dynOutputs],
|
|
400
|
-
uiExtensionValues.portOrder?.outputs,
|
|
361
|
+
const dynOutputs = ((node.data.config?.dynamicOutputs as DynamicPort[]) || []).map((p) =>
|
|
362
|
+
dynamicPortToNodePort(p, 'output')
|
|
401
363
|
);
|
|
364
|
+
return applyPortOrder([...staticOutputs, ...dynOutputs], uiExtensionValues.portOrder?.outputs);
|
|
402
365
|
});
|
|
403
366
|
|
|
404
367
|
/**
|
|
405
368
|
* Move a port one position up or down in the display order.
|
|
406
369
|
*/
|
|
407
|
-
function movePort(
|
|
408
|
-
direction
|
|
409
|
-
portId: string,
|
|
410
|
-
delta: -1 | 1,
|
|
411
|
-
): void {
|
|
412
|
-
const list =
|
|
413
|
-
direction === "inputs" ? allInputPortsForUI : allOutputPortsForUI;
|
|
370
|
+
function movePort(direction: 'inputs' | 'outputs', portId: string, delta: -1 | 1): void {
|
|
371
|
+
const list = direction === 'inputs' ? allInputPortsForUI : allOutputPortsForUI;
|
|
414
372
|
const idx = list.findIndex((p) => p.id === portId);
|
|
415
373
|
if (idx === -1) return;
|
|
416
374
|
const newIdx = idx + delta;
|
|
@@ -419,7 +377,7 @@
|
|
|
419
377
|
[newOrder[idx], newOrder[newIdx]] = [newOrder[newIdx], newOrder[idx]];
|
|
420
378
|
uiExtensionValues.portOrder = {
|
|
421
379
|
...uiExtensionValues.portOrder,
|
|
422
|
-
[direction]: newOrder
|
|
380
|
+
[direction]: newOrder
|
|
423
381
|
};
|
|
424
382
|
handleFormBlur();
|
|
425
383
|
}
|
|
@@ -427,18 +385,13 @@
|
|
|
427
385
|
/**
|
|
428
386
|
* Toggle manual visibility of a port. Required ports cannot be hidden.
|
|
429
387
|
*/
|
|
430
|
-
function togglePortHidden(
|
|
431
|
-
direction: "inputs" | "outputs",
|
|
432
|
-
portId: string,
|
|
433
|
-
): void {
|
|
388
|
+
function togglePortHidden(direction: 'inputs' | 'outputs', portId: string): void {
|
|
434
389
|
const current = uiExtensionValues.hiddenPorts?.[direction] ?? [];
|
|
435
390
|
const isHidden = current.includes(portId);
|
|
436
|
-
const next = isHidden
|
|
437
|
-
? current.filter((id) => id !== portId)
|
|
438
|
-
: [...current, portId];
|
|
391
|
+
const next = isHidden ? current.filter((id) => id !== portId) : [...current, portId];
|
|
439
392
|
uiExtensionValues.hiddenPorts = {
|
|
440
393
|
...uiExtensionValues.hiddenPorts,
|
|
441
|
-
[direction]: next.length > 0 ? next : undefined
|
|
394
|
+
[direction]: next.length > 0 ? next : undefined
|
|
442
395
|
};
|
|
443
396
|
handleFormBlur();
|
|
444
397
|
}
|
|
@@ -446,15 +399,13 @@
|
|
|
446
399
|
/**
|
|
447
400
|
* Reset all port customizations (order + hidden) for a direction back to defaults.
|
|
448
401
|
*/
|
|
449
|
-
function resetPortCustomizations(direction:
|
|
402
|
+
function resetPortCustomizations(direction: 'inputs' | 'outputs'): void {
|
|
450
403
|
const order = { ...uiExtensionValues.portOrder };
|
|
451
404
|
const hidden = { ...uiExtensionValues.hiddenPorts };
|
|
452
405
|
delete order[direction];
|
|
453
406
|
delete hidden[direction];
|
|
454
|
-
uiExtensionValues.portOrder =
|
|
455
|
-
|
|
456
|
-
uiExtensionValues.hiddenPorts =
|
|
457
|
-
Object.keys(hidden).length > 0 ? hidden : undefined;
|
|
407
|
+
uiExtensionValues.portOrder = Object.keys(order).length > 0 ? order : undefined;
|
|
408
|
+
uiExtensionValues.hiddenPorts = Object.keys(hidden).length > 0 ? hidden : undefined;
|
|
458
409
|
handleFormBlur();
|
|
459
410
|
}
|
|
460
411
|
|
|
@@ -480,8 +431,7 @@
|
|
|
480
431
|
*/
|
|
481
432
|
function handleFormBlur(): void {
|
|
482
433
|
if (onChange) {
|
|
483
|
-
const extensions =
|
|
484
|
-
showUIExtensions && node ? uiExtensionValues : undefined;
|
|
434
|
+
const extensions = showUIExtensions && node ? uiExtensionValues : undefined;
|
|
485
435
|
onChange({ ...configValues }, extensions);
|
|
486
436
|
}
|
|
487
437
|
}
|
|
@@ -493,34 +443,23 @@
|
|
|
493
443
|
*/
|
|
494
444
|
async function handleSave(): Promise<void> {
|
|
495
445
|
// Collect all form values including hidden fields
|
|
496
|
-
const form = document.querySelector(
|
|
446
|
+
const form = document.querySelector('.config-form');
|
|
497
447
|
const updatedConfig: Record<string, unknown> = { ...configValues };
|
|
498
448
|
|
|
499
449
|
if (form) {
|
|
500
|
-
const inputs = form.querySelectorAll(
|
|
450
|
+
const inputs = form.querySelectorAll('input, select, textarea');
|
|
501
451
|
inputs.forEach((input: Element) => {
|
|
502
|
-
const inputEl = input as
|
|
503
|
-
| HTMLInputElement
|
|
504
|
-
| HTMLSelectElement
|
|
505
|
-
| HTMLTextAreaElement;
|
|
452
|
+
const inputEl = input as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;
|
|
506
453
|
// Skip UI extension fields (prefixed with ext-)
|
|
507
|
-
if (inputEl.id && !inputEl.id.startsWith(
|
|
508
|
-
if (
|
|
509
|
-
inputEl instanceof HTMLInputElement &&
|
|
510
|
-
inputEl.type === "checkbox"
|
|
511
|
-
) {
|
|
454
|
+
if (inputEl.id && !inputEl.id.startsWith('ext-')) {
|
|
455
|
+
if (inputEl instanceof HTMLInputElement && inputEl.type === 'checkbox') {
|
|
512
456
|
updatedConfig[inputEl.id] = inputEl.checked;
|
|
513
457
|
} else if (
|
|
514
458
|
inputEl instanceof HTMLInputElement &&
|
|
515
|
-
(inputEl.type ===
|
|
516
|
-
) {
|
|
517
|
-
updatedConfig[inputEl.id] = inputEl.value
|
|
518
|
-
? Number(inputEl.value)
|
|
519
|
-
: inputEl.value;
|
|
520
|
-
} else if (
|
|
521
|
-
inputEl instanceof HTMLInputElement &&
|
|
522
|
-
inputEl.type === "hidden"
|
|
459
|
+
(inputEl.type === 'number' || inputEl.type === 'range')
|
|
523
460
|
) {
|
|
461
|
+
updatedConfig[inputEl.id] = inputEl.value ? Number(inputEl.value) : inputEl.value;
|
|
462
|
+
} else if (inputEl instanceof HTMLInputElement && inputEl.type === 'hidden') {
|
|
524
463
|
// Parse hidden field values that might be JSON
|
|
525
464
|
try {
|
|
526
465
|
const parsed = JSON.parse(inputEl.value);
|
|
@@ -540,14 +479,10 @@
|
|
|
540
479
|
if (initialConfig && configSchema?.properties) {
|
|
541
480
|
Object.entries(configSchema.properties).forEach(
|
|
542
481
|
([key, property]: [string, Record<string, unknown>]) => {
|
|
543
|
-
if (
|
|
544
|
-
property.format === "hidden" &&
|
|
545
|
-
!(key in updatedConfig) &&
|
|
546
|
-
key in initialConfig
|
|
547
|
-
) {
|
|
482
|
+
if (property.format === 'hidden' && !(key in updatedConfig) && key in initialConfig) {
|
|
548
483
|
updatedConfig[key] = initialConfig[key];
|
|
549
484
|
}
|
|
550
|
-
}
|
|
485
|
+
}
|
|
551
486
|
);
|
|
552
487
|
}
|
|
553
488
|
|
|
@@ -566,7 +501,7 @@
|
|
|
566
501
|
try {
|
|
567
502
|
await globalSaveWorkflow();
|
|
568
503
|
} catch (error) {
|
|
569
|
-
logger.error(
|
|
504
|
+
logger.error('Failed to save workflow after config save:', error);
|
|
570
505
|
} finally {
|
|
571
506
|
isSavingWorkflow = false;
|
|
572
507
|
}
|
|
@@ -585,7 +520,7 @@
|
|
|
585
520
|
|
|
586
521
|
// Process template fields to compute variable schema
|
|
587
522
|
if (
|
|
588
|
-
fieldSchema.format ===
|
|
523
|
+
fieldSchema.format === 'template' &&
|
|
589
524
|
node &&
|
|
590
525
|
workflowNodes.length > 0 &&
|
|
591
526
|
workflowEdges.length > 0
|
|
@@ -594,23 +529,18 @@
|
|
|
594
529
|
const variablesConfig = fieldSchema.variables;
|
|
595
530
|
|
|
596
531
|
// Compute the variable schema with optional port filtering and port name prefixing
|
|
597
|
-
const computedSchema = getAvailableVariables(
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
{
|
|
602
|
-
targetPortIds: variablesConfig?.ports,
|
|
603
|
-
includePortName: variablesConfig?.includePortName,
|
|
604
|
-
},
|
|
605
|
-
);
|
|
532
|
+
const computedSchema = getAvailableVariables(node, workflowNodes, workflowEdges, {
|
|
533
|
+
targetPortIds: variablesConfig?.ports,
|
|
534
|
+
includePortName: variablesConfig?.includePortName
|
|
535
|
+
});
|
|
606
536
|
|
|
607
537
|
// Merge computed schema with any pre-defined schema
|
|
608
538
|
const mergedSchema = variablesConfig?.schema
|
|
609
539
|
? {
|
|
610
540
|
variables: {
|
|
611
541
|
...computedSchema.variables,
|
|
612
|
-
...variablesConfig.schema.variables
|
|
613
|
-
}
|
|
542
|
+
...variablesConfig.schema.variables
|
|
543
|
+
}
|
|
614
544
|
}
|
|
615
545
|
: computedSchema;
|
|
616
546
|
|
|
@@ -618,8 +548,8 @@
|
|
|
618
548
|
...fieldSchema,
|
|
619
549
|
variables: {
|
|
620
550
|
...variablesConfig,
|
|
621
|
-
schema: mergedSchema
|
|
622
|
-
}
|
|
551
|
+
schema: mergedSchema
|
|
552
|
+
}
|
|
623
553
|
} as FieldSchema;
|
|
624
554
|
}
|
|
625
555
|
|
|
@@ -637,7 +567,7 @@
|
|
|
637
567
|
<div class="config-form__admin-edit-content">
|
|
638
568
|
<p class="config-form__admin-edit-description">
|
|
639
569
|
{configEditOptions.externalEditLink.description ??
|
|
640
|
-
|
|
570
|
+
'This node requires external configuration. Click the button below to open the configuration panel.'}
|
|
641
571
|
</p>
|
|
642
572
|
<button
|
|
643
573
|
type="button"
|
|
@@ -645,13 +575,9 @@
|
|
|
645
575
|
onclick={handleExternalEditClick}
|
|
646
576
|
>
|
|
647
577
|
<Icon
|
|
648
|
-
icon={configEditOptions.externalEditLink.icon ??
|
|
649
|
-
"heroicons:arrow-top-right-on-square"}
|
|
578
|
+
icon={configEditOptions.externalEditLink.icon ?? 'heroicons:arrow-top-right-on-square'}
|
|
650
579
|
/>
|
|
651
|
-
<span
|
|
652
|
-
>{configEditOptions.externalEditLink.label ??
|
|
653
|
-
"Configure Externally"}</span
|
|
654
|
-
>
|
|
580
|
+
<span>{configEditOptions.externalEditLink.label ?? 'Configure Externally'}</span>
|
|
655
581
|
</button>
|
|
656
582
|
</div>
|
|
657
583
|
</div>
|
|
@@ -662,7 +588,7 @@
|
|
|
662
588
|
<div class="config-form__loading">
|
|
663
589
|
<div class="config-form__loading-spinner"></div>
|
|
664
590
|
<p class="config-form__loading-text">
|
|
665
|
-
{configEditOptions?.loadingMessage ??
|
|
591
|
+
{configEditOptions?.loadingMessage ?? 'Loading configuration options...'}
|
|
666
592
|
</p>
|
|
667
593
|
</div>
|
|
668
594
|
{:else if dynamicSchemaError}
|
|
@@ -690,12 +616,9 @@
|
|
|
690
616
|
>
|
|
691
617
|
<Icon
|
|
692
618
|
icon={configEditOptions.externalEditLink.icon ??
|
|
693
|
-
|
|
619
|
+
'heroicons:arrow-top-right-on-square'}
|
|
694
620
|
/>
|
|
695
|
-
<span
|
|
696
|
-
>{configEditOptions.externalEditLink.label ??
|
|
697
|
-
"Use External Editor"}</span
|
|
698
|
-
>
|
|
621
|
+
<span>{configEditOptions.externalEditLink.label ?? 'Use External Editor'}</span>
|
|
699
622
|
</button>
|
|
700
623
|
{/if}
|
|
701
624
|
</div>
|
|
@@ -726,17 +649,13 @@
|
|
|
726
649
|
type="button"
|
|
727
650
|
class="config-form__schema-external"
|
|
728
651
|
onclick={handleExternalEditClick}
|
|
729
|
-
title={configEditOptions.externalEditLink.description ??
|
|
730
|
-
"Open external editor"}
|
|
652
|
+
title={configEditOptions.externalEditLink.description ?? 'Open external editor'}
|
|
731
653
|
>
|
|
732
654
|
<Icon
|
|
733
655
|
icon={configEditOptions.externalEditLink.icon ??
|
|
734
|
-
|
|
656
|
+
'heroicons:arrow-top-right-on-square'}
|
|
735
657
|
/>
|
|
736
|
-
<span
|
|
737
|
-
>{configEditOptions.externalEditLink.label ??
|
|
738
|
-
"External Editor"}</span
|
|
739
|
-
>
|
|
658
|
+
<span>{configEditOptions.externalEditLink.label ?? 'External Editor'}</span>
|
|
740
659
|
</button>
|
|
741
660
|
{/if}
|
|
742
661
|
</div>
|
|
@@ -760,9 +679,7 @@
|
|
|
760
679
|
/>
|
|
761
680
|
{:else}
|
|
762
681
|
{#each Object.entries(configSchema.properties) as [key, field], index (key)}
|
|
763
|
-
{@const fieldSchema = toFieldSchema(
|
|
764
|
-
field as Record<string, unknown>,
|
|
765
|
-
)}
|
|
682
|
+
{@const fieldSchema = toFieldSchema(field as Record<string, unknown>)}
|
|
766
683
|
{@const required = isFieldRequired(key)}
|
|
767
684
|
|
|
768
685
|
<FormField
|
|
@@ -788,11 +705,7 @@
|
|
|
788
705
|
<Icon icon="heroicons:bug-ant" class="config-form__debug-icon" />
|
|
789
706
|
<span>Debug - Config Schema</span>
|
|
790
707
|
</div>
|
|
791
|
-
<pre class="config-form__debug-content">{JSON.stringify(
|
|
792
|
-
configSchema,
|
|
793
|
-
null,
|
|
794
|
-
2,
|
|
795
|
-
)}</pre>
|
|
708
|
+
<pre class="config-form__debug-content">{JSON.stringify(configSchema, null, 2)}</pre>
|
|
796
709
|
</div>
|
|
797
710
|
{/if}
|
|
798
711
|
|
|
@@ -800,10 +713,7 @@
|
|
|
800
713
|
{#if showUIExtensions && node}
|
|
801
714
|
<div class="config-form__extensions">
|
|
802
715
|
<div class="config-form__extensions-header">
|
|
803
|
-
<Icon
|
|
804
|
-
icon="heroicons:adjustments-horizontal"
|
|
805
|
-
class="config-form__extensions-icon"
|
|
806
|
-
/>
|
|
716
|
+
<Icon icon="heroicons:adjustments-horizontal" class="config-form__extensions-icon" />
|
|
807
717
|
<span>Display Settings</span>
|
|
808
718
|
</div>
|
|
809
719
|
<div class="config-form__extensions-content">
|
|
@@ -835,7 +745,7 @@
|
|
|
835
745
|
<button
|
|
836
746
|
type="button"
|
|
837
747
|
class="config-form__port-order-reset"
|
|
838
|
-
onclick={() => resetPortCustomizations(
|
|
748
|
+
onclick={() => resetPortCustomizations('inputs')}
|
|
839
749
|
title="Reset to default order and visibility"
|
|
840
750
|
>
|
|
841
751
|
<Icon icon="heroicons:arrow-uturn-left" />
|
|
@@ -846,26 +756,21 @@
|
|
|
846
756
|
<ul class="config-form__port-order-list">
|
|
847
757
|
{#each allInputPortsForUI as port, i (port.id)}
|
|
848
758
|
{@const isHidden =
|
|
849
|
-
uiExtensionValues.hiddenPorts?.inputs?.includes(port.id) ??
|
|
850
|
-
false}
|
|
759
|
+
uiExtensionValues.hiddenPorts?.inputs?.includes(port.id) ?? false}
|
|
851
760
|
{@const isRequired = port.required ?? false}
|
|
852
761
|
<li
|
|
853
762
|
class="config-form__port-order-item"
|
|
854
763
|
class:config-form__port-order-item--hidden={isHidden}
|
|
855
764
|
>
|
|
856
|
-
<span class="config-form__port-order-name">{port.name}</span
|
|
857
|
-
>
|
|
765
|
+
<span class="config-form__port-order-name">{port.name}</span>
|
|
858
766
|
<span
|
|
859
767
|
class="config-form__port-order-badge"
|
|
860
768
|
style="background-color:{getPortBackgroundColor(
|
|
861
769
|
port.dataType,
|
|
862
|
-
15
|
|
770
|
+
15
|
|
863
771
|
)};color:{getDataTypeColorToken(
|
|
864
|
-
port.dataType
|
|
865
|
-
)};border:1px solid {getPortBackgroundColor(
|
|
866
|
-
port.dataType,
|
|
867
|
-
30,
|
|
868
|
-
)}"
|
|
772
|
+
port.dataType
|
|
773
|
+
)};border:1px solid {getPortBackgroundColor(port.dataType, 30)}"
|
|
869
774
|
>
|
|
870
775
|
{port.dataType}
|
|
871
776
|
</span>
|
|
@@ -874,23 +779,19 @@
|
|
|
874
779
|
type="button"
|
|
875
780
|
disabled={isRequired}
|
|
876
781
|
title={isRequired
|
|
877
|
-
?
|
|
782
|
+
? 'Required ports cannot be hidden'
|
|
878
783
|
: isHidden
|
|
879
|
-
?
|
|
880
|
-
:
|
|
784
|
+
? 'Show port'
|
|
785
|
+
: 'Hide port'}
|
|
881
786
|
class:active={isHidden}
|
|
882
|
-
onclick={() => togglePortHidden(
|
|
787
|
+
onclick={() => togglePortHidden('inputs', port.id)}
|
|
883
788
|
>
|
|
884
|
-
<Icon
|
|
885
|
-
icon={isHidden
|
|
886
|
-
? "heroicons:eye-slash"
|
|
887
|
-
: "heroicons:eye"}
|
|
888
|
-
/>
|
|
789
|
+
<Icon icon={isHidden ? 'heroicons:eye-slash' : 'heroicons:eye'} />
|
|
889
790
|
</button>
|
|
890
791
|
<button
|
|
891
792
|
type="button"
|
|
892
793
|
disabled={i === 0 || allInputPortsForUI.length === 1}
|
|
893
|
-
onclick={() => movePort(
|
|
794
|
+
onclick={() => movePort('inputs', port.id, -1)}
|
|
894
795
|
title="Move up"
|
|
895
796
|
>
|
|
896
797
|
<Icon icon="heroicons:chevron-up" />
|
|
@@ -899,7 +800,7 @@
|
|
|
899
800
|
type="button"
|
|
900
801
|
disabled={i === allInputPortsForUI.length - 1 ||
|
|
901
802
|
allInputPortsForUI.length === 1}
|
|
902
|
-
onclick={() => movePort(
|
|
803
|
+
onclick={() => movePort('inputs', port.id, 1)}
|
|
903
804
|
title="Move down"
|
|
904
805
|
>
|
|
905
806
|
<Icon icon="heroicons:chevron-down" />
|
|
@@ -920,7 +821,7 @@
|
|
|
920
821
|
<button
|
|
921
822
|
type="button"
|
|
922
823
|
class="config-form__port-order-reset"
|
|
923
|
-
onclick={() => resetPortCustomizations(
|
|
824
|
+
onclick={() => resetPortCustomizations('outputs')}
|
|
924
825
|
title="Reset to default order and visibility"
|
|
925
826
|
>
|
|
926
827
|
<Icon icon="heroicons:arrow-uturn-left" />
|
|
@@ -931,26 +832,21 @@
|
|
|
931
832
|
<ul class="config-form__port-order-list">
|
|
932
833
|
{#each allOutputPortsForUI as port, i (port.id)}
|
|
933
834
|
{@const isHidden =
|
|
934
|
-
uiExtensionValues.hiddenPorts?.outputs?.includes(port.id) ??
|
|
935
|
-
false}
|
|
835
|
+
uiExtensionValues.hiddenPorts?.outputs?.includes(port.id) ?? false}
|
|
936
836
|
{@const isRequired = port.required ?? false}
|
|
937
837
|
<li
|
|
938
838
|
class="config-form__port-order-item"
|
|
939
839
|
class:config-form__port-order-item--hidden={isHidden}
|
|
940
840
|
>
|
|
941
|
-
<span class="config-form__port-order-name">{port.name}</span
|
|
942
|
-
>
|
|
841
|
+
<span class="config-form__port-order-name">{port.name}</span>
|
|
943
842
|
<span
|
|
944
843
|
class="config-form__port-order-badge"
|
|
945
844
|
style="background-color:{getPortBackgroundColor(
|
|
946
845
|
port.dataType,
|
|
947
|
-
15
|
|
846
|
+
15
|
|
948
847
|
)};color:{getDataTypeColorToken(
|
|
949
|
-
port.dataType
|
|
950
|
-
)};border:1px solid {getPortBackgroundColor(
|
|
951
|
-
port.dataType,
|
|
952
|
-
30,
|
|
953
|
-
)}"
|
|
848
|
+
port.dataType
|
|
849
|
+
)};border:1px solid {getPortBackgroundColor(port.dataType, 30)}"
|
|
954
850
|
>
|
|
955
851
|
{port.dataType}
|
|
956
852
|
</span>
|
|
@@ -959,23 +855,19 @@
|
|
|
959
855
|
type="button"
|
|
960
856
|
disabled={isRequired}
|
|
961
857
|
title={isRequired
|
|
962
|
-
?
|
|
858
|
+
? 'Required ports cannot be hidden'
|
|
963
859
|
: isHidden
|
|
964
|
-
?
|
|
965
|
-
:
|
|
860
|
+
? 'Show port'
|
|
861
|
+
: 'Hide port'}
|
|
966
862
|
class:active={isHidden}
|
|
967
|
-
onclick={() => togglePortHidden(
|
|
863
|
+
onclick={() => togglePortHidden('outputs', port.id)}
|
|
968
864
|
>
|
|
969
|
-
<Icon
|
|
970
|
-
icon={isHidden
|
|
971
|
-
? "heroicons:eye-slash"
|
|
972
|
-
: "heroicons:eye"}
|
|
973
|
-
/>
|
|
865
|
+
<Icon icon={isHidden ? 'heroicons:eye-slash' : 'heroicons:eye'} />
|
|
974
866
|
</button>
|
|
975
867
|
<button
|
|
976
868
|
type="button"
|
|
977
869
|
disabled={i === 0 || allOutputPortsForUI.length === 1}
|
|
978
|
-
onclick={() => movePort(
|
|
870
|
+
onclick={() => movePort('outputs', port.id, -1)}
|
|
979
871
|
title="Move up"
|
|
980
872
|
>
|
|
981
873
|
<Icon icon="heroicons:chevron-up" />
|
|
@@ -984,7 +876,7 @@
|
|
|
984
876
|
type="button"
|
|
985
877
|
disabled={i === allOutputPortsForUI.length - 1 ||
|
|
986
878
|
allOutputPortsForUI.length === 1}
|
|
987
|
-
onclick={() => movePort(
|
|
879
|
+
onclick={() => movePort('outputs', port.id, 1)}
|
|
988
880
|
title="Move down"
|
|
989
881
|
>
|
|
990
882
|
<Icon icon="heroicons:chevron-down" />
|
|
@@ -1034,9 +926,7 @@
|
|
|
1034
926
|
<div class="config-form__empty-icon">
|
|
1035
927
|
<Icon icon="heroicons:cog-6-tooth" />
|
|
1036
928
|
</div>
|
|
1037
|
-
<p class="config-form__empty-text">
|
|
1038
|
-
No configuration options available for this node.
|
|
1039
|
-
</p>
|
|
929
|
+
<p class="config-form__empty-text">No configuration options available for this node.</p>
|
|
1040
930
|
{#if configEditOptions?.externalEditLink}
|
|
1041
931
|
<button
|
|
1042
932
|
type="button"
|
|
@@ -1044,13 +934,9 @@
|
|
|
1044
934
|
onclick={handleExternalEditClick}
|
|
1045
935
|
>
|
|
1046
936
|
<Icon
|
|
1047
|
-
icon={configEditOptions.externalEditLink.icon ??
|
|
1048
|
-
"heroicons:arrow-top-right-on-square"}
|
|
937
|
+
icon={configEditOptions.externalEditLink.icon ?? 'heroicons:arrow-top-right-on-square'}
|
|
1049
938
|
/>
|
|
1050
|
-
<span
|
|
1051
|
-
>{configEditOptions.externalEditLink.label ??
|
|
1052
|
-
"Configure Externally"}</span
|
|
1053
|
-
>
|
|
939
|
+
<span>{configEditOptions.externalEditLink.label ?? 'Configure Externally'}</span>
|
|
1054
940
|
</button>
|
|
1055
941
|
{/if}
|
|
1056
942
|
</div>
|
|
@@ -1144,11 +1030,7 @@
|
|
|
1144
1030
|
}
|
|
1145
1031
|
|
|
1146
1032
|
.config-form__button--primary {
|
|
1147
|
-
background: linear-gradient(
|
|
1148
|
-
135deg,
|
|
1149
|
-
var(--fd-primary) 0%,
|
|
1150
|
-
var(--fd-primary-hover) 100%
|
|
1151
|
-
);
|
|
1033
|
+
background: linear-gradient(135deg, var(--fd-primary) 0%, var(--fd-primary-hover) 100%);
|
|
1152
1034
|
color: var(--fd-primary-foreground);
|
|
1153
1035
|
box-shadow:
|
|
1154
1036
|
0 1px 3px rgba(59, 130, 246, 0.3),
|
|
@@ -1156,11 +1038,7 @@
|
|
|
1156
1038
|
}
|
|
1157
1039
|
|
|
1158
1040
|
.config-form__button--primary:hover {
|
|
1159
|
-
background: linear-gradient(
|
|
1160
|
-
135deg,
|
|
1161
|
-
var(--fd-primary-hover) 0%,
|
|
1162
|
-
var(--fd-primary-hover) 100%
|
|
1163
|
-
);
|
|
1041
|
+
background: linear-gradient(135deg, var(--fd-primary-hover) 0%, var(--fd-primary-hover) 100%);
|
|
1164
1042
|
box-shadow:
|
|
1165
1043
|
0 4px 12px rgba(59, 130, 246, 0.35),
|
|
1166
1044
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
|
@@ -1381,7 +1259,7 @@
|
|
|
1381
1259
|
margin: 0;
|
|
1382
1260
|
padding: var(--fd-space-xl);
|
|
1383
1261
|
font-size: var(--fd-text-xs);
|
|
1384
|
-
font-family:
|
|
1262
|
+
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
|
|
1385
1263
|
color: var(--fd-foreground);
|
|
1386
1264
|
overflow-x: auto;
|
|
1387
1265
|
background-color: var(--fd-background);
|
|
@@ -1430,11 +1308,7 @@
|
|
|
1430
1308
|
============================================ */
|
|
1431
1309
|
|
|
1432
1310
|
.config-form__admin-edit {
|
|
1433
|
-
background: linear-gradient(
|
|
1434
|
-
135deg,
|
|
1435
|
-
var(--fd-info-muted) 0%,
|
|
1436
|
-
var(--fd-primary-muted) 100%
|
|
1437
|
-
);
|
|
1311
|
+
background: linear-gradient(135deg, var(--fd-info-muted) 0%, var(--fd-primary-muted) 100%);
|
|
1438
1312
|
border: 1px solid var(--fd-primary);
|
|
1439
1313
|
border-radius: 0.625rem;
|
|
1440
1314
|
overflow: hidden;
|
|
@@ -1446,11 +1320,7 @@
|
|
|
1446
1320
|
align-items: center;
|
|
1447
1321
|
gap: var(--fd-space-xs);
|
|
1448
1322
|
padding: var(--fd-space-md) var(--fd-space-xl);
|
|
1449
|
-
background: linear-gradient(
|
|
1450
|
-
135deg,
|
|
1451
|
-
var(--fd-primary-muted) 0%,
|
|
1452
|
-
var(--fd-primary-muted) 100%
|
|
1453
|
-
);
|
|
1323
|
+
background: linear-gradient(135deg, var(--fd-primary-muted) 0%, var(--fd-primary-muted) 100%);
|
|
1454
1324
|
border-bottom: 1px solid var(--fd-primary);
|
|
1455
1325
|
font-size: 0.8125rem;
|
|
1456
1326
|
font-weight: 600;
|
|
@@ -1622,11 +1492,7 @@
|
|
|
1622
1492
|
============================================ */
|
|
1623
1493
|
|
|
1624
1494
|
.config-form__button--external {
|
|
1625
|
-
background: linear-gradient(
|
|
1626
|
-
135deg,
|
|
1627
|
-
var(--fd-accent) 0%,
|
|
1628
|
-
var(--fd-primary) 100%
|
|
1629
|
-
);
|
|
1495
|
+
background: linear-gradient(135deg, var(--fd-accent) 0%, var(--fd-primary) 100%);
|
|
1630
1496
|
color: var(--fd-accent-foreground);
|
|
1631
1497
|
box-shadow:
|
|
1632
1498
|
0 1px 3px rgba(99, 102, 241, 0.3),
|
|
@@ -1634,11 +1500,7 @@
|
|
|
1634
1500
|
}
|
|
1635
1501
|
|
|
1636
1502
|
.config-form__button--external:hover {
|
|
1637
|
-
background: linear-gradient(
|
|
1638
|
-
135deg,
|
|
1639
|
-
var(--fd-accent-hover) 0%,
|
|
1640
|
-
var(--fd-primary-hover) 100%
|
|
1641
|
-
);
|
|
1503
|
+
background: linear-gradient(135deg, var(--fd-accent-hover) 0%, var(--fd-primary-hover) 100%);
|
|
1642
1504
|
box-shadow:
|
|
1643
1505
|
0 4px 12px rgba(99, 102, 241, 0.35),
|
|
1644
1506
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|