@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
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module services/interruptService
|
|
9
9
|
*/
|
|
10
|
-
import { defaultInterruptPollingConfig } from
|
|
11
|
-
import { buildEndpointUrl, getEndpointHeaders } from
|
|
12
|
-
import { getEndpointConfig } from
|
|
13
|
-
import { logger } from
|
|
10
|
+
import { defaultInterruptPollingConfig } from '../types/interrupt.js';
|
|
11
|
+
import { buildEndpointUrl, getEndpointHeaders } from '../config/endpoints.js';
|
|
12
|
+
import { getEndpointConfig } from './api.js';
|
|
13
|
+
import { logger } from '../utils/logger.js';
|
|
14
14
|
/**
|
|
15
15
|
* Interrupt Service class
|
|
16
16
|
*
|
|
@@ -29,8 +29,7 @@ export class InterruptService {
|
|
|
29
29
|
*/
|
|
30
30
|
constructor() {
|
|
31
31
|
this.pollingConfig = { ...defaultInterruptPollingConfig };
|
|
32
|
-
this.currentBackoff =
|
|
33
|
-
this.pollingConfig.interval ?? defaultInterruptPollingConfig.interval;
|
|
32
|
+
this.currentBackoff = this.pollingConfig.interval ?? defaultInterruptPollingConfig.interval;
|
|
34
33
|
}
|
|
35
34
|
/**
|
|
36
35
|
* Get the singleton instance of InterruptService
|
|
@@ -50,8 +49,7 @@ export class InterruptService {
|
|
|
50
49
|
*/
|
|
51
50
|
setPollingConfig(config) {
|
|
52
51
|
this.pollingConfig = { ...this.pollingConfig, ...config };
|
|
53
|
-
this.currentBackoff =
|
|
54
|
-
this.pollingConfig.interval ?? defaultInterruptPollingConfig.interval;
|
|
52
|
+
this.currentBackoff = this.pollingConfig.interval ?? defaultInterruptPollingConfig.interval;
|
|
55
53
|
}
|
|
56
54
|
/**
|
|
57
55
|
* Get the current polling configuration
|
|
@@ -79,10 +77,10 @@ export class InterruptService {
|
|
|
79
77
|
getConfig() {
|
|
80
78
|
const config = getEndpointConfig();
|
|
81
79
|
if (!config) {
|
|
82
|
-
throw new Error(
|
|
80
|
+
throw new Error('Endpoint configuration not set. Call setEndpointConfig() first.');
|
|
83
81
|
}
|
|
84
82
|
if (!config.endpoints.interrupts) {
|
|
85
|
-
throw new Error(
|
|
83
|
+
throw new Error('Interrupt endpoints not configured.');
|
|
86
84
|
}
|
|
87
85
|
return config;
|
|
88
86
|
}
|
|
@@ -95,13 +93,13 @@ export class InterruptService {
|
|
|
95
93
|
*/
|
|
96
94
|
async request(url, options = {}) {
|
|
97
95
|
const config = this.getConfig();
|
|
98
|
-
const headers = getEndpointHeaders(config,
|
|
96
|
+
const headers = getEndpointHeaders(config, 'interrupts');
|
|
99
97
|
const response = await fetch(url, {
|
|
100
98
|
...options,
|
|
101
99
|
headers: {
|
|
102
100
|
...headers,
|
|
103
|
-
...options.headers
|
|
104
|
-
}
|
|
101
|
+
...options.headers
|
|
102
|
+
}
|
|
105
103
|
});
|
|
106
104
|
if (!response.ok) {
|
|
107
105
|
const errorData = await response.json().catch(() => ({}));
|
|
@@ -124,11 +122,11 @@ export class InterruptService {
|
|
|
124
122
|
async getInterrupt(interruptId) {
|
|
125
123
|
const config = this.getConfig();
|
|
126
124
|
const url = buildEndpointUrl(config, config.endpoints.interrupts.get, {
|
|
127
|
-
interruptId
|
|
125
|
+
interruptId
|
|
128
126
|
});
|
|
129
127
|
const response = await this.request(url);
|
|
130
128
|
if (!response.data) {
|
|
131
|
-
throw new Error(
|
|
129
|
+
throw new Error('Interrupt not found');
|
|
132
130
|
}
|
|
133
131
|
return response.data;
|
|
134
132
|
}
|
|
@@ -142,15 +140,15 @@ export class InterruptService {
|
|
|
142
140
|
async resolveInterrupt(interruptId, value) {
|
|
143
141
|
const config = this.getConfig();
|
|
144
142
|
const url = buildEndpointUrl(config, config.endpoints.interrupts.resolve, {
|
|
145
|
-
interruptId
|
|
143
|
+
interruptId
|
|
146
144
|
});
|
|
147
145
|
const resolution = { value };
|
|
148
146
|
const response = await this.request(url, {
|
|
149
|
-
method:
|
|
150
|
-
body: JSON.stringify(resolution)
|
|
147
|
+
method: 'POST',
|
|
148
|
+
body: JSON.stringify(resolution)
|
|
151
149
|
});
|
|
152
150
|
if (!response.data) {
|
|
153
|
-
throw new Error(
|
|
151
|
+
throw new Error('Failed to resolve interrupt: No data returned');
|
|
154
152
|
}
|
|
155
153
|
return response.data;
|
|
156
154
|
}
|
|
@@ -163,13 +161,13 @@ export class InterruptService {
|
|
|
163
161
|
async cancelInterrupt(interruptId) {
|
|
164
162
|
const config = this.getConfig();
|
|
165
163
|
const url = buildEndpointUrl(config, config.endpoints.interrupts.cancel, {
|
|
166
|
-
interruptId
|
|
164
|
+
interruptId
|
|
167
165
|
});
|
|
168
166
|
const response = await this.request(url, {
|
|
169
|
-
method:
|
|
167
|
+
method: 'POST'
|
|
170
168
|
});
|
|
171
169
|
if (!response.data) {
|
|
172
|
-
throw new Error(
|
|
170
|
+
throw new Error('Failed to cancel interrupt: No data returned');
|
|
173
171
|
}
|
|
174
172
|
return response.data;
|
|
175
173
|
}
|
|
@@ -182,7 +180,7 @@ export class InterruptService {
|
|
|
182
180
|
async listSessionInterrupts(sessionId) {
|
|
183
181
|
const config = this.getConfig();
|
|
184
182
|
const url = buildEndpointUrl(config, config.endpoints.interrupts.listBySession, {
|
|
185
|
-
sessionId
|
|
183
|
+
sessionId
|
|
186
184
|
});
|
|
187
185
|
const response = await this.request(url);
|
|
188
186
|
return response.data ?? [];
|
|
@@ -196,7 +194,7 @@ export class InterruptService {
|
|
|
196
194
|
async listPipelineInterrupts(pipelineId) {
|
|
197
195
|
const config = this.getConfig();
|
|
198
196
|
const url = buildEndpointUrl(config, config.endpoints.interrupts.listByPipeline, {
|
|
199
|
-
pipelineId
|
|
197
|
+
pipelineId
|
|
200
198
|
});
|
|
201
199
|
const response = await this.request(url);
|
|
202
200
|
return response.data ?? [];
|
|
@@ -215,32 +213,29 @@ export class InterruptService {
|
|
|
215
213
|
*/
|
|
216
214
|
startPolling(sessionId, callback) {
|
|
217
215
|
if (!this.pollingConfig.enabled) {
|
|
218
|
-
logger.warn(
|
|
216
|
+
logger.warn('[InterruptService] Polling is disabled. Enable via setPollingConfig().');
|
|
219
217
|
return;
|
|
220
218
|
}
|
|
221
219
|
// Stop any existing polling
|
|
222
220
|
this.stopPolling();
|
|
223
221
|
this.pollingSessionId = sessionId;
|
|
224
|
-
this.currentBackoff =
|
|
225
|
-
this.pollingConfig.interval ?? defaultInterruptPollingConfig.interval;
|
|
222
|
+
this.currentBackoff = this.pollingConfig.interval ?? defaultInterruptPollingConfig.interval;
|
|
226
223
|
const poll = async () => {
|
|
227
224
|
if (this.pollingSessionId !== sessionId) {
|
|
228
225
|
return;
|
|
229
226
|
}
|
|
230
227
|
try {
|
|
231
228
|
const interrupts = await this.listSessionInterrupts(sessionId);
|
|
232
|
-
const pendingInterrupts = interrupts.filter((i) => i.status ===
|
|
229
|
+
const pendingInterrupts = interrupts.filter((i) => i.status === 'pending');
|
|
233
230
|
// Reset backoff on successful request
|
|
234
|
-
this.currentBackoff =
|
|
235
|
-
this.pollingConfig.interval ?? defaultInterruptPollingConfig.interval;
|
|
231
|
+
this.currentBackoff = this.pollingConfig.interval ?? defaultInterruptPollingConfig.interval;
|
|
236
232
|
// Call the callback with pending interrupts
|
|
237
233
|
callback(pendingInterrupts);
|
|
238
234
|
}
|
|
239
235
|
catch (error) {
|
|
240
|
-
logger.error(
|
|
236
|
+
logger.error('[InterruptService] Polling error:', error);
|
|
241
237
|
// Exponential backoff on error
|
|
242
|
-
const maxBackoff = this.pollingConfig.maxBackoff ??
|
|
243
|
-
defaultInterruptPollingConfig.maxBackoff;
|
|
238
|
+
const maxBackoff = this.pollingConfig.maxBackoff ?? defaultInterruptPollingConfig.maxBackoff;
|
|
244
239
|
this.currentBackoff = Math.min(this.currentBackoff * 2, maxBackoff);
|
|
245
240
|
}
|
|
246
241
|
// Schedule next poll
|
|
@@ -260,8 +255,7 @@ export class InterruptService {
|
|
|
260
255
|
this.pollingInterval = null;
|
|
261
256
|
}
|
|
262
257
|
this.pollingSessionId = null;
|
|
263
|
-
this.currentBackoff =
|
|
264
|
-
this.pollingConfig.interval ?? defaultInterruptPollingConfig.interval;
|
|
258
|
+
this.currentBackoff = this.pollingConfig.interval ?? defaultInterruptPollingConfig.interval;
|
|
265
259
|
}
|
|
266
260
|
/**
|
|
267
261
|
* Check if polling is active
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Node Execution Service
|
|
3
3
|
* Handles fetching and managing node execution information from the backend
|
|
4
4
|
*/
|
|
5
|
-
import type { NodeExecutionInfo } from
|
|
5
|
+
import type { NodeExecutionInfo } from '../types/index.js';
|
|
6
6
|
/**
|
|
7
7
|
* Service for managing node execution information
|
|
8
8
|
*/
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* Node Execution Service
|
|
3
3
|
* Handles fetching and managing node execution information from the backend
|
|
4
4
|
*/
|
|
5
|
-
import { getEndpointConfig } from
|
|
6
|
-
import { buildEndpointUrl } from
|
|
7
|
-
import { NODE_EXECUTION_CACHE_TIMEOUT_MS, PIPELINE_API_UNAVAILABLE_DURATION_MS
|
|
8
|
-
import { logger } from
|
|
5
|
+
import { getEndpointConfig } from './api.js';
|
|
6
|
+
import { buildEndpointUrl } from '../config/endpoints.js';
|
|
7
|
+
import { NODE_EXECUTION_CACHE_TIMEOUT_MS, PIPELINE_API_UNAVAILABLE_DURATION_MS } from '../config/constants.js';
|
|
8
|
+
import { logger } from '../utils/logger.js';
|
|
9
9
|
/**
|
|
10
10
|
* Service for managing node execution information
|
|
11
11
|
*/
|
|
@@ -33,9 +33,9 @@ export class NodeExecutionService {
|
|
|
33
33
|
try {
|
|
34
34
|
const endpointConfig = getEndpointConfig();
|
|
35
35
|
if (!endpointConfig)
|
|
36
|
-
throw new Error(
|
|
36
|
+
throw new Error('Endpoint config not available');
|
|
37
37
|
const url = buildEndpointUrl(endpointConfig, endpointConfig.endpoints.pipelines.get, {
|
|
38
|
-
id: pipelineId
|
|
38
|
+
id: pipelineId
|
|
39
39
|
});
|
|
40
40
|
const response = await fetch(url);
|
|
41
41
|
if (!response.ok) {
|
|
@@ -49,24 +49,24 @@ export class NodeExecutionService {
|
|
|
49
49
|
const nodeStatus = nodeStatuses[nodeId];
|
|
50
50
|
if (!nodeJob && !nodeStatus) {
|
|
51
51
|
return {
|
|
52
|
-
status:
|
|
52
|
+
status: 'idle',
|
|
53
53
|
executionCount: 0,
|
|
54
|
-
isExecuting: false
|
|
54
|
+
isExecuting: false
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
const executionInfo = {
|
|
58
|
-
status: this.mapJobStatusToExecutionStatus(nodeStatus?.status || nodeJob?.status ||
|
|
58
|
+
status: this.mapJobStatusToExecutionStatus(nodeStatus?.status || nodeJob?.status || 'idle'),
|
|
59
59
|
executionCount: nodeJob?.execution_count || 0,
|
|
60
|
-
isExecuting: nodeStatus?.status ===
|
|
60
|
+
isExecuting: nodeStatus?.status === 'running' || nodeJob?.status === 'running',
|
|
61
61
|
lastExecuted: nodeJob?.last_executed || nodeStatus?.last_executed,
|
|
62
62
|
lastExecutionDuration: nodeJob?.execution_time || nodeStatus?.execution_time,
|
|
63
|
-
lastError: nodeJob?.error || nodeStatus?.error
|
|
63
|
+
lastError: nodeJob?.error || nodeStatus?.error
|
|
64
64
|
};
|
|
65
65
|
this.cache.set(nodeId, executionInfo);
|
|
66
66
|
return executionInfo;
|
|
67
67
|
}
|
|
68
68
|
catch (error) {
|
|
69
|
-
logger.error(
|
|
69
|
+
logger.error('Failed to fetch node execution info:', error);
|
|
70
70
|
return null;
|
|
71
71
|
}
|
|
72
72
|
}
|
|
@@ -82,9 +82,9 @@ export class NodeExecutionService {
|
|
|
82
82
|
const defaultExecutionInfo = {};
|
|
83
83
|
nodeIds.forEach((nodeId) => {
|
|
84
84
|
defaultExecutionInfo[nodeId] = {
|
|
85
|
-
status:
|
|
85
|
+
status: 'idle',
|
|
86
86
|
executionCount: 0,
|
|
87
|
-
isExecuting: false
|
|
87
|
+
isExecuting: false
|
|
88
88
|
};
|
|
89
89
|
});
|
|
90
90
|
return defaultExecutionInfo;
|
|
@@ -92,9 +92,9 @@ export class NodeExecutionService {
|
|
|
92
92
|
try {
|
|
93
93
|
const endpointConfig = getEndpointConfig();
|
|
94
94
|
if (!endpointConfig)
|
|
95
|
-
throw new Error(
|
|
95
|
+
throw new Error('Endpoint config not available');
|
|
96
96
|
const url = buildEndpointUrl(endpointConfig, endpointConfig.endpoints.pipelines.get, {
|
|
97
|
-
id: pipelineId
|
|
97
|
+
id: pipelineId
|
|
98
98
|
});
|
|
99
99
|
const response = await fetch(url);
|
|
100
100
|
if (!response.ok) {
|
|
@@ -103,14 +103,13 @@ export class NodeExecutionService {
|
|
|
103
103
|
if (response.status === 404) {
|
|
104
104
|
logger.warn(`Pipeline API endpoint not available for pipeline ${pipelineId}`);
|
|
105
105
|
this.apiUnavailable = true;
|
|
106
|
-
this.apiUnavailableUntil =
|
|
107
|
-
Date.now() + PIPELINE_API_UNAVAILABLE_DURATION_MS;
|
|
106
|
+
this.apiUnavailableUntil = Date.now() + PIPELINE_API_UNAVAILABLE_DURATION_MS;
|
|
108
107
|
const defaultExecutionInfo = {};
|
|
109
108
|
nodeIds.forEach((nodeId) => {
|
|
110
109
|
defaultExecutionInfo[nodeId] = {
|
|
111
|
-
status:
|
|
110
|
+
status: 'idle',
|
|
112
111
|
executionCount: 0,
|
|
113
|
-
isExecuting: false
|
|
112
|
+
isExecuting: false
|
|
114
113
|
};
|
|
115
114
|
});
|
|
116
115
|
return defaultExecutionInfo;
|
|
@@ -123,9 +122,9 @@ export class NodeExecutionService {
|
|
|
123
122
|
// Initialize all nodes with default values
|
|
124
123
|
nodeIds.forEach((nodeId) => {
|
|
125
124
|
executionInfoMap[nodeId] = {
|
|
126
|
-
status:
|
|
125
|
+
status: 'idle',
|
|
127
126
|
executionCount: 0,
|
|
128
|
-
isExecuting: false
|
|
127
|
+
isExecuting: false
|
|
129
128
|
};
|
|
130
129
|
});
|
|
131
130
|
// Update with actual job data
|
|
@@ -135,10 +134,10 @@ export class NodeExecutionService {
|
|
|
135
134
|
executionInfoMap[nodeId] = {
|
|
136
135
|
status: this.mapJobStatusToExecutionStatus(job.status),
|
|
137
136
|
executionCount: job.execution_count || 0,
|
|
138
|
-
isExecuting: job.status ===
|
|
137
|
+
isExecuting: job.status === 'running',
|
|
139
138
|
lastExecuted: job.completed || job.started,
|
|
140
139
|
lastExecutionDuration: job.execution_time,
|
|
141
|
-
lastError: job.error_message
|
|
140
|
+
lastError: job.error_message
|
|
142
141
|
};
|
|
143
142
|
// Update cache
|
|
144
143
|
this.cache.set(nodeId, executionInfoMap[nodeId]);
|
|
@@ -147,14 +146,14 @@ export class NodeExecutionService {
|
|
|
147
146
|
return executionInfoMap;
|
|
148
147
|
}
|
|
149
148
|
catch (error) {
|
|
150
|
-
logger.error(
|
|
149
|
+
logger.error('Failed to fetch multiple node execution info:', error);
|
|
151
150
|
// Return default values instead of empty object to prevent repeated calls
|
|
152
151
|
const defaultExecutionInfo = {};
|
|
153
152
|
nodeIds.forEach((nodeId) => {
|
|
154
153
|
defaultExecutionInfo[nodeId] = {
|
|
155
|
-
status:
|
|
154
|
+
status: 'idle',
|
|
156
155
|
executionCount: 0,
|
|
157
|
-
isExecuting: false
|
|
156
|
+
isExecuting: false
|
|
158
157
|
};
|
|
159
158
|
});
|
|
160
159
|
return defaultExecutionInfo;
|
|
@@ -167,8 +166,8 @@ export class NodeExecutionService {
|
|
|
167
166
|
try {
|
|
168
167
|
const endpointConfig = getEndpointConfig();
|
|
169
168
|
if (!endpointConfig)
|
|
170
|
-
throw new Error(
|
|
171
|
-
const url = buildEndpointUrl(endpointConfig,
|
|
169
|
+
throw new Error('Endpoint config not available');
|
|
170
|
+
const url = buildEndpointUrl(endpointConfig, '/node-execution-counts');
|
|
172
171
|
const response = await fetch(url);
|
|
173
172
|
if (!response.ok) {
|
|
174
173
|
throw new Error(`HTTP error! status: ${response.status}`);
|
|
@@ -180,7 +179,7 @@ export class NodeExecutionService {
|
|
|
180
179
|
return {};
|
|
181
180
|
}
|
|
182
181
|
catch (error) {
|
|
183
|
-
logger.error(
|
|
182
|
+
logger.error('Failed to fetch all node execution counts:', error);
|
|
184
183
|
return {};
|
|
185
184
|
}
|
|
186
185
|
}
|
|
@@ -219,10 +218,10 @@ export class NodeExecutionService {
|
|
|
219
218
|
}
|
|
220
219
|
else {
|
|
221
220
|
this.cache.set(nodeId, {
|
|
222
|
-
status:
|
|
221
|
+
status: 'idle',
|
|
223
222
|
executionCount: 0,
|
|
224
223
|
isExecuting: false,
|
|
225
|
-
...executionInfo
|
|
224
|
+
...executionInfo
|
|
226
225
|
});
|
|
227
226
|
}
|
|
228
227
|
}
|
|
@@ -231,20 +230,20 @@ export class NodeExecutionService {
|
|
|
231
230
|
*/
|
|
232
231
|
mapJobStatusToExecutionStatus(jobStatus) {
|
|
233
232
|
switch (jobStatus) {
|
|
234
|
-
case
|
|
235
|
-
return
|
|
236
|
-
case
|
|
237
|
-
return
|
|
238
|
-
case
|
|
239
|
-
return
|
|
240
|
-
case
|
|
241
|
-
return
|
|
242
|
-
case
|
|
243
|
-
return
|
|
244
|
-
case
|
|
245
|
-
return
|
|
233
|
+
case 'pending':
|
|
234
|
+
return 'pending';
|
|
235
|
+
case 'running':
|
|
236
|
+
return 'running';
|
|
237
|
+
case 'completed':
|
|
238
|
+
return 'completed';
|
|
239
|
+
case 'failed':
|
|
240
|
+
return 'failed';
|
|
241
|
+
case 'cancelled':
|
|
242
|
+
return 'cancelled';
|
|
243
|
+
case 'skipped':
|
|
244
|
+
return 'skipped';
|
|
246
245
|
default:
|
|
247
|
-
return
|
|
246
|
+
return 'idle';
|
|
248
247
|
}
|
|
249
248
|
}
|
|
250
249
|
/**
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module services/playgroundService
|
|
8
8
|
*/
|
|
9
|
-
import type { PlaygroundSession, PlaygroundMessage, PlaygroundMessagesApiResponse, PlaygroundSessionStatus } from
|
|
9
|
+
import type { PlaygroundSession, PlaygroundMessage, PlaygroundMessagesApiResponse, PlaygroundSessionStatus } from '../types/playground.js';
|
|
10
10
|
/**
|
|
11
11
|
* Playground Service class
|
|
12
12
|
*
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module services/playgroundService
|
|
8
8
|
*/
|
|
9
|
-
import { defaultShouldStopPolling } from
|
|
10
|
-
import { buildEndpointUrl, getEndpointHeaders } from
|
|
11
|
-
import { getEndpointConfig } from
|
|
12
|
-
import { logger } from
|
|
9
|
+
import { defaultShouldStopPolling } from '../types/playground.js';
|
|
10
|
+
import { buildEndpointUrl, getEndpointHeaders } from '../config/endpoints.js';
|
|
11
|
+
import { getEndpointConfig } from './api.js';
|
|
12
|
+
import { logger } from '../utils/logger.js';
|
|
13
13
|
/**
|
|
14
14
|
* Default polling interval in milliseconds
|
|
15
15
|
*/
|
|
@@ -51,7 +51,7 @@ export class PlaygroundService {
|
|
|
51
51
|
getConfig() {
|
|
52
52
|
const config = getEndpointConfig();
|
|
53
53
|
if (!config) {
|
|
54
|
-
throw new Error(
|
|
54
|
+
throw new Error('Endpoint configuration not set. Call setEndpointConfig() first.');
|
|
55
55
|
}
|
|
56
56
|
return config;
|
|
57
57
|
}
|
|
@@ -64,13 +64,13 @@ export class PlaygroundService {
|
|
|
64
64
|
*/
|
|
65
65
|
async request(url, options = {}) {
|
|
66
66
|
const config = this.getConfig();
|
|
67
|
-
const headers = getEndpointHeaders(config,
|
|
67
|
+
const headers = getEndpointHeaders(config, 'playground');
|
|
68
68
|
const response = await fetch(url, {
|
|
69
69
|
...options,
|
|
70
70
|
headers: {
|
|
71
71
|
...headers,
|
|
72
|
-
...options.headers
|
|
73
|
-
}
|
|
72
|
+
...options.headers
|
|
73
|
+
}
|
|
74
74
|
});
|
|
75
75
|
if (!response.ok) {
|
|
76
76
|
const errorData = await response.json().catch(() => ({}));
|
|
@@ -94,15 +94,15 @@ export class PlaygroundService {
|
|
|
94
94
|
async listSessions(workflowId, options) {
|
|
95
95
|
const config = this.getConfig();
|
|
96
96
|
let url = buildEndpointUrl(config, config.endpoints.playground.listSessions, {
|
|
97
|
-
id: workflowId
|
|
97
|
+
id: workflowId
|
|
98
98
|
});
|
|
99
99
|
// Add query parameters
|
|
100
100
|
const params = new URLSearchParams();
|
|
101
101
|
if (options?.limit !== undefined) {
|
|
102
|
-
params.append(
|
|
102
|
+
params.append('limit', options.limit.toString());
|
|
103
103
|
}
|
|
104
104
|
if (options?.offset !== undefined) {
|
|
105
|
-
params.append(
|
|
105
|
+
params.append('offset', options.offset.toString());
|
|
106
106
|
}
|
|
107
107
|
const queryString = params.toString();
|
|
108
108
|
if (queryString) {
|
|
@@ -122,14 +122,14 @@ export class PlaygroundService {
|
|
|
122
122
|
async createSession(workflowId, name, metadata) {
|
|
123
123
|
const config = this.getConfig();
|
|
124
124
|
const url = buildEndpointUrl(config, config.endpoints.playground.createSession, {
|
|
125
|
-
id: workflowId
|
|
125
|
+
id: workflowId
|
|
126
126
|
});
|
|
127
127
|
const response = await this.request(url, {
|
|
128
|
-
method:
|
|
129
|
-
body: JSON.stringify({ name, metadata })
|
|
128
|
+
method: 'POST',
|
|
129
|
+
body: JSON.stringify({ name, metadata })
|
|
130
130
|
});
|
|
131
131
|
if (!response.data) {
|
|
132
|
-
throw new Error(
|
|
132
|
+
throw new Error('Failed to create session: No data returned');
|
|
133
133
|
}
|
|
134
134
|
return response.data;
|
|
135
135
|
}
|
|
@@ -142,11 +142,11 @@ export class PlaygroundService {
|
|
|
142
142
|
async getSession(sessionId) {
|
|
143
143
|
const config = this.getConfig();
|
|
144
144
|
const url = buildEndpointUrl(config, config.endpoints.playground.getSession, {
|
|
145
|
-
sessionId
|
|
145
|
+
sessionId
|
|
146
146
|
});
|
|
147
147
|
const response = await this.request(url);
|
|
148
148
|
if (!response.data) {
|
|
149
|
-
throw new Error(
|
|
149
|
+
throw new Error('Session not found');
|
|
150
150
|
}
|
|
151
151
|
return response.data;
|
|
152
152
|
}
|
|
@@ -158,10 +158,10 @@ export class PlaygroundService {
|
|
|
158
158
|
async deleteSession(sessionId) {
|
|
159
159
|
const config = this.getConfig();
|
|
160
160
|
const url = buildEndpointUrl(config, config.endpoints.playground.deleteSession, {
|
|
161
|
-
sessionId
|
|
161
|
+
sessionId
|
|
162
162
|
});
|
|
163
163
|
await this.request(url, {
|
|
164
|
-
method:
|
|
164
|
+
method: 'DELETE'
|
|
165
165
|
});
|
|
166
166
|
}
|
|
167
167
|
// =========================================================================
|
|
@@ -178,15 +178,15 @@ export class PlaygroundService {
|
|
|
178
178
|
async getMessages(sessionId, since, limit) {
|
|
179
179
|
const config = this.getConfig();
|
|
180
180
|
let url = buildEndpointUrl(config, config.endpoints.playground.getMessages, {
|
|
181
|
-
sessionId
|
|
181
|
+
sessionId
|
|
182
182
|
});
|
|
183
183
|
// Add query parameters
|
|
184
184
|
const params = new URLSearchParams();
|
|
185
185
|
if (since) {
|
|
186
|
-
params.append(
|
|
186
|
+
params.append('since', since);
|
|
187
187
|
}
|
|
188
188
|
if (limit !== undefined) {
|
|
189
|
-
params.append(
|
|
189
|
+
params.append('limit', limit.toString());
|
|
190
190
|
}
|
|
191
191
|
const queryString = params.toString();
|
|
192
192
|
if (queryString) {
|
|
@@ -205,18 +205,18 @@ export class PlaygroundService {
|
|
|
205
205
|
async sendMessage(sessionId, content, inputs) {
|
|
206
206
|
const config = this.getConfig();
|
|
207
207
|
const url = buildEndpointUrl(config, config.endpoints.playground.sendMessage, {
|
|
208
|
-
sessionId
|
|
208
|
+
sessionId
|
|
209
209
|
});
|
|
210
210
|
const requestBody = { content };
|
|
211
211
|
if (inputs) {
|
|
212
212
|
requestBody.inputs = inputs;
|
|
213
213
|
}
|
|
214
214
|
const response = await this.request(url, {
|
|
215
|
-
method:
|
|
216
|
-
body: JSON.stringify(requestBody)
|
|
215
|
+
method: 'POST',
|
|
216
|
+
body: JSON.stringify(requestBody)
|
|
217
217
|
});
|
|
218
218
|
if (!response.data) {
|
|
219
|
-
throw new Error(
|
|
219
|
+
throw new Error('Failed to send message: No data returned');
|
|
220
220
|
}
|
|
221
221
|
return response.data;
|
|
222
222
|
}
|
|
@@ -228,10 +228,10 @@ export class PlaygroundService {
|
|
|
228
228
|
async stopExecution(sessionId) {
|
|
229
229
|
const config = this.getConfig();
|
|
230
230
|
const url = buildEndpointUrl(config, config.endpoints.playground.stopExecution, {
|
|
231
|
-
sessionId
|
|
231
|
+
sessionId
|
|
232
232
|
});
|
|
233
233
|
await this.request(url, {
|
|
234
|
-
method:
|
|
234
|
+
method: 'POST'
|
|
235
235
|
});
|
|
236
236
|
}
|
|
237
237
|
// =========================================================================
|
|
@@ -274,7 +274,7 @@ export class PlaygroundService {
|
|
|
274
274
|
}
|
|
275
275
|
}
|
|
276
276
|
catch (error) {
|
|
277
|
-
logger.error(
|
|
277
|
+
logger.error('Polling error:', error);
|
|
278
278
|
// Exponential backoff on error
|
|
279
279
|
this.currentBackoff = Math.min(this.currentBackoff * 2, MAX_POLLING_BACKOFF);
|
|
280
280
|
}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Port Configuration API Service
|
|
3
3
|
* Handles fetching port configuration from the backend
|
|
4
4
|
*/
|
|
5
|
-
import type { PortConfig } from
|
|
6
|
-
import type { EndpointConfig } from
|
|
5
|
+
import type { PortConfig } from '../types/index.js';
|
|
6
|
+
import type { EndpointConfig } from '../config/endpoints.js';
|
|
7
7
|
/**
|
|
8
8
|
* Fetch port configuration from API
|
|
9
9
|
*/
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Port Configuration API Service
|
|
3
3
|
* Handles fetching port configuration from the backend
|
|
4
4
|
*/
|
|
5
|
-
import { buildEndpointUrl } from
|
|
6
|
-
import { DEFAULT_PORT_CONFIG } from
|
|
7
|
-
import { logger } from
|
|
5
|
+
import { buildEndpointUrl } from '../config/endpoints.js';
|
|
6
|
+
import { DEFAULT_PORT_CONFIG } from '../config/defaultPortConfig.js';
|
|
7
|
+
import { logger } from '../utils/logger.js';
|
|
8
8
|
/**
|
|
9
9
|
* Fetch port configuration from API
|
|
10
10
|
*/
|
|
@@ -12,7 +12,7 @@ export async function fetchPortConfig(endpointConfig) {
|
|
|
12
12
|
try {
|
|
13
13
|
const url = buildEndpointUrl(endpointConfig, endpointConfig.endpoints.portConfig);
|
|
14
14
|
const response = await fetch(url, {
|
|
15
|
-
headers: {
|
|
15
|
+
headers: { 'Content-Type': 'application/json' }
|
|
16
16
|
});
|
|
17
17
|
if (!response.ok) {
|
|
18
18
|
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
@@ -21,13 +21,13 @@ export async function fetchPortConfig(endpointConfig) {
|
|
|
21
21
|
const portConfig = data.data ?? data;
|
|
22
22
|
// Validate the configuration has required fields
|
|
23
23
|
if (!portConfig.dataTypes || !Array.isArray(portConfig.dataTypes)) {
|
|
24
|
-
logger.warn(
|
|
24
|
+
logger.warn('Invalid port config received from API, using default');
|
|
25
25
|
return DEFAULT_PORT_CONFIG;
|
|
26
26
|
}
|
|
27
27
|
return portConfig;
|
|
28
28
|
}
|
|
29
29
|
catch (error) {
|
|
30
|
-
logger.error(
|
|
30
|
+
logger.error('Error fetching port configuration:', error);
|
|
31
31
|
return DEFAULT_PORT_CONFIG;
|
|
32
32
|
}
|
|
33
33
|
}
|
|
@@ -35,13 +35,13 @@ export async function fetchPortConfig(endpointConfig) {
|
|
|
35
35
|
* Validate port configuration structure
|
|
36
36
|
*/
|
|
37
37
|
export function validatePortConfig(config) {
|
|
38
|
-
if (!config || typeof config !==
|
|
38
|
+
if (!config || typeof config !== 'object') {
|
|
39
39
|
return false;
|
|
40
40
|
}
|
|
41
41
|
if (!config.dataTypes || !Array.isArray(config.dataTypes)) {
|
|
42
42
|
return false;
|
|
43
43
|
}
|
|
44
|
-
if (!config.defaultDataType || typeof config.defaultDataType !==
|
|
44
|
+
if (!config.defaultDataType || typeof config.defaultDataType !== 'string') {
|
|
45
45
|
return false;
|
|
46
46
|
}
|
|
47
47
|
// Check that all data types have required fields
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @module services/settingsService
|
|
9
9
|
*/
|
|
10
|
-
import type { FlowDropSettings, PartialSettings } from
|
|
11
|
-
import type { EndpointConfig } from
|
|
10
|
+
import type { FlowDropSettings, PartialSettings } from '../types/settings.js';
|
|
11
|
+
import type { EndpointConfig } from '../config/endpoints.js';
|
|
12
12
|
/**
|
|
13
13
|
* Set the endpoint configuration for settings API calls
|
|
14
14
|
*
|