use clap::{Args, Subcommand};
#[derive(Subcommand)]
pub(in crate::cli) enum BenchAction {
Verify(BenchVerifyArgs),
Memory(BenchMemoryArgs),
Coding(BenchCodingArgs),
Report(BenchReportArgs),
}
#[derive(Args)]
pub(in crate::cli) struct BenchVerifyArgs {
#[arg(long, default_value = "eval/public")]
pub(in crate::cli) root: String,
#[arg(long)]
pub(in crate::cli) json_out: String,
}
#[derive(Args)]
pub(in crate::cli) struct BenchMemoryArgs {
#[arg(long, default_value = crate::eval::memory_bench::types::DEFAULT_SUITE)]
pub(in crate::cli) suite: String,
#[arg(long)]
pub(in crate::cli) condition: Option<String>,
#[arg(long, default_value = crate::eval::memory_bench::types::DEFAULT_PUBLIC_ROOT)]
pub(in crate::cli) root: String,
#[arg(long)]
pub(in crate::cli) artifact_prefix: Option<String>,
#[arg(long)]
pub(in crate::cli) json_out: String,
}
#[derive(Args)]
pub(in crate::cli) struct BenchCodingArgs {
#[arg(long, default_value = "issue385-v1")]
pub(in crate::cli) suite: String,
#[arg(long)]
pub(in crate::cli) fixture: Option<String>,
#[arg(long, default_value = "3")]
pub(in crate::cli) runs_per_condition: usize,
#[arg(long)]
pub(in crate::cli) json_out: String,
#[arg(long)]
pub(in crate::cli) condition: Option<String>,
#[arg(long)]
pub(in crate::cli) task: Option<String>,
#[arg(long, default_value = "full")]
pub(in crate::cli) task_set: String,
#[arg(long)]
pub(in crate::cli) keep_workdirs: bool,
#[arg(long)]
pub(in crate::cli) dry_run: bool,
#[arg(long, default_value = "codex")]
pub(in crate::cli) runner: String,
#[arg(long, default_value = "codex")]
pub(in crate::cli) codex_bin: String,
#[arg(long, default_value = "gpt-5.5")]
pub(in crate::cli) model: String,
#[arg(long)]
pub(in crate::cli) provider: Option<String>,
#[arg(long, default_value = "medium")]
pub(in crate::cli) reasoning_effort: String,
#[arg(long)]
pub(in crate::cli) ignore_budget: bool,
}
#[derive(Args)]
pub(in crate::cli) struct BenchReportArgs {
#[arg(long, default_value = "eval/public")]
pub(in crate::cli) root: String,
#[arg(long)]
pub(in crate::cli) json_out: String,
#[arg(long)]
pub(in crate::cli) markdown_out: String,
}
#[derive(Args)]
pub(in crate::cli) struct EvalExtractionArgs {
#[arg(long, default_value = crate::eval::extraction::DEFAULT_CORPUS_PATH)]
pub(in crate::cli) corpus: String,
#[arg(long, default_value = crate::eval::extraction::DEFAULT_BASELINE_PATH)]
pub(in crate::cli) baseline: String,
#[arg(long)]
pub(in crate::cli) json: bool,
#[arg(long)]
pub(in crate::cli) check_baseline: bool,
}
#[derive(Args)]
pub(in crate::cli) struct EvalGatesArgs {
#[arg(long, default_value = crate::eval::gates::DEFAULT_BASELINE_PATH)]
pub(in crate::cli) baseline: String,
#[arg(long, default_value = crate::eval::gates::DEFAULT_THRESHOLDS_PATH)]
pub(in crate::cli) thresholds: String,
#[arg(long, default_value = crate::eval::gates::DEFAULT_GOLDEN_DATASET_PATH)]
pub(in crate::cli) golden_dataset: String,
#[arg(long)]
pub(in crate::cli) json_out: Option<String>,
#[arg(long)]
pub(in crate::cli) json: bool,
#[arg(long, hide = true)]
pub(in crate::cli) simulate_golden_regression: bool,
}
#[derive(Args)]
pub(in crate::cli) struct EvalGraphDecisionArgs {
#[arg(long, default_value = crate::eval::graph_decision::DEFAULT_DATASET_PATH)]
pub(in crate::cli) dataset: String,
#[arg(long, short = 'k', default_value = "5")]
pub(in crate::cli) k: usize,
#[arg(long, default_value = crate::eval::graph_decision::DEFAULT_REPORT_PATH)]
pub(in crate::cli) json_out: String,
#[arg(long)]
pub(in crate::cli) json: bool,
}
#[derive(Args)]
pub(in crate::cli) struct EvalWeightGridArgs {
#[arg(long, default_value = crate::eval::weight_grid::DEFAULT_DATASET_PATH)]
pub(in crate::cli) dataset: String,
#[arg(long, short = 'k', default_value = "5")]
pub(in crate::cli) k: usize,
#[arg(long, default_value = crate::eval::weight_grid::DEFAULT_REPORT_PATH)]
pub(in crate::cli) json_out: String,
#[arg(long)]
pub(in crate::cli) json: bool,
}
#[derive(Args)]
pub(in crate::cli) struct EvalCodingBenchArgs {
#[arg(long)]
pub(in crate::cli) fixture: String,
#[arg(long)]
pub(in crate::cli) runs_per_condition: usize,
#[arg(long)]
pub(in crate::cli) json_out: Option<String>,
#[arg(long)]
pub(in crate::cli) condition: Option<String>,
#[arg(long)]
pub(in crate::cli) task: Option<String>,
#[arg(long, default_value = "full")]
pub(in crate::cli) task_set: String,
#[arg(long)]
pub(in crate::cli) keep_workdirs: bool,
#[arg(long)]
pub(in crate::cli) dry_run: bool,
#[arg(long, default_value = "codex")]
pub(in crate::cli) runner: String,
#[arg(long, default_value = "codex")]
pub(in crate::cli) codex_bin: String,
#[arg(long, default_value = "gpt-5.5")]
pub(in crate::cli) model: String,
#[arg(long)]
pub(in crate::cli) provider: Option<String>,
#[arg(long, default_value = "medium")]
pub(in crate::cli) reasoning_effort: String,
#[arg(long)]
pub(in crate::cli) ignore_budget: bool,
}