1pub use clawft_types::config::KernelConfig;
8
9use crate::capability::AgentCapabilities;
10
11#[derive(Debug, Clone, Default)]
17pub struct KernelConfigExt {
18 pub base: KernelConfig,
20
21 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 governance: Default::default(),
43 profile: None,
44 shared_services: Default::default(),
45 enabled: true,
46 max_processes: 128,
47 health_check_interval_secs: 10,
48 cluster: None,
49 chain: None,
50 resource_tree: None,
51 vector: None,
52 spatial: None,
53 profiles: None,
54 pairing: None,
55 mesh: None,
56 anchor: None,
57 ipc_tcp: None,
58 llm: None,
59 agent: None,
60 brand: ::clawft_types::config::DEFAULT_BRAND.to_string(),
61 };
62 let ext = KernelConfigExt::from(base.clone());
63 assert!(ext.base.enabled);
64 assert_eq!(ext.base.max_processes, 128);
65 assert!(ext.default_capabilities.is_none());
66 }
67
68 #[test]
69 fn kernel_config_ext_default() {
70 let ext = KernelConfigExt::default();
71 assert!(ext.base.enabled);
72 assert_eq!(ext.base.max_processes, 64);
73 }
74
75 #[test]
76 fn kernel_config_reexport() {
77 let cfg = KernelConfig::default();
79 assert!(cfg.enabled);
80 }
81}