@flowdrop/flowdrop 1.0.1 → 1.2.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 +50 -50
- package/dist/adapters/WorkflowAdapter.d.ts +1 -1
- package/dist/adapters/WorkflowAdapter.js +25 -25
- package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +2 -2
- package/dist/adapters/agentspec/AgentSpecAdapter.js +133 -122
- 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 +2 -2
- 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 +22 -20
- package/dist/api/enhanced-client.d.ts +3 -3
- package/dist/api/enhanced-client.js +73 -72
- package/dist/components/App.svelte +1090 -961
- package/dist/components/App.svelte.d.ts +9 -6
- package/dist/components/CanvasBanner.stories.svelte +23 -20
- package/dist/components/CanvasBanner.stories.svelte.d.ts +1 -1
- package/dist/components/CanvasBanner.svelte +52 -46
- package/dist/components/ConfigForm.svelte +1164 -1065
- package/dist/components/ConfigForm.svelte.d.ts +2 -2
- package/dist/components/ConfigModal.svelte +180 -180
- package/dist/components/ConfigModal.svelte.d.ts +1 -1
- package/dist/components/ConfigPanel.stories.svelte +35 -35
- package/dist/components/ConfigPanel.stories.svelte.d.ts +1 -1
- package/dist/components/ConfigPanel.svelte +178 -167
- package/dist/components/ConfigPanel.svelte.d.ts +1 -1
- package/dist/components/ConnectionLine.svelte +25 -25
- package/dist/components/EdgeRefresher.svelte +26 -26
- package/dist/components/FlowDropEdge.stories.svelte +179 -143
- package/dist/components/FlowDropEdge.svelte +147 -147
- package/dist/components/FlowDropEdge.svelte.d.ts +1 -1
- package/dist/components/FlowDropZone.svelte +63 -60
- package/dist/components/FlowDropZone.svelte.d.ts +1 -1
- package/dist/components/LoadingSpinner.stories.svelte +19 -19
- package/dist/components/LoadingSpinner.stories.svelte.d.ts +1 -1
- package/dist/components/LoadingSpinner.svelte +21 -21
- package/dist/components/LoadingSpinner.svelte.d.ts +1 -1
- package/dist/components/Logo.stories.svelte +13 -13
- package/dist/components/Logo.stories.svelte.d.ts +1 -1
- package/dist/components/Logo.svelte +101 -95
- package/dist/components/LogsSidebar.svelte +553 -546
- package/dist/components/LogsSidebar.svelte.d.ts +1 -1
- package/dist/components/MarkdownDisplay.stories.svelte +29 -23
- package/dist/components/MarkdownDisplay.stories.svelte.d.ts +1 -1
- package/dist/components/MarkdownDisplay.svelte +16 -14
- package/dist/components/Navbar.stories.svelte +43 -38
- package/dist/components/Navbar.stories.svelte.d.ts +1 -1
- package/dist/components/Navbar.svelte +760 -706
- package/dist/components/Navbar.svelte.d.ts +1 -1
- package/dist/components/NodeSidebar.svelte +905 -746
- package/dist/components/NodeSidebar.svelte.d.ts +5 -1
- package/dist/components/NodeStatusOverlay.stories.svelte +82 -70
- package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +1 -1
- package/dist/components/NodeStatusOverlay.svelte +295 -280
- package/dist/components/NodeStatusOverlay.svelte.d.ts +3 -3
- package/dist/components/PipelineStatus.svelte +326 -300
- package/dist/components/PipelineStatus.svelte.d.ts +4 -4
- package/dist/components/PortCoordinateTracker.svelte +49 -47
- package/dist/components/PortCoordinateTracker.svelte.d.ts +1 -1
- package/dist/components/ReadOnlyDetails.svelte +156 -156
- package/dist/components/SchemaForm.stories.svelte +106 -98
- package/dist/components/SchemaForm.stories.svelte.d.ts +1 -1
- package/dist/components/SchemaForm.svelte +490 -463
- package/dist/components/SchemaForm.svelte.d.ts +2 -2
- package/dist/components/SettingsModal.svelte +226 -223
- package/dist/components/SettingsModal.svelte.d.ts +1 -1
- package/dist/components/SettingsPanel.svelte +637 -601
- package/dist/components/SettingsPanel.svelte.d.ts +1 -1
- package/dist/components/StatusIcon.stories.svelte +62 -49
- package/dist/components/StatusIcon.stories.svelte.d.ts +1 -1
- package/dist/components/StatusIcon.svelte +87 -87
- package/dist/components/StatusIcon.svelte.d.ts +2 -2
- package/dist/components/StatusLabel.stories.svelte +12 -12
- package/dist/components/StatusLabel.stories.svelte.d.ts +1 -1
- package/dist/components/StatusLabel.svelte +19 -19
- package/dist/components/ThemeToggle.stories.svelte +16 -16
- package/dist/components/ThemeToggle.stories.svelte.d.ts +1 -1
- package/dist/components/ThemeToggle.svelte +180 -169
- package/dist/components/ThemeToggle.svelte.d.ts +1 -1
- package/dist/components/UniversalNode.svelte +150 -138
- package/dist/components/UniversalNode.svelte.d.ts +3 -3
- package/dist/components/WorkflowEditor.svelte +1069 -1014
- package/dist/components/WorkflowEditor.svelte.d.ts +4 -4
- package/dist/components/form/FormArray.svelte +1034 -973
- package/dist/components/form/FormArray.svelte.d.ts +1 -1
- package/dist/components/form/FormAutocomplete.svelte +1021 -978
- package/dist/components/form/FormAutocomplete.svelte.d.ts +1 -1
- package/dist/components/form/FormCheckboxGroup.stories.svelte +23 -20
- package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormCheckboxGroup.svelte +136 -136
- package/dist/components/form/FormCodeEditor.svelte +452 -434
- package/dist/components/form/FormField.svelte +366 -355
- package/dist/components/form/FormField.svelte.d.ts +2 -2
- package/dist/components/form/FormFieldLight.svelte +400 -384
- package/dist/components/form/FormFieldLight.svelte.d.ts +1 -1
- package/dist/components/form/FormFieldWrapper.stories.svelte +42 -42
- package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormFieldWrapper.svelte +100 -93
- package/dist/components/form/FormFieldWrapper.svelte.d.ts +1 -1
- package/dist/components/form/FormFieldset.svelte +108 -108
- package/dist/components/form/FormFieldset.svelte.d.ts +2 -2
- package/dist/components/form/FormMarkdownEditor.svelte +758 -725
- package/dist/components/form/FormNumberField.stories.svelte +25 -25
- package/dist/components/form/FormNumberField.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormNumberField.svelte +88 -88
- package/dist/components/form/FormRangeField.stories.svelte +20 -20
- package/dist/components/form/FormRangeField.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormRangeField.svelte +234 -226
- package/dist/components/form/FormSelect.stories.svelte +38 -38
- package/dist/components/form/FormSelect.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormSelect.svelte +101 -101
- package/dist/components/form/FormSelect.svelte.d.ts +1 -1
- package/dist/components/form/FormTemplateEditor.svelte +847 -798
- package/dist/components/form/FormTemplateEditor.svelte.d.ts +1 -1
- package/dist/components/form/FormTextField.stories.svelte +29 -23
- package/dist/components/form/FormTextField.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormTextField.svelte +68 -68
- package/dist/components/form/FormTextarea.stories.svelte +28 -25
- package/dist/components/form/FormTextarea.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormTextarea.svelte +74 -74
- package/dist/components/form/FormToggle.stories.svelte +23 -20
- package/dist/components/form/FormToggle.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormToggle.svelte +98 -98
- package/dist/components/form/FormUISchemaRenderer.svelte +120 -113
- 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 +64 -55
- package/dist/components/form/types.d.ts +6 -6
- package/dist/components/form/types.js +9 -4
- package/dist/components/icons/AlertCircleIcon.svelte +11 -0
- package/dist/components/icons/AlertCircleIcon.svelte.d.ts +26 -0
- package/dist/components/icons/CogIcon.svelte +11 -0
- package/dist/components/icons/CogIcon.svelte.d.ts +26 -0
- package/dist/components/interrupt/ChoicePrompt.stories.svelte +54 -38
- package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/ChoicePrompt.svelte +407 -383
- package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +48 -48
- package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/ConfirmationPrompt.svelte +280 -274
- package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/FormPrompt.svelte +223 -218
- package/dist/components/interrupt/FormPrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/InterruptBubble.svelte +617 -583
- package/dist/components/interrupt/InterruptBubble.svelte.d.ts +2 -2
- package/dist/components/interrupt/ReviewPrompt.stories.svelte +66 -56
- package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/ReviewPrompt.svelte +861 -841
- package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/TextInputPrompt.stories.svelte +38 -33
- package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/TextInputPrompt.svelte +333 -328
- package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/index.d.ts +5 -5
- package/dist/components/interrupt/index.js +5 -5
- package/dist/components/layouts/MainLayout.svelte +724 -691
- package/dist/components/layouts/MainLayout.svelte.d.ts +6 -6
- package/dist/components/nodes/GatewayNode.stories.svelte +100 -99
- package/dist/components/nodes/GatewayNode.svelte +605 -571
- package/dist/components/nodes/GatewayNode.svelte.d.ts +3 -3
- package/dist/components/nodes/IdeaNode.stories.svelte +44 -43
- package/dist/components/nodes/IdeaNode.svelte +451 -437
- package/dist/components/nodes/IdeaNode.svelte.d.ts +1 -1
- package/dist/components/nodes/NotesNode.stories.svelte +65 -64
- package/dist/components/nodes/NotesNode.svelte +380 -369
- package/dist/components/nodes/NotesNode.svelte.d.ts +1 -1
- package/dist/components/nodes/SimpleNode.stories.svelte +145 -144
- package/dist/components/nodes/SimpleNode.svelte +486 -424
- package/dist/components/nodes/SimpleNode.svelte.d.ts +1 -1
- package/dist/components/nodes/SquareNode.stories.svelte +73 -73
- package/dist/components/nodes/SquareNode.svelte +439 -380
- package/dist/components/nodes/SquareNode.svelte.d.ts +1 -1
- package/dist/components/nodes/TerminalNode.stories.svelte +13 -13
- package/dist/components/nodes/TerminalNode.svelte +709 -670
- package/dist/components/nodes/TerminalNode.svelte.d.ts +1 -1
- package/dist/components/nodes/ToolNode.stories.svelte +181 -180
- package/dist/components/nodes/ToolNode.svelte +505 -447
- package/dist/components/nodes/ToolNode.svelte.d.ts +1 -1
- package/dist/components/nodes/WorkflowNode.stories.svelte +70 -46
- package/dist/components/nodes/WorkflowNode.svelte +621 -551
- package/dist/components/nodes/WorkflowNode.svelte.d.ts +3 -3
- package/dist/components/playground/ChatPanel.svelte +945 -889
- package/dist/components/playground/ExecutionLogs.svelte +495 -472
- package/dist/components/playground/InputCollector.svelte +449 -428
- package/dist/components/playground/MessageBubble.stories.svelte +47 -47
- package/dist/components/playground/MessageBubble.stories.svelte.d.ts +1 -1
- package/dist/components/playground/MessageBubble.svelte +626 -610
- package/dist/components/playground/MessageBubble.svelte.d.ts +1 -1
- package/dist/components/playground/Playground.svelte +1088 -1057
- package/dist/components/playground/Playground.svelte.d.ts +3 -3
- package/dist/components/playground/PlaygroundModal.svelte +208 -204
- package/dist/components/playground/PlaygroundModal.svelte.d.ts +3 -3
- package/dist/components/playground/SessionManager.svelte +527 -521
- 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 +65 -65
- package/dist/config/runtimeConfig.d.ts +2 -2
- package/dist/config/runtimeConfig.js +8 -8
- package/dist/core/index.d.ts +63 -59
- package/dist/core/index.js +35 -33
- package/dist/display/index.d.ts +2 -2
- package/dist/display/index.js +2 -2
- package/dist/editor/index.d.ts +62 -62
- package/dist/editor/index.js +53 -53
- 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 +11 -9
- 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 +34 -32
- package/dist/helpers/workflowEditorHelper.d.ts +5 -5
- package/dist/helpers/workflowEditorHelper.js +108 -96
- 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 +9 -9
- package/dist/mocks/app-navigation.js +11 -11
- package/dist/mocks/app-stores.js +8 -8
- 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 +11 -9
- 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 +59 -55
- 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 +41 -34
- 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/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 +41 -39
- package/dist/services/globalSave.d.ts +2 -2
- package/dist/services/globalSave.js +41 -38
- package/dist/services/historyService.d.ts +1 -1
- package/dist/services/historyService.js +8 -8
- package/dist/services/interruptService.d.ts +1 -1
- package/dist/services/interruptService.js +35 -29
- package/dist/services/nodeExecutionService.d.ts +1 -1
- package/dist/services/nodeExecutionService.js +45 -44
- 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 +25 -19
- 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 +2 -0
- package/dist/skins/default.js +1 -0
- package/dist/skins/index.d.ts +13 -0
- package/dist/skins/index.js +30 -0
- package/dist/skins/slate.d.ts +2 -0
- package/dist/skins/slate.js +78 -0
- 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 +65 -33
- 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 +25 -18
- package/dist/stores/portCoordinateStore.svelte.d.ts +2 -2
- package/dist/stores/portCoordinateStore.svelte.js +15 -8
- package/dist/stores/settingsStore.svelte.d.ts +2 -2
- package/dist/stores/settingsStore.svelte.js +62 -57
- package/dist/stores/workflowStore.svelte.d.ts +3 -3
- package/dist/stores/workflowStore.svelte.js +50 -47
- package/dist/stories/CanvasDecorator.svelte +35 -32
- package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
- package/dist/stories/EdgeDecorator.svelte +102 -99
- package/dist/stories/EdgeDecorator.svelte.d.ts +1 -1
- package/dist/stories/NodeDecorator.svelte +59 -53
- package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
- package/dist/stories/utils.d.ts +2 -2
- package/dist/stories/utils.js +105 -67
- package/dist/styles/base.css +599 -595
- package/dist/styles/toast.css +14 -14
- package/dist/styles/tokens.css +409 -378
- package/dist/svelte-app.d.ts +12 -9
- package/dist/svelte-app.js +40 -39
- package/dist/themes/default.d.ts +2 -0
- package/dist/themes/default.js +9 -0
- package/dist/themes/index.d.ts +13 -0
- package/dist/themes/index.js +44 -0
- package/dist/themes/minimal.d.ts +2 -0
- package/dist/themes/minimal.js +11 -0
- 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/config.d.ts +6 -6
- package/dist/types/events.d.ts +2 -2
- 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 +5 -3
- package/dist/types/settings.js +25 -18
- package/dist/types/skin.d.ts +31 -0
- package/dist/types/skin.js +1 -0
- package/dist/types/theme.d.ts +35 -0
- package/dist/types/theme.js +1 -0
- 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 +97 -95
- 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/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/nodeStatus.d.ts +1 -1
- package/dist/utils/nodeStatus.js +48 -48
- package/dist/utils/nodeTypes.d.ts +1 -1
- package/dist/utils/nodeTypes.js +21 -20
- package/dist/utils/nodeWrapper.d.ts +7 -7
- package/dist/utils/nodeWrapper.js +21 -19
- package/dist/utils/performanceUtils.d.ts +1 -1
- package/dist/utils/performanceUtils.js +2 -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 +20 -8
- package/package.json +1 -1
|
@@ -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,7 +29,8 @@ export class InterruptService {
|
|
|
29
29
|
*/
|
|
30
30
|
constructor() {
|
|
31
31
|
this.pollingConfig = { ...defaultInterruptPollingConfig };
|
|
32
|
-
this.currentBackoff =
|
|
32
|
+
this.currentBackoff =
|
|
33
|
+
this.pollingConfig.interval ?? defaultInterruptPollingConfig.interval;
|
|
33
34
|
}
|
|
34
35
|
/**
|
|
35
36
|
* Get the singleton instance of InterruptService
|
|
@@ -49,7 +50,8 @@ export class InterruptService {
|
|
|
49
50
|
*/
|
|
50
51
|
setPollingConfig(config) {
|
|
51
52
|
this.pollingConfig = { ...this.pollingConfig, ...config };
|
|
52
|
-
this.currentBackoff =
|
|
53
|
+
this.currentBackoff =
|
|
54
|
+
this.pollingConfig.interval ?? defaultInterruptPollingConfig.interval;
|
|
53
55
|
}
|
|
54
56
|
/**
|
|
55
57
|
* Get the current polling configuration
|
|
@@ -77,10 +79,10 @@ export class InterruptService {
|
|
|
77
79
|
getConfig() {
|
|
78
80
|
const config = getEndpointConfig();
|
|
79
81
|
if (!config) {
|
|
80
|
-
throw new Error(
|
|
82
|
+
throw new Error("Endpoint configuration not set. Call setEndpointConfig() first.");
|
|
81
83
|
}
|
|
82
84
|
if (!config.endpoints.interrupts) {
|
|
83
|
-
throw new Error(
|
|
85
|
+
throw new Error("Interrupt endpoints not configured.");
|
|
84
86
|
}
|
|
85
87
|
return config;
|
|
86
88
|
}
|
|
@@ -93,13 +95,13 @@ export class InterruptService {
|
|
|
93
95
|
*/
|
|
94
96
|
async request(url, options = {}) {
|
|
95
97
|
const config = this.getConfig();
|
|
96
|
-
const headers = getEndpointHeaders(config,
|
|
98
|
+
const headers = getEndpointHeaders(config, "interrupts");
|
|
97
99
|
const response = await fetch(url, {
|
|
98
100
|
...options,
|
|
99
101
|
headers: {
|
|
100
102
|
...headers,
|
|
101
|
-
...options.headers
|
|
102
|
-
}
|
|
103
|
+
...options.headers,
|
|
104
|
+
},
|
|
103
105
|
});
|
|
104
106
|
if (!response.ok) {
|
|
105
107
|
const errorData = await response.json().catch(() => ({}));
|
|
@@ -122,11 +124,11 @@ export class InterruptService {
|
|
|
122
124
|
async getInterrupt(interruptId) {
|
|
123
125
|
const config = this.getConfig();
|
|
124
126
|
const url = buildEndpointUrl(config, config.endpoints.interrupts.get, {
|
|
125
|
-
interruptId
|
|
127
|
+
interruptId,
|
|
126
128
|
});
|
|
127
129
|
const response = await this.request(url);
|
|
128
130
|
if (!response.data) {
|
|
129
|
-
throw new Error(
|
|
131
|
+
throw new Error("Interrupt not found");
|
|
130
132
|
}
|
|
131
133
|
return response.data;
|
|
132
134
|
}
|
|
@@ -140,15 +142,15 @@ export class InterruptService {
|
|
|
140
142
|
async resolveInterrupt(interruptId, value) {
|
|
141
143
|
const config = this.getConfig();
|
|
142
144
|
const url = buildEndpointUrl(config, config.endpoints.interrupts.resolve, {
|
|
143
|
-
interruptId
|
|
145
|
+
interruptId,
|
|
144
146
|
});
|
|
145
147
|
const resolution = { value };
|
|
146
148
|
const response = await this.request(url, {
|
|
147
|
-
method:
|
|
148
|
-
body: JSON.stringify(resolution)
|
|
149
|
+
method: "POST",
|
|
150
|
+
body: JSON.stringify(resolution),
|
|
149
151
|
});
|
|
150
152
|
if (!response.data) {
|
|
151
|
-
throw new Error(
|
|
153
|
+
throw new Error("Failed to resolve interrupt: No data returned");
|
|
152
154
|
}
|
|
153
155
|
return response.data;
|
|
154
156
|
}
|
|
@@ -161,13 +163,13 @@ export class InterruptService {
|
|
|
161
163
|
async cancelInterrupt(interruptId) {
|
|
162
164
|
const config = this.getConfig();
|
|
163
165
|
const url = buildEndpointUrl(config, config.endpoints.interrupts.cancel, {
|
|
164
|
-
interruptId
|
|
166
|
+
interruptId,
|
|
165
167
|
});
|
|
166
168
|
const response = await this.request(url, {
|
|
167
|
-
method:
|
|
169
|
+
method: "POST",
|
|
168
170
|
});
|
|
169
171
|
if (!response.data) {
|
|
170
|
-
throw new Error(
|
|
172
|
+
throw new Error("Failed to cancel interrupt: No data returned");
|
|
171
173
|
}
|
|
172
174
|
return response.data;
|
|
173
175
|
}
|
|
@@ -180,7 +182,7 @@ export class InterruptService {
|
|
|
180
182
|
async listSessionInterrupts(sessionId) {
|
|
181
183
|
const config = this.getConfig();
|
|
182
184
|
const url = buildEndpointUrl(config, config.endpoints.interrupts.listBySession, {
|
|
183
|
-
sessionId
|
|
185
|
+
sessionId,
|
|
184
186
|
});
|
|
185
187
|
const response = await this.request(url);
|
|
186
188
|
return response.data ?? [];
|
|
@@ -194,7 +196,7 @@ export class InterruptService {
|
|
|
194
196
|
async listPipelineInterrupts(pipelineId) {
|
|
195
197
|
const config = this.getConfig();
|
|
196
198
|
const url = buildEndpointUrl(config, config.endpoints.interrupts.listByPipeline, {
|
|
197
|
-
pipelineId
|
|
199
|
+
pipelineId,
|
|
198
200
|
});
|
|
199
201
|
const response = await this.request(url);
|
|
200
202
|
return response.data ?? [];
|
|
@@ -213,29 +215,32 @@ export class InterruptService {
|
|
|
213
215
|
*/
|
|
214
216
|
startPolling(sessionId, callback) {
|
|
215
217
|
if (!this.pollingConfig.enabled) {
|
|
216
|
-
logger.warn(
|
|
218
|
+
logger.warn("[InterruptService] Polling is disabled. Enable via setPollingConfig().");
|
|
217
219
|
return;
|
|
218
220
|
}
|
|
219
221
|
// Stop any existing polling
|
|
220
222
|
this.stopPolling();
|
|
221
223
|
this.pollingSessionId = sessionId;
|
|
222
|
-
this.currentBackoff =
|
|
224
|
+
this.currentBackoff =
|
|
225
|
+
this.pollingConfig.interval ?? defaultInterruptPollingConfig.interval;
|
|
223
226
|
const poll = async () => {
|
|
224
227
|
if (this.pollingSessionId !== sessionId) {
|
|
225
228
|
return;
|
|
226
229
|
}
|
|
227
230
|
try {
|
|
228
231
|
const interrupts = await this.listSessionInterrupts(sessionId);
|
|
229
|
-
const pendingInterrupts = interrupts.filter((i) => i.status ===
|
|
232
|
+
const pendingInterrupts = interrupts.filter((i) => i.status === "pending");
|
|
230
233
|
// Reset backoff on successful request
|
|
231
|
-
this.currentBackoff =
|
|
234
|
+
this.currentBackoff =
|
|
235
|
+
this.pollingConfig.interval ?? defaultInterruptPollingConfig.interval;
|
|
232
236
|
// Call the callback with pending interrupts
|
|
233
237
|
callback(pendingInterrupts);
|
|
234
238
|
}
|
|
235
239
|
catch (error) {
|
|
236
|
-
logger.error(
|
|
240
|
+
logger.error("[InterruptService] Polling error:", error);
|
|
237
241
|
// Exponential backoff on error
|
|
238
|
-
const maxBackoff = this.pollingConfig.maxBackoff ??
|
|
242
|
+
const maxBackoff = this.pollingConfig.maxBackoff ??
|
|
243
|
+
defaultInterruptPollingConfig.maxBackoff;
|
|
239
244
|
this.currentBackoff = Math.min(this.currentBackoff * 2, maxBackoff);
|
|
240
245
|
}
|
|
241
246
|
// Schedule next poll
|
|
@@ -255,7 +260,8 @@ export class InterruptService {
|
|
|
255
260
|
this.pollingInterval = null;
|
|
256
261
|
}
|
|
257
262
|
this.pollingSessionId = null;
|
|
258
|
-
this.currentBackoff =
|
|
263
|
+
this.currentBackoff =
|
|
264
|
+
this.pollingConfig.interval ?? defaultInterruptPollingConfig.interval;
|
|
259
265
|
}
|
|
260
266
|
/**
|
|
261
267
|
* 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 } from
|
|
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,13 +103,14 @@ 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 =
|
|
106
|
+
this.apiUnavailableUntil =
|
|
107
|
+
Date.now() + PIPELINE_API_UNAVAILABLE_DURATION_MS;
|
|
107
108
|
const defaultExecutionInfo = {};
|
|
108
109
|
nodeIds.forEach((nodeId) => {
|
|
109
110
|
defaultExecutionInfo[nodeId] = {
|
|
110
|
-
status:
|
|
111
|
+
status: "idle",
|
|
111
112
|
executionCount: 0,
|
|
112
|
-
isExecuting: false
|
|
113
|
+
isExecuting: false,
|
|
113
114
|
};
|
|
114
115
|
});
|
|
115
116
|
return defaultExecutionInfo;
|
|
@@ -122,9 +123,9 @@ export class NodeExecutionService {
|
|
|
122
123
|
// Initialize all nodes with default values
|
|
123
124
|
nodeIds.forEach((nodeId) => {
|
|
124
125
|
executionInfoMap[nodeId] = {
|
|
125
|
-
status:
|
|
126
|
+
status: "idle",
|
|
126
127
|
executionCount: 0,
|
|
127
|
-
isExecuting: false
|
|
128
|
+
isExecuting: false,
|
|
128
129
|
};
|
|
129
130
|
});
|
|
130
131
|
// Update with actual job data
|
|
@@ -134,10 +135,10 @@ export class NodeExecutionService {
|
|
|
134
135
|
executionInfoMap[nodeId] = {
|
|
135
136
|
status: this.mapJobStatusToExecutionStatus(job.status),
|
|
136
137
|
executionCount: job.execution_count || 0,
|
|
137
|
-
isExecuting: job.status ===
|
|
138
|
+
isExecuting: job.status === "running",
|
|
138
139
|
lastExecuted: job.completed || job.started,
|
|
139
140
|
lastExecutionDuration: job.execution_time,
|
|
140
|
-
lastError: job.error_message
|
|
141
|
+
lastError: job.error_message,
|
|
141
142
|
};
|
|
142
143
|
// Update cache
|
|
143
144
|
this.cache.set(nodeId, executionInfoMap[nodeId]);
|
|
@@ -146,14 +147,14 @@ export class NodeExecutionService {
|
|
|
146
147
|
return executionInfoMap;
|
|
147
148
|
}
|
|
148
149
|
catch (error) {
|
|
149
|
-
logger.error(
|
|
150
|
+
logger.error("Failed to fetch multiple node execution info:", error);
|
|
150
151
|
// Return default values instead of empty object to prevent repeated calls
|
|
151
152
|
const defaultExecutionInfo = {};
|
|
152
153
|
nodeIds.forEach((nodeId) => {
|
|
153
154
|
defaultExecutionInfo[nodeId] = {
|
|
154
|
-
status:
|
|
155
|
+
status: "idle",
|
|
155
156
|
executionCount: 0,
|
|
156
|
-
isExecuting: false
|
|
157
|
+
isExecuting: false,
|
|
157
158
|
};
|
|
158
159
|
});
|
|
159
160
|
return defaultExecutionInfo;
|
|
@@ -166,8 +167,8 @@ export class NodeExecutionService {
|
|
|
166
167
|
try {
|
|
167
168
|
const endpointConfig = getEndpointConfig();
|
|
168
169
|
if (!endpointConfig)
|
|
169
|
-
throw new Error(
|
|
170
|
-
const url = buildEndpointUrl(endpointConfig,
|
|
170
|
+
throw new Error("Endpoint config not available");
|
|
171
|
+
const url = buildEndpointUrl(endpointConfig, "/node-execution-counts");
|
|
171
172
|
const response = await fetch(url);
|
|
172
173
|
if (!response.ok) {
|
|
173
174
|
throw new Error(`HTTP error! status: ${response.status}`);
|
|
@@ -179,7 +180,7 @@ export class NodeExecutionService {
|
|
|
179
180
|
return {};
|
|
180
181
|
}
|
|
181
182
|
catch (error) {
|
|
182
|
-
logger.error(
|
|
183
|
+
logger.error("Failed to fetch all node execution counts:", error);
|
|
183
184
|
return {};
|
|
184
185
|
}
|
|
185
186
|
}
|
|
@@ -218,10 +219,10 @@ export class NodeExecutionService {
|
|
|
218
219
|
}
|
|
219
220
|
else {
|
|
220
221
|
this.cache.set(nodeId, {
|
|
221
|
-
status:
|
|
222
|
+
status: "idle",
|
|
222
223
|
executionCount: 0,
|
|
223
224
|
isExecuting: false,
|
|
224
|
-
...executionInfo
|
|
225
|
+
...executionInfo,
|
|
225
226
|
});
|
|
226
227
|
}
|
|
227
228
|
}
|
|
@@ -230,20 +231,20 @@ export class NodeExecutionService {
|
|
|
230
231
|
*/
|
|
231
232
|
mapJobStatusToExecutionStatus(jobStatus) {
|
|
232
233
|
switch (jobStatus) {
|
|
233
|
-
case
|
|
234
|
-
return
|
|
235
|
-
case
|
|
236
|
-
return
|
|
237
|
-
case
|
|
238
|
-
return
|
|
239
|
-
case
|
|
240
|
-
return
|
|
241
|
-
case
|
|
242
|
-
return
|
|
243
|
-
case
|
|
244
|
-
return
|
|
234
|
+
case "pending":
|
|
235
|
+
return "pending";
|
|
236
|
+
case "running":
|
|
237
|
+
return "running";
|
|
238
|
+
case "completed":
|
|
239
|
+
return "completed";
|
|
240
|
+
case "failed":
|
|
241
|
+
return "failed";
|
|
242
|
+
case "cancelled":
|
|
243
|
+
return "cancelled";
|
|
244
|
+
case "skipped":
|
|
245
|
+
return "skipped";
|
|
245
246
|
default:
|
|
246
|
-
return
|
|
247
|
+
return "idle";
|
|
247
248
|
}
|
|
248
249
|
}
|
|
249
250
|
/**
|
|
@@ -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
|
*
|