feat(core): add PowerState skeleton in new power module

Introduces crates/core/src/power.rs with the PowerState enum
(OnAc / OnBattery / Unknown) and a unit test confirming the three
variants are distinct. Registers the module in lib.rs and adds
tempfile = "3" to dev-dependencies for use in later tasks.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
jars
2026-05-09 11:14:24 +01:00
parent c46c0a5ce9
commit 1f3496e4ed
4 changed files with 32 additions and 0 deletions

1
Cargo.lock generated
View File

@@ -2859,6 +2859,7 @@ dependencies = [
"serde",
"serde_json",
"sysinfo",
"tempfile",
"thiserror 2.0.18",
]

View File

@@ -11,3 +11,6 @@ thiserror = "2"
sysinfo = "0.35"
async-trait = "0.1"
num_cpus = "1"
[dev-dependencies]
tempfile = "3"

View File

@@ -5,6 +5,7 @@ pub mod model_registry;
pub mod paths;
pub mod process_watch;
pub mod recommendation;
pub mod power;
pub mod types;
pub use error::{MagnotiaError, Result};

27
crates/core/src/power.rs Normal file
View File

@@ -0,0 +1,27 @@
//! Power-state probe for inference thread tuning.
//!
//! Reports whether the machine is running on AC or battery so callers
//! can drop thread counts when energy matters more than throughput.
//! Linux uses the documented sysfs ABI under
//! `/sys/class/power_supply/`. macOS and Windows return `Unknown` for
//! now; native probes (IOPSGetProvidingPowerSourceType,
//! GetSystemPowerStatus) are deferred.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum PowerState {
OnAc,
OnBattery,
Unknown,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn power_state_variants_are_distinct() {
assert_ne!(PowerState::OnAc, PowerState::OnBattery);
assert_ne!(PowerState::OnAc, PowerState::Unknown);
assert_ne!(PowerState::OnBattery, PowerState::Unknown);
}
}