import React from 'react'; import { useLocalize } from '~/hooks'; import { UIResourceRenderer } from '@mcp-ui/client'; import UIResourceGrid from './UIResourceGrid'; import type { UIResource } from '~/common'; function OptimizedCodeBlock({ text, maxHeight = 320 }: { text: string; maxHeight?: number }) { return (
        {text}
      
); } export default function ToolCallInfo({ input, output, domain, function_name, pendingAuth, }: { input: string; function_name: string; output?: string | null; domain?: string; pendingAuth?: boolean; }) { const localize = useLocalize(); const formatText = (text: string) => { try { return JSON.stringify(JSON.parse(text), null, 2); } catch { return text; } }; let title = domain != null && domain ? localize('com_assistants_domain_info', { 0: domain }) : localize('com_assistants_function_use', { 0: function_name }); if (pendingAuth === true) { title = domain != null && domain ? localize('com_assistants_action_attempt', { 0: domain }) : localize('com_assistants_attempt_info'); } // Extract ui_resources from the output to display them in the UI let uiResources: UIResource[] = []; if (output?.includes('ui_resources')) { const parsedOutput = JSON.parse(output); const uiResourcesItem = parsedOutput.find( (contentItem) => contentItem.metadata === 'ui_resources', ); if (uiResourcesItem?.text) { uiResources = JSON.parse(atob(uiResourcesItem.text)) as UIResource[]; } output = JSON.stringify( parsedOutput.filter((contentItem) => contentItem.metadata !== 'ui_resources'), ); } return (
{title}
{output && ( <>
{localize('com_ui_result')}
{uiResources.length > 0 && (
{localize('com_ui_ui_resources')}
)}
{uiResources.length > 1 && } {uiResources.length === 1 && ( { console.log('Action:', result); }} htmlProps={{ autoResizeIframe: { width: true, height: true }, }} /> )}
)}
); }