/* eslint-disable @typescript-eslint/no-explicit-any */ import { createFileRoute } from '@tanstack/react-router' import { useEffect } from 'react' import { useHardware } from '@/hooks/useHardware' import { Progress } from '@/components/ui/progress' import { route } from '@/constants/routes' import { formatMegaBytes } from '@/lib/utils' import { IconDeviceDesktopAnalytics } from '@tabler/icons-react' import { useTranslation } from '@/i18n/react-i18next-compat' import { toNumber } from '@/utils/number' import { useLlamacppDevices } from '@/hooks/useLlamacppDevices' import { useServiceHub } from '@/hooks/useServiceHub' import { PlatformGuard } from '@/lib/platform/PlatformGuard' import { PlatformFeature } from '@/lib/platform' export const Route = createFileRoute(route.systemMonitor as any)({ component: SystemMonitor, }) function SystemMonitor() { return ( ) } function SystemMonitorContent() { const { t } = useTranslation() const { hardwareData, systemUsage, updateSystemUsage } = useHardware() const serviceHub = useServiceHub() const { devices: llamacppDevices, fetchDevices } = useLlamacppDevices() useEffect(() => { // Fetch llamacpp devices fetchDevices() }, [updateSystemUsage, fetchDevices]) // Poll system usage every 5 seconds useEffect(() => { const intervalId = setInterval(() => { serviceHub.hardware().getSystemUsage() .then((data) => { if (data) { updateSystemUsage(data) } }) .catch((error) => { console.error('Failed to get system usage:', error) }) }, 5000) return () => clearInterval(intervalId) }, [updateSystemUsage, serviceHub]) // Calculate RAM usage percentage const ramUsagePercentage = toNumber(systemUsage.used_memory / hardwareData.total_memory) * 100 return (

{t('system-monitor:title')}

{/* CPU Usage Card */}

{t('system-monitor:cpuUsage')}

{t('system-monitor:model')} {hardwareData.cpu.name}
{t('system-monitor:cores')} {hardwareData.cpu.core_count}
{t('system-monitor:architecture')} {hardwareData.cpu.arch}
{t('system-monitor:currentUsage')} {systemUsage.cpu.toFixed(2)}%
{/* RAM Usage Card */}

{t('system-monitor:memoryUsage')}

{t('system-monitor:totalRam')} {formatMegaBytes(hardwareData.total_memory)}
{t('system-monitor:availableRam')} {formatMegaBytes( hardwareData.total_memory - systemUsage.used_memory )}
{t('system-monitor:usedRam')} {formatMegaBytes(systemUsage.used_memory)}
{t('system-monitor:currentUsage')} {ramUsagePercentage.toFixed(2)}%
{/* GPU Usage Card */} {!IS_MACOS && (

{t('system-monitor:activeGpus')}

{llamacppDevices.length > 0 ? ( llamacppDevices.map((device) => (
{device.name} {device.activated ? t('system-monitor:active') : 'Inactive'}
VRAM: {formatMegaBytes(device.mem)}
Free: {formatMegaBytes(device.free)}
)) ) : (
{t('system-monitor:noGpus')}
)}
)}
) }