use crate::config::Config;
use crate::providers::ThinkingBlock;
use crate::session::chat::markdown::{is_markdown_content, MarkdownRenderer};
use colored::Colorize;
pub fn get_content_to_display(content: &str, thinking: &Option<ThinkingBlock>) -> String {
if let Some(ref thinking_block) = thinking {
if content.starts_with(&thinking_block.content) {
let after_thinking = &content[thinking_block.content.len()..];
let trimmed = after_thinking.trim_start().to_string();
if trimmed.is_empty() {
return String::new();
}
return trimmed;
}
}
content.to_string()
}
pub fn print_assistant_response(
content: &str,
config: &Config,
_role: &str,
thinking: &Option<ThinkingBlock>,
) {
let content_to_display = get_content_to_display(content, thinking);
if content_to_display.is_empty() {
return;
}
if config.enable_markdown_rendering && is_markdown_content(&content_to_display) {
let theme = config.markdown_theme.parse().unwrap_or_default();
let renderer = MarkdownRenderer::with_theme(theme);
match renderer.render_and_print(&content_to_display) {
Ok(_) => {
}
Err(e) => {
crate::log_debug!("{}: {}", "Warning: Markdown rendering failed".yellow(), e);
println!("{}", content_to_display.bright_green());
}
}
} else {
println!("{}", content_to_display.bright_green());
}
}