use std::path::PathBuf;
#[derive(Debug)]
pub struct ConfigFile {
pub model: Option<String>,
pub provider: Option<String>,
pub api_key_env: Option<String>,
pub verbose: Option<bool>,
pub log_level: Option<String>,
pub workspace: Option<PathBuf>,
pub tools: Option<ToolConfig>,
pub context: Option<ContextConfig>,
pub logging: Option<LoggingConfig>,
pub performance: Option<PerformanceConfig>,
pub security: Option<SecurityConfig>,
}
#[derive(Debug, serde::Deserialize)]
pub struct ToolConfig {
pub enable_validation: Option<bool>,
pub max_execution_time_seconds: Option<u64>,
pub allow_file_creation: Option<bool>,
pub allow_file_deletion: Option<bool>,
}
#[derive(Debug, serde::Deserialize)]
pub struct ContextConfig {
pub max_context_length: Option<usize>,
}
#[derive(Debug, serde::Deserialize)]
pub struct LoggingConfig {
pub file_logging: Option<bool>,
pub log_directory: Option<String>,
pub max_log_files: Option<usize>,
pub max_log_size_mb: Option<usize>,
}
#[derive(Debug, serde::Deserialize)]
pub struct PerformanceConfig {
pub enabled: Option<bool>,
pub track_token_usage: Option<bool>,
pub track_api_costs: Option<bool>,
pub track_response_times: Option<bool>,
pub enable_benchmarking: Option<bool>,
pub metrics_retention_days: Option<usize>,
}
#[derive(Debug, serde::Deserialize)]
pub struct SecurityConfig {
pub level: Option<String>,
pub enable_audit_logging: Option<bool>,
pub enable_vulnerability_scanning: Option<bool>,
pub allow_external_urls: Option<bool>,
pub max_file_access_depth: Option<usize>,
}