use crate::cli::parse_token_budget;
use clap::{Args, Subcommand};
use std::path::PathBuf;
#[derive(Args)]
pub struct AiOptions {
#[command(subcommand)]
pub command: AiCommands,
}
#[derive(Subcommand)]
pub enum AiCommands {
#[command(
about = "Generate an LLM-ready handoff: repository context, evidence, and a prioritized fix plan",
after_help = "EXAMPLES:\n \
repopilot ai context .\n \
repopilot ai context . --focus security --budget 8k\n \
repopilot ai context . --no-task --output ai-context.md"
)]
Context(AiContextOptions),
}
#[derive(Args)]
pub struct AiContextOptions {
pub path: PathBuf,
#[arg(long)]
pub config: Option<PathBuf>,
#[arg(long, value_parser = ["security", "arch", "architecture", "quality", "framework", "all"])]
pub focus: Option<String>,
#[arg(long, value_parser = parse_token_budget)]
pub budget: Option<usize>,
#[arg(short, long)]
pub output: Option<PathBuf>,
#[arg(long)]
pub no_header: bool,
#[arg(long)]
pub no_task: bool,
#[arg(long)]
pub show_breakdown: bool,
}