@frontmcp/sdk 0.5.1 → 0.6.1

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.
Files changed (265) hide show
  1. package/README.md +1 -0
  2. package/package.json +12 -16
  3. package/src/adapter/adapter.instance.js +5 -0
  4. package/src/adapter/adapter.instance.js.map +1 -1
  5. package/src/auth/authorization/authorization.class.d.ts +1 -4
  6. package/src/auth/authorization/authorization.class.js +6 -13
  7. package/src/auth/authorization/authorization.class.js.map +1 -1
  8. package/src/auth/flows/session.verify.flow.d.ts +1 -0
  9. package/src/auth/flows/session.verify.flow.js +11 -1
  10. package/src/auth/flows/session.verify.flow.js.map +1 -1
  11. package/src/auth/flows/well-known.jwks.flow.js +2 -2
  12. package/src/auth/flows/well-known.jwks.flow.js.map +1 -1
  13. package/src/auth/jwks/dev-key-persistence.d.ts +63 -0
  14. package/src/auth/jwks/dev-key-persistence.js +219 -0
  15. package/src/auth/jwks/dev-key-persistence.js.map +1 -0
  16. package/src/auth/jwks/index.d.ts +1 -0
  17. package/src/auth/jwks/index.js +1 -0
  18. package/src/auth/jwks/index.js.map +1 -1
  19. package/src/auth/jwks/jwks.service.d.ts +7 -4
  20. package/src/auth/jwks/jwks.service.js +81 -12
  21. package/src/auth/jwks/jwks.service.js.map +1 -1
  22. package/src/auth/jwks/jwks.types.d.ts +7 -0
  23. package/src/auth/jwks/jwks.types.js.map +1 -1
  24. package/src/auth/machine-id.d.ts +5 -0
  25. package/src/auth/machine-id.js +32 -0
  26. package/src/auth/machine-id.js.map +1 -0
  27. package/src/auth/session/index.d.ts +2 -0
  28. package/src/auth/session/index.js +5 -1
  29. package/src/auth/session/index.js.map +1 -1
  30. package/src/auth/session/record/session.base.js +5 -3
  31. package/src/auth/session/record/session.base.js.map +1 -1
  32. package/src/auth/session/record/session.stateless.d.ts +2 -2
  33. package/src/auth/session/record/session.stateless.js +5 -3
  34. package/src/auth/session/record/session.stateless.js.map +1 -1
  35. package/src/auth/session/redis-session.store.d.ts +64 -0
  36. package/src/auth/session/redis-session.store.js +204 -0
  37. package/src/auth/session/redis-session.store.js.map +1 -0
  38. package/src/auth/session/session.service.d.ts +0 -2
  39. package/src/auth/session/session.service.js +1 -7
  40. package/src/auth/session/session.service.js.map +1 -1
  41. package/src/auth/session/transport-session.manager.js +3 -5
  42. package/src/auth/session/transport-session.manager.js.map +1 -1
  43. package/src/auth/session/transport-session.types.d.ts +4 -0
  44. package/src/auth/session/transport-session.types.js +4 -3
  45. package/src/auth/session/transport-session.types.js.map +1 -1
  46. package/src/auth/session/utils/session-id.utils.d.ts +12 -1
  47. package/src/auth/session/utils/session-id.utils.js +48 -9
  48. package/src/auth/session/utils/session-id.utils.js.map +1 -1
  49. package/src/auth/session/vercel-kv-session.store.d.ts +96 -0
  50. package/src/auth/session/vercel-kv-session.store.js +216 -0
  51. package/src/auth/session/vercel-kv-session.store.js.map +1 -0
  52. package/src/auth/ui/base-layout.d.ts +0 -8
  53. package/src/auth/ui/base-layout.js +1 -14
  54. package/src/auth/ui/base-layout.js.map +1 -1
  55. package/src/auth/ui/index.d.ts +3 -4
  56. package/src/auth/ui/index.js +10 -11
  57. package/src/auth/ui/index.js.map +1 -1
  58. package/src/auth/ui/{htmx-templates.d.ts → templates.d.ts} +5 -6
  59. package/src/auth/ui/{htmx-templates.js → templates.js} +8 -15
  60. package/src/auth/ui/templates.js.map +1 -0
  61. package/src/common/decorators/decorator-utils.js.map +1 -1
  62. package/src/common/decorators/front-mcp.decorator.js +26 -3
  63. package/src/common/decorators/front-mcp.decorator.js.map +1 -1
  64. package/src/common/index.d.ts +0 -1
  65. package/src/common/index.js +0 -1
  66. package/src/common/index.js.map +1 -1
  67. package/src/common/interfaces/adapter.interface.d.ts +6 -0
  68. package/src/common/interfaces/adapter.interface.js.map +1 -1
  69. package/src/common/interfaces/execution-context.interface.d.ts +52 -3
  70. package/src/common/interfaces/execution-context.interface.js +88 -3
  71. package/src/common/interfaces/execution-context.interface.js.map +1 -1
  72. package/src/common/interfaces/flow.interface.d.ts +13 -0
  73. package/src/common/interfaces/flow.interface.js +24 -0
  74. package/src/common/interfaces/flow.interface.js.map +1 -1
  75. package/src/common/interfaces/server.interface.d.ts +9 -0
  76. package/src/common/interfaces/server.interface.js.map +1 -1
  77. package/src/common/metadata/app.metadata.d.ts +108 -0
  78. package/src/common/metadata/front-mcp.metadata.d.ts +1341 -2
  79. package/src/common/metadata/front-mcp.metadata.js +4 -1
  80. package/src/common/metadata/front-mcp.metadata.js.map +1 -1
  81. package/src/common/metadata/prompt.metadata.d.ts +4 -0
  82. package/src/common/metadata/provider.metadata.d.ts +14 -0
  83. package/src/common/metadata/provider.metadata.js +18 -2
  84. package/src/common/metadata/provider.metadata.js.map +1 -1
  85. package/src/common/metadata/resource.metadata.d.ts +8 -0
  86. package/src/common/metadata/tool-ui.metadata.d.ts +2 -2
  87. package/src/common/metadata/tool-ui.metadata.js +1 -1
  88. package/src/common/metadata/tool-ui.metadata.js.map +1 -1
  89. package/src/common/metadata/tool.metadata.d.ts +5 -1
  90. package/src/common/metadata/tool.metadata.js.map +1 -1
  91. package/src/common/migrate/auth-transport.migrate.d.ts +62 -0
  92. package/src/common/migrate/auth-transport.migrate.js +140 -0
  93. package/src/common/migrate/auth-transport.migrate.js.map +1 -0
  94. package/src/common/migrate/index.d.ts +1 -0
  95. package/src/common/migrate/index.js +6 -0
  96. package/src/common/migrate/index.js.map +1 -0
  97. package/src/common/schemas/http-output.schema.d.ts +24 -6
  98. package/src/common/schemas/index.d.ts +1 -0
  99. package/src/common/schemas/index.js +1 -0
  100. package/src/common/schemas/index.js.map +1 -1
  101. package/src/common/schemas/session-header.schema.d.ts +16 -0
  102. package/src/common/schemas/session-header.schema.js +42 -0
  103. package/src/common/schemas/session-header.schema.js.map +1 -0
  104. package/src/common/tokens/front-mcp.tokens.js +4 -1
  105. package/src/common/tokens/front-mcp.tokens.js.map +1 -1
  106. package/src/common/types/options/auth.options.d.ts +233 -3
  107. package/src/common/types/options/auth.options.js +29 -40
  108. package/src/common/types/options/auth.options.js.map +1 -1
  109. package/src/common/types/options/index.d.ts +2 -0
  110. package/src/common/types/options/index.js +2 -0
  111. package/src/common/types/options/index.js.map +1 -1
  112. package/src/common/types/options/redis.options.d.ts +190 -0
  113. package/src/common/types/options/redis.options.js +191 -0
  114. package/src/common/types/options/redis.options.js.map +1 -0
  115. package/src/common/types/options/server-info.options.d.ts +4 -0
  116. package/src/common/types/options/transport.options.d.ts +148 -0
  117. package/src/common/types/options/transport.options.js +121 -0
  118. package/src/common/types/options/transport.options.js.map +1 -0
  119. package/src/common/utils/global-config.utils.d.ts +36 -0
  120. package/src/common/utils/global-config.utils.js +44 -0
  121. package/src/common/utils/global-config.utils.js.map +1 -0
  122. package/src/common/utils/index.d.ts +1 -0
  123. package/src/common/utils/index.js +1 -0
  124. package/src/common/utils/index.js.map +1 -1
  125. package/src/completion/flows/complete.flow.d.ts +6 -8
  126. package/src/context/frontmcp-context-storage.d.ts +94 -0
  127. package/src/context/frontmcp-context-storage.js +183 -0
  128. package/src/context/frontmcp-context-storage.js.map +1 -0
  129. package/src/context/frontmcp-context.d.ts +269 -0
  130. package/src/context/frontmcp-context.js +360 -0
  131. package/src/context/frontmcp-context.js.map +1 -0
  132. package/src/context/frontmcp-context.provider.d.ts +43 -0
  133. package/src/context/frontmcp-context.provider.js +61 -0
  134. package/src/context/frontmcp-context.provider.js.map +1 -0
  135. package/src/context/index.d.ts +34 -0
  136. package/src/context/index.js +64 -0
  137. package/src/context/index.js.map +1 -0
  138. package/src/context/request-context-storage.d.ts +89 -0
  139. package/src/context/request-context-storage.js +183 -0
  140. package/src/context/request-context-storage.js.map +1 -0
  141. package/src/context/request-context.d.ts +184 -0
  142. package/src/context/request-context.js +209 -0
  143. package/src/context/request-context.js.map +1 -0
  144. package/src/context/request-context.provider.d.ts +37 -0
  145. package/src/context/request-context.provider.js +51 -0
  146. package/src/context/request-context.provider.js.map +1 -0
  147. package/src/context/session-key.provider.d.ts +45 -0
  148. package/src/context/session-key.provider.js +65 -0
  149. package/src/context/session-key.provider.js.map +1 -0
  150. package/src/context/trace-context.d.ts +43 -0
  151. package/src/context/trace-context.js +142 -0
  152. package/src/context/trace-context.js.map +1 -0
  153. package/src/errors/index.d.ts +1 -1
  154. package/src/errors/index.js +4 -1
  155. package/src/errors/index.js.map +1 -1
  156. package/src/errors/mcp.error.d.ts +16 -0
  157. package/src/errors/mcp.error.js +29 -1
  158. package/src/errors/mcp.error.js.map +1 -1
  159. package/src/flows/flow.instance.d.ts +16 -0
  160. package/src/flows/flow.instance.js +166 -80
  161. package/src/flows/flow.instance.js.map +1 -1
  162. package/src/flows/flow.registry.d.ts +5 -0
  163. package/src/flows/flow.registry.js +45 -3
  164. package/src/flows/flow.registry.js.map +1 -1
  165. package/src/front-mcp/front-mcp.d.ts +12 -0
  166. package/src/front-mcp/front-mcp.js +22 -3
  167. package/src/front-mcp/front-mcp.js.map +1 -1
  168. package/src/front-mcp/front-mcp.providers.d.ts +474 -1
  169. package/src/front-mcp/front-mcp.providers.js +2 -1
  170. package/src/front-mcp/front-mcp.providers.js.map +1 -1
  171. package/src/front-mcp/index.d.ts +1 -0
  172. package/src/front-mcp/index.js +3 -0
  173. package/src/front-mcp/index.js.map +1 -1
  174. package/src/front-mcp/serverless-handler.d.ts +28 -0
  175. package/src/front-mcp/serverless-handler.js +61 -0
  176. package/src/front-mcp/serverless-handler.js.map +1 -0
  177. package/src/hooks/hooks.utils.d.ts +1 -1
  178. package/src/hooks/hooks.utils.js +10 -3
  179. package/src/hooks/hooks.utils.js.map +1 -1
  180. package/src/index.d.ts +9 -5
  181. package/src/index.js +21 -1
  182. package/src/index.js.map +1 -1
  183. package/src/logger/instances/instance.logger.js +0 -1
  184. package/src/logger/instances/instance.logger.js.map +1 -1
  185. package/src/logging/flows/set-level.flow.d.ts +6 -8
  186. package/src/notification/notification.service.js +5 -1
  187. package/src/notification/notification.service.js.map +1 -1
  188. package/src/prompt/flows/get-prompt.flow.d.ts +14 -8
  189. package/src/prompt/flows/prompts-list.flow.d.ts +8 -7
  190. package/src/provider/provider.registry.d.ts +97 -5
  191. package/src/provider/provider.registry.js +306 -9
  192. package/src/provider/provider.registry.js.map +1 -1
  193. package/src/provider/provider.types.d.ts +21 -3
  194. package/src/provider/provider.types.js.map +1 -1
  195. package/src/resource/flows/read-resource.flow.d.ts +8 -9
  196. package/src/resource/flows/resource-templates-list.flow.d.ts +8 -7
  197. package/src/resource/flows/resources-list.flow.d.ts +8 -7
  198. package/src/resource/flows/subscribe-resource.flow.d.ts +6 -8
  199. package/src/resource/flows/unsubscribe-resource.flow.d.ts +6 -8
  200. package/src/scope/flows/http.request.flow.js +43 -7
  201. package/src/scope/flows/http.request.flow.js.map +1 -1
  202. package/src/scope/scope.instance.js +12 -5
  203. package/src/scope/scope.instance.js.map +1 -1
  204. package/src/server/adapters/base.host.adapter.d.ts +9 -0
  205. package/src/server/adapters/base.host.adapter.js.map +1 -1
  206. package/src/server/adapters/express.host.adapter.d.ts +12 -0
  207. package/src/server/adapters/express.host.adapter.js +21 -1
  208. package/src/server/adapters/express.host.adapter.js.map +1 -1
  209. package/src/server/server.instance.d.ts +3 -0
  210. package/src/server/server.instance.js +14 -7
  211. package/src/server/server.instance.js.map +1 -1
  212. package/src/store/adapters/store.vercel-kv.adapter.d.ts +86 -0
  213. package/src/store/adapters/store.vercel-kv.adapter.js +155 -0
  214. package/src/store/adapters/store.vercel-kv.adapter.js.map +1 -0
  215. package/src/store/index.d.ts +2 -0
  216. package/src/store/index.js +2 -0
  217. package/src/store/index.js.map +1 -1
  218. package/src/store/store.factory.d.ts +86 -0
  219. package/src/store/store.factory.js +194 -0
  220. package/src/store/store.factory.js.map +1 -0
  221. package/src/tool/flows/call-tool.flow.d.ts +38 -19
  222. package/src/tool/flows/call-tool.flow.js +240 -194
  223. package/src/tool/flows/call-tool.flow.js.map +1 -1
  224. package/src/tool/flows/tools-list.flow.d.ts +14 -17
  225. package/src/tool/flows/tools-list.flow.js +84 -33
  226. package/src/tool/flows/tools-list.flow.js.map +1 -1
  227. package/src/tool/tool.instance.d.ts +1 -4
  228. package/src/tool/ui/index.d.ts +4 -4
  229. package/src/tool/ui/index.js +4 -4
  230. package/src/tool/ui/index.js.map +1 -1
  231. package/src/tool/ui/platform-adapters.d.ts +2 -2
  232. package/src/tool/ui/platform-adapters.js +3 -3
  233. package/src/tool/ui/platform-adapters.js.map +1 -1
  234. package/src/tool/ui/template-helpers.d.ts +5 -7
  235. package/src/tool/ui/template-helpers.js +9 -26
  236. package/src/tool/ui/template-helpers.js.map +1 -1
  237. package/src/tool/ui/ui-resource.handler.d.ts +1 -1
  238. package/src/tool/ui/ui-resource.handler.js +5 -5
  239. package/src/tool/ui/ui-resource.handler.js.map +1 -1
  240. package/src/transport/adapters/transport.streamable-http.adapter.js +1 -0
  241. package/src/transport/adapters/transport.streamable-http.adapter.js.map +1 -1
  242. package/src/transport/flows/handle.sse.flow.js +9 -2
  243. package/src/transport/flows/handle.sse.flow.js.map +1 -1
  244. package/src/transport/flows/handle.streamable-http.flow.js +63 -6
  245. package/src/transport/flows/handle.streamable-http.flow.js.map +1 -1
  246. package/src/transport/mcp-handlers/complete-request.handler.d.ts +4 -15
  247. package/src/transport/mcp-handlers/get-prompt-request.handler.d.ts +5 -15
  248. package/src/transport/mcp-handlers/index.d.ts +67 -195
  249. package/src/transport/mcp-handlers/initialize-request.handler.js +12 -2
  250. package/src/transport/mcp-handlers/initialize-request.handler.js.map +1 -1
  251. package/src/transport/mcp-handlers/list-prompts-request.handler.d.ts +5 -15
  252. package/src/transport/mcp-handlers/list-resource-templates-request.handler.d.ts +5 -15
  253. package/src/transport/mcp-handlers/list-resources-request.handler.d.ts +5 -15
  254. package/src/transport/mcp-handlers/list-tools-request.handler.d.ts +5 -15
  255. package/src/transport/mcp-handlers/logging-set-level-request.handler.d.ts +3 -14
  256. package/src/transport/mcp-handlers/read-resource-request.handler.d.ts +4 -15
  257. package/src/transport/mcp-handlers/subscribe-request.handler.d.ts +3 -14
  258. package/src/transport/mcp-handlers/unsubscribe-request.handler.d.ts +3 -14
  259. package/src/transport/transport.registry.d.ts +72 -4
  260. package/src/transport/transport.registry.js +342 -11
  261. package/src/transport/transport.registry.js.map +1 -1
  262. package/src/auth/ui/htmx-templates.js.map +0 -1
  263. package/src/common/providers/session.provider.d.ts +0 -13
  264. package/src/common/providers/session.provider.js +0 -27
  265. 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
