1mod chat;
4mod claude;
5pub(crate) mod jev;
6
7pub use chat::{run_chat, ChatCommand};
8pub use claude::skills::{run_clean, run_status, run_sync, OutputFormat, SkillsFormat};
9
10use anyhow::Result;
11use clap::{Parser, Subcommand};
12
13#[derive(Parser)]
15pub struct AiCommand {
16 #[command(subcommand)]
18 pub command: AiSubcommands,
19}
20
21#[derive(Subcommand)]
23pub enum AiSubcommands {
24 Chat(ChatCommand),
26 Claude(claude::ClaudeCommand),
28 Jev(jev::JevCommand),
30}
31
32impl AiCommand {
33 pub async fn execute(self) -> Result<()> {
35 match self.command {
36 AiSubcommands::Chat(cmd) => cmd.execute().await,
37 AiSubcommands::Claude(cmd) => cmd.execute(),
38 AiSubcommands::Jev(cmd) => cmd.execute().await,
39 }
40 }
41}