import { useEffect, useState } from "react"; import type { OverviewData, PanelNav } from "../types"; interface OverviewLevelProps { datasetId: string; fetchOverview: (dsId: string) => Promise; onDrillDown: (nav: PanelNav) => void; } export default function OverviewLevel({ datasetId, fetchOverview, onDrillDown }: OverviewLevelProps) { const [data, setData] = useState(null); useEffect(() => { fetchOverview(datasetId).then(setData).catch(() => {}); }, [datasetId, fetchOverview]); if (!data) return
Loading overview...
; return (
{/* Experiment metadata */}
Model: {data.metadata.model} Method: {data.metadata.method} k: {data.metadata.k} Run: {data.metadata.run_id}
{/* GEPA iteration cards */}
{data.gepa_iterations.map((gi) => (
onDrillDown({ datasetId, level: 2, gepaIter: gi.gepa_iter, }) } >
GEPA {gi.gepa_iter} {gi.has_final_answer && ( FINAL )}
{gi.total_execution_time.toFixed(1)}s
{gi.n_rlm_iters} RLM iters {gi.n_rlm_calls} calls {((gi.total_input_tokens + gi.total_output_tokens) / 1000).toFixed(1)}k tokens
{gi.final_answer_preview && (
{gi.final_answer_preview}
)}
))}
); }