use clap::{Parser, Subcommand};
use std::path::PathBuf;
use super::ValidateOutputFormat;
#[derive(clap::Args, Debug, Clone)]
pub struct ValidateArgs {
#[arg(value_name = "CONFIG", conflicts_with = "config")]
pub config_path: Option<std::path::PathBuf>,
#[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, value_enum, default_value_t = ValidateOutputFormat::Text)]
pub format: ValidateOutputFormat,
#[arg(long)]
pub output: Option<std::path::PathBuf>,
#[arg(long)]
pub deny_deprecations: bool,
}
impl ValidateArgs {
pub fn resolved_config(&self) -> &std::path::PathBuf {
self.config_path.as_ref().unwrap_or(&self.config)
}
}
#[derive(Parser, Clone)]
pub struct QuarantineArgs {
#[command(subcommand)]
pub cmd: QuarantineSub,
#[arg(long, default_value = ".eval/eval.db")]
pub db: PathBuf,
#[arg(long, default_value = "demo")]
pub suite: String,
}
#[derive(Subcommand, Clone)]
pub enum QuarantineSub {
Add {
#[arg(long)]
test_id: String,
#[arg(long)]
reason: String,
},
Remove {
#[arg(long)]
test_id: String,
},
List,
}
#[derive(Parser, Clone)]
pub struct TraceArgs {
#[command(subcommand)]
pub cmd: TraceSub,
}
#[derive(Subcommand, Clone)]
pub enum TraceSub {
Ingest {
#[arg(long)]
input: PathBuf,
#[arg(long)]
output: PathBuf,
},
IngestOtel {
#[arg(long)]
input: PathBuf,
#[arg(long)]
db: PathBuf,
#[arg(long)]
suite: Option<String>,
#[arg(long)]
out_trace: Option<PathBuf>,
},
Verify {
#[arg(long)]
trace: PathBuf,
#[arg(long)]
config: PathBuf,
},
PrecomputeEmbeddings {
#[arg(long)]
trace: PathBuf,
#[arg(long)]
config: PathBuf, #[arg(long)]
embedder: String,
#[arg(long, default_value = "text-embedding-3-small")]
model: String,
#[arg(long)]
output: Option<PathBuf>,
},
PrecomputeJudge {
#[arg(long)]
trace: PathBuf,
#[arg(long)]
config: PathBuf, #[arg(long)]
judge: String,
#[arg(long)]
judge_model: Option<String>,
#[arg(long)]
output: Option<PathBuf>,
},
ImportMcp {
#[arg(long)]
input: PathBuf,
#[arg(long)]
out_trace: PathBuf,
#[arg(long, default_value = "inspector")]
format: String,
#[arg(long)]
episode_id: Option<String>,
#[arg(long)]
test_id: Option<String>,
#[arg(long)]
prompt: Option<String>,
},
}