pub mod init;
pub mod prompt;
pub mod prompt_source;
pub mod session;
use clap::{Parser, Subcommand};
#[derive(Parser)]
#[command(
name = "acp-cli",
version,
about = "Headless CLI client for the Agent Client Protocol"
)]
pub struct Cli {
pub agent: Option<String>,
pub prompt: Vec<String>,
#[command(subcommand)]
pub command: Option<Commands>,
#[arg(short = 's', long)]
pub session: Option<String>,
#[arg(long)]
pub approve_all: bool,
#[arg(long)]
pub approve_reads: bool,
#[arg(long)]
pub deny_all: bool,
#[arg(long)]
pub cwd: Option<String>,
#[arg(long, default_value = "text")]
pub format: String,
#[arg(long)]
pub timeout: Option<u64>,
#[arg(long = "agent-override")]
pub agent_override: Option<String>,
#[arg(short = 'f', long = "file")]
pub file: Option<String>,
#[arg(long)]
pub verbose: bool,
#[arg(long)]
pub no_wait: bool,
#[arg(long, default_value = "0")]
pub prompt_retries: u32,
#[arg(long)]
pub suppress_reads: bool,
}
#[derive(Subcommand)]
pub enum Commands {
Exec {
prompt: Vec<String>,
},
Sessions {
#[command(subcommand)]
action: SessionAction,
},
Init,
Config {
#[command(subcommand)]
action: ConfigAction,
},
Cancel,
Status,
SetMode {
mode: String,
},
Set {
key: String,
value: String,
},
}
#[derive(Subcommand)]
pub enum SessionAction {
New {
#[arg(long)]
name: Option<String>,
},
List,
Close {
#[arg(short = 's', long)]
name: Option<String>,
},
Show {
#[arg(short = 's', long)]
name: Option<String>,
},
History {
#[arg(short = 's', long)]
name: Option<String>,
},
}
#[derive(Subcommand)]
pub enum ConfigAction {
Show,
}