//! Arguments for `mcptest eval`.

use clap::Args;

use crate::cli::parsers::parse_dollar_amount;

/// Arguments for `mcptest eval`.
///
/// Single-judge mode: every eval test in the suite is graded by one LLM
/// judge, the verdict and rationale are pretty-printed, and a cost budget
/// tracks cumulative spend. `max_cost` is parsed in USD with an optional
/// leading `$`.
#[derive(Debug, Args, Default)]
pub struct EvalArgs {
    /// Hard ceiling in USD across every LLM-judge call in the run.
    #[arg(long, value_name = "USD", value_parser = parse_dollar_amount)]
    pub max_cost: Option<f64>,

    /// Disable the LLM-judge verdict cache for this run.
    ///
    /// Overrides `evals.cache.verdicts: true` in YAML.
    #[arg(long = "no-verdict-cache")]
    pub no_verdict_cache: bool,

    /// Print what each eval would judge (rubric, candidate source, judge
    /// model) without calling any provider or spending tokens, then exit.
    #[arg(long)]
    pub explain: bool,
}
