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];
|
export const SUPPORTED_PROTOCOL_VERSIONS = [LATEST_PROTOCOL_VERSION];
|
||||||
|
|
||||||
type RequestExtra = Parameters<
|
type RequestHandlerExtra = Parameters<
|
||||||
Parameters<AppBridge["setRequestHandler"]>[1]
|
Parameters<AppBridge["setRequestHandler"]>[1]
|
||||||
>[1];
|
>[1];
|
||||||
|
|
||||||
export class AppBridge extends Protocol<Request, Notification, Result> {
|
export class AppBridge extends Protocol<Request, Notification, Result> {
|
||||||
private _appCapabilities?: McpUiAppCapabilities;
|
private _appCapabilities?: McpUiAppCapabilities;
|
||||||
|
private _appInfo?: Implementation;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private _client: Client,
|
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(
|
set onsizechange(
|
||||||
callback: (params: McpUiSizeChangeNotification["params"]) => void,
|
callback: (params: McpUiSizeChangeNotification["params"]) => void,
|
||||||
|
|
@ -114,7 +122,7 @@ export class AppBridge extends Protocol<Request, Notification, Result> {
|
||||||
set onmessage(
|
set onmessage(
|
||||||
callback: (
|
callback: (
|
||||||
params: McpUiMessageRequest["params"],
|
params: McpUiMessageRequest["params"],
|
||||||
extra: RequestExtra,
|
extra: RequestHandlerExtra,
|
||||||
) => Promise<McpUiMessageResult>,
|
) => Promise<McpUiMessageResult>,
|
||||||
) {
|
) {
|
||||||
this.setRequestHandler(
|
this.setRequestHandler(
|
||||||
|
|
@ -127,7 +135,7 @@ export class AppBridge extends Protocol<Request, Notification, Result> {
|
||||||
set onopenlink(
|
set onopenlink(
|
||||||
callback: (
|
callback: (
|
||||||
params: McpUiOpenLinkRequest["params"],
|
params: McpUiOpenLinkRequest["params"],
|
||||||
extra: RequestExtra,
|
extra: RequestHandlerExtra,
|
||||||
) => Promise<McpUiOpenLinkResult>,
|
) => Promise<McpUiOpenLinkResult>,
|
||||||
) {
|
) {
|
||||||
this.setRequestHandler(
|
this.setRequestHandler(
|
||||||
|
|
@ -168,6 +176,7 @@ export class AppBridge extends Protocol<Request, Notification, Result> {
|
||||||
const requestedVersion = request.params.protocolVersion;
|
const requestedVersion = request.params.protocolVersion;
|
||||||
|
|
||||||
this._appCapabilities = request.params.appCapabilities;
|
this._appCapabilities = request.params.appCapabilities;
|
||||||
|
this._appInfo = request.params.appInfo;
|
||||||
|
|
||||||
const protocolVersion = SUPPORTED_PROTOCOL_VERSIONS.includes(
|
const protocolVersion = SUPPORTED_PROTOCOL_VERSIONS.includes(
|
||||||
requestedVersion,
|
requestedVersion,
|
||||||
|
|
|
||||||
35
src/app.ts
35
src/app.ts
|
|
@ -6,9 +6,12 @@ import {
|
||||||
|
|
||||||
import {
|
import {
|
||||||
CallToolRequest,
|
CallToolRequest,
|
||||||
|
CallToolRequestSchema,
|
||||||
CallToolResult,
|
CallToolResult,
|
||||||
CallToolResultSchema,
|
CallToolResultSchema,
|
||||||
Implementation,
|
Implementation,
|
||||||
|
ListToolsRequest,
|
||||||
|
ListToolsRequestSchema,
|
||||||
LoggingMessageNotification,
|
LoggingMessageNotification,
|
||||||
Notification,
|
Notification,
|
||||||
PingRequestSchema,
|
PingRequestSchema,
|
||||||
|
|
@ -47,6 +50,10 @@ type AppOptions = ProtocolOptions & {
|
||||||
autoResize?: boolean;
|
autoResize?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
type RequestHandlerExtra = Parameters<
|
||||||
|
Parameters<App["setRequestHandler"]>[1]
|
||||||
|
>[1];
|
||||||
|
|
||||||
export class App extends Protocol<Request, Notification, Result> {
|
export class App extends Protocol<Request, Notification, Result> {
|
||||||
private _hostCapabilities?: McpUiHostCapabilities;
|
private _hostCapabilities?: McpUiHostCapabilities;
|
||||||
private _hostInfo?: Implementation;
|
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(
|
set ontoolinput(
|
||||||
callback: (params: McpUiToolInputNotification["params"]) => void,
|
callback: (params: McpUiToolInputNotification["params"]) => void,
|
||||||
) {
|
) {
|
||||||
|
|
@ -93,6 +108,26 @@ export class App extends Protocol<Request, Notification, Result> {
|
||||||
(n) => callback(n.params),
|
(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 {
|
assertCapabilityForMethod(method: Request["method"]): void {
|
||||||
// TODO
|
// TODO
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue