//! Arguments for `mcptest ablation`: with/without-tools uplift over a suite.

use std::path::PathBuf;

use clap::Args;

/// Run each single-prompt agent test in a suite twice, once with the server's
/// tools advertised and once with them withheld, and report the uplift: how many
/// tasks the tools turned from fail to pass, how often the model reached for a
/// tool, and the cost and latency the tool round-trips added. Answers whether
/// attaching the MCP server's tools actually helps the agent (see the `ablation`
/// guide). Arm success is scored against each agent test's deterministic
/// `expect:` block.
#[derive(Debug, Args)]
pub struct AblationArgs {
    /// Path to the suite YAML (its `agents:` block defines the tasks).
    #[arg(value_name = "CONFIG")]
    pub config: PathBuf,

    /// Minimum net success uplift in `[-1, 1]` required to pass. The default
    /// `0.0` accepts tools that do not hurt; a positive value demands measured
    /// help.
    #[arg(long, default_value_t = 0.0)]
    pub min_uplift: f64,

    /// Emit the report as JSON instead of the pretty summary.
    #[arg(long)]
    pub json: bool,

    /// Allow the offline canned stub when an agent's provider key is absent.
    /// Both arms then share the same canned response, so the uplift is zero; use
    /// it to smoke-test the wiring without a key.
    #[arg(long)]
    pub allow_stub_provider: bool,
}
