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,459 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger Facade Module
|
|
3
|
+
*
|
|
4
|
+
* Provides a unified logging interface that delegates to specialized components:
|
|
5
|
+
* - Context management via core/context.ts
|
|
6
|
+
* - Formatting via formatters/ (Text/JSON)
|
|
7
|
+
* - Output via writers/ (Console/File/MCP)
|
|
8
|
+
* - Security via scrubbing/ (SecretScrubber/InjectionGuard)
|
|
9
|
+
* - Resource management via factory.ts (DI-enabled)
|
|
10
|
+
*
|
|
11
|
+
* This facade follows the Single Responsibility Principle by coordinating
|
|
12
|
+
* the logging pipeline without implementing the details itself.
|
|
13
|
+
*
|
|
14
|
+
* @module logger
|
|
15
|
+
*/
|
|
16
|
+
import * as util from "util";
|
|
17
|
+
import { LOG_LEVELS, MAX_MESSAGE_LENGTH, TRUNCATION_SUFFIX, DEFAULT_LOG_LEVEL, DEFAULT_SERVICE_NAME, } from "./core/constants.js";
|
|
18
|
+
import { runWithContext, getContext, mergeContext, createChildContext, withExtendedContext, withChildContext, getContextDepth, } from "./core/context.js";
|
|
19
|
+
import { extractTraceContext } from "./core/trace-context.js";
|
|
20
|
+
// Factory for DI-enabled resource management
|
|
21
|
+
import { LoggerResources, initializeLoggerResources, hasLoggerResources, getLoggerResources, resetLoggerResources, _setLoggerResources, } from "./factory.js";
|
|
22
|
+
export { LoggerResources, initializeLoggerResources, resetLoggerResources };
|
|
23
|
+
/**
|
|
24
|
+
* Default logger configuration.
|
|
25
|
+
* Used when no explicit config is provided.
|
|
26
|
+
*/
|
|
27
|
+
const DEFAULT_LOGGER_CONFIG = {
|
|
28
|
+
LOG_LEVEL: DEFAULT_LOG_LEVEL,
|
|
29
|
+
LOG_FORMAT: "text",
|
|
30
|
+
MCP_TRANSPORT: "http",
|
|
31
|
+
// @node-api — process.env.* returns string | undefined; config requires string literal union
|
|
32
|
+
NODE_ENV: process.env.NODE_ENV ?? "development",
|
|
33
|
+
SERVER_NAME: DEFAULT_SERVICE_NAME,
|
|
34
|
+
SERVER_VERSION: "0.0.0",
|
|
35
|
+
};
|
|
36
|
+
/** Global logger configuration storage */
|
|
37
|
+
let globalLoggerConfig = { ...DEFAULT_LOGGER_CONFIG };
|
|
38
|
+
/**
|
|
39
|
+
* Configure the global logger settings.
|
|
40
|
+
* Should be called once at application startup before creating loggers.
|
|
41
|
+
*
|
|
42
|
+
* @param config - Logger configuration options
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* // In app initialization
|
|
47
|
+
* configureLogger({
|
|
48
|
+
* LOG_LEVEL: config.LOG_LEVEL,
|
|
49
|
+
* LOG_FORMAT: config.LOG_FORMAT,
|
|
50
|
+
* MCP_TRANSPORT: config.MCP_TRANSPORT,
|
|
51
|
+
* NODE_ENV: config.NODE_ENV,
|
|
52
|
+
* LOG_DIR: config.LOG_DIR,
|
|
53
|
+
* SERVER_NAME: 'mcp-server',
|
|
54
|
+
* SERVER_VERSION: '1.0.0',
|
|
55
|
+
* });
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export function configureLogger(config) {
|
|
59
|
+
globalLoggerConfig = { ...globalLoggerConfig, ...config };
|
|
60
|
+
// Close and reset resources so the next log call re-creates them with the new config.
|
|
61
|
+
// This is necessary because LoggerResources captures formatter settings
|
|
62
|
+
// (e.g., includeTimestamp, includeComponent) at construction time.
|
|
63
|
+
// Must use resetLoggerResources() (not _setLoggerResources(null)) to properly
|
|
64
|
+
// close existing FileWriter streams and clear rotation/retention timers.
|
|
65
|
+
if (hasLoggerResources()) {
|
|
66
|
+
void resetLoggerResources();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get the current global logger configuration.
|
|
71
|
+
*/
|
|
72
|
+
export function getLoggerConfig() {
|
|
73
|
+
return globalLoggerConfig;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Reset the global logger configuration to defaults.
|
|
77
|
+
* Primarily for testing.
|
|
78
|
+
*/
|
|
79
|
+
export function resetLoggerConfig() {
|
|
80
|
+
globalLoggerConfig = { ...DEFAULT_LOGGER_CONFIG };
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Centralized Logger Facade
|
|
84
|
+
*
|
|
85
|
+
* Coordinates the logging pipeline:
|
|
86
|
+
* 1. Level filtering
|
|
87
|
+
* 2. Message formatting (printf-style)
|
|
88
|
+
* 3. Metadata extraction
|
|
89
|
+
* 4. Secret scrubbing
|
|
90
|
+
* 5. Formatting (Text/JSON)
|
|
91
|
+
* 6. Injection prevention
|
|
92
|
+
* 7. Output to writers (Console/File/MCP)
|
|
93
|
+
*
|
|
94
|
+
* Now uses LoggerResources for DI-enabled resource management,
|
|
95
|
+
* eliminating the static state anti-pattern while maintaining
|
|
96
|
+
* backward compatibility through lazy global initialization.
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```typescript
|
|
100
|
+
* // Simple usage (global resources)
|
|
101
|
+
* const logger = new Logger('api');
|
|
102
|
+
* logger.info('Request received', { method: 'GET', path: '/health' });
|
|
103
|
+
*
|
|
104
|
+
* // DI usage (custom resources for testing)
|
|
105
|
+
* const resources = new LoggerResources(config, mockDeps);
|
|
106
|
+
* const testLogger = new Logger({ component: 'test', resources });
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export class Logger {
|
|
110
|
+
// ============================================================
|
|
111
|
+
// Instance properties
|
|
112
|
+
// ============================================================
|
|
113
|
+
/** Override log level (if set in options, otherwise uses global config) */
|
|
114
|
+
levelOverride;
|
|
115
|
+
/** Component name for this logger instance */
|
|
116
|
+
component;
|
|
117
|
+
/** Explicitly injected resources (DI/testing only) — `null` means use global */
|
|
118
|
+
_injectedResources;
|
|
119
|
+
/** Resolve the active resources: injected for DI, otherwise global (dynamic). */
|
|
120
|
+
get resources() {
|
|
121
|
+
return this._injectedResources ?? Logger.getOrInitializeResources();
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get the effective log level (numeric for fast comparison).
|
|
125
|
+
* Uses override if set, otherwise reads from global config dynamically.
|
|
126
|
+
*/
|
|
127
|
+
get level() {
|
|
128
|
+
const effectiveLevel = this.levelOverride ?? getLoggerConfig().LOG_LEVEL;
|
|
129
|
+
return LOG_LEVELS[effectiveLevel];
|
|
130
|
+
}
|
|
131
|
+
// ============================================================
|
|
132
|
+
// Constructor and Initialization
|
|
133
|
+
// ============================================================
|
|
134
|
+
/**
|
|
135
|
+
* Create a new Logger instance.
|
|
136
|
+
*
|
|
137
|
+
* @param componentOrOptions - Component name string or options object
|
|
138
|
+
*/
|
|
139
|
+
constructor(componentOrOptions = "server") {
|
|
140
|
+
if (typeof componentOrOptions === "string") {
|
|
141
|
+
this.component = componentOrOptions;
|
|
142
|
+
this.levelOverride = undefined; // Use global config dynamically
|
|
143
|
+
this._injectedResources = null; // Resolve from global on each log call
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
this.component = componentOrOptions.component ?? "server";
|
|
147
|
+
this.levelOverride = componentOrOptions.level; // Override if explicitly set
|
|
148
|
+
this._injectedResources = componentOrOptions.resources ?? null;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Get or initialize global resources lazily.
|
|
153
|
+
* Provides backward compatibility with existing code.
|
|
154
|
+
*/
|
|
155
|
+
static getOrInitializeResources() {
|
|
156
|
+
if (!hasLoggerResources()) {
|
|
157
|
+
const cfg = getLoggerConfig();
|
|
158
|
+
initializeLoggerResources({
|
|
159
|
+
level: cfg.LOG_LEVEL,
|
|
160
|
+
format: cfg.LOG_FORMAT,
|
|
161
|
+
transport: cfg.MCP_TRANSPORT,
|
|
162
|
+
serviceName: cfg.SERVER_NAME,
|
|
163
|
+
serviceVersion: cfg.SERVER_VERSION,
|
|
164
|
+
environment: cfg.NODE_ENV,
|
|
165
|
+
...(cfg.LOG_DIR !== undefined && { logDir: cfg.LOG_DIR }),
|
|
166
|
+
...(cfg.LOG_MAX_FILE_SIZE !== undefined && {
|
|
167
|
+
maxFileSize: cfg.LOG_MAX_FILE_SIZE,
|
|
168
|
+
}),
|
|
169
|
+
...(cfg.LOG_MAX_FILES !== undefined && { maxFiles: cfg.LOG_MAX_FILES }),
|
|
170
|
+
...(cfg.LOG_RETENTION_DAYS !== undefined && {
|
|
171
|
+
retentionDays: cfg.LOG_RETENTION_DAYS,
|
|
172
|
+
}),
|
|
173
|
+
...(cfg.LOG_TIMESTAMP !== undefined && {
|
|
174
|
+
includeTimestamp: cfg.LOG_TIMESTAMP,
|
|
175
|
+
}),
|
|
176
|
+
...(cfg.LOG_COMPONENT !== undefined && {
|
|
177
|
+
includeComponent: cfg.LOG_COMPONENT,
|
|
178
|
+
}),
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
return getLoggerResources();
|
|
182
|
+
}
|
|
183
|
+
// ============================================================
|
|
184
|
+
// Static Lifecycle Methods
|
|
185
|
+
// ============================================================
|
|
186
|
+
/**
|
|
187
|
+
* Close all writers gracefully.
|
|
188
|
+
* Should be called during application shutdown.
|
|
189
|
+
*
|
|
190
|
+
* @returns Promise that resolves when all writers are closed
|
|
191
|
+
*/
|
|
192
|
+
static async closeStreams() {
|
|
193
|
+
if (hasLoggerResources()) {
|
|
194
|
+
await getLoggerResources().close();
|
|
195
|
+
await resetLoggerResources();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Clear the child logger cache.
|
|
200
|
+
* Useful for testing or when configuration changes.
|
|
201
|
+
*/
|
|
202
|
+
static clearChildLoggerCache() {
|
|
203
|
+
if (hasLoggerResources()) {
|
|
204
|
+
getLoggerResources().clearChildLoggerCache();
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Reset static state (for testing purposes).
|
|
209
|
+
* Fully resets all resources.
|
|
210
|
+
*/
|
|
211
|
+
static async resetState() {
|
|
212
|
+
await resetLoggerResources();
|
|
213
|
+
}
|
|
214
|
+
// ============================================================
|
|
215
|
+
// Child Logger Factory
|
|
216
|
+
// ============================================================
|
|
217
|
+
/**
|
|
218
|
+
* Create a child logger with a specific component context.
|
|
219
|
+
* Uses LRU caching to avoid creating new instances while preventing memory leaks.
|
|
220
|
+
*
|
|
221
|
+
* @param context - The component context for the child logger
|
|
222
|
+
* @returns A cached or new Logger instance
|
|
223
|
+
*/
|
|
224
|
+
child(context) {
|
|
225
|
+
return this.resources.getOrCreateChildLogger(context.component, () => this._injectedResources
|
|
226
|
+
? new Logger({
|
|
227
|
+
component: context.component,
|
|
228
|
+
resources: this._injectedResources,
|
|
229
|
+
})
|
|
230
|
+
: new Logger({ component: context.component }));
|
|
231
|
+
}
|
|
232
|
+
// ============================================================
|
|
233
|
+
// Context Management (delegates to core/context.ts)
|
|
234
|
+
// ============================================================
|
|
235
|
+
/**
|
|
236
|
+
* Run a function within a logging context.
|
|
237
|
+
* All logs within the function will include the context.
|
|
238
|
+
*
|
|
239
|
+
* @param context - The context to use for logging
|
|
240
|
+
* @param fn - The function to execute
|
|
241
|
+
* @returns The result of the function
|
|
242
|
+
*/
|
|
243
|
+
runWithContext(context, fn) {
|
|
244
|
+
return runWithContext(context, fn);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Get the current logging context.
|
|
248
|
+
*
|
|
249
|
+
* @returns The current context or undefined
|
|
250
|
+
*/
|
|
251
|
+
getContext() {
|
|
252
|
+
return getContext();
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Merge additional context with the current context.
|
|
256
|
+
*
|
|
257
|
+
* @param additionalContext - Context values to add/override
|
|
258
|
+
* @returns A new merged context
|
|
259
|
+
*/
|
|
260
|
+
mergeContext(additionalContext) {
|
|
261
|
+
return mergeContext(additionalContext);
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Create a child context that inherits from the current context.
|
|
265
|
+
* Component names are automatically concatenated.
|
|
266
|
+
*
|
|
267
|
+
* @param childContext - Context values for the child
|
|
268
|
+
* @returns A new child context
|
|
269
|
+
*/
|
|
270
|
+
createChildContext(childContext) {
|
|
271
|
+
return createChildContext(childContext);
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Execute a function with an extended context.
|
|
275
|
+
*
|
|
276
|
+
* @param additionalContext - Context values to add
|
|
277
|
+
* @param fn - The function to execute
|
|
278
|
+
* @returns The result of the function
|
|
279
|
+
*/
|
|
280
|
+
withExtendedContext(additionalContext, fn) {
|
|
281
|
+
return withExtendedContext(additionalContext, fn);
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Execute a function with a child context.
|
|
285
|
+
*
|
|
286
|
+
* @param childContext - Context values for the child scope
|
|
287
|
+
* @param fn - The function to execute
|
|
288
|
+
* @returns The result of the function
|
|
289
|
+
*/
|
|
290
|
+
withChildContext(childContext, fn) {
|
|
291
|
+
return withChildContext(childContext, fn);
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Get the current context nesting depth.
|
|
295
|
+
*
|
|
296
|
+
* @returns The current depth
|
|
297
|
+
*/
|
|
298
|
+
getContextDepth() {
|
|
299
|
+
return getContextDepth();
|
|
300
|
+
}
|
|
301
|
+
// ============================================================
|
|
302
|
+
// Log Level Methods
|
|
303
|
+
// ============================================================
|
|
304
|
+
/**
|
|
305
|
+
* Log a message at TRACE level.
|
|
306
|
+
*/
|
|
307
|
+
trace(message, ...args) {
|
|
308
|
+
this.log("trace", message, ...args);
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Log a message at DEBUG level.
|
|
312
|
+
*/
|
|
313
|
+
debug(message, ...args) {
|
|
314
|
+
this.log("debug", message, ...args);
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Log a message at INFO level.
|
|
318
|
+
*/
|
|
319
|
+
info(message, ...args) {
|
|
320
|
+
this.log("info", message, ...args);
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Log a message at WARN level.
|
|
324
|
+
*/
|
|
325
|
+
warn(message, ...args) {
|
|
326
|
+
this.log("warn", message, ...args);
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Log a message at ERROR level.
|
|
330
|
+
*/
|
|
331
|
+
error(message, ...args) {
|
|
332
|
+
this.log("error", message, ...args);
|
|
333
|
+
}
|
|
334
|
+
// ============================================================
|
|
335
|
+
// Core Logging Pipeline
|
|
336
|
+
// ============================================================
|
|
337
|
+
/**
|
|
338
|
+
* Internal log handler implementing the logging pipeline.
|
|
339
|
+
*
|
|
340
|
+
* Pipeline steps:
|
|
341
|
+
* 1. Level filtering
|
|
342
|
+
* 2. Metadata extraction
|
|
343
|
+
* 3. Printf-style formatting
|
|
344
|
+
* 4. Message truncation (if exceeds MAX_MESSAGE_LENGTH)
|
|
345
|
+
* 5. Context retrieval
|
|
346
|
+
* 6. Secret scrubbing
|
|
347
|
+
* 7. Format generation (Text/JSON)
|
|
348
|
+
* 8. Injection prevention
|
|
349
|
+
* 9. Output to writers
|
|
350
|
+
* 10. MCP notification (if context has sendMcpLog)
|
|
351
|
+
*/
|
|
352
|
+
log(level, message, ...args) {
|
|
353
|
+
// Step 1: Level filtering (fast path for disabled levels)
|
|
354
|
+
if (LOG_LEVELS[level] < this.level) {
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
// Step 2: Extract metadata and error from args
|
|
358
|
+
const { metadata, error, formatArgs } = this.extractMetadata(args);
|
|
359
|
+
// Step 3: Printf-style message formatting
|
|
360
|
+
let formattedMessage = util.format(message, ...formatArgs);
|
|
361
|
+
// Step 4: Truncate long messages to prevent memory issues
|
|
362
|
+
if (formattedMessage.length > MAX_MESSAGE_LENGTH) {
|
|
363
|
+
formattedMessage = formattedMessage.slice(0, MAX_MESSAGE_LENGTH - TRUNCATION_SUFFIX.length) + TRUNCATION_SUFFIX;
|
|
364
|
+
}
|
|
365
|
+
// Step 5: Get context (from AsyncLocalStorage)
|
|
366
|
+
const context = getContext();
|
|
367
|
+
const component = context?.component ?? this.component;
|
|
368
|
+
// Step 5b: Auto-enrich with OTEL trace context if not already set
|
|
369
|
+
let enrichedContext = context;
|
|
370
|
+
if (!context?.traceId) {
|
|
371
|
+
const otelCtx = extractTraceContext();
|
|
372
|
+
if (otelCtx) {
|
|
373
|
+
enrichedContext = { ...context, ...otelCtx };
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
// Step 6: Scrub secrets from metadata
|
|
377
|
+
// @ts-limitation — scrubObject() returns unknown; object input guarantees object output
|
|
378
|
+
const scrubbedMetadata = metadata
|
|
379
|
+
? this.resources.secretScrubber.scrubObject(metadata)
|
|
380
|
+
: undefined;
|
|
381
|
+
// Step 7: Build log entry params
|
|
382
|
+
const params = {
|
|
383
|
+
level,
|
|
384
|
+
message: formattedMessage,
|
|
385
|
+
component,
|
|
386
|
+
...(enrichedContext !== undefined && { context: enrichedContext }),
|
|
387
|
+
...(scrubbedMetadata !== undefined && { metadata: scrubbedMetadata }),
|
|
388
|
+
...(error !== undefined && { error }),
|
|
389
|
+
timestamp: new Date().toISOString(),
|
|
390
|
+
};
|
|
391
|
+
// Step 8: Format the log entry
|
|
392
|
+
const formatted = this.resources.getFormatter().format(params);
|
|
393
|
+
// Step 9: Apply injection guard and secret scrubbing to final output
|
|
394
|
+
const safeOutput = this.sanitizeOutput(formatted);
|
|
395
|
+
// Step 10: Write to outputs
|
|
396
|
+
this.writeToOutputs(level, safeOutput, component);
|
|
397
|
+
// Step 11: Send to MCP client if context has sendMcpLog (best-effort)
|
|
398
|
+
if (enrichedContext?.sendMcpLog) {
|
|
399
|
+
try {
|
|
400
|
+
const safeMessage = this.sanitizeOutput(formattedMessage);
|
|
401
|
+
enrichedContext.sendMcpLog(level, safeMessage);
|
|
402
|
+
}
|
|
403
|
+
catch {
|
|
404
|
+
// Silently ignore — MCP client notification is best-effort.
|
|
405
|
+
// A throwing callback must never crash the caller's logging call.
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Extract metadata object from log arguments.
|
|
411
|
+
* The last argument is treated as metadata if it's a plain object (not an Error).
|
|
412
|
+
*/
|
|
413
|
+
extractMetadata(args) {
|
|
414
|
+
if (args.length === 0) {
|
|
415
|
+
return { metadata: undefined, error: undefined, formatArgs: [] };
|
|
416
|
+
}
|
|
417
|
+
let metadata;
|
|
418
|
+
let error;
|
|
419
|
+
let formatArgs = args;
|
|
420
|
+
const lastArg = args[args.length - 1];
|
|
421
|
+
// Check if last arg is a plain object (not null, not Error)
|
|
422
|
+
if (lastArg !== null && typeof lastArg === "object" && !(lastArg instanceof Error) && !Array.isArray(lastArg)) {
|
|
423
|
+
// @type-narrowing — Runtime checks confirm object && !null && !Error && !Array; TS cannot narrow unknown
|
|
424
|
+
metadata = lastArg;
|
|
425
|
+
formatArgs = args.slice(0, -1);
|
|
426
|
+
}
|
|
427
|
+
// Check if last format arg (or the one before metadata) is an Error
|
|
428
|
+
const errorCandidate = formatArgs.length > 0 ? formatArgs[formatArgs.length - 1] : undefined;
|
|
429
|
+
if (errorCandidate instanceof Error) {
|
|
430
|
+
error = errorCandidate;
|
|
431
|
+
}
|
|
432
|
+
return { metadata, error, formatArgs };
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Apply injection guard and secret scrubbing to formatted log output.
|
|
436
|
+
*/
|
|
437
|
+
sanitizeOutput(formatted) {
|
|
438
|
+
const sanitized = this.resources.injectionGuard.sanitize(formatted);
|
|
439
|
+
return this.resources.secretScrubber.scrub(sanitized);
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Write formatted output to all configured writers.
|
|
443
|
+
*/
|
|
444
|
+
writeToOutputs(level, output, component) {
|
|
445
|
+
// Console writer
|
|
446
|
+
this.resources.consoleWriter?.write(level, output, component);
|
|
447
|
+
// File writer (if configured)
|
|
448
|
+
/* v8 ignore start - file logging requires LOG_DIR environment */
|
|
449
|
+
this.resources.fileWriter?.write(level, output, component);
|
|
450
|
+
/* v8 ignore stop */
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Default logger instance for the application.
|
|
455
|
+
* Uses dynamic log level from global config, so configureLogger()
|
|
456
|
+
* can be called at any time to change the effective log level.
|
|
457
|
+
*/
|
|
458
|
+
export const logger = new Logger();
|
|
459
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Notification Logger Module
|
|
3
|
+
*
|
|
4
|
+
* Provides structured logging via MCP notifications/message protocol.
|
|
5
|
+
* This allows MCP clients to receive and display server-side logs.
|
|
6
|
+
*
|
|
7
|
+
* Per MCP Spec, logging levels follow RFC 5424 (syslog):
|
|
8
|
+
* - emergency: System is unusable
|
|
9
|
+
* - alert: Action must be taken immediately
|
|
10
|
+
* - critical: Critical conditions
|
|
11
|
+
* - error: Error conditions
|
|
12
|
+
* - warning: Warning conditions
|
|
13
|
+
* - notice: Normal but significant condition
|
|
14
|
+
* - info: Informational messages
|
|
15
|
+
* - debug: Debug-level messages
|
|
16
|
+
*
|
|
17
|
+
* @module logger/mcp-logger
|
|
18
|
+
*/
|
|
19
|
+
import type { LogLevel, McpLogLevel, LogNotificationHandler } from "./core/types.js";
|
|
20
|
+
/**
|
|
21
|
+
* Configuration options for MCP Notification Logger.
|
|
22
|
+
*/
|
|
23
|
+
export interface McpLoggerConfig {
|
|
24
|
+
/** Minimum log level to send (default: 'debug') */
|
|
25
|
+
minLevel?: McpLogLevel;
|
|
26
|
+
/** Whether logging is enabled (default: true) */
|
|
27
|
+
enabled?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* MCP Notification Logger
|
|
31
|
+
*
|
|
32
|
+
* Sends structured log messages to MCP clients via the notifications/message protocol.
|
|
33
|
+
* Clients that support the logging capability will receive and display these messages.
|
|
34
|
+
*
|
|
35
|
+
* Features:
|
|
36
|
+
* - Multi-server support for multi-session scenarios
|
|
37
|
+
* - Level filtering with configurable minimum level
|
|
38
|
+
* - Secret scrubbing for security
|
|
39
|
+
* - Context-aware logger creation for tool handlers
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* // Set up with MCP server
|
|
44
|
+
* mcpLogger.addServer(mcpServer);
|
|
45
|
+
*
|
|
46
|
+
* // Log messages (sent to all connected clients)
|
|
47
|
+
* await mcpLogger.info('Processing request...');
|
|
48
|
+
* await mcpLogger.warn('Resource limit approaching', { current: 80, max: 100 });
|
|
49
|
+
* await mcpLogger.error('Failed to connect', { error: 'Connection refused' });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare class McpNotificationLogger {
|
|
53
|
+
/** Set of registered notification handlers */
|
|
54
|
+
private readonly handlers;
|
|
55
|
+
/** Whether logging is enabled */
|
|
56
|
+
private enabled;
|
|
57
|
+
/** Minimum log level to send */
|
|
58
|
+
private minLevel;
|
|
59
|
+
/** Use shared secret scrubber instance for consistency */
|
|
60
|
+
private readonly secretScrubber;
|
|
61
|
+
/** Injection guard for CWE-117 protection (consistent with main logger pipeline) */
|
|
62
|
+
private readonly injectionGuard;
|
|
63
|
+
/**
|
|
64
|
+
* Create a new McpNotificationLogger.
|
|
65
|
+
*
|
|
66
|
+
* @param config - Optional configuration
|
|
67
|
+
*/
|
|
68
|
+
constructor(config?: McpLoggerConfig);
|
|
69
|
+
/**
|
|
70
|
+
* Register a notification handler for receiving log notifications.
|
|
71
|
+
* Multiple handlers can be registered for multi-session scenarios.
|
|
72
|
+
*
|
|
73
|
+
* @param handler - The notification handler to register
|
|
74
|
+
*/
|
|
75
|
+
addHandler(handler: LogNotificationHandler): void;
|
|
76
|
+
/**
|
|
77
|
+
* Unregister a notification handler.
|
|
78
|
+
*
|
|
79
|
+
* @param handler - The notification handler to remove
|
|
80
|
+
*/
|
|
81
|
+
removeHandler(handler: LogNotificationHandler): void;
|
|
82
|
+
/**
|
|
83
|
+
* Clear all registered handlers.
|
|
84
|
+
*/
|
|
85
|
+
clearHandlers(): void;
|
|
86
|
+
/**
|
|
87
|
+
* Get the number of registered handlers.
|
|
88
|
+
*/
|
|
89
|
+
getHandlerCount(): number;
|
|
90
|
+
/**
|
|
91
|
+
* Enable or disable MCP logging.
|
|
92
|
+
* When disabled, log methods become no-ops but still return resolved promises.
|
|
93
|
+
*
|
|
94
|
+
* @param enabled - Whether to enable logging
|
|
95
|
+
*/
|
|
96
|
+
setEnabled(enabled: boolean): void;
|
|
97
|
+
/**
|
|
98
|
+
* Check if logging is enabled.
|
|
99
|
+
*/
|
|
100
|
+
isEnabled(): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Set the minimum log level.
|
|
103
|
+
* Messages below this level will not be sent.
|
|
104
|
+
*
|
|
105
|
+
* @param level - The minimum log level
|
|
106
|
+
*/
|
|
107
|
+
setMinLevel(level: McpLogLevel): void;
|
|
108
|
+
/**
|
|
109
|
+
* Get the current minimum log level.
|
|
110
|
+
*/
|
|
111
|
+
getMinLevel(): McpLogLevel;
|
|
112
|
+
/**
|
|
113
|
+
* Check if logging is currently available (enabled and has servers).
|
|
114
|
+
*/
|
|
115
|
+
isAvailable(): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Send a log message to all connected MCP clients.
|
|
118
|
+
*
|
|
119
|
+
* @param level - The MCP log level
|
|
120
|
+
* @param message - The log message
|
|
121
|
+
* @param data - Optional structured data to include
|
|
122
|
+
* @returns Promise that resolves when all sends complete
|
|
123
|
+
*/
|
|
124
|
+
log(level: McpLogLevel, message: string, data?: Record<string, unknown>): Promise<void>;
|
|
125
|
+
/** Log a debug message */
|
|
126
|
+
debug(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
127
|
+
/** Log an info message */
|
|
128
|
+
info(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
129
|
+
/** Log a notice message */
|
|
130
|
+
notice(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
131
|
+
/** Log a warning message */
|
|
132
|
+
warn(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
133
|
+
/** Log a warning message (alias for warn) */
|
|
134
|
+
warning(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
135
|
+
/** Log an error message */
|
|
136
|
+
error(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
137
|
+
/** Log a critical message */
|
|
138
|
+
critical(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
139
|
+
/** Log an alert message */
|
|
140
|
+
alert(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
141
|
+
/** Log an emergency message */
|
|
142
|
+
emergency(message: string, data?: Record<string, unknown>): Promise<void>;
|
|
143
|
+
/**
|
|
144
|
+
* Create a context-aware logger function for use in tool handlers.
|
|
145
|
+
* Returns a function that can be passed to LogContext.sendMcpLog.
|
|
146
|
+
*
|
|
147
|
+
* @param handler - The notification handler for this context
|
|
148
|
+
* @returns A function compatible with LogContext.sendMcpLog
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* ```typescript
|
|
152
|
+
* const sendMcpLog = mcpLogger.createContextLogger(handler);
|
|
153
|
+
* logger.runWithContext({ sendMcpLog }, () => {
|
|
154
|
+
* logger.info('This will also be sent to MCP client');
|
|
155
|
+
* });
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
createContextLogger(handler: LogNotificationHandler): (level: LogLevel, message: string) => void;
|
|
159
|
+
/**
|
|
160
|
+
* Check if a log level should be logged based on minimum level.
|
|
161
|
+
*/
|
|
162
|
+
private shouldLog;
|
|
163
|
+
/**
|
|
164
|
+
* Format message with optional data.
|
|
165
|
+
*/
|
|
166
|
+
private formatMessage;
|
|
167
|
+
/**
|
|
168
|
+
* Send a log message to a specific handler.
|
|
169
|
+
*/
|
|
170
|
+
private sendToHandler;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Singleton instance of the MCP Notification Logger.
|
|
174
|
+
* Use this for sending log messages to MCP clients.
|
|
175
|
+
*/
|
|
176
|
+
export declare const mcpLogger: McpNotificationLogger;
|
|
177
|
+
//# sourceMappingURL=mcp-logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-logger.d.ts","sourceRoot":"","sources":["../../src/logger/mcp-logger.ts"],"names":[],"mappings":"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"}
|