use std::path::PathBuf;
use clap::{Parser, Subcommand};
use crate::commands::DEFAULT_SEND_RETRIES;
#[derive(Debug, Parser)]
#[command(
name = "csd",
version,
about = "Claude Session Driver — drive interactive Claude over tmux"
)]
pub struct Cli {
#[command(subcommand)]
pub command: Command,
}
#[derive(Debug, Subcommand)]
pub enum Command {
Spawn {
#[arg(long)]
cwd: Option<PathBuf>,
#[arg(long)]
session_id: Option<String>,
#[arg(long)]
permission_mode: Option<String>,
#[arg(long)]
name: Option<String>,
#[arg(long, default_value = "claude")]
backend: String,
#[arg(long)]
auto_accept: bool,
#[arg(long)]
bypass_permissions: bool,
#[arg(long)]
yolo: bool,
#[arg(long)]
trust: bool,
},
Send {
session: String,
#[arg(required = true, num_args = 1.., trailing_var_arg = true)]
prompt: Vec<String>,
#[arg(long)]
no_submit: bool,
#[arg(long, default_value_t = DEFAULT_SEND_RETRIES)]
retries: u32,
},
State {
session: String,
},
Approve {
session: String,
#[arg(long, default_value_t = 1)]
option: u32,
},
Ps {
#[arg(long)]
json: bool,
},
Kill {
session: String,
},
}