use crate::protocol::ChatMessage;
use crate::{solve_with_history, ConversationTurn};
pub(super) fn recall_answer_for(messages: &[ChatMessage]) -> Option<String> {
let latest_user = messages
.iter()
.rposition(|message| message.role.eq_ignore_ascii_case("user"))?;
let prompt = messages[latest_user].content.plain_text();
let history = messages[..latest_user]
.iter()
.filter_map(|message| {
let text = message.content.plain_text();
if text.trim().is_empty() {
return None;
}
if message.role.eq_ignore_ascii_case("user") {
Some(ConversationTurn::user(text))
} else if message.role.eq_ignore_ascii_case("assistant") {
Some(ConversationTurn::assistant(text))
} else {
None
}
})
.collect::<Vec<_>>();
let answer = solve_with_history(&prompt, &history);
(answer.intent == "summarize_conversation").then_some(answer.answer)
}