import type { Reasoning, StageName, StreamStageEvent } from '../types' interface Props { reasoning: Reasoning agent: string activeStage?: StageName | null stageEvents?: StreamStageEvent[] } function badgeClass(active: boolean): string { return active ? 'bg-blue-900/70 border-blue-500 text-blue-200 shadow-[0_0_20px_rgba(59,130,246,0.3)]' : 'bg-zinc-900 border-zinc-800 text-zinc-400' } function stageSummary(stage: StageName, reasoning: Reasoning): string { if (stage === 'pytorch') { const top = [...reasoning.pytorch_scores] .sort((a, b) => b.score - a.score) .slice(0, 3) .map((s) => `${s.zone_id}:${s.score.toFixed(2)}`) return top.length > 0 ? `Top activations → ${top.join(', ')}` : 'No zone scores yet.' } if (stage === 'triage') return reasoning.triage_summary || 'Triage analysis pending.' if (stage === 'planner') return reasoning.plan_decision || 'Planner has no decision yet.' return reasoning.action_rationale || 'Action rationale pending.' } const STAGES: Array<{ key: StageName; title: string; icon: string }> = [ { key: 'pytorch', title: 'PyTorch ZoneScorer', icon: '🧠' }, { key: 'triage', title: 'Triage Agent', icon: '🔍' }, { key: 'planner', title: 'Planner Agent', icon: '📋' }, { key: 'action', title: 'Action Agent', icon: '✅' }, ] export function AgentReasoningPanel({ reasoning, agent, activeStage = null, stageEvents = [] }: Props) { const triageDetails = reasoning.triage const planDetails = reasoning.plan const validator = reasoning.validator const durations = reasoning.stage_timings_ms return (