@@ -2,7 +2,7 @@ import { RESOURCE_MIME_TYPE, getToolUiResourceUri, type McpUiSandboxProxyReadyNo
22import { Client } from "@modelcontextprotocol/sdk/client/index.js" ;
33import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js" ;
44import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js" ;
5- import { ElicitRequestSchema , ElicitResultSchema , type CallToolResult , type Resource , type Tool } from "@modelcontextprotocol/sdk/types.js" ;
5+ import type { CallToolResult , Resource , Tool } from "@modelcontextprotocol/sdk/types.js" ;
66import { getTheme , onThemeChange } from "./theme" ;
77import { HOST_STYLE_VARIABLES } from "./host-styles" ;
88
@@ -45,25 +45,7 @@ export async function connectToServer(serverUrl: URL): Promise<ServerInfo> {
4545 const resources = new Map ( resourcesList . resources . map ( ( r ) => [ r . uri , r ] ) ) ;
4646 log . info ( "Server resources:" , Array . from ( resources . keys ( ) ) ) ;
4747
48- // Buffer elicitation/create requests until the AppBridge is ready.
49- // The promise is reset after each setBridge() call so it works across
50- // multiple sequential tool invocations.
51- let resolveBridge ! : ( bridge : AppBridge ) => void ;
52- let bridgePromise = new Promise < AppBridge > ( ( resolve ) => { resolveBridge = resolve ; } ) ;
53-
54- const setBridge = ( bridge : AppBridge ) => {
55- resolveBridge ( bridge ) ;
56- bridgePromise = new Promise < AppBridge > ( ( resolve ) => { resolveBridge = resolve ; } ) ;
57- } ;
58-
59- client . setRequestHandler ( ElicitRequestSchema , async ( request , extra ) => {
60- const bridge = await bridgePromise ;
61- return bridge . request (
62- { method : "elicitation/create" , params : request . params } ,
63- ElicitResultSchema ,
64- { signal : extra . signal } ,
65- ) ;
66- } ) ;
48+ const setBridge = AppBridge . setupElicitationForwarding ( client ) ;
6749
6850 return { name, client, tools, resources, appHtmlCache : new Map ( ) , setBridge } ;
6951}
0 commit comments