doum_cli/cli/
auto_mode.rs

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