doum_cli/cli/
auto_mode.rs

1use super::ask::handle_ask_command;
2use super::suggest::handle_suggest_command;
3use crate::core::select_mode;
4use crate::llm::create_client;
5use crate::system::{get_system_info, load_config};
6use anyhow::Result;
7use cliclack::spinner;
8
9pub async fn handle_auto_command(input: &str) -> Result<()> {
10    let config = load_config()?;
11    let client = create_client(&config.llm)?;
12    let system_info = get_system_info();
13
14    let sp = spinner();
15    sp.start("[AUTO MODE] Selecting mode...");
16
17    let mode_response = select_mode(input, client.as_ref(), &system_info, &config).await?;
18
19    sp.stop("");
20
21    // Execute based on selected mode
22    match mode_response.mode.as_str() {
23        "ask" => handle_ask_command(input).await,
24        "suggest" => handle_suggest_command(input).await,
25        unknown => {
26            println!("⚠️  Unknown mode: {}", unknown);
27            println!("💡 Falling back to Ask mode.\n");
28            handle_ask_command(input).await
29        }
30    }
31}