- // If not detected from capabilities, use client info detection
55
- const clientInfoPlatform = scope.notifications.setClientInfo(sessionId, {
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":"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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 } from '../../notification';\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 // If not detected from capabilities, use client info detection\n const clientInfoPlatform = scope.notifications.setClientInfo(sessionId, {\n name: request.params.clientInfo.name,\n version: request.params.clientInfo.version,\n });\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 } 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 }\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"]}
1
+ {"version":3,"file":"initialize-request.handler.js","sourceRoot":"","sources":["../../../../src/transport/mcp-handlers/initialize-request.handler.ts"],"names":[],"mappings":";;AAoBA,2CAwGC;AA5HD,iEAAkH;AAClH,iEAA0G;AAE1G,+HAAyH;AAEzH,qDAAsF;AACtF,gFAAiF;AAEjF;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,aAAqB;IAC/C,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC5B,MAAM,wEAAiC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IACrE,CAAC;IACD,kEAAkE;AACpE,CAAC;AACD,SAAwB,wBAAwB,CAAC,EAC/C,aAAa,EACb,KAAK,GACa;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAExD,OAAO;QACL,aAAa,EAAE,kCAAuB;QACtC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAA6B,EAAE;YACzD,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;gBAC1C,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI;gBAC3C,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO;gBACjD,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe;gBAC/C,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY;gBAC9C,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aACjD,CAAC,CAAC;YAEH,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAEnD,wEAAwE;YACxE,kEAAkE;YAClE,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC;YAC1C,IAAI,gBAAgB,GAAsD,SAAS,CAAC;YAEpF,IAAI,SAAS,EAAE,CAAC;gBACd,wCAAwC;gBACxC,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;oBAChC,kEAAkE;oBAClE,MAAM,kBAAkB,GAAuB;wBAC7C,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,KAAoC;wBACvE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,QAA0C;wBAChF,qEAAqE;wBACrE,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,YAAkD;qBAC7F,CAAC;oBACF,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;oBAEzE,4EAA4E;oBAC5E,gBAAgB,GAAG,IAAA,6CAA8B,EAAC,kBAAkB,CAAC,CAAC;gBACxE,CAAC;gBAED,0DAA0D;gBAC1D,iEAAiE;gBACjE,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;oBAC9B,gGAAgG;oBAChG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,EAAE;wBAC3C,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI;wBACpC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO;qBAC3C,CAAC,CAAC;oBAEH,iFAAiF;oBACjF,wDAAwD;oBACxD,MAAM,uBAAuB,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;oBAC5E,MAAM,kBAAkB,GAAG,IAAA,+BAAgB,EAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;oBAEhG,0EAA0E;oBAC1E,MAAM,aAAa,GAAG,gBAAgB,IAAI,kBAAkB,CAAC;oBAE7D,6DAA6D;oBAC7D,mFAAmF;oBACnF,IAAI,aAAa,IAAI,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;wBACpD,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,GAAG,aAAa,CAAC;wBAE3D,qFAAqF;wBACrF,wFAAwF;wBACxF,IAAA,uCAAoB,EAAC,SAAS,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC,CAAC;oBACnE,CAAC;gBACH,CAAC;qBAAM,IAAI,gBAAgB,IAAI,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;oBAC9D,yEAAyE;oBACzE,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,GAAG,gBAAgB,CAAC;oBAE9D,2BAA2B;oBAC3B,IAAA,uCAAoB,EAAC,SAAS,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;YAED,+CAA+C;YAC/C,iGAAiG;YACjG,kFAAkF;YAClF,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;YACxD,MAAM,eAAe,GAAG,sCAA2B,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAC5E,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,kCAAuB,CAAC;YAE5B,MAAM,MAAM,GAAqB;gBAC/B,YAAY,EAAE,aAAa,CAAC,YAAa;gBACzC,YAAY,EAAE,aAAa,CAAC,YAAY;gBACxC,UAAU,EAAE;oBACV,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,OAAO;oBAChB,KAAK,EAAE,gBAAgB;iBACxB;gBACD,eAAe;aAChB,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;gBAC1C,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC;gBACjD,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI;gBAClC,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aACjD,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC","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,34 +3,23 @@ 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>>;
10
6
  _meta: import("zod").ZodOptional<import("zod").ZodObject<{
11
7
  progressToken: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
12
8
  "io.modelcontextprotocol/related-task": import("zod").ZodOptional<import("zod").ZodObject<{
13
9
  taskId: import("zod").ZodString;
14
- }, import("zod/v4/core").$loose>>;
10
+ }, import("zod/v4/core").$strip>>;
15
11
  }, import("zod/v4/core").$loose>>;
16
12
  cursor: import("zod").ZodOptional<import("zod").ZodString>;
17
- }, import("zod/v4/core").$loose>>;
13
+ }, import("zod/v4/core").$strip>>;
18
14
  method: import("zod").ZodLiteral<"prompts/list">;
