use serde::{Deserialize, Serialize};
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct DebugSection {
pub tool_latency_avg_ms: Option<u64>,
pub api_latency_avg_ms: Option<u64>,
pub tool_success_rate: Option<f32>,
pub tokens_per_iteration: Option<u64>,
pub tools_per_iteration: Option<u32>,
}
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct ApiSection {
pub api_key: Option<String>,
pub api_key_enc: Option<String>,
pub base_url: Option<String>,
pub model: Option<String>,
pub max_tokens: Option<u32>,
pub provider: Option<String>,
pub providers: Option<String>,
}
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct AgentSection {
pub tool_timeout_secs: Option<u64>,
pub task_timeout_secs: Option<u64>,
pub max_iterations: Option<u32>,
pub max_continuations: Option<u32>,
pub circuit_breaker_threshold: Option<u32>,
pub stream_idle_timeout_secs: Option<u64>,
pub stream_max_retries: Option<u32>,
pub iteration_delay_ms: Option<u64>,
pub auto_optimize: Option<bool>,
pub auto_route: Option<bool>,
}
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct ContextSection {
pub max_tokens: Option<usize>,
pub compaction_threshold: Option<f32>,
pub adaptive_compaction: Option<bool>,
}
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct HooksSection {
pub auto_commit: Option<bool>,
pub lint_cmd: Option<String>,
pub test_cmd: Option<String>,
}
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct UiSection {
pub theme: Option<String>,
pub debug_mode: Option<bool>,
}
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct BenchSection {
pub retain_days: Option<u32>,
}
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct PathsSection {
pub home: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SecuritySection {
pub pii_filter: Option<bool>,
#[serde(default)]
pub deny_paths: Vec<String>,
pub follow_symlinks: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct SoulSection {
pub enabled: Option<bool>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct EvolutionSection {
pub enabled: Option<bool>,
pub model: Option<String>,
pub cycles: Option<u32>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct TelemetrySection {
pub enabled: Option<bool>,
pub error_reporting: Option<bool>,
pub analytics: Option<bool>,
}