1use clap::{Parser, Subcommand};
2
3#[derive(Parser)]
4#[command(name = "dot", about = "minimal ai agent")]
5pub struct Cli {
6 #[command(subcommand)]
7 pub command: Option<Commands>,
8
9 #[arg(
10 short = 's',
11 long = "session",
12 help = "resume a previous session by id"
13 )]
14 pub session: Option<String>,
15
16 #[arg(short = 'p', long = "prompt")]
18 pub prompt: Option<String>,
19
20 #[arg(short = 'o', long = "output", default_value = "text", value_parser = ["text", "json", "stream-json"])]
22 pub output: String,
23
24 #[arg(long = "no-tools", default_value_t = false)]
26 pub no_tools: bool,
27
28 #[arg(short = 'i', long = "interactive")]
30 pub interactive: bool,
31}
32
33#[derive(Subcommand)]
34pub enum Commands {
35 Login,
36 Config,
37 Mcp,
39 Extensions,
41 Install {
43 source: String,
45 },
46 Uninstall {
48 name: String,
50 },
51 Run {
53 prompt: Option<String>,
55
56 #[arg(short = 'o', long = "output", default_value = "text")]
58 output: String,
59
60 #[arg(long = "no-tools", default_value_t = false)]
62 no_tools: bool,
63
64 #[arg(short = 's', long = "session")]
66 session: Option<String>,
67
68 #[arg(short = 'i', long = "interactive")]
70 interactive: bool,
71 },
72}