import { formatMarkdown, linkify } from '../../utils/markdown.jsx' import { API_BASE } from '../../utils/constants.js' function cleanContent(content) { if (!content) return '' return content.replace(/\[System Note:[\s\S]*?\]/g, '').trim() } function resolveImageUrl(url) { if (!url) return null if (url.startsWith('data:') || url.startsWith('http://') || url.startsWith('https://')) return url return `${API_BASE}${url}` } export default function MessageBubble({ message, onImageClick }) { const imgSrc = resolveImageUrl(message.image_url) || message.image const displayContent = cleanContent(message.content) if (message.role === 'assistant' && !displayContent && !imgSrc) { return null } return (