💻 feat: deeper MCP UI integration in the chat UI using plugins

---------

Co-authored-by: Samuel Path <samuel.path@shopify.com>
Co-authored-by: Pierre-Luc Godin <pierreluc.godin@shopify.com>
This commit is contained in:
Pierre-Luc Godin 2025-10-16 14:51:01 -04:00 committed by Dustin Healy
parent 96f5ed5608
commit 9ae81a85a5
22 changed files with 1440 additions and 53 deletions

View file

@ -138,12 +138,14 @@ export function formatToolContent(
},
resource: (item) => {
if (item.resource.uri.startsWith('ui://')) {
const isUiResource = item.resource.uri.startsWith('ui://');
if (isUiResource) {
uiResources.push(item.resource as UIResource);
}
const resourceText = [];
if (item.resource.text != null && item.resource.text) {
if (!isUiResource && item.resource.text != null && item.resource.text) {
resourceText.push(`Resource Text: ${item.resource.text}`);
}
if (item.resource.uri.length) {
@ -177,10 +179,14 @@ export function formatToolContent(
}
let artifacts: t.Artifacts = undefined;
if (imageUrls.length || uiResources.length) {
if (imageUrls.length) {
artifacts = { content: imageUrls };
}
if (uiResources.length) {
artifacts = {
...(imageUrls.length && { content: imageUrls }),
...(uiResources.length && { [Tools.ui_resources]: { data: uiResources } }),
...artifacts,
[Tools.ui_resources]: { data: uiResources },
};
}