use crate::brain::agent::service::AgentService;
use crate::db::models::Message as DbMessage;
pub(crate) fn clean_rows_for_llm(rows: &mut [DbMessage], preserve_thinking: bool) {
for msg in rows.iter_mut() {
if msg.content.contains("<!-- phantom_blocked=1 -->") {
msg.content = crate::utils::sanitize::strip_phantom_blocked(&msg.content);
}
if preserve_thinking && msg.role == "assistant" {
let (cleaned, reasoning) = crate::utils::sanitize::hoist_reasoning_blocks(&msg.content);
if let Some(reasoning) = reasoning {
msg.content = cleaned;
match msg.thinking.as_mut() {
Some(existing) if !existing.trim().is_empty() => {
existing.push_str("\n\n");
existing.push_str(&reasoning);
}
_ => msg.thinking = Some(reasoning),
}
}
}
if msg.content.contains("<!--") {
msg.content = crate::utils::sanitize::strip_llm_artifacts(&msg.content);
}
AgentService::strip_compaction_banner(&mut msg.content);
}
}