import { Fragment, type ReactNode } from "react"; import { parseContent } from "../lib/parseContent"; import { parseInlineMarkup, type InlineNode } from "../lib/inlineMarkup"; /** 渲染助手消息正文。`` / `` 块在这里**不**进入气泡 —— 它们由 * `splitBubble` 剥出、以气泡外的注记呈现;剩下的文本段落交给行内白名单渲染。 * * 🔴 这里**只**做行内(`b`/`strong`/`i`/`em`/`code`)的事:段落 `

` 与消息断隔 * `
` 都在上一层(`components/chat.tsx` 的 `splitParagraphs`)就已切成独立气泡, * 本函数拿到的每一段都是**单个气泡的正文** —— 所以这里绝不返回 `
`(否则等于把 * 「多条消息」偷偷变回「一条消息里的换行」,与主人口径冲突)。 * * 🔴 安全:文本一律交给 React 当**文本子节点**渲染(默认转义),全程没有 * `innerHTML` / `dangerouslySetInnerHTML`,也没有字符串拼 HTML —— 白名单外的标签 * (`