@flowdrop/flowdrop 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -51
- package/dist/adapters/WorkflowAdapter.d.ts +1 -1
- package/dist/adapters/WorkflowAdapter.js +27 -47
- package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +2 -2
- package/dist/adapters/agentspec/AgentSpecAdapter.js +122 -133
- package/dist/adapters/agentspec/agentAdapter.d.ts +2 -2
- package/dist/adapters/agentspec/agentAdapter.js +10 -10
- package/dist/adapters/agentspec/autoLayout.d.ts +52 -6
- package/dist/adapters/agentspec/autoLayout.js +118 -23
- package/dist/adapters/agentspec/componentTypeDefaults.d.ts +1 -1
- package/dist/adapters/agentspec/componentTypeDefaults.js +120 -120
- package/dist/adapters/agentspec/defaultNodeTypes.d.ts +2 -2
- package/dist/adapters/agentspec/defaultNodeTypes.js +307 -307
- package/dist/adapters/agentspec/index.d.ts +10 -10
- package/dist/adapters/agentspec/index.js +6 -6
- package/dist/adapters/agentspec/validator.d.ts +2 -2
- package/dist/adapters/agentspec/validator.js +20 -22
- package/dist/api/enhanced-client.d.ts +3 -3
- package/dist/api/enhanced-client.js +72 -73
- package/dist/chat/commandClassifier.d.ts +19 -0
- package/dist/chat/commandClassifier.js +30 -0
- package/dist/chat/index.d.ts +27 -0
- package/dist/chat/index.js +32 -0
- package/dist/chat/responseParser.d.ts +21 -0
- package/dist/chat/responseParser.js +91 -0
- package/dist/commands/batch.d.ts +18 -0
- package/dist/commands/batch.js +54 -0
- package/dist/commands/executor.d.ts +37 -0
- package/dist/commands/executor.js +1133 -0
- package/dist/commands/index.d.ts +14 -0
- package/dist/commands/index.js +17 -0
- package/dist/commands/parser.d.ts +16 -0
- package/dist/commands/parser.js +295 -0
- package/dist/commands/positioner.d.ts +19 -0
- package/dist/commands/positioner.js +33 -0
- package/dist/commands/storeIntegration.svelte.d.ts +16 -0
- package/dist/commands/storeIntegration.svelte.js +67 -0
- package/dist/commands/types.d.ts +343 -0
- package/dist/commands/types.js +45 -0
- package/dist/components/App.svelte +522 -237
- package/dist/components/App.svelte.d.ts +11 -8
- package/dist/components/CanvasBanner.stories.svelte +10 -16
- package/dist/components/CanvasBanner.stories.svelte.d.ts +1 -1
- package/dist/components/CanvasBanner.svelte +2 -2
- package/dist/components/CanvasBanner.svelte.d.ts +1 -1
- package/dist/components/CanvasController.svelte +37 -0
- package/dist/components/CanvasController.svelte.d.ts +32 -0
- package/dist/components/ConfigForm.svelte +118 -256
- package/dist/components/ConfigForm.svelte.d.ts +2 -2
- package/dist/components/ConfigMappingRow.svelte +128 -0
- package/dist/components/ConfigMappingRow.svelte.d.ts +8 -0
- package/dist/components/ConfigModal.svelte +3 -3
- package/dist/components/ConfigModal.svelte.d.ts +1 -1
- package/dist/components/ConfigPanel.stories.svelte +19 -19
- package/dist/components/ConfigPanel.stories.svelte.d.ts +1 -1
- package/dist/components/ConfigPanel.svelte +57 -19
- package/dist/components/ConfigPanel.svelte.d.ts +3 -1
- package/dist/components/ConnectionLine.svelte +4 -4
- package/dist/components/EdgeRefresher.svelte +1 -1
- package/dist/components/FlowDropEdge.stories.svelte +110 -110
- package/dist/components/FlowDropEdge.svelte +11 -19
- package/dist/components/FlowDropEdge.svelte.d.ts +1 -1
- package/dist/components/FlowDropZone.svelte +6 -9
- package/dist/components/FlowDropZone.svelte.d.ts +1 -1
- package/dist/components/LoadingSpinner.stories.svelte +13 -13
- package/dist/components/LoadingSpinner.stories.svelte.d.ts +1 -1
- package/dist/components/LoadingSpinner.svelte +3 -3
- package/dist/components/LoadingSpinner.svelte.d.ts +1 -1
- package/dist/components/Logo.stories.svelte +4 -4
- package/dist/components/Logo.stories.svelte.d.ts +1 -1
- package/dist/components/Logo.svelte +3 -9
- package/dist/components/LogsSidebar.svelte +46 -53
- package/dist/components/LogsSidebar.svelte.d.ts +1 -1
- package/dist/components/MarkdownDisplay.stories.svelte +10 -14
- package/dist/components/MarkdownDisplay.stories.svelte.d.ts +1 -1
- package/dist/components/MarkdownDisplay.svelte +4 -6
- package/dist/components/Navbar.stories.svelte +19 -19
- package/dist/components/Navbar.stories.svelte.d.ts +1 -1
- package/dist/components/Navbar.svelte +28 -49
- package/dist/components/Navbar.svelte.d.ts +2 -2
- package/dist/components/NodeSidebar.svelte +55 -135
- package/dist/components/NodeSidebar.svelte.d.ts +1 -1
- package/dist/components/NodeStatusOverlay.stories.svelte +19 -31
- package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +1 -1
- package/dist/components/NodeStatusOverlay.svelte +40 -55
- package/dist/components/NodeStatusOverlay.svelte.d.ts +3 -3
- package/dist/components/NodeSwapPicker.svelte +493 -0
- package/dist/components/NodeSwapPicker.svelte.d.ts +16 -0
- package/dist/components/PipelineStatus.svelte +63 -89
- package/dist/components/PipelineStatus.svelte.d.ts +4 -4
- package/dist/components/PortCoordinateTracker.svelte +5 -7
- package/dist/components/PortCoordinateTracker.svelte.d.ts +1 -1
- package/dist/components/PortMappingRow.svelte +205 -0
- package/dist/components/PortMappingRow.svelte.d.ts +12 -0
- package/dist/components/ReadOnlyDetails.svelte +1 -1
- package/dist/components/SchemaForm.stories.svelte +53 -53
- package/dist/components/SchemaForm.stories.svelte.d.ts +1 -1
- package/dist/components/SchemaForm.svelte +24 -51
- package/dist/components/SchemaForm.svelte.d.ts +2 -2
- package/dist/components/SettingsModal.svelte +6 -9
- package/dist/components/SettingsModal.svelte.d.ts +1 -1
- package/dist/components/SettingsPanel.svelte +138 -158
- package/dist/components/SettingsPanel.svelte.d.ts +1 -1
- package/dist/components/StatusIcon.stories.svelte +16 -29
- package/dist/components/StatusIcon.stories.svelte.d.ts +1 -1
- package/dist/components/StatusIcon.svelte +19 -19
- package/dist/components/StatusIcon.svelte.d.ts +2 -2
- package/dist/components/StatusLabel.stories.svelte +8 -8
- package/dist/components/StatusLabel.stories.svelte.d.ts +1 -1
- package/dist/components/SwapMappingEditor.svelte +529 -0
- package/dist/components/SwapMappingEditor.svelte.d.ts +12 -0
- package/dist/components/ThemeToggle.stories.svelte +10 -10
- package/dist/components/ThemeToggle.stories.svelte.d.ts +1 -1
- package/dist/components/ThemeToggle.svelte +22 -33
- package/dist/components/ThemeToggle.svelte.d.ts +1 -1
- package/dist/components/UniversalNode.svelte +29 -41
- package/dist/components/UniversalNode.svelte.d.ts +3 -3
- package/dist/components/WorkflowEditor.svelte +210 -170
- package/dist/components/WorkflowEditor.svelte.d.ts +12 -4
- package/dist/components/chat/AIChatPanel.svelte +797 -0
- package/dist/components/chat/AIChatPanel.svelte.d.ts +13 -0
- package/dist/components/chat/CommandPreview.svelte +234 -0
- package/dist/components/chat/CommandPreview.svelte.d.ts +9 -0
- package/dist/components/console/CommandConsole.stories.svelte +111 -0
- package/dist/components/console/CommandConsole.stories.svelte.d.ts +27 -0
- package/dist/components/console/CommandConsole.svelte +263 -0
- package/dist/components/console/CommandConsole.svelte.d.ts +11 -0
- package/dist/components/console/ConsoleAutocomplete.svelte +142 -0
- package/dist/components/console/ConsoleAutocomplete.svelte.d.ts +21 -0
- package/dist/components/console/ConsoleInput.svelte +771 -0
- package/dist/components/console/ConsoleInput.svelte.d.ts +16 -0
- package/dist/components/console/ConsoleOutput.svelte +116 -0
- package/dist/components/console/ConsoleOutput.svelte.d.ts +11 -0
- package/dist/components/console/formatters.d.ts +26 -0
- package/dist/components/console/formatters.js +116 -0
- package/dist/components/form/FormArray.svelte +75 -132
- package/dist/components/form/FormArray.svelte.d.ts +1 -1
- package/dist/components/form/FormAutocomplete.svelte +65 -108
- package/dist/components/form/FormAutocomplete.svelte.d.ts +1 -1
- package/dist/components/form/FormCheckboxGroup.stories.svelte +13 -16
- package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormCheckboxGroup.svelte +2 -2
- package/dist/components/form/FormCodeEditor.svelte +42 -56
- package/dist/components/form/FormField.svelte +79 -90
- package/dist/components/form/FormField.svelte.d.ts +2 -2
- package/dist/components/form/FormFieldLight.svelte +72 -88
- package/dist/components/form/FormFieldLight.svelte.d.ts +1 -1
- package/dist/components/form/FormFieldWrapper.stories.svelte +14 -14
- package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormFieldWrapper.svelte +2 -9
- package/dist/components/form/FormFieldWrapper.svelte.d.ts +1 -1
- package/dist/components/form/FormFieldset.svelte +3 -3
- package/dist/components/form/FormFieldset.svelte.d.ts +2 -2
- package/dist/components/form/FormMarkdownEditor.svelte +123 -156
- package/dist/components/form/FormNumberField.stories.svelte +18 -18
- package/dist/components/form/FormNumberField.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormNumberField.svelte +6 -6
- package/dist/components/form/FormRangeField.stories.svelte +13 -13
- package/dist/components/form/FormRangeField.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormRangeField.svelte +4 -12
- package/dist/components/form/FormSelect.stories.svelte +21 -21
- package/dist/components/form/FormSelect.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormSelect.svelte +5 -5
- package/dist/components/form/FormSelect.svelte.d.ts +1 -1
- package/dist/components/form/FormTemplateEditor.svelte +126 -175
- package/dist/components/form/FormTemplateEditor.svelte.d.ts +1 -1
- package/dist/components/form/FormTextField.stories.svelte +17 -23
- package/dist/components/form/FormTextField.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormTextField.svelte +4 -4
- package/dist/components/form/FormTextarea.stories.svelte +18 -21
- package/dist/components/form/FormTextarea.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormTextarea.svelte +4 -4
- package/dist/components/form/FormToggle.stories.svelte +13 -16
- package/dist/components/form/FormToggle.stories.svelte.d.ts +1 -1
- package/dist/components/form/FormToggle.svelte +3 -3
- package/dist/components/form/FormUISchemaRenderer.svelte +12 -19
- package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +3 -3
- package/dist/components/form/index.d.ts +19 -19
- package/dist/components/form/index.js +18 -18
- package/dist/components/form/templateAutocomplete.d.ts +2 -2
- package/dist/components/form/templateAutocomplete.js +55 -64
- package/dist/components/form/types.d.ts +6 -6
- package/dist/components/form/types.js +4 -9
- package/dist/components/icons/AlertCircleIcon.svelte +1 -6
- package/dist/components/icons/CogIcon.svelte +1 -6
- package/dist/components/interrupt/ChoicePrompt.stories.svelte +27 -27
- package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/ChoicePrompt.svelte +17 -41
- package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +17 -17
- package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/ConfirmationPrompt.svelte +10 -16
- package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/FormPrompt.svelte +10 -15
- package/dist/components/interrupt/FormPrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/InterruptBubble.svelte +87 -121
- package/dist/components/interrupt/InterruptBubble.svelte.d.ts +2 -2
- package/dist/components/interrupt/ReviewPrompt.stories.svelte +37 -37
- package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/ReviewPrompt.svelte +55 -75
- package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/TextInputPrompt.stories.svelte +16 -17
- package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +1 -1
- package/dist/components/interrupt/TextInputPrompt.svelte +13 -18
- package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +1 -1
- package/dist/components/interrupt/index.d.ts +6 -5
- package/dist/components/interrupt/index.js +6 -5
- package/dist/components/layouts/MainLayout.svelte +46 -84
- package/dist/components/layouts/MainLayout.svelte.d.ts +6 -6
- package/dist/components/nodes/GatewayNode.stories.svelte +64 -65
- package/dist/components/nodes/GatewayNode.svelte +37 -70
- package/dist/components/nodes/GatewayNode.svelte.d.ts +3 -3
- package/dist/components/nodes/IdeaNode.stories.svelte +25 -26
- package/dist/components/nodes/IdeaNode.svelte +22 -36
- package/dist/components/nodes/IdeaNode.svelte.d.ts +1 -1
- package/dist/components/nodes/NotesNode.stories.svelte +37 -38
- package/dist/components/nodes/NotesNode.svelte +28 -39
- package/dist/components/nodes/NotesNode.svelte.d.ts +1 -1
- package/dist/components/nodes/SimpleNode.stories.svelte +137 -138
- package/dist/components/nodes/SimpleNode.svelte +44 -74
- package/dist/components/nodes/SimpleNode.svelte.d.ts +1 -1
- package/dist/components/nodes/SquareNode.stories.svelte +75 -75
- package/dist/components/nodes/SquareNode.svelte +42 -68
- package/dist/components/nodes/SquareNode.svelte.d.ts +1 -1
- package/dist/components/nodes/TerminalNode.stories.svelte +10 -10
- package/dist/components/nodes/TerminalNode.svelte +74 -112
- package/dist/components/nodes/TerminalNode.svelte.d.ts +1 -1
- package/dist/components/nodes/ToolNode.stories.svelte +115 -116
- package/dist/components/nodes/ToolNode.svelte +31 -64
- package/dist/components/nodes/ToolNode.svelte.d.ts +1 -1
- package/dist/components/nodes/WorkflowNode.stories.svelte +84 -89
- package/dist/components/nodes/WorkflowNode.svelte +50 -103
- package/dist/components/nodes/WorkflowNode.svelte.d.ts +3 -3
- package/dist/components/playground/ChatPanel.svelte +47 -103
- package/dist/components/playground/ExecutionLogs.svelte +45 -68
- package/dist/components/playground/InputCollector.svelte +32 -51
- package/dist/components/playground/MessageBubble.stories.svelte +25 -25
- package/dist/components/playground/MessageBubble.stories.svelte.d.ts +1 -1
- package/dist/components/playground/MessageBubble.svelte +54 -70
- package/dist/components/playground/MessageBubble.svelte.d.ts +1 -1
- package/dist/components/playground/Playground.svelte +60 -91
- package/dist/components/playground/Playground.svelte.d.ts +3 -3
- package/dist/components/playground/PlaygroundModal.svelte +8 -12
- package/dist/components/playground/PlaygroundModal.svelte.d.ts +3 -3
- package/dist/components/playground/SessionManager.svelte +34 -40
- package/dist/components/playground/SessionManager.svelte.d.ts +1 -1
- package/dist/config/agentSpecEndpoints.d.ts +1 -1
- package/dist/config/agentSpecEndpoints.js +20 -20
- package/dist/config/constants.js +2 -2
- package/dist/config/defaultCategories.d.ts +1 -1
- package/dist/config/defaultCategories.js +86 -86
- package/dist/config/defaultPortConfig.d.ts +1 -1
- package/dist/config/defaultPortConfig.js +144 -144
- package/dist/config/endpoints.d.ts +12 -4
- package/dist/config/endpoints.js +70 -65
- package/dist/config/runtimeConfig.d.ts +2 -2
- package/dist/config/runtimeConfig.js +8 -8
- package/dist/core/index.d.ts +68 -63
- package/dist/core/index.js +44 -35
- package/dist/display/index.d.ts +2 -2
- package/dist/display/index.js +2 -2
- package/dist/editor/index.d.ts +64 -62
- package/dist/editor/index.js +57 -55
- package/dist/form/code.d.ts +5 -5
- package/dist/form/code.js +14 -14
- package/dist/form/fieldRegistry.d.ts +3 -3
- package/dist/form/fieldRegistry.js +9 -11
- package/dist/form/full.d.ts +8 -8
- package/dist/form/full.js +9 -9
- package/dist/form/index.d.ts +18 -18
- package/dist/form/index.js +16 -16
- package/dist/form/markdown.d.ts +4 -4
- package/dist/form/markdown.js +8 -8
- package/dist/helpers/proximityConnect.d.ts +3 -3
- package/dist/helpers/proximityConnect.js +40 -35
- package/dist/helpers/workflowEditorHelper.d.ts +8 -58
- package/dist/helpers/workflowEditorHelper.js +73 -292
- package/dist/index.d.ts +6 -6
- package/dist/index.js +6 -6
- package/dist/mocks/app-environment.js +2 -2
- package/dist/mocks/app-forms.js +1 -1
- package/dist/mocks/app-navigation.js +2 -2
- package/dist/mocks/app-stores.js +3 -3
- package/dist/playground/index.d.ts +19 -19
- package/dist/playground/index.js +16 -16
- package/dist/playground/mount.d.ts +3 -3
- package/dist/playground/mount.js +24 -24
- package/dist/registry/builtinFormats.js +13 -13
- package/dist/registry/builtinNodes.d.ts +2 -2
- package/dist/registry/builtinNodes.js +77 -77
- package/dist/registry/index.d.ts +4 -4
- package/dist/registry/index.js +4 -4
- package/dist/registry/nodeComponentRegistry.d.ts +8 -8
- package/dist/registry/nodeComponentRegistry.js +9 -11
- package/dist/registry/plugin.d.ts +2 -2
- package/dist/registry/plugin.js +11 -11
- package/dist/registry/workflowFormatRegistry.d.ts +3 -3
- package/dist/registry/workflowFormatRegistry.js +2 -2
- package/dist/schema/index.d.ts +1 -1
- package/dist/schema/index.js +2 -2
- package/dist/schemas/v1/workflow.schema.json +107 -22
- package/dist/services/agentSpecExecutionService.d.ts +3 -3
- package/dist/services/agentSpecExecutionService.js +55 -56
- package/dist/services/api.d.ts +2 -2
- package/dist/services/api.js +37 -37
- package/dist/services/apiVariableService.d.ts +1 -1
- package/dist/services/apiVariableService.js +34 -41
- package/dist/services/autoSaveService.js +8 -8
- package/dist/services/categoriesApi.d.ts +2 -2
- package/dist/services/categoriesApi.js +8 -8
- package/dist/services/chatService.d.ts +65 -0
- package/dist/services/chatService.js +131 -0
- package/dist/services/draftStorage.d.ts +1 -1
- package/dist/services/draftStorage.js +11 -11
- package/dist/services/dynamicSchemaService.d.ts +1 -1
- package/dist/services/dynamicSchemaService.js +39 -41
- package/dist/services/globalSave.d.ts +2 -2
- package/dist/services/globalSave.js +38 -41
- package/dist/services/historyService.d.ts +7 -5
- package/dist/services/historyService.js +29 -14
- package/dist/services/interruptService.d.ts +1 -1
- package/dist/services/interruptService.js +29 -35
- package/dist/services/nodeExecutionService.d.ts +1 -1
- package/dist/services/nodeExecutionService.js +44 -45
- package/dist/services/playgroundService.d.ts +1 -1
- package/dist/services/playgroundService.js +29 -29
- package/dist/services/portConfigApi.d.ts +2 -2
- package/dist/services/portConfigApi.js +8 -8
- package/dist/services/settingsService.d.ts +2 -2
- package/dist/services/settingsService.js +19 -25
- package/dist/services/toastService.d.ts +4 -4
- package/dist/services/toastService.js +33 -33
- package/dist/services/variableService.d.ts +1 -1
- package/dist/services/variableService.js +36 -36
- package/dist/services/workflowStorage.d.ts +2 -2
- package/dist/services/workflowStorage.js +13 -13
- package/dist/settings/index.d.ts +7 -7
- package/dist/settings/index.js +6 -6
- package/dist/skins/default.d.ts +1 -1
- package/dist/skins/default.js +1 -1
- package/dist/skins/index.d.ts +3 -3
- package/dist/skins/index.js +7 -7
- package/dist/skins/slate.d.ts +1 -1
- package/dist/skins/slate.js +69 -69
- package/dist/stores/categoriesStore.svelte.d.ts +1 -1
- package/dist/stores/categoriesStore.svelte.js +5 -5
- package/dist/stores/editorStateMachine.svelte.d.ts +2 -2
- package/dist/stores/editorStateMachine.svelte.js +34 -34
- package/dist/stores/historyStore.svelte.d.ts +4 -4
- package/dist/stores/historyStore.svelte.js +4 -4
- package/dist/stores/interruptStore.svelte.d.ts +3 -3
- package/dist/stores/interruptStore.svelte.js +27 -22
- package/dist/stores/playgroundStore.svelte.d.ts +3 -3
- package/dist/stores/playgroundStore.svelte.js +29 -23
- package/dist/stores/portCoordinateStore.svelte.d.ts +6 -2
- package/dist/stores/portCoordinateStore.svelte.js +30 -39
- package/dist/stores/settingsStore.svelte.d.ts +2 -2
- package/dist/stores/settingsStore.svelte.js +57 -62
- package/dist/stores/workflowStore.svelte.d.ts +34 -5
- package/dist/stores/workflowStore.svelte.js +127 -108
- package/dist/stories/CanvasDecorator.svelte +7 -10
- package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
- package/dist/stories/EdgeDecorator.svelte +28 -31
- package/dist/stories/EdgeDecorator.svelte.d.ts +1 -1
- package/dist/stories/NodeDecorator.svelte +14 -20
- package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
- package/dist/stories/utils.d.ts +2 -2
- package/dist/stories/utils.js +89 -93
- package/dist/styles/base.css +16 -50
- package/dist/styles/tokens.css +10 -28
- package/dist/svelte-app.d.ts +10 -10
- package/dist/svelte-app.js +39 -39
- package/dist/themes/default.d.ts +1 -1
- package/dist/themes/default.js +4 -4
- package/dist/themes/index.d.ts +3 -3
- package/dist/themes/index.js +11 -11
- package/dist/themes/minimal.d.ts +1 -1
- package/dist/themes/minimal.js +5 -5
- package/dist/types/agentspec.d.ts +18 -18
- package/dist/types/agentspec.js +2 -2
- package/dist/types/auth.d.ts +1 -1
- package/dist/types/auth.js +6 -6
- package/dist/types/chat.d.ts +63 -0
- package/dist/types/chat.js +9 -0
- package/dist/types/config.d.ts +6 -6
- package/dist/types/events.d.ts +28 -2
- package/dist/types/events.js +2 -1
- package/dist/types/index.d.ts +40 -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 +12 -4
- package/dist/types/settings.js +21 -23
- package/dist/types/skin.d.ts +1 -1
- package/dist/types/theme.d.ts +2 -2
- package/dist/types/uischema.d.ts +4 -4
- package/dist/types/uischema.js +3 -3
- package/dist/utils/colors.d.ts +1 -1
- package/dist/utils/colors.js +95 -97
- package/dist/utils/config.d.ts +2 -2
- package/dist/utils/config.js +48 -48
- package/dist/utils/connections.d.ts +2 -2
- package/dist/utils/connections.js +15 -15
- package/dist/utils/edgeStyling.d.ts +42 -0
- package/dist/utils/edgeStyling.js +173 -0
- package/dist/utils/errors.js +3 -3
- package/dist/utils/fetchWithAuth.d.ts +1 -1
- package/dist/utils/fetchWithAuth.js +2 -2
- package/dist/utils/handleIds.d.ts +2 -2
- package/dist/utils/handleIds.js +8 -8
- package/dist/utils/handlePositioning.d.ts +1 -1
- package/dist/utils/handlePositioning.js +2 -2
- package/dist/utils/icons.d.ts +1 -1
- package/dist/utils/icons.js +74 -74
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.js +7 -7
- package/dist/utils/nodeIds.d.ts +31 -0
- package/dist/utils/nodeIds.js +42 -0
- package/dist/utils/nodeStatus.d.ts +1 -1
- package/dist/utils/nodeStatus.js +48 -48
- package/dist/utils/nodeSwap.d.ts +221 -0
- package/dist/utils/nodeSwap.js +680 -0
- package/dist/utils/nodeTypes.d.ts +1 -1
- package/dist/utils/nodeTypes.js +20 -21
- package/dist/utils/nodeWrapper.d.ts +7 -7
- package/dist/utils/nodeWrapper.js +19 -21
- package/dist/utils/performanceUtils.d.ts +1 -1
- package/dist/utils/performanceUtils.js +1 -2
- package/dist/utils/portUtils.d.ts +2 -2
- package/dist/utils/portUtils.js +1 -1
- package/dist/utils/sanitize.js +1 -1
- package/dist/utils/uischema.d.ts +2 -2
- package/dist/utils/uischema.js +8 -8
- package/dist/utils/validation.js +8 -8
- package/package.json +12 -11
- package/dist/helpers/nodeLayoutHelper.d.ts +0 -14
- package/dist/helpers/nodeLayoutHelper.js +0 -19
|
@@ -9,26 +9,72 @@
|
|
|
9
9
|
* 3. Position nodes with configurable spacing
|
|
10
10
|
* 4. Fan out branches vertically from BranchingNode
|
|
11
11
|
*/
|
|
12
|
-
import type { AgentSpecFlow } from
|
|
12
|
+
import type { AgentSpecFlow } from '../../types/agentspec.js';
|
|
13
|
+
/** Measured dimensions for a node */
|
|
14
|
+
export interface NodeDimensions {
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
}
|
|
13
18
|
/** Layout configuration */
|
|
14
19
|
export interface AutoLayoutConfig {
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
|
|
20
|
+
/** Minimum horizontal gap between the right edge of one layer and the left edge of the next (px) */
|
|
21
|
+
horizontalGap: number;
|
|
22
|
+
/** Minimum vertical gap between the bottom edge of one node and the top edge of the next in the same layer (px) */
|
|
23
|
+
verticalGap: number;
|
|
19
24
|
/** Starting X position */
|
|
20
25
|
startX: number;
|
|
21
26
|
/** Starting Y position */
|
|
22
27
|
startY: number;
|
|
28
|
+
/** Fallback node width when measured dimensions are unavailable */
|
|
29
|
+
defaultNodeWidth: number;
|
|
30
|
+
/** Fallback node height when measured dimensions are unavailable */
|
|
31
|
+
defaultNodeHeight: number;
|
|
23
32
|
}
|
|
24
33
|
/**
|
|
25
34
|
* Compute node positions for an Agent Spec flow using layered layout.
|
|
35
|
+
* Takes actual node dimensions into account to prevent overlap.
|
|
26
36
|
*
|
|
27
37
|
* @param flow - The Agent Spec flow to layout
|
|
28
38
|
* @param config - Optional layout configuration
|
|
39
|
+
* @param nodeDimensions - Optional map of node name to measured {width, height}
|
|
29
40
|
* @returns Map of node name to {x, y} position
|
|
30
41
|
*/
|
|
31
|
-
export declare function computeAutoLayout(flow: AgentSpecFlow, config?: Partial<AutoLayoutConfig>): Map<string, {
|
|
42
|
+
export declare function computeAutoLayout(flow: AgentSpecFlow, config?: Partial<AutoLayoutConfig>, nodeDimensions?: Map<string, NodeDimensions>): Map<string, {
|
|
43
|
+
x: number;
|
|
44
|
+
y: number;
|
|
45
|
+
}>;
|
|
46
|
+
/** Input position for beautify: existing node placement */
|
|
47
|
+
export interface NodePosition {
|
|
48
|
+
x: number;
|
|
49
|
+
y: number;
|
|
50
|
+
}
|
|
51
|
+
/** Beautify configuration */
|
|
52
|
+
export interface BeautifyLayoutConfig {
|
|
53
|
+
/** Minimum horizontal gap between the right edge of one column and the left edge of the next (px) */
|
|
54
|
+
horizontalGap: number;
|
|
55
|
+
/** Minimum vertical gap between the bottom edge of one node and the top edge of the next in the same column (px) */
|
|
56
|
+
verticalGap: number;
|
|
57
|
+
/** Fallback node width when measured dimensions are unavailable */
|
|
58
|
+
defaultNodeWidth: number;
|
|
59
|
+
/** Fallback node height when measured dimensions are unavailable */
|
|
60
|
+
defaultNodeHeight: number;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Beautify existing node positions: preserve relative column/row ordering
|
|
64
|
+
* but apply uniform spacing based on actual node dimensions.
|
|
65
|
+
*
|
|
66
|
+
* Algorithm:
|
|
67
|
+
* 1. Cluster nodes into columns by X proximity (gap threshold = median width)
|
|
68
|
+
* 2. Sort columns left-to-right by their median X
|
|
69
|
+
* 3. Within each column, sort nodes top-to-bottom by their original Y
|
|
70
|
+
* 4. Re-position with uniform horizontal and vertical gaps
|
|
71
|
+
*
|
|
72
|
+
* @param positions - Current node positions (keyed by node id)
|
|
73
|
+
* @param config - Optional spacing configuration
|
|
74
|
+
* @param nodeDimensions - Optional map of node id to measured {width, height}
|
|
75
|
+
* @returns Map of node id to new {x, y} position
|
|
76
|
+
*/
|
|
77
|
+
export declare function computeBeautifyLayout(positions: Map<string, NodePosition>, config?: Partial<BeautifyLayoutConfig>, nodeDimensions?: Map<string, NodeDimensions>): Map<string, {
|
|
32
78
|
x: number;
|
|
33
79
|
y: number;
|
|
34
80
|
}>;
|
|
@@ -10,36 +10,41 @@
|
|
|
10
10
|
* 4. Fan out branches vertically from BranchingNode
|
|
11
11
|
*/
|
|
12
12
|
const DEFAULT_CONFIG = {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
horizontalGap: 120,
|
|
14
|
+
verticalGap: 40,
|
|
15
15
|
startX: 100,
|
|
16
16
|
startY: 100,
|
|
17
|
+
defaultNodeWidth: 220,
|
|
18
|
+
defaultNodeHeight: 150
|
|
17
19
|
};
|
|
18
20
|
/**
|
|
19
21
|
* Compute node positions for an Agent Spec flow using layered layout.
|
|
22
|
+
* Takes actual node dimensions into account to prevent overlap.
|
|
20
23
|
*
|
|
21
24
|
* @param flow - The Agent Spec flow to layout
|
|
22
25
|
* @param config - Optional layout configuration
|
|
26
|
+
* @param nodeDimensions - Optional map of node name to measured {width, height}
|
|
23
27
|
* @returns Map of node name to {x, y} position
|
|
24
28
|
*/
|
|
25
|
-
export function computeAutoLayout(flow, config = {}) {
|
|
29
|
+
export function computeAutoLayout(flow, config = {}, nodeDimensions) {
|
|
26
30
|
const cfg = { ...DEFAULT_CONFIG, ...config };
|
|
27
31
|
const positions = new Map();
|
|
28
32
|
if (flow.nodes.length === 0)
|
|
29
33
|
return positions;
|
|
34
|
+
const getDims = (name) => nodeDimensions?.get(name) ?? {
|
|
35
|
+
width: cfg.defaultNodeWidth,
|
|
36
|
+
height: cfg.defaultNodeHeight
|
|
37
|
+
};
|
|
30
38
|
// Build adjacency list from control-flow edges
|
|
31
39
|
const adjacency = new Map();
|
|
32
|
-
const inDegree = new Map();
|
|
33
40
|
for (const node of flow.nodes) {
|
|
34
41
|
adjacency.set(node.name, []);
|
|
35
|
-
inDegree.set(node.name, 0);
|
|
36
42
|
}
|
|
37
43
|
for (const edge of flow.control_flow_connections) {
|
|
38
44
|
const neighbors = adjacency.get(edge.from_node);
|
|
39
45
|
if (neighbors) {
|
|
40
46
|
neighbors.push(edge.to_node);
|
|
41
47
|
}
|
|
42
|
-
inDegree.set(edge.to_node, (inDegree.get(edge.to_node) || 0) + 1);
|
|
43
48
|
}
|
|
44
49
|
// Also consider data-flow edges for connectivity (but don't affect layering priority)
|
|
45
50
|
if (flow.data_flow_connections) {
|
|
@@ -74,21 +79,116 @@ export function computeAutoLayout(flow, config = {}) {
|
|
|
74
79
|
}
|
|
75
80
|
// Sort layers and assign positions
|
|
76
81
|
const sortedLayers = Array.from(layerGroups.keys()).sort((a, b) => a - b);
|
|
82
|
+
// Compute X positions layer by layer, using the widest node in each layer
|
|
83
|
+
const layerXPositions = new Map();
|
|
84
|
+
let currentX = cfg.startX;
|
|
77
85
|
for (const layerIndex of sortedLayers) {
|
|
86
|
+
layerXPositions.set(layerIndex, currentX);
|
|
87
|
+
// Advance X by the widest node in this layer + horizontal gap
|
|
78
88
|
const nodesInLayer = layerGroups.get(layerIndex);
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
89
|
+
const maxWidth = Math.max(...nodesInLayer.map((name) => getDims(name).width));
|
|
90
|
+
currentX += maxWidth + cfg.horizontalGap;
|
|
91
|
+
}
|
|
92
|
+
// Compute Y positions within each layer, using actual node heights
|
|
93
|
+
for (const layerIndex of sortedLayers) {
|
|
94
|
+
const nodesInLayer = layerGroups.get(layerIndex);
|
|
95
|
+
const x = layerXPositions.get(layerIndex);
|
|
96
|
+
// Calculate total height of this column (sum of node heights + gaps)
|
|
97
|
+
const heights = nodesInLayer.map((name) => getDims(name).height);
|
|
98
|
+
const totalHeight = heights.reduce((sum, h) => sum + h, 0) + (nodesInLayer.length - 1) * cfg.verticalGap;
|
|
99
|
+
// Center the column vertically around startY
|
|
100
|
+
let y = cfg.startY - totalHeight / 2;
|
|
83
101
|
for (let i = 0; i < nodesInLayer.length; i++) {
|
|
84
|
-
positions.set(nodesInLayer[i], {
|
|
85
|
-
|
|
86
|
-
y: startY + i * cfg.verticalSpacing,
|
|
87
|
-
});
|
|
102
|
+
positions.set(nodesInLayer[i], { x, y });
|
|
103
|
+
y += heights[i] + cfg.verticalGap;
|
|
88
104
|
}
|
|
89
105
|
}
|
|
90
106
|
return positions;
|
|
91
107
|
}
|
|
108
|
+
const DEFAULT_BEAUTIFY_CONFIG = {
|
|
109
|
+
horizontalGap: 120,
|
|
110
|
+
verticalGap: 40,
|
|
111
|
+
defaultNodeWidth: 220,
|
|
112
|
+
defaultNodeHeight: 150
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Beautify existing node positions: preserve relative column/row ordering
|
|
116
|
+
* but apply uniform spacing based on actual node dimensions.
|
|
117
|
+
*
|
|
118
|
+
* Algorithm:
|
|
119
|
+
* 1. Cluster nodes into columns by X proximity (gap threshold = median width)
|
|
120
|
+
* 2. Sort columns left-to-right by their median X
|
|
121
|
+
* 3. Within each column, sort nodes top-to-bottom by their original Y
|
|
122
|
+
* 4. Re-position with uniform horizontal and vertical gaps
|
|
123
|
+
*
|
|
124
|
+
* @param positions - Current node positions (keyed by node id)
|
|
125
|
+
* @param config - Optional spacing configuration
|
|
126
|
+
* @param nodeDimensions - Optional map of node id to measured {width, height}
|
|
127
|
+
* @returns Map of node id to new {x, y} position
|
|
128
|
+
*/
|
|
129
|
+
export function computeBeautifyLayout(positions, config = {}, nodeDimensions) {
|
|
130
|
+
const cfg = { ...DEFAULT_BEAUTIFY_CONFIG, ...config };
|
|
131
|
+
const result = new Map();
|
|
132
|
+
if (positions.size === 0)
|
|
133
|
+
return result;
|
|
134
|
+
const getDims = (id) => nodeDimensions?.get(id) ?? {
|
|
135
|
+
width: cfg.defaultNodeWidth,
|
|
136
|
+
height: cfg.defaultNodeHeight
|
|
137
|
+
};
|
|
138
|
+
// Collect all nodes sorted by X
|
|
139
|
+
const entries = Array.from(positions.entries()).map(([id, pos]) => ({
|
|
140
|
+
id,
|
|
141
|
+
x: pos.x,
|
|
142
|
+
y: pos.y
|
|
143
|
+
}));
|
|
144
|
+
entries.sort((a, b) => a.x - b.x);
|
|
145
|
+
// Determine clustering threshold: half the median node width
|
|
146
|
+
const widths = entries.map((e) => getDims(e.id).width);
|
|
147
|
+
const sortedWidths = [...widths].sort((a, b) => a - b);
|
|
148
|
+
const medianWidth = sortedWidths[Math.floor(sortedWidths.length / 2)];
|
|
149
|
+
const clusterThreshold = medianWidth * 0.75;
|
|
150
|
+
// Cluster into columns by X proximity
|
|
151
|
+
const columns = [];
|
|
152
|
+
let currentColumn = [entries[0]];
|
|
153
|
+
for (let i = 1; i < entries.length; i++) {
|
|
154
|
+
const prevX = currentColumn[currentColumn.length - 1].x;
|
|
155
|
+
if (entries[i].x - prevX > clusterThreshold) {
|
|
156
|
+
columns.push(currentColumn);
|
|
157
|
+
currentColumn = [entries[i]];
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
currentColumn.push(entries[i]);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
columns.push(currentColumn);
|
|
164
|
+
// Sort each column's nodes top-to-bottom by original Y
|
|
165
|
+
for (const col of columns) {
|
|
166
|
+
col.sort((a, b) => a.y - b.y);
|
|
167
|
+
}
|
|
168
|
+
// Compute the global vertical center from the original positions
|
|
169
|
+
const allYs = entries.map((e) => e.y);
|
|
170
|
+
const globalCenterY = (Math.min(...allYs) + Math.max(...allYs)) / 2;
|
|
171
|
+
// Assign new positions column by column
|
|
172
|
+
let currentX = entries[0].x; // Start from the leftmost original X
|
|
173
|
+
for (const col of columns) {
|
|
174
|
+
// Find the widest node in this column
|
|
175
|
+
const maxWidth = Math.max(...col.map((e) => getDims(e.id).width));
|
|
176
|
+
// Calculate total height of this column
|
|
177
|
+
const heights = col.map((e) => getDims(e.id).height);
|
|
178
|
+
const totalHeight = heights.reduce((sum, h) => sum + h, 0) + (col.length - 1) * cfg.verticalGap;
|
|
179
|
+
// Center column vertically around the global center
|
|
180
|
+
let y = globalCenterY - totalHeight / 2;
|
|
181
|
+
for (let i = 0; i < col.length; i++) {
|
|
182
|
+
result.set(col[i].id, { x: currentX, y });
|
|
183
|
+
y += heights[i] + cfg.verticalGap;
|
|
184
|
+
}
|
|
185
|
+
currentX += maxWidth + cfg.horizontalGap;
|
|
186
|
+
}
|
|
187
|
+
return result;
|
|
188
|
+
}
|
|
189
|
+
// ============================================================================
|
|
190
|
+
// Layer Assignment (for auto-layout)
|
|
191
|
+
// ============================================================================
|
|
92
192
|
/**
|
|
93
193
|
* Assign layers using longest path from the start node (modified BFS).
|
|
94
194
|
* This ensures branching nodes fan out properly and convergence points
|
|
@@ -97,28 +197,23 @@ export function computeAutoLayout(flow, config = {}) {
|
|
|
97
197
|
function assignLayers(startNode, adjacency, nodeCount) {
|
|
98
198
|
const layers = new Map();
|
|
99
199
|
layers.set(startNode, 0);
|
|
100
|
-
//
|
|
101
|
-
//
|
|
200
|
+
// Longest-path BFS: re-queue neighbors whenever their layer increases.
|
|
201
|
+
// This ensures convergence nodes (reached via multiple branches) are
|
|
202
|
+
// placed at the depth of the longest path, not the shortest.
|
|
102
203
|
const queue = [startNode];
|
|
103
|
-
const visited = new Set();
|
|
104
204
|
let iterations = 0;
|
|
105
205
|
const maxIterations = nodeCount * nodeCount + 100; // Safety limit for cycles
|
|
106
206
|
while (queue.length > 0 && iterations < maxIterations) {
|
|
107
207
|
iterations++;
|
|
108
208
|
const current = queue.shift();
|
|
109
|
-
if (visited.has(current))
|
|
110
|
-
continue;
|
|
111
|
-
visited.add(current);
|
|
112
209
|
const currentLayer = layers.get(current) || 0;
|
|
113
210
|
const neighbors = adjacency.get(current) || [];
|
|
114
211
|
for (const neighbor of neighbors) {
|
|
115
212
|
const existingLayer = layers.get(neighbor);
|
|
116
213
|
const newLayer = currentLayer + 1;
|
|
117
|
-
//
|
|
214
|
+
// Only update and re-queue when we find a longer path
|
|
118
215
|
if (existingLayer === undefined || newLayer > existingLayer) {
|
|
119
216
|
layers.set(neighbor, newLayer);
|
|
120
|
-
}
|
|
121
|
-
if (!visited.has(neighbor)) {
|
|
122
217
|
queue.push(neighbor);
|
|
123
218
|
}
|
|
124
219
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Full node type definitions are user-provided via getDefaultAgentSpecNodeTypes()
|
|
9
9
|
* or custom node arrays passed to mountFlowDropApp().
|
|
10
10
|
*/
|
|
11
|
-
import type { NodePort } from
|
|
11
|
+
import type { NodePort } from '../../types/index.js';
|
|
12
12
|
/** Namespace prefix for Agent Spec node type IDs */
|
|
13
13
|
export declare const AGENTSPEC_NAMESPACE = "agentspec";
|
|
14
14
|
/** Standard trigger input port — control flow into a node */
|
|
@@ -12,187 +12,187 @@
|
|
|
12
12
|
// Constants
|
|
13
13
|
// ============================================================================
|
|
14
14
|
/** Namespace prefix for Agent Spec node type IDs */
|
|
15
|
-
export const AGENTSPEC_NAMESPACE =
|
|
15
|
+
export const AGENTSPEC_NAMESPACE = 'agentspec';
|
|
16
16
|
// ============================================================================
|
|
17
17
|
// Standard ports (adapter infrastructure)
|
|
18
18
|
// ============================================================================
|
|
19
19
|
/** Standard trigger input port — control flow into a node */
|
|
20
20
|
export const TRIGGER_INPUT = {
|
|
21
|
-
id:
|
|
22
|
-
name:
|
|
23
|
-
type:
|
|
24
|
-
dataType:
|
|
21
|
+
id: 'trigger',
|
|
22
|
+
name: 'Trigger',
|
|
23
|
+
type: 'input',
|
|
24
|
+
dataType: 'trigger',
|
|
25
25
|
required: false,
|
|
26
|
-
description:
|
|
26
|
+
description: 'Control flow input'
|
|
27
27
|
};
|
|
28
28
|
/** Standard trigger output port — control flow out of a node */
|
|
29
29
|
export const TRIGGER_OUTPUT = {
|
|
30
|
-
id:
|
|
31
|
-
name:
|
|
32
|
-
type:
|
|
33
|
-
dataType:
|
|
30
|
+
id: 'trigger',
|
|
31
|
+
name: 'Trigger',
|
|
32
|
+
type: 'output',
|
|
33
|
+
dataType: 'trigger',
|
|
34
34
|
required: false,
|
|
35
|
-
description:
|
|
35
|
+
description: 'Control flow output'
|
|
36
36
|
};
|
|
37
37
|
/** Tool input port for tool_node */
|
|
38
38
|
const TOOL_INPUT = {
|
|
39
|
-
id:
|
|
40
|
-
name:
|
|
41
|
-
type:
|
|
42
|
-
dataType:
|
|
39
|
+
id: 'tool',
|
|
40
|
+
name: 'Tool',
|
|
41
|
+
type: 'input',
|
|
42
|
+
dataType: 'tool',
|
|
43
43
|
required: false,
|
|
44
|
-
description:
|
|
44
|
+
description: 'Tool connection'
|
|
45
45
|
};
|
|
46
46
|
/** Tool output port for tool_node */
|
|
47
47
|
const TOOL_OUTPUT = {
|
|
48
|
-
id:
|
|
49
|
-
name:
|
|
50
|
-
type:
|
|
51
|
-
dataType:
|
|
52
|
-
description:
|
|
48
|
+
id: 'tool',
|
|
49
|
+
name: 'Tool',
|
|
50
|
+
type: 'output',
|
|
51
|
+
dataType: 'tool',
|
|
52
|
+
description: 'Tool passthrough'
|
|
53
53
|
};
|
|
54
54
|
// ============================================================================
|
|
55
55
|
// Defaults mapping
|
|
56
56
|
// ============================================================================
|
|
57
57
|
const COMPONENT_TYPE_DEFAULTS = new Map([
|
|
58
58
|
[
|
|
59
|
-
|
|
59
|
+
'start_node',
|
|
60
60
|
{
|
|
61
|
-
visualType:
|
|
62
|
-
category:
|
|
63
|
-
color:
|
|
64
|
-
icon:
|
|
65
|
-
badge:
|
|
66
|
-
defaultName:
|
|
67
|
-
defaultDescription:
|
|
61
|
+
visualType: 'terminal',
|
|
62
|
+
category: 'triggers',
|
|
63
|
+
color: '#22c55e',
|
|
64
|
+
icon: 'mdi:play-circle',
|
|
65
|
+
badge: 'START',
|
|
66
|
+
defaultName: 'Start',
|
|
67
|
+
defaultDescription: 'Flow entry point. Defines the initial inputs for the flow.',
|
|
68
68
|
triggerInputs: [],
|
|
69
|
-
triggerOutputs: [TRIGGER_OUTPUT]
|
|
70
|
-
}
|
|
69
|
+
triggerOutputs: [TRIGGER_OUTPUT]
|
|
70
|
+
}
|
|
71
71
|
],
|
|
72
72
|
[
|
|
73
|
-
|
|
73
|
+
'end_node',
|
|
74
74
|
{
|
|
75
|
-
visualType:
|
|
76
|
-
category:
|
|
77
|
-
color:
|
|
78
|
-
icon:
|
|
79
|
-
badge:
|
|
80
|
-
defaultName:
|
|
81
|
-
defaultDescription:
|
|
75
|
+
visualType: 'terminal',
|
|
76
|
+
category: 'outputs',
|
|
77
|
+
color: '#ef4444',
|
|
78
|
+
icon: 'mdi:stop-circle',
|
|
79
|
+
badge: 'END',
|
|
80
|
+
defaultName: 'End',
|
|
81
|
+
defaultDescription: 'Flow exit point. Defines the final outputs of the flow.',
|
|
82
82
|
triggerInputs: [TRIGGER_INPUT],
|
|
83
|
-
triggerOutputs: []
|
|
84
|
-
}
|
|
83
|
+
triggerOutputs: []
|
|
84
|
+
}
|
|
85
85
|
],
|
|
86
86
|
[
|
|
87
|
-
|
|
87
|
+
'llm_node',
|
|
88
88
|
{
|
|
89
|
-
visualType:
|
|
90
|
-
category:
|
|
91
|
-
color:
|
|
92
|
-
icon:
|
|
93
|
-
badge:
|
|
94
|
-
defaultName:
|
|
95
|
-
defaultDescription:
|
|
89
|
+
visualType: 'default',
|
|
90
|
+
category: 'ai',
|
|
91
|
+
color: '#8b5cf6',
|
|
92
|
+
icon: 'mdi:brain',
|
|
93
|
+
badge: 'LLM',
|
|
94
|
+
defaultName: 'LLM',
|
|
95
|
+
defaultDescription: 'Generate text using a large language model with configurable prompts.',
|
|
96
96
|
triggerInputs: [TRIGGER_INPUT],
|
|
97
|
-
triggerOutputs: [TRIGGER_OUTPUT]
|
|
98
|
-
}
|
|
97
|
+
triggerOutputs: [TRIGGER_OUTPUT]
|
|
98
|
+
}
|
|
99
99
|
],
|
|
100
100
|
[
|
|
101
|
-
|
|
101
|
+
'branching_node',
|
|
102
102
|
{
|
|
103
|
-
visualType:
|
|
104
|
-
category:
|
|
105
|
-
color:
|
|
106
|
-
icon:
|
|
107
|
-
badge:
|
|
108
|
-
defaultName:
|
|
109
|
-
defaultDescription:
|
|
103
|
+
visualType: 'gateway',
|
|
104
|
+
category: 'logic',
|
|
105
|
+
color: '#f59e0b',
|
|
106
|
+
icon: 'mdi:source-branch',
|
|
107
|
+
badge: 'BRANCH',
|
|
108
|
+
defaultName: 'Branch',
|
|
109
|
+
defaultDescription: 'Route execution to different paths based on conditions.',
|
|
110
110
|
triggerInputs: [TRIGGER_INPUT],
|
|
111
|
-
triggerOutputs: []
|
|
112
|
-
}
|
|
111
|
+
triggerOutputs: []
|
|
112
|
+
}
|
|
113
113
|
],
|
|
114
114
|
[
|
|
115
|
-
|
|
115
|
+
'tool_node',
|
|
116
116
|
{
|
|
117
|
-
visualType:
|
|
118
|
-
category:
|
|
119
|
-
color:
|
|
120
|
-
icon:
|
|
121
|
-
badge:
|
|
122
|
-
defaultName:
|
|
123
|
-
defaultDescription:
|
|
117
|
+
visualType: 'tool',
|
|
118
|
+
category: 'tools',
|
|
119
|
+
color: '#06b6d4',
|
|
120
|
+
icon: 'mdi:wrench',
|
|
121
|
+
badge: 'TOOL',
|
|
122
|
+
defaultName: 'Tool',
|
|
123
|
+
defaultDescription: 'Execute a tool function with inputs and receive outputs.',
|
|
124
124
|
triggerInputs: [TRIGGER_INPUT, TOOL_INPUT],
|
|
125
|
-
triggerOutputs: [TRIGGER_OUTPUT, TOOL_OUTPUT]
|
|
126
|
-
}
|
|
125
|
+
triggerOutputs: [TRIGGER_OUTPUT, TOOL_OUTPUT]
|
|
126
|
+
}
|
|
127
127
|
],
|
|
128
128
|
[
|
|
129
|
-
|
|
129
|
+
'api_node',
|
|
130
130
|
{
|
|
131
|
-
visualType:
|
|
132
|
-
category:
|
|
133
|
-
color:
|
|
134
|
-
icon:
|
|
135
|
-
badge:
|
|
136
|
-
defaultName:
|
|
137
|
-
defaultDescription:
|
|
131
|
+
visualType: 'default',
|
|
132
|
+
category: 'data',
|
|
133
|
+
color: '#3b82f6',
|
|
134
|
+
icon: 'mdi:api',
|
|
135
|
+
badge: 'API',
|
|
136
|
+
defaultName: 'API Call',
|
|
137
|
+
defaultDescription: 'Make an HTTP API call with configurable endpoint, method, and headers.',
|
|
138
138
|
triggerInputs: [TRIGGER_INPUT],
|
|
139
|
-
triggerOutputs: [TRIGGER_OUTPUT]
|
|
140
|
-
}
|
|
139
|
+
triggerOutputs: [TRIGGER_OUTPUT]
|
|
140
|
+
}
|
|
141
141
|
],
|
|
142
142
|
[
|
|
143
|
-
|
|
143
|
+
'agent_node',
|
|
144
144
|
{
|
|
145
|
-
visualType:
|
|
146
|
-
category:
|
|
147
|
-
color:
|
|
148
|
-
icon:
|
|
149
|
-
badge:
|
|
150
|
-
defaultName:
|
|
151
|
-
defaultDescription:
|
|
145
|
+
visualType: 'default',
|
|
146
|
+
category: 'agents',
|
|
147
|
+
color: '#ec4899',
|
|
148
|
+
icon: 'mdi:robot',
|
|
149
|
+
badge: 'AGENT',
|
|
150
|
+
defaultName: 'Agent',
|
|
151
|
+
defaultDescription: 'Run a multi-round agent conversation within the flow.',
|
|
152
152
|
triggerInputs: [TRIGGER_INPUT],
|
|
153
|
-
triggerOutputs: [TRIGGER_OUTPUT]
|
|
154
|
-
}
|
|
153
|
+
triggerOutputs: [TRIGGER_OUTPUT]
|
|
154
|
+
}
|
|
155
155
|
],
|
|
156
156
|
[
|
|
157
|
-
|
|
157
|
+
'flow_node',
|
|
158
158
|
{
|
|
159
|
-
visualType:
|
|
160
|
-
category:
|
|
161
|
-
color:
|
|
162
|
-
icon:
|
|
163
|
-
badge:
|
|
164
|
-
defaultName:
|
|
165
|
-
defaultDescription:
|
|
159
|
+
visualType: 'simple',
|
|
160
|
+
category: 'processing',
|
|
161
|
+
color: '#14b8a6',
|
|
162
|
+
icon: 'mdi:sitemap',
|
|
163
|
+
badge: 'FLOW',
|
|
164
|
+
defaultName: 'Sub-Flow',
|
|
165
|
+
defaultDescription: 'Execute another flow as a sub-routine within this flow.',
|
|
166
166
|
triggerInputs: [TRIGGER_INPUT],
|
|
167
|
-
triggerOutputs: [TRIGGER_OUTPUT]
|
|
168
|
-
}
|
|
167
|
+
triggerOutputs: [TRIGGER_OUTPUT]
|
|
168
|
+
}
|
|
169
169
|
],
|
|
170
170
|
[
|
|
171
|
-
|
|
171
|
+
'map_node',
|
|
172
172
|
{
|
|
173
|
-
visualType:
|
|
174
|
-
category:
|
|
175
|
-
color:
|
|
176
|
-
icon:
|
|
177
|
-
badge:
|
|
178
|
-
defaultName:
|
|
179
|
-
defaultDescription:
|
|
173
|
+
visualType: 'default',
|
|
174
|
+
category: 'processing',
|
|
175
|
+
color: '#f97316',
|
|
176
|
+
icon: 'mdi:map-marker-path',
|
|
177
|
+
badge: 'MAP',
|
|
178
|
+
defaultName: 'Map',
|
|
179
|
+
defaultDescription: 'Apply a flow or operation to each item in a collection (map-reduce).',
|
|
180
180
|
triggerInputs: [TRIGGER_INPUT],
|
|
181
|
-
triggerOutputs: [TRIGGER_OUTPUT]
|
|
182
|
-
}
|
|
183
|
-
]
|
|
181
|
+
triggerOutputs: [TRIGGER_OUTPUT]
|
|
182
|
+
}
|
|
183
|
+
]
|
|
184
184
|
]);
|
|
185
185
|
/** Fallback defaults for unrecognized component types */
|
|
186
186
|
const UNKNOWN_DEFAULTS = {
|
|
187
|
-
visualType:
|
|
188
|
-
category:
|
|
189
|
-
color:
|
|
190
|
-
icon:
|
|
191
|
-
badge:
|
|
192
|
-
defaultName:
|
|
193
|
-
defaultDescription:
|
|
187
|
+
visualType: 'default',
|
|
188
|
+
category: 'processing',
|
|
189
|
+
color: '#6b7280',
|
|
190
|
+
icon: 'mdi:puzzle',
|
|
191
|
+
badge: '',
|
|
192
|
+
defaultName: 'Unknown',
|
|
193
|
+
defaultDescription: 'Agent Spec node',
|
|
194
194
|
triggerInputs: [TRIGGER_INPUT],
|
|
195
|
-
triggerOutputs: [TRIGGER_OUTPUT]
|
|
195
|
+
triggerOutputs: [TRIGGER_OUTPUT]
|
|
196
196
|
};
|
|
197
197
|
// ============================================================================
|
|
198
198
|
// Public API
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
* });
|
|
19
19
|
* ```
|
|
20
20
|
*/
|
|
21
|
-
import type { NodeMetadata, NodePort } from
|
|
22
|
-
import type { AgentSpecNodeComponentType } from
|
|
21
|
+
import type { NodeMetadata, NodePort } from '../../types/index.js';
|
|
22
|
+
import type { AgentSpecNodeComponentType } from '../../types/agentspec.js';
|
|
23
23
|
/**
|
|
24
24
|
* Get FlowDrop NodeMetadata for an Agent Spec component type.
|
|
25
25
|
*
|