mcp-server-framework 1.0.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/CHANGELOG.md +174 -0
- package/LICENSE-GPL.md +219 -0
- package/LICENSE.md +187 -0
- package/README.md +439 -0
- package/build/config/config-cache.d.ts +120 -0
- package/build/config/config-cache.d.ts.map +1 -0
- package/build/config/config-cache.js +310 -0
- package/build/config/config-cache.js.map +1 -0
- package/build/config/env.d.ts +476 -0
- package/build/config/env.d.ts.map +1 -0
- package/build/config/env.js +441 -0
- package/build/config/env.js.map +1 -0
- package/build/config/extensions.d.ts +107 -0
- package/build/config/extensions.d.ts.map +1 -0
- package/build/config/extensions.js +152 -0
- package/build/config/extensions.js.map +1 -0
- package/build/config/file/index.d.ts +8 -0
- package/build/config/file/index.d.ts.map +1 -0
- package/build/config/file/index.js +10 -0
- package/build/config/file/index.js.map +1 -0
- package/build/config/file/loader.d.ts +31 -0
- package/build/config/file/loader.d.ts.map +1 -0
- package/build/config/file/loader.js +313 -0
- package/build/config/file/loader.js.map +1 -0
- package/build/config/file/schema.d.ts +583 -0
- package/build/config/file/schema.d.ts.map +1 -0
- package/build/config/file/schema.js +388 -0
- package/build/config/file/schema.js.map +1 -0
- package/build/config/index.d.ts +15 -0
- package/build/config/index.d.ts.map +1 -0
- package/build/config/index.js +27 -0
- package/build/config/index.js.map +1 -0
- package/build/config/startup-warnings.d.ts +46 -0
- package/build/config/startup-warnings.d.ts.map +1 -0
- package/build/config/startup-warnings.js +61 -0
- package/build/config/startup-warnings.js.map +1 -0
- package/build/connection/connection-state.d.ts +196 -0
- package/build/connection/connection-state.d.ts.map +1 -0
- package/build/connection/connection-state.js +426 -0
- package/build/connection/connection-state.js.map +1 -0
- package/build/connection/core/base.d.ts +43 -0
- package/build/connection/core/base.d.ts.map +1 -0
- package/build/connection/core/base.js +82 -0
- package/build/connection/core/base.js.map +1 -0
- package/build/connection/core/constants.d.ts +121 -0
- package/build/connection/core/constants.d.ts.map +1 -0
- package/build/connection/core/constants.js +151 -0
- package/build/connection/core/constants.js.map +1 -0
- package/build/connection/core/index.d.ts +13 -0
- package/build/connection/core/index.d.ts.map +1 -0
- package/build/connection/core/index.js +14 -0
- package/build/connection/core/index.js.map +1 -0
- package/build/connection/core/types.d.ts +102 -0
- package/build/connection/core/types.d.ts.map +1 -0
- package/build/connection/core/types.js +31 -0
- package/build/connection/core/types.js.map +1 -0
- package/build/connection/index.d.ts +19 -0
- package/build/connection/index.d.ts.map +1 -0
- package/build/connection/index.js +22 -0
- package/build/connection/index.js.map +1 -0
- package/build/connection/types.d.ts +125 -0
- package/build/connection/types.d.ts.map +1 -0
- package/build/connection/types.js +39 -0
- package/build/connection/types.js.map +1 -0
- package/build/errors/categories/auth.d.ts +59 -0
- package/build/errors/categories/auth.d.ts.map +1 -0
- package/build/errors/categories/auth.js +111 -0
- package/build/errors/categories/auth.js.map +1 -0
- package/build/errors/categories/connection.d.ts +70 -0
- package/build/errors/categories/connection.d.ts.map +1 -0
- package/build/errors/categories/connection.js +120 -0
- package/build/errors/categories/connection.js.map +1 -0
- package/build/errors/categories/index.d.ts +14 -0
- package/build/errors/categories/index.d.ts.map +1 -0
- package/build/errors/categories/index.js +20 -0
- package/build/errors/categories/index.js.map +1 -0
- package/build/errors/categories/operation.d.ts +83 -0
- package/build/errors/categories/operation.d.ts.map +1 -0
- package/build/errors/categories/operation.js +149 -0
- package/build/errors/categories/operation.js.map +1 -0
- package/build/errors/categories/protocol.d.ts +68 -0
- package/build/errors/categories/protocol.d.ts.map +1 -0
- package/build/errors/categories/protocol.js +135 -0
- package/build/errors/categories/protocol.js.map +1 -0
- package/build/errors/categories/session.d.ts +50 -0
- package/build/errors/categories/session.d.ts.map +1 -0
- package/build/errors/categories/session.js +97 -0
- package/build/errors/categories/session.js.map +1 -0
- package/build/errors/categories/system.d.ts +95 -0
- package/build/errors/categories/system.d.ts.map +1 -0
- package/build/errors/categories/system.js +190 -0
- package/build/errors/categories/system.js.map +1 -0
- package/build/errors/categories/transport.d.ts +70 -0
- package/build/errors/categories/transport.d.ts.map +1 -0
- package/build/errors/categories/transport.js +148 -0
- package/build/errors/categories/transport.js.map +1 -0
- package/build/errors/categories/validation.d.ts +140 -0
- package/build/errors/categories/validation.d.ts.map +1 -0
- package/build/errors/categories/validation.js +311 -0
- package/build/errors/categories/validation.js.map +1 -0
- package/build/errors/core/base.d.ts +103 -0
- package/build/errors/core/base.d.ts.map +1 -0
- package/build/errors/core/base.js +219 -0
- package/build/errors/core/base.js.map +1 -0
- package/build/errors/core/constants.d.ts +40 -0
- package/build/errors/core/constants.d.ts.map +1 -0
- package/build/errors/core/constants.js +49 -0
- package/build/errors/core/constants.js.map +1 -0
- package/build/errors/core/error-codes.d.ts +72 -0
- package/build/errors/core/error-codes.d.ts.map +1 -0
- package/build/errors/core/error-codes.js +88 -0
- package/build/errors/core/error-codes.js.map +1 -0
- package/build/errors/core/http.d.ts +69 -0
- package/build/errors/core/http.d.ts.map +1 -0
- package/build/errors/core/http.js +106 -0
- package/build/errors/core/http.js.map +1 -0
- package/build/errors/core/index.d.ts +23 -0
- package/build/errors/core/index.d.ts.map +1 -0
- package/build/errors/core/index.js +41 -0
- package/build/errors/core/index.js.map +1 -0
- package/build/errors/core/json-rpc.d.ts +69 -0
- package/build/errors/core/json-rpc.d.ts.map +1 -0
- package/build/errors/core/json-rpc.js +79 -0
- package/build/errors/core/json-rpc.js.map +1 -0
- package/build/errors/core/messages.d.ts +51 -0
- package/build/errors/core/messages.d.ts.map +1 -0
- package/build/errors/core/messages.js +59 -0
- package/build/errors/core/messages.js.map +1 -0
- package/build/errors/core/types.d.ts +80 -0
- package/build/errors/core/types.d.ts.map +1 -0
- package/build/errors/core/types.js +10 -0
- package/build/errors/core/types.js.map +1 -0
- package/build/errors/factory.d.ts +199 -0
- package/build/errors/factory.d.ts.map +1 -0
- package/build/errors/factory.js +244 -0
- package/build/errors/factory.js.map +1 -0
- package/build/errors/index.d.ts +35 -0
- package/build/errors/index.d.ts.map +1 -0
- package/build/errors/index.js +67 -0
- package/build/errors/index.js.map +1 -0
- package/build/index.d.ts +93 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +107 -0
- package/build/index.js.map +1 -0
- package/build/logger/core/constants.d.ts +143 -0
- package/build/logger/core/constants.d.ts.map +1 -0
- package/build/logger/core/constants.js +206 -0
- package/build/logger/core/constants.js.map +1 -0
- package/build/logger/core/context.d.ts +170 -0
- package/build/logger/core/context.d.ts.map +1 -0
- package/build/logger/core/context.js +237 -0
- package/build/logger/core/context.js.map +1 -0
- package/build/logger/core/errors.d.ts +101 -0
- package/build/logger/core/errors.d.ts.map +1 -0
- package/build/logger/core/errors.js +128 -0
- package/build/logger/core/errors.js.map +1 -0
- package/build/logger/core/format.d.ts +40 -0
- package/build/logger/core/format.d.ts.map +1 -0
- package/build/logger/core/format.js +47 -0
- package/build/logger/core/format.js.map +1 -0
- package/build/logger/core/index.d.ts +19 -0
- package/build/logger/core/index.d.ts.map +1 -0
- package/build/logger/core/index.js +47 -0
- package/build/logger/core/index.js.map +1 -0
- package/build/logger/core/trace-context.d.ts +51 -0
- package/build/logger/core/trace-context.d.ts.map +1 -0
- package/build/logger/core/trace-context.js +42 -0
- package/build/logger/core/trace-context.js.map +1 -0
- package/build/logger/core/types.d.ts +233 -0
- package/build/logger/core/types.d.ts.map +1 -0
- package/build/logger/core/types.js +10 -0
- package/build/logger/core/types.js.map +1 -0
- package/build/logger/factory.d.ts +150 -0
- package/build/logger/factory.d.ts.map +1 -0
- package/build/logger/factory.js +236 -0
- package/build/logger/factory.js.map +1 -0
- package/build/logger/formatters/index.d.ts +12 -0
- package/build/logger/formatters/index.d.ts.map +1 -0
- package/build/logger/formatters/index.js +15 -0
- package/build/logger/formatters/index.js.map +1 -0
- package/build/logger/formatters/json-formatter.d.ts +54 -0
- package/build/logger/formatters/json-formatter.d.ts.map +1 -0
- package/build/logger/formatters/json-formatter.js +80 -0
- package/build/logger/formatters/json-formatter.js.map +1 -0
- package/build/logger/formatters/schema.d.ts +230 -0
- package/build/logger/formatters/schema.d.ts.map +1 -0
- package/build/logger/formatters/schema.js +278 -0
- package/build/logger/formatters/schema.js.map +1 -0
- package/build/logger/formatters/text-formatter.d.ts +50 -0
- package/build/logger/formatters/text-formatter.d.ts.map +1 -0
- package/build/logger/formatters/text-formatter.js +93 -0
- package/build/logger/formatters/text-formatter.js.map +1 -0
- package/build/logger/index.d.ts +39 -0
- package/build/logger/index.d.ts.map +1 -0
- package/build/logger/index.js +43 -0
- package/build/logger/index.js.map +1 -0
- package/build/logger/logger.d.ts +278 -0
- package/build/logger/logger.d.ts.map +1 -0
- package/build/logger/logger.js +459 -0
- package/build/logger/logger.js.map +1 -0
- package/build/logger/mcp-logger.d.ts +177 -0
- package/build/logger/mcp-logger.d.ts.map +1 -0
- package/build/logger/mcp-logger.js +294 -0
- package/build/logger/mcp-logger.js.map +1 -0
- package/build/logger/scrubbing/index.d.ts +14 -0
- package/build/logger/scrubbing/index.d.ts.map +1 -0
- package/build/logger/scrubbing/index.js +16 -0
- package/build/logger/scrubbing/index.js.map +1 -0
- package/build/logger/scrubbing/injection-guard.d.ts +69 -0
- package/build/logger/scrubbing/injection-guard.d.ts.map +1 -0
- package/build/logger/scrubbing/injection-guard.js +102 -0
- package/build/logger/scrubbing/injection-guard.js.map +1 -0
- package/build/logger/scrubbing/secret-scrubber.d.ts +72 -0
- package/build/logger/scrubbing/secret-scrubber.d.ts.map +1 -0
- package/build/logger/scrubbing/secret-scrubber.js +177 -0
- package/build/logger/scrubbing/secret-scrubber.js.map +1 -0
- package/build/logger/writers/base-writer.d.ts +45 -0
- package/build/logger/writers/base-writer.d.ts.map +1 -0
- package/build/logger/writers/base-writer.js +41 -0
- package/build/logger/writers/base-writer.js.map +1 -0
- package/build/logger/writers/composite-writer.d.ts +83 -0
- package/build/logger/writers/composite-writer.d.ts.map +1 -0
- package/build/logger/writers/composite-writer.js +121 -0
- package/build/logger/writers/composite-writer.js.map +1 -0
- package/build/logger/writers/console-writer.d.ts +59 -0
- package/build/logger/writers/console-writer.d.ts.map +1 -0
- package/build/logger/writers/console-writer.js +73 -0
- package/build/logger/writers/console-writer.js.map +1 -0
- package/build/logger/writers/file-writer.d.ts +160 -0
- package/build/logger/writers/file-writer.d.ts.map +1 -0
- package/build/logger/writers/file-writer.js +345 -0
- package/build/logger/writers/file-writer.js.map +1 -0
- package/build/logger/writers/index.d.ts +15 -0
- package/build/logger/writers/index.d.ts.map +1 -0
- package/build/logger/writers/index.js +19 -0
- package/build/logger/writers/index.js.map +1 -0
- package/build/mcp/capabilities/apps/define-app.d.ts +68 -0
- package/build/mcp/capabilities/apps/define-app.d.ts.map +1 -0
- package/build/mcp/capabilities/apps/define-app.js +127 -0
- package/build/mcp/capabilities/apps/define-app.js.map +1 -0
- package/build/mcp/capabilities/apps/index.d.ts +10 -0
- package/build/mcp/capabilities/apps/index.d.ts.map +1 -0
- package/build/mcp/capabilities/apps/index.js +10 -0
- package/build/mcp/capabilities/apps/index.js.map +1 -0
- package/build/mcp/capabilities/capabilities.d.ts +24 -0
- package/build/mcp/capabilities/capabilities.d.ts.map +1 -0
- package/build/mcp/capabilities/capabilities.js +50 -0
- package/build/mcp/capabilities/capabilities.js.map +1 -0
- package/build/mcp/capabilities/index.d.ts +17 -0
- package/build/mcp/capabilities/index.d.ts.map +1 -0
- package/build/mcp/capabilities/index.js +20 -0
- package/build/mcp/capabilities/index.js.map +1 -0
- package/build/mcp/capabilities/prompts/define-prompt.d.ts +95 -0
- package/build/mcp/capabilities/prompts/define-prompt.d.ts.map +1 -0
- package/build/mcp/capabilities/prompts/define-prompt.js +109 -0
- package/build/mcp/capabilities/prompts/define-prompt.js.map +1 -0
- package/build/mcp/capabilities/prompts/index.d.ts +10 -0
- package/build/mcp/capabilities/prompts/index.d.ts.map +1 -0
- package/build/mcp/capabilities/prompts/index.js +10 -0
- package/build/mcp/capabilities/prompts/index.js.map +1 -0
- package/build/mcp/capabilities/registry/base-registry.d.ts +95 -0
- package/build/mcp/capabilities/registry/base-registry.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/base-registry.js +149 -0
- package/build/mcp/capabilities/registry/base-registry.js.map +1 -0
- package/build/mcp/capabilities/registry/index.d.ts +16 -0
- package/build/mcp/capabilities/registry/index.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/index.js +34 -0
- package/build/mcp/capabilities/registry/index.js.map +1 -0
- package/build/mcp/capabilities/registry/prompt-registry.d.ts +116 -0
- package/build/mcp/capabilities/registry/prompt-registry.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/prompt-registry.js +232 -0
- package/build/mcp/capabilities/registry/prompt-registry.js.map +1 -0
- package/build/mcp/capabilities/registry/reset.d.ts +30 -0
- package/build/mcp/capabilities/registry/reset.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/reset.js +48 -0
- package/build/mcp/capabilities/registry/reset.js.map +1 -0
- package/build/mcp/capabilities/registry/resource-registry.d.ts +152 -0
- package/build/mcp/capabilities/registry/resource-registry.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/resource-registry.js +430 -0
- package/build/mcp/capabilities/registry/resource-registry.js.map +1 -0
- package/build/mcp/capabilities/registry/scope-enforcement.d.ts +48 -0
- package/build/mcp/capabilities/registry/scope-enforcement.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/scope-enforcement.js +62 -0
- package/build/mcp/capabilities/registry/scope-enforcement.js.map +1 -0
- package/build/mcp/capabilities/registry/task-tool-registry.d.ts +96 -0
- package/build/mcp/capabilities/registry/task-tool-registry.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/task-tool-registry.js +190 -0
- package/build/mcp/capabilities/registry/task-tool-registry.js.map +1 -0
- package/build/mcp/capabilities/registry/tool-registry.d.ts +100 -0
- package/build/mcp/capabilities/registry/tool-registry.d.ts.map +1 -0
- package/build/mcp/capabilities/registry/tool-registry.js +242 -0
- package/build/mcp/capabilities/registry/tool-registry.js.map +1 -0
- package/build/mcp/capabilities/resources/define-resource.d.ts +103 -0
- package/build/mcp/capabilities/resources/define-resource.d.ts.map +1 -0
- package/build/mcp/capabilities/resources/define-resource.js +137 -0
- package/build/mcp/capabilities/resources/define-resource.js.map +1 -0
- package/build/mcp/capabilities/resources/index.d.ts +10 -0
- package/build/mcp/capabilities/resources/index.d.ts.map +1 -0
- package/build/mcp/capabilities/resources/index.js +10 -0
- package/build/mcp/capabilities/resources/index.js.map +1 -0
- package/build/mcp/capabilities/server-capabilities.d.ts +33 -0
- package/build/mcp/capabilities/server-capabilities.d.ts.map +1 -0
- package/build/mcp/capabilities/server-capabilities.js +16 -0
- package/build/mcp/capabilities/server-capabilities.js.map +1 -0
- package/build/mcp/capabilities/tasks/define-task.d.ts +75 -0
- package/build/mcp/capabilities/tasks/define-task.d.ts.map +1 -0
- package/build/mcp/capabilities/tasks/define-task.js +93 -0
- package/build/mcp/capabilities/tasks/define-task.js.map +1 -0
- package/build/mcp/capabilities/tasks/index.d.ts +11 -0
- package/build/mcp/capabilities/tasks/index.d.ts.map +1 -0
- package/build/mcp/capabilities/tasks/index.js +11 -0
- package/build/mcp/capabilities/tasks/index.js.map +1 -0
- package/build/mcp/capabilities/tools/define-tool.d.ts +62 -0
- package/build/mcp/capabilities/tools/define-tool.d.ts.map +1 -0
- package/build/mcp/capabilities/tools/define-tool.js +73 -0
- package/build/mcp/capabilities/tools/define-tool.js.map +1 -0
- package/build/mcp/capabilities/tools/index.d.ts +10 -0
- package/build/mcp/capabilities/tools/index.d.ts.map +1 -0
- package/build/mcp/capabilities/tools/index.js +10 -0
- package/build/mcp/capabilities/tools/index.js.map +1 -0
- package/build/mcp/handlers/index.d.ts +19 -0
- package/build/mcp/handlers/index.d.ts.map +1 -0
- package/build/mcp/handlers/index.js +26 -0
- package/build/mcp/handlers/index.js.map +1 -0
- package/build/mcp/handlers/ping.d.ts +27 -0
- package/build/mcp/handlers/ping.d.ts.map +1 -0
- package/build/mcp/handlers/ping.js +61 -0
- package/build/mcp/handlers/ping.js.map +1 -0
- package/build/mcp/handlers/progress.d.ts +41 -0
- package/build/mcp/handlers/progress.d.ts.map +1 -0
- package/build/mcp/handlers/progress.js +79 -0
- package/build/mcp/handlers/progress.js.map +1 -0
- package/build/mcp/index.d.ts +28 -0
- package/build/mcp/index.d.ts.map +1 -0
- package/build/mcp/index.js +34 -0
- package/build/mcp/index.js.map +1 -0
- package/build/mcp/responses/helpers.d.ts +146 -0
- package/build/mcp/responses/helpers.d.ts.map +1 -0
- package/build/mcp/responses/helpers.js +197 -0
- package/build/mcp/responses/helpers.js.map +1 -0
- package/build/mcp/responses/index.d.ts +9 -0
- package/build/mcp/responses/index.d.ts.map +1 -0
- package/build/mcp/responses/index.js +12 -0
- package/build/mcp/responses/index.js.map +1 -0
- package/build/mcp/types/context.d.ts +371 -0
- package/build/mcp/types/context.d.ts.map +1 -0
- package/build/mcp/types/context.js +17 -0
- package/build/mcp/types/context.js.map +1 -0
- package/build/mcp/types/definition.d.ts +727 -0
- package/build/mcp/types/definition.d.ts.map +1 -0
- package/build/mcp/types/definition.js +29 -0
- package/build/mcp/types/definition.js.map +1 -0
- package/build/mcp/types/handler.d.ts +58 -0
- package/build/mcp/types/handler.d.ts.map +1 -0
- package/build/mcp/types/handler.js +10 -0
- package/build/mcp/types/handler.js.map +1 -0
- package/build/mcp/types/index.d.ts +21 -0
- package/build/mcp/types/index.d.ts.map +1 -0
- package/build/mcp/types/index.js +18 -0
- package/build/mcp/types/index.js.map +1 -0
- package/build/mcp/types/response.d.ts +79 -0
- package/build/mcp/types/response.d.ts.map +1 -0
- package/build/mcp/types/response.js +10 -0
- package/build/mcp/types/response.js.map +1 -0
- package/build/server/auth/auth-context.d.ts +52 -0
- package/build/server/auth/auth-context.d.ts.map +1 -0
- package/build/server/auth/auth-context.js +45 -0
- package/build/server/auth/auth-context.js.map +1 -0
- package/build/server/auth/guards.d.ts +72 -0
- package/build/server/auth/guards.d.ts.map +1 -0
- package/build/server/auth/guards.js +103 -0
- package/build/server/auth/guards.js.map +1 -0
- package/build/server/auth/index.d.ts +21 -0
- package/build/server/auth/index.d.ts.map +1 -0
- package/build/server/auth/index.js +20 -0
- package/build/server/auth/index.js.map +1 -0
- package/build/server/auth/oidc-discovery.d.ts +68 -0
- package/build/server/auth/oidc-discovery.d.ts.map +1 -0
- package/build/server/auth/oidc-discovery.js +234 -0
- package/build/server/auth/oidc-discovery.js.map +1 -0
- package/build/server/auth/oidc-provider.d.ts +96 -0
- package/build/server/auth/oidc-provider.d.ts.map +1 -0
- package/build/server/auth/oidc-provider.js +126 -0
- package/build/server/auth/oidc-provider.js.map +1 -0
- package/build/server/auth/types.d.ts +204 -0
- package/build/server/auth/types.d.ts.map +1 -0
- package/build/server/auth/types.js +29 -0
- package/build/server/auth/types.js.map +1 -0
- package/build/server/auth/upstream-provider.d.ts +161 -0
- package/build/server/auth/upstream-provider.d.ts.map +1 -0
- package/build/server/auth/upstream-provider.js +411 -0
- package/build/server/auth/upstream-provider.js.map +1 -0
- package/build/server/builder/constants.d.ts +45 -0
- package/build/server/builder/constants.d.ts.map +1 -0
- package/build/server/builder/constants.js +54 -0
- package/build/server/builder/constants.js.map +1 -0
- package/build/server/builder/index.d.ts +24 -0
- package/build/server/builder/index.d.ts.map +1 -0
- package/build/server/builder/index.js +25 -0
- package/build/server/builder/index.js.map +1 -0
- package/build/server/builder/primitive-collector.d.ts +24 -0
- package/build/server/builder/primitive-collector.d.ts.map +1 -0
- package/build/server/builder/primitive-collector.js +89 -0
- package/build/server/builder/primitive-collector.js.map +1 -0
- package/build/server/builder/server-builder.d.ts +53 -0
- package/build/server/builder/server-builder.d.ts.map +1 -0
- package/build/server/builder/server-builder.js +132 -0
- package/build/server/builder/server-builder.js.map +1 -0
- package/build/server/builder/types.d.ts +93 -0
- package/build/server/builder/types.d.ts.map +1 -0
- package/build/server/builder/types.js +25 -0
- package/build/server/builder/types.js.map +1 -0
- package/build/server/builder/validation.d.ts +36 -0
- package/build/server/builder/validation.d.ts.map +1 -0
- package/build/server/builder/validation.js +44 -0
- package/build/server/builder/validation.js.map +1 -0
- package/build/server/create-server.d.ts +57 -0
- package/build/server/create-server.d.ts.map +1 -0
- package/build/server/create-server.js +104 -0
- package/build/server/create-server.js.map +1 -0
- package/build/server/http/express-app.d.ts +103 -0
- package/build/server/http/express-app.d.ts.map +1 -0
- package/build/server/http/express-app.js +391 -0
- package/build/server/http/express-app.js.map +1 -0
- package/build/server/http/http-server.d.ts +67 -0
- package/build/server/http/http-server.d.ts.map +1 -0
- package/build/server/http/http-server.js +188 -0
- package/build/server/http/http-server.js.map +1 -0
- package/build/server/http/http-transport.d.ts +33 -0
- package/build/server/http/http-transport.d.ts.map +1 -0
- package/build/server/http/http-transport.js +84 -0
- package/build/server/http/http-transport.js.map +1 -0
- package/build/server/http/index.d.ts +15 -0
- package/build/server/http/index.d.ts.map +1 -0
- package/build/server/http/index.js +11 -0
- package/build/server/http/index.js.map +1 -0
- package/build/server/index.d.ts +25 -0
- package/build/server/index.d.ts.map +1 -0
- package/build/server/index.js +41 -0
- package/build/server/index.js.map +1 -0
- package/build/server/lifecycle.d.ts +114 -0
- package/build/server/lifecycle.d.ts.map +1 -0
- package/build/server/lifecycle.js +30 -0
- package/build/server/lifecycle.js.map +1 -0
- package/build/server/middleware/bearer-auth.d.ts +43 -0
- package/build/server/middleware/bearer-auth.d.ts.map +1 -0
- package/build/server/middleware/bearer-auth.js +75 -0
- package/build/server/middleware/bearer-auth.js.map +1 -0
- package/build/server/middleware/custom-header-auth.d.ts +40 -0
- package/build/server/middleware/custom-header-auth.d.ts.map +1 -0
- package/build/server/middleware/custom-header-auth.js +90 -0
- package/build/server/middleware/custom-header-auth.js.map +1 -0
- package/build/server/middleware/dns-rebinding.d.ts +25 -0
- package/build/server/middleware/dns-rebinding.d.ts.map +1 -0
- package/build/server/middleware/dns-rebinding.js +94 -0
- package/build/server/middleware/dns-rebinding.js.map +1 -0
- package/build/server/middleware/index.d.ts +69 -0
- package/build/server/middleware/index.d.ts.map +1 -0
- package/build/server/middleware/index.js +68 -0
- package/build/server/middleware/index.js.map +1 -0
- package/build/server/middleware/logging.d.ts +21 -0
- package/build/server/middleware/logging.d.ts.map +1 -0
- package/build/server/middleware/logging.js +36 -0
- package/build/server/middleware/logging.js.map +1 -0
- package/build/server/middleware/oauth-router.d.ts +50 -0
- package/build/server/middleware/oauth-router.d.ts.map +1 -0
- package/build/server/middleware/oauth-router.js +53 -0
- package/build/server/middleware/oauth-router.js.map +1 -0
- package/build/server/middleware/protocol-version.d.ts +13 -0
- package/build/server/middleware/protocol-version.d.ts.map +1 -0
- package/build/server/middleware/protocol-version.js +48 -0
- package/build/server/middleware/protocol-version.js.map +1 -0
- package/build/server/middleware/rate-limit.d.ts +47 -0
- package/build/server/middleware/rate-limit.d.ts.map +1 -0
- package/build/server/middleware/rate-limit.js +109 -0
- package/build/server/middleware/rate-limit.js.map +1 -0
- package/build/server/middleware/trust-proxy.d.ts +37 -0
- package/build/server/middleware/trust-proxy.d.ts.map +1 -0
- package/build/server/middleware/trust-proxy.js +154 -0
- package/build/server/middleware/trust-proxy.js.map +1 -0
- package/build/server/option-overrides.d.ts +25 -0
- package/build/server/option-overrides.d.ts.map +1 -0
- package/build/server/option-overrides.js +85 -0
- package/build/server/option-overrides.js.map +1 -0
- package/build/server/routes/health.d.ts +87 -0
- package/build/server/routes/health.d.ts.map +1 -0
- package/build/server/routes/health.js +183 -0
- package/build/server/routes/health.js.map +1 -0
- package/build/server/routes/index.d.ts +16 -0
- package/build/server/routes/index.d.ts.map +1 -0
- package/build/server/routes/index.js +18 -0
- package/build/server/routes/index.js.map +1 -0
- package/build/server/routes/metrics.d.ts +40 -0
- package/build/server/routes/metrics.d.ts.map +1 -0
- package/build/server/routes/metrics.js +81 -0
- package/build/server/routes/metrics.js.map +1 -0
- package/build/server/routes/oauth-router.d.ts +50 -0
- package/build/server/routes/oauth-router.d.ts.map +1 -0
- package/build/server/routes/oauth-router.js +53 -0
- package/build/server/routes/oauth-router.js.map +1 -0
- package/build/server/routes/readiness-status.d.ts +25 -0
- package/build/server/routes/readiness-status.d.ts.map +1 -0
- package/build/server/routes/readiness-status.js +27 -0
- package/build/server/routes/readiness-status.js.map +1 -0
- package/build/server/routes/sse-router.d.ts +43 -0
- package/build/server/routes/sse-router.d.ts.map +1 -0
- package/build/server/routes/sse-router.js +92 -0
- package/build/server/routes/sse-router.js.map +1 -0
- package/build/server/routes/streamable-http-router.d.ts +36 -0
- package/build/server/routes/streamable-http-router.d.ts.map +1 -0
- package/build/server/routes/streamable-http-router.js +59 -0
- package/build/server/routes/streamable-http-router.js.map +1 -0
- package/build/server/server-instance.d.ts +185 -0
- package/build/server/server-instance.d.ts.map +1 -0
- package/build/server/server-instance.js +615 -0
- package/build/server/server-instance.js.map +1 -0
- package/build/server/server-options.d.ts +411 -0
- package/build/server/server-options.d.ts.map +1 -0
- package/build/server/server-options.js +17 -0
- package/build/server/server-options.js.map +1 -0
- package/build/server/session/in-memory-store.d.ts +128 -0
- package/build/server/session/in-memory-store.d.ts.map +1 -0
- package/build/server/session/in-memory-store.js +312 -0
- package/build/server/session/in-memory-store.js.map +1 -0
- package/build/server/session/index.d.ts +43 -0
- package/build/server/session/index.d.ts.map +1 -0
- package/build/server/session/index.js +47 -0
- package/build/server/session/index.js.map +1 -0
- package/build/server/session/mcp-session.d.ts +210 -0
- package/build/server/session/mcp-session.d.ts.map +1 -0
- package/build/server/session/mcp-session.js +428 -0
- package/build/server/session/mcp-session.js.map +1 -0
- package/build/server/session/session-factory.d.ts +119 -0
- package/build/server/session/session-factory.d.ts.map +1 -0
- package/build/server/session/session-factory.js +131 -0
- package/build/server/session/session-factory.js.map +1 -0
- package/build/server/session/session-housekeeper.d.ts +100 -0
- package/build/server/session/session-housekeeper.d.ts.map +1 -0
- package/build/server/session/session-housekeeper.js +217 -0
- package/build/server/session/session-housekeeper.js.map +1 -0
- package/build/server/session/session-manager.d.ts +227 -0
- package/build/server/session/session-manager.d.ts.map +1 -0
- package/build/server/session/session-manager.js +282 -0
- package/build/server/session/session-manager.js.map +1 -0
- package/build/server/session/session-store.d.ts +95 -0
- package/build/server/session/session-store.d.ts.map +1 -0
- package/build/server/session/session-store.js +13 -0
- package/build/server/session/session-store.js.map +1 -0
- package/build/server/session/session.d.ts +132 -0
- package/build/server/session/session.d.ts.map +1 -0
- package/build/server/session/session.js +61 -0
- package/build/server/session/session.js.map +1 -0
- package/build/server/transport/constants.d.ts +85 -0
- package/build/server/transport/constants.d.ts.map +1 -0
- package/build/server/transport/constants.js +103 -0
- package/build/server/transport/constants.js.map +1 -0
- package/build/server/transport/index.d.ts +21 -0
- package/build/server/transport/index.d.ts.map +1 -0
- package/build/server/transport/index.js +28 -0
- package/build/server/transport/index.js.map +1 -0
- package/build/server/transport/sse/handler.d.ts +46 -0
- package/build/server/transport/sse/handler.d.ts.map +1 -0
- package/build/server/transport/sse/handler.js +189 -0
- package/build/server/transport/sse/handler.js.map +1 -0
- package/build/server/transport/sse/index.d.ts +15 -0
- package/build/server/transport/sse/index.d.ts.map +1 -0
- package/build/server/transport/sse/index.js +14 -0
- package/build/server/transport/sse/index.js.map +1 -0
- package/build/server/transport/sse/transport.d.ts +94 -0
- package/build/server/transport/sse/transport.d.ts.map +1 -0
- package/build/server/transport/sse/transport.js +175 -0
- package/build/server/transport/sse/transport.js.map +1 -0
- package/build/server/transport/stdio-transport.d.ts +23 -0
- package/build/server/transport/stdio-transport.d.ts.map +1 -0
- package/build/server/transport/stdio-transport.js +59 -0
- package/build/server/transport/stdio-transport.js.map +1 -0
- package/build/server/transport/streamable-http/index.d.ts +9 -0
- package/build/server/transport/streamable-http/index.d.ts.map +1 -0
- package/build/server/transport/streamable-http/index.js +9 -0
- package/build/server/transport/streamable-http/index.js.map +1 -0
- package/build/server/transport/streamable-http/stateful-handler.d.ts +41 -0
- package/build/server/transport/streamable-http/stateful-handler.d.ts.map +1 -0
- package/build/server/transport/streamable-http/stateful-handler.js +264 -0
- package/build/server/transport/streamable-http/stateful-handler.js.map +1 -0
- package/build/server/transport/streamable-http/stateless-handler.d.ts +28 -0
- package/build/server/transport/streamable-http/stateless-handler.d.ts.map +1 -0
- package/build/server/transport/streamable-http/stateless-handler.js +81 -0
- package/build/server/transport/streamable-http/stateless-handler.js.map +1 -0
- package/build/server/transport/streamable-http/transport.d.ts +110 -0
- package/build/server/transport/streamable-http/transport.d.ts.map +1 -0
- package/build/server/transport/streamable-http/transport.js +118 -0
- package/build/server/transport/streamable-http/transport.js.map +1 -0
- package/build/server/transport/transport-context.d.ts +67 -0
- package/build/server/transport/transport-context.d.ts.map +1 -0
- package/build/server/transport/transport-context.js +38 -0
- package/build/server/transport/transport-context.js.map +1 -0
- package/build/server/transport/types.d.ts +56 -0
- package/build/server/transport/types.d.ts.map +1 -0
- package/build/server/transport/types.js +11 -0
- package/build/server/transport/types.js.map +1 -0
- package/build/server/transport-options.d.ts +248 -0
- package/build/server/transport-options.d.ts.map +1 -0
- package/build/server/transport-options.js +18 -0
- package/build/server/transport-options.js.map +1 -0
- package/build/server/types.d.ts +172 -0
- package/build/server/types.d.ts.map +1 -0
- package/build/server/types.js +9 -0
- package/build/server/types.js.map +1 -0
- package/build/telemetry/connection-telemetry-bridge.d.ts +30 -0
- package/build/telemetry/connection-telemetry-bridge.d.ts.map +1 -0
- package/build/telemetry/connection-telemetry-bridge.js +54 -0
- package/build/telemetry/connection-telemetry-bridge.js.map +1 -0
- package/build/telemetry/core/config.d.ts +38 -0
- package/build/telemetry/core/config.d.ts.map +1 -0
- package/build/telemetry/core/config.js +54 -0
- package/build/telemetry/core/config.js.map +1 -0
- package/build/telemetry/core/constants.d.ts +183 -0
- package/build/telemetry/core/constants.d.ts.map +1 -0
- package/build/telemetry/core/constants.js +207 -0
- package/build/telemetry/core/constants.js.map +1 -0
- package/build/telemetry/core/diag-logger.d.ts +35 -0
- package/build/telemetry/core/diag-logger.d.ts.map +1 -0
- package/build/telemetry/core/diag-logger.js +54 -0
- package/build/telemetry/core/diag-logger.js.map +1 -0
- package/build/telemetry/core/index.d.ts +12 -0
- package/build/telemetry/core/index.d.ts.map +1 -0
- package/build/telemetry/core/index.js +32 -0
- package/build/telemetry/core/index.js.map +1 -0
- package/build/telemetry/core/types.d.ts +106 -0
- package/build/telemetry/core/types.d.ts.map +1 -0
- package/build/telemetry/core/types.js +10 -0
- package/build/telemetry/core/types.js.map +1 -0
- package/build/telemetry/index.d.ts +59 -0
- package/build/telemetry/index.d.ts.map +1 -0
- package/build/telemetry/index.js +79 -0
- package/build/telemetry/index.js.map +1 -0
- package/build/telemetry/metrics.d.ts +127 -0
- package/build/telemetry/metrics.d.ts.map +1 -0
- package/build/telemetry/metrics.js +337 -0
- package/build/telemetry/metrics.js.map +1 -0
- package/build/telemetry/sdk.d.ts +110 -0
- package/build/telemetry/sdk.d.ts.map +1 -0
- package/build/telemetry/sdk.js +547 -0
- package/build/telemetry/sdk.js.map +1 -0
- package/build/telemetry/tracing.d.ts +78 -0
- package/build/telemetry/tracing.d.ts.map +1 -0
- package/build/telemetry/tracing.js +257 -0
- package/build/telemetry/tracing.js.map +1 -0
- package/build/utils/env-helpers.d.ts +46 -0
- package/build/utils/env-helpers.d.ts.map +1 -0
- package/build/utils/env-helpers.js +54 -0
- package/build/utils/env-helpers.js.map +1 -0
- package/build/utils/index.d.ts +14 -0
- package/build/utils/index.d.ts.map +1 -0
- package/build/utils/index.js +19 -0
- package/build/utils/index.js.map +1 -0
- package/build/utils/sensitive-keys.d.ts +48 -0
- package/build/utils/sensitive-keys.d.ts.map +1 -0
- package/build/utils/sensitive-keys.js +131 -0
- package/build/utils/sensitive-keys.js.map +1 -0
- package/build/utils/string-helpers.d.ts +126 -0
- package/build/utils/string-helpers.d.ts.map +1 -0
- package/build/utils/string-helpers.js +189 -0
- package/build/utils/string-helpers.js.map +1 -0
- package/build/utils/validation.d.ts +84 -0
- package/build/utils/validation.d.ts.map +1 -0
- package/build/utils/validation.js +111 -0
- package/build/utils/validation.js.map +1 -0
- package/build/utils/zod-helpers.d.ts +92 -0
- package/build/utils/zod-helpers.d.ts.map +1 -0
- package/build/utils/zod-helpers.js +120 -0
- package/build/utils/zod-helpers.js.map +1 -0
- package/package.json +133 -0
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Session
|
|
3
|
+
*
|
|
4
|
+
* Represents a single MCP client session. Each session wraps an SDK McpServer
|
|
5
|
+
* instance with SDK-native cancellation and progress support.
|
|
6
|
+
*
|
|
7
|
+
* Key responsibilities:
|
|
8
|
+
* - One client = one session = one SDK McpServer (1:1 per MCP spec)
|
|
9
|
+
* - Delegates tool/resource/prompt/task registration to registrar modules
|
|
10
|
+
* - Manages per-session resource subscriptions
|
|
11
|
+
* - Uses SDK's native AbortSignal for cancellation (per-request, protocol-managed)
|
|
12
|
+
*
|
|
13
|
+
* @module server/session/mcp-session
|
|
14
|
+
*/
|
|
15
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
16
|
+
import { SubscribeRequestSchema, UnsubscribeRequestSchema, SetLevelRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
17
|
+
import { setupPingHandler } from "../../mcp/handlers/index.js";
|
|
18
|
+
import { ToolRegistry, ResourceRegistry, PromptRegistry, TaskToolRegistry, } from "../../mcp/capabilities/registry/index.js";
|
|
19
|
+
import { hasAllRequiredScopes } from "../../mcp/capabilities/registry/scope-enforcement.js";
|
|
20
|
+
import { logger as frameworkLogger } from "../../logger/index.js";
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// Constants
|
|
23
|
+
// ============================================================================
|
|
24
|
+
const LOG_COMPONENT = "mcp-session";
|
|
25
|
+
const LogMessages = {
|
|
26
|
+
SESSION_CREATED: "MCP session created: %s v%s",
|
|
27
|
+
SESSION_CLOSED: "MCP session closed",
|
|
28
|
+
SESSION_ERROR: "MCP session error: %s",
|
|
29
|
+
// Subscriptions
|
|
30
|
+
SUBSCRIPTION_HANDLERS_REGISTERED: "Subscription handlers registered",
|
|
31
|
+
RESOURCE_SUBSCRIBED: "Subscribed to resource: %s",
|
|
32
|
+
RESOURCE_UNSUBSCRIBED: "Unsubscribed from resource: %s",
|
|
33
|
+
RESOURCE_UPDATED_SENT: "Sent resource updated notification: %s",
|
|
34
|
+
RESOURCE_UPDATED_SKIPPED: "Skipped resource updated (not subscribed): %s",
|
|
35
|
+
// Logging
|
|
36
|
+
LOG_LEVEL_SET: "Client requested log level: %s",
|
|
37
|
+
LOG_SET_LEVEL_HANDLER_REGISTERED: "logging/setLevel handler registered",
|
|
38
|
+
// Scope-filtered list handlers
|
|
39
|
+
SCOPE_FILTER_INSTALLED: "Scope-filtered list handlers installed (tools: %d, resources: %d, templates: %d, prompts: %d scoped)",
|
|
40
|
+
SCOPE_FILTER_SKIPPED: "No scoped capabilities — scope-filtered list handlers not needed",
|
|
41
|
+
};
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// McpSession Class
|
|
44
|
+
// ============================================================================
|
|
45
|
+
/**
|
|
46
|
+
* A managed MCP client session.
|
|
47
|
+
*
|
|
48
|
+
* Each session wraps an SDK McpServer instance. Cancellation and progress
|
|
49
|
+
* are handled natively by the SDK — no additional tracking layer needed.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* const session = new McpSession({
|
|
54
|
+
* name: 'my-server',
|
|
55
|
+
* version: '1.0.0',
|
|
56
|
+
* capabilities: { tools: {} },
|
|
57
|
+
* });
|
|
58
|
+
*
|
|
59
|
+
* // Access underlying SDK server for transport connection
|
|
60
|
+
* await session.sdk.connect(transport);
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export class McpSession {
|
|
64
|
+
/** The underlying MCP SDK server instance */
|
|
65
|
+
sdk;
|
|
66
|
+
/** Session options */
|
|
67
|
+
options;
|
|
68
|
+
/** URIs this session has subscribed to for resource update notifications */
|
|
69
|
+
subscribedURIs = new Set();
|
|
70
|
+
logger = frameworkLogger.child({ component: LOG_COMPONENT });
|
|
71
|
+
onCloseCallback;
|
|
72
|
+
onErrorCallback;
|
|
73
|
+
/**
|
|
74
|
+
* Creates a new McpSession instance.
|
|
75
|
+
*
|
|
76
|
+
* Cancellation is handled natively by the SDK's Protocol layer
|
|
77
|
+
* (per-request AbortController, keyed by real JSON-RPC request ID).
|
|
78
|
+
* Progress reporting uses the SDK's extra.sendNotification with
|
|
79
|
+
* rate-limiting applied by createProgressReporter().
|
|
80
|
+
*
|
|
81
|
+
* @param options - Session configuration options
|
|
82
|
+
*/
|
|
83
|
+
constructor(options) {
|
|
84
|
+
this.options = Object.freeze({ ...options });
|
|
85
|
+
// Create the underlying SDK server with pre-built capabilities
|
|
86
|
+
this.sdk = new McpServer({ name: options.name, version: options.version }, {
|
|
87
|
+
capabilities: options.capabilities,
|
|
88
|
+
...(options.taskStore && { taskStore: options.taskStore }),
|
|
89
|
+
...(options.taskMessageQueue && {
|
|
90
|
+
taskMessageQueue: options.taskMessageQueue,
|
|
91
|
+
}),
|
|
92
|
+
});
|
|
93
|
+
// Setup protocol handlers (only ping — cancellation is SDK-native)
|
|
94
|
+
setupPingHandler(this.sdk, options.handlers?.onPing);
|
|
95
|
+
// Setup lifecycle callbacks
|
|
96
|
+
this.setupLifecycleCallbacks();
|
|
97
|
+
this.logger.debug(LogMessages.SESSION_CREATED, options.name, options.version);
|
|
98
|
+
}
|
|
99
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
100
|
+
// Public API
|
|
101
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
102
|
+
/** Server name */
|
|
103
|
+
get name() {
|
|
104
|
+
return this.options.name;
|
|
105
|
+
}
|
|
106
|
+
/** Server version */
|
|
107
|
+
get version() {
|
|
108
|
+
return this.options.version;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Set callback for session close events.
|
|
112
|
+
*/
|
|
113
|
+
onClose(callback) {
|
|
114
|
+
this.onCloseCallback = callback;
|
|
115
|
+
return this;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Set callback for session error events.
|
|
119
|
+
*/
|
|
120
|
+
onError(callback) {
|
|
121
|
+
this.onErrorCallback = callback;
|
|
122
|
+
return this;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Clean up session resources.
|
|
126
|
+
*
|
|
127
|
+
* Closes the underlying SDK McpServer, releasing protocol-level resources
|
|
128
|
+
* (pending requests, open streams, registered handlers). This is the
|
|
129
|
+
* counterpart to `sdk.connect(transport)` — every connected session
|
|
130
|
+
* should be disposed when no longer needed.
|
|
131
|
+
*
|
|
132
|
+
* Called by:
|
|
133
|
+
* - SessionManager (stateful sessions — on close/closeAll)
|
|
134
|
+
* - StreamableHttpTransport (stateless sessions — on response close)
|
|
135
|
+
*
|
|
136
|
+
* Safe to call multiple times — sdk.close() is idempotent.
|
|
137
|
+
*/
|
|
138
|
+
async dispose() {
|
|
139
|
+
try {
|
|
140
|
+
await this.sdk.close();
|
|
141
|
+
this.logger.trace(LogMessages.SESSION_CLOSED);
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
this.logger.warn(LogMessages.SESSION_ERROR, error instanceof Error ? error.message : String(error));
|
|
145
|
+
}
|
|
146
|
+
finally {
|
|
147
|
+
// Release callback references to allow GC of captured closures
|
|
148
|
+
this.onCloseCallback = undefined;
|
|
149
|
+
this.onErrorCallback = undefined;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
153
|
+
// SDK Registration — Delegates to Registry.bindToSdk()
|
|
154
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
155
|
+
/**
|
|
156
|
+
* Registers all tools with the MCP SDK server.
|
|
157
|
+
* Delegates to ToolRegistry.bindToSdk().
|
|
158
|
+
*/
|
|
159
|
+
registerTools(tools) {
|
|
160
|
+
ToolRegistry.bindToSdk(this.sdk, tools, {
|
|
161
|
+
logger: this.logger,
|
|
162
|
+
stateless: this.options.stateless ?? false,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Registers task tools with the MCP SDK's experimental tasks API.
|
|
167
|
+
* Delegates to TaskToolRegistry.bindToSdk().
|
|
168
|
+
*
|
|
169
|
+
* @experimental MCP Tasks is an experimental SDK feature
|
|
170
|
+
*/
|
|
171
|
+
registerTaskTools(taskTools) {
|
|
172
|
+
TaskToolRegistry.bindToSdk(this.sdk, taskTools, {
|
|
173
|
+
logger: this.logger,
|
|
174
|
+
stateless: this.options.stateless ?? false,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Registers all resources (static + templates) with the MCP SDK server.
|
|
179
|
+
* Delegates to ResourceRegistry.bindToSdk().
|
|
180
|
+
*/
|
|
181
|
+
registerResources(resources, templates) {
|
|
182
|
+
ResourceRegistry.bindToSdk(this.sdk, resources, templates, {
|
|
183
|
+
logger: this.logger,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Registers all prompts with the MCP SDK server.
|
|
188
|
+
* Delegates to PromptRegistry.bindToSdk().
|
|
189
|
+
*/
|
|
190
|
+
registerPrompts(prompts) {
|
|
191
|
+
PromptRegistry.bindToSdk(this.sdk, prompts, {
|
|
192
|
+
logger: this.logger,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
196
|
+
// SDK Registration — Resource Subscriptions
|
|
197
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
198
|
+
/**
|
|
199
|
+
* Registers request handlers for `resources/subscribe` and `resources/unsubscribe`.
|
|
200
|
+
*
|
|
201
|
+
* @sdk-constraint — The SDK's high-level `McpServer` does not handle subscription
|
|
202
|
+
* requests. This uses the low-level `Server.setRequestHandler()` API to register
|
|
203
|
+
* handlers for the subscribe/unsubscribe JSON-RPC methods.
|
|
204
|
+
*
|
|
205
|
+
* Subscription tracking is per-session (this `McpSession` instance).
|
|
206
|
+
* When `notifyResourceUpdated(uri)` is called, only sessions that
|
|
207
|
+
* subscribed to the given URI receive `notifications/resources/updated`.
|
|
208
|
+
*
|
|
209
|
+
* In stateless mode, subscriptions are not meaningful (no persistent session),
|
|
210
|
+
* so this method should not be called for stateless sessions.
|
|
211
|
+
*/
|
|
212
|
+
registerSubscriptionHandlers() {
|
|
213
|
+
this.sdk.server.setRequestHandler(SubscribeRequestSchema, async (request) => {
|
|
214
|
+
const { uri } = request.params;
|
|
215
|
+
this.subscribedURIs.add(uri);
|
|
216
|
+
this.logger.trace(LogMessages.RESOURCE_SUBSCRIBED, uri);
|
|
217
|
+
return {};
|
|
218
|
+
});
|
|
219
|
+
this.sdk.server.setRequestHandler(UnsubscribeRequestSchema, async (request) => {
|
|
220
|
+
const { uri } = request.params;
|
|
221
|
+
this.subscribedURIs.delete(uri);
|
|
222
|
+
this.logger.trace(LogMessages.RESOURCE_UNSUBSCRIBED, uri);
|
|
223
|
+
return {};
|
|
224
|
+
});
|
|
225
|
+
this.logger.trace(LogMessages.SUBSCRIPTION_HANDLERS_REGISTERED);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Sends a `notifications/resources/updated` notification to this session's client
|
|
229
|
+
* if the session has subscribed to the given URI.
|
|
230
|
+
*
|
|
231
|
+
* @param uri - The resource URI that was updated
|
|
232
|
+
*/
|
|
233
|
+
async sendResourceUpdated(uri) {
|
|
234
|
+
if (!this.subscribedURIs.has(uri)) {
|
|
235
|
+
this.logger.trace(LogMessages.RESOURCE_UPDATED_SKIPPED, uri);
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
try {
|
|
239
|
+
await this.sdk.server.sendResourceUpdated({ uri });
|
|
240
|
+
this.logger.trace(LogMessages.RESOURCE_UPDATED_SENT, uri);
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
this.logger.warn("Error sending resource updated for %s: %s", uri, String(error));
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
247
|
+
// LogNotificationHandler — Bridge logger → MCP client
|
|
248
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
249
|
+
/**
|
|
250
|
+
* Sends a log notification to the connected MCP client.
|
|
251
|
+
* Implements {@link LogNotificationHandler} so this session can be
|
|
252
|
+
* registered directly with the MCP notification logger.
|
|
253
|
+
*/
|
|
254
|
+
async sendLogNotification(level, message) {
|
|
255
|
+
await this.sdk.server.sendLoggingMessage({ level, data: message });
|
|
256
|
+
}
|
|
257
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
258
|
+
// SDK Registration — logging/setLevel
|
|
259
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
260
|
+
/**
|
|
261
|
+
* Registers a request handler for `logging/setLevel`.
|
|
262
|
+
*
|
|
263
|
+
* Per MCP Spec: When the server declares `logging: {}` capability, clients
|
|
264
|
+
* can send `logging/setLevel` to control which log notifications they receive.
|
|
265
|
+
* The handler updates the McpNotificationLogger's minimum level so that
|
|
266
|
+
* only messages at or above the requested level are forwarded.
|
|
267
|
+
*
|
|
268
|
+
* @param onSetLevel - Callback to apply the requested level (typically mcpLogger.setMinLevel)
|
|
269
|
+
*/
|
|
270
|
+
registerSetLevelHandler(onSetLevel) {
|
|
271
|
+
this.sdk.server.setRequestHandler(SetLevelRequestSchema, async (request) => {
|
|
272
|
+
// @type-narrowing — SDK validates params against SetLevelRequestParamsSchema
|
|
273
|
+
const level = request.params.level;
|
|
274
|
+
onSetLevel(level);
|
|
275
|
+
this.logger.debug(LogMessages.LOG_LEVEL_SET, level);
|
|
276
|
+
return {};
|
|
277
|
+
});
|
|
278
|
+
this.logger.trace(LogMessages.LOG_SET_LEVEL_HANDLER_REGISTERED);
|
|
279
|
+
}
|
|
280
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
281
|
+
// Scope-Filtered List Handlers (Opt-in RBAC for capability listings)
|
|
282
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
283
|
+
/**
|
|
284
|
+
* Overrides `tools/list`, `resources/list`, `resources/templates/list`, and `prompts/list`
|
|
285
|
+
* handlers to filter out entries whose `requiredScopes` are not satisfied by the
|
|
286
|
+
* requesting user's token scopes.
|
|
287
|
+
*
|
|
288
|
+
* This wraps the SDK's original handlers — the full list is constructed by the SDK,
|
|
289
|
+
* then filtered before being returned to the client.
|
|
290
|
+
*
|
|
291
|
+
* Call this AFTER all tools/resources/prompts have been registered via `registerTools()` etc.
|
|
292
|
+
*
|
|
293
|
+
* @param options - All registered definitions (used to build scope lookup maps)
|
|
294
|
+
*/
|
|
295
|
+
registerScopeFilteredListHandlers(options) {
|
|
296
|
+
// Build scope lookup maps
|
|
297
|
+
const toolScopes = new Map();
|
|
298
|
+
for (const t of options.tools) {
|
|
299
|
+
if (t.requiredScopes?.length)
|
|
300
|
+
toolScopes.set(t.name, t.requiredScopes);
|
|
301
|
+
}
|
|
302
|
+
const resourceScopes = new Map();
|
|
303
|
+
for (const r of options.resources) {
|
|
304
|
+
if (r.requiredScopes?.length)
|
|
305
|
+
resourceScopes.set(r.uri, r.requiredScopes);
|
|
306
|
+
}
|
|
307
|
+
const templateScopes = new Map();
|
|
308
|
+
for (const t of options.templates) {
|
|
309
|
+
if (t.requiredScopes?.length)
|
|
310
|
+
templateScopes.set(t.name, t.requiredScopes);
|
|
311
|
+
}
|
|
312
|
+
const promptScopes = new Map();
|
|
313
|
+
for (const p of options.prompts) {
|
|
314
|
+
if (p.requiredScopes?.length)
|
|
315
|
+
promptScopes.set(p.name, p.requiredScopes);
|
|
316
|
+
}
|
|
317
|
+
// Skip if nothing has scopes
|
|
318
|
+
const totalScoped = toolScopes.size + resourceScopes.size + templateScopes.size + promptScopes.size;
|
|
319
|
+
if (totalScoped === 0) {
|
|
320
|
+
this.logger.trace(LogMessages.SCOPE_FILTER_SKIPPED);
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
// @sdk-constraint — _requestHandlers is private on Protocol but accessible at runtime.
|
|
324
|
+
// We wrap the SDK's original list handlers to add scope-based filtering.
|
|
325
|
+
// Guard: if the SDK changes its internal structure, fail gracefully instead of crashing.
|
|
326
|
+
const rawHandlers = this.sdk.server._requestHandlers;
|
|
327
|
+
if (!rawHandlers || !(rawHandlers instanceof Map)) {
|
|
328
|
+
this.logger.error("Cannot install scope-filtered list handlers: SDK _requestHandlers is %s. " +
|
|
329
|
+
"This may indicate an incompatible SDK version — scope filtering is disabled.", rawHandlers === undefined ? "undefined" : typeof rawHandlers);
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
const handlers = rawHandlers;
|
|
333
|
+
const getTokenScopes = (extra) => {
|
|
334
|
+
const authInfo = extra.authInfo;
|
|
335
|
+
return authInfo?.scopes ?? [];
|
|
336
|
+
};
|
|
337
|
+
// Override tools/list
|
|
338
|
+
if (toolScopes.size > 0) {
|
|
339
|
+
const original = handlers.get("tools/list");
|
|
340
|
+
if (original) {
|
|
341
|
+
handlers.set("tools/list", async (request, extra) => {
|
|
342
|
+
const result = await original(request, extra);
|
|
343
|
+
const tokenScopes = getTokenScopes(extra);
|
|
344
|
+
const tools = (result.tools ?? []);
|
|
345
|
+
return {
|
|
346
|
+
...result,
|
|
347
|
+
tools: tools.filter((tool) => {
|
|
348
|
+
const required = toolScopes.get(tool.name);
|
|
349
|
+
return !required || hasAllRequiredScopes(required, tokenScopes);
|
|
350
|
+
}),
|
|
351
|
+
};
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
// Override resources/list (filter static resources by URI)
|
|
356
|
+
if (resourceScopes.size > 0) {
|
|
357
|
+
const original = handlers.get("resources/list");
|
|
358
|
+
if (original) {
|
|
359
|
+
handlers.set("resources/list", async (request, extra) => {
|
|
360
|
+
const result = await original(request, extra);
|
|
361
|
+
const tokenScopes = getTokenScopes(extra);
|
|
362
|
+
const resources = (result.resources ?? []);
|
|
363
|
+
return {
|
|
364
|
+
...result,
|
|
365
|
+
resources: resources.filter((resource) => {
|
|
366
|
+
const required = resourceScopes.get(resource.uri);
|
|
367
|
+
return !required || hasAllRequiredScopes(required, tokenScopes);
|
|
368
|
+
}),
|
|
369
|
+
};
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
// Override resources/templates/list (filter by template name)
|
|
374
|
+
if (templateScopes.size > 0) {
|
|
375
|
+
const original = handlers.get("resources/templates/list");
|
|
376
|
+
if (original) {
|
|
377
|
+
handlers.set("resources/templates/list", async (request, extra) => {
|
|
378
|
+
const result = await original(request, extra);
|
|
379
|
+
const tokenScopes = getTokenScopes(extra);
|
|
380
|
+
const templates = (result.resourceTemplates ?? []);
|
|
381
|
+
return {
|
|
382
|
+
...result,
|
|
383
|
+
resourceTemplates: templates.filter((template) => {
|
|
384
|
+
const required = templateScopes.get(template.name);
|
|
385
|
+
return !required || hasAllRequiredScopes(required, tokenScopes);
|
|
386
|
+
}),
|
|
387
|
+
};
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
// Override prompts/list
|
|
392
|
+
if (promptScopes.size > 0) {
|
|
393
|
+
const original = handlers.get("prompts/list");
|
|
394
|
+
if (original) {
|
|
395
|
+
handlers.set("prompts/list", async (request, extra) => {
|
|
396
|
+
const result = await original(request, extra);
|
|
397
|
+
const tokenScopes = getTokenScopes(extra);
|
|
398
|
+
const prompts = (result.prompts ?? []);
|
|
399
|
+
return {
|
|
400
|
+
...result,
|
|
401
|
+
prompts: prompts.filter((prompt) => {
|
|
402
|
+
const required = promptScopes.get(prompt.name);
|
|
403
|
+
return !required || hasAllRequiredScopes(required, tokenScopes);
|
|
404
|
+
}),
|
|
405
|
+
};
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
this.logger.debug(LogMessages.SCOPE_FILTER_INSTALLED, toolScopes.size, resourceScopes.size, templateScopes.size, promptScopes.size);
|
|
410
|
+
}
|
|
411
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
412
|
+
// Private Helpers
|
|
413
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
414
|
+
/**
|
|
415
|
+
* Sets up lifecycle callbacks on the underlying SDK server.
|
|
416
|
+
*/
|
|
417
|
+
setupLifecycleCallbacks() {
|
|
418
|
+
this.sdk.server.onclose = () => {
|
|
419
|
+
this.logger.debug(LogMessages.SESSION_CLOSED);
|
|
420
|
+
this.onCloseCallback?.();
|
|
421
|
+
};
|
|
422
|
+
this.sdk.server.onerror = (error) => {
|
|
423
|
+
this.logger.error(LogMessages.SESSION_ERROR, error.message);
|
|
424
|
+
this.onErrorCallback?.(error);
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
//# sourceMappingURL=mcp-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-session.js","sourceRoot":"","sources":["../../../src/server/session/mcp-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,oCAAoC,CAAC;AAY5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAC5F,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAmDlE,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,aAAa,GAAG,aAAa,CAAC;AAEpC,MAAM,WAAW,GAAG;IAClB,eAAe,EAAE,6BAA6B;IAC9C,cAAc,EAAE,oBAAoB;IACpC,aAAa,EAAE,uBAAuB;IACtC,gBAAgB;IAChB,gCAAgC,EAAE,kCAAkC;IACpE,mBAAmB,EAAE,4BAA4B;IACjD,qBAAqB,EAAE,gCAAgC;IACvD,qBAAqB,EAAE,wCAAwC;IAC/D,wBAAwB,EAAE,+CAA+C;IACzE,UAAU;IACV,aAAa,EAAE,gCAAgC;IAC/C,gCAAgC,EAAE,qCAAqC;IACvE,+BAA+B;IAC/B,sBAAsB,EACpB,sGAAsG;IACxG,oBAAoB,EAAE,kEAAkE;CAChF,CAAC;AAEX,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,UAAU;IACrB,6CAA6C;IAC7B,GAAG,CAAY;IAE/B,sBAAsB;IACN,OAAO,CAA8B;IAErD,4EAA4E;IAC3D,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;IAEtE,eAAe,CAA6B;IAC5C,eAAe,CAA6B;IAEpD;;;;;;;;;OASG;IACH,YAAY,OAA0B;QACpC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAE7C,+DAA+D;QAC/D,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CACtB,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EAChD;YACE,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;YAC1D,GAAG,CAAC,OAAO,CAAC,gBAAgB,IAAI;gBAC9B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;aAC3C,CAAC;SACH,CACF,CAAC;QAEF,mEAAmE;QACnE,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAErD,4BAA4B;QAC5B,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAChF,CAAC;IAED,4EAA4E;IAC5E,aAAa;IACb,4EAA4E;IAE5E,kBAAkB;IAClB,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,qBAAqB;IACrB,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,QAAuB;QAC7B,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,QAAuB;QAC7B,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtG,CAAC;gBAAS,CAAC;YACT,+DAA+D;YAC/D,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,uDAAuD;IACvD,4EAA4E;IAE5E;;;OAGG;IACH,aAAa,CAAC,KAAgC;QAC5C,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE;YACtC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK;SAC3C,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,SAAwC;QACxD,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE;YAC9C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK;SAC3C,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,iBAAiB,CACf,SAA8C,EAC9C,SAAgD;QAEhD,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE;YACzD,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,OAAoC;QAClD,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE;YAC1C,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAED,4EAA4E;IAC5E,4CAA4C;IAC5C,4EAA4E;IAE5E;;;;;;;;;;;;;OAaG;IACH,4BAA4B;QAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC1E,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;YACxD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC5E,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;YAC1D,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC;IAClE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,mBAAmB,CAAC,GAAW;QACnC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,sDAAsD;IACtD,4EAA4E;IAE5E;;;;OAIG;IACH,KAAK,CAAC,mBAAmB,CAAC,KAAkB,EAAE,OAAe;QAC3D,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,4EAA4E;IAC5E,sCAAsC;IACtC,4EAA4E;IAE5E;;;;;;;;;OASG;IACH,uBAAuB,CAAC,UAAwC;QAC9D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACzE,6EAA6E;YAC7E,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAoB,CAAC;YAClD,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC;IAClE,CAAC;IAED,4EAA4E;IAC5E,qEAAqE;IACrE,4EAA4E;IAE5E;;;;;;;;;;;OAWG;IACH,iCAAiC,CAAC,OAKjC;QACC,0BAA0B;QAC1B,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6B,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,CAAC,cAAc,EAAE,MAAM;gBAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;QAC5D,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,cAAc,EAAE,MAAM;gBAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;QAC5D,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,cAAc,EAAE,MAAM;gBAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,GAAG,EAA6B,CAAC;QAC1D,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,CAAC,cAAc,EAAE,MAAM;gBAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC;QAC3E,CAAC;QAED,6BAA6B;QAC7B,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QACpG,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,uFAAuF;QACvF,yEAAyE;QACzE,yFAAyF;QACzF,MAAM,WAAW,GAAI,IAAI,CAAC,GAAG,CAAC,MAA6C,CAAC,gBAAgB,CAAC;QAE7F,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,YAAY,GAAG,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,2EAA2E;gBACzE,8EAA8E,EAChF,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,WAAW,CAC7D,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,WAAoF,CAAC;QAEtG,MAAM,cAAc,GAAG,CAAC,KAA8B,EAAqB,EAAE;YAC3E,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAsD,CAAC;YAC9E,OAAO,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC;QAChC,CAAC,CAAC;QAEF,sBAAsB;QACtB,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC5C,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,OAAgB,EAAE,KAAc,EAAE,EAAE;oBACpE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC9C,MAAM,WAAW,GAAG,cAAc,CAAC,KAAgC,CAAC,CAAC;oBACrE,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;oBAC9D,OAAO;wBACL,GAAG,MAAM;wBACT,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;4BAC3B,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BAC3C,OAAO,CAAC,QAAQ,IAAI,oBAAoB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;wBAClE,CAAC,CAAC;qBACH,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,2DAA2D;QAC3D,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAChD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,EAAE,OAAgB,EAAE,KAAc,EAAE,EAAE;oBACxE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC9C,MAAM,WAAW,GAAG,cAAc,CAAC,KAAgC,CAAC,CAAC;oBACrE,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAEvC,CAAC;oBACH,OAAO;wBACL,GAAG,MAAM;wBACT,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;4BACvC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;4BAClD,OAAO,CAAC,QAAQ,IAAI,oBAAoB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;wBAClE,CAAC,CAAC;qBACH,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YAC1D,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,CAAC,0BAA0B,EAAE,KAAK,EAAE,OAAgB,EAAE,KAAc,EAAE,EAAE;oBAClF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC9C,MAAM,WAAW,GAAG,cAAc,CAAC,KAAgC,CAAC,CAAC;oBACrE,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAE/C,CAAC;oBACH,OAAO;wBACL,GAAG,MAAM;wBACT,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;4BAC/C,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;4BACnD,OAAO,CAAC,QAAQ,IAAI,oBAAoB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;wBAClE,CAAC,CAAC;qBACH,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC9C,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,OAAgB,EAAE,KAAc,EAAE,EAAE;oBACtE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC9C,MAAM,WAAW,GAAG,cAAc,CAAC,KAAgC,CAAC,CAAC;oBACrE,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;oBAClE,OAAO;wBACL,GAAG,MAAM;wBACT,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;4BACjC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;4BAC/C,OAAO,CAAC,QAAQ,IAAI,oBAAoB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;wBAClE,CAAC,CAAC;qBACH,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,WAAW,CAAC,sBAAsB,EAClC,UAAU,CAAC,IAAI,EACf,cAAc,CAAC,IAAI,EACnB,cAAc,CAAC,IAAI,EACnB,YAAY,CAAC,IAAI,CAClB,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAE5E;;OAEG;IACK,uBAAuB;QAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAC9C,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QAC3B,CAAC,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;YACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5D,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Session Factory
|
|
3
|
+
*
|
|
4
|
+
* Responsible for creating fully-configured MCP sessions with pre-computed
|
|
5
|
+
* capabilities and all registered primitives. Capabilities are computed once
|
|
6
|
+
* at construction time since the input data (tools, resources, prompts) is
|
|
7
|
+
* immutable after server build.
|
|
8
|
+
*
|
|
9
|
+
* Extracted from McpServerInstance to satisfy the Single Responsibility
|
|
10
|
+
* Principle — the server orchestrates lifecycle, the factory creates sessions.
|
|
11
|
+
*
|
|
12
|
+
* @module server/session/session-factory
|
|
13
|
+
*/
|
|
14
|
+
import type { ToolDefinition, ResourceStaticDefinition, ResourceTemplateDefinition, PromptDefinition, TaskToolDefinition, HandlersConfig } from "../../mcp/types/index.js";
|
|
15
|
+
import type { ServerCapabilities } from "../server-options.js";
|
|
16
|
+
import type { TaskStore, TaskMessageQueue } from "@modelcontextprotocol/sdk/experimental/tasks/interfaces.js";
|
|
17
|
+
import { McpSession } from "./mcp-session.js";
|
|
18
|
+
/**
|
|
19
|
+
* Configuration for the MCP session factory.
|
|
20
|
+
*
|
|
21
|
+
* All arrays should be frozen (immutable) after server build.
|
|
22
|
+
* Capabilities are computed once from this config at construction time.
|
|
23
|
+
*/
|
|
24
|
+
export interface SessionFactoryConfig {
|
|
25
|
+
/** Server name passed to each MCP session */
|
|
26
|
+
readonly name: string;
|
|
27
|
+
/** Server version passed to each MCP session */
|
|
28
|
+
readonly version: string;
|
|
29
|
+
/** Server capabilities configuration */
|
|
30
|
+
readonly capabilities?: ServerCapabilities | undefined;
|
|
31
|
+
/** Custom protocol handler hooks */
|
|
32
|
+
readonly handlers?: HandlersConfig | undefined;
|
|
33
|
+
/** Whether sessions operate in stateless mode */
|
|
34
|
+
readonly stateless?: boolean | undefined;
|
|
35
|
+
/** Tool definitions to register on each session */
|
|
36
|
+
readonly tools: ReadonlyArray<ToolDefinition>;
|
|
37
|
+
/** Static resource definitions to register on each session */
|
|
38
|
+
readonly resources: ReadonlyArray<ResourceStaticDefinition>;
|
|
39
|
+
/** Resource template definitions to register on each session */
|
|
40
|
+
readonly resourceTemplates: ReadonlyArray<ResourceTemplateDefinition>;
|
|
41
|
+
/** Prompt definitions to register on each session */
|
|
42
|
+
readonly prompts: ReadonlyArray<PromptDefinition>;
|
|
43
|
+
/**
|
|
44
|
+
* Task tool definitions to register on each session.
|
|
45
|
+
*
|
|
46
|
+
* @experimental MCP Tasks is an experimental SDK feature
|
|
47
|
+
*/
|
|
48
|
+
readonly taskTools: ReadonlyArray<TaskToolDefinition>;
|
|
49
|
+
/**
|
|
50
|
+
* Task store for experimental task support.
|
|
51
|
+
*
|
|
52
|
+
* When task tools are present, this is automatically set to
|
|
53
|
+
* `InMemoryTaskStore` unless a custom implementation is provided.
|
|
54
|
+
*
|
|
55
|
+
* @experimental MCP Tasks is an experimental SDK feature
|
|
56
|
+
*/
|
|
57
|
+
readonly taskStore?: TaskStore | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Task message queue for experimental task support.
|
|
60
|
+
*
|
|
61
|
+
* When task tools are present, this is automatically set to
|
|
62
|
+
* `InMemoryTaskMessageQueue` unless a custom implementation is provided.
|
|
63
|
+
*
|
|
64
|
+
* @experimental MCP Tasks is an experimental SDK feature
|
|
65
|
+
*/
|
|
66
|
+
readonly taskMessageQueue?: TaskMessageQueue | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* When `true`, list handlers filter capabilities by user scopes.
|
|
69
|
+
*
|
|
70
|
+
* Only effective when definitions have `requiredScopes`.
|
|
71
|
+
* Default: `false` (spec-konform — all capabilities listed).
|
|
72
|
+
*/
|
|
73
|
+
readonly scopeFilterCapabilities?: boolean | undefined;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Creates fully-configured MCP sessions.
|
|
77
|
+
*
|
|
78
|
+
* Capabilities are pre-computed once in the constructor since the input
|
|
79
|
+
* data is immutable after server build. Each `create()` call produces
|
|
80
|
+
* a new McpSession with all primitives registered — ready for transport
|
|
81
|
+
* connection.
|
|
82
|
+
*
|
|
83
|
+
* @internal Created by McpServerBuilder — do not instantiate directly.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* const factory = new McpSessionFactory({
|
|
88
|
+
* name: 'my-server',
|
|
89
|
+
* version: '1.0.0',
|
|
90
|
+
* tools: frozenToolArray,
|
|
91
|
+
* resources: frozenResourceArray,
|
|
92
|
+
* resourceTemplates: frozenTemplateArray,
|
|
93
|
+
* prompts: frozenPromptArray,
|
|
94
|
+
* });
|
|
95
|
+
*
|
|
96
|
+
* const session = factory.create(); // Ready for transport.connect()
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export declare class McpSessionFactory {
|
|
100
|
+
private readonly config;
|
|
101
|
+
/** Pre-computed SDK capabilities (immutable after construction) */
|
|
102
|
+
private readonly computedCapabilities;
|
|
103
|
+
/** Task store instance (shared across all sessions) */
|
|
104
|
+
private readonly taskStore;
|
|
105
|
+
/** Task message queue instance (shared across all sessions) */
|
|
106
|
+
private readonly taskMessageQueue;
|
|
107
|
+
constructor(config: SessionFactoryConfig);
|
|
108
|
+
/**
|
|
109
|
+
* Creates a new MCP session with all registered primitives.
|
|
110
|
+
*
|
|
111
|
+
* Called once for stdio mode, or per-client for HTTP mode.
|
|
112
|
+
* Each session wraps one SDK McpServer (1:1 per MCP spec).
|
|
113
|
+
*
|
|
114
|
+
* Session lifecycle is managed by the SessionManager —
|
|
115
|
+
* this factory only creates and configures sessions.
|
|
116
|
+
*/
|
|
117
|
+
create(): McpSession;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=session-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-factory.d.ts","sourceRoot":"","sources":["../../../src/server/session/session-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,wBAAwB,EACxB,0BAA0B,EAC1B,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,4DAA4D,CAAC;AAM9G,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAqB9C;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,wCAAwC;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAEvD,oCAAoC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAE/C,iDAAiD;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAEzC,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAE9C,8DAA8D;IAC9D,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;IAE5D,gEAAgE;IAChE,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC;IAEtE,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAElD;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAEtD;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAE3C;;;;;;;OAOG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAEzD;;;;;OAKG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACxD;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,iBAAiB;IAUhB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATnC,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA0B;IAE/D,uDAAuD;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAElD,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;gBAEnC,MAAM,EAAE,oBAAoB;IA4BzD;;;;;;;;OAQG;IACH,MAAM,IAAI,UAAU;CAwDrB"}
|