mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-04-26 03:38:06 +00:00
51 lines
1.7 KiB
TypeScript
51 lines
1.7 KiB
TypeScript
import rehypeKatex from "rehype-katex";
|
|
import rehypeRaw from "rehype-raw";
|
|
import remarkGfm from "remark-gfm";
|
|
import remarkMath from "remark-math";
|
|
import type { StreamdownProps } from "streamdown";
|
|
|
|
import { rehypeSplitWordsIntoSpans } from "../rehype";
|
|
|
|
export const streamdownPlugins = {
|
|
remarkPlugins: [
|
|
remarkGfm,
|
|
[remarkMath, { singleDollarTextMath: true }],
|
|
] as StreamdownProps["remarkPlugins"],
|
|
rehypePlugins: [
|
|
rehypeRaw,
|
|
[rehypeKatex, { output: "html" }],
|
|
] as StreamdownProps["rehypePlugins"],
|
|
};
|
|
|
|
export const streamdownPluginsWithWordAnimation = {
|
|
remarkPlugins: [
|
|
remarkGfm,
|
|
[remarkMath, { singleDollarTextMath: true }],
|
|
] as StreamdownProps["remarkPlugins"],
|
|
rehypePlugins: [
|
|
[rehypeKatex, { output: "html" }],
|
|
rehypeSplitWordsIntoSpans,
|
|
] as StreamdownProps["rehypePlugins"],
|
|
};
|
|
|
|
// Plugins for reasoning/thinking content — derived from streamdownPlugins but without rehypeRaw,
|
|
// to prevent LLM-hallucinated HTML tags (e.g. <simd>) from being rendered as DOM elements.
|
|
export const reasoningPlugins = {
|
|
remarkPlugins: streamdownPlugins.remarkPlugins,
|
|
rehypePlugins: streamdownPlugins.rehypePlugins?.filter(
|
|
(p) => p !== rehypeRaw,
|
|
) as StreamdownProps["rehypePlugins"],
|
|
};
|
|
|
|
// Plugins for human messages - no autolink to prevent URL bleeding into adjacent text
|
|
export const humanMessagePlugins = {
|
|
remarkPlugins: [
|
|
// Use remark-gfm without autolink literals by not including it
|
|
// Only include math support for human messages
|
|
[remarkMath, { singleDollarTextMath: true }],
|
|
] as StreamdownProps["remarkPlugins"],
|
|
rehypePlugins: [
|
|
[rehypeKatex, { output: "html" }],
|
|
] as StreamdownProps["rehypePlugins"],
|
|
};
|