use indexmap::IndexMap;
use serde::{Deserialize, Serialize};
use super::ToolConstraints;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AlternativeToolPolicyConfig {
pub version: u32,
pub default: AlternativeDefaultPolicy,
pub tools: IndexMap<String, AlternativeToolPolicy>,
#[serde(default)]
pub constraints: IndexMap<String, ToolConstraints>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AlternativeDefaultPolicy {
pub allow: bool,
pub rate_limit_per_run: u32,
pub max_concurrent: u32,
pub fs_write: bool,
pub network: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AlternativeToolPolicy {
pub allow: bool,
#[serde(default)]
pub fs_write: bool,
#[serde(default)]
pub network: bool,
#[serde(default)]
pub args_policy: Option<AlternativeArgsPolicy>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AlternativeArgsPolicy {
pub deny_substrings: Vec<String>,
}