use anyhow::Result;


pub(super) fn handle_llm_config() -> Result<()> {
    crate::semantic::run_configure_wizard()
}


pub(super) fn handle_llm_status() -> Result<()> {
    use crate::semantic::config;

    let semantic_config = config::load_config(std::path::Path::new("."))?;
    let provider = &semantic_config.provider;
    let is_openai_compatible =
        provider == "openai-compatible" || provider == "openai_compatible";

    let model = if let Some(ref m) = semantic_config.model {
        m.clone()
    } else {
        config::get_user_model(provider)
            .unwrap_or_else(|| "(provider default)".to_string())
    };

    let key_status = match config::get_api_key(provider) {
        Ok(key) if key.is_empty() && is_openai_compatible => "not required".to_string(),
        Ok(key) => {
            if key.len() > 8 {
                format!("configured ({}...****)", &key[..8])
            } else {
                "configured".to_string()
            }
        }
        Err(_) => "not configured".to_string(),
    };

    println!("Provider: {}", provider);
    println!("Model:    {}", model);
    println!("API key:  {}", key_status);

    if is_openai_compatible {
        let base_url = config::get_provider_options(provider)
            .and_then(|opts| opts.get("base_url").cloned())
            .unwrap_or_else(|| "(not configured)".to_string());
        println!("Base URL: {}", base_url);
    }

    Ok(())
}
