import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Separator } from "@/components/ui/separator"; import { ScrollArea } from "@/components/ui/scroll-area"; import { CheckCircle2, XCircle, Clock, Zap } from "lucide-react"; import type { StreamEvent } from "@/types/execution"; interface ResultViewerProps { status: string; finalAnswer: string | null; totalTokens: number; totalTime: number; events: StreamEvent[]; error: string | null; } export function ResultViewer({ status, finalAnswer, totalTokens, totalTime, events, error, }: ResultViewerProps) { const agentOutputs = events.filter((e) => e.event_type === "agent_output"); return (
{/* Status summary */}
{status === "completed" && } {status === "error" && } {status === "running" && } {status} {totalTokens > 0 && ( {totalTokens} tokens )} {totalTime > 0 && ( {totalTime.toFixed(1)}s )}
{error && (

{error}

)} {/* Final answer */} {finalAnswer && ( Final Answer

{finalAnswer}

)} {/* Agent outputs */} {agentOutputs.length > 0 && ( <>

Agent Responses

{agentOutputs.map((event, i) => (
{event.agent_name || event.agent_id} {event.tokens_used && ( {event.tokens_used} tokens )}

{event.content?.slice(0, 500)} {(event.content?.length ?? 0) > 500 ? "..." : ""}

))} )}
); }