import { ChevronDown, ChevronRight, CheckCheck } from 'lucide-react' import React, { PropsWithChildren, useEffect, useRef, useState } from 'react' import { useDarkModeContext } from "../../../contexts/DarkModeContext" import { t } from '../../../lang/helpers' import { MemoizedSyntaxHighlighterWrapper } from "./SyntaxHighlighterWrapper" const processContent = (content: string): { serverName: string; processedContent: string } => { const lines = content.split('\n'); const firstLine = lines[0]; // 提取 serverName const serverNameMatch = firstLine.match(/\[use_mcp_tool for '([^']+)'\]/); const serverName = serverNameMatch ? serverNameMatch[1] : ''; // 移除第一行并重新组合内容 const processedContent = lines.slice(1).join('\n'); return { serverName, processedContent }; }; export default function MarkdownToolResult({ content, }: PropsWithChildren<{ content: string }>) { const { isDarkMode } = useDarkModeContext() const containerRef = useRef(null) const [isOpen, setIsOpen] = useState(true) const { serverName, processedContent } = React.useMemo(() => processContent(content), [content]); useEffect(() => { if (containerRef.current) { containerRef.current.scrollTop = containerRef.current.scrollHeight } }, [processedContent]) return ( processedContent && (
response from tool {serverName}
{processedContent}
) ) }