@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,299 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Draft Storage Service for FlowDrop
|
|
3
|
+
*
|
|
4
|
+
* Handles saving and loading workflow drafts to/from localStorage.
|
|
5
|
+
* Provides interval-based auto-save functionality.
|
|
6
|
+
*
|
|
7
|
+
* @module services/draftStorage
|
|
8
|
+
*/
|
|
9
|
+
import { logger } from '../utils/logger.js';
|
|
10
|
+
/**
|
|
11
|
+
* Default storage key prefix
|
|
12
|
+
*/
|
|
13
|
+
const STORAGE_KEY_PREFIX = 'flowdrop:draft';
|
|
14
|
+
/**
|
|
15
|
+
* Generate a storage key for a workflow
|
|
16
|
+
*
|
|
17
|
+
* If a custom key is provided, use it directly.
|
|
18
|
+
* Otherwise, generate based on workflow ID or use "new" for unsaved workflows.
|
|
19
|
+
*
|
|
20
|
+
* @param workflowId - The workflow ID (optional)
|
|
21
|
+
* @param customKey - Custom storage key provided by enterprise (optional)
|
|
22
|
+
* @returns The storage key to use
|
|
23
|
+
*/
|
|
24
|
+
export function getDraftStorageKey(workflowId, customKey) {
|
|
25
|
+
if (customKey) {
|
|
26
|
+
return customKey;
|
|
27
|
+
}
|
|
28
|
+
if (workflowId) {
|
|
29
|
+
return `${STORAGE_KEY_PREFIX}:${workflowId}`;
|
|
30
|
+
}
|
|
31
|
+
return `${STORAGE_KEY_PREFIX}:new`;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Save a workflow draft to localStorage
|
|
35
|
+
*
|
|
36
|
+
* @param workflow - The workflow to save
|
|
37
|
+
* @param storageKey - The storage key to use
|
|
38
|
+
* @returns true if saved successfully, false otherwise
|
|
39
|
+
*/
|
|
40
|
+
export function saveDraft(workflow, storageKey) {
|
|
41
|
+
try {
|
|
42
|
+
const draft = {
|
|
43
|
+
workflow,
|
|
44
|
+
metadata: {
|
|
45
|
+
savedAt: new Date().toISOString(),
|
|
46
|
+
workflowId: workflow.id,
|
|
47
|
+
workflowName: workflow.name
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
localStorage.setItem(storageKey, JSON.stringify(draft));
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
// localStorage might be full or disabled
|
|
55
|
+
logger.warn('Failed to save draft to localStorage:', error);
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Load a workflow draft from localStorage
|
|
61
|
+
*
|
|
62
|
+
* @param storageKey - The storage key to load from
|
|
63
|
+
* @returns The stored draft, or null if not found
|
|
64
|
+
*/
|
|
65
|
+
export function loadDraft(storageKey) {
|
|
66
|
+
try {
|
|
67
|
+
const stored = localStorage.getItem(storageKey);
|
|
68
|
+
if (!stored) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
const draft = JSON.parse(stored);
|
|
72
|
+
// Validate the draft structure
|
|
73
|
+
if (!draft.workflow || !draft.metadata) {
|
|
74
|
+
logger.warn('Invalid draft structure in localStorage');
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
return draft;
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
logger.warn('Failed to load draft from localStorage:', error);
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Delete a workflow draft from localStorage
|
|
86
|
+
*
|
|
87
|
+
* @param storageKey - The storage key to delete
|
|
88
|
+
*/
|
|
89
|
+
export function deleteDraft(storageKey) {
|
|
90
|
+
try {
|
|
91
|
+
localStorage.removeItem(storageKey);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
logger.warn('Failed to delete draft from localStorage:', error);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Check if a draft exists for a given storage key
|
|
99
|
+
*
|
|
100
|
+
* @param storageKey - The storage key to check
|
|
101
|
+
* @returns true if a draft exists
|
|
102
|
+
*/
|
|
103
|
+
export function hasDraft(storageKey) {
|
|
104
|
+
try {
|
|
105
|
+
return localStorage.getItem(storageKey) !== null;
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get draft metadata without loading the full workflow
|
|
113
|
+
*
|
|
114
|
+
* Useful for displaying draft information without parsing the entire workflow.
|
|
115
|
+
*
|
|
116
|
+
* @param storageKey - The storage key to check
|
|
117
|
+
* @returns Draft metadata, or null if not found
|
|
118
|
+
*/
|
|
119
|
+
export function getDraftMetadata(storageKey) {
|
|
120
|
+
const draft = loadDraft(storageKey);
|
|
121
|
+
return draft?.metadata ?? null;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Draft auto-save manager
|
|
125
|
+
*
|
|
126
|
+
* Handles interval-based auto-saving of workflow drafts.
|
|
127
|
+
* Should be instantiated per FlowDrop instance.
|
|
128
|
+
*/
|
|
129
|
+
export class DraftAutoSaveManager {
|
|
130
|
+
/** Interval timer ID */
|
|
131
|
+
intervalId = null;
|
|
132
|
+
/** Storage key for drafts */
|
|
133
|
+
storageKey;
|
|
134
|
+
/** Auto-save interval in milliseconds */
|
|
135
|
+
interval;
|
|
136
|
+
/** Whether auto-save is enabled */
|
|
137
|
+
enabled;
|
|
138
|
+
/** Function to get current workflow */
|
|
139
|
+
getWorkflow;
|
|
140
|
+
/** Function to check if workflow is dirty */
|
|
141
|
+
isDirty;
|
|
142
|
+
/** Last saved workflow hash (for change detection) */
|
|
143
|
+
lastSavedHash = null;
|
|
144
|
+
/**
|
|
145
|
+
* Create a new DraftAutoSaveManager
|
|
146
|
+
*
|
|
147
|
+
* @param options - Configuration options
|
|
148
|
+
*/
|
|
149
|
+
constructor(options) {
|
|
150
|
+
this.storageKey = options.storageKey;
|
|
151
|
+
this.interval = options.interval;
|
|
152
|
+
this.enabled = options.enabled;
|
|
153
|
+
this.getWorkflow = options.getWorkflow;
|
|
154
|
+
this.isDirty = options.isDirty;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Start auto-save interval
|
|
158
|
+
*
|
|
159
|
+
* Will save drafts at the configured interval if there are unsaved changes.
|
|
160
|
+
*/
|
|
161
|
+
start() {
|
|
162
|
+
if (!this.enabled || this.intervalId) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
this.intervalId = setInterval(() => {
|
|
166
|
+
this.saveIfDirty();
|
|
167
|
+
}, this.interval);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Stop auto-save interval
|
|
171
|
+
*/
|
|
172
|
+
stop() {
|
|
173
|
+
if (this.intervalId) {
|
|
174
|
+
clearInterval(this.intervalId);
|
|
175
|
+
this.intervalId = null;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Save draft if there are unsaved changes
|
|
180
|
+
*
|
|
181
|
+
* @returns true if a draft was saved
|
|
182
|
+
*/
|
|
183
|
+
saveIfDirty() {
|
|
184
|
+
if (!this.enabled) {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
const workflow = this.getWorkflow();
|
|
188
|
+
if (!workflow) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
// Only save if dirty
|
|
192
|
+
if (!this.isDirty()) {
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
// Check if workflow has actually changed since last save
|
|
196
|
+
const currentHash = this.hashWorkflow(workflow);
|
|
197
|
+
if (currentHash === this.lastSavedHash) {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
const saved = saveDraft(workflow, this.storageKey);
|
|
201
|
+
if (saved) {
|
|
202
|
+
this.lastSavedHash = currentHash;
|
|
203
|
+
}
|
|
204
|
+
return saved;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Force save the current workflow as a draft
|
|
208
|
+
*
|
|
209
|
+
* Saves regardless of dirty state.
|
|
210
|
+
*
|
|
211
|
+
* @returns true if saved successfully
|
|
212
|
+
*/
|
|
213
|
+
forceSave() {
|
|
214
|
+
const workflow = this.getWorkflow();
|
|
215
|
+
if (!workflow) {
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
const saved = saveDraft(workflow, this.storageKey);
|
|
219
|
+
if (saved) {
|
|
220
|
+
this.lastSavedHash = this.hashWorkflow(workflow);
|
|
221
|
+
}
|
|
222
|
+
return saved;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Clear the draft from storage
|
|
226
|
+
*/
|
|
227
|
+
clearDraft() {
|
|
228
|
+
deleteDraft(this.storageKey);
|
|
229
|
+
this.lastSavedHash = null;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Mark the current state as saved
|
|
233
|
+
*
|
|
234
|
+
* Updates the hash so the next saveIfDirty won't save unless there are new changes.
|
|
235
|
+
*/
|
|
236
|
+
markAsSaved() {
|
|
237
|
+
const workflow = this.getWorkflow();
|
|
238
|
+
if (workflow) {
|
|
239
|
+
this.lastSavedHash = this.hashWorkflow(workflow);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Update the storage key
|
|
244
|
+
*
|
|
245
|
+
* Useful when the workflow ID changes (e.g., after first save).
|
|
246
|
+
*
|
|
247
|
+
* @param newKey - The new storage key
|
|
248
|
+
*/
|
|
249
|
+
updateStorageKey(newKey) {
|
|
250
|
+
// If there's an existing draft with the old key, migrate it
|
|
251
|
+
const existingDraft = loadDraft(this.storageKey);
|
|
252
|
+
if (existingDraft && this.storageKey !== newKey) {
|
|
253
|
+
deleteDraft(this.storageKey);
|
|
254
|
+
saveDraft(existingDraft.workflow, newKey);
|
|
255
|
+
}
|
|
256
|
+
this.storageKey = newKey;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Simple hash function for change detection
|
|
260
|
+
*
|
|
261
|
+
* Not cryptographically secure, just for detecting changes.
|
|
262
|
+
*
|
|
263
|
+
* @param workflow - The workflow to hash
|
|
264
|
+
* @returns A simple hash string
|
|
265
|
+
*/
|
|
266
|
+
hashWorkflow(workflow) {
|
|
267
|
+
// Use a simple stringification for change detection
|
|
268
|
+
// We only need nodes, edges, name, and description for change detection
|
|
269
|
+
const toHash = {
|
|
270
|
+
name: workflow.name,
|
|
271
|
+
description: workflow.description,
|
|
272
|
+
nodes: workflow.nodes.map((n) => ({
|
|
273
|
+
id: n.id,
|
|
274
|
+
position: n.position,
|
|
275
|
+
data: n.data
|
|
276
|
+
})),
|
|
277
|
+
edges: workflow.edges.map((e) => ({
|
|
278
|
+
id: e.id,
|
|
279
|
+
source: e.source,
|
|
280
|
+
target: e.target,
|
|
281
|
+
sourceHandle: e.sourceHandle,
|
|
282
|
+
targetHandle: e.targetHandle
|
|
283
|
+
}))
|
|
284
|
+
};
|
|
285
|
+
return JSON.stringify(toHash);
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Check if auto-save is currently running
|
|
289
|
+
*/
|
|
290
|
+
isRunning() {
|
|
291
|
+
return this.intervalId !== null;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Get the current storage key
|
|
295
|
+
*/
|
|
296
|
+
getStorageKey() {
|
|
297
|
+
return this.storageKey;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic Schema Service
|
|
3
|
+
* Handles fetching configuration schemas from REST endpoints at runtime.
|
|
4
|
+
* Used for nodes where the config schema cannot be determined at workflow load time.
|
|
5
|
+
*
|
|
6
|
+
* @module services/dynamicSchemaService
|
|
7
|
+
*/
|
|
8
|
+
import type { ConfigSchema, DynamicSchemaEndpoint, ExternalEditLink, ConfigEditOptions, WorkflowNode } from '../types/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Result of a dynamic schema fetch operation
|
|
11
|
+
*/
|
|
12
|
+
export interface DynamicSchemaResult {
|
|
13
|
+
/** Whether the fetch was successful */
|
|
14
|
+
success: boolean;
|
|
15
|
+
/** The fetched config schema (if successful) */
|
|
16
|
+
schema?: ConfigSchema;
|
|
17
|
+
/** Error message (if failed) */
|
|
18
|
+
error?: string;
|
|
19
|
+
/** Whether the schema was loaded from cache */
|
|
20
|
+
fromCache?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Fetches a dynamic configuration schema from a REST endpoint.
|
|
24
|
+
*
|
|
25
|
+
* @param endpoint - The dynamic schema endpoint configuration
|
|
26
|
+
* @param node - The workflow node instance
|
|
27
|
+
* @param workflowId - Optional workflow ID for context
|
|
28
|
+
* @returns A promise that resolves to the schema result
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* const endpoint: DynamicSchemaEndpoint = {
|
|
33
|
+
* url: "/api/nodes/{nodeTypeId}/schema",
|
|
34
|
+
* method: "GET",
|
|
35
|
+
* parameterMapping: { nodeTypeId: "metadata.id" }
|
|
36
|
+
* };
|
|
37
|
+
*
|
|
38
|
+
* const result = await fetchDynamicSchema(endpoint, node);
|
|
39
|
+
* if (result.success && result.schema) {
|
|
40
|
+
* // Use the fetched schema
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare function fetchDynamicSchema(endpoint: DynamicSchemaEndpoint, node: WorkflowNode, workflowId?: string): Promise<DynamicSchemaResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Resolves an external edit link URL with template variables.
|
|
47
|
+
*
|
|
48
|
+
* @param link - The external edit link configuration
|
|
49
|
+
* @param node - The workflow node instance
|
|
50
|
+
* @param workflowId - Optional workflow ID for context
|
|
51
|
+
* @param callbackUrl - Optional callback URL to append
|
|
52
|
+
* @returns The resolved URL string
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const link: ExternalEditLink = {
|
|
57
|
+
* url: "https://admin.example.com/nodes/{nodeTypeId}/edit/{instanceId}",
|
|
58
|
+
* parameterMapping: { nodeTypeId: "metadata.id", instanceId: "id" }
|
|
59
|
+
* };
|
|
60
|
+
*
|
|
61
|
+
* const url = resolveExternalEditUrl(link, node, workflowId);
|
|
62
|
+
* // Returns "https://admin.example.com/nodes/llm-node/edit/node-1"
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare function resolveExternalEditUrl(link: ExternalEditLink, node: WorkflowNode, workflowId?: string, callbackUrl?: string): string;
|
|
66
|
+
/**
|
|
67
|
+
* Gets the effective config edit options for a node.
|
|
68
|
+
* Merges node type defaults with instance-level overrides.
|
|
69
|
+
*
|
|
70
|
+
* @param node - The workflow node instance
|
|
71
|
+
* @returns The merged config edit options, or undefined if not configured
|
|
72
|
+
*/
|
|
73
|
+
export declare function getEffectiveConfigEditOptions(node: WorkflowNode): ConfigEditOptions | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* Clears the schema cache.
|
|
76
|
+
* Can optionally clear only entries matching a specific pattern.
|
|
77
|
+
*
|
|
78
|
+
* @param pattern - Optional pattern to match cache keys (e.g., node type ID)
|
|
79
|
+
*/
|
|
80
|
+
export declare function clearSchemaCache(pattern?: string): void;
|
|
81
|
+
/**
|
|
82
|
+
* Invalidates a specific schema cache entry for a node.
|
|
83
|
+
*
|
|
84
|
+
* @param node - The workflow node to invalidate cache for
|
|
85
|
+
* @param endpoint - The dynamic schema endpoint configuration
|
|
86
|
+
*/
|
|
87
|
+
export declare function invalidateSchemaCache(node: WorkflowNode, endpoint: DynamicSchemaEndpoint): void;
|
|
88
|
+
/**
|
|
89
|
+
* Checks if a node has config edit options configured.
|
|
90
|
+
*
|
|
91
|
+
* @param node - The workflow node to check
|
|
92
|
+
* @returns True if the node has config edit options configured
|
|
93
|
+
*/
|
|
94
|
+
export declare function hasConfigEditOptions(node: WorkflowNode): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Determines if external edit should be shown for a node.
|
|
97
|
+
*
|
|
98
|
+
* @param node - The workflow node to check
|
|
99
|
+
* @returns True if external edit link should be shown
|
|
100
|
+
*/
|
|
101
|
+
export declare function shouldShowExternalEdit(node: WorkflowNode): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Determines if dynamic schema should be used for a node.
|
|
104
|
+
*
|
|
105
|
+
* @param node - The workflow node to check
|
|
106
|
+
* @returns True if dynamic schema should be fetched
|
|
107
|
+
*/
|
|
108
|
+
export declare function shouldUseDynamicSchema(node: WorkflowNode): boolean;
|