import React from 'react'; import { localize } from '@opensumi/ide-core-common/lib/localize'; import { CodeEditorWithHighlight } from './ChatEditor'; import styles from './ChatToolResult.module.less'; interface ResultContent { type: 'text' | 'image'; text?: string; data?: string; mimeType?: string; } interface ChatToolResultProps { result: string; relationId?: string; } export const ChatToolResult: React.FC = ({ result, relationId }) => { const parseResult = React.useCallback((resultStr: string): ResultContent[] => { try { const parsed = JSON.parse(resultStr); return parsed.content || []; } catch (error) { return [{ type: 'text', text: resultStr }]; } }, []); const renderContent = React.useCallback( (content: ResultContent, index: number) => { switch (content.type) { case 'text': return content.text ? (
) : null; case 'image': return content.data ? (
{localize('aiNative.chat.result.image')}
) : null; default: return null; } }, [relationId], ); const contents = React.useMemo(() => parseResult(result), [result, parseResult]); if (!contents.length) { return null; } return (
{contents.map((content, index) => renderContent(content, index))}
); };