use clap::Args;
use crate::agent;
use crate::cli::task::args::types::BatchMode;
#[derive(Args)]
pub struct TaskBuildArgs {
#[arg(value_name = "REQUEST")]
pub request: Vec<String>,
#[arg(long, default_value = "")]
pub tags: String,
#[arg(long, default_value = "")]
pub scope: String,
#[arg(long)]
pub runner: Option<String>,
#[arg(long)]
pub model: Option<String>,
#[arg(short = 'e', long)]
pub effort: Option<String>,
#[arg(long = "repo-prompt", value_enum, value_name = "MODE")]
pub repo_prompt: Option<agent::RepoPromptMode>,
#[command(flatten)]
pub runner_cli: agent::RunnerCliArgs,
#[arg(short = 't', long, value_name = "TEMPLATE")]
pub template: Option<String>,
#[arg(long, value_name = "PATH")]
pub target: Option<String>,
#[arg(long, value_name = "DURATION")]
pub estimate: Option<String>,
#[arg(long)]
pub strict_templates: bool,
}
#[derive(Args)]
#[command(after_long_help = "Examples:
ralph task build refactor
ralph task build refactor --threshold 700
ralph task build refactor --path crates/ralph/src/cli
ralph task build refactor --dry-run --threshold 500
ralph task build refactor --batch never
ralph task build refactor --tags urgent,technical-debt")]
pub struct TaskBuildRefactorArgs {
#[arg(long, default_value = "1000")]
pub threshold: usize,
#[arg(long)]
pub path: Option<std::path::PathBuf>,
#[arg(long)]
pub dry_run: bool,
#[arg(long, value_enum, default_value = "auto")]
pub batch: BatchMode,
#[arg(long)]
pub tags: Option<String>,
#[arg(long)]
pub runner: Option<String>,
#[arg(long)]
pub model: Option<String>,
#[arg(short = 'e', long)]
pub effort: Option<String>,
#[arg(long = "repo-prompt", value_enum, value_name = "MODE")]
pub repo_prompt: Option<agent::RepoPromptMode>,
#[command(flatten)]
pub runner_cli: agent::RunnerCliArgs,
#[arg(long)]
pub strict_templates: bool,
}