"use client"; 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 Citation { document_id: string; chunk_id: string; document_uri: string; document_title?: string; page_numbers: number[]; headings?: string[]; content: string; } interface SearchAnswer { query: string; answer: string; confidence: number; cited_chunks: string[]; citations: Citation[]; } interface ResearchContext { original_question: string; sub_questions: string[]; qa_responses: SearchAnswer[]; } interface EvaluationResult { new_questions: string[]; confidence_score: number; is_sufficient: boolean; reasoning: string; } interface ResearchReport { title: string; executive_summary: string; main_findings: string[]; conclusions: string[]; limitations: string[]; recommendations: string[]; sources_summary: string; } interface ResearchState { context: ResearchContext; iterations: number; max_iterations: number; confidence_threshold: number; max_concurrency: number; last_eval: EvaluationResult | null; result?: ResearchReport; current_activity?: string; current_activity_message?: string; documentFilter?: string[]; } function AgentContent() { const { state, setState, running } = useCoAgent({ name: "research_agent", initialState: { context: { original_question: "", sub_questions: [], qa_responses: [], }, iterations: 0, max_iterations: 3, confidence_threshold: 0.8, max_concurrency: 1, last_eval: null, documentFilter: [], }, }); const handleDocumentFilterChange = (ids: string[]) => { setState({ ...state, documentFilter: ids }); }; return ( <>
{/* Chat on the left */}
{/* State display on the right */}

Research State

Live updates from the research agent

); } export default function Agent() { return ( ); }