use sysinfo::System;
pub use kodegen_mcp_schema::config::{SystemInfo, MemoryInfo, ClientInfo, ClientRecord};
#[must_use]
pub fn get_system_info() -> SystemInfo {
let mut sys = System::new_all();
sys.refresh_all();
let total_kb = sys.total_memory();
let available_kb = sys.available_memory();
let used_kb = sys.used_memory();
SystemInfo {
platform: std::env::consts::OS.to_string(),
arch: std::env::consts::ARCH.to_string(),
os_version: System::long_os_version()
.unwrap_or_else(|| format!("{} (unknown version)", std::env::consts::OS)),
kernel_version: System::kernel_version().unwrap_or_else(|| "unknown".to_string()),
hostname: System::host_name().unwrap_or_else(|| "unknown".to_string()),
rust_version: env!("CARGO_PKG_VERSION").to_string(),
cpu_count: sys.cpus().len(),
memory: MemoryInfo {
total_mb: format!("{} MB", total_kb / 1024),
available_mb: format!("{} MB", available_kb / 1024),
used_mb: format!("{} MB", used_kb / 1024),
},
}
}