19
15
  }, import("zod/v4/core").$strip>;
20
16
  handler: (request: ListPromptsRequest, ctx: import("./mcp-handlers.types").McpRequestHandler<{
21
17
  method: "prompts/list";
22
18
  params?: {
23
- [x: string]: unknown;
24
- task?: {
25
- [x: string]: unknown;
26
- ttl?: number | null | undefined;
27
- pollInterval?: number | undefined;
28
- } | undefined;
29
19
  _meta?: {
30
20
  [x: string]: unknown;
31
21
  progressToken?: string | number | undefined;
32
22
  "io.modelcontextprotocol/related-task"?: {
33
- [x: string]: unknown;
34
23
  taskId: string;
35
24
  } | undefined;
36
25
  } | undefined;
@@ -42,8 +31,8 @@ export default function ListPromptsRequestHandler({ scope }: McpHandlerOptions):
42
31
  [x: string]: unknown;
43
32
  _meta?: {
44
33
  [x: string]: unknown;
34
+ progressToken?: string | number | undefined;
45
35
  "io.modelcontextprotocol/related-task"?: {
46
- [x: string]: unknown;
47
36
  taskId: string;
48
37
  } | undefined;
49
38
  } | undefined;
@@ -65,13 +54,14 @@ export default function ListPromptsRequestHandler({ scope }: McpHandlerOptions):
65
54
  src: string;
66
55
  mimeType?: string | undefined;
67
56
  sizes?: string[] | undefined;
57
+ theme?: "light" | "dark" | undefined;
68
58
  }[] | undefined;
69
59
  title?: string | undefined;
70
60
  }[];
71
61
  _meta?: {
72
62
  [x: string]: unknown;
63
+ progressToken?: string | number | undefined;
73
64
  "io.modelcontextprotocol/related-task"?: {
74
- [x: string]: unknown;
75
65
  taskId: string;
76
66
  } | undefined;
77
67
  } | undefined;
@@ -3,34 +3,23 @@ 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>>;
10
6
  _meta: import("zod").ZodOptional<import("zod").ZodObject<{
11
7
  progressToken: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
12
8
  "io.modelcontextprotocol/related-task": import("zod").ZodOptional<import("zod").ZodObject<{
13
9
  taskId: import("zod").ZodString;
14
- }, import("zod/v4/core").$loose>>;
10
+ }, import("zod/v4/core").$strip>>;
15
11
  }, import("zod/v4/core").$loose>>;
