import { useEffect, useState } from 'react'; import { PageParseAPI } from '../services/api'; import type { TelemetryData } from '../services/api'; import { Cpu, HardDrive, Activity } from 'lucide-react'; interface TelemetryPanelProps { isProcessing: boolean; } export const TelemetryPanel = ({ isProcessing }: TelemetryPanelProps) => { const [data, setData] = useState({ cpu_percent: 0, ram_used_mb: 0, ram_total_mb: 8192, active_tasks: 0, }); useEffect(() => { const fetchTelemetry = async () => { const telemetry = await PageParseAPI.getTelemetry(isProcessing); setData(telemetry); }; fetchTelemetry(); const interval = setInterval(fetchTelemetry, 1500); return () => clearInterval(interval); }, [isProcessing]); const ramPercent = Math.min(100, Math.round((data.ram_used_mb / data.ram_total_mb) * 100)); const cpuColor = data.cpu_percent > 70 ? 'var(--danger)' : data.cpu_percent > 30 ? 'var(--warning)' : 'var(--accent)'; const ramColor = ramPercent > 70 ? 'var(--danger)' : ramPercent > 50 ? 'var(--warning)' : 'var(--accent)'; return (

System Telemetry

{isProcessing && Inference Active}
CPU Load
{data.cpu_percent}%
On-device inference
Memory
{(data.ram_used_mb / 1024).toFixed(1)} GB
of {(data.ram_total_mb / 1024).toFixed(0)} GB used
{isProcessing ? ( <> ONNX Runtime (CPU) + llama.cpp ) : ( <> Models loaded in RAM (idle) )}
); };