use clap::Parser;
use std::path::PathBuf;
#[derive(Parser, Clone)]
pub struct CalibrateArgs {
#[arg(long)]
pub run: Option<PathBuf>,
#[arg(long, default_value = ".eval/eval.db")]
pub db: PathBuf,
#[arg(long)]
pub suite: Option<String>,
#[arg(long, default_value_t = 200)]
pub last: u32,
#[arg(long, default_value = "calibration.json")]
pub out: PathBuf,
#[arg(long, default_value_t = 0.10)]
pub target_tail: f64,
}
#[derive(clap::Args, Debug, Clone)]
pub struct DoctorArgs {
#[arg(long)]
pub config: Option<std::path::PathBuf>,
#[arg(long)]
pub trace_file: Option<std::path::PathBuf>,
#[arg(long)]
pub baseline: Option<std::path::PathBuf>,
#[arg(long)]
pub db: Option<std::path::PathBuf>,
#[arg(long, default_value = "false")]
pub replay_strict: bool,
#[arg(long, default_value = "text")]
pub format: String,
#[arg(long)]
pub out: Option<std::path::PathBuf>,
#[arg(long)]
pub fix: bool,
#[arg(long)]
pub yes: bool,
#[arg(long)]
pub dry_run: bool,
}
#[derive(clap::Args, Debug, Clone)]
pub struct WatchArgs {
#[arg(long, default_value = "eval.yaml")]
pub config: std::path::PathBuf,
#[arg(long)]
pub trace_file: Option<std::path::PathBuf>,
#[arg(long)]
pub baseline: Option<std::path::PathBuf>,
#[arg(long, default_value = ".eval/eval.db")]
pub db: std::path::PathBuf,
#[arg(long)]
pub strict: bool,
#[arg(long, default_value = "false")]
pub replay_strict: bool,
#[arg(long)]
pub clear: bool,
#[arg(long, default_value_t = 350)]
pub debounce_ms: u64,
}
#[derive(clap::ValueEnum, Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub enum MaxRisk {
Low,
Medium,
High,
}
#[derive(clap::Args, Debug, Clone)]
pub struct FixArgs {
#[arg(long, default_value = "assay.yaml")]
pub config: std::path::PathBuf,
#[arg(long)]
pub trace_file: Option<std::path::PathBuf>,
#[arg(long)]
pub baseline: Option<std::path::PathBuf>,
#[arg(long, default_value = "false")]
pub replay_strict: bool,
#[arg(long)]
pub yes: bool,
#[arg(long)]
pub dry_run: bool,
#[arg(long)]
pub only: Vec<String>,
#[arg(long, value_enum, default_value_t = MaxRisk::High)]
pub max_risk: MaxRisk,
#[arg(long)]
pub list: bool,
}
#[derive(clap::Args, Debug, Clone)]
pub struct SandboxArgs {
#[arg(allow_hyphen_values = true, required = true, trailing_var_arg = true)]
pub command: Vec<String>,
#[arg(long, short)]
pub policy: Option<std::path::PathBuf>,
#[arg(long, short)]
pub workdir: Option<std::path::PathBuf>,
#[arg(long)]
pub timeout: Option<u64>,
#[arg(long)]
pub enforce: bool,
#[arg(long, conflicts_with = "enforce")]
pub dry_run: bool,
#[arg(long)]
pub fail_closed: bool,
#[arg(long = "env-strict")]
pub env_strict: bool,
#[arg(long = "env-strip-exec")]
pub env_strip_exec: bool,
#[arg(long = "env-allow", value_delimiter = ',')]
pub env_allow: Option<Vec<String>>,
#[arg(long = "env-passthrough")]
pub env_passthrough: bool,
#[arg(long = "env-safe-path")]
pub env_safe_path: bool,
#[arg(long)]
pub profile: Option<PathBuf>,
#[arg(long, default_value = "yaml")]
pub profile_format: String,
#[arg(long)]
pub profile_report: Option<PathBuf>,
#[arg(long, short)]
pub verbose: bool,
#[arg(long, short)]
pub quiet: bool,
}