tl_cli/cli/commands/
chat.rs1use anyhow::Result;
4
5use super::load_config;
6use crate::chat::{ChatSession, SessionConfig};
7use crate::config::{ResolveOptions, resolve_config};
8
9pub struct ChatOptions {
11 pub to: Option<String>,
13 pub provider: Option<String>,
15 pub model: Option<String>,
17 pub style: Option<String>,
19}
20
21pub async fn run_chat(options: ChatOptions) -> Result<()> {
25 let (_manager, config_file) = load_config()?;
26
27 let resolve_options = ResolveOptions {
28 to: options.to,
29 provider: options.provider,
30 model: options.model,
31 style: options.style,
32 };
33
34 let resolved = resolve_config(&resolve_options, &config_file)?;
35
36 let session_config = SessionConfig::new(resolved, config_file.styles.clone());
37
38 let mut session = ChatSession::new(session_config);
39 session.run().await
40}