@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
|
@@ -25,13 +25,13 @@
|
|
|
25
25
|
* if (!result.valid) console.error(result.errors);
|
|
26
26
|
* ```
|
|
27
27
|
*/
|
|
28
|
-
export { AgentSpecAdapter } from
|
|
29
|
-
export { AgentSpecAgentAdapter } from
|
|
30
|
-
export type { AgentConfig, AgentSpecImportResult } from
|
|
31
|
-
export { getAgentSpecNodeMetadata, getDefaultAgentSpecNodeTypes, createAgentSpecNodeMetadata
|
|
32
|
-
export { getComponentTypeDefaults, extractComponentType, isAgentSpecNodeId, AGENTSPEC_NAMESPACE
|
|
33
|
-
export type { ComponentTypeDefaults } from
|
|
34
|
-
export { validateForAgentSpecExport, validateAgentSpecFlow
|
|
35
|
-
export type { AgentSpecValidationResult } from
|
|
36
|
-
export { computeAutoLayout } from
|
|
37
|
-
export type { AutoLayoutConfig } from
|
|
28
|
+
export { AgentSpecAdapter } from './AgentSpecAdapter.js';
|
|
29
|
+
export { AgentSpecAgentAdapter } from './agentAdapter.js';
|
|
30
|
+
export type { AgentConfig, AgentSpecImportResult } from './agentAdapter.js';
|
|
31
|
+
export { getAgentSpecNodeMetadata, getDefaultAgentSpecNodeTypes, createAgentSpecNodeMetadata } from './defaultNodeTypes.js';
|
|
32
|
+
export { getComponentTypeDefaults, extractComponentType, isAgentSpecNodeId, AGENTSPEC_NAMESPACE } from './componentTypeDefaults.js';
|
|
33
|
+
export type { ComponentTypeDefaults } from './componentTypeDefaults.js';
|
|
34
|
+
export { validateForAgentSpecExport, validateAgentSpecFlow } from './validator.js';
|
|
35
|
+
export type { AgentSpecValidationResult } from './validator.js';
|
|
36
|
+
export { computeAutoLayout } from './autoLayout.js';
|
|
37
|
+
export type { AutoLayoutConfig } from './autoLayout.js';
|
|
@@ -26,14 +26,14 @@
|
|
|
26
26
|
* ```
|
|
27
27
|
*/
|
|
28
28
|
// Core adapter
|
|
29
|
-
export { AgentSpecAdapter } from
|
|
29
|
+
export { AgentSpecAdapter } from './AgentSpecAdapter.js';
|
|
30
30
|
// Agent-level adapter (wraps flow with agent/tools/LLM config)
|
|
31
|
-
export { AgentSpecAgentAdapter } from
|
|
31
|
+
export { AgentSpecAgentAdapter } from './agentAdapter.js';
|
|
32
32
|
// Default node types (optional starter templates — users can provide their own)
|
|
33
|
-
export { getAgentSpecNodeMetadata, getDefaultAgentSpecNodeTypes, createAgentSpecNodeMetadata
|
|
33
|
+
export { getAgentSpecNodeMetadata, getDefaultAgentSpecNodeTypes, createAgentSpecNodeMetadata } from './defaultNodeTypes.js';
|
|
34
34
|
// Component type defaults (adapter infrastructure)
|
|
35
|
-
export { getComponentTypeDefaults, extractComponentType, isAgentSpecNodeId, AGENTSPEC_NAMESPACE
|
|
35
|
+
export { getComponentTypeDefaults, extractComponentType, isAgentSpecNodeId, AGENTSPEC_NAMESPACE } from './componentTypeDefaults.js';
|
|
36
36
|
// Validation
|
|
37
|
-
export { validateForAgentSpecExport, validateAgentSpecFlow
|
|
37
|
+
export { validateForAgentSpecExport, validateAgentSpecFlow } from './validator.js';
|
|
38
38
|
// Auto-layout
|
|
39
|
-
export { computeAutoLayout } from
|
|
39
|
+
export { computeAutoLayout } from './autoLayout.js';
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Validates workflows against Agent Spec constraints for export,
|
|
5
5
|
* and validates imported Agent Spec documents for correctness.
|
|
6
6
|
*/
|
|
7
|
-
import type { AgentSpecFlow } from
|
|
8
|
-
import type { StandardWorkflow } from
|
|
7
|
+
import type { AgentSpecFlow } from '../../types/agentspec.js';
|
|
8
|
+
import type { StandardWorkflow } from '../WorkflowAdapter.js';
|
|
9
9
|
/** Validation result */
|
|
10
10
|
export interface AgentSpecValidationResult {
|
|
11
11
|
valid: boolean;
|
|
@@ -16,38 +16,36 @@ export function validateForAgentSpecExport(workflow) {
|
|
|
16
16
|
const errors = [];
|
|
17
17
|
const warnings = [];
|
|
18
18
|
if (workflow.nodes.length === 0) {
|
|
19
|
-
errors.push(
|
|
19
|
+
errors.push('Workflow has no nodes');
|
|
20
20
|
return { valid: false, errors, warnings };
|
|
21
21
|
}
|
|
22
22
|
// Check for start nodes
|
|
23
23
|
const startNodes = workflow.nodes.filter((n) => {
|
|
24
|
-
const ext = n.data.metadata.extensions?.[
|
|
25
|
-
if (ext ===
|
|
24
|
+
const ext = n.data.metadata.extensions?.['agentspec:component_type'];
|
|
25
|
+
if (ext === 'start_node')
|
|
26
26
|
return true;
|
|
27
|
-
return
|
|
28
|
-
n.data.metadata.category === "triggers");
|
|
27
|
+
return n.data.metadata.type === 'terminal' && n.data.metadata.category === 'triggers';
|
|
29
28
|
});
|
|
30
29
|
if (startNodes.length === 0) {
|
|
31
|
-
errors.push(
|
|
30
|
+
errors.push('Agent Spec requires exactly one StartNode. No start node found (terminal node with triggers category).');
|
|
32
31
|
}
|
|
33
32
|
else if (startNodes.length > 1) {
|
|
34
|
-
errors.push(`Agent Spec requires exactly one StartNode. Found ${startNodes.length}: ${startNodes.map((n) => n.id).join(
|
|
33
|
+
errors.push(`Agent Spec requires exactly one StartNode. Found ${startNodes.length}: ${startNodes.map((n) => n.id).join(', ')}`);
|
|
35
34
|
}
|
|
36
35
|
// Check for end nodes
|
|
37
36
|
const endNodes = workflow.nodes.filter((n) => {
|
|
38
|
-
const ext = n.data.metadata.extensions?.[
|
|
39
|
-
if (ext ===
|
|
37
|
+
const ext = n.data.metadata.extensions?.['agentspec:component_type'];
|
|
38
|
+
if (ext === 'end_node')
|
|
40
39
|
return true;
|
|
41
|
-
return
|
|
42
|
-
n.data.metadata.category === "outputs");
|
|
40
|
+
return n.data.metadata.type === 'terminal' && n.data.metadata.category === 'outputs';
|
|
43
41
|
});
|
|
44
42
|
if (endNodes.length === 0) {
|
|
45
|
-
errors.push(
|
|
43
|
+
errors.push('Agent Spec requires at least one EndNode. No end node found (terminal node with outputs category).');
|
|
46
44
|
}
|
|
47
45
|
// Check gateway nodes have branches
|
|
48
46
|
const gatewayNodes = workflow.nodes.filter((n) => {
|
|
49
|
-
const ext = n.data.metadata.extensions?.[
|
|
50
|
-
return ext ===
|
|
47
|
+
const ext = n.data.metadata.extensions?.['agentspec:component_type'];
|
|
48
|
+
return ext === 'branching_node' || n.data.metadata.type === 'gateway';
|
|
51
49
|
});
|
|
52
50
|
for (const gw of gatewayNodes) {
|
|
53
51
|
const branches = gw.data.config?.branches;
|
|
@@ -63,7 +61,7 @@ export function validateForAgentSpecExport(workflow) {
|
|
|
63
61
|
}
|
|
64
62
|
const disconnected = workflow.nodes.filter((n) => !connectedNodes.has(n.id));
|
|
65
63
|
if (disconnected.length > 0) {
|
|
66
|
-
warnings.push(`${disconnected.length} node(s) are not connected to any edges: ${disconnected.map((n) => n.data.label || n.id).join(
|
|
64
|
+
warnings.push(`${disconnected.length} node(s) are not connected to any edges: ${disconnected.map((n) => n.data.label || n.id).join(', ')}`);
|
|
67
65
|
}
|
|
68
66
|
return { valid: errors.length === 0, errors, warnings };
|
|
69
67
|
}
|
|
@@ -81,27 +79,27 @@ export function validateAgentSpecFlow(flow) {
|
|
|
81
79
|
const errors = [];
|
|
82
80
|
const warnings = [];
|
|
83
81
|
if (!flow.nodes || flow.nodes.length === 0) {
|
|
84
|
-
errors.push(
|
|
82
|
+
errors.push('Flow has no nodes');
|
|
85
83
|
return { valid: false, errors, warnings };
|
|
86
84
|
}
|
|
87
85
|
// Build node name set
|
|
88
86
|
const nodeNames = new Set(flow.nodes.map((n) => n.name));
|
|
89
87
|
// Check start_node exists
|
|
90
88
|
if (!flow.start_node) {
|
|
91
|
-
errors.push(
|
|
89
|
+
errors.push('Flow is missing start_node reference');
|
|
92
90
|
}
|
|
93
91
|
else if (!nodeNames.has(flow.start_node)) {
|
|
94
92
|
errors.push(`start_node "${flow.start_node}" does not match any node name`);
|
|
95
93
|
}
|
|
96
94
|
// Check start_node is actually a start_node type
|
|
97
95
|
const startNode = flow.nodes.find((n) => n.name === flow.start_node);
|
|
98
|
-
if (startNode && startNode.component_type !==
|
|
96
|
+
if (startNode && startNode.component_type !== 'start_node') {
|
|
99
97
|
warnings.push(`start_node "${flow.start_node}" has component_type "${startNode.component_type}" instead of "start_node"`);
|
|
100
98
|
}
|
|
101
99
|
// Check for end nodes
|
|
102
|
-
const endNodes = flow.nodes.filter((n) => n.component_type ===
|
|
100
|
+
const endNodes = flow.nodes.filter((n) => n.component_type === 'end_node');
|
|
103
101
|
if (endNodes.length === 0) {
|
|
104
|
-
warnings.push(
|
|
102
|
+
warnings.push('Flow has no EndNode. Consider adding one for clarity.');
|
|
105
103
|
}
|
|
106
104
|
// Check for duplicate node names
|
|
107
105
|
const nameCount = new Map();
|
|
@@ -124,7 +122,7 @@ export function validateAgentSpecFlow(flow) {
|
|
|
124
122
|
// Validate from_branch references
|
|
125
123
|
if (edge.from_branch) {
|
|
126
124
|
const fromNode = flow.nodes.find((n) => n.name === edge.from_node);
|
|
127
|
-
if (fromNode && fromNode.component_type ===
|
|
125
|
+
if (fromNode && fromNode.component_type === 'branching_node') {
|
|
128
126
|
const branchingNode = fromNode;
|
|
129
127
|
if (!branchingNode.branches?.some((b) => b.name === edge.from_branch)) {
|
|
130
128
|
errors.push(`Control flow edge "${edge.name}" references branch "${edge.from_branch}" which doesn't exist on node "${edge.from_node}"`);
|
|
@@ -160,7 +158,7 @@ export function validateAgentSpecFlow(flow) {
|
|
|
160
158
|
}
|
|
161
159
|
// Validate branching nodes have branches
|
|
162
160
|
for (const node of flow.nodes) {
|
|
163
|
-
if (node.component_type ===
|
|
161
|
+
if (node.component_type === 'branching_node') {
|
|
164
162
|
const bn = node;
|
|
165
163
|
if (!bn.branches || bn.branches.length === 0) {
|
|
166
164
|
warnings.push(`BranchingNode "${node.name}" has no branches defined`);
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @module api/enhanced-client
|
|
7
7
|
*/
|
|
8
|
-
import type { NodeMetadata, Workflow, ExecutionResult } from
|
|
9
|
-
import type { EndpointConfig } from
|
|
10
|
-
import type { AuthProvider } from
|
|
8
|
+
import type { NodeMetadata, Workflow, ExecutionResult } from '../types/index.js';
|
|
9
|
+
import type { EndpointConfig } from '../config/endpoints.js';
|
|
10
|
+
import type { AuthProvider } from '../types/auth.js';
|
|
11
11
|
/**
|
|
12
12
|
* API error with additional context
|
|
13
13
|
*/
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @module api/enhanced-client
|
|
7
7
|
*/
|
|
8
|
-
import { buildEndpointUrl, getEndpointMethod, getEndpointHeaders
|
|
9
|
-
import { NoAuthProvider } from
|
|
10
|
-
import { getApiSettings } from
|
|
11
|
-
import { logger } from
|
|
12
|
-
import { DEFAULT_API_TIMEOUT_MS } from
|
|
8
|
+
import { buildEndpointUrl, getEndpointMethod, getEndpointHeaders } from '../config/endpoints.js';
|
|
9
|
+
import { NoAuthProvider } from '../types/auth.js';
|
|
10
|
+
import { getApiSettings } from '../stores/settingsStore.svelte.js';
|
|
11
|
+
import { logger } from '../utils/logger.js';
|
|
12
|
+
import { DEFAULT_API_TIMEOUT_MS } from '../config/constants.js';
|
|
13
13
|
/**
|
|
14
14
|
* API error with additional context
|
|
15
15
|
*/
|
|
@@ -22,7 +22,7 @@ export class ApiError extends Error {
|
|
|
22
22
|
operation;
|
|
23
23
|
constructor(message, status, operation, errorData = {}) {
|
|
24
24
|
super(message);
|
|
25
|
-
this.name =
|
|
25
|
+
this.name = 'ApiError';
|
|
26
26
|
this.status = status;
|
|
27
27
|
this.operation = operation;
|
|
28
28
|
this.errorData = errorData;
|
|
@@ -67,7 +67,7 @@ export class EnhancedFlowDropApiClient {
|
|
|
67
67
|
* @param options - Additional fetch options
|
|
68
68
|
* @param operation - Description of the operation (for error messages)
|
|
69
69
|
*/
|
|
70
|
-
async request(endpointKey, endpointPath, params, options = {}, operation =
|
|
70
|
+
async request(endpointKey, endpointPath, params, options = {}, operation = 'API request') {
|
|
71
71
|
const url = buildEndpointUrl(this.config, endpointPath, params);
|
|
72
72
|
const method = options.method ?? getEndpointMethod(this.config, endpointKey);
|
|
73
73
|
const configHeaders = getEndpointHeaders(this.config, endpointKey);
|
|
@@ -79,7 +79,7 @@ export class EnhancedFlowDropApiClient {
|
|
|
79
79
|
const headers = {
|
|
80
80
|
...configHeaders,
|
|
81
81
|
...authHeaders,
|
|
82
|
-
...options.headers
|
|
82
|
+
...options.headers
|
|
83
83
|
};
|
|
84
84
|
// Create AbortController for timeout
|
|
85
85
|
const controller = new AbortController();
|
|
@@ -89,7 +89,7 @@ export class EnhancedFlowDropApiClient {
|
|
|
89
89
|
method,
|
|
90
90
|
headers,
|
|
91
91
|
signal: controller.signal,
|
|
92
|
-
...options
|
|
92
|
+
...options
|
|
93
93
|
};
|
|
94
94
|
let lastError = null;
|
|
95
95
|
// Determine retry settings: user settings override config
|
|
@@ -112,25 +112,24 @@ export class EnhancedFlowDropApiClient {
|
|
|
112
112
|
fetchConfig.headers = {
|
|
113
113
|
...configHeaders,
|
|
114
114
|
...newAuthHeaders,
|
|
115
|
-
...options.headers
|
|
115
|
+
...options.headers
|
|
116
116
|
};
|
|
117
117
|
continue; // Retry with new headers
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
-
throw new ApiError(
|
|
120
|
+
throw new ApiError('Unauthorized', 401, operation, {});
|
|
121
121
|
}
|
|
122
122
|
// Handle 403 Forbidden
|
|
123
123
|
if (response.status === 403) {
|
|
124
124
|
if (this.authProvider.onForbidden) {
|
|
125
125
|
await this.authProvider.onForbidden();
|
|
126
126
|
}
|
|
127
|
-
throw new ApiError(
|
|
127
|
+
throw new ApiError('Forbidden', 403, operation, {});
|
|
128
128
|
}
|
|
129
129
|
// Handle other errors
|
|
130
130
|
if (!response.ok) {
|
|
131
131
|
const errorData = await response.json().catch(() => ({}));
|
|
132
|
-
throw new ApiError(errorData.error ??
|
|
133
|
-
`HTTP ${response.status}: ${response.statusText}`, response.status, operation, errorData);
|
|
132
|
+
throw new ApiError(errorData.error ?? `HTTP ${response.status}: ${response.statusText}`, response.status, operation, errorData);
|
|
134
133
|
}
|
|
135
134
|
const data = await response.json();
|
|
136
135
|
return data;
|
|
@@ -139,9 +138,9 @@ export class EnhancedFlowDropApiClient {
|
|
|
139
138
|
// Clear timeout on error
|
|
140
139
|
clearTimeout(timeoutId);
|
|
141
140
|
// Handle abort (timeout)
|
|
142
|
-
if (error instanceof Error && error.name ===
|
|
141
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
143
142
|
lastError = new ApiError(`Request timeout after ${timeoutMs}ms`, 0, operation, {
|
|
144
|
-
timeout: true
|
|
143
|
+
timeout: true
|
|
145
144
|
});
|
|
146
145
|
// Don't retry on timeout - it's a client-side timeout
|
|
147
146
|
logger.error(`API request timed out after ${timeoutMs}ms:`, lastError);
|
|
@@ -163,7 +162,7 @@ export class EnhancedFlowDropApiClient {
|
|
|
163
162
|
}
|
|
164
163
|
// Wait before retry with exponential backoff
|
|
165
164
|
const baseDelay = this.config.retry?.delay ?? 1000;
|
|
166
|
-
const backoffDelay = this.config.retry?.backoff ===
|
|
165
|
+
const backoffDelay = this.config.retry?.backoff === 'exponential'
|
|
167
166
|
? baseDelay * Math.pow(2, attempt - 1)
|
|
168
167
|
: baseDelay;
|
|
169
168
|
await new Promise((resolve) => setTimeout(resolve, backoffDelay));
|
|
@@ -198,9 +197,9 @@ export class EnhancedFlowDropApiClient {
|
|
|
198
197
|
* Fetch all available node types
|
|
199
198
|
*/
|
|
200
199
|
async getAvailableNodes() {
|
|
201
|
-
const response = await this.request(
|
|
200
|
+
const response = await this.request('nodes.list', this.config.endpoints.nodes.list, undefined, {}, 'fetch available nodes');
|
|
202
201
|
if (!response.success || !response.data) {
|
|
203
|
-
throw new Error(response.error ??
|
|
202
|
+
throw new Error(response.error ?? 'Failed to fetch available nodes');
|
|
204
203
|
}
|
|
205
204
|
return response.data;
|
|
206
205
|
}
|
|
@@ -208,9 +207,9 @@ export class EnhancedFlowDropApiClient {
|
|
|
208
207
|
* Fetch nodes filtered by category
|
|
209
208
|
*/
|
|
210
209
|
async getNodesByCategory(category) {
|
|
211
|
-
const response = await this.request(
|
|
210
|
+
const response = await this.request('nodes.byCategory', this.config.endpoints.nodes.byCategory, { category }, {}, 'fetch nodes by category');
|
|
212
211
|
if (!response.success || !response.data) {
|
|
213
|
-
throw new Error(response.error ??
|
|
212
|
+
throw new Error(response.error ?? 'Failed to fetch nodes by category');
|
|
214
213
|
}
|
|
215
214
|
return response.data;
|
|
216
215
|
}
|
|
@@ -218,9 +217,9 @@ export class EnhancedFlowDropApiClient {
|
|
|
218
217
|
* Fetch metadata for a specific node type
|
|
219
218
|
*/
|
|
220
219
|
async getNodeMetadata(nodeId) {
|
|
221
|
-
const response = await this.request(
|
|
220
|
+
const response = await this.request('nodes.metadata', this.config.endpoints.nodes.metadata, { id: nodeId }, {}, 'fetch node metadata');
|
|
222
221
|
if (!response.success || !response.data) {
|
|
223
|
-
throw new Error(response.error ??
|
|
222
|
+
throw new Error(response.error ?? 'Failed to fetch node metadata');
|
|
224
223
|
}
|
|
225
224
|
return response.data;
|
|
226
225
|
}
|
|
@@ -231,12 +230,12 @@ export class EnhancedFlowDropApiClient {
|
|
|
231
230
|
* Save a new workflow
|
|
232
231
|
*/
|
|
233
232
|
async saveWorkflow(workflow) {
|
|
234
|
-
const response = await this.request(
|
|
235
|
-
method:
|
|
236
|
-
body: JSON.stringify(workflow)
|
|
237
|
-
},
|
|
233
|
+
const response = await this.request('workflows.create', this.config.endpoints.workflows.create, undefined, {
|
|
234
|
+
method: 'POST',
|
|
235
|
+
body: JSON.stringify(workflow)
|
|
236
|
+
}, 'save workflow');
|
|
238
237
|
if (!response.success || !response.data) {
|
|
239
|
-
throw new Error(response.error ??
|
|
238
|
+
throw new Error(response.error ?? 'Failed to save workflow');
|
|
240
239
|
}
|
|
241
240
|
return response.data;
|
|
242
241
|
}
|
|
@@ -244,12 +243,12 @@ export class EnhancedFlowDropApiClient {
|
|
|
244
243
|
* Update an existing workflow
|
|
245
244
|
*/
|
|
246
245
|
async updateWorkflow(workflowId, workflow) {
|
|
247
|
-
const response = await this.request(
|
|
248
|
-
method:
|
|
249
|
-
body: JSON.stringify(workflow)
|
|
250
|
-
},
|
|
246
|
+
const response = await this.request('workflows.update', this.config.endpoints.workflows.update, { id: workflowId }, {
|
|
247
|
+
method: 'PUT',
|
|
248
|
+
body: JSON.stringify(workflow)
|
|
249
|
+
}, 'update workflow');
|
|
251
250
|
if (!response.success || !response.data) {
|
|
252
|
-
throw new Error(response.error ??
|
|
251
|
+
throw new Error(response.error ?? 'Failed to update workflow');
|
|
253
252
|
}
|
|
254
253
|
return response.data;
|
|
255
254
|
}
|
|
@@ -257,9 +256,9 @@ export class EnhancedFlowDropApiClient {
|
|
|
257
256
|
* Load a workflow by ID
|
|
258
257
|
*/
|
|
259
258
|
async loadWorkflow(workflowId) {
|
|
260
|
-
const response = await this.request(
|
|
259
|
+
const response = await this.request('workflows.get', this.config.endpoints.workflows.get, { id: workflowId }, {}, 'load workflow');
|
|
261
260
|
if (!response.success || !response.data) {
|
|
262
|
-
throw new Error(response.error ??
|
|
261
|
+
throw new Error(response.error ?? 'Failed to load workflow');
|
|
263
262
|
}
|
|
264
263
|
return response.data;
|
|
265
264
|
}
|
|
@@ -267,9 +266,9 @@ export class EnhancedFlowDropApiClient {
|
|
|
267
266
|
* List all workflows
|
|
268
267
|
*/
|
|
269
268
|
async listWorkflows() {
|
|
270
|
-
const response = await this.request(
|
|
269
|
+
const response = await this.request('workflows.list', this.config.endpoints.workflows.list, undefined, {}, 'list workflows');
|
|
271
270
|
if (!response.success || !response.data) {
|
|
272
|
-
throw new Error(response.error ??
|
|
271
|
+
throw new Error(response.error ?? 'Failed to list workflows');
|
|
273
272
|
}
|
|
274
273
|
return response.data;
|
|
275
274
|
}
|
|
@@ -277,21 +276,21 @@ export class EnhancedFlowDropApiClient {
|
|
|
277
276
|
* Delete a workflow
|
|
278
277
|
*/
|
|
279
278
|
async deleteWorkflow(workflowId) {
|
|
280
|
-
const response = await this.request(
|
|
279
|
+
const response = await this.request('workflows.delete', this.config.endpoints.workflows.delete, { id: workflowId }, { method: 'DELETE' }, 'delete workflow');
|
|
281
280
|
if (!response.success) {
|
|
282
|
-
throw new Error(response.error ??
|
|
281
|
+
throw new Error(response.error ?? 'Failed to delete workflow');
|
|
283
282
|
}
|
|
284
283
|
}
|
|
285
284
|
/**
|
|
286
285
|
* Validate a workflow
|
|
287
286
|
*/
|
|
288
287
|
async validateWorkflow(workflow) {
|
|
289
|
-
const response = await this.request(
|
|
290
|
-
method:
|
|
291
|
-
body: JSON.stringify(workflow)
|
|
292
|
-
},
|
|
288
|
+
const response = await this.request('workflows.validate', this.config.endpoints.workflows.validate, undefined, {
|
|
289
|
+
method: 'POST',
|
|
290
|
+
body: JSON.stringify(workflow)
|
|
291
|
+
}, 'validate workflow');
|
|
293
292
|
if (!response.success || !response.data) {
|
|
294
|
-
throw new Error(response.error ??
|
|
293
|
+
throw new Error(response.error ?? 'Failed to validate workflow');
|
|
295
294
|
}
|
|
296
295
|
return response.data;
|
|
297
296
|
}
|
|
@@ -299,9 +298,9 @@ export class EnhancedFlowDropApiClient {
|
|
|
299
298
|
* Export a workflow as JSON string
|
|
300
299
|
*/
|
|
301
300
|
async exportWorkflow(workflowId) {
|
|
302
|
-
const response = await this.request(
|
|
301
|
+
const response = await this.request('workflows.export', this.config.endpoints.workflows.export, { id: workflowId }, {}, 'export workflow');
|
|
303
302
|
if (!response.success || !response.data) {
|
|
304
|
-
throw new Error(response.error ??
|
|
303
|
+
throw new Error(response.error ?? 'Failed to export workflow');
|
|
305
304
|
}
|
|
306
305
|
return response.data;
|
|
307
306
|
}
|
|
@@ -309,12 +308,12 @@ export class EnhancedFlowDropApiClient {
|
|
|
309
308
|
* Import a workflow from JSON
|
|
310
309
|
*/
|
|
311
310
|
async importWorkflow(workflowJson) {
|
|
312
|
-
const response = await this.request(
|
|
313
|
-
method:
|
|
314
|
-
body: JSON.stringify({ workflow: workflowJson })
|
|
315
|
-
},
|
|
311
|
+
const response = await this.request('workflows.import', this.config.endpoints.workflows.import, undefined, {
|
|
312
|
+
method: 'POST',
|
|
313
|
+
body: JSON.stringify({ workflow: workflowJson })
|
|
314
|
+
}, 'import workflow');
|
|
316
315
|
if (!response.success || !response.data) {
|
|
317
|
-
throw new Error(response.error ??
|
|
316
|
+
throw new Error(response.error ?? 'Failed to import workflow');
|
|
318
317
|
}
|
|
319
318
|
return response.data;
|
|
320
319
|
}
|
|
@@ -325,12 +324,12 @@ export class EnhancedFlowDropApiClient {
|
|
|
325
324
|
* Execute a workflow
|
|
326
325
|
*/
|
|
327
326
|
async executeWorkflow(workflowId, inputs) {
|
|
328
|
-
const response = await this.request(
|
|
329
|
-
method:
|
|
330
|
-
body: JSON.stringify({ inputs })
|
|
331
|
-
},
|
|
327
|
+
const response = await this.request('executions.execute', this.config.endpoints.executions.execute, { id: workflowId }, {
|
|
328
|
+
method: 'POST',
|
|
329
|
+
body: JSON.stringify({ inputs })
|
|
330
|
+
}, 'execute workflow');
|
|
332
331
|
if (!response.success || !response.data) {
|
|
333
|
-
throw new Error(response.error ??
|
|
332
|
+
throw new Error(response.error ?? 'Failed to execute workflow');
|
|
334
333
|
}
|
|
335
334
|
return response.data;
|
|
336
335
|
}
|
|
@@ -338,9 +337,9 @@ export class EnhancedFlowDropApiClient {
|
|
|
338
337
|
* Get execution status
|
|
339
338
|
*/
|
|
340
339
|
async getExecutionStatus(executionId) {
|
|
341
|
-
const response = await this.request(
|
|
340
|
+
const response = await this.request('executions.status', this.config.endpoints.executions.status, { id: executionId }, {}, 'get execution status');
|
|
342
341
|
if (!response.success || !response.data) {
|
|
343
|
-
throw new Error(response.error ??
|
|
342
|
+
throw new Error(response.error ?? 'Failed to get execution status');
|
|
344
343
|
}
|
|
345
344
|
return response.data;
|
|
346
345
|
}
|
|
@@ -348,18 +347,18 @@ export class EnhancedFlowDropApiClient {
|
|
|
348
347
|
* Cancel a running execution
|
|
349
348
|
*/
|
|
350
349
|
async cancelExecution(executionId) {
|
|
351
|
-
const response = await this.request(
|
|
350
|
+
const response = await this.request('executions.cancel', this.config.endpoints.executions.cancel, { id: executionId }, { method: 'POST' }, 'cancel execution');
|
|
352
351
|
if (!response.success) {
|
|
353
|
-
throw new Error(response.error ??
|
|
352
|
+
throw new Error(response.error ?? 'Failed to cancel execution');
|
|
354
353
|
}
|
|
355
354
|
}
|
|
356
355
|
/**
|
|
357
356
|
* Get execution logs
|
|
358
357
|
*/
|
|
359
358
|
async getExecutionLogs(executionId) {
|
|
360
|
-
const response = await this.request(
|
|
359
|
+
const response = await this.request('executions.logs', this.config.endpoints.executions.logs, { id: executionId }, {}, 'get execution logs');
|
|
361
360
|
if (!response.success || !response.data) {
|
|
362
|
-
throw new Error(response.error ??
|
|
361
|
+
throw new Error(response.error ?? 'Failed to get execution logs');
|
|
363
362
|
}
|
|
364
363
|
return response.data;
|
|
365
364
|
}
|
|
@@ -370,9 +369,9 @@ export class EnhancedFlowDropApiClient {
|
|
|
370
369
|
* List available templates
|
|
371
370
|
*/
|
|
372
371
|
async listTemplates() {
|
|
373
|
-
const response = await this.request(
|
|
372
|
+
const response = await this.request('templates.list', this.config.endpoints.templates.list, undefined, {}, 'list templates');
|
|
374
373
|
if (!response.success || !response.data) {
|
|
375
|
-
throw new Error(response.error ??
|
|
374
|
+
throw new Error(response.error ?? 'Failed to list templates');
|
|
376
375
|
}
|
|
377
376
|
return response.data;
|
|
378
377
|
}
|
|
@@ -380,9 +379,9 @@ export class EnhancedFlowDropApiClient {
|
|
|
380
379
|
* Get a template by ID
|
|
381
380
|
*/
|
|
382
381
|
async getTemplate(templateId) {
|
|
383
|
-
const response = await this.request(
|
|
382
|
+
const response = await this.request('templates.get', this.config.endpoints.templates.get, { id: templateId }, {}, 'get template');
|
|
384
383
|
if (!response.success || !response.data) {
|
|
385
|
-
throw new Error(response.error ??
|
|
384
|
+
throw new Error(response.error ?? 'Failed to get template');
|
|
386
385
|
}
|
|
387
386
|
return response.data;
|
|
388
387
|
}
|
|
@@ -393,9 +392,9 @@ export class EnhancedFlowDropApiClient {
|
|
|
393
392
|
* Get system health status
|
|
394
393
|
*/
|
|
395
394
|
async getSystemHealth() {
|
|
396
|
-
const response = await this.request(
|
|
395
|
+
const response = await this.request('system.health', this.config.endpoints.system.health, undefined, {}, 'get system health');
|
|
397
396
|
if (!response.success || !response.data) {
|
|
398
|
-
throw new Error(response.error ??
|
|
397
|
+
throw new Error(response.error ?? 'Failed to get system health');
|
|
399
398
|
}
|
|
400
399
|
return response.data;
|
|
401
400
|
}
|
|
@@ -403,9 +402,9 @@ export class EnhancedFlowDropApiClient {
|
|
|
403
402
|
* Get system configuration
|
|
404
403
|
*/
|
|
405
404
|
async getSystemConfig() {
|
|
406
|
-
const response = await this.request(
|
|
405
|
+
const response = await this.request('system.config', this.config.endpoints.system.config, undefined, {}, 'get system config');
|
|
407
406
|
if (!response.success || !response.data) {
|
|
408
|
-
throw new Error(response.error ??
|
|
407
|
+
throw new Error(response.error ?? 'Failed to get system config');
|
|
409
408
|
}
|
|
410
409
|
return response.data;
|
|
411
410
|
}
|
|
@@ -413,9 +412,9 @@ export class EnhancedFlowDropApiClient {
|
|
|
413
412
|
* Get system version information
|
|
414
413
|
*/
|
|
415
414
|
async getSystemVersion() {
|
|
416
|
-
const response = await this.request(
|
|
415
|
+
const response = await this.request('system.version', this.config.endpoints.system.version, undefined, {}, 'get system version');
|
|
417
416
|
if (!response.success || !response.data) {
|
|
418
|
-
throw new Error(response.error ??
|
|
417
|
+
throw new Error(response.error ?? 'Failed to get system version');
|
|
419
418
|
}
|
|
420
419
|
return response.data;
|
|
421
420
|
}
|
|
@@ -426,6 +425,6 @@ export class EnhancedFlowDropApiClient {
|
|
|
426
425
|
* Fetch pipeline data including job information and status
|
|
427
426
|
*/
|
|
428
427
|
async getPipelineData(pipelineId) {
|
|
429
|
-
return this.request(
|
|
428
|
+
return this.request('pipelines.get', this.config.endpoints.pipelines.get, { id: pipelineId }, {}, 'get pipeline data');
|
|
430
429
|
}
|
|
431
430
|
}
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
*/
|
|
10
10
|
/** Commands that only read workflow state without modifying it */
|
|
11
11
|
const READ_ONLY_COMMANDS = new Set([
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
'list_nodes',
|
|
13
|
+
'list_edges',
|
|
14
|
+
'list_types',
|
|
15
|
+
'info',
|
|
16
|
+
'get_config',
|
|
17
|
+
'help'
|
|
18
18
|
]);
|
|
19
19
|
/**
|
|
20
20
|
* Determine whether a DSL command type is mutating (modifies workflow state).
|
package/dist/chat/index.d.ts
CHANGED
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
* />
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
|
-
export { default as AIChatPanel } from
|
|
24
|
-
export { default as CommandPreview } from
|
|
25
|
-
export { extractCommands } from
|
|
26
|
-
export { isMutatingCommand } from
|
|
27
|
-
export type { ChatMessageRole, ChatHistoryMessage, ChatRequest, ChatResponse, ExtractedCommands, CommandExecutionStatus, CommandPreviewItem
|
|
23
|
+
export { default as AIChatPanel } from '../components/chat/AIChatPanel.svelte';
|
|
24
|
+
export { default as CommandPreview } from '../components/chat/CommandPreview.svelte';
|
|
25
|
+
export { extractCommands } from './responseParser.js';
|
|
26
|
+
export { isMutatingCommand } from './commandClassifier.js';
|
|
27
|
+
export type { ChatMessageRole, ChatHistoryMessage, ChatRequest, ChatResponse, ExtractedCommands, CommandExecutionStatus, CommandPreviewItem } from '../types/chat.js';
|
package/dist/chat/index.js
CHANGED
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
// ============================================================================
|
|
24
24
|
// Chat Components
|
|
25
25
|
// ============================================================================
|
|
26
|
-
export { default as AIChatPanel } from
|
|
27
|
-
export { default as CommandPreview } from
|
|
26
|
+
export { default as AIChatPanel } from '../components/chat/AIChatPanel.svelte';
|
|
27
|
+
export { default as CommandPreview } from '../components/chat/CommandPreview.svelte';
|
|
28
28
|
// ============================================================================
|
|
29
29
|
// Chat Utilities
|
|
30
30
|
// ============================================================================
|
|
31
|
-
export { extractCommands } from
|
|
32
|
-
export { isMutatingCommand } from
|
|
31
|
+
export { extractCommands } from './responseParser.js';
|
|
32
|
+
export { isMutatingCommand } from './commandClassifier.js';
|