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