@foresthubai/workflow-builder 0.3.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 +661 -0
- package/NOTICE +16 -0
- package/README.md +93 -0
- package/dist/BuilderLayout.d.ts +34 -0
- package/dist/BuilderLayout.d.ts.map +1 -0
- package/dist/BuilderLayout.js +172 -0
- package/dist/BuilderLayout.js.map +1 -0
- package/dist/Canvas.d.ts +23 -0
- package/dist/Canvas.d.ts.map +1 -0
- package/dist/Canvas.js +141 -0
- package/dist/Canvas.js.map +1 -0
- package/dist/CanvasEditor.d.ts +46 -0
- package/dist/CanvasEditor.d.ts.map +1 -0
- package/dist/CanvasEditor.js +57 -0
- package/dist/CanvasEditor.js.map +1 -0
- package/dist/CanvasTabsToolbar.d.ts +11 -0
- package/dist/CanvasTabsToolbar.d.ts.map +1 -0
- package/dist/CanvasTabsToolbar.js +101 -0
- package/dist/CanvasTabsToolbar.js.map +1 -0
- package/dist/RightConfigPanel.d.ts +27 -0
- package/dist/RightConfigPanel.d.ts.map +1 -0
- package/dist/RightConfigPanel.js +102 -0
- package/dist/RightConfigPanel.js.map +1 -0
- package/dist/WorkflowBuilder.d.ts +62 -0
- package/dist/WorkflowBuilder.d.ts.map +1 -0
- package/dist/WorkflowBuilder.js +275 -0
- package/dist/WorkflowBuilder.js.map +1 -0
- package/dist/cn.d.ts +3 -0
- package/dist/cn.d.ts.map +1 -0
- package/dist/cn.js +6 -0
- package/dist/cn.js.map +1 -0
- package/dist/components/ui/add-button.d.ts +16 -0
- package/dist/components/ui/add-button.d.ts.map +1 -0
- package/dist/components/ui/add-button.js +21 -0
- package/dist/components/ui/add-button.js.map +1 -0
- package/dist/components/ui/alert-dialog.d.ts +21 -0
- package/dist/components/ui/alert-dialog.d.ts.map +1 -0
- package/dist/components/ui/alert-dialog.js +30 -0
- package/dist/components/ui/alert-dialog.js.map +1 -0
- package/dist/components/ui/alert.d.ts +9 -0
- package/dist/components/ui/alert.d.ts.map +1 -0
- package/dist/components/ui/alert.js +23 -0
- package/dist/components/ui/alert.js.map +1 -0
- package/dist/components/ui/badge.d.ts +10 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/badge.js +21 -0
- package/dist/components/ui/badge.js.map +1 -0
- package/dist/components/ui/button.d.ts +13 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +40 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/card.d.ts +9 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/card.js +17 -0
- package/dist/components/ui/card.js.map +1 -0
- package/dist/components/ui/checkbox.d.ts +5 -0
- package/dist/components/ui/checkbox.d.ts.map +1 -0
- package/dist/components/ui/checkbox.js +9 -0
- package/dist/components/ui/checkbox.js.map +1 -0
- package/dist/components/ui/collapsible.d.ts +6 -0
- package/dist/components/ui/collapsible.d.ts.map +1 -0
- package/dist/components/ui/collapsible.js +6 -0
- package/dist/components/ui/collapsible.js.map +1 -0
- package/dist/components/ui/command.d.ts +82 -0
- package/dist/components/ui/command.d.ts.map +1 -0
- package/dist/components/ui/command.js +29 -0
- package/dist/components/ui/command.js.map +1 -0
- package/dist/components/ui/delete-button.d.ts +11 -0
- package/dist/components/ui/delete-button.d.ts.map +1 -0
- package/dist/components/ui/delete-button.js +14 -0
- package/dist/components/ui/delete-button.js.map +1 -0
- package/dist/components/ui/dialog.d.ts +22 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/dialog.js +27 -0
- package/dist/components/ui/dialog.js.map +1 -0
- package/dist/components/ui/dropdown-menu.d.ts +28 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu.js +36 -0
- package/dist/components/ui/dropdown-menu.js.map +1 -0
- package/dist/components/ui/input.d.ts +13 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/input.js +34 -0
- package/dist/components/ui/input.js.map +1 -0
- package/dist/components/ui/label.d.ts +6 -0
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/label.js +10 -0
- package/dist/components/ui/label.js.map +1 -0
- package/dist/components/ui/readonly-banner.d.ts +7 -0
- package/dist/components/ui/readonly-banner.d.ts.map +1 -0
- package/dist/components/ui/readonly-banner.js +12 -0
- package/dist/components/ui/readonly-banner.js.map +1 -0
- package/dist/components/ui/resizable.d.ts +24 -0
- package/dist/components/ui/resizable.d.ts.map +1 -0
- package/dist/components/ui/resizable.js +9 -0
- package/dist/components/ui/resizable.js.map +1 -0
- package/dist/components/ui/scroll-area.d.ts +45 -0
- package/dist/components/ui/scroll-area.d.ts.map +1 -0
- package/dist/components/ui/scroll-area.js +27 -0
- package/dist/components/ui/scroll-area.js.map +1 -0
- package/dist/components/ui/select.d.ts +14 -0
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/select.js +30 -0
- package/dist/components/ui/select.js.map +1 -0
- package/dist/components/ui/separator.d.ts +5 -0
- package/dist/components/ui/separator.d.ts.map +1 -0
- package/dist/components/ui/separator.js +8 -0
- package/dist/components/ui/separator.js.map +1 -0
- package/dist/components/ui/switch.d.ts +5 -0
- package/dist/components/ui/switch.d.ts.map +1 -0
- package/dist/components/ui/switch.js +8 -0
- package/dist/components/ui/switch.js.map +1 -0
- package/dist/components/ui/textarea.d.ts +12 -0
- package/dist/components/ui/textarea.d.ts.map +1 -0
- package/dist/components/ui/textarea.js +34 -0
- package/dist/components/ui/textarea.js.map +1 -0
- package/dist/components/ui/toast.d.ts +16 -0
- package/dist/components/ui/toast.d.ts.map +1 -0
- package/dist/components/ui/toast.js +34 -0
- package/dist/components/ui/toast.js.map +1 -0
- package/dist/components/ui/toaster.d.ts +2 -0
- package/dist/components/ui/toaster.d.ts.map +1 -0
- package/dist/components/ui/toaster.js +10 -0
- package/dist/components/ui/toaster.js.map +1 -0
- package/dist/components/ui/toggle-group.d.ts +13 -0
- package/dist/components/ui/toggle-group.d.ts.map +1 -0
- package/dist/components/ui/toggle-group.js +21 -0
- package/dist/components/ui/toggle-group.js.map +1 -0
- package/dist/components/ui/toggle.d.ts +13 -0
- package/dist/components/ui/toggle.d.ts.map +1 -0
- package/dist/components/ui/toggle.js +26 -0
- package/dist/components/ui/toggle.js.map +1 -0
- package/dist/components/ui/tooltip.d.ts +8 -0
- package/dist/components/ui/tooltip.d.ts.map +1 -0
- package/dist/components/ui/tooltip.js +14 -0
- package/dist/components/ui/tooltip.js.map +1 -0
- package/dist/dialogs/NodePickerDialog.d.ts +10 -0
- package/dist/dialogs/NodePickerDialog.d.ts.map +1 -0
- package/dist/dialogs/NodePickerDialog.js +39 -0
- package/dist/dialogs/NodePickerDialog.js.map +1 -0
- package/dist/dialogs/ValidationDialog.d.ts +17 -0
- package/dist/dialogs/ValidationDialog.d.ts.map +1 -0
- package/dist/dialogs/ValidationDialog.js +29 -0
- package/dist/dialogs/ValidationDialog.js.map +1 -0
- package/dist/graph/BaseNode.d.ts +9 -0
- package/dist/graph/BaseNode.d.ts.map +1 -0
- package/dist/graph/BaseNode.js +318 -0
- package/dist/graph/BaseNode.js.map +1 -0
- package/dist/graph/CustomEdge.d.ts +14 -0
- package/dist/graph/CustomEdge.d.ts.map +1 -0
- package/dist/graph/CustomEdge.js +107 -0
- package/dist/graph/CustomEdge.js.map +1 -0
- package/dist/graph/CustomNode.d.ts +3 -0
- package/dist/graph/CustomNode.d.ts.map +1 -0
- package/dist/graph/CustomNode.js +15 -0
- package/dist/graph/CustomNode.js.map +1 -0
- package/dist/graph/FunctionCallNode.d.ts +3 -0
- package/dist/graph/FunctionCallNode.d.ts.map +1 -0
- package/dist/graph/FunctionCallNode.js +25 -0
- package/dist/graph/FunctionCallNode.js.map +1 -0
- package/dist/graph/PortHandle.d.ts +21 -0
- package/dist/graph/PortHandle.d.ts.map +1 -0
- package/dist/graph/PortHandle.js +113 -0
- package/dist/graph/PortHandle.js.map +1 -0
- package/dist/graph/reactFlowRegistry.d.ts +65 -0
- package/dist/graph/reactFlowRegistry.d.ts.map +1 -0
- package/dist/graph/reactFlowRegistry.js +24 -0
- package/dist/graph/reactFlowRegistry.js.map +1 -0
- package/dist/hooks/use-toast.d.ts +47 -0
- package/dist/hooks/use-toast.d.ts.map +1 -0
- package/dist/hooks/use-toast.js +95 -0
- package/dist/hooks/use-toast.js.map +1 -0
- package/dist/hooks/useAvailableVariables.d.ts +12 -0
- package/dist/hooks/useAvailableVariables.d.ts.map +1 -0
- package/dist/hooks/useAvailableVariables.js +16 -0
- package/dist/hooks/useAvailableVariables.js.map +1 -0
- package/dist/hooks/useCanvasHistory.d.ts +14 -0
- package/dist/hooks/useCanvasHistory.d.ts.map +1 -0
- package/dist/hooks/useCanvasHistory.js +20 -0
- package/dist/hooks/useCanvasHistory.js.map +1 -0
- package/dist/hooks/useCanvasTabs.d.ts +23 -0
- package/dist/hooks/useCanvasTabs.d.ts.map +1 -0
- package/dist/hooks/useCanvasTabs.js +136 -0
- package/dist/hooks/useCanvasTabs.js.map +1 -0
- package/dist/hooks/useFunctionDiagnosticsSync.d.ts +14 -0
- package/dist/hooks/useFunctionDiagnosticsSync.d.ts.map +1 -0
- package/dist/hooks/useFunctionDiagnosticsSync.js +38 -0
- package/dist/hooks/useFunctionDiagnosticsSync.js.map +1 -0
- package/dist/hooks/useFunctionRegistry.d.ts +15 -0
- package/dist/hooks/useFunctionRegistry.d.ts.map +1 -0
- package/dist/hooks/useFunctionRegistry.js +22 -0
- package/dist/hooks/useFunctionRegistry.js.map +1 -0
- package/dist/hooks/useFunctions.d.ts +15 -0
- package/dist/hooks/useFunctions.d.ts.map +1 -0
- package/dist/hooks/useFunctions.js +34 -0
- package/dist/hooks/useFunctions.js.map +1 -0
- package/dist/hooks/useGraph.d.ts +40 -0
- package/dist/hooks/useGraph.d.ts.map +1 -0
- package/dist/hooks/useGraph.js +102 -0
- package/dist/hooks/useGraph.js.map +1 -0
- package/dist/hooks/useNodeDefinitions.d.ts +17 -0
- package/dist/hooks/useNodeDefinitions.d.ts.map +1 -0
- package/dist/hooks/useNodeDefinitions.js +65 -0
- package/dist/hooks/useNodeDefinitions.js.map +1 -0
- package/dist/hooks/useParamErrors.d.ts +12 -0
- package/dist/hooks/useParamErrors.d.ts.map +1 -0
- package/dist/hooks/useParamErrors.js +28 -0
- package/dist/hooks/useParamErrors.js.map +1 -0
- package/dist/hooks/useResolvedTheme.d.ts +10 -0
- package/dist/hooks/useResolvedTheme.d.ts.map +1 -0
- package/dist/hooks/useResolvedTheme.js +29 -0
- package/dist/hooks/useResolvedTheme.js.map +1 -0
- package/dist/hooks/useResourceDiagnosticsSync.d.ts +40 -0
- package/dist/hooks/useResourceDiagnosticsSync.d.ts.map +1 -0
- package/dist/hooks/useResourceDiagnosticsSync.js +39 -0
- package/dist/hooks/useResourceDiagnosticsSync.js.map +1 -0
- package/dist/hooks/useSuppressThemeTransition.d.ts +32 -0
- package/dist/hooks/useSuppressThemeTransition.d.ts.map +1 -0
- package/dist/hooks/useSuppressThemeTransition.js +75 -0
- package/dist/hooks/useSuppressThemeTransition.js.map +1 -0
- package/dist/hooks/useWorkflowSerialization.d.ts +24 -0
- package/dist/hooks/useWorkflowSerialization.d.ts.map +1 -0
- package/dist/hooks/useWorkflowSerialization.js +113 -0
- package/dist/hooks/useWorkflowSerialization.js.map +1 -0
- package/dist/i18n/index.d.ts +4 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +46 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/locales/de.json +501 -0
- package/dist/i18n/locales/en.json +557 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/inputs/ExpressionInput.d.ts +12 -0
- package/dist/inputs/ExpressionInput.d.ts.map +1 -0
- package/dist/inputs/ExpressionInput.js +203 -0
- package/dist/inputs/ExpressionInput.js.map +1 -0
- package/dist/inputs/ParameterEditor.d.ts +13 -0
- package/dist/inputs/ParameterEditor.d.ts.map +1 -0
- package/dist/inputs/ParameterEditor.js +204 -0
- package/dist/inputs/ParameterEditor.js.map +1 -0
- package/dist/inputs/PortSection.d.ts +31 -0
- package/dist/inputs/PortSection.d.ts.map +1 -0
- package/dist/inputs/PortSection.js +26 -0
- package/dist/inputs/PortSection.js.map +1 -0
- package/dist/panels/BuilderSidebar.d.ts +24 -0
- package/dist/panels/BuilderSidebar.d.ts.map +1 -0
- package/dist/panels/BuilderSidebar.js +202 -0
- package/dist/panels/BuilderSidebar.js.map +1 -0
- package/dist/panels/ChannelConfigPanel.d.ts +8 -0
- package/dist/panels/ChannelConfigPanel.d.ts.map +1 -0
- package/dist/panels/ChannelConfigPanel.js +26 -0
- package/dist/panels/ChannelConfigPanel.js.map +1 -0
- package/dist/panels/ChannelsPanel.d.ts +2 -0
- package/dist/panels/ChannelsPanel.d.ts.map +1 -0
- package/dist/panels/ChannelsPanel.js +16 -0
- package/dist/panels/ChannelsPanel.js.map +1 -0
- package/dist/panels/DebugConsolePanel.d.ts +2 -0
- package/dist/panels/DebugConsolePanel.d.ts.map +1 -0
- package/dist/panels/DebugConsolePanel.js +32 -0
- package/dist/panels/DebugConsolePanel.js.map +1 -0
- package/dist/panels/DebugContextPanel.d.ts +2 -0
- package/dist/panels/DebugContextPanel.d.ts.map +1 -0
- package/dist/panels/DebugContextPanel.js +32 -0
- package/dist/panels/DebugContextPanel.js.map +1 -0
- package/dist/panels/DebugExternalIOPanel.d.ts +9 -0
- package/dist/panels/DebugExternalIOPanel.d.ts.map +1 -0
- package/dist/panels/DebugExternalIOPanel.js +66 -0
- package/dist/panels/DebugExternalIOPanel.js.map +1 -0
- package/dist/panels/DiagnosticsPanel.d.ts +8 -0
- package/dist/panels/DiagnosticsPanel.d.ts.map +1 -0
- package/dist/panels/DiagnosticsPanel.js +86 -0
- package/dist/panels/DiagnosticsPanel.js.map +1 -0
- package/dist/panels/EdgeConfigPanel.d.ts +14 -0
- package/dist/panels/EdgeConfigPanel.d.ts.map +1 -0
- package/dist/panels/EdgeConfigPanel.js +34 -0
- package/dist/panels/EdgeConfigPanel.js.map +1 -0
- package/dist/panels/FunctionConfigPanel.d.ts +16 -0
- package/dist/panels/FunctionConfigPanel.d.ts.map +1 -0
- package/dist/panels/FunctionConfigPanel.js +62 -0
- package/dist/panels/FunctionConfigPanel.js.map +1 -0
- package/dist/panels/FunctionListPanel.d.ts +14 -0
- package/dist/panels/FunctionListPanel.d.ts.map +1 -0
- package/dist/panels/FunctionListPanel.js +25 -0
- package/dist/panels/FunctionListPanel.js.map +1 -0
- package/dist/panels/MemoryConfigPanel.d.ts +8 -0
- package/dist/panels/MemoryConfigPanel.d.ts.map +1 -0
- package/dist/panels/MemoryConfigPanel.js +22 -0
- package/dist/panels/MemoryConfigPanel.js.map +1 -0
- package/dist/panels/MemoryPanel.d.ts +2 -0
- package/dist/panels/MemoryPanel.d.ts.map +1 -0
- package/dist/panels/MemoryPanel.js +25 -0
- package/dist/panels/MemoryPanel.js.map +1 -0
- package/dist/panels/ModelConfigPanel.d.ts +8 -0
- package/dist/panels/ModelConfigPanel.d.ts.map +1 -0
- package/dist/panels/ModelConfigPanel.js +14 -0
- package/dist/panels/ModelConfigPanel.js.map +1 -0
- package/dist/panels/ModelsPanel.d.ts +8 -0
- package/dist/panels/ModelsPanel.d.ts.map +1 -0
- package/dist/panels/ModelsPanel.js +24 -0
- package/dist/panels/ModelsPanel.js.map +1 -0
- package/dist/panels/NodeConfigPanel.d.ts +16 -0
- package/dist/panels/NodeConfigPanel.d.ts.map +1 -0
- package/dist/panels/NodeConfigPanel.js +248 -0
- package/dist/panels/NodeConfigPanel.js.map +1 -0
- package/dist/panels/NodeLibrary.d.ts +16 -0
- package/dist/panels/NodeLibrary.d.ts.map +1 -0
- package/dist/panels/NodeLibrary.js +125 -0
- package/dist/panels/NodeLibrary.js.map +1 -0
- package/dist/panels/ResourceConfigPanel.d.ts +37 -0
- package/dist/panels/ResourceConfigPanel.d.ts.map +1 -0
- package/dist/panels/ResourceConfigPanel.js +35 -0
- package/dist/panels/ResourceConfigPanel.js.map +1 -0
- package/dist/panels/ResourceListPanel.d.ts +35 -0
- package/dist/panels/ResourceListPanel.d.ts.map +1 -0
- package/dist/panels/ResourceListPanel.js +35 -0
- package/dist/panels/ResourceListPanel.js.map +1 -0
- package/dist/panels/VariableConfigPanel.d.ts +9 -0
- package/dist/panels/VariableConfigPanel.d.ts.map +1 -0
- package/dist/panels/VariableConfigPanel.js +50 -0
- package/dist/panels/VariableConfigPanel.js.map +1 -0
- package/dist/panels/VariablesPanel.d.ts +7 -0
- package/dist/panels/VariablesPanel.d.ts.map +1 -0
- package/dist/panels/VariablesPanel.js +56 -0
- package/dist/panels/VariablesPanel.js.map +1 -0
- package/dist/stores/canvasStore.d.ts +41 -0
- package/dist/stores/canvasStore.d.ts.map +1 -0
- package/dist/stores/canvasStore.js +187 -0
- package/dist/stores/canvasStore.js.map +1 -0
- package/dist/stores/debugStore.d.ts +42 -0
- package/dist/stores/debugStore.d.ts.map +1 -0
- package/dist/stores/debugStore.js +22 -0
- package/dist/stores/debugStore.js.map +1 -0
- package/dist/stores/diagnosticsStore.d.ts +41 -0
- package/dist/stores/diagnosticsStore.d.ts.map +1 -0
- package/dist/stores/diagnosticsStore.js +67 -0
- package/dist/stores/diagnosticsStore.js.map +1 -0
- package/dist/stores/editorStore.d.ts +76 -0
- package/dist/stores/editorStore.d.ts.map +1 -0
- package/dist/stores/editorStore.js +116 -0
- package/dist/stores/editorStore.js.map +1 -0
- package/dist/utils/categoryConstants.d.ts +4 -0
- package/dist/utils/categoryConstants.d.ts.map +1 -0
- package/dist/utils/categoryConstants.js +24 -0
- package/dist/utils/categoryConstants.js.map +1 -0
- package/dist/utils/channelOperations.d.ts +21 -0
- package/dist/utils/channelOperations.d.ts.map +1 -0
- package/dist/utils/channelOperations.js +84 -0
- package/dist/utils/channelOperations.js.map +1 -0
- package/dist/utils/connectionRules.d.ts +15 -0
- package/dist/utils/connectionRules.d.ts.map +1 -0
- package/dist/utils/connectionRules.js +113 -0
- package/dist/utils/connectionRules.js.map +1 -0
- package/dist/utils/functionOperations.d.ts +27 -0
- package/dist/utils/functionOperations.d.ts.map +1 -0
- package/dist/utils/functionOperations.js +140 -0
- package/dist/utils/functionOperations.js.map +1 -0
- package/dist/utils/graphOperations.d.ts +54 -0
- package/dist/utils/graphOperations.d.ts.map +1 -0
- package/dist/utils/graphOperations.js +461 -0
- package/dist/utils/graphOperations.js.map +1 -0
- package/dist/utils/history.d.ts +76 -0
- package/dist/utils/history.d.ts.map +1 -0
- package/dist/utils/history.js +93 -0
- package/dist/utils/history.js.map +1 -0
- package/dist/utils/memoryOperations.d.ts +14 -0
- package/dist/utils/memoryOperations.d.ts.map +1 -0
- package/dist/utils/memoryOperations.js +55 -0
- package/dist/utils/memoryOperations.js.map +1 -0
- package/dist/utils/migrateFunctionNodes.d.ts +9 -0
- package/dist/utils/migrateFunctionNodes.d.ts.map +1 -0
- package/dist/utils/migrateFunctionNodes.js +89 -0
- package/dist/utils/migrateFunctionNodes.js.map +1 -0
- package/dist/utils/modelOperations.d.ts +13 -0
- package/dist/utils/modelOperations.d.ts.map +1 -0
- package/dist/utils/modelOperations.js +53 -0
- package/dist/utils/modelOperations.js.map +1 -0
- package/dist/utils/paramDisplay.d.ts +12 -0
- package/dist/utils/paramDisplay.d.ts.map +1 -0
- package/dist/utils/paramDisplay.js +56 -0
- package/dist/utils/paramDisplay.js.map +1 -0
- package/dist/utils/resourceHelpers.d.ts +17 -0
- package/dist/utils/resourceHelpers.d.ts.map +1 -0
- package/dist/utils/resourceHelpers.js +32 -0
- package/dist/utils/resourceHelpers.js.map +1 -0
- package/dist/utils/translation.d.ts +20 -0
- package/dist/utils/translation.d.ts.map +1 -0
- package/dist/utils/translation.js +23 -0
- package/dist/utils/translation.js.map +1 -0
- package/dist/utils/variableOperations.d.ts +15 -0
- package/dist/utils/variableOperations.d.ts.map +1 -0
- package/dist/utils/variableOperations.js +71 -0
- package/dist/utils/variableOperations.js.map +1 -0
- package/package.json +79 -0
- package/src/BuilderLayout.tsx +345 -0
- package/src/Canvas.tsx +261 -0
- package/src/CanvasEditor.tsx +142 -0
- package/src/CanvasTabsToolbar.tsx +176 -0
- package/src/RightConfigPanel.tsx +266 -0
- package/src/WorkflowBuilder.tsx +412 -0
- package/src/cn.ts +6 -0
- package/src/components/ui/add-button.tsx +39 -0
- package/src/components/ui/alert-dialog.tsx +141 -0
- package/src/components/ui/alert.tsx +59 -0
- package/src/components/ui/badge.tsx +36 -0
- package/src/components/ui/button.tsx +85 -0
- package/src/components/ui/card.tsx +79 -0
- package/src/components/ui/checkbox.tsx +28 -0
- package/src/components/ui/collapsible.tsx +9 -0
- package/src/components/ui/command.tsx +153 -0
- package/src/components/ui/delete-button.tsx +23 -0
- package/src/components/ui/dialog.tsx +125 -0
- package/src/components/ui/dropdown-menu.tsx +198 -0
- package/src/components/ui/input.tsx +55 -0
- package/src/components/ui/label.tsx +24 -0
- package/src/components/ui/readonly-banner.tsx +15 -0
- package/src/components/ui/resizable.tsx +43 -0
- package/src/components/ui/scroll-area.tsx +102 -0
- package/src/components/ui/select.tsx +160 -0
- package/src/components/ui/separator.tsx +29 -0
- package/src/components/ui/switch.tsx +27 -0
- package/src/components/ui/textarea.tsx +51 -0
- package/src/components/ui/toast.tsx +127 -0
- package/src/components/ui/toaster.tsx +33 -0
- package/src/components/ui/toggle-group.tsx +59 -0
- package/src/components/ui/toggle.tsx +43 -0
- package/src/components/ui/tooltip.tsx +32 -0
- package/src/dialogs/NodePickerDialog.tsx +84 -0
- package/src/dialogs/ValidationDialog.tsx +184 -0
- package/src/graph/BaseNode.tsx +557 -0
- package/src/graph/CustomEdge.tsx +185 -0
- package/src/graph/CustomNode.tsx +16 -0
- package/src/graph/FunctionCallNode.tsx +30 -0
- package/src/graph/PortHandle.tsx +189 -0
- package/src/graph/reactFlowRegistry.ts +26 -0
- package/src/hooks/use-toast.ts +125 -0
- package/src/hooks/useAvailableVariables.ts +20 -0
- package/src/hooks/useCanvasHistory.ts +22 -0
- package/src/hooks/useCanvasTabs.ts +168 -0
- package/src/hooks/useFunctionDiagnosticsSync.ts +40 -0
- package/src/hooks/useFunctionRegistry.ts +26 -0
- package/src/hooks/useFunctions.ts +44 -0
- package/src/hooks/useGraph.ts +161 -0
- package/src/hooks/useNodeDefinitions.ts +82 -0
- package/src/hooks/useParamErrors.ts +26 -0
- package/src/hooks/useResolvedTheme.ts +30 -0
- package/src/hooks/useResourceDiagnosticsSync.ts +58 -0
- package/src/hooks/useSuppressThemeTransition.ts +79 -0
- package/src/hooks/useWorkflowSerialization.ts +127 -0
- package/src/i18n/index.ts +53 -0
- package/src/i18n/locales/de.json +501 -0
- package/src/i18n/locales/en.json +557 -0
- package/src/index.ts +27 -0
- package/src/inputs/ExpressionInput.tsx +297 -0
- package/src/inputs/ParameterEditor.tsx +515 -0
- package/src/inputs/PortSection.tsx +144 -0
- package/src/panels/BuilderSidebar.tsx +301 -0
- package/src/panels/ChannelConfigPanel.tsx +49 -0
- package/src/panels/ChannelsPanel.tsx +28 -0
- package/src/panels/DebugConsolePanel.tsx +73 -0
- package/src/panels/DebugContextPanel.tsx +77 -0
- package/src/panels/DebugExternalIOPanel.tsx +180 -0
- package/src/panels/DiagnosticsPanel.tsx +170 -0
- package/src/panels/EdgeConfigPanel.tsx +104 -0
- package/src/panels/FunctionConfigPanel.tsx +179 -0
- package/src/panels/FunctionListPanel.tsx +45 -0
- package/src/panels/MemoryConfigPanel.tsx +55 -0
- package/src/panels/MemoryPanel.tsx +40 -0
- package/src/panels/ModelConfigPanel.tsx +41 -0
- package/src/panels/ModelsPanel.tsx +36 -0
- package/src/panels/NodeConfigPanel.tsx +630 -0
- package/src/panels/NodeLibrary.tsx +288 -0
- package/src/panels/ResourceConfigPanel.tsx +132 -0
- package/src/panels/ResourceListPanel.tsx +113 -0
- package/src/panels/VariableConfigPanel.tsx +161 -0
- package/src/panels/VariablesPanel.tsx +145 -0
- package/src/stores/canvasStore.test.ts +44 -0
- package/src/stores/canvasStore.ts +245 -0
- package/src/stores/debugStore.ts +74 -0
- package/src/stores/diagnosticsStore.ts +130 -0
- package/src/stores/editorStore.ts +202 -0
- package/src/styles/index.css +526 -0
- package/src/utils/categoryConstants.ts +26 -0
- package/src/utils/channelOperations.ts +86 -0
- package/src/utils/connectionRules.ts +137 -0
- package/src/utils/functionOperations.ts +179 -0
- package/src/utils/graphOperations.ts +550 -0
- package/src/utils/history.ts +207 -0
- package/src/utils/memoryOperations.ts +57 -0
- package/src/utils/migrateFunctionNodes.ts +107 -0
- package/src/utils/modelOperations.ts +55 -0
- package/src/utils/paramDisplay.ts +71 -0
- package/src/utils/resourceHelpers.ts +32 -0
- package/src/utils/translation.ts +28 -0
- package/src/utils/variableOperations.ts +75 -0
- package/tailwind-preset.ts +166 -0
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Badge } from "../components/ui/badge";
|
|
3
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from "../components/ui/tooltip";
|
|
4
|
+
import { NodeCategory, getArguments, getPorts, } from "@foresthubai/workflow-core/node";
|
|
5
|
+
import { Position } from "@xyflow/react";
|
|
6
|
+
import { AlertCircle, AlertTriangle } from "lucide-react";
|
|
7
|
+
import { memo, useCallback, useEffect, useMemo } from "react";
|
|
8
|
+
import { useAvailableVariables } from "../hooks/useAvailableVariables";
|
|
9
|
+
import { getOrCreateCanvasStore } from "../stores/canvasStore";
|
|
10
|
+
import { useDebugStore } from "../stores/debugStore";
|
|
11
|
+
import { useDiagnosticsStore } from "../stores/diagnosticsStore";
|
|
12
|
+
import { useEditorStore } from "../stores/editorStore";
|
|
13
|
+
import { isReadOnly } from "../WorkflowBuilder";
|
|
14
|
+
import { categoryIcons } from "../utils/categoryConstants";
|
|
15
|
+
import { computeNodeDiagnostics } from "@foresthubai/workflow-core/diagnostics";
|
|
16
|
+
import { parseExpression, isExpression, resolveExpression, } from "@foresthubai/workflow-core/expression";
|
|
17
|
+
import { isNodeUsedAsTool } from "@foresthubai/workflow-core/node";
|
|
18
|
+
import { canPortAcceptEdge } from "../utils/connectionRules";
|
|
19
|
+
import { PortHandle } from "./PortHandle";
|
|
20
|
+
import { isParameterActive } from "@foresthubai/workflow-core/parameter";
|
|
21
|
+
import { formatParamDisplay, displayValue } from "../utils/paramDisplay";
|
|
22
|
+
// Base Node component - handles all rendering logic
|
|
23
|
+
export const BaseNode = memo(({ id, data, selected, nodeDefinition, isStale = false, isDeleted = false }) => {
|
|
24
|
+
const nodeData = data;
|
|
25
|
+
const isHighlighted = selected ?? false;
|
|
26
|
+
// Skip diagnostics when in read-only mode OR when rendered inside VersionPreviewCanvas
|
|
27
|
+
const isPreview = useEditorStore((s) => isReadOnly(s.builderMode)) || !!data?._preview;
|
|
28
|
+
// Debug cursor: true when this node is the current debug step target
|
|
29
|
+
const isDebugCursor = useDebugStore(useCallback((s) => {
|
|
30
|
+
const p = s.phase;
|
|
31
|
+
return (p.status === "paused" || p.status === "stepping") && p.cursorNodeId === id;
|
|
32
|
+
}, [id]));
|
|
33
|
+
// Get active canvas ID with imperative access (no subscription), since it doesn't change for a node
|
|
34
|
+
const activeCanvasId = useEditorStore.getState().activeCanvasId;
|
|
35
|
+
// Get necessary canvas store data
|
|
36
|
+
const canvasStore = getOrCreateCanvasStore(activeCanvasId);
|
|
37
|
+
const edges = canvasStore((s) => s.edges);
|
|
38
|
+
const nodes = canvasStore((s) => s.nodes);
|
|
39
|
+
const channels = useEditorStore((s) => s.channels);
|
|
40
|
+
const memory = useEditorStore((s) => s.memory);
|
|
41
|
+
const models = useEditorStore((s) => s.models);
|
|
42
|
+
const availableModels = useEditorStore((s) => s.availableModels);
|
|
43
|
+
// Get available variables for resolving expressions
|
|
44
|
+
const { lookup: availableVariables } = useAvailableVariables(activeCanvasId);
|
|
45
|
+
// Build channel ID → label lookup for formatParamDisplay
|
|
46
|
+
const channelLabels = useMemo(() => {
|
|
47
|
+
const labels = {};
|
|
48
|
+
for (const v of Object.values(channels))
|
|
49
|
+
labels[v.id] = v.label;
|
|
50
|
+
return labels;
|
|
51
|
+
}, [channels]);
|
|
52
|
+
// Build memory ID → label lookup for formatParamDisplay (memorySelect params)
|
|
53
|
+
const memoryLabels = useMemo(() => {
|
|
54
|
+
const labels = {};
|
|
55
|
+
for (const m of Object.values(memory))
|
|
56
|
+
labels[m.id] = m.label;
|
|
57
|
+
return labels;
|
|
58
|
+
}, [memory]);
|
|
59
|
+
// Build model ID → label lookup (catalog ∪ declared customs) + the catalog id
|
|
60
|
+
// set — used for inline display and modelSelect reference validation.
|
|
61
|
+
const { modelLabels, availableModelIds } = useMemo(() => {
|
|
62
|
+
const labels = {};
|
|
63
|
+
const ids = new Set();
|
|
64
|
+
for (const m of availableModels) {
|
|
65
|
+
labels[m.id] = m.label;
|
|
66
|
+
ids.add(m.id);
|
|
67
|
+
}
|
|
68
|
+
for (const m of Object.values(models))
|
|
69
|
+
labels[m.id] = m.label;
|
|
70
|
+
return { modelLabels: labels, availableModelIds: ids };
|
|
71
|
+
}, [availableModels, models]);
|
|
72
|
+
// Get port definitions using centralized dispatcher
|
|
73
|
+
const portDefinitions = getPorts(nodeData);
|
|
74
|
+
// Separate ports by type for positioning
|
|
75
|
+
const { executionInputs, toolInputs, executionOutputs, toolOutputs } = useMemo(() => {
|
|
76
|
+
return {
|
|
77
|
+
executionInputs: portDefinitions.input.filter((p) => p.type === "control"),
|
|
78
|
+
toolInputs: portDefinitions.input.filter((p) => p.type === "tool"),
|
|
79
|
+
executionOutputs: portDefinitions.output.filter((p) => p.type === "control"),
|
|
80
|
+
toolOutputs: portDefinitions.output.filter((p) => p.type === "tool"),
|
|
81
|
+
};
|
|
82
|
+
}, [portDefinitions]);
|
|
83
|
+
// Mutual exclusion: tool input vs control ports.
|
|
84
|
+
// Tool OUTPUT is always allowed (not part of exclusion).
|
|
85
|
+
const usedAsToolInput = useMemo(() => {
|
|
86
|
+
return isNodeUsedAsTool(id, nodeData, edges);
|
|
87
|
+
}, [id, nodeData, edges]);
|
|
88
|
+
const parameters = getArguments(nodeData);
|
|
89
|
+
// Set of parameter IDs that should be hidden given current context
|
|
90
|
+
const hiddenParamIds = useMemo(() => {
|
|
91
|
+
const ids = new Set();
|
|
92
|
+
for (const p of nodeDefinition?.parameters ?? []) {
|
|
93
|
+
if (!isParameterActive(p, parameters, usedAsToolInput))
|
|
94
|
+
ids.add(p.id);
|
|
95
|
+
}
|
|
96
|
+
return ids.size > 0 ? ids : null;
|
|
97
|
+
}, [usedAsToolInput, nodeDefinition, parameters]);
|
|
98
|
+
const category = nodeDefinition?.category;
|
|
99
|
+
// Compute diagnostics via extracted pure function
|
|
100
|
+
const diagnostics = useMemo(() => computeNodeDiagnostics({
|
|
101
|
+
canvasId: activeCanvasId,
|
|
102
|
+
nodeId: id,
|
|
103
|
+
nodeData,
|
|
104
|
+
nodeDefinition,
|
|
105
|
+
availableVariables,
|
|
106
|
+
channels,
|
|
107
|
+
memory,
|
|
108
|
+
models,
|
|
109
|
+
availableModelIds,
|
|
110
|
+
edges,
|
|
111
|
+
isStale,
|
|
112
|
+
isDeleted,
|
|
113
|
+
}), [
|
|
114
|
+
activeCanvasId,
|
|
115
|
+
id,
|
|
116
|
+
nodeData,
|
|
117
|
+
nodeDefinition,
|
|
118
|
+
availableVariables,
|
|
119
|
+
channels,
|
|
120
|
+
memory,
|
|
121
|
+
models,
|
|
122
|
+
availableModelIds,
|
|
123
|
+
edges,
|
|
124
|
+
isStale,
|
|
125
|
+
isDeleted,
|
|
126
|
+
]);
|
|
127
|
+
// Resolve expressions for display (separate from diagnostics)
|
|
128
|
+
const resolvedExpressions = useMemo(() => {
|
|
129
|
+
const resolved = {};
|
|
130
|
+
const paramDefs = nodeDefinition?.parameters ?? [];
|
|
131
|
+
for (const param of paramDefs) {
|
|
132
|
+
if (hiddenParamIds?.has(param.id))
|
|
133
|
+
continue;
|
|
134
|
+
const value = parameters[param.id];
|
|
135
|
+
if (isExpression(value)) {
|
|
136
|
+
const expr = resolveExpression(value, availableVariables);
|
|
137
|
+
const parseRes = parseExpression(expr);
|
|
138
|
+
resolved[param.id] = { expr, parseRes };
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return resolved;
|
|
142
|
+
}, [parameters, availableVariables, hiddenParamIds, nodeDefinition]);
|
|
143
|
+
// Derived booleans from diagnostics
|
|
144
|
+
const hasErrors = diagnostics.some((d) => d.severity === "error");
|
|
145
|
+
const hasWarnings = diagnostics.some((d) => d.severity === "warning");
|
|
146
|
+
// Write diagnostics to store (cleanup on unmount; validateAllCanvases handles full-project)
|
|
147
|
+
const setNodeDiagnostics = useDiagnosticsStore((s) => s.setNodeDiagnostics);
|
|
148
|
+
const clearNodeDiagnostics = useDiagnosticsStore((s) => s.clearNodeDiagnostics);
|
|
149
|
+
useEffect(() => {
|
|
150
|
+
if (isPreview)
|
|
151
|
+
return;
|
|
152
|
+
setNodeDiagnostics(id, diagnostics);
|
|
153
|
+
return () => clearNodeDiagnostics(id);
|
|
154
|
+
}, [id, diagnostics, setNodeDiagnostics, clearNodeDiagnostics, isPreview]);
|
|
155
|
+
const usedInControlFlow = useMemo(() => {
|
|
156
|
+
return edges.some((e) => {
|
|
157
|
+
if (e.source === id) {
|
|
158
|
+
return executionOutputs.some((p) => p.id === e.sourceHandle);
|
|
159
|
+
}
|
|
160
|
+
if (e.target === id) {
|
|
161
|
+
return executionInputs.some((p) => p.id === e.targetHandle);
|
|
162
|
+
}
|
|
163
|
+
return false;
|
|
164
|
+
});
|
|
165
|
+
}, [edges, id, executionInputs, executionOutputs]);
|
|
166
|
+
const IconComponent = category ? categoryIcons[category] : null;
|
|
167
|
+
// Determine node shape based on category
|
|
168
|
+
const nodeShape = useMemo(() => {
|
|
169
|
+
if (category === "Trigger")
|
|
170
|
+
return "tapered-right";
|
|
171
|
+
return "rectangle";
|
|
172
|
+
}, [category]);
|
|
173
|
+
// Get the color variable based on category
|
|
174
|
+
const nodeColor = useMemo(() => {
|
|
175
|
+
if (category === NodeCategory.Trigger)
|
|
176
|
+
return "--node-trigger";
|
|
177
|
+
if (category === NodeCategory.Tool)
|
|
178
|
+
return "--node-tool";
|
|
179
|
+
if (category === NodeCategory.AI)
|
|
180
|
+
return "--node-agent";
|
|
181
|
+
if (category === NodeCategory.Input)
|
|
182
|
+
return "--node-input";
|
|
183
|
+
if (category === NodeCategory.Output)
|
|
184
|
+
return "--node-output";
|
|
185
|
+
if (category === NodeCategory.Logic)
|
|
186
|
+
return "--node-logic";
|
|
187
|
+
if (category === NodeCategory.Data)
|
|
188
|
+
return "--node-data";
|
|
189
|
+
if (category === NodeCategory.Function)
|
|
190
|
+
return "--node-function";
|
|
191
|
+
return "--primary";
|
|
192
|
+
}, [category]);
|
|
193
|
+
// Determine if this node should have highlighted styling (Tool, Trigger, Agent)
|
|
194
|
+
const fancyBg = category === NodeCategory.Tool || category === NodeCategory.Trigger || category === NodeCategory.AI;
|
|
195
|
+
// Get parameters dynamically from node definition (must be before early return for hooks order)
|
|
196
|
+
// Filter out hidden params based on display conditions
|
|
197
|
+
const nodeParameters = useMemo(() => {
|
|
198
|
+
const params = nodeDefinition?.parameters ?? [];
|
|
199
|
+
if (!hiddenParamIds)
|
|
200
|
+
return params;
|
|
201
|
+
return params.filter((p) => !hiddenParamIds.has(p.id));
|
|
202
|
+
}, [nodeDefinition, hiddenParamIds]);
|
|
203
|
+
// Count visible inline params for height calculation (show first 3 params always)
|
|
204
|
+
const visibleParamCount = useMemo(() => {
|
|
205
|
+
const shown = Math.min(nodeParameters.length, 3);
|
|
206
|
+
const hasOverflow = nodeParameters.length > 3 ? 1 : 0;
|
|
207
|
+
return shown + hasOverflow;
|
|
208
|
+
}, [nodeParameters]);
|
|
209
|
+
// Calculate dimensions
|
|
210
|
+
const maxExecutionPorts = Math.max(executionInputs.length, executionOutputs.length);
|
|
211
|
+
const nodeWidth = 200;
|
|
212
|
+
const taperWidth = 24;
|
|
213
|
+
const paramLineHeight = 16; // ~text-xs line + space-y-0.5 gap
|
|
214
|
+
const headerHeight = 50; // padding + emoji/badge row + margin
|
|
215
|
+
const minHeight = useMemo(() => {
|
|
216
|
+
const paramHeight = visibleParamCount * paramLineHeight;
|
|
217
|
+
const contentHeight = headerHeight + paramHeight;
|
|
218
|
+
if (nodeShape === "tapered-right") {
|
|
219
|
+
return Math.max(contentHeight, 60 + Math.max(maxExecutionPorts, 1) * 40);
|
|
220
|
+
}
|
|
221
|
+
return Math.max(contentHeight, 80 + maxExecutionPorts * 40);
|
|
222
|
+
}, [nodeShape, maxExecutionPorts, visibleParamCount]);
|
|
223
|
+
if (!nodeDefinition) {
|
|
224
|
+
return (_jsx("div", { className: "min-w-[200px] p-3 border border-destructive/50 bg-destructive/10 rounded-lg", children: _jsxs("div", { className: "text-destructive text-sm", children: ["Unknown node: ", nodeData.type] }) }));
|
|
225
|
+
}
|
|
226
|
+
// Calculate vertical port positions for even distribution (left/right)
|
|
227
|
+
const getVerticalPortPosition = (index, total) => {
|
|
228
|
+
if (total === 1)
|
|
229
|
+
return minHeight / 2;
|
|
230
|
+
const spacing = (minHeight - 40) / (total + 1);
|
|
231
|
+
return 20 + spacing * (index + 1);
|
|
232
|
+
};
|
|
233
|
+
// Calculate horizontal port positions for even distribution (top/bottom)
|
|
234
|
+
const getHorizontalPortPosition = (index, total) => {
|
|
235
|
+
if (total === 1)
|
|
236
|
+
return nodeWidth / 2;
|
|
237
|
+
const spacing = (nodeWidth - 40) / (total + 1);
|
|
238
|
+
return 20 + spacing * (index + 1);
|
|
239
|
+
};
|
|
240
|
+
// Render SVG background shape
|
|
241
|
+
const renderShape = () => {
|
|
242
|
+
const gradientId = `node-gradient-${nodeData.id}`;
|
|
243
|
+
const strokeW = 2;
|
|
244
|
+
// Dark nodes (Tool, Trigger) use dark gradient, others use white/light background
|
|
245
|
+
const gradientStartColor = `hsl(var(--canvas-background))`;
|
|
246
|
+
const gradientEndColor = `color-mix(in srgb, hsl(var(${nodeColor})), hsl(var(--canvas-background)) 80%)`;
|
|
247
|
+
const lightFill = "hsl(var(--card))";
|
|
248
|
+
// Glow effect for highlighted state (our custom selection, not ReactFlow's)
|
|
249
|
+
// Debug cursor gets an orange pulsing glow (takes priority over selection glow)
|
|
250
|
+
const glowStyle = isDebugCursor
|
|
251
|
+
? {
|
|
252
|
+
filter: `drop-shadow(0 0 14px hsl(var(--warning) / 0.7)) drop-shadow(0 0 24px hsl(var(--warning) / 0.5))`,
|
|
253
|
+
animation: "debug-cursor-pulse 1.5s ease-in-out infinite",
|
|
254
|
+
}
|
|
255
|
+
: isHighlighted
|
|
256
|
+
? {
|
|
257
|
+
filter: `drop-shadow(0 0 12px hsl(var(--selection-glow) / 0.6)) drop-shadow(0 0 20px hsl(var(--selection-glow) / 0.4))`,
|
|
258
|
+
}
|
|
259
|
+
: {};
|
|
260
|
+
if (nodeShape === "tapered-right") {
|
|
261
|
+
const inset = strokeW / 2;
|
|
262
|
+
return (_jsxs("svg", { className: "absolute inset-0 z-0 transition-all duration-300 will-change-[filter]", width: nodeWidth, height: minHeight, viewBox: `0 0 ${nodeWidth} ${minHeight}`, preserveAspectRatio: "none", style: glowStyle, children: [_jsx("defs", { children: _jsxs("linearGradient", { id: gradientId, x1: "0%", y1: "70%", x2: "100%", y2: "0%", children: [_jsx("stop", { offset: "0%", stopColor: gradientStartColor }), _jsx("stop", { offset: "100%", stopColor: gradientEndColor })] }) }), _jsx("path", { d: `
|
|
263
|
+
M ${12 + inset} ${0 + inset}
|
|
264
|
+
L ${nodeWidth - taperWidth - inset} ${0 + inset}
|
|
265
|
+
L ${nodeWidth - inset} ${minHeight / 2}
|
|
266
|
+
L ${nodeWidth - taperWidth - inset} ${minHeight - inset}
|
|
267
|
+
L ${12 + inset} ${minHeight - inset}
|
|
268
|
+
Q ${0 + inset} ${minHeight - inset} ${0 + inset} ${minHeight - 12 - inset}
|
|
269
|
+
L ${0 + inset} ${12 + inset}
|
|
270
|
+
Q ${0 + inset} ${0 + inset} ${12 + inset} ${0 + inset}
|
|
271
|
+
Z
|
|
272
|
+
`, fill: `url(#${gradientId})`, stroke: hasErrors
|
|
273
|
+
? "hsl(var(--destructive))"
|
|
274
|
+
: fancyBg
|
|
275
|
+
? `hsl(var(${nodeColor})/0.5)`
|
|
276
|
+
: "hsl(var(--edge-default))", strokeWidth: strokeW })] }));
|
|
277
|
+
}
|
|
278
|
+
// Rectangle shape (default) - use light or dark based on category
|
|
279
|
+
return (_jsxs("svg", { className: "absolute inset-0 z-0 transition-all duration-300 will-change-[filter]", width: nodeWidth, height: minHeight, viewBox: `0 0 ${nodeWidth} ${minHeight}`, preserveAspectRatio: "none", style: glowStyle, children: [fancyBg && (_jsx("defs", { children: _jsxs("linearGradient", { id: gradientId, x1: "0%", y1: "70%", x2: "100%", y2: "0%", children: [_jsx("stop", { offset: "0%", stopColor: gradientStartColor }), _jsx("stop", { offset: "120%", stopColor: gradientEndColor })] }) })), _jsx("rect", { x: strokeW / 2, y: strokeW / 2, width: nodeWidth - strokeW, height: minHeight - strokeW, rx: "10", ry: "10", fill: fancyBg ? `url(#${gradientId})` : lightFill, stroke: hasErrors
|
|
280
|
+
? "hsl(var(--destructive))"
|
|
281
|
+
: fancyBg
|
|
282
|
+
? `hsl(var(${nodeColor})/0.5)`
|
|
283
|
+
: "hsl(var(--edge-default))", strokeWidth: strokeW })] }));
|
|
284
|
+
};
|
|
285
|
+
return (_jsxs("div", { className: "relative z-0", style: { height: `${minHeight}px`, width: `${nodeWidth}px` }, children: [toolInputs.map((port, index) => (_jsx(PortHandle, { id: port.id, type: "target", position: Position.Top, portType: port.type, label: port.label, disabled: usedInControlFlow, style: {
|
|
286
|
+
left: `${getHorizontalPortPosition(index, toolInputs.length)}px`,
|
|
287
|
+
} }, port.id))), executionInputs.map((port, index) => (_jsx(PortHandle, { id: port.id, type: "target", position: Position.Left, portType: port.type, label: port.label, disabled: usedAsToolInput, style: {
|
|
288
|
+
top: nodeShape === "tapered-right"
|
|
289
|
+
? `${minHeight / 2}px`
|
|
290
|
+
: `${getVerticalPortPosition(index, executionInputs.length)}px`,
|
|
291
|
+
} }, port.id))), renderShape(), hasErrors && (_jsxs(Tooltip, { delayDuration: 300, children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { className: "absolute -top-4 -left-4 z-30 cursor-help", children: _jsx(AlertTriangle, { className: "h-8 w-8 text-destructive fill-card", strokeWidth: 2 }) }) }), _jsx(TooltipContent, { side: "top", className: "bg-destructive text-destructive-foreground text-xs px-2 py-1", children: diagnostics.find((d) => d.severity === "error")?.message ?? "This node has errors" })] })), !hasErrors && hasWarnings && (_jsxs(Tooltip, { delayDuration: 300, children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { className: "absolute -top-4 -left-4 z-30 cursor-help", children: _jsx(AlertCircle, { className: "h-8 w-8 text-warning fill-card", strokeWidth: 2 }) }) }), _jsx(TooltipContent, { side: "top", className: "bg-warning text-warning-foreground text-xs px-2 py-1", children: diagnostics.find((d) => d.severity === "warning")?.message ?? "This node has warnings" })] })), _jsxs("div", { className: `relative z-10 p-3 ${nodeShape === "tapered-right" ? "pr-8" : ""}`, children: [_jsxs("div", { className: "flex items-center gap-1.5 min-w-0 mb-1.5", children: [IconComponent && (_jsx(IconComponent, { className: "w-4 h-4 shrink-0", style: { color: `hsl(var(${nodeColor}))` } })), _jsx(Badge, { variant: "secondary", className: "text-sm truncate max-w-full text-foreground", style: {
|
|
292
|
+
backgroundColor: `hsl(var(${nodeColor}) / 0.3)`,
|
|
293
|
+
borderColor: `hsl(var(${nodeColor}) / 0.4)`,
|
|
294
|
+
}, children: nodeData.label || nodeDefinition.label })] }), nodeParameters.length > 0 && (_jsxs("div", { className: "space-y-0.5", children: [nodeParameters.slice(0, 3).map((param) => {
|
|
295
|
+
const value = parameters[param.id];
|
|
296
|
+
const resolved = resolvedExpressions[param.id];
|
|
297
|
+
const paramDisplay = resolved
|
|
298
|
+
? null
|
|
299
|
+
: formatParamDisplay(param, value, availableVariables, channelLabels, memoryLabels, modelLabels);
|
|
300
|
+
const isInvalid = resolved ? !resolved.parseRes.isValid : !!paramDisplay?.isInvalid;
|
|
301
|
+
return (_jsxs("div", { className: "text-xs leading-4 flex items-baseline gap-1 truncate", children: [_jsxs("span", { className: "shrink-0 text-muted-foreground", children: [param.label, ":"] }), _jsx("span", { className: `font-mono truncate ${isInvalid ? "text-destructive" : "text-foreground"}`, children: resolved ? displayValue(resolved.expr) : paramDisplay.text })] }, param.id));
|
|
302
|
+
}), nodeParameters.length > 3 && (_jsxs("div", { className: "text-xs text-muted-foreground", children: ["+", nodeParameters.length - 3, " more..."] }))] }))] }), executionOutputs.map((port, index) => {
|
|
303
|
+
const canAccept = !isPreview && !usedAsToolInput && canPortAcceptEdge(id, port.id, nodes, edges);
|
|
304
|
+
return (_jsx(PortHandle, { id: port.id, type: "source", position: Position.Right, portType: port.type, label: port.label, disabled: usedAsToolInput, showPlus: canAccept, nodeId: id, style: {
|
|
305
|
+
top: nodeShape === "tapered-right"
|
|
306
|
+
? `${minHeight / 2}px`
|
|
307
|
+
: `${getVerticalPortPosition(index, executionOutputs.length)}px`,
|
|
308
|
+
right: "0",
|
|
309
|
+
} }, port.id));
|
|
310
|
+
}), toolOutputs.map((port, index) => {
|
|
311
|
+
const canAccept = !isPreview && canPortAcceptEdge(id, port.id, nodes, edges);
|
|
312
|
+
return (_jsx(PortHandle, { id: port.id, type: "source", position: Position.Bottom, portType: port.type, label: port.label, showPlus: canAccept, nodeId: id, style: {
|
|
313
|
+
left: `${getHorizontalPortPosition(index, toolOutputs.length)}px`,
|
|
314
|
+
bottom: 0,
|
|
315
|
+
} }, port.id));
|
|
316
|
+
})] }));
|
|
317
|
+
});
|
|
318
|
+
//# sourceMappingURL=BaseNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseNode.js","sourceRoot":"","sources":["../../src/graph/BaseNode.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { EdgeData } from "@foresthubai/workflow-core/edge";
|
|
2
|
+
export declare const CustomEdge: ({ id, source, type, sourceX, sourceY, targetX, targetY, data, selected, }: {
|
|
3
|
+
id: string;
|
|
4
|
+
source: string;
|
|
5
|
+
type: string;
|
|
6
|
+
sourceX: number;
|
|
7
|
+
sourceY: number;
|
|
8
|
+
targetX: number;
|
|
9
|
+
targetY: number;
|
|
10
|
+
data?: EdgeData;
|
|
11
|
+
selected?: boolean;
|
|
12
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export default CustomEdge;
|
|
14
|
+
//# sourceMappingURL=CustomEdge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomEdge.d.ts","sourceRoot":"","sources":["../../src/graph/CustomEdge.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAA4C,MAAM,iCAAiC,CAAC;AAiCrG,eAAO,MAAM,UAAU,GAAI,2EAUxB;IACD,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,4CA8HA,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from "../components/ui/tooltip";
|
|
3
|
+
import { BaseEdge, EdgeLabelRenderer, getBezierPath, Position, useEdges } from "@xyflow/react";
|
|
4
|
+
import { AlertTriangle } from "lucide-react";
|
|
5
|
+
import { isControlFlow, isToolFlow } from "@foresthubai/workflow-core/edge";
|
|
6
|
+
import { useEffect, useMemo } from "react";
|
|
7
|
+
import { useAvailableVariables } from "../hooks/useAvailableVariables";
|
|
8
|
+
import { useDiagnosticsStore } from "../stores/diagnosticsStore";
|
|
9
|
+
import { useEditorStore } from "../stores/editorStore";
|
|
10
|
+
import { isReadOnly } from "../WorkflowBuilder";
|
|
11
|
+
import { computeEdgeDiagnostics } from "@foresthubai/workflow-core/diagnostics";
|
|
12
|
+
const EDGE_BASE_COLOR = "hsl(var(--edge-default))";
|
|
13
|
+
const AGENT_COLOR = "hsl(var(--node-agent))";
|
|
14
|
+
const ERROR_COLOR = "hsl(var(--destructive))";
|
|
15
|
+
/**
|
|
16
|
+
* Source/target stroke colors per edge type. Plain control and tool edges use
|
|
17
|
+
* the neutral edge base on both ends. Edges that touch an Agent pick up the
|
|
18
|
+
* agent color on that side, so the SVG gradient makes the edge visually
|
|
19
|
+
* announce its agent endpoint (e.g. agentTask fades base → agent toward the
|
|
20
|
+
* target Agent).
|
|
21
|
+
*/
|
|
22
|
+
function endColors(type) {
|
|
23
|
+
switch (type) {
|
|
24
|
+
case "control":
|
|
25
|
+
case "tool":
|
|
26
|
+
return { source: EDGE_BASE_COLOR, target: EDGE_BASE_COLOR };
|
|
27
|
+
case "agentTask":
|
|
28
|
+
return { source: EDGE_BASE_COLOR, target: AGENT_COLOR };
|
|
29
|
+
case "agentChoice":
|
|
30
|
+
return { source: AGENT_COLOR, target: EDGE_BASE_COLOR };
|
|
31
|
+
case "agentDelegate":
|
|
32
|
+
return { source: AGENT_COLOR, target: AGENT_COLOR };
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export const CustomEdge = ({ id, source, type, sourceX, sourceY, targetX, targetY, data, selected, }) => {
|
|
36
|
+
const isHighlighted = selected ?? false;
|
|
37
|
+
const isPreview = useEditorStore((s) => isReadOnly(s.builderMode));
|
|
38
|
+
const edgeType = (type ?? "control");
|
|
39
|
+
const edges = useEdges();
|
|
40
|
+
const activeCanvasId = useEditorStore.getState().activeCanvasId;
|
|
41
|
+
const { lookup: availableVariables } = useAvailableVariables(activeCanvasId);
|
|
42
|
+
const sourceControlEdgeCount = edges.filter((e) => e.source === source && isControlFlow(e.type)).length;
|
|
43
|
+
// Compute edge diagnostics via extracted pure function
|
|
44
|
+
const diagnostics = useMemo(() => computeEdgeDiagnostics({
|
|
45
|
+
canvasId: activeCanvasId,
|
|
46
|
+
edgeId: id,
|
|
47
|
+
edgeType,
|
|
48
|
+
edgeData: data,
|
|
49
|
+
availableVariables,
|
|
50
|
+
sourceControlEdgeCount,
|
|
51
|
+
}), [edgeType, sourceControlEdgeCount, data, availableVariables, activeCanvasId, id]);
|
|
52
|
+
const hasErrors = diagnostics.length > 0;
|
|
53
|
+
// Write diagnostics to store (cleanup on unmount; validateAllCanvases handles full-project)
|
|
54
|
+
const setEdgeDiagnostics = useDiagnosticsStore((s) => s.setEdgeDiagnostics);
|
|
55
|
+
const clearEdgeDiagnostics = useDiagnosticsStore((s) => s.clearEdgeDiagnostics);
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
if (isPreview)
|
|
58
|
+
return;
|
|
59
|
+
setEdgeDiagnostics(id, diagnostics);
|
|
60
|
+
return () => clearEdgeDiagnostics(id);
|
|
61
|
+
}, [id, diagnostics, setEdgeDiagnostics, clearEdgeDiagnostics, isPreview]);
|
|
62
|
+
const getEdgePath = () => {
|
|
63
|
+
if (isToolFlow(edgeType)) {
|
|
64
|
+
// Tool ports are diamonds, and React Flow anchors the wire at the handle
|
|
65
|
+
// box's edge midpoint — i.e. the diamond's pointed tip — so a wire meeting
|
|
66
|
+
// it looks pinched/detached. Pull each end into its node (tool output sits
|
|
67
|
+
// on a node's bottom, tool input on the next node's top) so the wire
|
|
68
|
+
// overlaps the diamond body (hidden under the z-20 port) and reads solid.
|
|
69
|
+
const OVERLAP = 3;
|
|
70
|
+
return getBezierPath({
|
|
71
|
+
sourceX,
|
|
72
|
+
sourceY: sourceY - OVERLAP,
|
|
73
|
+
targetX,
|
|
74
|
+
targetY: targetY + OVERLAP,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
// Control flow: ends have horizontal slope
|
|
78
|
+
const OVERLAP = 2;
|
|
79
|
+
return getBezierPath({
|
|
80
|
+
sourceX: sourceX - OVERLAP,
|
|
81
|
+
sourceY,
|
|
82
|
+
sourcePosition: Position.Right,
|
|
83
|
+
targetX: targetX + OVERLAP,
|
|
84
|
+
targetY,
|
|
85
|
+
targetPosition: Position.Left,
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
const [edgePath, labelX, labelY] = getEdgePath();
|
|
89
|
+
const colors = hasErrors ? { source: ERROR_COLOR, target: ERROR_COLOR } : endColors(edgeType);
|
|
90
|
+
const strokeWidth = 3;
|
|
91
|
+
const gradientId = `edge-gradient-${id}`;
|
|
92
|
+
// Glow effect for highlighted edges — uniform high-contrast color (or
|
|
93
|
+
// destructive when the edge itself is errored).
|
|
94
|
+
const glowColor = hasErrors ? ERROR_COLOR : "hsl(var(--selection-glow))";
|
|
95
|
+
const glowFilter = isHighlighted ? `drop-shadow(0 0 8px ${glowColor}) drop-shadow(0 0 16px ${glowColor})` : undefined;
|
|
96
|
+
return (_jsxs(_Fragment, { children: [_jsxs("g", { style: { filter: glowFilter }, children: [_jsx("defs", { children: _jsxs("linearGradient", { id: gradientId, gradientUnits: "userSpaceOnUse", x1: sourceX, y1: sourceY, x2: targetX, y2: targetY, children: [_jsx("stop", { offset: "0%", stopColor: colors.source }), _jsx("stop", { offset: "100%", stopColor: colors.target })] }) }), _jsx(BaseEdge, { id: id, path: edgePath, style: {
|
|
97
|
+
stroke: `url(#${gradientId})`,
|
|
98
|
+
strokeWidth,
|
|
99
|
+
strokeDasharray: "none",
|
|
100
|
+
} })] }), _jsx(EdgeLabelRenderer, { children: _jsx("div", { style: {
|
|
101
|
+
position: "absolute",
|
|
102
|
+
transform: `translate(-50%, -50%) translate(${labelX}px,${labelY}px)`,
|
|
103
|
+
pointerEvents: "all",
|
|
104
|
+
}, className: "flex flex-col items-center gap-0.5", children: hasErrors && (_jsxs(Tooltip, { delayDuration: 300, children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { className: "cursor-help", children: _jsx(AlertTriangle, { className: "h-5 w-5 text-destructive fill-background" }) }) }), _jsx(TooltipContent, { side: "top", className: "bg-destructive text-destructive-foreground text-xs px-2 py-1", children: diagnostics[0]?.message ?? "This edge has errors" })] })) }) })] }));
|
|
105
|
+
};
|
|
106
|
+
export default CustomEdge;
|
|
107
|
+
//# sourceMappingURL=CustomEdge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomEdge.js","sourceRoot":"","sources":["../../src/graph/CustomEdge.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomNode.d.ts","sourceRoot":"","sources":["../../src/graph/CustomNode.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAM1C,eAAO,MAAM,UAAU,8CAAgB,SAAS,6CAQ9C,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { NodeRegistry } from "@foresthubai/workflow-core/node";
|
|
3
|
+
import { memo, useMemo } from "react";
|
|
4
|
+
import { BaseNode } from "./BaseNode";
|
|
5
|
+
// Standard node component for all non-FunctionCall nodes
|
|
6
|
+
// Simply resolves the node definition from the registry and delegates to BaseNode
|
|
7
|
+
export const CustomNode = memo((props) => {
|
|
8
|
+
const nodeData = props.data;
|
|
9
|
+
// Get node definition from static registry
|
|
10
|
+
const nodeDefinition = useMemo(() => {
|
|
11
|
+
return NodeRegistry.getByType(nodeData.type);
|
|
12
|
+
}, [nodeData.type]);
|
|
13
|
+
return _jsx(BaseNode, { ...props, nodeDefinition: nodeDefinition });
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=CustomNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomNode.js","sourceRoot":"","sources":["../../src/graph/CustomNode.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAY,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEzE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,yDAAyD;AACzD,kFAAkF;AAClF,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,KAAgB,EAAE,EAAE;IAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAgB,CAAC;IAExC,2CAA2C;IAC3C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,OAAO,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACpB,OAAO,KAAC,QAAQ,OAAK,KAAK,EAAE,cAAc,EAAE,cAAc,GAAI,CAAC;AACjE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FunctionCallNode.d.ts","sourceRoot":"","sources":["../../src/graph/FunctionCallNode.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAS1C,eAAO,MAAM,gBAAgB,8CAAgB,SAAS,6CAmBpD,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { memo, useMemo } from "react";
|
|
3
|
+
import { buildFunctionNodeDef } from "../hooks/useNodeDefinitions";
|
|
4
|
+
import { useFunctionRegistry } from "../hooks/useFunctionRegistry";
|
|
5
|
+
import { BaseNode } from "./BaseNode";
|
|
6
|
+
// Specialized node component for FunctionCall nodes
|
|
7
|
+
// Renders from node's stored data (usually up-to-date via auto-migration,
|
|
8
|
+
// but may be stale after undo)
|
|
9
|
+
export const FunctionCallNode = memo((props) => {
|
|
10
|
+
const nodeData = props.data;
|
|
11
|
+
// Get function info for staleness check and live label
|
|
12
|
+
const { getFunction } = useFunctionRegistry();
|
|
13
|
+
const registryFunctionInfo = getFunction(nodeData.functionInfo.id);
|
|
14
|
+
const isDeleted = !registryFunctionInfo;
|
|
15
|
+
const isStale = registryFunctionInfo
|
|
16
|
+
? nodeData.functionInfo.version !== registryFunctionInfo.version
|
|
17
|
+
: false;
|
|
18
|
+
// Build node definition from node's stored functionInfo, using registry name for label
|
|
19
|
+
const nodeDefinition = useMemo(() => {
|
|
20
|
+
const name = registryFunctionInfo?.name ?? nodeData.functionInfo.name;
|
|
21
|
+
return buildFunctionNodeDef({ ...nodeData.functionInfo, name });
|
|
22
|
+
}, [nodeData.functionInfo, registryFunctionInfo?.name]);
|
|
23
|
+
return _jsx(BaseNode, { ...props, nodeDefinition: nodeDefinition, isStale: isStale, isDeleted: isDeleted });
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=FunctionCallNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FunctionCallNode.js","sourceRoot":"","sources":["../../src/graph/FunctionCallNode.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,oDAAoD;AACpD,0EAA0E;AAC1E,+BAA+B;AAC/B,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,KAAgB,EAAE,EAAE;IACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAA8B,CAAC;IAEtD,uDAAuD;IACvD,MAAM,EAAE,WAAW,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAC9C,MAAM,oBAAoB,GAAG,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAEnE,MAAM,SAAS,GAAG,CAAC,oBAAoB,CAAC;IACxC,MAAM,OAAO,GAAG,oBAAoB;QAClC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,KAAK,oBAAoB,CAAC,OAAO;QAChE,CAAC,CAAC,KAAK,CAAC;IAEV,uFAAuF;IACvF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,IAAI,GAAG,oBAAoB,EAAE,IAAI,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;QACtE,OAAO,oBAAoB,CAAC,EAAE,GAAG,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC;IAExD,OAAO,KAAC,QAAQ,OAAK,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAI,CAAC;AACzG,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Position } from "@xyflow/react";
|
|
3
|
+
import type { EdgeType } from "@foresthubai/workflow-core/edge";
|
|
4
|
+
export interface PortActionDetail {
|
|
5
|
+
nodeId: string;
|
|
6
|
+
handleId: string;
|
|
7
|
+
portType: EdgeType;
|
|
8
|
+
}
|
|
9
|
+
export interface PortHandleProps {
|
|
10
|
+
id: string;
|
|
11
|
+
nodeId?: string;
|
|
12
|
+
type: "source" | "target";
|
|
13
|
+
position: Position;
|
|
14
|
+
portType: EdgeType;
|
|
15
|
+
label?: string;
|
|
16
|
+
style?: React.CSSProperties;
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
showPlus?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare const PortHandle: ({ id, nodeId, type, position, portType, label, style, disabled, showPlus, }: PortHandleProps) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=PortHandle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PortHandle.d.ts","sourceRoot":"","sources":["../../src/graph/PortHandle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAU,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,UAAU,GAAI,6EAUxB,eAAe,4CA2JjB,CAAC"}
|