use std::path::PathBuf;
use clap::{Parser, Subcommand};
#[derive(Debug, Parser)]
#[command(name = "helikon", version, about = "Paigasus Helikon agent CLI")]
pub struct Cli {
#[command(subcommand)]
pub command: Command,
}
#[derive(Debug, Subcommand)]
pub enum Command {
Repl(ReplArgs),
Eval {
#[command(subcommand)]
command: EvalCommand,
},
Mcp {
#[command(subcommand)]
command: McpCommand,
},
}
#[derive(Debug, clap::Args)]
pub struct ReplArgs {
#[arg(long, default_value = "agents.toml")]
pub agents: PathBuf,
#[arg(long)]
pub agent: Option<String>,
}
#[derive(Debug, Subcommand)]
pub enum EvalCommand {
Run(EvalRunArgs),
}
#[derive(Debug, clap::Args)]
pub struct EvalRunArgs {
pub dataset: PathBuf,
#[arg(long)]
pub agent: String,
#[arg(long, default_value = "agents.toml")]
pub agents: PathBuf,
#[arg(long)]
pub json: bool,
#[arg(long)]
pub fail_under: Option<f64>,
#[arg(long)]
pub trace: Option<String>,
}
#[derive(Debug, Subcommand)]
pub enum McpCommand {
Serve(McpServeArgs),
}
#[derive(Debug, clap::Args)]
pub struct McpServeArgs {
#[arg(long)]
pub agent: String,
#[arg(long, default_value = "agents.toml")]
pub agents: PathBuf,
#[arg(long)]
pub http: Option<String>,
}