lib: add capabilities & version getters (#24)
* add App{,Bridge}.get{App,Host}{Version,Capabilities}()
* Add App.{oncalltool,onlisttools}
This commit is contained in:
parent
1311fe8479
commit
8ac79a9731
2 changed files with 48 additions and 4 deletions
|
|
@ -63,12 +63,13 @@ type HostOptions = ProtocolOptions;
|
|||
|
||||
export const SUPPORTED_PROTOCOL_VERSIONS = [LATEST_PROTOCOL_VERSION];
|
||||
|
||||
type RequestExtra = Parameters<
|
||||
type RequestHandlerExtra = Parameters<
|
||||
Parameters<AppBridge["setRequestHandler"]>[1]
|
||||
>[1];
|
||||
|
||||
export class AppBridge extends Protocol<Request, Notification, Result> {
|
||||
private _appCapabilities?: McpUiAppCapabilities;
|
||||
private _appInfo?: Implementation;
|
||||
|
||||
constructor(
|
||||
private _client: Client,
|
||||
|
|
@ -88,7 +89,14 @@ export class AppBridge extends Protocol<Request, Notification, Result> {
|
|||
});
|
||||
}
|
||||
|
||||
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<Request, Notification, Result> {
|
|||
set onmessage(
|
||||
callback: (
|
||||
params: McpUiMessageRequest["params"],
|
||||
extra: RequestExtra,
|
||||
extra: RequestHandlerExtra,
|
||||
) => Promise<McpUiMessageResult>,
|
||||
) {
|
||||
this.setRequestHandler(
|
||||
|
|
@ -127,7 +135,7 @@ export class AppBridge extends Protocol<Request, Notification, Result> {
|
|||
set onopenlink(
|
||||
callback: (
|
||||
params: McpUiOpenLinkRequest["params"],
|
||||
extra: RequestExtra,
|
||||
extra: RequestHandlerExtra,
|
||||
) => Promise<McpUiOpenLinkResult>,
|
||||
) {
|
||||
this.setRequestHandler(
|
||||
|
|
@ -168,6 +176,7 @@ export class AppBridge extends Protocol<Request, Notification, Result> {
|
|||
const requestedVersion = request.params.protocolVersion;
|
||||
|
||||
this._appCapabilities = request.params.appCapabilities;
|
||||
this._appInfo = request.params.appInfo;
|
||||
|
||||
const protocolVersion = SUPPORTED_PROTOCOL_VERSIONS.includes(
|
||||
requestedVersion,
|
||||
|
|
|
|||
35
src/app.ts
35
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<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
|
||||
|
|
|
|||
Loading…
Reference in a new issue