16
12
  cursor: import("zod").ZodOptional<import("zod").ZodString>;
17
- }, import("zod/v4/core").$loose>>;
13
+ }, import("zod/v4/core").$strip>>;
18
14
  method: import("zod").ZodLiteral<"resources/templates/list">;
19
15
  }, import("zod/v4/core").$strip>;
20
16
  handler: (request: ListResourceTemplatesRequest, ctx: import("./mcp-handlers.types").McpRequestHandler<{
21
17
  method: "resources/templates/list";
22
18
  params?: {
23
- [x: string]: unknown;
24
- task?: {
25
- [x: string]: unknown;
26
- ttl?: number | null | undefined;
27
- pollInterval?: number | undefined;
28
- } | undefined;
29
19
  _meta?: {
30
20
  [x: string]: unknown;
31
21
  progressToken?: string | number | undefined;
32
22
  "io.modelcontextprotocol/related-task"?: {
33
- [x: string]: unknown;
34
23
  taskId: string;
35
24
  } | undefined;
36
25
  } | undefined;
@@ -42,8 +31,8 @@ export default function listResourceTemplatesRequestHandler({ scope }: McpHandle
42
31
  [x: string]: unknown;
43
32
  _meta?: {
44
33
  [x: string]: unknown;
34
+ progressToken?: string | number | undefined;
45
35
  "io.modelcontextprotocol/related-task"?: {
46
- [x: string]: unknown;
47
36
  taskId: string;
48
37
  } | undefined;
49
38
  } | undefined;
@@ -67,13 +56,14 @@ export default function listResourceTemplatesRequestHandler({ scope }: McpHandle
67
56
  src: string;
68
57
  mimeType?: string | undefined;
69
58
  sizes?: string[] | undefined;
59
+ theme?: "light" | "dark" | undefined;
70
60
  }[] | undefined;
71
61
  title?: string | undefined;
72
62
  }[];
73
63
  _meta?: {
74
64
  [x: string]: unknown;
65
+ progressToken?: string | number | undefined;
75
66
  "io.modelcontextprotocol/related-task"?: {
76
- [x: string]: unknown;
77
67
  taskId: string;
78
68
  } | undefined;
79
69
  } | undefined;
@@ -3,34 +3,23 @@ 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>>;
10
6
  _meta: import("zod").ZodOptional<import("zod").ZodObject<{
11
7
  progressToken: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
12
8
  "io.modelcontextprotocol/related-task": import("zod").ZodOptional<import("zod").ZodObject<{
13
9
  taskId: import("zod").ZodString;
14
- }, import("zod/v4/core").$loose>>;
10
+ }, import("zod/v4/core").$strip>>;
15
11
  }, import("zod/v4/core").$loose>>;
16
12
  cursor: import("zod").ZodOptional<import("zod").ZodString>;
17
- }, import("zod/v4/core").$loose>>;
13
+ }, import("zod/v4/core").$strip>>;
18
14
  method: import("zod").ZodLiteral<"resources/list">;
19
15
  }, import("zod/v4/core").$strip>;
20
16
  handler: (request: ListResourcesRequest, ctx: import("./mcp-handlers.types").McpRequestHandler<{
21
17
  method: "resources/list";
22
18
  params?: {
23
- [x: string]: unknown;
24
- task?: {
25
- [x: string]: unknown;
26
- ttl?: number | null | undefined;
27
- pollInterval?: number | undefined;
28
- } | undefined;
29
19
  _meta?: {
30
20
  [x: string]: unknown;
31
21
  progressToken?: string | number | undefined;
32
22
  "io.modelcontextprotocol/related-task"?: {
33
- [x: string]: unknown;
34
23
  taskId: string;
35
24
  } | undefined;
36
25
  } | undefined;
@@ -42,8 +31,8 @@ export default function listResourcesRequestHandler({ scope }: McpHandlerOptions
42
31
  [x: string]: unknown;
43
32
  _meta?: {
44
33
  [x: string]: unknown;
34
+ progressToken?: string | number | undefined;
45
35
  "io.modelcontextprotocol/related-task"?: {
46
- [x: string]: unknown;
47
36
  taskId: string;
48
37
  } | undefined;
49
38
  } | undefined;
@@ -67,13 +56,14 @@ export default function listResourcesRequestHandler({ scope }: McpHandlerOptions
67
56
  src: string;
68
57
  mimeType?: string | undefined;
69
58
  sizes?: string[] | undefined;
59
+ theme?: "light" | "dark" | undefined;
70
60
  }[] | undefined;
71
61
  title?: string | undefined;
72
62
  }[];
73
63
  _meta?: {
74
64
  [x: string]: unknown;
65
+ progressToken?: string | number | undefined;
75
66
  "io.modelcontextprotocol/related-task"?: {
76
- [x: string]: unknown;
77
67
  taskId: string;
78
68
  } | undefined;
79
69
  } | undefined;
@@ -3,34 +3,23 @@ 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>>;
10
6
  _meta: import("zod").ZodOptional<import("zod").ZodObject<{
11
7
  progressToken: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
12
8
  "io.modelcontextprotocol/related-task": import("zod").ZodOptional<import("zod").ZodObject<{
13
9
  taskId: import("zod").ZodString;
14
- }, import("zod/v4/core").$loose>>;
10
+ }, import("zod/v4/core").$strip>>;
15
11
  }, import("zod/v4/core").$loose>>;
16
12
  cursor: import("zod").ZodOptional<import("zod").ZodString>;
17
- }, import("zod/v4/core").$loose>>;
13
+ }, import("zod/v4/core").$strip>>;
18
14
  method: import("zod").ZodLiteral<"tools/list">;
