@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
|
@@ -5,36 +5,36 @@
|
|
|
5
5
|
* When a node is dragged near another node, this helper finds the best
|
|
6
6
|
* compatible port pair and creates a preview/permanent edge.
|
|
7
7
|
*/
|
|
8
|
-
import { dynamicPortToNodePort } from
|
|
9
|
-
import { getPortCompatibilityChecker } from
|
|
10
|
-
import { v4 as uuidv4 } from
|
|
8
|
+
import { dynamicPortToNodePort } from '../types/index.js';
|
|
9
|
+
import { getPortCompatibilityChecker } from '../utils/connections.js';
|
|
10
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
11
11
|
/** CSS class applied to proximity preview edges */
|
|
12
|
-
const PROXIMITY_EDGE_CLASS =
|
|
12
|
+
const PROXIMITY_EDGE_CLASS = 'flowdrop--edge--proximity-preview';
|
|
13
13
|
export class ProximityConnectHelper {
|
|
14
14
|
/**
|
|
15
15
|
* Get ALL ports (static + dynamic + gateway branches) for a node.
|
|
16
16
|
*/
|
|
17
17
|
static getAllPorts(node, direction) {
|
|
18
18
|
// Static ports from metadata
|
|
19
|
-
const staticPorts = direction ===
|
|
19
|
+
const staticPorts = direction === 'output'
|
|
20
20
|
? (node.data?.metadata?.outputs ?? [])
|
|
21
21
|
: (node.data?.metadata?.inputs ?? []);
|
|
22
22
|
// Dynamic ports from config
|
|
23
|
-
const dynamicKey = direction ===
|
|
23
|
+
const dynamicKey = direction === 'output' ? 'dynamicOutputs' : 'dynamicInputs';
|
|
24
24
|
const rawDynamic = node.data?.config?.[dynamicKey] ?? [];
|
|
25
25
|
const dynamicPorts = rawDynamic.map((p) => dynamicPortToNodePort(p, direction));
|
|
26
26
|
// Gateway branches (output only, dataType = 'trigger')
|
|
27
|
-
if (direction ===
|
|
27
|
+
if (direction === 'output') {
|
|
28
28
|
const branches = node.data?.config?.branches;
|
|
29
29
|
const nodeType = node.data?.metadata?.type || node.type;
|
|
30
|
-
if (nodeType ===
|
|
30
|
+
if (nodeType === 'gateway' && branches?.length) {
|
|
31
31
|
const branchPorts = branches
|
|
32
32
|
.filter((b) => !staticPorts.some((sp) => sp.id === b.name))
|
|
33
33
|
.map((b) => ({
|
|
34
34
|
id: b.name,
|
|
35
35
|
name: b.name,
|
|
36
|
-
type:
|
|
37
|
-
dataType:
|
|
36
|
+
type: 'output',
|
|
37
|
+
dataType: 'trigger'
|
|
38
38
|
}));
|
|
39
39
|
return [...staticPorts, ...dynamicPorts, ...branchPorts];
|
|
40
40
|
}
|
|
@@ -88,10 +88,10 @@ export class ProximityConnectHelper {
|
|
|
88
88
|
}
|
|
89
89
|
if (!closestNode)
|
|
90
90
|
return [];
|
|
91
|
-
const draggedOutputs = this.getAllPorts(draggedNode,
|
|
92
|
-
const draggedInputs = this.getAllPorts(draggedNode,
|
|
93
|
-
const nearbyInputs = this.getAllPorts(closestNode,
|
|
94
|
-
const nearbyOutputs = this.getAllPorts(closestNode,
|
|
91
|
+
const draggedOutputs = this.getAllPorts(draggedNode, 'output');
|
|
92
|
+
const draggedInputs = this.getAllPorts(draggedNode, 'input');
|
|
93
|
+
const nearbyInputs = this.getAllPorts(closestNode, 'input');
|
|
94
|
+
const nearbyOutputs = this.getAllPorts(closestNode, 'output');
|
|
95
95
|
// Collect all compatible pairs, then pick the best one
|
|
96
96
|
let exactMatch = null;
|
|
97
97
|
let compatibleMatch = null;
|
|
@@ -100,8 +100,8 @@ export class ProximityConnectHelper {
|
|
|
100
100
|
for (const inPort of nearbyInputs) {
|
|
101
101
|
if (!checker.areDataTypesCompatible(outPort.dataType, inPort.dataType))
|
|
102
102
|
continue;
|
|
103
|
-
const sourceHandle = this.buildHandleId(draggedNode.id,
|
|
104
|
-
const targetHandle = this.buildHandleId(closestNode.id,
|
|
103
|
+
const sourceHandle = this.buildHandleId(draggedNode.id, 'output', outPort.id);
|
|
104
|
+
const targetHandle = this.buildHandleId(closestNode.id, 'input', inPort.id);
|
|
105
105
|
const edgeKey = `${draggedNode.id}:${sourceHandle}->${closestNode.id}:${targetHandle}`;
|
|
106
106
|
if (existingEdgeSet.has(edgeKey))
|
|
107
107
|
continue;
|
|
@@ -112,7 +112,7 @@ export class ProximityConnectHelper {
|
|
|
112
112
|
sourceHandle,
|
|
113
113
|
targetHandle,
|
|
114
114
|
sourcePortDataType: outPort.dataType,
|
|
115
|
-
targetPortDataType: inPort.dataType
|
|
115
|
+
targetPortDataType: inPort.dataType
|
|
116
116
|
};
|
|
117
117
|
if (outPort.dataType === inPort.dataType) {
|
|
118
118
|
if (!exactMatch)
|
|
@@ -135,8 +135,8 @@ export class ProximityConnectHelper {
|
|
|
135
135
|
for (const inPort of draggedInputs) {
|
|
136
136
|
if (!checker.areDataTypesCompatible(outPort.dataType, inPort.dataType))
|
|
137
137
|
continue;
|
|
138
|
-
const sourceHandle = this.buildHandleId(closestNode.id,
|
|
139
|
-
const targetHandle = this.buildHandleId(draggedNode.id,
|
|
138
|
+
const sourceHandle = this.buildHandleId(closestNode.id, 'output', outPort.id);
|
|
139
|
+
const targetHandle = this.buildHandleId(draggedNode.id, 'input', inPort.id);
|
|
140
140
|
const edgeKey = `${closestNode.id}:${sourceHandle}->${draggedNode.id}:${targetHandle}`;
|
|
141
141
|
if (existingEdgeSet.has(edgeKey))
|
|
142
142
|
continue;
|
|
@@ -147,7 +147,7 @@ export class ProximityConnectHelper {
|
|
|
147
147
|
sourceHandle,
|
|
148
148
|
targetHandle,
|
|
149
149
|
sourcePortDataType: outPort.dataType,
|
|
150
|
-
targetPortDataType: inPort.dataType
|
|
150
|
+
targetPortDataType: inPort.dataType
|
|
151
151
|
};
|
|
152
152
|
if (outPort.dataType === inPort.dataType) {
|
|
153
153
|
if (!exactMatch)
|
|
@@ -193,13 +193,13 @@ export class ProximityConnectHelper {
|
|
|
193
193
|
const otherOutputsByType = new Map();
|
|
194
194
|
for (const coord of portCoordinates.values()) {
|
|
195
195
|
if (coord.nodeId === draggedNodeId) {
|
|
196
|
-
if (coord.direction ===
|
|
196
|
+
if (coord.direction === 'output')
|
|
197
197
|
draggedOutputs.push(coord);
|
|
198
198
|
else
|
|
199
199
|
draggedInputs.push(coord);
|
|
200
200
|
}
|
|
201
201
|
else {
|
|
202
|
-
const groupMap = coord.direction ===
|
|
202
|
+
const groupMap = coord.direction === 'input' ? otherInputsByType : otherOutputsByType;
|
|
203
203
|
let group = groupMap.get(coord.dataType);
|
|
204
204
|
if (!group) {
|
|
205
205
|
group = [];
|
|
@@ -224,8 +224,7 @@ export class ProximityConnectHelper {
|
|
|
224
224
|
return;
|
|
225
225
|
const isExact = sourceCoord.dataType === targetCoord.dataType;
|
|
226
226
|
// Prefer exact match, then closest distance
|
|
227
|
-
if ((isExact && !bestIsExact) ||
|
|
228
|
-
(isExact === bestIsExact && dist < bestDistance)) {
|
|
227
|
+
if ((isExact && !bestIsExact) || (isExact === bestIsExact && dist < bestDistance)) {
|
|
229
228
|
bestCandidate = {
|
|
230
229
|
id: `proximity-${uuidv4()}`,
|
|
231
230
|
source: sourceCoord.nodeId,
|
|
@@ -233,7 +232,7 @@ export class ProximityConnectHelper {
|
|
|
233
232
|
sourceHandle: sourceCoord.handleId,
|
|
234
233
|
targetHandle: targetCoord.handleId,
|
|
235
234
|
sourcePortDataType: sourceCoord.dataType,
|
|
236
|
-
targetPortDataType: targetCoord.dataType
|
|
235
|
+
targetPortDataType: targetCoord.dataType
|
|
237
236
|
};
|
|
238
237
|
bestDistance = dist;
|
|
239
238
|
bestIsExact = isExact;
|
|
@@ -281,17 +280,17 @@ export class ProximityConnectHelper {
|
|
|
281
280
|
sourceHandle: c.sourceHandle,
|
|
282
281
|
targetHandle: c.targetHandle,
|
|
283
282
|
class: PROXIMITY_EDGE_CLASS,
|
|
284
|
-
style:
|
|
283
|
+
style: 'stroke-dasharray: 5 5; opacity: 0.6;',
|
|
285
284
|
animated: true,
|
|
286
285
|
selectable: false,
|
|
287
286
|
deletable: false,
|
|
288
287
|
data: {
|
|
289
288
|
metadata: {
|
|
290
|
-
edgeType:
|
|
289
|
+
edgeType: 'data',
|
|
291
290
|
sourcePortDataType: c.sourcePortDataType,
|
|
292
|
-
isProximityPreview: true
|
|
293
|
-
}
|
|
294
|
-
}
|
|
291
|
+
isProximityPreview: true
|
|
292
|
+
}
|
|
293
|
+
}
|
|
295
294
|
}));
|
|
296
295
|
}
|
|
297
296
|
/**
|
|
@@ -303,16 +302,15 @@ export class ProximityConnectHelper {
|
|
|
303
302
|
source: c.source,
|
|
304
303
|
target: c.target,
|
|
305
304
|
sourceHandle: c.sourceHandle,
|
|
306
|
-
targetHandle: c.targetHandle
|
|
305
|
+
targetHandle: c.targetHandle
|
|
307
306
|
}));
|
|
308
307
|
}
|
|
309
308
|
/**
|
|
310
309
|
* Check if an edge is a temporary proximity preview edge.
|
|
311
310
|
*/
|
|
312
311
|
static isProximityPreviewEdge(edge) {
|
|
313
|
-
return (edge.id.startsWith(
|
|
314
|
-
edge.data?.metadata?.isProximityPreview ===
|
|
315
|
-
true);
|
|
312
|
+
return (edge.id.startsWith('proximity-') ||
|
|
313
|
+
edge.data?.metadata?.isProximityPreview === true);
|
|
316
314
|
}
|
|
317
315
|
/**
|
|
318
316
|
* Remove all proximity preview edges from an edge array.
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Workflow Editor Helper
|
|
3
3
|
* Contains business logic for workflow operations
|
|
4
4
|
*/
|
|
5
|
-
import type { WorkflowNode as WorkflowNodeType, NodeMetadata, Workflow, WorkflowEdge, NodeExecutionInfo } from
|
|
6
|
-
import type { EndpointConfig } from
|
|
7
|
-
export { generateNodeId, extractConfigDefaults } from
|
|
5
|
+
import type { WorkflowNode as WorkflowNodeType, NodeMetadata, Workflow, WorkflowEdge, NodeExecutionInfo } from '../types/index.js';
|
|
6
|
+
import type { EndpointConfig } from '../config/endpoints.js';
|
|
7
|
+
export { generateNodeId, extractConfigDefaults } from '../utils/nodeIds.js';
|
|
8
8
|
/**
|
|
9
9
|
* Edge category type for styling purposes
|
|
10
10
|
* - trigger: For control flow connections (dataType: "trigger")
|
|
@@ -12,7 +12,7 @@ export { generateNodeId, extractConfigDefaults } from "../utils/nodeIds.js";
|
|
|
12
12
|
* - loopback: Dashed gray line for loop iteration connections (targets loop_back port)
|
|
13
13
|
* - data: Normal gray line for all other data connections
|
|
14
14
|
*/
|
|
15
|
-
export type EdgeCategory =
|
|
15
|
+
export type EdgeCategory = 'trigger' | 'tool' | 'loopback' | 'data';
|
|
16
16
|
/**
|
|
17
17
|
* Edge styling configuration based on source port data type.
|
|
18
18
|
* Delegates to standalone functions in utils/edgeStyling.ts.
|
|
@@ -20,7 +20,7 @@ export type EdgeCategory = "trigger" | "tool" | "loopback" | "data";
|
|
|
20
20
|
export declare class EdgeStylingHelper {
|
|
21
21
|
static extractPortIdFromHandle(handleId: string | undefined): string | null;
|
|
22
22
|
static isGatewayBranch(node: WorkflowNodeType, portId: string): boolean;
|
|
23
|
-
static getPortDataType(node: WorkflowNodeType, portId: string, portType:
|
|
23
|
+
static getPortDataType(node: WorkflowNodeType, portId: string, portType: 'input' | 'output'): string | null;
|
|
24
24
|
static getEdgeCategory(sourcePortDataType: string | null): EdgeCategory;
|
|
25
25
|
static getEdgeCategoryWithLoopback(edge: WorkflowEdge, sourcePortDataType: string | null): EdgeCategory;
|
|
26
26
|
static applyConnectionStyling(edge: WorkflowEdge, sourceNode: WorkflowNodeType, targetNode: WorkflowNodeType): void;
|
|
@@ -53,7 +53,7 @@ export declare class WorkflowOperationsHelper {
|
|
|
53
53
|
/**
|
|
54
54
|
* Generate workflow metadata for updates
|
|
55
55
|
*/
|
|
56
|
-
static generateMetadata(existingMetadata?: Workflow[
|
|
56
|
+
static generateMetadata(existingMetadata?: Workflow['metadata']): Workflow['metadata'];
|
|
57
57
|
/**
|
|
58
58
|
* Update workflow with new nodes/edges and generate new metadata
|
|
59
59
|
*/
|
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
* Workflow Editor Helper
|
|
3
3
|
* Contains business logic for workflow operations
|
|
4
4
|
*/
|
|
5
|
-
import { hasCycles, hasInvalidCycles
|
|
6
|
-
import { workflowApi, nodeApi, setEndpointConfig } from
|
|
7
|
-
import { v4 as uuidv4 } from
|
|
8
|
-
import { workflowActions } from
|
|
9
|
-
import { nodeExecutionService } from
|
|
10
|
-
import { WorkflowAdapter } from
|
|
11
|
-
import { AgentSpecAdapter } from
|
|
12
|
-
import { validateForAgentSpecExport } from
|
|
13
|
-
import { extractPortId } from
|
|
14
|
-
import { logger } from
|
|
15
|
-
import { generateNodeId, extractConfigDefaults } from
|
|
16
|
-
import { applyConnectionStyling as applyConnectionStylingUtil, updateEdgeStyles as updateEdgeStylesUtil, isGatewayBranch as isGatewayBranchUtil, getPortDataType as getPortDataTypeUtil, getEdgeCategory as getEdgeCategoryUtil, getEdgeCategoryWithLoopback as getEdgeCategoryWithLoopbackUtil
|
|
17
|
-
export { generateNodeId, extractConfigDefaults } from
|
|
5
|
+
import { hasCycles, hasInvalidCycles } from '../utils/connections.js';
|
|
6
|
+
import { workflowApi, nodeApi, setEndpointConfig } from '../services/api.js';
|
|
7
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
8
|
+
import { workflowActions } from '../stores/workflowStore.svelte.js';
|
|
9
|
+
import { nodeExecutionService } from '../services/nodeExecutionService.js';
|
|
10
|
+
import { WorkflowAdapter } from '../adapters/WorkflowAdapter.js';
|
|
11
|
+
import { AgentSpecAdapter } from '../adapters/agentspec/AgentSpecAdapter.js';
|
|
12
|
+
import { validateForAgentSpecExport } from '../adapters/agentspec/validator.js';
|
|
13
|
+
import { extractPortId } from '../utils/handleIds.js';
|
|
14
|
+
import { logger } from '../utils/logger.js';
|
|
15
|
+
import { generateNodeId, extractConfigDefaults } from '../utils/nodeIds.js';
|
|
16
|
+
import { applyConnectionStyling as applyConnectionStylingUtil, updateEdgeStyles as updateEdgeStylesUtil, isGatewayBranch as isGatewayBranchUtil, getPortDataType as getPortDataTypeUtil, getEdgeCategory as getEdgeCategoryUtil, getEdgeCategoryWithLoopback as getEdgeCategoryWithLoopbackUtil } from '../utils/edgeStyling.js';
|
|
17
|
+
export { generateNodeId, extractConfigDefaults } from '../utils/nodeIds.js';
|
|
18
18
|
/**
|
|
19
19
|
* Edge styling configuration based on source port data type.
|
|
20
20
|
* Delegates to standalone functions in utils/edgeStyling.ts.
|
|
@@ -60,33 +60,29 @@ export class NodeOperationsHelper {
|
|
|
60
60
|
return fetchedNodes;
|
|
61
61
|
}
|
|
62
62
|
catch (error) {
|
|
63
|
-
logger.error(
|
|
63
|
+
logger.error('Failed to load nodes from API:', error);
|
|
64
64
|
// Use fallback sample nodes
|
|
65
65
|
return [
|
|
66
66
|
{
|
|
67
|
-
id:
|
|
68
|
-
name:
|
|
69
|
-
category:
|
|
70
|
-
description:
|
|
71
|
-
version:
|
|
72
|
-
icon:
|
|
67
|
+
id: 'text-input',
|
|
68
|
+
name: 'Text Input',
|
|
69
|
+
category: 'inputs',
|
|
70
|
+
description: 'Simple text input field',
|
|
71
|
+
version: '1.0.0',
|
|
72
|
+
icon: 'mdi:text-box',
|
|
73
73
|
inputs: [],
|
|
74
|
-
outputs: [
|
|
75
|
-
{ id: "text", name: "text", type: "output", dataType: "string" },
|
|
76
|
-
],
|
|
74
|
+
outputs: [{ id: 'text', name: 'text', type: 'output', dataType: 'string' }]
|
|
77
75
|
},
|
|
78
76
|
{
|
|
79
|
-
id:
|
|
80
|
-
name:
|
|
81
|
-
category:
|
|
82
|
-
description:
|
|
83
|
-
version:
|
|
84
|
-
icon:
|
|
85
|
-
inputs: [
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
outputs: [],
|
|
89
|
-
},
|
|
77
|
+
id: 'text-output',
|
|
78
|
+
name: 'Text Output',
|
|
79
|
+
category: 'outputs',
|
|
80
|
+
description: 'Display text output',
|
|
81
|
+
version: '1.0.0',
|
|
82
|
+
icon: 'mdi:text-box-outline',
|
|
83
|
+
inputs: [{ id: 'text', name: 'text', type: 'input', dataType: 'string' }],
|
|
84
|
+
outputs: []
|
|
85
|
+
}
|
|
90
86
|
];
|
|
91
87
|
}
|
|
92
88
|
}
|
|
@@ -105,7 +101,7 @@ export class NodeOperationsHelper {
|
|
|
105
101
|
return executionInfo;
|
|
106
102
|
}
|
|
107
103
|
catch (error) {
|
|
108
|
-
logger.error(
|
|
104
|
+
logger.error('Failed to load node execution info:', error);
|
|
109
105
|
return {};
|
|
110
106
|
}
|
|
111
107
|
}
|
|
@@ -118,7 +114,7 @@ export class NodeOperationsHelper {
|
|
|
118
114
|
// Handle both old format (with type: "node") and new format (direct NodeMetadata)
|
|
119
115
|
let nodeType;
|
|
120
116
|
let nodeData;
|
|
121
|
-
if (parsedData.type ===
|
|
117
|
+
if (parsedData.type === 'node') {
|
|
122
118
|
// Old format from sidebar
|
|
123
119
|
nodeType = parsedData.nodeData.metadata;
|
|
124
120
|
nodeData = parsedData.nodeData;
|
|
@@ -129,7 +125,7 @@ export class NodeOperationsHelper {
|
|
|
129
125
|
nodeData = {
|
|
130
126
|
label: nodeType.name,
|
|
131
127
|
config: extractConfigDefaults(nodeType.configSchema),
|
|
132
|
-
metadata: nodeType
|
|
128
|
+
metadata: nodeType
|
|
133
129
|
};
|
|
134
130
|
}
|
|
135
131
|
// Generate node ID based on node type and existing nodes
|
|
@@ -138,18 +134,18 @@ export class NodeOperationsHelper {
|
|
|
138
134
|
// UniversalNode component handles internal switching based on metadata and config
|
|
139
135
|
const newNode = {
|
|
140
136
|
id: newNodeId,
|
|
141
|
-
type:
|
|
137
|
+
type: 'universalNode',
|
|
142
138
|
position, // Use the position calculated from the drop event
|
|
143
139
|
deletable: true,
|
|
144
140
|
data: {
|
|
145
141
|
...nodeData,
|
|
146
|
-
nodeId: newNodeId
|
|
147
|
-
}
|
|
142
|
+
nodeId: newNodeId // Use the same ID
|
|
143
|
+
}
|
|
148
144
|
};
|
|
149
145
|
return newNode;
|
|
150
146
|
}
|
|
151
147
|
catch (error) {
|
|
152
|
-
logger.error(
|
|
148
|
+
logger.error('Error parsing node data:', error);
|
|
153
149
|
return null;
|
|
154
150
|
}
|
|
155
151
|
}
|
|
@@ -164,12 +160,12 @@ export class WorkflowOperationsHelper {
|
|
|
164
160
|
static generateMetadata(existingMetadata) {
|
|
165
161
|
const now = new Date().toISOString();
|
|
166
162
|
return {
|
|
167
|
-
version:
|
|
163
|
+
version: '1.0.0',
|
|
168
164
|
createdAt: now,
|
|
169
165
|
...(existingMetadata ?? {}),
|
|
170
166
|
updatedAt: now,
|
|
171
167
|
versionId: `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
|
|
172
|
-
updateNumber: (existingMetadata?.updateNumber || 0) + 1
|
|
168
|
+
updateNumber: (existingMetadata?.updateNumber || 0) + 1
|
|
173
169
|
};
|
|
174
170
|
}
|
|
175
171
|
/**
|
|
@@ -180,7 +176,7 @@ export class WorkflowOperationsHelper {
|
|
|
180
176
|
...workflow,
|
|
181
177
|
nodes,
|
|
182
178
|
edges,
|
|
183
|
-
metadata: this.generateMetadata(workflow.metadata)
|
|
179
|
+
metadata: this.generateMetadata(workflow.metadata)
|
|
184
180
|
};
|
|
185
181
|
}
|
|
186
182
|
/**
|
|
@@ -191,7 +187,7 @@ export class WorkflowOperationsHelper {
|
|
|
191
187
|
...workflow,
|
|
192
188
|
nodes: [],
|
|
193
189
|
edges: [],
|
|
194
|
-
metadata: this.generateMetadata(workflow.metadata)
|
|
190
|
+
metadata: this.generateMetadata(workflow.metadata)
|
|
195
191
|
};
|
|
196
192
|
}
|
|
197
193
|
/**
|
|
@@ -203,10 +199,10 @@ export class WorkflowOperationsHelper {
|
|
|
203
199
|
nodes: workflow.nodes.map((node) => node.id === nodeId
|
|
204
200
|
? {
|
|
205
201
|
...node,
|
|
206
|
-
data: { ...node.data, config: { ...newConfig } }
|
|
202
|
+
data: { ...node.data, config: { ...newConfig } }
|
|
207
203
|
}
|
|
208
204
|
: node),
|
|
209
|
-
metadata: this.generateMetadata(workflow.metadata)
|
|
205
|
+
metadata: this.generateMetadata(workflow.metadata)
|
|
210
206
|
};
|
|
211
207
|
}
|
|
212
208
|
/**
|
|
@@ -216,7 +212,7 @@ export class WorkflowOperationsHelper {
|
|
|
216
212
|
return {
|
|
217
213
|
...workflow,
|
|
218
214
|
nodes: [...workflow.nodes, node],
|
|
219
|
-
metadata: this.generateMetadata(workflow.metadata)
|
|
215
|
+
metadata: this.generateMetadata(workflow.metadata)
|
|
220
216
|
};
|
|
221
217
|
}
|
|
222
218
|
/**
|
|
@@ -224,7 +220,7 @@ export class WorkflowOperationsHelper {
|
|
|
224
220
|
*/
|
|
225
221
|
static async saveWorkflow(workflow) {
|
|
226
222
|
if (!workflow) {
|
|
227
|
-
logger.warn(
|
|
223
|
+
logger.warn('No workflow data available to save');
|
|
228
224
|
return null;
|
|
229
225
|
}
|
|
230
226
|
try {
|
|
@@ -240,14 +236,14 @@ export class WorkflowOperationsHelper {
|
|
|
240
236
|
}
|
|
241
237
|
const workflowToSave = {
|
|
242
238
|
id: workflowId,
|
|
243
|
-
name: workflow.name ||
|
|
239
|
+
name: workflow.name || 'Untitled Workflow',
|
|
244
240
|
nodes: workflow.nodes || [],
|
|
245
241
|
edges: workflow.edges || [],
|
|
246
242
|
metadata: {
|
|
247
|
-
version:
|
|
243
|
+
version: '1.0.0',
|
|
248
244
|
createdAt: workflow.metadata?.createdAt || new Date().toISOString(),
|
|
249
|
-
updatedAt: new Date().toISOString()
|
|
250
|
-
}
|
|
245
|
+
updatedAt: new Date().toISOString()
|
|
246
|
+
}
|
|
251
247
|
};
|
|
252
248
|
const savedWorkflow = await workflowApi.saveWorkflow(workflowToSave);
|
|
253
249
|
// Update the workflow ID if it changed (new workflow)
|
|
@@ -258,14 +254,14 @@ export class WorkflowOperationsHelper {
|
|
|
258
254
|
name: workflowToSave.name,
|
|
259
255
|
metadata: {
|
|
260
256
|
...workflowToSave.metadata,
|
|
261
|
-
...savedWorkflow.metadata
|
|
262
|
-
}
|
|
257
|
+
...savedWorkflow.metadata
|
|
258
|
+
}
|
|
263
259
|
});
|
|
264
260
|
}
|
|
265
261
|
return savedWorkflow;
|
|
266
262
|
}
|
|
267
263
|
catch (error) {
|
|
268
|
-
logger.error(
|
|
264
|
+
logger.error('Failed to save workflow:', error);
|
|
269
265
|
throw error;
|
|
270
266
|
}
|
|
271
267
|
}
|
|
@@ -274,26 +270,26 @@ export class WorkflowOperationsHelper {
|
|
|
274
270
|
*/
|
|
275
271
|
static exportWorkflow(workflow) {
|
|
276
272
|
if (!workflow) {
|
|
277
|
-
logger.warn(
|
|
273
|
+
logger.warn('No workflow data available to export');
|
|
278
274
|
return;
|
|
279
275
|
}
|
|
280
276
|
// Use the same ID logic as saveWorkflow
|
|
281
277
|
const workflowId = workflow.id || uuidv4();
|
|
282
278
|
const workflowToExport = {
|
|
283
279
|
id: workflowId,
|
|
284
|
-
name: workflow.name ||
|
|
280
|
+
name: workflow.name || 'Untitled Workflow',
|
|
285
281
|
nodes: workflow.nodes || [],
|
|
286
282
|
edges: workflow.edges || [],
|
|
287
283
|
metadata: {
|
|
288
|
-
version:
|
|
284
|
+
version: '1.0.0',
|
|
289
285
|
createdAt: workflow.metadata?.createdAt || new Date().toISOString(),
|
|
290
|
-
updatedAt: new Date().toISOString()
|
|
291
|
-
}
|
|
286
|
+
updatedAt: new Date().toISOString()
|
|
287
|
+
}
|
|
292
288
|
};
|
|
293
289
|
const dataStr = JSON.stringify(workflowToExport, null, 2);
|
|
294
|
-
const dataBlob = new Blob([dataStr], { type:
|
|
290
|
+
const dataBlob = new Blob([dataStr], { type: 'application/json' });
|
|
295
291
|
const url = URL.createObjectURL(dataBlob);
|
|
296
|
-
const link = document.createElement(
|
|
292
|
+
const link = document.createElement('a');
|
|
297
293
|
link.href = url;
|
|
298
294
|
link.download = `${workflowToExport.name}.json`;
|
|
299
295
|
link.click();
|
|
@@ -312,8 +308,8 @@ export class WorkflowOperationsHelper {
|
|
|
312
308
|
if (!workflow) {
|
|
313
309
|
return {
|
|
314
310
|
valid: false,
|
|
315
|
-
errors: [
|
|
316
|
-
warnings: []
|
|
311
|
+
errors: ['No workflow data available to export'],
|
|
312
|
+
warnings: []
|
|
317
313
|
};
|
|
318
314
|
}
|
|
319
315
|
// Convert to StandardWorkflow first
|
|
@@ -328,11 +324,11 @@ export class WorkflowOperationsHelper {
|
|
|
328
324
|
const agentSpecAdapter = new AgentSpecAdapter();
|
|
329
325
|
const agentSpecJson = agentSpecAdapter.exportJSON(standardWorkflow);
|
|
330
326
|
// Trigger download
|
|
331
|
-
const dataBlob = new Blob([agentSpecJson], { type:
|
|
327
|
+
const dataBlob = new Blob([agentSpecJson], { type: 'application/json' });
|
|
332
328
|
const url = URL.createObjectURL(dataBlob);
|
|
333
|
-
const link = document.createElement(
|
|
329
|
+
const link = document.createElement('a');
|
|
334
330
|
link.href = url;
|
|
335
|
-
link.download = `${workflow.name ||
|
|
331
|
+
link.download = `${workflow.name || 'workflow'}-agentspec.json`;
|
|
336
332
|
link.click();
|
|
337
333
|
URL.revokeObjectURL(url);
|
|
338
334
|
return validation;
|
package/dist/index.d.ts
CHANGED
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
*
|
|
30
30
|
* @module flowdrop
|
|
31
31
|
*/
|
|
32
|
-
export * from
|
|
33
|
-
export * from
|
|
34
|
-
export * from
|
|
35
|
-
export * from
|
|
36
|
-
export * from
|
|
37
|
-
export * from
|
|
32
|
+
export * from './core/index.js';
|
|
33
|
+
export * from './form/index.js';
|
|
34
|
+
export * from './display/index.js';
|
|
35
|
+
export * from './playground/index.js';
|
|
36
|
+
export * from './editor/index.js';
|
|
37
|
+
export * from './settings/index.js';
|
package/dist/index.js
CHANGED
|
@@ -39,26 +39,26 @@
|
|
|
39
39
|
// ============================================================================
|
|
40
40
|
// Core Exports (Types & Utilities - No Heavy Dependencies)
|
|
41
41
|
// ============================================================================
|
|
42
|
-
export * from
|
|
42
|
+
export * from './core/index.js';
|
|
43
43
|
// ============================================================================
|
|
44
44
|
// Form Exports
|
|
45
45
|
// ============================================================================
|
|
46
|
-
export * from
|
|
46
|
+
export * from './form/index.js';
|
|
47
47
|
// Note: Heavy form fields (code, markdown) are NOT auto-registered.
|
|
48
48
|
// Users must import from form/code or form/markdown and register explicitly.
|
|
49
49
|
// ============================================================================
|
|
50
50
|
// Display Exports
|
|
51
51
|
// ============================================================================
|
|
52
|
-
export * from
|
|
52
|
+
export * from './display/index.js';
|
|
53
53
|
// ============================================================================
|
|
54
54
|
// Playground Exports
|
|
55
55
|
// ============================================================================
|
|
56
|
-
export * from
|
|
56
|
+
export * from './playground/index.js';
|
|
57
57
|
// ============================================================================
|
|
58
58
|
// Editor Exports (includes @xyflow/svelte and auto-registers builtin nodes)
|
|
59
59
|
// ============================================================================
|
|
60
|
-
export * from
|
|
60
|
+
export * from './editor/index.js';
|
|
61
61
|
// ============================================================================
|
|
62
62
|
// Settings Exports (stores, services, components, types)
|
|
63
63
|
// ============================================================================
|
|
64
|
-
export * from
|
|
64
|
+
export * from './settings/index.js';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
// Mock browser check
|
|
7
|
-
export const browser = typeof window !==
|
|
7
|
+
export const browser = typeof window !== 'undefined';
|
|
8
8
|
|
|
9
9
|
// Mock dev check
|
|
10
10
|
export const dev = false;
|
|
@@ -13,4 +13,4 @@ export const dev = false;
|
|
|
13
13
|
export const building = false;
|
|
14
14
|
|
|
15
15
|
// Mock version
|
|
16
|
-
export const version =
|
|
16
|
+
export const version = '1.0.0';
|
package/dist/mocks/app-forms.js
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* Provides minimal implementations for SvelteKit navigation in library context
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { logger } from
|
|
6
|
+
import { logger } from '../utils/logger.js';
|
|
7
7
|
|
|
8
8
|
// Mock goto function
|
|
9
9
|
export const goto = async () => {
|
|
10
10
|
// No-op for library context
|
|
11
|
-
logger.warn(
|
|
11
|
+
logger.warn('Navigation not available in library context');
|
|
12
12
|
};
|
|
13
13
|
|
|
14
14
|
// Mock invalidate function
|
package/dist/mocks/app-stores.js
CHANGED
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
* Provides minimal implementations for SvelteKit stores in library context
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { writable } from
|
|
6
|
+
import { writable } from 'svelte/store';
|
|
7
7
|
|
|
8
8
|
// Mock page store
|
|
9
9
|
export const page = writable({
|
|
10
|
-
url: new URL(
|
|
10
|
+
url: new URL('http://localhost:3000'),
|
|
11
11
|
params: {},
|
|
12
12
|
route: { id: null },
|
|
13
13
|
status: 200,
|
|
14
14
|
error: null,
|
|
15
15
|
data: {},
|
|
16
|
-
form: null
|
|
16
|
+
form: null
|
|
17
17
|
});
|
|
18
18
|
|
|
19
19
|
// Mock navigating store
|