mirror of
https://github.com/openai/codex.git
synced 2026-11-07 20:30:33 +00:00
Preserve MCP App UI metadata in tool-call events and history (#45805)
## Why Clients need widget presentation details to render MCP Apps without waiting for the full MCP catalog, including when replaying saved history. ## What changed - Add `mcpToolCall.mcpAppUi` with the invoked descriptor's `resourceUri` and `preferredModelDisplayMode`, and carry it through tool-call events and saved history. - Support `fullscreen` and default to `inline` when the display preference is missing or unsupported. - Keep existing resource URI fields for compatibility. Leave `mcpAppUi` null for older history and tools that declare widgets only in result metadata, where clients still use catalog discovery. - Update protocol schemas, TypeScript and Python types, and app-server documentation. ## Testing Add parameterized integration coverage for fullscreen, missing and unsupported preferences, legacy URI metadata, and result-only widgets, verifying consistent tool events and preservation across session resume. GitOrigin-RevId: 2a9bed804dcea8c2b4903b8406fa6710681f7f5e
This commit is contained in:
+35
-1
@@ -676,6 +676,29 @@
|
||||
"LegacyAppPathString": {
|
||||
"type": "string"
|
||||
},
|
||||
"McpAppDisplayMode": {
|
||||
"enum": [
|
||||
"inline",
|
||||
"fullscreen"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"McpAppUi": {
|
||||
"description": "UI resource and display preference for model invocations, captured from the tool descriptor.",
|
||||
"properties": {
|
||||
"preferredModelDisplayMode": {
|
||||
"$ref": "#/definitions/McpAppDisplayMode"
|
||||
},
|
||||
"resourceUri": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"preferredModelDisplayMode",
|
||||
"resourceUri"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"McpToolCallAppContext": {
|
||||
"properties": {
|
||||
"actionName": {
|
||||
@@ -1730,12 +1753,23 @@
|
||||
"type": "string"
|
||||
},
|
||||
"mcpAppResourceUri": {
|
||||
"description": "Deprecated: use `appContext.resourceUri` instead.",
|
||||
"description": "Legacy compatibility field; prefer `mcpAppUi.resourceUri` when available.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"mcpAppUi": {
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/McpAppUi"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"description": "Presentation captured from the invoked descriptor; absent in older history."
|
||||
},
|
||||
"pluginId": {
|
||||
"type": [
|
||||
"string",
|
||||
|
||||
Reference in New Issue
Block a user