From 9fd33a2d8337a00ffbe44c700202c6c4c73cfd74 Mon Sep 17 00:00:00 2001 From: Yiorgis Gozadinos Date: Thu, 11 Dec 2025 14:56:18 +0200 Subject: [PATCH] DocumentSelector in frontend to select documents to do research on. --- examples/ag-ui-research/backend/main.py | 4 +- .../frontend/components/Agent.tsx | 17 +- .../frontend/components/DocumentSelector.tsx | 352 ++++++++++++++++++ 3 files changed, 370 insertions(+), 3 deletions(-) create mode 100644 examples/ag-ui-research/frontend/components/DocumentSelector.tsx diff --git a/examples/ag-ui-research/backend/main.py b/examples/ag-ui-research/backend/main.py index 3909c496..d432a8ba 100644 --- a/examples/ag-ui-research/backend/main.py +++ b/examples/ag-ui-research/backend/main.py @@ -92,8 +92,8 @@ async def stream_research_agent(request: Request) -> StreamingResponse: effective_db_path = Path(effective_db_path) client = get_client(effective_db_path) - # Build search filter from document IDs if provided - document_ids = input_data.state.get("documentFilter") + # Build search filter from document IDs (empty list = search all) + document_ids = input_data.state.get("documentFilter") or [] search_filter = None if document_ids: ids_str = ", ".join(f"'{id}'" for id in document_ids) diff --git a/examples/ag-ui-research/frontend/components/Agent.tsx b/examples/ag-ui-research/frontend/components/Agent.tsx index ac297cfc..a8dc5f59 100644 --- a/examples/ag-ui-research/frontend/components/Agent.tsx +++ b/examples/ag-ui-research/frontend/components/Agent.tsx @@ -3,6 +3,7 @@ import { CopilotKit, useCoAgent } from "@copilotkit/react-core"; import { CopilotChat } from "@copilotkit/react-ui"; import "@copilotkit/react-ui/styles.css"; +import DocumentSelector from "./DocumentSelector"; import StateDisplay from "./StateDisplay"; interface InsightRecord { @@ -82,10 +83,11 @@ interface ResearchState { result?: ResearchReport; current_activity?: string; current_activity_message?: string; + documentFilter?: string[]; } function AgentContent() { - const { state } = useCoAgent({ + const { state, setState, running } = useCoAgent({ name: "research_agent", initialState: { context: { @@ -101,9 +103,14 @@ function AgentContent() { max_concurrency: 1, last_eval: null, last_analysis: null, + documentFilter: [], }, }); + const handleDocumentFilterChange = (ids: string[]) => { + setState({ ...state, documentFilter: ids }); + }; + return ( <>