@flowdrop/flowdrop 1.0.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/LICENSE +21 -0
- package/README.md +252 -0
- package/dist/adapters/WorkflowAdapter.d.ts +167 -0
- package/dist/adapters/WorkflowAdapter.js +368 -0
- package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +96 -0
- package/dist/adapters/agentspec/AgentSpecAdapter.js +626 -0
- package/dist/adapters/agentspec/agentAdapter.d.ts +59 -0
- package/dist/adapters/agentspec/agentAdapter.js +91 -0
- package/dist/adapters/agentspec/autoLayout.d.ts +34 -0
- package/dist/adapters/agentspec/autoLayout.js +127 -0
- package/dist/adapters/agentspec/componentTypeDefaults.d.ts +73 -0
- package/dist/adapters/agentspec/componentTypeDefaults.js +238 -0
- package/dist/adapters/agentspec/defaultNodeTypes.d.ts +53 -0
- package/dist/adapters/agentspec/defaultNodeTypes.js +561 -0
- package/dist/adapters/agentspec/index.d.ts +37 -0
- package/dist/adapters/agentspec/index.js +39 -0
- package/dist/adapters/agentspec/validator.d.ts +34 -0
- package/dist/adapters/agentspec/validator.js +169 -0
- package/dist/api/enhanced-client.d.ts +183 -0
- package/dist/api/enhanced-client.js +430 -0
- package/dist/components/App.svelte +981 -0
- package/dist/components/App.svelte.d.ts +54 -0
- package/dist/components/CanvasBanner.stories.svelte +29 -0
- package/dist/components/CanvasBanner.stories.svelte.d.ts +27 -0
- package/dist/components/CanvasBanner.svelte +57 -0
- package/dist/components/CanvasBanner.svelte.d.ts +8 -0
- package/dist/components/ConfigForm.svelte +1138 -0
- package/dist/components/ConfigForm.svelte.d.ts +44 -0
- package/dist/components/ConfigModal.svelte +188 -0
- package/dist/components/ConfigModal.svelte.d.ts +13 -0
- package/dist/components/ConfigPanel.stories.svelte +47 -0
- package/dist/components/ConfigPanel.stories.svelte.d.ts +27 -0
- package/dist/components/ConfigPanel.svelte +182 -0
- package/dist/components/ConfigPanel.svelte.d.ts +32 -0
- package/dist/components/ConnectionLine.svelte +32 -0
- package/dist/components/ConnectionLine.svelte.d.ts +3 -0
- package/dist/components/EdgeRefresher.svelte +41 -0
- package/dist/components/EdgeRefresher.svelte.d.ts +9 -0
- package/dist/components/FlowDropZone.svelte +83 -0
- package/dist/components/FlowDropZone.svelte.d.ts +13 -0
- package/dist/components/LoadingSpinner.stories.svelte +30 -0
- package/dist/components/LoadingSpinner.stories.svelte.d.ts +27 -0
- package/dist/components/LoadingSpinner.svelte +36 -0
- package/dist/components/LoadingSpinner.svelte.d.ts +8 -0
- package/dist/components/Logo.stories.svelte +22 -0
- package/dist/components/Logo.stories.svelte.d.ts +27 -0
- package/dist/components/Logo.svelte +102 -0
- package/dist/components/Logo.svelte.d.ts +26 -0
- package/dist/components/LogsSidebar.svelte +563 -0
- package/dist/components/LogsSidebar.svelte.d.ts +17 -0
- package/dist/components/MarkdownDisplay.stories.svelte +36 -0
- package/dist/components/MarkdownDisplay.stories.svelte.d.ts +27 -0
- package/dist/components/MarkdownDisplay.svelte +29 -0
- package/dist/components/MarkdownDisplay.svelte.d.ts +7 -0
- package/dist/components/Navbar.stories.svelte +53 -0
- package/dist/components/Navbar.stories.svelte.d.ts +27 -0
- package/dist/components/Navbar.svelte +726 -0
- package/dist/components/Navbar.svelte.d.ts +29 -0
- package/dist/components/NodeSidebar.svelte +762 -0
- package/dist/components/NodeSidebar.svelte.d.ts +9 -0
- package/dist/components/NodeStatusOverlay.stories.svelte +85 -0
- package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +27 -0
- package/dist/components/NodeStatusOverlay.svelte +327 -0
- package/dist/components/NodeStatusOverlay.svelte.d.ts +11 -0
- package/dist/components/PipelineStatus.svelte +314 -0
- package/dist/components/PipelineStatus.svelte.d.ts +20 -0
- package/dist/components/PortCoordinateTracker.svelte +58 -0
- package/dist/components/PortCoordinateTracker.svelte.d.ts +12 -0
- package/dist/components/ReadOnlyDetails.svelte +170 -0
- package/dist/components/ReadOnlyDetails.svelte.d.ts +25 -0
- package/dist/components/SchemaForm.stories.svelte +116 -0
- package/dist/components/SchemaForm.stories.svelte.d.ts +27 -0
- package/dist/components/SchemaForm.svelte +536 -0
- package/dist/components/SchemaForm.svelte.d.ts +83 -0
- package/dist/components/SettingsModal.svelte +279 -0
- package/dist/components/SettingsModal.svelte.d.ts +23 -0
- package/dist/components/SettingsPanel.svelte +638 -0
- package/dist/components/SettingsPanel.svelte.d.ts +21 -0
- package/dist/components/StatusIcon.stories.svelte +60 -0
- package/dist/components/StatusIcon.stories.svelte.d.ts +27 -0
- package/dist/components/StatusIcon.svelte +119 -0
- package/dist/components/StatusIcon.svelte.d.ts +10 -0
- package/dist/components/StatusLabel.stories.svelte +17 -0
- package/dist/components/StatusLabel.stories.svelte.d.ts +27 -0
- package/dist/components/StatusLabel.svelte +33 -0
- package/dist/components/StatusLabel.svelte.d.ts +7 -0
- package/dist/components/ThemeToggle.stories.svelte +25 -0
- package/dist/components/ThemeToggle.stories.svelte.d.ts +27 -0
- package/dist/components/ThemeToggle.svelte +185 -0
- package/dist/components/ThemeToggle.svelte.d.ts +14 -0
- package/dist/components/UniversalNode.svelte +155 -0
- package/dist/components/UniversalNode.svelte.d.ts +15 -0
- package/dist/components/WorkflowEditor.svelte +1035 -0
- package/dist/components/WorkflowEditor.svelte.d.ts +23 -0
- package/dist/components/form/FormArray.svelte +1049 -0
- package/dist/components/form/FormArray.svelte.d.ts +22 -0
- package/dist/components/form/FormAutocomplete.svelte +1009 -0
- package/dist/components/form/FormAutocomplete.svelte.d.ts +25 -0
- package/dist/components/form/FormCheckboxGroup.stories.svelte +28 -0
- package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormCheckboxGroup.svelte +155 -0
- package/dist/components/form/FormCheckboxGroup.svelte.d.ts +17 -0
- package/dist/components/form/FormCodeEditor.svelte +458 -0
- package/dist/components/form/FormCodeEditor.svelte.d.ts +25 -0
- package/dist/components/form/FormField.svelte +417 -0
- package/dist/components/form/FormField.svelte.d.ts +29 -0
- package/dist/components/form/FormFieldLight.svelte +425 -0
- package/dist/components/form/FormFieldLight.svelte.d.ts +18 -0
- package/dist/components/form/FormFieldWrapper.stories.svelte +53 -0
- package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormFieldWrapper.svelte +125 -0
- package/dist/components/form/FormFieldWrapper.svelte.d.ts +18 -0
- package/dist/components/form/FormFieldset.svelte +142 -0
- package/dist/components/form/FormFieldset.svelte.d.ts +11 -0
- package/dist/components/form/FormMarkdownEditor.svelte +752 -0
- package/dist/components/form/FormMarkdownEditor.svelte.d.ts +33 -0
- package/dist/components/form/FormNumberField.stories.svelte +36 -0
- package/dist/components/form/FormNumberField.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormNumberField.svelte +112 -0
- package/dist/components/form/FormNumberField.svelte.d.ts +25 -0
- package/dist/components/form/FormRangeField.stories.svelte +31 -0
- package/dist/components/form/FormRangeField.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormRangeField.svelte +246 -0
- package/dist/components/form/FormRangeField.svelte.d.ts +23 -0
- package/dist/components/form/FormSelect.stories.svelte +50 -0
- package/dist/components/form/FormSelect.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormSelect.svelte +129 -0
- package/dist/components/form/FormSelect.svelte.d.ts +20 -0
- package/dist/components/form/FormTemplateEditor.svelte +825 -0
- package/dist/components/form/FormTemplateEditor.svelte.d.ts +41 -0
- package/dist/components/form/FormTextField.stories.svelte +30 -0
- package/dist/components/form/FormTextField.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormTextField.svelte +91 -0
- package/dist/components/form/FormTextField.svelte.d.ts +19 -0
- package/dist/components/form/FormTextarea.stories.svelte +34 -0
- package/dist/components/form/FormTextarea.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormTextarea.svelte +97 -0
- package/dist/components/form/FormTextarea.svelte.d.ts +21 -0
- package/dist/components/form/FormToggle.stories.svelte +30 -0
- package/dist/components/form/FormToggle.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormToggle.svelte +126 -0
- package/dist/components/form/FormToggle.svelte.d.ts +19 -0
- package/dist/components/form/FormUISchemaRenderer.svelte +136 -0
- package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +32 -0
- package/dist/components/form/index.d.ts +50 -0
- package/dist/components/form/index.js +54 -0
- package/dist/components/form/templateAutocomplete.d.ts +29 -0
- package/dist/components/form/templateAutocomplete.js +254 -0
- package/dist/components/form/types.d.ts +485 -0
- package/dist/components/form/types.js +73 -0
- package/dist/components/interrupt/ChoicePrompt.stories.svelte +52 -0
- package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +27 -0
- package/dist/components/interrupt/ChoicePrompt.svelte +401 -0
- package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +23 -0
- package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +71 -0
- package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +27 -0
- package/dist/components/interrupt/ConfirmationPrompt.svelte +292 -0
- package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +25 -0
- package/dist/components/interrupt/FormPrompt.svelte +236 -0
- package/dist/components/interrupt/FormPrompt.svelte.d.ts +23 -0
- package/dist/components/interrupt/InterruptBubble.svelte +601 -0
- package/dist/components/interrupt/InterruptBubble.svelte.d.ts +16 -0
- package/dist/components/interrupt/ReviewPrompt.stories.svelte +67 -0
- package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +27 -0
- package/dist/components/interrupt/ReviewPrompt.svelte +861 -0
- package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +23 -0
- package/dist/components/interrupt/TextInputPrompt.stories.svelte +47 -0
- package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +27 -0
- package/dist/components/interrupt/TextInputPrompt.svelte +346 -0
- package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +23 -0
- package/dist/components/interrupt/index.d.ts +13 -0
- package/dist/components/interrupt/index.js +15 -0
- package/dist/components/layouts/MainLayout.svelte +718 -0
- package/dist/components/layouts/MainLayout.svelte.d.ts +62 -0
- package/dist/components/nodes/GatewayNode.stories.svelte +108 -0
- package/dist/components/nodes/GatewayNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/GatewayNode.svelte +591 -0
- package/dist/components/nodes/GatewayNode.svelte.d.ts +15 -0
- package/dist/components/nodes/IdeaNode.stories.svelte +52 -0
- package/dist/components/nodes/IdeaNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/IdeaNode.svelte +455 -0
- package/dist/components/nodes/IdeaNode.svelte.d.ts +24 -0
- package/dist/components/nodes/NotesNode.stories.svelte +76 -0
- package/dist/components/nodes/NotesNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/NotesNode.svelte +378 -0
- package/dist/components/nodes/NotesNode.svelte.d.ts +24 -0
- package/dist/components/nodes/SimpleNode.stories.svelte +159 -0
- package/dist/components/nodes/SimpleNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/SimpleNode.svelte +451 -0
- package/dist/components/nodes/SimpleNode.svelte.d.ts +25 -0
- package/dist/components/nodes/SquareNode.stories.svelte +82 -0
- package/dist/components/nodes/SquareNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/SquareNode.svelte +407 -0
- package/dist/components/nodes/SquareNode.svelte.d.ts +25 -0
- package/dist/components/nodes/TerminalNode.stories.svelte +25 -0
- package/dist/components/nodes/TerminalNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/TerminalNode.svelte +690 -0
- package/dist/components/nodes/TerminalNode.svelte.d.ts +25 -0
- package/dist/components/nodes/ToolNode.stories.svelte +189 -0
- package/dist/components/nodes/ToolNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/ToolNode.svelte +471 -0
- package/dist/components/nodes/ToolNode.svelte.d.ts +36 -0
- package/dist/components/nodes/WorkflowNode.stories.svelte +55 -0
- package/dist/components/nodes/WorkflowNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/WorkflowNode.svelte +571 -0
- package/dist/components/nodes/WorkflowNode.svelte.d.ts +15 -0
- package/dist/components/playground/ChatPanel.svelte +905 -0
- package/dist/components/playground/ChatPanel.svelte.d.ts +46 -0
- package/dist/components/playground/ExecutionLogs.svelte +488 -0
- package/dist/components/playground/ExecutionLogs.svelte.d.ts +14 -0
- package/dist/components/playground/InputCollector.svelte +444 -0
- package/dist/components/playground/InputCollector.svelte.d.ts +16 -0
- package/dist/components/playground/MessageBubble.stories.svelte +62 -0
- package/dist/components/playground/MessageBubble.stories.svelte.d.ts +27 -0
- package/dist/components/playground/MessageBubble.svelte +633 -0
- package/dist/components/playground/MessageBubble.svelte.d.ts +24 -0
- package/dist/components/playground/Playground.svelte +1075 -0
- package/dist/components/playground/Playground.svelte.d.ts +25 -0
- package/dist/components/playground/PlaygroundModal.svelte +220 -0
- package/dist/components/playground/PlaygroundModal.svelte.d.ts +25 -0
- package/dist/components/playground/SessionManager.svelte +538 -0
- package/dist/components/playground/SessionManager.svelte.d.ts +20 -0
- package/dist/config/agentSpecEndpoints.d.ts +70 -0
- package/dist/config/agentSpecEndpoints.js +65 -0
- package/dist/config/constants.d.ts +43 -0
- package/dist/config/constants.js +31 -0
- package/dist/config/defaultCategories.d.ts +7 -0
- package/dist/config/defaultCategories.js +126 -0
- package/dist/config/defaultPortConfig.d.ts +6 -0
- package/dist/config/defaultPortConfig.js +201 -0
- package/dist/config/endpoints.d.ts +160 -0
- package/dist/config/endpoints.js +146 -0
- package/dist/config/runtimeConfig.d.ts +47 -0
- package/dist/config/runtimeConfig.js +80 -0
- package/dist/core/index.d.ts +75 -0
- package/dist/core/index.js +92 -0
- package/dist/display/index.d.ts +29 -0
- package/dist/display/index.js +36 -0
- package/dist/editor/index.d.ts +95 -0
- package/dist/editor/index.js +138 -0
- package/dist/form/code.d.ts +101 -0
- package/dist/form/code.js +168 -0
- package/dist/form/fieldRegistry.d.ts +169 -0
- package/dist/form/fieldRegistry.js +152 -0
- package/dist/form/full.d.ts +56 -0
- package/dist/form/full.js +80 -0
- package/dist/form/index.d.ts +77 -0
- package/dist/form/index.js +91 -0
- package/dist/form/markdown.d.ts +69 -0
- package/dist/form/markdown.js +103 -0
- package/dist/helpers/nodeLayoutHelper.d.ts +14 -0
- package/dist/helpers/nodeLayoutHelper.js +19 -0
- package/dist/helpers/proximityConnect.d.ts +94 -0
- package/dist/helpers/proximityConnect.js +314 -0
- package/dist/helpers/workflowEditorHelper.d.ts +183 -0
- package/dist/helpers/workflowEditorHelper.js +595 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +64 -0
- package/dist/mocks/app-environment.d.ts +8 -0
- package/dist/mocks/app-environment.js +16 -0
- package/dist/mocks/app-forms.d.ts +2 -0
- package/dist/mocks/app-forms.js +22 -0
- package/dist/mocks/app-navigation.d.ts +5 -0
- package/dist/mocks/app-navigation.js +36 -0
- package/dist/mocks/app-stores.d.ts +14 -0
- package/dist/mocks/app-stores.js +26 -0
- package/dist/playground/index.d.ts +131 -0
- package/dist/playground/index.js +172 -0
- package/dist/playground/mount.d.ts +203 -0
- package/dist/playground/mount.js +235 -0
- package/dist/registry/BaseRegistry.d.ts +92 -0
- package/dist/registry/BaseRegistry.js +124 -0
- package/dist/registry/builtinFormats.d.ts +23 -0
- package/dist/registry/builtinFormats.js +70 -0
- package/dist/registry/builtinNodes.d.ts +77 -0
- package/dist/registry/builtinNodes.js +211 -0
- package/dist/registry/index.d.ts +8 -0
- package/dist/registry/index.js +12 -0
- package/dist/registry/nodeComponentRegistry.d.ts +276 -0
- package/dist/registry/nodeComponentRegistry.js +262 -0
- package/dist/registry/plugin.d.ts +215 -0
- package/dist/registry/plugin.js +249 -0
- package/dist/registry/workflowFormatRegistry.d.ts +122 -0
- package/dist/registry/workflowFormatRegistry.js +96 -0
- package/dist/schema/index.d.ts +23 -0
- package/dist/schema/index.js +23 -0
- package/dist/schemas/v1/workflow.schema.json +1078 -0
- package/dist/services/agentSpecExecutionService.d.ts +106 -0
- package/dist/services/agentSpecExecutionService.js +334 -0
- package/dist/services/api.d.ts +115 -0
- package/dist/services/api.js +214 -0
- package/dist/services/apiVariableService.d.ts +114 -0
- package/dist/services/apiVariableService.js +338 -0
- package/dist/services/autoSaveService.d.ts +112 -0
- package/dist/services/autoSaveService.js +227 -0
- package/dist/services/categoriesApi.d.ts +14 -0
- package/dist/services/categoriesApi.js +49 -0
- package/dist/services/draftStorage.d.ts +171 -0
- package/dist/services/draftStorage.js +299 -0
- package/dist/services/dynamicSchemaService.d.ts +108 -0
- package/dist/services/dynamicSchemaService.js +444 -0
- package/dist/services/globalSave.d.ts +69 -0
- package/dist/services/globalSave.js +248 -0
- package/dist/services/historyService.d.ts +208 -0
- package/dist/services/historyService.js +321 -0
- package/dist/services/interruptService.d.ts +133 -0
- package/dist/services/interruptService.js +280 -0
- package/dist/services/nodeExecutionService.d.ts +63 -0
- package/dist/services/nodeExecutionService.js +266 -0
- package/dist/services/playgroundService.d.ts +130 -0
- package/dist/services/playgroundService.js +321 -0
- package/dist/services/portConfigApi.d.ts +14 -0
- package/dist/services/portConfigApi.js +54 -0
- package/dist/services/settingsService.d.ts +92 -0
- package/dist/services/settingsService.js +196 -0
- package/dist/services/toastService.d.ts +156 -0
- package/dist/services/toastService.js +265 -0
- package/dist/services/variableService.d.ts +141 -0
- package/dist/services/variableService.js +463 -0
- package/dist/services/workflowStorage.d.ts +37 -0
- package/dist/services/workflowStorage.js +116 -0
- package/dist/settings/index.d.ts +25 -0
- package/dist/settings/index.js +33 -0
- package/dist/stores/categoriesStore.svelte.d.ts +32 -0
- package/dist/stores/categoriesStore.svelte.js +77 -0
- package/dist/stores/editorStateMachine.svelte.d.ts +42 -0
- package/dist/stores/editorStateMachine.svelte.js +132 -0
- package/dist/stores/historyStore.svelte.d.ts +136 -0
- package/dist/stores/historyStore.svelte.js +207 -0
- package/dist/stores/interruptStore.svelte.d.ts +179 -0
- package/dist/stores/interruptStore.svelte.js +346 -0
- package/dist/stores/playgroundStore.svelte.d.ts +230 -0
- package/dist/stores/playgroundStore.svelte.js +515 -0
- package/dist/stores/portCoordinateStore.svelte.d.ts +66 -0
- package/dist/stores/portCoordinateStore.svelte.js +186 -0
- package/dist/stores/settingsStore.svelte.d.ts +158 -0
- package/dist/stores/settingsStore.svelte.js +544 -0
- package/dist/stores/workflowStore.svelte.d.ts +260 -0
- package/dist/stores/workflowStore.svelte.js +649 -0
- package/dist/stories/CanvasDecorator.svelte +49 -0
- package/dist/stories/CanvasDecorator.svelte.d.ts +8 -0
- package/dist/stories/NodeDecorator.svelte +73 -0
- package/dist/stories/NodeDecorator.svelte.d.ts +8 -0
- package/dist/stories/utils.d.ts +93 -0
- package/dist/stories/utils.js +122 -0
- package/dist/styles/base.css +1300 -0
- package/dist/styles/toast.css +35 -0
- package/dist/styles/tokens.css +475 -0
- package/dist/svelte-app.d.ts +150 -0
- package/dist/svelte-app.js +295 -0
- package/dist/types/agentspec.d.ts +318 -0
- package/dist/types/agentspec.js +48 -0
- package/dist/types/auth.d.ts +263 -0
- package/dist/types/auth.js +229 -0
- package/dist/types/config.d.ts +151 -0
- package/dist/types/config.js +7 -0
- package/dist/types/events.d.ts +190 -0
- package/dist/types/events.js +30 -0
- package/dist/types/index.d.ts +1234 -0
- package/dist/types/index.js +27 -0
- package/dist/types/interrupt.d.ts +390 -0
- package/dist/types/interrupt.js +145 -0
- package/dist/types/interruptState.d.ts +211 -0
- package/dist/types/interruptState.js +308 -0
- package/dist/types/playground.d.ts +351 -0
- package/dist/types/playground.js +95 -0
- package/dist/types/settings.d.ts +189 -0
- package/dist/types/settings.js +97 -0
- package/dist/types/uischema.d.ts +144 -0
- package/dist/types/uischema.js +51 -0
- package/dist/utils/colors.d.ts +288 -0
- package/dist/utils/colors.js +548 -0
- package/dist/utils/config.d.ts +37 -0
- package/dist/utils/config.js +226 -0
- package/dist/utils/connections.d.ts +125 -0
- package/dist/utils/connections.js +414 -0
- package/dist/utils/errors.d.ts +28 -0
- package/dist/utils/errors.js +44 -0
- package/dist/utils/fetchWithAuth.d.ts +25 -0
- package/dist/utils/fetchWithAuth.js +34 -0
- package/dist/utils/handleIds.d.ts +35 -0
- package/dist/utils/handleIds.js +58 -0
- package/dist/utils/handlePositioning.d.ts +31 -0
- package/dist/utils/handlePositioning.js +35 -0
- package/dist/utils/icons.d.ts +106 -0
- package/dist/utils/icons.js +157 -0
- package/dist/utils/logger.d.ts +47 -0
- package/dist/utils/logger.js +72 -0
- package/dist/utils/nodeStatus.d.ts +53 -0
- package/dist/utils/nodeStatus.js +183 -0
- package/dist/utils/nodeTypes.d.ts +117 -0
- package/dist/utils/nodeTypes.js +244 -0
- package/dist/utils/nodeWrapper.d.ts +39 -0
- package/dist/utils/nodeWrapper.js +62 -0
- package/dist/utils/performanceUtils.d.ts +30 -0
- package/dist/utils/performanceUtils.js +108 -0
- package/dist/utils/sanitize.d.ts +19 -0
- package/dist/utils/sanitize.js +31 -0
- package/dist/utils/uischema.d.ts +52 -0
- package/dist/utils/uischema.js +88 -0
- package/dist/utils/validation.d.ts +29 -0
- package/dist/utils/validation.js +39 -0
- package/package.json +292 -0
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkflowAdapter - Abstracts SvelteFlow internals for external systems
|
|
3
|
+
*
|
|
4
|
+
* This adapter provides a clean interface for working with workflows without
|
|
5
|
+
* needing to understand SvelteFlow's internal structure. It handles:
|
|
6
|
+
* - Converting between standard workflow format and SvelteFlow format
|
|
7
|
+
* - CRUD operations on workflows, nodes, and edges
|
|
8
|
+
* - Validation and error checking
|
|
9
|
+
* - Import/export functionality
|
|
10
|
+
*
|
|
11
|
+
* The adapter is designed to be used by:
|
|
12
|
+
* - Backend systems that need to process workflows
|
|
13
|
+
* - External applications that want to integrate with FlowDrop
|
|
14
|
+
* - Systems that need to generate or modify workflows programmatically
|
|
15
|
+
*/
|
|
16
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
17
|
+
/**
|
|
18
|
+
* Generate a unique node ID based on node type and existing nodes
|
|
19
|
+
* Format: <node_type>.<number>
|
|
20
|
+
* Example: boolean_gateway.1, calculator.2
|
|
21
|
+
*/
|
|
22
|
+
function generateStandardNodeId(nodeTypeId, existingNodes) {
|
|
23
|
+
// Count how many nodes of this type already exist
|
|
24
|
+
const existingNodeIds = existingNodes
|
|
25
|
+
.filter((node) => node.data?.metadata?.id === nodeTypeId)
|
|
26
|
+
.map((node) => node.id);
|
|
27
|
+
// Extract the numbers from existing IDs with the same prefix
|
|
28
|
+
const existingNumbers = existingNodeIds
|
|
29
|
+
.map((id) => {
|
|
30
|
+
const match = id.match(new RegExp(`^${nodeTypeId}\\.(\\d+)$`));
|
|
31
|
+
return match ? parseInt(match[1], 10) : 0;
|
|
32
|
+
})
|
|
33
|
+
.filter((num) => num > 0);
|
|
34
|
+
// Find the next available number (highest + 1)
|
|
35
|
+
const nextNumber = existingNumbers.length > 0 ? Math.max(...existingNumbers) + 1 : 1;
|
|
36
|
+
return `${nodeTypeId}.${nextNumber}`;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Workflow Adapter Class
|
|
40
|
+
* Provides a clean API for workflow operations without exposing SvelteFlow internals
|
|
41
|
+
*/
|
|
42
|
+
export class WorkflowAdapter {
|
|
43
|
+
nodeTypes = [];
|
|
44
|
+
constructor(nodeTypes = []) {
|
|
45
|
+
this.nodeTypes = nodeTypes;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create a new workflow
|
|
49
|
+
*/
|
|
50
|
+
createWorkflow(name, description) {
|
|
51
|
+
return {
|
|
52
|
+
id: uuidv4(),
|
|
53
|
+
name,
|
|
54
|
+
description,
|
|
55
|
+
nodes: [],
|
|
56
|
+
edges: [],
|
|
57
|
+
metadata: {
|
|
58
|
+
version: '1.0.0',
|
|
59
|
+
createdAt: new Date().toISOString(),
|
|
60
|
+
updatedAt: new Date().toISOString()
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Add a node to a workflow
|
|
66
|
+
*/
|
|
67
|
+
addNode(workflow, nodeType, position, config) {
|
|
68
|
+
const metadata = this.nodeTypes.find((nt) => nt.id === nodeType);
|
|
69
|
+
if (!metadata) {
|
|
70
|
+
throw new Error(`Node type '${nodeType}' not found`);
|
|
71
|
+
}
|
|
72
|
+
// Generate node ID based on node type and existing nodes
|
|
73
|
+
const nodeId = generateStandardNodeId(nodeType, workflow.nodes);
|
|
74
|
+
const node = {
|
|
75
|
+
id: nodeId,
|
|
76
|
+
type: nodeType,
|
|
77
|
+
position,
|
|
78
|
+
data: {
|
|
79
|
+
label: metadata.name,
|
|
80
|
+
config: config || {},
|
|
81
|
+
metadata
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
workflow.nodes.push(node);
|
|
85
|
+
workflow.metadata.updatedAt = new Date().toISOString();
|
|
86
|
+
return node;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Remove a node from a workflow
|
|
90
|
+
*/
|
|
91
|
+
removeNode(workflow, nodeId) {
|
|
92
|
+
const nodeIndex = workflow.nodes.findIndex((n) => n.id === nodeId);
|
|
93
|
+
if (nodeIndex === -1)
|
|
94
|
+
return false;
|
|
95
|
+
workflow.nodes.splice(nodeIndex, 1);
|
|
96
|
+
// Remove associated edges
|
|
97
|
+
workflow.edges = workflow.edges.filter((edge) => edge.source !== nodeId && edge.target !== nodeId);
|
|
98
|
+
workflow.metadata.updatedAt = new Date().toISOString();
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Update node position
|
|
103
|
+
*/
|
|
104
|
+
updateNodePosition(workflow, nodeId, position) {
|
|
105
|
+
const node = workflow.nodes.find((n) => n.id === nodeId);
|
|
106
|
+
if (!node)
|
|
107
|
+
return false;
|
|
108
|
+
node.position = position;
|
|
109
|
+
workflow.metadata.updatedAt = new Date().toISOString();
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Update node configuration
|
|
114
|
+
*/
|
|
115
|
+
updateNodeConfig(workflow, nodeId, config) {
|
|
116
|
+
const node = workflow.nodes.find((n) => n.id === nodeId);
|
|
117
|
+
if (!node)
|
|
118
|
+
return false;
|
|
119
|
+
node.data.config = { ...node.data.config, ...config };
|
|
120
|
+
workflow.metadata.updatedAt = new Date().toISOString();
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Add an edge between nodes
|
|
125
|
+
*/
|
|
126
|
+
addEdge(workflow, sourceNodeId, targetNodeId, sourceHandle, targetHandle) {
|
|
127
|
+
const edge = {
|
|
128
|
+
id: uuidv4(),
|
|
129
|
+
source: sourceNodeId,
|
|
130
|
+
target: targetNodeId,
|
|
131
|
+
sourceHandle,
|
|
132
|
+
targetHandle
|
|
133
|
+
};
|
|
134
|
+
workflow.edges.push(edge);
|
|
135
|
+
workflow.metadata.updatedAt = new Date().toISOString();
|
|
136
|
+
return edge;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Remove an edge from a workflow
|
|
140
|
+
*/
|
|
141
|
+
removeEdge(workflow, edgeId) {
|
|
142
|
+
const edgeIndex = workflow.edges.findIndex((e) => e.id === edgeId);
|
|
143
|
+
if (edgeIndex === -1)
|
|
144
|
+
return false;
|
|
145
|
+
workflow.edges.splice(edgeIndex, 1);
|
|
146
|
+
workflow.metadata.updatedAt = new Date().toISOString();
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get all nodes of a specific type
|
|
151
|
+
*/
|
|
152
|
+
getNodesByType(workflow, nodeType) {
|
|
153
|
+
return workflow.nodes.filter((node) => node.type === nodeType);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get all edges connected to a node
|
|
157
|
+
*/
|
|
158
|
+
getNodeEdges(workflow, nodeId) {
|
|
159
|
+
return workflow.edges.filter((edge) => edge.source === nodeId || edge.target === nodeId);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Get connected nodes (both incoming and outgoing)
|
|
163
|
+
*/
|
|
164
|
+
getConnectedNodes(workflow, nodeId) {
|
|
165
|
+
const connectedNodeIds = new Set();
|
|
166
|
+
workflow.edges.forEach((edge) => {
|
|
167
|
+
if (edge.source === nodeId) {
|
|
168
|
+
connectedNodeIds.add(edge.target);
|
|
169
|
+
}
|
|
170
|
+
else if (edge.target === nodeId) {
|
|
171
|
+
connectedNodeIds.add(edge.source);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
return workflow.nodes.filter((node) => connectedNodeIds.has(node.id));
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Validate workflow structure
|
|
178
|
+
*/
|
|
179
|
+
validateWorkflow(workflow) {
|
|
180
|
+
const errors = [];
|
|
181
|
+
const warnings = [];
|
|
182
|
+
// Check for empty workflow
|
|
183
|
+
if (workflow.nodes.length === 0) {
|
|
184
|
+
warnings.push('Workflow has no nodes');
|
|
185
|
+
}
|
|
186
|
+
// Check for orphaned edges
|
|
187
|
+
const nodeIds = new Set(workflow.nodes.map((n) => n.id));
|
|
188
|
+
workflow.edges.forEach((edge) => {
|
|
189
|
+
if (!nodeIds.has(edge.source)) {
|
|
190
|
+
errors.push(`Edge ${edge.id} references non-existent source node ${edge.source}`);
|
|
191
|
+
}
|
|
192
|
+
if (!nodeIds.has(edge.target)) {
|
|
193
|
+
errors.push(`Edge ${edge.id} references non-existent target node ${edge.target}`);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
// Check for self-connections
|
|
197
|
+
workflow.edges.forEach((edge) => {
|
|
198
|
+
if (edge.source === edge.target) {
|
|
199
|
+
errors.push(`Node ${edge.source} cannot connect to itself`);
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
// Check for duplicate node IDs
|
|
203
|
+
const nodeIdCounts = new Map();
|
|
204
|
+
workflow.nodes.forEach((node) => {
|
|
205
|
+
nodeIdCounts.set(node.id, (nodeIdCounts.get(node.id) || 0) + 1);
|
|
206
|
+
});
|
|
207
|
+
nodeIdCounts.forEach((count, id) => {
|
|
208
|
+
if (count > 1) {
|
|
209
|
+
errors.push(`Duplicate node ID: ${id}`);
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
// Check for duplicate edge IDs
|
|
213
|
+
const edgeIdCounts = new Map();
|
|
214
|
+
workflow.edges.forEach((edge) => {
|
|
215
|
+
edgeIdCounts.set(edge.id, (edgeIdCounts.get(edge.id) || 0) + 1);
|
|
216
|
+
});
|
|
217
|
+
edgeIdCounts.forEach((count, id) => {
|
|
218
|
+
if (count > 1) {
|
|
219
|
+
errors.push(`Duplicate edge ID: ${id}`);
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
return {
|
|
223
|
+
valid: errors.length === 0,
|
|
224
|
+
errors,
|
|
225
|
+
warnings
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Export workflow to JSON
|
|
230
|
+
*/
|
|
231
|
+
exportWorkflow(workflow) {
|
|
232
|
+
return JSON.stringify(workflow, null, 2);
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Import workflow from JSON
|
|
236
|
+
*/
|
|
237
|
+
importWorkflow(json) {
|
|
238
|
+
try {
|
|
239
|
+
const workflow = JSON.parse(json);
|
|
240
|
+
// Validate the imported workflow
|
|
241
|
+
const validation = this.validateWorkflow(workflow);
|
|
242
|
+
if (!validation.valid) {
|
|
243
|
+
throw new Error(`Invalid workflow: ${validation.errors.join(', ')}`);
|
|
244
|
+
}
|
|
245
|
+
// Update metadata
|
|
246
|
+
workflow.metadata = {
|
|
247
|
+
version: workflow.metadata?.version || '1.0.0',
|
|
248
|
+
createdAt: workflow.metadata?.createdAt || new Date().toISOString(),
|
|
249
|
+
updatedAt: new Date().toISOString(),
|
|
250
|
+
author: workflow.metadata?.author,
|
|
251
|
+
tags: workflow.metadata?.tags
|
|
252
|
+
};
|
|
253
|
+
return workflow;
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
throw new Error(`Failed to import workflow: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Convert SvelteFlow workflow to standard format
|
|
261
|
+
*/
|
|
262
|
+
fromSvelteFlow(svelteFlowWorkflow) {
|
|
263
|
+
return {
|
|
264
|
+
id: svelteFlowWorkflow.id,
|
|
265
|
+
name: svelteFlowWorkflow.name,
|
|
266
|
+
description: svelteFlowWorkflow.description,
|
|
267
|
+
nodes: svelteFlowWorkflow.nodes.map((node) => ({
|
|
268
|
+
id: node.id,
|
|
269
|
+
type: node.data.metadata.id,
|
|
270
|
+
position: node.position,
|
|
271
|
+
data: {
|
|
272
|
+
label: node.data.label,
|
|
273
|
+
config: node.data.config,
|
|
274
|
+
metadata: node.data.metadata
|
|
275
|
+
}
|
|
276
|
+
})),
|
|
277
|
+
edges: svelteFlowWorkflow.edges.map((edge) => ({
|
|
278
|
+
id: edge.id,
|
|
279
|
+
source: edge.source,
|
|
280
|
+
target: edge.target,
|
|
281
|
+
sourceHandle: edge.sourceHandle,
|
|
282
|
+
targetHandle: edge.targetHandle
|
|
283
|
+
})),
|
|
284
|
+
metadata: svelteFlowWorkflow.metadata
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Convert standard workflow to SvelteFlow format
|
|
289
|
+
*/
|
|
290
|
+
toSvelteFlow(workflow) {
|
|
291
|
+
return {
|
|
292
|
+
id: workflow.id,
|
|
293
|
+
name: workflow.name,
|
|
294
|
+
description: workflow.description,
|
|
295
|
+
nodes: workflow.nodes.map((node) => ({
|
|
296
|
+
id: node.id,
|
|
297
|
+
type: 'workflowNode',
|
|
298
|
+
position: node.position,
|
|
299
|
+
deletable: true,
|
|
300
|
+
data: {
|
|
301
|
+
label: node.data.label,
|
|
302
|
+
config: node.data.config,
|
|
303
|
+
metadata: node.data.metadata,
|
|
304
|
+
nodeId: node.id
|
|
305
|
+
}
|
|
306
|
+
})),
|
|
307
|
+
edges: workflow.edges.map((edge) => ({
|
|
308
|
+
id: edge.id,
|
|
309
|
+
source: edge.source,
|
|
310
|
+
target: edge.target,
|
|
311
|
+
sourceHandle: edge.sourceHandle,
|
|
312
|
+
targetHandle: edge.targetHandle
|
|
313
|
+
})),
|
|
314
|
+
metadata: workflow.metadata
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Get workflow statistics
|
|
319
|
+
*/
|
|
320
|
+
getWorkflowStats(workflow) {
|
|
321
|
+
const nodeTypeCounts = new Map();
|
|
322
|
+
workflow.nodes.forEach((node) => {
|
|
323
|
+
nodeTypeCounts.set(node.type, (nodeTypeCounts.get(node.type) || 0) + 1);
|
|
324
|
+
});
|
|
325
|
+
return {
|
|
326
|
+
totalNodes: workflow.nodes.length,
|
|
327
|
+
totalEdges: workflow.edges.length,
|
|
328
|
+
nodeTypeCounts: Object.fromEntries(nodeTypeCounts),
|
|
329
|
+
lastModified: workflow.metadata?.updatedAt
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Clone a workflow
|
|
334
|
+
*/
|
|
335
|
+
cloneWorkflow(workflow, newName) {
|
|
336
|
+
const cloned = JSON.parse(JSON.stringify(workflow));
|
|
337
|
+
// Generate new IDs for all nodes and edges
|
|
338
|
+
const idMapping = new Map();
|
|
339
|
+
// Count nodes by type to generate proper sequential IDs
|
|
340
|
+
const nodeTypeCounts = new Map();
|
|
341
|
+
cloned.nodes.forEach((node) => {
|
|
342
|
+
const oldId = node.id;
|
|
343
|
+
const nodeTypeId = node.data.metadata.id;
|
|
344
|
+
// Get the current count for this node type
|
|
345
|
+
const currentCount = nodeTypeCounts.get(nodeTypeId) || 0;
|
|
346
|
+
const newCount = currentCount + 1;
|
|
347
|
+
nodeTypeCounts.set(nodeTypeId, newCount);
|
|
348
|
+
// Generate new ID with the sequential number
|
|
349
|
+
node.id = `${nodeTypeId}.${newCount}`;
|
|
350
|
+
idMapping.set(oldId, node.id);
|
|
351
|
+
});
|
|
352
|
+
cloned.edges.forEach((edge) => {
|
|
353
|
+
edge.id = uuidv4();
|
|
354
|
+
edge.source = idMapping.get(edge.source) || edge.source;
|
|
355
|
+
edge.target = idMapping.get(edge.target) || edge.target;
|
|
356
|
+
});
|
|
357
|
+
cloned.id = uuidv4();
|
|
358
|
+
cloned.name = newName || `${workflow.name} (Copy)`;
|
|
359
|
+
cloned.metadata = {
|
|
360
|
+
version: cloned.metadata?.version || '1.0.0',
|
|
361
|
+
createdAt: new Date().toISOString(),
|
|
362
|
+
updatedAt: new Date().toISOString(),
|
|
363
|
+
author: cloned.metadata?.author,
|
|
364
|
+
tags: cloned.metadata?.tags
|
|
365
|
+
};
|
|
366
|
+
return cloned;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Spec Adapter — Bidirectional conversion between FlowDrop and Agent Spec
|
|
3
|
+
*
|
|
4
|
+
* Converts between FlowDrop's StandardWorkflow format and Oracle's Open Agent Spec
|
|
5
|
+
* JSON format. Handles the key structural differences:
|
|
6
|
+
* - Unified edges (FlowDrop) ↔ control-flow + data-flow edges (Agent Spec)
|
|
7
|
+
* - Node IDs (FlowDrop) ↔ node names (Agent Spec)
|
|
8
|
+
* - Visual positions (FlowDrop) ↔ no positions (Agent Spec)
|
|
9
|
+
*
|
|
10
|
+
* @see https://github.com/oracle/agent-spec
|
|
11
|
+
*/
|
|
12
|
+
import type { AgentSpecFlow } from '../../types/agentspec.js';
|
|
13
|
+
import type { StandardWorkflow } from '../WorkflowAdapter.js';
|
|
14
|
+
export declare class AgentSpecAdapter {
|
|
15
|
+
/**
|
|
16
|
+
* Convert a FlowDrop StandardWorkflow to an Agent Spec Flow.
|
|
17
|
+
*
|
|
18
|
+
* Handles:
|
|
19
|
+
* - Node conversion with config → node attributes
|
|
20
|
+
* - Edge splitting into control-flow and data-flow
|
|
21
|
+
* - Position preservation in metadata
|
|
22
|
+
* - Gateway branch → from_branch mapping
|
|
23
|
+
*/
|
|
24
|
+
toAgentSpec(workflow: StandardWorkflow): AgentSpecFlow;
|
|
25
|
+
/**
|
|
26
|
+
* Export a FlowDrop StandardWorkflow as Agent Spec JSON string.
|
|
27
|
+
*/
|
|
28
|
+
exportJSON(workflow: StandardWorkflow): string;
|
|
29
|
+
/**
|
|
30
|
+
* Convert an Agent Spec Flow to a FlowDrop StandardWorkflow.
|
|
31
|
+
*
|
|
32
|
+
* Handles:
|
|
33
|
+
* - Auto-layout (Agent Spec has no positions)
|
|
34
|
+
* - Edge merging (control-flow + data-flow → unified edges)
|
|
35
|
+
* - Node type mapping via registry
|
|
36
|
+
* - Component type preservation in extensions
|
|
37
|
+
*/
|
|
38
|
+
fromAgentSpec(agentSpecFlow: AgentSpecFlow): StandardWorkflow;
|
|
39
|
+
/**
|
|
40
|
+
* Import an Agent Spec flow from a JSON string.
|
|
41
|
+
*/
|
|
42
|
+
importJSON(json: string): StandardWorkflow;
|
|
43
|
+
/**
|
|
44
|
+
* Resolve a stable name for a FlowDrop node in Agent Spec.
|
|
45
|
+
* Uses the node's config instanceTitle, label, or falls back to ID.
|
|
46
|
+
*/
|
|
47
|
+
private resolveNodeName;
|
|
48
|
+
/**
|
|
49
|
+
* Convert a FlowDrop StandardNode to an Agent Spec node.
|
|
50
|
+
*/
|
|
51
|
+
private convertNodeToAgentSpec;
|
|
52
|
+
/**
|
|
53
|
+
* Add Agent Spec type-specific attributes from FlowDrop config.
|
|
54
|
+
*/
|
|
55
|
+
private addNodeSpecificAttributes;
|
|
56
|
+
/**
|
|
57
|
+
* Resolve Agent Spec component type from a FlowDrop node.
|
|
58
|
+
*/
|
|
59
|
+
private resolveComponentType;
|
|
60
|
+
/**
|
|
61
|
+
* Convert an Agent Spec node to a FlowDrop StandardNode.
|
|
62
|
+
*
|
|
63
|
+
* Uses lightweight component type defaults for trigger ports and visual styling.
|
|
64
|
+
* Does NOT depend on the full node type registry — works with any component_type,
|
|
65
|
+
* including custom/unknown types (falls back to sensible defaults).
|
|
66
|
+
*/
|
|
67
|
+
private convertNodeFromAgentSpec;
|
|
68
|
+
/**
|
|
69
|
+
* Extract FlowDrop config values from Agent Spec node-specific attributes.
|
|
70
|
+
*/
|
|
71
|
+
private extractConfigFromAgentSpec;
|
|
72
|
+
/**
|
|
73
|
+
* Get the data type of a source port from a FlowDrop node.
|
|
74
|
+
*/
|
|
75
|
+
private getSourcePortDataType;
|
|
76
|
+
/**
|
|
77
|
+
* Convert a FlowDrop trigger edge to an Agent Spec ControlFlowEdge.
|
|
78
|
+
*/
|
|
79
|
+
private convertToControlFlowEdge;
|
|
80
|
+
/**
|
|
81
|
+
* Convert a FlowDrop data edge to an Agent Spec DataFlowEdge.
|
|
82
|
+
*/
|
|
83
|
+
private convertToDataFlowEdge;
|
|
84
|
+
/**
|
|
85
|
+
* Convert an Agent Spec ControlFlowEdge to a FlowDrop edge.
|
|
86
|
+
*/
|
|
87
|
+
private convertFromControlFlowEdge;
|
|
88
|
+
/**
|
|
89
|
+
* Convert an Agent Spec DataFlowEdge to a FlowDrop edge.
|
|
90
|
+
*/
|
|
91
|
+
private convertFromDataFlowEdge;
|
|
92
|
+
/**
|
|
93
|
+
* Find the start node name from converted Agent Spec nodes.
|
|
94
|
+
*/
|
|
95
|
+
private findStartNodeName;
|
|
96
|
+
}
|