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,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Registry
|
|
3
|
+
*
|
|
4
|
+
* Generic abstract base class for MCP registries (Tools, Resources, Prompts).
|
|
5
|
+
* Extracts common functionality to reduce code duplication.
|
|
6
|
+
*
|
|
7
|
+
* @module mcp/capabilities/registry/base-registry
|
|
8
|
+
*/
|
|
9
|
+
import { logger as baseLogger } from "../../../logger/index.js";
|
|
10
|
+
import { RegistryError } from "../../../errors/index.js";
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// Logger
|
|
13
|
+
// ============================================================================
|
|
14
|
+
const LOG_COMPONENT = "registry";
|
|
15
|
+
const LogMessages = {
|
|
16
|
+
REGISTERED: "%s registered: %s",
|
|
17
|
+
REPLACED: "%s replaced: %s",
|
|
18
|
+
CLEARED: "%s registry cleared (%d item(s) removed)",
|
|
19
|
+
};
|
|
20
|
+
const logger = baseLogger.child({ component: LOG_COMPONENT });
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// Base Registry Class
|
|
23
|
+
// ============================================================================
|
|
24
|
+
/**
|
|
25
|
+
* Abstract base class for MCP registries.
|
|
26
|
+
*
|
|
27
|
+
* Provides common functionality:
|
|
28
|
+
* - Registration (with duplicate checking)
|
|
29
|
+
* - Lookup by name
|
|
30
|
+
* - Iteration and size
|
|
31
|
+
* - Clear/unregister operations
|
|
32
|
+
*
|
|
33
|
+
* @typeParam T - The item type (must have a `name` property)
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* class ToolRegistry extends BaseRegistry<Tool> {
|
|
38
|
+
* // Add tool-specific methods here
|
|
39
|
+
* }
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export class BaseRegistry {
|
|
43
|
+
/** Internal storage */
|
|
44
|
+
items = new Map();
|
|
45
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
46
|
+
// Registration
|
|
47
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
48
|
+
/**
|
|
49
|
+
* Register a new item. Throws if name already exists.
|
|
50
|
+
*
|
|
51
|
+
* @param item - Item to register
|
|
52
|
+
* @throws If an item with the same name is already registered
|
|
53
|
+
*/
|
|
54
|
+
register(item) {
|
|
55
|
+
if (this.items.has(item.name)) {
|
|
56
|
+
throw RegistryError.duplicate(this.itemTypeName, item.name);
|
|
57
|
+
}
|
|
58
|
+
this.items.set(item.name, item);
|
|
59
|
+
logger.trace(LogMessages.REGISTERED, this.itemTypeName, item.name);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Register or replace an existing item.
|
|
63
|
+
*
|
|
64
|
+
* @param item - Item to register/replace
|
|
65
|
+
* @returns true if replaced, false if new
|
|
66
|
+
*/
|
|
67
|
+
registerOrReplace(item) {
|
|
68
|
+
const existed = this.items.has(item.name);
|
|
69
|
+
this.items.set(item.name, item);
|
|
70
|
+
if (existed) {
|
|
71
|
+
logger.trace(LogMessages.REPLACED, this.itemTypeName, item.name);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
logger.trace(LogMessages.REGISTERED, this.itemTypeName, item.name);
|
|
75
|
+
}
|
|
76
|
+
return existed;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Unregister an item by name.
|
|
80
|
+
*
|
|
81
|
+
* @param name - Name of the item to remove
|
|
82
|
+
* @returns true if removed, false if not found
|
|
83
|
+
*/
|
|
84
|
+
unregister(name) {
|
|
85
|
+
return this.items.delete(name);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Clear all items from the registry.
|
|
89
|
+
*/
|
|
90
|
+
clear() {
|
|
91
|
+
const count = this.items.size;
|
|
92
|
+
this.items.clear();
|
|
93
|
+
if (count > 0) {
|
|
94
|
+
logger.trace(LogMessages.CLEARED, this.itemTypeName, count);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
98
|
+
// Lookup
|
|
99
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
100
|
+
/**
|
|
101
|
+
* Get an item by name.
|
|
102
|
+
*
|
|
103
|
+
* @param name - Name of the item
|
|
104
|
+
* @returns The item or undefined
|
|
105
|
+
*/
|
|
106
|
+
get(name) {
|
|
107
|
+
return this.items.get(name);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Check if an item exists.
|
|
111
|
+
*
|
|
112
|
+
* @param name - Name to check
|
|
113
|
+
* @returns true if exists
|
|
114
|
+
*/
|
|
115
|
+
has(name) {
|
|
116
|
+
return this.items.has(name);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get all registered items.
|
|
120
|
+
*
|
|
121
|
+
* @returns Readonly array of all items
|
|
122
|
+
*/
|
|
123
|
+
getAll() {
|
|
124
|
+
return Array.from(this.items.values());
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Number of registered items.
|
|
128
|
+
*/
|
|
129
|
+
get size() {
|
|
130
|
+
return this.items.size;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Iterate over all items.
|
|
134
|
+
*/
|
|
135
|
+
[Symbol.iterator]() {
|
|
136
|
+
return this.items.values();
|
|
137
|
+
}
|
|
138
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
139
|
+
// Abstract / Override
|
|
140
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
141
|
+
/**
|
|
142
|
+
* Human-readable name for error messages (e.g., "Tool", "Resource").
|
|
143
|
+
* Override in subclasses.
|
|
144
|
+
*/
|
|
145
|
+
get itemTypeName() {
|
|
146
|
+
return "Item";
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=base-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-registry.js","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/base-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry Module
|
|
3
|
+
*
|
|
4
|
+
* Provides registry classes that implement Provider interfaces for direct use
|
|
5
|
+
* with McpServerBuilder. Each registry also provides `static bindToSdk()` for
|
|
6
|
+
* registering definitions with MCP SDK server instances.
|
|
7
|
+
*
|
|
8
|
+
* @module mcp/capabilities/registry
|
|
9
|
+
*/
|
|
10
|
+
export { BaseRegistry, type RegistryItem } from "./base-registry.js";
|
|
11
|
+
export { ToolRegistry, globalToolRegistry, type ToolBindOptions } from "./tool-registry.js";
|
|
12
|
+
export { ResourceRegistry, globalResourceRegistry, type ResourceBindOptions } from "./resource-registry.js";
|
|
13
|
+
export { PromptRegistry, globalPromptRegistry, type PromptBindOptions } from "./prompt-registry.js";
|
|
14
|
+
export { TaskToolRegistry, globalTaskToolRegistry, type TaskToolBindOptions } from "./task-tool-registry.js";
|
|
15
|
+
export { resetAllRegistries } from "./reset.js";
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMrE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAM5F,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAM5G,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAMpG,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAM7G,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry Module
|
|
3
|
+
*
|
|
4
|
+
* Provides registry classes that implement Provider interfaces for direct use
|
|
5
|
+
* with McpServerBuilder. Each registry also provides `static bindToSdk()` for
|
|
6
|
+
* registering definitions with MCP SDK server instances.
|
|
7
|
+
*
|
|
8
|
+
* @module mcp/capabilities/registry
|
|
9
|
+
*/
|
|
10
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
11
|
+
// Base Registry
|
|
12
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
13
|
+
export { BaseRegistry } from "./base-registry.js";
|
|
14
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
15
|
+
// Tool Registry
|
|
16
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
17
|
+
export { ToolRegistry, globalToolRegistry } from "./tool-registry.js";
|
|
18
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
19
|
+
// Resource Registry
|
|
20
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
21
|
+
export { ResourceRegistry, globalResourceRegistry } from "./resource-registry.js";
|
|
22
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
23
|
+
// Prompt Registry
|
|
24
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
25
|
+
export { PromptRegistry, globalPromptRegistry } from "./prompt-registry.js";
|
|
26
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
27
|
+
// Task Tool Registry
|
|
28
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
29
|
+
export { TaskToolRegistry, globalTaskToolRegistry } from "./task-tool-registry.js";
|
|
30
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
31
|
+
// Lifecycle Utilities
|
|
32
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
33
|
+
export { resetAllRegistries } from "./reset.js";
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAqB,MAAM,oBAAoB,CAAC;AAErE,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAwB,MAAM,oBAAoB,CAAC;AAE5F,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAA4B,MAAM,wBAAwB,CAAC;AAE5G,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAA0B,MAAM,sBAAsB,CAAC;AAEpG,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAA4B,MAAM,yBAAyB,CAAC;AAE7G,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Registry
|
|
3
|
+
*
|
|
4
|
+
* Global registry for MCP prompts that implements PromptProvider.
|
|
5
|
+
* Extends BaseRegistry for common CRUD operations.
|
|
6
|
+
*
|
|
7
|
+
* The registry is the single authority for prompt definitions:
|
|
8
|
+
* - Storage: CRUD operations via BaseRegistry
|
|
9
|
+
* - SDK Binding: `bindToSdk()` registers prompts with MCP SDK server instances
|
|
10
|
+
*
|
|
11
|
+
* @module mcp/capabilities/registry/prompt-registry
|
|
12
|
+
*/
|
|
13
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
14
|
+
import type { z } from "zod";
|
|
15
|
+
import type { PromptDefinition, PromptProvider } from "../../types/index.js";
|
|
16
|
+
import type { Logger } from "../../../logger/index.js";
|
|
17
|
+
import { BaseRegistry } from "./base-registry.js";
|
|
18
|
+
/**
|
|
19
|
+
* Options for binding prompts to an MCP SDK server.
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
export interface PromptBindOptions {
|
|
23
|
+
readonly logger: Logger;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Registry for MCP prompts that implements PromptProvider.
|
|
27
|
+
*
|
|
28
|
+
* Extends BaseRegistry for standard CRUD operations (register, get, has, etc.)
|
|
29
|
+
* and provides `bindToSdk()` for registering prompts with MCP SDK server instances.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* import { promptRegistry, definePrompt } from 'mcp-server-framework';
|
|
34
|
+
*
|
|
35
|
+
* // Prompts are auto-registered via definePrompt()
|
|
36
|
+
* definePrompt({ name: 'explain', ... });
|
|
37
|
+
*
|
|
38
|
+
* // Registry can be used directly as a provider
|
|
39
|
+
* builder.withPromptProvider(promptRegistry);
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare class PromptRegistry extends BaseRegistry<PromptDefinition> implements PromptProvider {
|
|
43
|
+
/**
|
|
44
|
+
* Creates an isolated PromptRegistry (no shared global state).
|
|
45
|
+
*
|
|
46
|
+
* Use for testing or when multiple independent registries are needed.
|
|
47
|
+
*/
|
|
48
|
+
static createIsolated(): PromptRegistry;
|
|
49
|
+
protected get itemTypeName(): string;
|
|
50
|
+
/**
|
|
51
|
+
* Register a prompt from a generic factory function.
|
|
52
|
+
*
|
|
53
|
+
* Centralizes TypeScript generic variance handling. `PromptDefinition<TInput>`
|
|
54
|
+
* is invariant — `TInput` appears in both covariant (input property) and
|
|
55
|
+
* contravariant (generate parameter) positions via Zod's type mapping.
|
|
56
|
+
* TypeScript requires `as unknown as` because neither type sufficiently
|
|
57
|
+
* overlaps with the other (invariance).
|
|
58
|
+
*
|
|
59
|
+
* @internal Used by definePrompt() — prefer registerOrReplace() for non-generic usage.
|
|
60
|
+
*/
|
|
61
|
+
registerFromFactory<TInput extends z.AnyZodObject>(prompt: PromptDefinition<TInput>): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Get all registered prompts.
|
|
64
|
+
*/
|
|
65
|
+
getPrompts(): ReadonlyArray<PromptDefinition>;
|
|
66
|
+
/**
|
|
67
|
+
* Check if provider has any prompts.
|
|
68
|
+
*/
|
|
69
|
+
hasPrompts(): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Registers prompt definitions with an MCP SDK server instance.
|
|
72
|
+
*
|
|
73
|
+
* Each prompt is registered with:
|
|
74
|
+
* - Schema extraction for SDK's raw shape format
|
|
75
|
+
* - Completable wrapping for prompt autocompletion
|
|
76
|
+
* - OpenTelemetry tracing spans
|
|
77
|
+
* - Structured error handling and logging
|
|
78
|
+
*
|
|
79
|
+
* @param sdk - The MCP SDK server instance
|
|
80
|
+
* @param prompts - Prompt definitions to register
|
|
81
|
+
* @param options - Registration context (logger)
|
|
82
|
+
* @internal
|
|
83
|
+
*/
|
|
84
|
+
static bindToSdk(sdk: McpServer, prompts: readonly PromptDefinition[], options: PromptBindOptions): void;
|
|
85
|
+
/**
|
|
86
|
+
* Extracts the raw shape from a ZodObject for SDK prompt registration.
|
|
87
|
+
*
|
|
88
|
+
* @sdk-constraint — The SDK's `registerPrompt()` passes `argsSchema` directly to
|
|
89
|
+
* `objectFromShape()`, which expects a `Record<string, ZodType>` (raw shape),
|
|
90
|
+
* NOT a ZodObject instance. In contrast, `registerTool()` uses `getZodSchemaObject()`
|
|
91
|
+
* which handles both ZodObject and raw shapes. This asymmetry requires explicit
|
|
92
|
+
* shape extraction for prompts.
|
|
93
|
+
*
|
|
94
|
+
* @param schema - A ZodObject schema (e.g. `z.object({ name: z.string() })`)
|
|
95
|
+
* @returns The raw shape object (e.g. `{ name: z.string() }`) or undefined
|
|
96
|
+
*/
|
|
97
|
+
private static extractPromptArgsShape;
|
|
98
|
+
/**
|
|
99
|
+
* Wraps Zod schema shape fields with SDK's `completable()` for prompt autocompletion.
|
|
100
|
+
*
|
|
101
|
+
* When a prompt defines a `complete` callback, each field in the args schema is wrapped
|
|
102
|
+
* so the SDK's built-in completion handler can invoke the callback per-field.
|
|
103
|
+
*
|
|
104
|
+
* @sdk-constraint — The SDK checks `isCompletable(field)` on each Zod schema field
|
|
105
|
+
* and uses `getCompleter(field)` to get the completion callback.
|
|
106
|
+
*/
|
|
107
|
+
private static wrapShapeWithCompletable;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Global prompt registry singleton.
|
|
111
|
+
*
|
|
112
|
+
* This instance is used by definePrompt() for auto-registration
|
|
113
|
+
* and by createServer() to discover all prompts.
|
|
114
|
+
*/
|
|
115
|
+
export declare const globalPromptRegistry: PromptRegistry;
|
|
116
|
+
//# sourceMappingURL=prompt-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-registry.d.ts","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/prompt-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,gBAAgB,EAAiB,cAAc,EAAsB,MAAM,sBAAsB,CAAC;AAChH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAmBlD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,cAAe,SAAQ,YAAY,CAAC,gBAAgB,CAAE,YAAW,cAAc;IAK1F;;;;OAIG;IACH,MAAM,CAAC,cAAc,IAAI,cAAc;IAOvC,cAAuB,YAAY,IAAI,MAAM,CAE5C;IAMD;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,MAAM,SAAS,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,OAAO;IAS7F;;OAEG;IACH,UAAU,IAAI,aAAa,CAAC,gBAAgB,CAAC;IAI7C;;OAEG;IACH,UAAU,IAAI,OAAO;IAQrB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,gBAAgB,EAAE,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IA6ExG;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAarC;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;CA6BxC;AAMD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,gBAAuB,CAAC"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Registry
|
|
3
|
+
*
|
|
4
|
+
* Global registry for MCP prompts that implements PromptProvider.
|
|
5
|
+
* Extends BaseRegistry for common CRUD operations.
|
|
6
|
+
*
|
|
7
|
+
* The registry is the single authority for prompt definitions:
|
|
8
|
+
* - Storage: CRUD operations via BaseRegistry
|
|
9
|
+
* - SDK Binding: `bindToSdk()` registers prompts with MCP SDK server instances
|
|
10
|
+
*
|
|
11
|
+
* @module mcp/capabilities/registry/prompt-registry
|
|
12
|
+
*/
|
|
13
|
+
import { completable } from "@modelcontextprotocol/sdk/server/completable.js";
|
|
14
|
+
import { McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js";
|
|
15
|
+
import { withSpan, MCP_ATTRIBUTES, SpanKind } from "../../../telemetry/index.js";
|
|
16
|
+
import { BaseRegistry } from "./base-registry.js";
|
|
17
|
+
import { enforceScopeOrThrow } from "./scope-enforcement.js";
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Constants
|
|
20
|
+
// ============================================================================
|
|
21
|
+
const SdkBindingMessages = {
|
|
22
|
+
PROMPTS_REGISTERED: "Registered %d prompts with SDK",
|
|
23
|
+
PROMPT_REGISTERED: "Registered prompt: %s",
|
|
24
|
+
NO_PROMPTS: "No prompts to register",
|
|
25
|
+
PROMPT_GETTING: "Getting prompt: %s with args %j",
|
|
26
|
+
PROMPT_ERROR: "Error generating prompt %s: %s",
|
|
27
|
+
};
|
|
28
|
+
// ============================================================================
|
|
29
|
+
// Prompt Registry Class
|
|
30
|
+
// ============================================================================
|
|
31
|
+
/**
|
|
32
|
+
* Registry for MCP prompts that implements PromptProvider.
|
|
33
|
+
*
|
|
34
|
+
* Extends BaseRegistry for standard CRUD operations (register, get, has, etc.)
|
|
35
|
+
* and provides `bindToSdk()` for registering prompts with MCP SDK server instances.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* import { promptRegistry, definePrompt } from 'mcp-server-framework';
|
|
40
|
+
*
|
|
41
|
+
* // Prompts are auto-registered via definePrompt()
|
|
42
|
+
* definePrompt({ name: 'explain', ... });
|
|
43
|
+
*
|
|
44
|
+
* // Registry can be used directly as a provider
|
|
45
|
+
* builder.withPromptProvider(promptRegistry);
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export class PromptRegistry extends BaseRegistry {
|
|
49
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
50
|
+
// Factory
|
|
51
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
52
|
+
/**
|
|
53
|
+
* Creates an isolated PromptRegistry (no shared global state).
|
|
54
|
+
*
|
|
55
|
+
* Use for testing or when multiple independent registries are needed.
|
|
56
|
+
*/
|
|
57
|
+
static createIsolated() {
|
|
58
|
+
return new PromptRegistry();
|
|
59
|
+
}
|
|
60
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
61
|
+
// BaseRegistry Override
|
|
62
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
63
|
+
get itemTypeName() {
|
|
64
|
+
return "Prompt";
|
|
65
|
+
}
|
|
66
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
67
|
+
// Generic Registration (Variance-Safe)
|
|
68
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
69
|
+
/**
|
|
70
|
+
* Register a prompt from a generic factory function.
|
|
71
|
+
*
|
|
72
|
+
* Centralizes TypeScript generic variance handling. `PromptDefinition<TInput>`
|
|
73
|
+
* is invariant — `TInput` appears in both covariant (input property) and
|
|
74
|
+
* contravariant (generate parameter) positions via Zod's type mapping.
|
|
75
|
+
* TypeScript requires `as unknown as` because neither type sufficiently
|
|
76
|
+
* overlaps with the other (invariance).
|
|
77
|
+
*
|
|
78
|
+
* @internal Used by definePrompt() — prefer registerOrReplace() for non-generic usage.
|
|
79
|
+
*/
|
|
80
|
+
registerFromFactory(prompt) {
|
|
81
|
+
// @type-variance — Generic input erased for homogeneous storage; SDK validates at runtime
|
|
82
|
+
return this.registerOrReplace(prompt);
|
|
83
|
+
}
|
|
84
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
85
|
+
// PromptProvider Implementation
|
|
86
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
87
|
+
/**
|
|
88
|
+
* Get all registered prompts.
|
|
89
|
+
*/
|
|
90
|
+
getPrompts() {
|
|
91
|
+
return this.getAll();
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Check if provider has any prompts.
|
|
95
|
+
*/
|
|
96
|
+
hasPrompts() {
|
|
97
|
+
return this.size > 0;
|
|
98
|
+
}
|
|
99
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
100
|
+
// SDK Binding
|
|
101
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
102
|
+
/**
|
|
103
|
+
* Registers prompt definitions with an MCP SDK server instance.
|
|
104
|
+
*
|
|
105
|
+
* Each prompt is registered with:
|
|
106
|
+
* - Schema extraction for SDK's raw shape format
|
|
107
|
+
* - Completable wrapping for prompt autocompletion
|
|
108
|
+
* - OpenTelemetry tracing spans
|
|
109
|
+
* - Structured error handling and logging
|
|
110
|
+
*
|
|
111
|
+
* @param sdk - The MCP SDK server instance
|
|
112
|
+
* @param prompts - Prompt definitions to register
|
|
113
|
+
* @param options - Registration context (logger)
|
|
114
|
+
* @internal
|
|
115
|
+
*/
|
|
116
|
+
static bindToSdk(sdk, prompts, options) {
|
|
117
|
+
const { logger } = options;
|
|
118
|
+
if (prompts.length === 0) {
|
|
119
|
+
logger.trace(SdkBindingMessages.NO_PROMPTS);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
logger.trace(SdkBindingMessages.PROMPTS_REGISTERED, prompts.length);
|
|
123
|
+
for (const prompt of prompts) {
|
|
124
|
+
// @sdk-constraint — SDK registerPrompt expects PromptArgsRawShape (Record<string, ZodType>),
|
|
125
|
+
// NOT a ZodObject.
|
|
126
|
+
const argsShape = PromptRegistry.extractPromptArgsShape(prompt.input);
|
|
127
|
+
// Wrap schema fields with SDK's completable() when a complete callback is provided
|
|
128
|
+
const completableShape = argsShape && prompt.complete
|
|
129
|
+
? PromptRegistry.wrapShapeWithCompletable(argsShape, prompt.complete, logger)
|
|
130
|
+
: argsShape;
|
|
131
|
+
const config = {
|
|
132
|
+
description: prompt.description,
|
|
133
|
+
...(completableShape && { argsSchema: completableShape }),
|
|
134
|
+
};
|
|
135
|
+
// @sdk-constraint — registerPrompt generic requires PromptArgsRawShape; config carries extracted shape
|
|
136
|
+
sdk.registerPrompt(prompt.name, config, async (args, extra) => {
|
|
137
|
+
// Scope enforcement (RBAC)
|
|
138
|
+
enforceScopeOrThrow(prompt.requiredScopes, extra.authInfo, "Prompt", prompt.name, logger);
|
|
139
|
+
return withSpan(`mcp.prompt.${prompt.name}`, async (span) => {
|
|
140
|
+
span.setAttributes({
|
|
141
|
+
[MCP_ATTRIBUTES.PROMPT_NAME]: prompt.name,
|
|
142
|
+
[MCP_ATTRIBUTES.OPERATION]: "prompt_generate",
|
|
143
|
+
});
|
|
144
|
+
logger.trace(SdkBindingMessages.PROMPT_GETTING, prompt.name, args);
|
|
145
|
+
try {
|
|
146
|
+
// @sdk-constraint — SDK prompt callback types args as unknown
|
|
147
|
+
const messages = await prompt.generate(args);
|
|
148
|
+
span.setAttribute(MCP_ATTRIBUTES.RESULT_CONTENT_COUNT, messages.length);
|
|
149
|
+
return {
|
|
150
|
+
messages: messages.map((m) => ({
|
|
151
|
+
role: m.role,
|
|
152
|
+
content: { type: "text", text: m.content },
|
|
153
|
+
})),
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
158
|
+
logger.error(SdkBindingMessages.PROMPT_ERROR, prompt.name, msg);
|
|
159
|
+
throw new McpError(ErrorCode.InternalError, `Prompt '${prompt.name}' failed: ${msg}`);
|
|
160
|
+
}
|
|
161
|
+
}, { kind: SpanKind.SERVER });
|
|
162
|
+
});
|
|
163
|
+
logger.trace(SdkBindingMessages.PROMPT_REGISTERED, prompt.name);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
167
|
+
// Private SDK Binding Helpers
|
|
168
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
169
|
+
/**
|
|
170
|
+
* Extracts the raw shape from a ZodObject for SDK prompt registration.
|
|
171
|
+
*
|
|
172
|
+
* @sdk-constraint — The SDK's `registerPrompt()` passes `argsSchema` directly to
|
|
173
|
+
* `objectFromShape()`, which expects a `Record<string, ZodType>` (raw shape),
|
|
174
|
+
* NOT a ZodObject instance. In contrast, `registerTool()` uses `getZodSchemaObject()`
|
|
175
|
+
* which handles both ZodObject and raw shapes. This asymmetry requires explicit
|
|
176
|
+
* shape extraction for prompts.
|
|
177
|
+
*
|
|
178
|
+
* @param schema - A ZodObject schema (e.g. `z.object({ name: z.string() })`)
|
|
179
|
+
* @returns The raw shape object (e.g. `{ name: z.string() }`) or undefined
|
|
180
|
+
*/
|
|
181
|
+
static extractPromptArgsShape(schema) {
|
|
182
|
+
if (!schema)
|
|
183
|
+
return undefined;
|
|
184
|
+
// @type-narrowing — ZodObject.shape is typed as ZodRawShape (Record<string, ZodTypeAny>)
|
|
185
|
+
const shape = schema.shape;
|
|
186
|
+
// Empty shapes are valid — SDK handles them (creates z4mini.object({}))
|
|
187
|
+
// but skipping registration entirely for empty schemas is cleaner
|
|
188
|
+
if (Object.keys(shape).length === 0)
|
|
189
|
+
return undefined;
|
|
190
|
+
return shape;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Wraps Zod schema shape fields with SDK's `completable()` for prompt autocompletion.
|
|
194
|
+
*
|
|
195
|
+
* When a prompt defines a `complete` callback, each field in the args schema is wrapped
|
|
196
|
+
* so the SDK's built-in completion handler can invoke the callback per-field.
|
|
197
|
+
*
|
|
198
|
+
* @sdk-constraint — The SDK checks `isCompletable(field)` on each Zod schema field
|
|
199
|
+
* and uses `getCompleter(field)` to get the completion callback.
|
|
200
|
+
*/
|
|
201
|
+
static wrapShapeWithCompletable(shape, complete, logger) {
|
|
202
|
+
const wrapped = {};
|
|
203
|
+
for (const [fieldName, fieldSchema] of Object.entries(shape)) {
|
|
204
|
+
// Clone the schema before wrapping — completable() mutates the Zod object via
|
|
205
|
+
// Object.defineProperty with configurable:false. Since definitions are global
|
|
206
|
+
// singletons (DD-002), a second session would fail with "Cannot redefine property".
|
|
207
|
+
const cloned = fieldSchema.describe(fieldSchema.description ?? "");
|
|
208
|
+
wrapped[fieldName] = completable(cloned, async (value) => {
|
|
209
|
+
try {
|
|
210
|
+
const result = await complete(fieldName, value);
|
|
211
|
+
return result.values;
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
logger.warn("Completion callback failed for field '%s': %s", fieldName, error instanceof Error ? error.message : String(error));
|
|
215
|
+
return [];
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
return wrapped;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// ============================================================================
|
|
223
|
+
// Global Singleton Instance
|
|
224
|
+
// ============================================================================
|
|
225
|
+
/**
|
|
226
|
+
* Global prompt registry singleton.
|
|
227
|
+
*
|
|
228
|
+
* This instance is used by definePrompt() for auto-registration
|
|
229
|
+
* and by createServer() to discover all prompts.
|
|
230
|
+
*/
|
|
231
|
+
export const globalPromptRegistry = new PromptRegistry();
|
|
232
|
+
//# sourceMappingURL=prompt-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-registry.js","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/prompt-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry Reset Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides a lifecycle function to reset all global registries.
|
|
5
|
+
* Keeps the barrel file (index.ts) free of implementation logic.
|
|
6
|
+
*
|
|
7
|
+
* @module mcp/capabilities/registry/reset
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Reset all global registries.
|
|
11
|
+
*
|
|
12
|
+
* Clears all registered tools, resources, resource templates, and prompts
|
|
13
|
+
* from the global singleton registries. After calling this, all `define*()`
|
|
14
|
+
* calls must be re-executed to repopulate the registries.
|
|
15
|
+
*
|
|
16
|
+
* **Use cases:**
|
|
17
|
+
* - Hot-reload during development
|
|
18
|
+
* - Server restart / lifecycle management
|
|
19
|
+
* - Isolated testing scenarios
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { resetAllRegistries } from 'mcp-server-framework';
|
|
24
|
+
*
|
|
25
|
+
* // Before re-registering tools in a hot-reload scenario
|
|
26
|
+
* resetAllRegistries();
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function resetAllRegistries(): void;
|
|
30
|
+
//# sourceMappingURL=reset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../../src/mcp/capabilities/registry/reset.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAkBH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAMzC"}
|