@frontmcp/sdk 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/package.json +8 -19
- package/src/adapter/adapter.instance.js +5 -0
- package/src/adapter/adapter.instance.js.map +1 -1
- package/src/auth/authorization/authorization.class.d.ts +1 -4
- package/src/auth/authorization/authorization.class.js +6 -13
- package/src/auth/authorization/authorization.class.js.map +1 -1
- package/src/auth/flows/session.verify.flow.d.ts +1 -0
- package/src/auth/flows/session.verify.flow.js +11 -1
- package/src/auth/flows/session.verify.flow.js.map +1 -1
- package/src/auth/flows/well-known.jwks.flow.js +2 -2
- package/src/auth/flows/well-known.jwks.flow.js.map +1 -1
- package/src/auth/jwks/dev-key-persistence.d.ts +63 -0
- package/src/auth/jwks/dev-key-persistence.js +219 -0
- package/src/auth/jwks/dev-key-persistence.js.map +1 -0
- package/src/auth/jwks/index.d.ts +1 -0
- package/src/auth/jwks/index.js +1 -0
- package/src/auth/jwks/index.js.map +1 -1
- package/src/auth/jwks/jwks.service.d.ts +7 -4
- package/src/auth/jwks/jwks.service.js +81 -12
- package/src/auth/jwks/jwks.service.js.map +1 -1
- package/src/auth/jwks/jwks.types.d.ts +7 -0
- package/src/auth/jwks/jwks.types.js.map +1 -1
- package/src/auth/machine-id.d.ts +5 -0
- package/src/auth/machine-id.js +32 -0
- package/src/auth/machine-id.js.map +1 -0
- package/src/auth/session/index.d.ts +1 -0
- package/src/auth/session/index.js +3 -1
- package/src/auth/session/index.js.map +1 -1
- package/src/auth/session/record/session.base.js +5 -3
- package/src/auth/session/record/session.base.js.map +1 -1
- package/src/auth/session/record/session.stateless.d.ts +2 -2
- package/src/auth/session/record/session.stateless.js +5 -3
- package/src/auth/session/record/session.stateless.js.map +1 -1
- package/src/auth/session/redis-session.store.d.ts +64 -0
- package/src/auth/session/redis-session.store.js +204 -0
- package/src/auth/session/redis-session.store.js.map +1 -0
- package/src/auth/session/session.service.d.ts +0 -2
- package/src/auth/session/session.service.js +1 -7
- package/src/auth/session/session.service.js.map +1 -1
- package/src/auth/session/transport-session.manager.js +3 -5
- package/src/auth/session/transport-session.manager.js.map +1 -1
- package/src/auth/session/transport-session.types.d.ts +4 -0
- package/src/auth/session/transport-session.types.js +4 -3
- package/src/auth/session/transport-session.types.js.map +1 -1
- package/src/auth/session/utils/session-id.utils.d.ts +12 -1
- package/src/auth/session/utils/session-id.utils.js +48 -9
- package/src/auth/session/utils/session-id.utils.js.map +1 -1
- package/src/auth/ui/base-layout.d.ts +0 -8
- package/src/auth/ui/base-layout.js +1 -14
- package/src/auth/ui/base-layout.js.map +1 -1
- package/src/auth/ui/index.d.ts +3 -4
- package/src/auth/ui/index.js +10 -11
- package/src/auth/ui/index.js.map +1 -1
- package/src/auth/ui/{htmx-templates.d.ts → templates.d.ts} +5 -6
- package/src/auth/ui/{htmx-templates.js → templates.js} +8 -15
- package/src/auth/ui/templates.js.map +1 -0
- package/src/common/decorators/decorator-utils.js.map +1 -1
- package/src/common/decorators/front-mcp.decorator.js +28 -2
- package/src/common/decorators/front-mcp.decorator.js.map +1 -1
- package/src/common/index.d.ts +0 -1
- package/src/common/index.js +0 -1
- package/src/common/index.js.map +1 -1
- package/src/common/interfaces/adapter.interface.d.ts +6 -0
- package/src/common/interfaces/adapter.interface.js.map +1 -1
- package/src/common/interfaces/execution-context.interface.d.ts +52 -3
- package/src/common/interfaces/execution-context.interface.js +88 -3
- package/src/common/interfaces/execution-context.interface.js.map +1 -1
- package/src/common/interfaces/flow.interface.d.ts +13 -0
- package/src/common/interfaces/flow.interface.js +24 -0
- package/src/common/interfaces/flow.interface.js.map +1 -1
- package/src/common/interfaces/server.interface.d.ts +9 -0
- package/src/common/interfaces/server.interface.js.map +1 -1
- package/src/common/metadata/app.metadata.d.ts +108 -0
- package/src/common/metadata/front-mcp.metadata.d.ts +659 -2
- package/src/common/metadata/front-mcp.metadata.js +3 -1
- package/src/common/metadata/front-mcp.metadata.js.map +1 -1
- package/src/common/metadata/provider.metadata.d.ts +14 -0
- package/src/common/metadata/provider.metadata.js +18 -2
- package/src/common/metadata/provider.metadata.js.map +1 -1
- package/src/common/metadata/tool.metadata.d.ts +33 -1
- package/src/common/metadata/tool.metadata.js.map +1 -1
- package/src/common/migrate/auth-transport.migrate.d.ts +62 -0
- package/src/common/migrate/auth-transport.migrate.js +140 -0
- package/src/common/migrate/auth-transport.migrate.js.map +1 -0
- package/src/common/migrate/index.d.ts +1 -0
- package/src/common/migrate/index.js +6 -0
- package/src/common/migrate/index.js.map +1 -0
- package/src/common/schemas/http-output.schema.d.ts +10 -2
- package/src/common/schemas/index.d.ts +1 -0
- package/src/common/schemas/index.js +1 -0
- package/src/common/schemas/index.js.map +1 -1
- package/src/common/schemas/session-header.schema.d.ts +16 -0
- package/src/common/schemas/session-header.schema.js +42 -0
- package/src/common/schemas/session-header.schema.js.map +1 -0
- package/src/common/tokens/front-mcp.tokens.js +3 -1
- package/src/common/tokens/front-mcp.tokens.js.map +1 -1
- package/src/common/types/options/auth.options.d.ts +233 -3
- package/src/common/types/options/auth.options.js +29 -40
- package/src/common/types/options/auth.options.js.map +1 -1
- package/src/common/types/options/index.d.ts +2 -0
- package/src/common/types/options/index.js +2 -0
- package/src/common/types/options/index.js.map +1 -1
- package/src/common/types/options/redis.options.d.ts +22 -0
- package/src/common/types/options/redis.options.js +45 -0
- package/src/common/types/options/redis.options.js.map +1 -0
- package/src/common/types/options/transport.options.d.ts +84 -0
- package/src/common/types/options/transport.options.js +121 -0
- package/src/common/types/options/transport.options.js.map +1 -0
- package/src/completion/flows/complete.flow.d.ts +17 -2
- package/src/context/frontmcp-context-storage.d.ts +94 -0
- package/src/context/frontmcp-context-storage.js +183 -0
- package/src/context/frontmcp-context-storage.js.map +1 -0
- package/src/context/frontmcp-context.d.ts +269 -0
- package/src/context/frontmcp-context.js +360 -0
- package/src/context/frontmcp-context.js.map +1 -0
- package/src/context/frontmcp-context.provider.d.ts +43 -0
- package/src/context/frontmcp-context.provider.js +61 -0
- package/src/context/frontmcp-context.provider.js.map +1 -0
- package/src/context/index.d.ts +34 -0
- package/src/context/index.js +64 -0
- package/src/context/index.js.map +1 -0
- package/src/context/request-context-storage.d.ts +89 -0
- package/src/context/request-context-storage.js +183 -0
- package/src/context/request-context-storage.js.map +1 -0
- package/src/context/request-context.d.ts +184 -0
- package/src/context/request-context.js +209 -0
- package/src/context/request-context.js.map +1 -0
- package/src/context/request-context.provider.d.ts +37 -0
- package/src/context/request-context.provider.js +51 -0
- package/src/context/request-context.provider.js.map +1 -0
- package/src/context/session-key.provider.d.ts +45 -0
- package/src/context/session-key.provider.js +65 -0
- package/src/context/session-key.provider.js.map +1 -0
- package/src/context/trace-context.d.ts +43 -0
- package/src/context/trace-context.js +142 -0
- package/src/context/trace-context.js.map +1 -0
- package/src/errors/index.d.ts +1 -1
- package/src/errors/index.js +3 -1
- package/src/errors/index.js.map +1 -1
- package/src/errors/mcp.error.d.ts +7 -0
- package/src/errors/mcp.error.js +11 -1
- package/src/errors/mcp.error.js.map +1 -1
- package/src/flows/flow.instance.d.ts +16 -0
- package/src/flows/flow.instance.js +166 -80
- package/src/flows/flow.instance.js.map +1 -1
- package/src/flows/flow.registry.d.ts +5 -0
- package/src/flows/flow.registry.js +45 -3
- package/src/flows/flow.registry.js.map +1 -1
- package/src/front-mcp/front-mcp.d.ts +12 -0
- package/src/front-mcp/front-mcp.js +22 -3
- package/src/front-mcp/front-mcp.js.map +1 -1
- package/src/front-mcp/front-mcp.providers.d.ts +266 -1
- package/src/front-mcp/front-mcp.providers.js +2 -1
- package/src/front-mcp/front-mcp.providers.js.map +1 -1
- package/src/front-mcp/serverless-handler.d.ts +28 -0
- package/src/front-mcp/serverless-handler.js +61 -0
- package/src/front-mcp/serverless-handler.js.map +1 -0
- package/src/hooks/hooks.utils.d.ts +1 -1
- package/src/hooks/hooks.utils.js +10 -3
- package/src/hooks/hooks.utils.js.map +1 -1
- package/src/index.d.ts +8 -4
- package/src/index.js +20 -1
- package/src/index.js.map +1 -1
- package/src/logger/instances/instance.logger.js +0 -1
- package/src/logger/instances/instance.logger.js.map +1 -1
- package/src/logging/flows/set-level.flow.d.ts +17 -2
- package/src/notification/notification.service.js +5 -1
- package/src/notification/notification.service.js.map +1 -1
- package/src/prompt/flows/get-prompt.flow.d.ts +97 -2
- package/src/prompt/flows/prompts-list.flow.d.ts +12 -1
- package/src/provider/provider.registry.d.ts +97 -5
- package/src/provider/provider.registry.js +306 -9
- package/src/provider/provider.registry.js.map +1 -1
- package/src/provider/provider.types.d.ts +21 -3
- package/src/provider/provider.types.js.map +1 -1
- package/src/resource/flows/read-resource.flow.d.ts +22 -3
- package/src/resource/flows/resource-templates-list.flow.d.ts +20 -1
- package/src/resource/flows/resources-list.flow.d.ts +20 -1
- package/src/resource/flows/subscribe-resource.flow.d.ts +17 -2
- package/src/resource/flows/unsubscribe-resource.flow.d.ts +17 -2
- package/src/scope/flows/http.request.flow.js +43 -7
- package/src/scope/flows/http.request.flow.js.map +1 -1
- package/src/scope/scope.instance.js +12 -5
- package/src/scope/scope.instance.js.map +1 -1
- package/src/server/adapters/base.host.adapter.d.ts +9 -0
- package/src/server/adapters/base.host.adapter.js.map +1 -1
- package/src/server/adapters/express.host.adapter.d.ts +12 -0
- package/src/server/adapters/express.host.adapter.js +21 -1
- package/src/server/adapters/express.host.adapter.js.map +1 -1
- package/src/server/server.instance.d.ts +3 -0
- package/src/server/server.instance.js +14 -7
- package/src/server/server.instance.js.map +1 -1
- package/src/tool/flows/call-tool.flow.d.ts +118 -13
- package/src/tool/flows/call-tool.flow.js +240 -194
- package/src/tool/flows/call-tool.flow.js.map +1 -1
- package/src/tool/flows/tools-list.flow.d.ts +25 -11
- package/src/tool/flows/tools-list.flow.js +82 -31
- package/src/tool/flows/tools-list.flow.js.map +1 -1
- package/src/tool/tool.instance.d.ts +1 -4
- package/src/transport/adapters/transport.streamable-http.adapter.js +1 -0
- package/src/transport/adapters/transport.streamable-http.adapter.js.map +1 -1
- package/src/transport/flows/handle.sse.flow.js +9 -2
- package/src/transport/flows/handle.sse.flow.js.map +1 -1
- package/src/transport/flows/handle.streamable-http.flow.js +63 -6
- package/src/transport/flows/handle.streamable-http.flow.js.map +1 -1
- package/src/transport/mcp-handlers/complete-request.handler.d.ts +27 -1
- package/src/transport/mcp-handlers/get-prompt-request.handler.d.ts +52 -1
- package/src/transport/mcp-handlers/index.d.ts +413 -7
- package/src/transport/mcp-handlers/initialize-request.handler.js +12 -2
- package/src/transport/mcp-handlers/initialize-request.handler.js.map +1 -1
- package/src/transport/mcp-handlers/list-prompts-request.handler.d.ts +27 -1
- package/src/transport/mcp-handlers/list-resource-templates-request.handler.d.ts +32 -1
- package/src/transport/mcp-handlers/list-resources-request.handler.d.ts +32 -1
- package/src/transport/mcp-handlers/list-tools-request.handler.d.ts +30 -1
- package/src/transport/mcp-handlers/logging-set-level-request.handler.d.ts +20 -0
- package/src/transport/mcp-handlers/read-resource-request.handler.d.ts +27 -1
- package/src/transport/mcp-handlers/subscribe-request.handler.d.ts +20 -0
- package/src/transport/mcp-handlers/unsubscribe-request.handler.d.ts +20 -0
- package/src/transport/transport.registry.d.ts +68 -4
- package/src/transport/transport.registry.js +313 -11
- package/src/transport/transport.registry.js.map +1 -1
- package/src/auth/ui/htmx-templates.js.map +0 -1
- package/src/common/providers/session.provider.d.ts +0 -13
- package/src/common/providers/session.provider.js +0 -27
- package/src/common/providers/session.provider.js.map +0 -1
|
@@ -5,6 +5,7 @@ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
|
5
5
|
const types_js_2 = require("@modelcontextprotocol/sdk/types.js");
|
|
6
6
|
const unsupported_client_version_exception_1 = require("../../exceptions/mcp-exceptions/unsupported-client-version.exception");
|
|
7
7
|
const notification_1 = require("../../notification");
|
|
8
|
+
const session_id_utils_1 = require("../../auth/session/utils/session-id.utils");
|
|
8
9
|
/**
|
|
9
10
|
* Validates that the client's protocol version is a valid date string format.
|
|
10
11
|
* Per MCP spec, older versions should be accepted if supported - version negotiation
|
|
@@ -51,22 +52,31 @@ function initializeRequestHandler({ serverOptions, scope, }) {
|
|
|
51
52
|
// Store client info (name/version) for platform detection
|
|
52
53
|
// and update the session payload with the detected platform type
|
|
53
54
|
if (request.params.clientInfo) {
|
|
54
|
-
//
|
|
55
|
-
|
|
55
|
+
// Try to store in notification service (may fail for HTTP transports without registered server)
|
|
56
|
+
scope.notifications.setClientInfo(sessionId, {
|
|
56
57
|
name: request.params.clientInfo.name,
|
|
57
58
|
version: request.params.clientInfo.version,
|
|
58
59
|
});
|
|
60
|
+
// Detect platform directly from client info (don't rely on setClientInfo return)
|
|
61
|
+
// Use platform detection config from scope if available
|
|
62
|
+
const platformDetectionConfig = scope.metadata.transport?.platformDetection;
|
|
63
|
+
const clientInfoPlatform = (0, notification_1.detectAIPlatform)(request.params.clientInfo, platformDetectionConfig);
|
|
59
64
|
// Prefer capability-based detection (ext-apps) over client info detection
|
|
60
65
|
const finalPlatform = detectedPlatform ?? clientInfoPlatform;
|
|
61
66
|
// Update the session payload with the detected platform type
|
|
62
67
|
// This makes platformType available via ctx.authInfo.sessionIdPayload.platformType
|
|
63
68
|
if (finalPlatform && ctx.authInfo?.sessionIdPayload) {
|
|
64
69
|
ctx.authInfo.sessionIdPayload.platformType = finalPlatform;
|
|
70
|
+
// Persist the platformType to the session cache so subsequent requests can access it
|
|
71
|
+
// This is critical for HTTP transports where sessions are parsed from encrypted headers
|
|
72
|
+
(0, session_id_utils_1.updateSessionPayload)(sessionId, { platformType: finalPlatform });
|
|
65
73
|
}
|
|
66
74
|
}
|
|
67
75
|
else if (detectedPlatform && ctx.authInfo?.sessionIdPayload) {
|
|
68
76
|
// Update platform even without client info if detected from capabilities
|
|
69
77
|
ctx.authInfo.sessionIdPayload.platformType = detectedPlatform;
|
|
78
|
+
// Persist to session cache
|
|
79
|
+
(0, session_id_utils_1.updateSessionPayload)(sessionId, { platformType: detectedPlatform });
|
|
70
80
|
}
|
|
71
81
|
}
|
|
72
82
|
// MCP Protocol Version Negotiation (per spec):
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialize-request.handler.js","sourceRoot":"","sources":["../../../../src/transport/mcp-handlers/initialize-request.handler.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"initialize-request.handler.js","sourceRoot":"","sources":["../../../../src/transport/mcp-handlers/initialize-request.handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { InitializeRequestSchema, InitializeRequest, InitializeResult } from '@modelcontextprotocol/sdk/types.js';\nimport { LATEST_PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS } from '@modelcontextprotocol/sdk/types.js';\nimport { McpHandler, McpHandlerOptions } from './mcp-handlers.types';\nimport { UnsupportedClientVersionException } from '../../exceptions/mcp-exceptions/unsupported-client-version.exception';\nimport type { ClientCapabilities } from '../../notification';\nimport { detectPlatformFromCapabilities, detectAIPlatform } from '../../notification';\nimport { updateSessionPayload } from '../../auth/session/utils/session-id.utils';\n\n/**\n * Validates that the client's protocol version is a valid date string format.\n * Per MCP spec, older versions should be accepted if supported - version negotiation\n * determines which version to use, not this guard.\n */\nfunction guardClientVersion(clientVersion: string): void {\n const parsed = new Date(clientVersion);\n if (isNaN(parsed.getTime())) {\n throw UnsupportedClientVersionException.fromVersion(clientVersion);\n }\n // Don't reject older versions - let version negotiation handle it\n}\nexport default function initializeRequestHandler({\n serverOptions,\n scope,\n}: McpHandlerOptions): McpHandler<InitializeRequest, InitializeResult> {\n const logger = scope.logger.child('initialize-handler');\n\n return {\n requestSchema: InitializeRequestSchema,\n handler: async (request, ctx): Promise<InitializeResult> => {\n logger.info('initialize: received request', {\n clientName: request.params.clientInfo?.name,\n clientVersion: request.params.clientInfo?.version,\n protocolVersion: request.params.protocolVersion,\n hasCapabilities: !!request.params.capabilities,\n sessionId: ctx.authInfo?.sessionId?.slice(0, 20),\n });\n\n guardClientVersion(request.params.protocolVersion);\n\n // Store client capabilities and client info from the initialize request\n // The session ID is available in the auth info from the transport\n const sessionId = ctx.authInfo?.sessionId;\n let detectedPlatform: ReturnType<typeof detectPlatformFromCapabilities> = undefined;\n\n if (sessionId) {\n // Store client capabilities if provided\n if (request.params.capabilities) {\n // Map MCP client capabilities to our ClientCapabilities interface\n const clientCapabilities: ClientCapabilities = {\n roots: request.params.capabilities.roots as ClientCapabilities['roots'],\n sampling: request.params.capabilities.sampling as ClientCapabilities['sampling'],\n // Include experimental capabilities for MCP Apps extension detection\n experimental: request.params.capabilities.experimental as ClientCapabilities['experimental'],\n };\n scope.notifications.setClientCapabilities(sessionId, clientCapabilities);\n\n // Try to detect platform from capabilities first (e.g., MCP Apps extension)\n detectedPlatform = detectPlatformFromCapabilities(clientCapabilities);\n }\n\n // Store client info (name/version) for platform detection\n // and update the session payload with the detected platform type\n if (request.params.clientInfo) {\n // Try to store in notification service (may fail for HTTP transports without registered server)\n scope.notifications.setClientInfo(sessionId, {\n name: request.params.clientInfo.name,\n version: request.params.clientInfo.version,\n });\n\n // Detect platform directly from client info (don't rely on setClientInfo return)\n // Use platform detection config from scope if available\n const platformDetectionConfig = scope.metadata.transport?.platformDetection;\n const clientInfoPlatform = detectAIPlatform(request.params.clientInfo, platformDetectionConfig);\n\n // Prefer capability-based detection (ext-apps) over client info detection\n const finalPlatform = detectedPlatform ?? clientInfoPlatform;\n\n // Update the session payload with the detected platform type\n // This makes platformType available via ctx.authInfo.sessionIdPayload.platformType\n if (finalPlatform && ctx.authInfo?.sessionIdPayload) {\n ctx.authInfo.sessionIdPayload.platformType = finalPlatform;\n\n // Persist the platformType to the session cache so subsequent requests can access it\n // This is critical for HTTP transports where sessions are parsed from encrypted headers\n updateSessionPayload(sessionId, { platformType: finalPlatform });\n }\n } else if (detectedPlatform && ctx.authInfo?.sessionIdPayload) {\n // Update platform even without client info if detected from capabilities\n ctx.authInfo.sessionIdPayload.platformType = detectedPlatform;\n\n // Persist to session cache\n updateSessionPayload(sessionId, { platformType: detectedPlatform });\n }\n }\n\n // MCP Protocol Version Negotiation (per spec):\n // \"If the server supports the requested protocol version, it MUST respond with the same version.\n // Otherwise, the server MUST respond with another protocol version it supports.\"\n const requestedVersion = request.params.protocolVersion;\n const protocolVersion = SUPPORTED_PROTOCOL_VERSIONS.includes(requestedVersion)\n ? requestedVersion\n : LATEST_PROTOCOL_VERSION;\n\n const result: InitializeResult = {\n capabilities: serverOptions.capabilities!,\n instructions: serverOptions.instructions,\n serverInfo: {\n name: 'FrontMcpServer',\n version: '0.0.1',\n title: 'FrontMcpServer',\n },\n protocolVersion,\n };\n\n logger.info('initialize: sending response', {\n capabilities: JSON.stringify(result.capabilities),\n protocolVersion: result.protocolVersion,\n serverName: result.serverInfo.name,\n sessionId: ctx.authInfo?.sessionId?.slice(0, 20),\n });\n\n return result;\n },\n };\n}\n"]}
|
|
@@ -3,8 +3,15 @@ import { McpHandlerOptions } from './mcp-handlers.types';
|
|
|
3
3
|
export default function ListPromptsRequestHandler({ scope }: McpHandlerOptions): {
|
|
4
4
|
requestSchema: import("zod").ZodObject<{
|
|
5
5
|
params: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
6
|
+
task: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
7
|
+
ttl: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodNumber, import("zod").ZodNull]>>;
|
|
8
|
+
pollInterval: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
9
|
+
}, import("zod/v4/core").$loose>>;
|
|
6
10
|
_meta: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
7
11
|
progressToken: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
|
|
12
|
+
"io.modelcontextprotocol/related-task": import("zod").ZodOptional<import("zod").ZodObject<{
|
|
13
|
+
taskId: import("zod").ZodString;
|
|
14
|
+
}, import("zod/v4/core").$loose>>;
|
|
8
15
|
}, import("zod/v4/core").$loose>>;
|
|
9
16
|
cursor: import("zod").ZodOptional<import("zod").ZodString>;
|
|
10
17
|
}, import("zod/v4/core").$loose>>;
|
|
@@ -14,9 +21,18 @@ export default function ListPromptsRequestHandler({ scope }: McpHandlerOptions):
|
|
|
14
21
|
method: "prompts/list";
|
|
15
22
|
params?: {
|
|
16
23
|
[x: string]: unknown;
|
|
24
|
+
task?: {
|
|
25
|
+
[x: string]: unknown;
|
|
26
|
+
ttl?: number | null | undefined;
|
|
27
|
+
pollInterval?: number | undefined;
|
|
28
|
+
} | undefined;
|
|
17
29
|
_meta?: {
|
|
18
30
|
[x: string]: unknown;
|
|
19
31
|
progressToken?: string | number | undefined;
|
|
32
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
33
|
+
[x: string]: unknown;
|
|
34
|
+
taskId: string;
|
|
35
|
+
} | undefined;
|
|
20
36
|
} | undefined;
|
|
21
37
|
cursor?: string | undefined;
|
|
22
38
|
} | undefined;
|
|
@@ -26,6 +42,10 @@ export default function ListPromptsRequestHandler({ scope }: McpHandlerOptions):
|
|
|
26
42
|
[x: string]: unknown;
|
|
27
43
|
_meta?: {
|
|
28
44
|
[x: string]: unknown;
|
|
45
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
46
|
+
[x: string]: unknown;
|
|
47
|
+
taskId: string;
|
|
48
|
+
} | undefined;
|
|
29
49
|
} | undefined;
|
|
30
50
|
} | undefined;
|
|
31
51
|
}>) => Promise<{
|
|
@@ -48,7 +68,13 @@ export default function ListPromptsRequestHandler({ scope }: McpHandlerOptions):
|
|
|
48
68
|
}[] | undefined;
|
|
49
69
|
title?: string | undefined;
|
|
50
70
|
}[];
|
|
51
|
-
_meta?:
|
|
71
|
+
_meta?: {
|
|
72
|
+
[x: string]: unknown;
|
|
73
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
74
|
+
[x: string]: unknown;
|
|
75
|
+
taskId: string;
|
|
76
|
+
} | undefined;
|
|
77
|
+
} | undefined;
|
|
52
78
|
nextCursor?: string | undefined;
|
|
53
79
|
}>;
|
|
54
80
|
};
|
|
@@ -3,8 +3,15 @@ import { McpHandlerOptions } from './mcp-handlers.types';
|
|
|
3
3
|
export default function listResourceTemplatesRequestHandler({ scope }: McpHandlerOptions): {
|
|
4
4
|
requestSchema: import("zod").ZodObject<{
|
|
5
5
|
params: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
6
|
+
task: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
7
|
+
ttl: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodNumber, import("zod").ZodNull]>>;
|
|
8
|
+
pollInterval: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
9
|
+
}, import("zod/v4/core").$loose>>;
|
|
6
10
|
_meta: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
7
11
|
progressToken: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
|
|
12
|
+
"io.modelcontextprotocol/related-task": import("zod").ZodOptional<import("zod").ZodObject<{
|
|
13
|
+
taskId: import("zod").ZodString;
|
|
14
|
+
}, import("zod/v4/core").$loose>>;
|
|
8
15
|
}, import("zod/v4/core").$loose>>;
|
|
9
16
|
cursor: import("zod").ZodOptional<import("zod").ZodString>;
|
|
10
17
|
}, import("zod/v4/core").$loose>>;
|
|
@@ -14,9 +21,18 @@ export default function listResourceTemplatesRequestHandler({ scope }: McpHandle
|
|
|
14
21
|
method: "resources/templates/list";
|
|
15
22
|
params?: {
|
|
16
23
|
[x: string]: unknown;
|
|
24
|
+
task?: {
|
|
25
|
+
[x: string]: unknown;
|
|
26
|
+
ttl?: number | null | undefined;
|
|
27
|
+
pollInterval?: number | undefined;
|
|
28
|
+
} | undefined;
|
|
17
29
|
_meta?: {
|
|
18
30
|
[x: string]: unknown;
|
|
19
31
|
progressToken?: string | number | undefined;
|
|
32
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
33
|
+
[x: string]: unknown;
|
|
34
|
+
taskId: string;
|
|
35
|
+
} | undefined;
|
|
20
36
|
} | undefined;
|
|
21
37
|
cursor?: string | undefined;
|
|
22
38
|
} | undefined;
|
|
@@ -26,6 +42,10 @@ export default function listResourceTemplatesRequestHandler({ scope }: McpHandle
|
|
|
26
42
|
[x: string]: unknown;
|
|
27
43
|
_meta?: {
|
|
28
44
|
[x: string]: unknown;
|
|
45
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
46
|
+
[x: string]: unknown;
|
|
47
|
+
taskId: string;
|
|
48
|
+
} | undefined;
|
|
29
49
|
} | undefined;
|
|
30
50
|
} | undefined;
|
|
31
51
|
}>) => Promise<{
|
|
@@ -35,6 +55,11 @@ export default function listResourceTemplatesRequestHandler({ scope }: McpHandle
|
|
|
35
55
|
name: string;
|
|
36
56
|
description?: string | undefined;
|
|
37
57
|
mimeType?: string | undefined;
|
|
58
|
+
annotations?: {
|
|
59
|
+
audience?: ("user" | "assistant")[] | undefined;
|
|
60
|
+
priority?: number | undefined;
|
|
61
|
+
lastModified?: string | undefined;
|
|
62
|
+
} | undefined;
|
|
38
63
|
_meta?: {
|
|
39
64
|
[x: string]: unknown;
|
|
40
65
|
} | undefined;
|
|
@@ -45,7 +70,13 @@ export default function listResourceTemplatesRequestHandler({ scope }: McpHandle
|
|
|
45
70
|
}[] | undefined;
|
|
46
71
|
title?: string | undefined;
|
|
47
72
|
}[];
|
|
48
|
-
_meta?:
|
|
73
|
+
_meta?: {
|
|
74
|
+
[x: string]: unknown;
|
|
75
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
76
|
+
[x: string]: unknown;
|
|
77
|
+
taskId: string;
|
|
78
|
+
} | undefined;
|
|
79
|
+
} | undefined;
|
|
49
80
|
nextCursor?: string | undefined;
|
|
50
81
|
}>;
|
|
51
82
|
};
|
|
@@ -3,8 +3,15 @@ import { McpHandlerOptions } from './mcp-handlers.types';
|
|
|
3
3
|
export default function listResourcesRequestHandler({ scope }: McpHandlerOptions): {
|
|
4
4
|
requestSchema: import("zod").ZodObject<{
|
|
5
5
|
params: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
6
|
+
task: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
7
|
+
ttl: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodNumber, import("zod").ZodNull]>>;
|
|
8
|
+
pollInterval: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
9
|
+
}, import("zod/v4/core").$loose>>;
|
|
6
10
|
_meta: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
7
11
|
progressToken: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
|
|
12
|
+
"io.modelcontextprotocol/related-task": import("zod").ZodOptional<import("zod").ZodObject<{
|
|
13
|
+
taskId: import("zod").ZodString;
|
|
14
|
+
}, import("zod/v4/core").$loose>>;
|
|
8
15
|
}, import("zod/v4/core").$loose>>;
|
|
9
16
|
cursor: import("zod").ZodOptional<import("zod").ZodString>;
|
|
10
17
|
}, import("zod/v4/core").$loose>>;
|
|
@@ -14,9 +21,18 @@ export default function listResourcesRequestHandler({ scope }: McpHandlerOptions
|
|
|
14
21
|
method: "resources/list";
|
|
15
22
|
params?: {
|
|
16
23
|
[x: string]: unknown;
|
|
24
|
+
task?: {
|
|
25
|
+
[x: string]: unknown;
|
|
26
|
+
ttl?: number | null | undefined;
|
|
27
|
+
pollInterval?: number | undefined;
|
|
28
|
+
} | undefined;
|
|
17
29
|
_meta?: {
|
|
18
30
|
[x: string]: unknown;
|
|
19
31
|
progressToken?: string | number | undefined;
|
|
32
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
33
|
+
[x: string]: unknown;
|
|
34
|
+
taskId: string;
|
|
35
|
+
} | undefined;
|
|
20
36
|
} | undefined;
|
|
21
37
|
cursor?: string | undefined;
|
|
22
38
|
} | undefined;
|
|
@@ -26,6 +42,10 @@ export default function listResourcesRequestHandler({ scope }: McpHandlerOptions
|
|
|
26
42
|
[x: string]: unknown;
|
|
27
43
|
_meta?: {
|
|
28
44
|
[x: string]: unknown;
|
|
45
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
46
|
+
[x: string]: unknown;
|
|
47
|
+
taskId: string;
|
|
48
|
+
} | undefined;
|
|
29
49
|
} | undefined;
|
|
30
50
|
} | undefined;
|
|
31
51
|
}>) => Promise<{
|
|
@@ -35,6 +55,11 @@ export default function listResourcesRequestHandler({ scope }: McpHandlerOptions
|
|
|
35
55
|
name: string;
|
|
36
56
|
description?: string | undefined;
|
|
37
57
|
mimeType?: string | undefined;
|
|
58
|
+
annotations?: {
|
|
59
|
+
audience?: ("user" | "assistant")[] | undefined;
|
|
60
|
+
priority?: number | undefined;
|
|
61
|
+
lastModified?: string | undefined;
|
|
62
|
+
} | undefined;
|
|
38
63
|
_meta?: {
|
|
39
64
|
[x: string]: unknown;
|
|
40
65
|
} | undefined;
|
|
@@ -45,7 +70,13 @@ export default function listResourcesRequestHandler({ scope }: McpHandlerOptions
|
|
|
45
70
|
}[] | undefined;
|
|
46
71
|
title?: string | undefined;
|
|
47
72
|
}[];
|
|
48
|
-
_meta?:
|
|
73
|
+
_meta?: {
|
|
74
|
+
[x: string]: unknown;
|
|
75
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
76
|
+
[x: string]: unknown;
|
|
77
|
+
taskId: string;
|
|
78
|
+
} | undefined;
|
|
79
|
+
} | undefined;
|
|
49
80
|
nextCursor?: string | undefined;
|
|
50
81
|
}>;
|
|
51
82
|
};
|
|
@@ -3,8 +3,15 @@ import { McpHandlerOptions } from './mcp-handlers.types';
|
|
|
3
3
|
export default function ListToolsRequestHandler({ scope, }: McpHandlerOptions): {
|
|
4
4
|
requestSchema: import("zod").ZodObject<{
|
|
5
5
|
params: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
6
|
+
task: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
7
|
+
ttl: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodNumber, import("zod").ZodNull]>>;
|
|
8
|
+
pollInterval: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
9
|
+
}, import("zod/v4/core").$loose>>;
|
|
6
10
|
_meta: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
7
11
|
progressToken: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
|
|
12
|
+
"io.modelcontextprotocol/related-task": import("zod").ZodOptional<import("zod").ZodObject<{
|
|
13
|
+
taskId: import("zod").ZodString;
|
|
14
|
+
}, import("zod/v4/core").$loose>>;
|
|
8
15
|
}, import("zod/v4/core").$loose>>;
|
|
9
16
|
cursor: import("zod").ZodOptional<import("zod").ZodString>;
|
|
10
17
|
}, import("zod/v4/core").$loose>>;
|
|
@@ -14,9 +21,18 @@ export default function ListToolsRequestHandler({ scope, }: McpHandlerOptions):
|
|
|
14
21
|
method: "tools/list";
|
|
15
22
|
params?: {
|
|
16
23
|
[x: string]: unknown;
|
|
24
|
+
task?: {
|
|
25
|
+
[x: string]: unknown;
|
|
26
|
+
ttl?: number | null | undefined;
|
|
27
|
+
pollInterval?: number | undefined;
|
|
28
|
+
} | undefined;
|
|
17
29
|
_meta?: {
|
|
18
30
|
[x: string]: unknown;
|
|
19
31
|
progressToken?: string | number | undefined;
|
|
32
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
33
|
+
[x: string]: unknown;
|
|
34
|
+
taskId: string;
|
|
35
|
+
} | undefined;
|
|
20
36
|
} | undefined;
|
|
21
37
|
cursor?: string | undefined;
|
|
22
38
|
} | undefined;
|
|
@@ -26,6 +42,10 @@ export default function ListToolsRequestHandler({ scope, }: McpHandlerOptions):
|
|
|
26
42
|
[x: string]: unknown;
|
|
27
43
|
_meta?: {
|
|
28
44
|
[x: string]: unknown;
|
|
45
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
46
|
+
[x: string]: unknown;
|
|
47
|
+
taskId: string;
|
|
48
|
+
} | undefined;
|
|
29
49
|
} | undefined;
|
|
30
50
|
} | undefined;
|
|
31
51
|
}>) => Promise<{
|
|
@@ -52,6 +72,9 @@ export default function ListToolsRequestHandler({ scope, }: McpHandlerOptions):
|
|
|
52
72
|
idempotentHint?: boolean | undefined;
|
|
53
73
|
openWorldHint?: boolean | undefined;
|
|
54
74
|
} | undefined;
|
|
75
|
+
execution?: {
|
|
76
|
+
taskSupport?: "optional" | "required" | "forbidden" | undefined;
|
|
77
|
+
} | undefined;
|
|
55
78
|
_meta?: Record<string, unknown> | undefined;
|
|
56
79
|
icons?: {
|
|
57
80
|
src: string;
|
|
@@ -60,7 +83,13 @@ export default function ListToolsRequestHandler({ scope, }: McpHandlerOptions):
|
|
|
60
83
|
}[] | undefined;
|
|
61
84
|
title?: string | undefined;
|
|
62
85
|
}[];
|
|
63
|
-
_meta?:
|
|
86
|
+
_meta?: {
|
|
87
|
+
[x: string]: unknown;
|
|
88
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
89
|
+
[x: string]: unknown;
|
|
90
|
+
taskId: string;
|
|
91
|
+
} | undefined;
|
|
92
|
+
} | undefined;
|
|
64
93
|
nextCursor?: string | undefined;
|
|
65
94
|
}>;
|
|
66
95
|
};
|
|
@@ -9,8 +9,15 @@ export default function LoggingSetLevelRequestHandler({ scope }: McpHandlerOptio
|
|
|
9
9
|
requestSchema: import("zod").ZodObject<{
|
|
10
10
|
method: import("zod").ZodLiteral<"logging/setLevel">;
|
|
11
11
|
params: import("zod").ZodObject<{
|
|
12
|
+
task: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
13
|
+
ttl: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodNumber, import("zod").ZodNull]>>;
|
|
14
|
+
pollInterval: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
15
|
+
}, import("zod/v4/core").$loose>>;
|
|
12
16
|
_meta: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
13
17
|
progressToken: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
|
|
18
|
+
"io.modelcontextprotocol/related-task": import("zod").ZodOptional<import("zod").ZodObject<{
|
|
19
|
+
taskId: import("zod").ZodString;
|
|
20
|
+
}, import("zod/v4/core").$loose>>;
|
|
14
21
|
}, import("zod/v4/core").$loose>>;
|
|
15
22
|
level: import("zod").ZodEnum<{
|
|
16
23
|
error: "error";
|
|
@@ -29,9 +36,18 @@ export default function LoggingSetLevelRequestHandler({ scope }: McpHandlerOptio
|
|
|
29
36
|
params: {
|
|
30
37
|
[x: string]: unknown;
|
|
31
38
|
level: "error" | "debug" | "info" | "warning" | "notice" | "critical" | "alert" | "emergency";
|
|
39
|
+
task?: {
|
|
40
|
+
[x: string]: unknown;
|
|
41
|
+
ttl?: number | null | undefined;
|
|
42
|
+
pollInterval?: number | undefined;
|
|
43
|
+
} | undefined;
|
|
32
44
|
_meta?: {
|
|
33
45
|
[x: string]: unknown;
|
|
34
46
|
progressToken?: string | number | undefined;
|
|
47
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
48
|
+
[x: string]: unknown;
|
|
49
|
+
taskId: string;
|
|
50
|
+
} | undefined;
|
|
35
51
|
} | undefined;
|
|
36
52
|
};
|
|
37
53
|
}, {
|
|
@@ -40,6 +56,10 @@ export default function LoggingSetLevelRequestHandler({ scope }: McpHandlerOptio
|
|
|
40
56
|
[x: string]: unknown;
|
|
41
57
|
_meta?: {
|
|
42
58
|
[x: string]: unknown;
|
|
59
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
60
|
+
[x: string]: unknown;
|
|
61
|
+
taskId: string;
|
|
62
|
+
} | undefined;
|
|
43
63
|
} | undefined;
|
|
44
64
|
} | undefined;
|
|
45
65
|
}>) => Promise<EmptyResult>;
|
|
@@ -4,8 +4,15 @@ export default function readResourceRequestHandler({ scope }: McpHandlerOptions)
|
|
|
4
4
|
requestSchema: import("zod").ZodObject<{
|
|
5
5
|
method: import("zod").ZodLiteral<"resources/read">;
|
|
6
6
|
params: import("zod").ZodObject<{
|
|
7
|
+
task: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
8
|
+
ttl: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodNumber, import("zod").ZodNull]>>;
|
|
9
|
+
pollInterval: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
10
|
+
}, import("zod/v4/core").$loose>>;
|
|
7
11
|
_meta: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
8
12
|
progressToken: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
|
|
13
|
+
"io.modelcontextprotocol/related-task": import("zod").ZodOptional<import("zod").ZodObject<{
|
|
14
|
+
taskId: import("zod").ZodString;
|
|
15
|
+
}, import("zod/v4/core").$loose>>;
|
|
9
16
|
}, import("zod/v4/core").$loose>>;
|
|
10
17
|
uri: import("zod").ZodString;
|
|
11
18
|
}, import("zod/v4/core").$loose>;
|
|
@@ -15,9 +22,18 @@ export default function readResourceRequestHandler({ scope }: McpHandlerOptions)
|
|
|
15
22
|
params: {
|
|
16
23
|
[x: string]: unknown;
|
|
17
24
|
uri: string;
|
|
25
|
+
task?: {
|
|
26
|
+
[x: string]: unknown;
|
|
27
|
+
ttl?: number | null | undefined;
|
|
28
|
+
pollInterval?: number | undefined;
|
|
29
|
+
} | undefined;
|
|
18
30
|
_meta?: {
|
|
19
31
|
[x: string]: unknown;
|
|
20
32
|
progressToken?: string | number | undefined;
|
|
33
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
34
|
+
[x: string]: unknown;
|
|
35
|
+
taskId: string;
|
|
36
|
+
} | undefined;
|
|
21
37
|
} | undefined;
|
|
22
38
|
};
|
|
23
39
|
}, {
|
|
@@ -26,6 +42,10 @@ export default function readResourceRequestHandler({ scope }: McpHandlerOptions)
|
|
|
26
42
|
[x: string]: unknown;
|
|
27
43
|
_meta?: {
|
|
28
44
|
[x: string]: unknown;
|
|
45
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
46
|
+
[x: string]: unknown;
|
|
47
|
+
taskId: string;
|
|
48
|
+
} | undefined;
|
|
29
49
|
} | undefined;
|
|
30
50
|
} | undefined;
|
|
31
51
|
}>) => Promise<{
|
|
@@ -41,6 +61,12 @@ export default function readResourceRequestHandler({ scope }: McpHandlerOptions)
|
|
|
41
61
|
mimeType?: string | undefined;
|
|
42
62
|
_meta?: Record<string, unknown> | undefined;
|
|
43
63
|
})[];
|
|
44
|
-
_meta?:
|
|
64
|
+
_meta?: {
|
|
65
|
+
[x: string]: unknown;
|
|
66
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
67
|
+
[x: string]: unknown;
|
|
68
|
+
taskId: string;
|
|
69
|
+
} | undefined;
|
|
70
|
+
} | undefined;
|
|
45
71
|
}>;
|
|
46
72
|
};
|
|
@@ -9,8 +9,15 @@ export default function SubscribeRequestHandler({ scope }: McpHandlerOptions): {
|
|
|
9
9
|
requestSchema: import("zod").ZodObject<{
|
|
10
10
|
method: import("zod").ZodLiteral<"resources/subscribe">;
|
|
11
11
|
params: import("zod").ZodObject<{
|
|
12
|
+
task: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
13
|
+
ttl: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodNumber, import("zod").ZodNull]>>;
|
|
14
|
+
pollInterval: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
15
|
+
}, import("zod/v4/core").$loose>>;
|
|
12
16
|
_meta: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
13
17
|
progressToken: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
|
|
18
|
+
"io.modelcontextprotocol/related-task": import("zod").ZodOptional<import("zod").ZodObject<{
|
|
19
|
+
taskId: import("zod").ZodString;
|
|
20
|
+
}, import("zod/v4/core").$loose>>;
|
|
14
21
|
}, import("zod/v4/core").$loose>>;
|
|
15
22
|
uri: import("zod").ZodString;
|
|
16
23
|
}, import("zod/v4/core").$loose>;
|
|
@@ -20,9 +27,18 @@ export default function SubscribeRequestHandler({ scope }: McpHandlerOptions): {
|
|
|
20
27
|
params: {
|
|
21
28
|
[x: string]: unknown;
|
|
22
29
|
uri: string;
|
|
30
|
+
task?: {
|
|
31
|
+
[x: string]: unknown;
|
|
32
|
+
ttl?: number | null | undefined;
|
|
33
|
+
pollInterval?: number | undefined;
|
|
34
|
+
} | undefined;
|
|
23
35
|
_meta?: {
|
|
24
36
|
[x: string]: unknown;
|
|
25
37
|
progressToken?: string | number | undefined;
|
|
38
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
39
|
+
[x: string]: unknown;
|
|
40
|
+
taskId: string;
|
|
41
|
+
} | undefined;
|
|
26
42
|
} | undefined;
|
|
27
43
|
};
|
|
28
44
|
}, {
|
|
@@ -31,6 +47,10 @@ export default function SubscribeRequestHandler({ scope }: McpHandlerOptions): {
|
|
|
31
47
|
[x: string]: unknown;
|
|
32
48
|
_meta?: {
|
|
33
49
|
[x: string]: unknown;
|
|
50
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
51
|
+
[x: string]: unknown;
|
|
52
|
+
taskId: string;
|
|
53
|
+
} | undefined;
|
|
34
54
|
} | undefined;
|
|
35
55
|
} | undefined;
|
|
36
56
|
}>) => Promise<EmptyResult>;
|
|
@@ -9,8 +9,15 @@ export default function UnsubscribeRequestHandler({ scope }: McpHandlerOptions):
|
|
|
9
9
|
requestSchema: import("zod").ZodObject<{
|
|
10
10
|
method: import("zod").ZodLiteral<"resources/unsubscribe">;
|
|
11
11
|
params: import("zod").ZodObject<{
|
|
12
|
+
task: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
13
|
+
ttl: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodNumber, import("zod").ZodNull]>>;
|
|
14
|
+
pollInterval: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
15
|
+
}, import("zod/v4/core").$loose>>;
|
|
12
16
|
_meta: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
13
17
|
progressToken: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
|
|
18
|
+
"io.modelcontextprotocol/related-task": import("zod").ZodOptional<import("zod").ZodObject<{
|
|
19
|
+
taskId: import("zod").ZodString;
|
|
20
|
+
}, import("zod/v4/core").$loose>>;
|
|
14
21
|
}, import("zod/v4/core").$loose>>;
|
|
15
22
|
uri: import("zod").ZodString;
|
|
16
23
|
}, import("zod/v4/core").$loose>;
|
|
@@ -20,9 +27,18 @@ export default function UnsubscribeRequestHandler({ scope }: McpHandlerOptions):
|
|
|
20
27
|
params: {
|
|
21
28
|
[x: string]: unknown;
|
|
22
29
|
uri: string;
|
|
30
|
+
task?: {
|
|
31
|
+
[x: string]: unknown;
|
|
32
|
+
ttl?: number | null | undefined;
|
|
33
|
+
pollInterval?: number | undefined;
|
|
34
|
+
} | undefined;
|
|
23
35
|
_meta?: {
|
|
24
36
|
[x: string]: unknown;
|
|
25
37
|
progressToken?: string | number | undefined;
|
|
38
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
39
|
+
[x: string]: unknown;
|
|
40
|
+
taskId: string;
|
|
41
|
+
} | undefined;
|
|
26
42
|
} | undefined;
|
|
27
43
|
};
|
|
28
44
|
}, {
|
|
@@ -31,6 +47,10 @@ export default function UnsubscribeRequestHandler({ scope }: McpHandlerOptions):
|
|
|
31
47
|
[x: string]: unknown;
|
|
32
48
|
_meta?: {
|
|
33
49
|
[x: string]: unknown;
|
|
50
|
+
"io.modelcontextprotocol/related-task"?: {
|
|
51
|
+
[x: string]: unknown;
|
|
52
|
+
taskId: string;
|
|
53
|
+
} | undefined;
|
|
34
54
|
} | undefined;
|
|
35
55
|
} | undefined;
|
|
36
56
|
}>) => Promise<EmptyResult>;
|