1use crate::llm::Message;
2use crate::llm::client::LLMRequest;
3use crate::system::error::Result;
4use crate::system::Config;
5use crate::system::SystemInfo;
6use crate::llm::{LLMClient, PromptBuilder};
7use crate::cli::ui::{create_spinner, finish_spinner};
8
9pub async fn handle_ask(
13 question: &str,
14 client: &dyn LLMClient,
15 system_info: &SystemInfo,
16 _config: &Config,
17) -> Result<()> {
18 let builder = PromptBuilder::new(system_info.clone());
20
21 let request = LLMRequest {
23 system: builder.build_ask(),
24 messages: vec![Message::user(question)],
25 use_websearch: true,
26 };
27
28 let spinner = create_spinner("AI is generating an answer...");
30
31 let response = client.generate(request).await?;
33
34 finish_spinner(spinner, None);
36
37 println!("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
39 println!("{}\n", response);
40 println!("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");
41
42 Ok(())
43}