Skip to main content

clawft_kernel/
config.rs

1//! Kernel configuration re-exports and extensions.
2//!
3//! The base [`KernelConfig`] is defined in `clawft-types` so it can
4//! be embedded in the root `Config` without circular dependencies.
5//! This module re-exports it and provides kernel-specific extensions.
6
7pub use clawft_types::config::KernelConfig;
8
9use crate::capability::AgentCapabilities;
10
11/// Extended kernel configuration with capability defaults.
12///
13/// This wraps the base `KernelConfig` from `clawft-types` with
14/// kernel-specific fields that reference types only available
15/// in this crate (e.g. `AgentCapabilities`).
16#[derive(Debug, Clone, Default)]
17pub struct KernelConfigExt {
18    /// Base configuration from the config file.
19    pub base: KernelConfig,
20
21    /// Default capabilities assigned to new agents when none are
22    /// specified explicitly.
23    pub default_capabilities: Option<AgentCapabilities>,
24}
25
26impl From<KernelConfig> for KernelConfigExt {
27    fn from(base: KernelConfig) -> Self {
28        Self {
29            base,
30            default_capabilities: None,
31        }
32    }
33}
34
35#[cfg(test)]
36mod tests {
37    use super::*;
38
39    #[test]
40    fn kernel_config_ext_from_base() {
41        let base = KernelConfig {
42            enabled: true,
43            max_processes: 128,
44            health_check_interval_secs: 10,
45            cluster: None,
46            chain: None,
47            resource_tree: None,
48        };
49        let ext = KernelConfigExt::from(base.clone());
50        assert_eq!(ext.base.enabled, true);
51        assert_eq!(ext.base.max_processes, 128);
52        assert!(ext.default_capabilities.is_none());
53    }
54
55    #[test]
56    fn kernel_config_ext_default() {
57        let ext = KernelConfigExt::default();
58        assert!(!ext.base.enabled);
59        assert_eq!(ext.base.max_processes, 64);
60    }
61
62    #[test]
63    fn kernel_config_reexport() {
64        // Verify the re-export works
65        let cfg = KernelConfig::default();
66        assert!(!cfg.enabled);
67    }
68}