Dashboard tab: CPU/mem/load, hwmon temps+fans, net, disks, filesystems, UPS with 10-min sparklines
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
24d64245ec
commit
3c6f4d4639
@@ -20,7 +20,27 @@ async function req<T>(method: string, path: string, body?: unknown): Promise<T>
|
||||
export interface Me { host: string; user: string; version: string; load: string; uptime: number }
|
||||
export interface Term { id: string; name: string; running: boolean; exit_code: number; created: string; clients: number }
|
||||
|
||||
export interface Temp { chip: string; label: string; c: number; max?: number; crit?: number }
|
||||
export interface Fan { chip: string; label: string; rpm: number }
|
||||
export interface NetIf { iface: string; up: boolean; rx_bps: number; tx_bps: number; rx_total: number; tx_total: number }
|
||||
export interface Disk { name: string; model?: string; read_bps: number; write_bps: number; util_pct: number; temp?: number }
|
||||
export interface FS { mount: string; type: string; size: number; used: number }
|
||||
export interface UPS { model: string; state: string; source: string; in_v: number; out_v: number; battery_pct: number; runtime_min: number; load_w: number; load_pct: number; last_event?: string }
|
||||
export interface Sample {
|
||||
t: number; cpu: number; cores: number[]; load: [number, number, number]
|
||||
mem: { total: number; used: number; avail: number }; swap: { total: number; used: number; avail: number }
|
||||
temps: Temp[]; fans: Fan[]; net: NetIf[]; disks: Disk[]; fs: FS[]; ups: UPS | null; uptime: number
|
||||
}
|
||||
export interface Series {
|
||||
t: number[]; cpu: number[]; mem: number[]
|
||||
net: Record<string, { rx: number[]; tx: number[] }>
|
||||
disk: Record<string, { r: number[]; w: number[]; u: number[] }>
|
||||
temp: Record<string, number[]>
|
||||
}
|
||||
|
||||
export const api = {
|
||||
metrics: () => req<Sample>('GET', '/api/metrics'),
|
||||
metricsHistory: () => req<Series>('GET', '/api/metrics/history'),
|
||||
login: (password: string) => req<void>('POST', '/api/login', { password }),
|
||||
logout: () => req<void>('POST', '/api/logout'),
|
||||
me: () => req<Me>('GET', '/api/me'),
|
||||
|
||||
Reference in New Issue
Block a user