lib: add capabilities & version getters (#24)

* add App{,Bridge}.get{App,Host}{Version,Capabilities}()

* Add App.{oncalltool,onlisttools}
This commit is contained in:
Olivier Chafik 2025-11-25 04:05:33 +00:00 • committed by GitHub
commit 8ac79a9731
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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<App["setRequestHandler"]>[1]
>[1];
export class App extends Protocol<Request, Notification, Result> {
private _hostCapabilities?: McpUiHostCapabilities;
private _hostInfo?: Implementation;
@ -64,6 +71,14 @@ export class App extends Protocol<Request, Notification, Result> {
});
}
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<Request, Notification, Result> {
(n) => callback(n.params),
);
}
set oncalltool(
callback: (
params: CallToolRequest["params"],
extra: RequestHandlerExtra,
) => Promise<CallToolResult>,
) {
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