use anyhow::Result;
use clap::{Args, Parser};
use toast_api::{cli, server};
#[derive(Parser, Debug)]
#[clap(author, version, about = "Claude API client and server")]
struct CliArgs {
#[clap(short, long)]
serve: bool,
#[clap(flatten)]
server_args: ServerArgs,
}
#[derive(Args, Debug, Clone)]
struct ServerArgs {
#[clap(long, default_value = "3000")]
port: u16,
#[clap(long, default_value = "claude-3-7-sonnet-20250219")]
model: String,
#[clap(long, default_value = "0.0.0.0")]
host: String,
#[clap(long)]
debug: bool,
}
#[tokio::main]
async fn main() -> Result<()> {
let args = CliArgs::parse();
if args.serve {
let server_args = server::Args {
port: args.server_args.port,
model: args.server_args.model,
host: args.server_args.host,
debug: args.server_args.debug,
};
server::run_with_args(server_args).await
} else {
cli::async_main().await
}
}