pub struct Pack {
pub name: &'static str,
pub description: &'static str,
pub policy_yaml: &'static str,
}
const DEFAULT_POLICY: &str = include_str!(concat!(
env!("CARGO_MANIFEST_DIR"),
"/packs/default-policy.yaml"
));
const HARDENED_POLICY: &str = include_str!(concat!(
env!("CARGO_MANIFEST_DIR"),
"/packs/hardened-policy.yaml"
));
const DEV_POLICY: &str = include_str!(concat!(
env!("CARGO_MANIFEST_DIR"),
"/packs/dev-policy.yaml"
));
pub fn list() -> &'static [Pack] {
&[
Pack {
name: "default",
description: "Balanced defaults (current protections)",
policy_yaml: DEFAULT_POLICY,
},
Pack {
name: "hardened",
description: "No shell, no network, read-only FS (strict)",
policy_yaml: HARDENED_POLICY,
},
Pack {
name: "dev",
description: "Permissive, logging-first (for local iteration)",
policy_yaml: DEV_POLICY,
},
]
}
pub fn get(name: &str) -> Option<&'static Pack> {
list().iter().find(|p| p.name.eq_ignore_ascii_case(name))
}