From 47dcbcb74b1e8233ff36580bc4fe7624b9edfa0c Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 28 Mar 2026 12:03:16 +0000 Subject: [PATCH] fix: tests and sources on workflow agent --- .../src/agents/workflow/WorkflowBuilder.tsx | 40 ++- frontend/src/components/ui/multi-select.tsx | 8 +- pytest.ini | 3 +- tests/integration/test_workflows.py | 253 ++++++++++++++++++ 4 files changed, 296 insertions(+), 8 deletions(-) diff --git a/frontend/src/agents/workflow/WorkflowBuilder.tsx b/frontend/src/agents/workflow/WorkflowBuilder.tsx index 7caf9453..ad4fec28 100644 --- a/frontend/src/agents/workflow/WorkflowBuilder.tsx +++ b/frontend/src/agents/workflow/WorkflowBuilder.tsx @@ -54,7 +54,10 @@ import { FileUpload } from '../../components/FileUpload'; import AgentDetailsModal from '../../modals/AgentDetailsModal'; import ConfirmationModal from '../../modals/ConfirmationModal'; import { ActiveState } from '../../models/misc'; -import { selectToken } from '../../preferences/preferenceSlice'; +import { + selectSourceDocs, + selectToken, +} from '../../preferences/preferenceSlice'; import { getToolDisplayName } from '../../utils/toolUtils'; import { Agent } from '../types'; import { ConditionCase, WorkflowNode } from '../types/workflow'; @@ -300,6 +303,7 @@ function createWorkflowPayload( function WorkflowBuilderInner() { const navigate = useNavigate(); const token = useSelector(selectToken); + const sourceDocs = useSelector(selectSourceDocs); const { agentId } = useParams<{ agentId?: string }>(); const [searchParams] = useSearchParams(); const folderId = searchParams.get('folder_id'); @@ -341,6 +345,14 @@ function WorkflowBuilderInner() { const [availableModels, setAvailableModels] = useState([]); const [defaultAgentModelId, setDefaultAgentModelId] = useState(''); const [availableTools, setAvailableTools] = useState([]); + const sourceOptions = useMemo( + () => + (sourceDocs ?? []).map((doc) => ({ + value: doc.id ?? 'default', + label: doc.name, + })), + [sourceDocs], + ); const [agentJsonSchemaDrafts, setAgentJsonSchemaDrafts] = useState< Record >({}); @@ -1279,8 +1291,8 @@ function WorkflowBuilderInner() { const handlePrimaryAction = useCallback(() => { if (isPrimaryActionDisabled) return; - void persistWorkflow(!canManageAgent); - }, [isPrimaryActionDisabled, persistWorkflow, canManageAgent]); + void persistWorkflow(false); + }, [isPrimaryActionDisabled, persistWorkflow]); const agentForDetails = useMemo( () => ({ @@ -1918,6 +1930,28 @@ function WorkflowBuilderInner() { emptyText="No tools available" /> +
+ + + handleUpdateNodeData({ + config: { + ...(selectedNode.data.config || {}), + sources: newSources, + }, + }) + } + placeholder="Select sources..." + searchPlaceholder="Search sources..." + emptyText="No sources available" + /> +