"use client"; import { CopilotKit, useCoAgent } from "@copilotkit/react-core"; import { CopilotChat } from "@copilotkit/react-ui"; import "@copilotkit/react-ui/styles.css"; import StateDisplay from "./StateDisplay"; interface InsightRecord { id: string; summary: string; status: string; notes?: string; supporting_sources: string[]; originating_questions: string[]; } interface GapRecord { id: string; description: string; severity: string; blocking: boolean; resolved: boolean; notes?: string; supporting_sources: string[]; resolved_by: string[]; } interface SearchAnswer { query: string; answer: string; confidence: number; context: string[]; sources: string[]; } interface ResearchContext { original_question: string; sub_questions: string[]; qa_responses: SearchAnswer[]; insights: InsightRecord[]; gaps: GapRecord[]; } interface EvaluationResult { confidence: number; reasoning: string; should_continue: boolean; gaps_identified: string[]; follow_up_questions: string[]; } interface ResearchReport { question: string; summary: string; findings: string[]; conclusions: string[]; insights_used: string[]; methodology: string; } interface ResearchState { context: ResearchContext; iterations: number; max_iterations: number; confidence_threshold: number; max_concurrency: number; last_eval: EvaluationResult | null; last_analysis: { insights_extracted: InsightRecord[]; gaps_identified: GapRecord[]; } | null; result?: ResearchReport; } function AgentContent() { const { state } = useCoAgent({ name: "research_agent", initialState: { context: { original_question: "", sub_questions: [], qa_responses: [], insights: [], gaps: [], }, iterations: 0, max_iterations: 3, confidence_threshold: 0.8, max_concurrency: 1, last_eval: null, last_analysis: null, }, }); return ( <>
{/* Chat on the left */}
{/* State display on the right */}

Research State

Live updates from the research agent

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