(session: &mut Session, provider: Arc<dyn Provider>, model_id: &str)
| 2183 | } |
| 2184 | |
| 2185 | async fn ensure_title(session: &mut Session, provider: Arc<dyn Provider>, model_id: &str) { |
| 2186 | if !session.is_default_title() { |
| 2187 | return; |
| 2188 | } |
| 2189 | |
| 2190 | let first_user_text = session |
| 2191 | .messages |
| 2192 | .iter() |
| 2193 | .find(|m| matches!(m.role, MessageRole::User)) |
| 2194 | .map(|m| m.get_text()) |
| 2195 | .unwrap_or_default(); |
| 2196 | |
| 2197 | if first_user_text.trim().is_empty() { |
| 2198 | return; |
| 2199 | } |
| 2200 | |
| 2201 | let title = generate_session_title_llm(&first_user_text, provider, model_id).await; |
| 2202 | if !title.trim().is_empty() { |
| 2203 | session.set_title(title); |
| 2204 | } |
| 2205 | } |
| 2206 | |
| 2207 | fn to_message_with_parts( |
| 2208 | messages: &[SessionMessage], |
nothing calls this directly
no test coverage detected