19
15
  }, import("zod/v4/core").$strip>;
20
16
  handler: (request: ListToolsRequest, ctx: import("./mcp-handlers.types").McpRequestHandler<{
21
17
  method: "tools/list";
22
18
  params?: {
23
- [x: string]: unknown;
24
- task?: {
25
- [x: string]: unknown;
26
- ttl?: number | null | undefined;
27
- pollInterval?: number | undefined;
28
- } | undefined;
29
19
  _meta?: {
30
20
  [x: string]: unknown;
31
21
  progressToken?: string | number | undefined;
32
22
  "io.modelcontextprotocol/related-task"?: {
33
- [x: string]: unknown;
34
23
  taskId: string;
35
24
  } | undefined;
36
25
  } | undefined;
@@ -42,8 +31,8 @@ export default function ListToolsRequestHandler({ scope, }: McpHandlerOptions):
42
31
  [x: string]: unknown;
43
32
  _meta?: {
44
33
  [x: string]: unknown;
34
+ progressToken?: string | number | undefined;
45
35
  "io.modelcontextprotocol/related-task"?: {
46
- [x: string]: unknown;
47
36
  taskId: string;
48
37
  } | undefined;
49
38
  } | undefined;
@@ -80,13 +69,14 @@ export default function ListToolsRequestHandler({ scope, }: McpHandlerOptions):
80
69
  src: string;
81
70
  mimeType?: string | undefined;
82
71
  sizes?: string[] | undefined;
72
+ theme?: "light" | "dark" | undefined;
83
73
  }[] | undefined;
84
74
  title?: string | undefined;
85
75
  }[];
86
76
  _meta?: {
87
77
  [x: string]: unknown;
78
+ progressToken?: string | number | undefined;
88
79
  "io.modelcontextprotocol/related-task"?: {
89
- [x: string]: unknown;
90
80
  taskId: string;
91
81
  } | undefined;
92
82
  } | undefined;
@@ -9,15 +9,11 @@ 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>>;
16
12
  _meta: import("zod").ZodOptional<import("zod").ZodObject<{
17
13
  progressToken: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
18
14
  "io.modelcontextprotocol/related-task": import("zod").ZodOptional<import("zod").ZodObject<{
19
15
  taskId: import("zod").ZodString;
20
- }, import("zod/v4/core").$loose>>;
16
+ }, import("zod/v4/core").$strip>>;
21
17
  }, import("zod/v4/core").$loose>>;
