import React, { useMemo } from 'react'; import { RefreshCw, Activity, MessageSquare, Wrench, Sparkles, AlertTriangle, Workflow } from 'lucide-react'; import { useTranslation } from 'react-i18next'; import { useAppContext } from '../context/AppContext'; import StatCard from '../components/StatCard'; const Dashboard: React.FC = () => { const { t } = useTranslation(); const { isGatewayOnline, sessions, refreshAll, gatewayVersion, webuiVersion, skills, cfg, taskQueueItems, ekgSummary, } = useAppContext(); const subagentCount = useMemo(() => { const subagents = (cfg as any)?.agents?.subagents || {}; return Object.keys(subagents).length; }, [cfg]); const recentTasks = useMemo(() => { return [...taskQueueItems] .sort((a: any, b: any) => String(b.time || '').localeCompare(String(a.time || ''))) .slice(0, 8); }, [taskQueueItems]); const recentFailures = useMemo(() => { return recentTasks.filter((item: any) => String(item.status || '').toLowerCase() === 'error').slice(0, 5); }, [recentTasks]); const ekgEscalationCount = Number(ekgSummary?.escalation_count || 0); const ekgTopProvider = (Array.isArray(ekgSummary?.provider_top_workload) ? ekgSummary.provider_top_workload[0]?.key : '') || '-'; const ekgTopErrSig = (Array.isArray(ekgSummary?.errsig_top_workload) ? ekgSummary.errsig_top_workload[0]?.key : '') || '-'; return (