project-nomad/admin/types/system.ts

163 lines
3.6 KiB
TypeScript

import { Systeminformation } from 'systeminformation'
export type GpuHealthStatus = {
status: 'ok' | 'passthrough_failed' | 'no_gpu' | 'ollama_not_installed'
hasNvidiaRuntime: boolean
hasRocmRuntime: boolean
ollamaGpuAccessible: boolean
gpuVendor?: 'nvidia' | 'amd'
}
export type SystemInformationResponse = {
cpu: Systeminformation.CpuData
mem: Systeminformation.MemData
os: Systeminformation.OsData
disk: NomadDiskInfo[]
currentLoad: Systeminformation.CurrentLoadData
fsSize: Systeminformation.FsSizeData[]
uptime: Systeminformation.TimeData
graphics: Systeminformation.GraphicsData
gpuHealth?: GpuHealthStatus
}
// Type inferrence is not working properly with usePage and shared props, so we define this type manually
export type UsePageProps = {
appVersion: string
environment: string
}
export type LSBlockDevice = {
name: string
size: string
type: string
model: string | null
serial: string | null
vendor: string | null
rota: boolean | null
tran: string | null
children?: LSBlockDevice[]
}
export type NomadDiskInfoRaw = {
diskLayout: {
blockdevices: LSBlockDevice[]
}
fsSize: {
fs: string
size: number
used: number
available: number
use: number
mount: string
}[]
}
export type NomadDiskInfo = {
name: string
model: string
vendor: string
rota: boolean
tran: string
size: string
totalUsed: number
totalSize: number
percentUsed: number
filesystems: {
fs: string
mount: string
used: number
size: number
percentUsed: number
}[]
}
export type SystemUpdateStatus = {
stage: 'idle' | 'starting' | 'pulling' | 'pulled' | 'recreating' | 'complete' | 'error'
progress: number
message: string
timestamp: string
}
export type CheckLatestVersionResult = {
success: boolean,
updateAvailable: boolean,
currentVersion: string,
latestVersion: string,
message?: string
}
export type AutoUpdateEligibleTarget = {
version: string
tag: string
publishedAt: string
}
export type AutoUpdateStatus = {
enabled: boolean
windowStart: string
windowEnd: string
cooloffHours: number
currentVersion: string
withinWindow: boolean
eligibleTarget: AutoUpdateEligibleTarget | null
lastAttemptAt: string | null
lastResult: string | null
lastError: string | null
consecutiveFailures: number
autoDisabledReason: string | null
}
export type AppAutoUpdateAppStatus = {
service_name: string
friendly_name: string | null
auto_update_enabled: boolean
current_version: string
available_update_version: string | null
first_seen_at: string | null
eligible: boolean
reason: string
cooloff_remaining_hours: number | null
consecutive_failures: number
auto_disabled_reason: string | null
}
export type AppAutoUpdateStatus = {
enabled: boolean
windowStart: string
windowEnd: string
cooloffHours: number
withinWindow: boolean
lastAttemptAt: string | null
lastResult: string | null
apps: AppAutoUpdateAppStatus[]
}
export type ContentAutoUpdateResourceStatus = {
resource_id: string
resource_type: 'zim' | 'map'
current_version: string
available_update_version: string | null
size_bytes: number | null
eligible: boolean
reason: string
cooloff_remaining_hours: number | null
exceeds_cap: boolean
consecutive_failures: number
auto_disabled_reason: string | null
}
export type ContentAutoUpdateStatus = {
enabled: boolean
windowStart: string
windowEnd: string
cooloffHours: number
maxBytesPerWindow: number
withinWindow: boolean
windowBytesUsed: number
lastAttemptAt: string | null
lastResult: string | null
lastError: string | null
autoDisabledReason: string | null
resources: ContentAutoUpdateResourceStatus[]
}