22
18
  level: import("zod").ZodEnum<{
23
19
  error: "error";
@@ -29,23 +25,16 @@ export default function LoggingSetLevelRequestHandler({ scope }: McpHandlerOptio
29
25
  alert: "alert";
30
26
  emergency: "emergency";
31
27
  }>;
32
- }, import("zod/v4/core").$loose>;
28
+ }, import("zod/v4/core").$strip>;
33
29
  }, import("zod/v4/core").$strip>;
34
30
  handler: (request: SetLevelRequest, ctx: import("./mcp-handlers.types").McpRequestHandler<{
35
31
  method: "logging/setLevel";
36
32
  params: {
37
- [x: string]: unknown;
38
33
  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;
44
34
  _meta?: {
45
35
  [x: string]: unknown;
46
36
  progressToken?: string | number | undefined;
47
37
  "io.modelcontextprotocol/related-task"?: {
48
- [x: string]: unknown;
49
38
  taskId: string;
50
39
  } | undefined;
51
40
  } | undefined;
@@ -56,8 +45,8 @@ export default function LoggingSetLevelRequestHandler({ scope }: McpHandlerOptio
56
45
  [x: string]: unknown;
57
46
  _meta?: {
58
47
  [x: string]: unknown;
48
+ progressToken?: string | number | undefined;
59
49
  "io.modelcontextprotocol/related-task"?: {
60
- [x: string]: unknown;
61
50
  taskId: string;
62
51
  } | undefined;
63
52
  } | undefined;
@@ -4,34 +4,23 @@ 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>>;
11
7
  _meta: import("zod").ZodOptional<import("zod").ZodObject<{
12
8
  progressToken: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
13
9
  "io.modelcontextprotocol/related-task": import("zod").ZodOptional<import("zod").ZodObject<{
14
10
  taskId: import("zod").ZodString;
15
- }, import("zod/v4/core").$loose>>;
11
+ }, import("zod/v4/core").$strip>>;
16
12
  }, import("zod/v4/core").$loose>>;
17
13
  uri: import("zod").ZodString;
18
- }, import("zod/v4/core").$loose>;
14
+ }, import("zod/v4/core").$strip>;
19
15
  }, import("zod/v4/core").$strip>;
