'use client' import { useState } from 'react' import { AGENT_STEPS, STEP_PHASE } from '@/lib/types/run' import type { AgentStep } from '@/lib/types/run' import type { StepStatus } from '@/lib/types/agents' import AnalystReports from './AnalystReports' type Phase = 'analysts' | 'researchers' | 'trader' | 'risk' const TABS: { label: string; phase: Phase; desc: string }[] = [ { label: 'Analysts', phase: 'analysts', desc: '4 agents' }, { label: 'Researchers', phase: 'researchers', desc: '3 agents' }, { label: 'Trader', phase: 'trader', desc: '1 agent' }, { label: 'Risk', phase: 'risk', desc: '4 agents' }, ] type Props = { steps: Record reports: Record } function getPhaseCompletion(phase: Phase, steps: Record): number { const phaseSteps = AGENT_STEPS.filter((s) => STEP_PHASE[s] === phase) const done = phaseSteps.filter((s) => steps[s as AgentStep] === 'done').length return phaseSteps.length > 0 ? Math.round((done / phaseSteps.length) * 100) : 0 } export default function PhaseTabs({ steps, reports }: Props) { const [active, setActive] = useState('analysts') return (
{/* Section label */}
Agent Reports
{/* Tab bar */}
{TABS.map(({ label, phase }) => { const isActive = active === phase const completion = getPhaseCompletion(phase, steps) const allDone = completion === 100 return ( ) })}
{/* Reports */}
) }