use crate::config::McpPolicyConfig;
use super::types::{PolicyAction, PolicyRule, RuleConditions};
pub fn v1_to_v2_rules(config: &McpPolicyConfig) -> Vec<PolicyRule> {
let mut rules = Vec::new();
let mut priority = 300u32;
for tool in &config.blocked_tools {
rules.push(PolicyRule {
id: format!("v1:blocked:{tool}"),
priority,
label: format!("Blocked: {tool}"),
enabled: true,
conditions: RuleConditions {
tools: vec![tool.clone()],
..Default::default()
},
action: PolicyAction::Deny {
reason: format!("tool '{tool}' is blocked"),
},
});
priority += 1;
}
if config.dry_run_mutations {
rules.push(PolicyRule {
id: "v1:dry_run".into(),
priority,
label: "Dry-run mode".into(),
enabled: true,
conditions: RuleConditions::default(),
action: PolicyAction::DryRun,
});
priority += 1;
}
for tool in &config.require_approval_for {
rules.push(PolicyRule {
id: format!("v1:approval:{tool}"),
priority,
label: format!("Requires approval: {tool}"),
enabled: true,
conditions: RuleConditions {
tools: vec![tool.clone()],
..Default::default()
},
action: PolicyAction::RequireApproval {
reason: format!("tool '{tool}' requires approval"),
},
});
priority += 1;
}
rules
}