import { CheckCheck, ChevronDown, ChevronRight } 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 serverNameRegex = /\[use_mcp_tool for '([^']+)'\]/; const serverNameMatch = serverNameRegex.exec(firstLine); 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(false) const { serverName, processedContent } = React.useMemo(() => processContent(content), [content]); useEffect(() => { if (containerRef.current) { containerRef.current.scrollTop = containerRef.current.scrollHeight } }, [processedContent]) return ( processedContent && (
{t('response_from_tool')} {serverName}
{processedContent}
) ) }