1use std::path::PathBuf;
2
3use clap::{Parser, Subcommand};
4
5use crate::reasoning::ReasoningLevel;
6
7#[derive(Parser, Debug)]
8#[command(name = "rho")]
9pub struct Cli {
10 #[arg(long)]
11 pub provider: Option<String>,
12 #[arg(long)]
13 pub model: Option<String>,
14 #[arg(long)]
15 pub config: Option<PathBuf>,
16 #[arg(long, value_parser = ["api-key", "codex", "anthropic-api-key", "github-copilot"])]
17 pub auth: Option<String>,
18 #[arg(long)]
20 pub no_system_prompt: bool,
21 #[arg(long)]
23 pub no_tools: bool,
24 #[arg(long)]
26 pub reasoning: Option<ReasoningLevel>,
27 #[arg(short = 'R', long, value_name = "ID", num_args = 0..=1)]
29 pub resume: Option<Option<String>>,
30 #[command(subcommand)]
31 pub command: Option<Command>,
32}
33
34#[derive(Subcommand, Debug)]
35pub enum Command {
36 Run {
38 #[arg(long)]
40 stdin: bool,
41 #[arg(value_name = "PROMPT", num_args = 0..)]
43 prompt: Vec<String>,
44 },
45 Login {
47 #[arg(value_name = "PROVIDER")]
49 provider: String,
50 #[arg(long)]
52 device_auth: bool,
53 },
54 Update,
56}