fix: prevent duplicate rendering when tool returns both mcp-ui and mcp-apps resources (#6378)
This commit is contained in:
@@ -163,6 +163,12 @@ export default function ToolCallWithResponse({
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const requestWithMeta = toolRequest as ToolRequestWithMeta;
|
||||||
|
const resultWithMeta = toolResponse?.toolResult as ToolResultWithMeta;
|
||||||
|
const hasMcpAppResourceURI = Boolean(
|
||||||
|
requestWithMeta._meta?.ui?.resourceUri || resultWithMeta?.value?._meta?.ui?.resourceUri
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div
|
<div
|
||||||
@@ -181,7 +187,8 @@ export default function ToolCallWithResponse({
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{/* MCP UI — Inline */}
|
{/* MCP UI — Inline */}
|
||||||
{toolResponse?.toolResult &&
|
{!hasMcpAppResourceURI &&
|
||||||
|
toolResponse?.toolResult &&
|
||||||
getToolResultContent(toolResponse.toolResult).map((content, index) => {
|
getToolResultContent(toolResponse.toolResult).map((content, index) => {
|
||||||
const resourceContent = isEmbeddedResource(content)
|
const resourceContent = isEmbeddedResource(content)
|
||||||
? { ...content, type: 'resource' as const }
|
? { ...content, type: 'resource' as const }
|
||||||
@@ -203,7 +210,7 @@ export default function ToolCallWithResponse({
|
|||||||
}
|
}
|
||||||
})}
|
})}
|
||||||
|
|
||||||
{sessionId && (
|
{hasMcpAppResourceURI && sessionId && (
|
||||||
<McpAppWrapper
|
<McpAppWrapper
|
||||||
toolRequest={toolRequest}
|
toolRequest={toolRequest}
|
||||||
toolResponse={toolResponse}
|
toolResponse={toolResponse}
|
||||||
|
|||||||
Reference in New Issue
Block a user