20
16
  handler: (request: ReadResourceRequest, ctx: import("./mcp-handlers.types").McpRequestHandler<{
21
17
  method: "resources/read";
22
18
  params: {
23
- [x: string]: unknown;
24
19
  uri: string;
25
- task?: {
26
- [x: string]: unknown;
27
- ttl?: number | null | undefined;
28
- pollInterval?: number | undefined;
29
- } | undefined;
30
20
  _meta?: {
31
21
  [x: string]: unknown;
32
22
  progressToken?: string | number | undefined;
33
23
  "io.modelcontextprotocol/related-task"?: {
34
- [x: string]: unknown;
35
24
  taskId: string;
36
25
  } | undefined;
37
26
  } | undefined;
@@ -42,8 +31,8 @@ export default function readResourceRequestHandler({ scope }: McpHandlerOptions)
42
31
  [x: string]: unknown;
43
32
  _meta?: {
44
33
  [x: string]: unknown;
34
+ progressToken?: string | number | undefined;
45
35
  "io.modelcontextprotocol/related-task"?: {
46
- [x: string]: unknown;
47
36
  taskId: string;
48
37
  } | undefined;
49
38
  } | undefined;
@@ -63,8 +52,8 @@ export default function readResourceRequestHandler({ scope }: McpHandlerOptions)
63
52
  })[];
64
53
  _meta?: {
65
54
  [x: string]: unknown;
55
+ progressToken?: string | number | undefined;
66
56
  "io.modelcontextprotocol/related-task"?: {
67
- [x: string]: unknown;
68
57
  taskId: string;
69
58
  } | undefined;
70
59
  } | undefined;
@@ -9,34 +9,23 @@ 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>>;
16
12
  _meta: import("zod").ZodOptional<import("zod").ZodObject<{
17
13
  progressToken: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
18
14
  "io.modelcontextprotocol/related-task": import("zod").ZodOptional<import("zod").ZodObject<{
19
15
  taskId: import("zod").ZodString;
20
- }, import("zod/v4/core").$loose>>;
16
+ }, import("zod/v4/core").$strip>>;
21
17
  }, import("zod/v4/core").$loose>>;
22
18
  uri: import("zod").ZodString;
23
- }, import("zod/v4/core").$loose>;
19
+ }, import("zod/v4/core").$strip>;
24
20
  }, import("zod/v4/core").$strip>;
25
21
  handler: (request: SubscribeRequest, ctx: import("./mcp-handlers.types").McpRequestHandler<{
26
22
  method: "resources/subscribe";
27
23
  params: {
28
- [x: string]: unknown;
29
24
  uri: string;
30
- task?: {
31
- [x: string]: unknown;
32
- ttl?: number | null | undefined;
33
- pollInterval?: number | undefined;
34
- } | undefined;
35
25
  _meta?: {
36
26
  [x: string]: unknown;
37
27
  progressToken?: string | number | undefined;
38
28
  "io.modelcontextprotocol/related-task"?: {
39
- [x: string]: unknown;
40
29
  taskId: string;
41
30
  } | undefined;
42
31
  } | undefined;
@@ -47,8 +36,8 @@ export default function SubscribeRequestHandler({ scope }: McpHandlerOptions): {
47
36
  [x: string]: unknown;
48
37
  _meta?: {
49
38
  [x: string]: unknown;
39
+ progressToken?: string | number | undefined;
50
40
  "io.modelcontextprotocol/related-task"?: {
51
- [x: string]: unknown;
52
41
  taskId: string;
53
42
  } | undefined;
54
43
  } | undefined;
@@ -9,34 +9,23 @@ 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>>;
16
12
  _meta: import("zod").ZodOptional<import("zod").ZodObject<{
17
13
  progressToken: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>;
18
14
  "io.modelcontextprotocol/related-task": import("zod").ZodOptional<import("zod").ZodObject<{
19
15
  taskId: import("zod").ZodString;
20
- }, import("zod/v4/core").$loose>>;
16
+ }, import("zod/v4/core").$strip>>;
21
17
  }, import("zod/v4/core").$loose>>;
22
18
  uri: import("zod").ZodString;
23
- }, import("zod/v4/core").$loose>;
19
+ }, import("zod/v4/core").$strip>;
24
20
  }, import("zod/v4/core").$strip>;
25
21
  handler: (request: UnsubscribeRequest, ctx: import("./mcp-handlers.types").McpRequestHandler<{
26
22
  method: "resources/unsubscribe";
27
23
  params: {
28
- [x: string]: unknown;
29
24
  uri: string;
30
- task?: {
31
- [x: string]: unknown;
32
- ttl?: number | null | undefined;
33
- pollInterval?: number | undefined;
34
- } | undefined;
35
25
  _meta?: {
36
26
  [x: string]: unknown;
37
27
  progressToken?: string | number | undefined;
38
28
  "io.modelcontextprotocol/related-task"?: {
39
- [x: string]: unknown;
40
29
  taskId: string;
41
30
  } | undefined;
42
31
  } | undefined;
@@ -47,8 +36,8 @@ export default function UnsubscribeRequestHandler({ scope }: McpHandlerOptions):
47
36
  [x: string]: unknown;
48
37
  _meta?: {
49
38
  [x: string]: unknown;
39
+ progressToken?: string | number | undefined;
50
40
  "io.modelcontextprotocol/related-task"?: {
51
- [x: string]: unknown;
52
41
  taskId: string;
53
42
  } | undefined;
54
43
  } | undefined;