diff --git a/src/app-bridge.ts b/src/app-bridge.ts index fcc83902..90756a7a 100644 --- a/src/app-bridge.ts +++ b/src/app-bridge.ts @@ -63,12 +63,13 @@ type HostOptions = ProtocolOptions; export const SUPPORTED_PROTOCOL_VERSIONS = [LATEST_PROTOCOL_VERSION]; -type RequestExtra = Parameters< +type RequestHandlerExtra = Parameters< Parameters[1] >[1]; export class AppBridge extends Protocol { private _appCapabilities?: McpUiAppCapabilities; + private _appInfo?: Implementation; constructor( private _client: Client, @@ -88,7 +89,14 @@ export class AppBridge extends Protocol { }); } - onping?: (params: PingRequest["params"], extra: RequestExtra) => void; + getAppCapabilities(): McpUiAppCapabilities | undefined { + return this._appCapabilities; + } + getAppVersion(): Implementation | undefined { + return this._appInfo; + } + + onping?: (params: PingRequest["params"], extra: RequestHandlerExtra) => void; set onsizechange( callback: (params: McpUiSizeChangeNotification["params"]) => void, @@ -114,7 +122,7 @@ export class AppBridge extends Protocol { set onmessage( callback: ( params: McpUiMessageRequest["params"], - extra: RequestExtra, + extra: RequestHandlerExtra, ) => Promise, ) { this.setRequestHandler( @@ -127,7 +135,7 @@ export class AppBridge extends Protocol { set onopenlink( callback: ( params: McpUiOpenLinkRequest["params"], - extra: RequestExtra, + extra: RequestHandlerExtra, ) => Promise, ) { this.setRequestHandler( @@ -168,6 +176,7 @@ export class AppBridge extends Protocol { const requestedVersion = request.params.protocolVersion; this._appCapabilities = request.params.appCapabilities; + this._appInfo = request.params.appInfo; const protocolVersion = SUPPORTED_PROTOCOL_VERSIONS.includes( requestedVersion, diff --git a/src/app.ts b/src/app.ts index fb5ef6f5..a57bc590 100644 --- a/src/app.ts +++ b/src/app.ts @@ -6,9 +6,12 @@ import { import { CallToolRequest, + CallToolRequestSchema, CallToolResult, CallToolResultSchema, Implementation, + ListToolsRequest, + ListToolsRequestSchema, LoggingMessageNotification, Notification, PingRequestSchema, @@ -47,6 +50,10 @@ type AppOptions = ProtocolOptions & { autoResize?: boolean; }; +type RequestHandlerExtra = Parameters< + Parameters[1] +>[1]; + export class App extends Protocol { private _hostCapabilities?: McpUiHostCapabilities; private _hostInfo?: Implementation; @@ -64,6 +71,14 @@ export class App extends Protocol { }); } + getHostCapabilities(): McpUiHostCapabilities | undefined { + return this._hostCapabilities; + } + + getHostVersion(): Implementation | undefined { + return this._hostInfo; + } + set ontoolinput( callback: (params: McpUiToolInputNotification["params"]) => void, ) { @@ -93,6 +108,26 @@ export class App extends Protocol { (n) => callback(n.params), ); } + set oncalltool( + callback: ( + params: CallToolRequest["params"], + extra: RequestHandlerExtra, + ) => Promise, + ) { + this.setRequestHandler(CallToolRequestSchema, (request, extra) => + callback(request.params, extra), + ); + } + set onlisttools( + callback: ( + params: ListToolsRequest["params"], + extra: RequestHandlerExtra, + ) => Promise<{ tools: string[] }>, + ) { + this.setRequestHandler(ListToolsRequestSchema, (request, extra) => + callback(request.params, extra), + ); + } assertCapabilityForMethod(method: Request["method"]): void { // TODO