From 3d32ce69df98215ca21c080a6693a38a856eb10e Mon Sep 17 00:00:00 2001 From: Justin Spahr-Summers Date: Mon, 4 Nov 2024 22:12:43 +0000 Subject: [PATCH] Convenience methods for Client --- src/client/index.ts | 89 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/src/client/index.ts b/src/client/index.ts index e4ae4da9..a68f75cc 100644 --- a/src/client/index.ts +++ b/src/client/index.ts @@ -11,6 +11,24 @@ import { Request, Result, ServerCapabilities, + CompleteRequest, + GetPromptRequest, + ListPromptsRequest, + ListResourcesRequest, + ReadResourceRequest, + SubscribeRequest, + UnsubscribeRequest, + CallToolRequest, + ListToolsRequest, + CompleteResultSchema, + GetPromptResultSchema, + ListPromptsResultSchema, + ListResourcesResultSchema, + ReadResourceResultSchema, + CallToolResultSchema, + ListToolsResultSchema, + EmptyResultSchema, + LoggingLevel, } from "../types.js"; /** @@ -103,4 +121,75 @@ export class Client< getServerVersion(): Implementation | undefined { return this._serverVersion; } + + async ping() { + return this.request({ method: "ping" }, EmptyResultSchema); + } + + async complete(params: CompleteRequest["params"]) { + return this.request( + { method: "completion/complete", params }, + CompleteResultSchema, + ); + } + + async setLoggingLevel(level: LoggingLevel) { + return this.request( + { method: "logging/setLevel", params: { level } }, + EmptyResultSchema, + ); + } + + async getPrompt(params: GetPromptRequest["params"]) { + return this.request( + { method: "prompts/get", params }, + GetPromptResultSchema, + ); + } + + async listPrompts(params?: ListPromptsRequest["params"]) { + return this.request( + { method: "prompts/list", params }, + ListPromptsResultSchema, + ); + } + + async listResources(params?: ListResourcesRequest["params"]) { + return this.request( + { method: "resources/list", params }, + ListResourcesResultSchema, + ); + } + + async readResource(params: ReadResourceRequest["params"]) { + return this.request( + { method: "resources/read", params }, + ReadResourceResultSchema, + ); + } + + async subscribeResource(params: SubscribeRequest["params"]) { + return this.request( + { method: "resources/subscribe", params }, + EmptyResultSchema, + ); + } + + async unsubscribeResource(params: UnsubscribeRequest["params"]) { + return this.request( + { method: "resources/unsubscribe", params }, + EmptyResultSchema, + ); + } + + async callTool(params: CallToolRequest["params"]) { + return this.request({ method: "tools/call", params }, CallToolResultSchema); + } + + async listTools(params?: ListToolsRequest["params"]) { + return this.request( + { method: "tools/list", params }, + ListToolsResultSchema, + ); + } }