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,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret Scrubber Module
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for detecting and redacting sensitive information from logs.
|
|
5
|
+
* Handles JWTs, Bearer tokens, and key-value pairs with sensitive keys.
|
|
6
|
+
*
|
|
7
|
+
* @module logger/scrubbing/secret-scrubber
|
|
8
|
+
*/
|
|
9
|
+
import { SENSITIVE_KEYS as BASE_SENSITIVE_KEYS, isSensitiveKey as baseSensitiveKeyCheck, } from "../../utils/sensitive-keys.js";
|
|
10
|
+
import { REDACTED_VALUE, JWT_PREFIX } from "../core/constants.js";
|
|
11
|
+
/**
|
|
12
|
+
* Pre-compiled regex patterns for secret scrubbing.
|
|
13
|
+
* Performance optimization: compile once at module load instead of on every log call.
|
|
14
|
+
*/
|
|
15
|
+
/** Regex to match JWTs (eyJ...) - three base64 segments separated by dots */
|
|
16
|
+
const JWT_REGEX = new RegExp(`\\b${JWT_PREFIX}[a-zA-Z0-9-_]+\\.[a-zA-Z0-9-_]+\\.[a-zA-Z0-9-_]+`, "g");
|
|
17
|
+
/** Regex to match Bearer tokens */
|
|
18
|
+
const BEARER_REGEX = /\bBearer\s+[a-zA-Z0-9._~+\-/=]+/gi;
|
|
19
|
+
/** Regex to match Basic Auth credentials (Authorization: Basic <base64>) */
|
|
20
|
+
const BASIC_AUTH_REGEX = /\bBasic\s+[A-Za-z0-9+/=]{8,}/gi;
|
|
21
|
+
/** Regex to match key-value pairs with sensitive keys (excluding bearer/authorization) */
|
|
22
|
+
const KV_KEYS = BASE_SENSITIVE_KEYS.filter((k) => !["bearer", "authorization"].includes(k.toLowerCase()));
|
|
23
|
+
const KV_PATTERN = KV_KEYS.join("|");
|
|
24
|
+
// Pre-computed lowercase keys for fast includes() pre-check before applying regex
|
|
25
|
+
const KV_KEYS_LOWER = KV_KEYS.map((k) => k.toLowerCase());
|
|
26
|
+
// Use custom boundary instead of \b — word boundaries treat _ as a word character,
|
|
27
|
+
// so \bapi_key\b fails to match in "my_api_key=secret". Adding _ - . to the boundary
|
|
28
|
+
// class ensures compound keys like my_api_key, app.secret, my-token are matched.
|
|
29
|
+
const KV_REGEX = new RegExp(`(^|[\\s"'{(,;_\\-.])(${KV_PATTERN})(\\s*[:=]\\s*)(["']?)([^\\s"']+)\\4`, "gi");
|
|
30
|
+
/** Regex to match sensitive URL query parameters (?key=value or &key=value) */
|
|
31
|
+
const URL_PARAM_PATTERN = BASE_SENSITIVE_KEYS.filter((k) => !["bearer", "authorization", "key"].includes(k.toLowerCase())).join("|");
|
|
32
|
+
const URL_PARAM_REGEX = new RegExp(`([?&](?:${URL_PARAM_PATTERN})=)([^&\\s]+)`, "gi");
|
|
33
|
+
/** Regex to match credentials in connection strings (scheme://user:pass@host, including IPv6 [::1]) */
|
|
34
|
+
const CONN_STRING_REGEX = /:\/\/([^/:@\s[\]]+|\[[^\]]+\]):([^@\s]+)@/g;
|
|
35
|
+
/** Regex to match AWS access key IDs (AKIA followed by 16 uppercase alphanumeric characters) */
|
|
36
|
+
const AWS_KEY_REGEX = /AKIA[0-9A-Z]{16}/g;
|
|
37
|
+
/**
|
|
38
|
+
* Secret Scrubber class for detecting and redacting sensitive information.
|
|
39
|
+
*
|
|
40
|
+
* Usage:
|
|
41
|
+
* - Create a scrubber: `const scrubber = new SecretScrubber();`
|
|
42
|
+
* - Scrub a string: `scrubber.scrub('token=secret123')` returns `'token=**********'`
|
|
43
|
+
* - Scrub an object: `scrubber.scrubObject({ password: 'secret' })` returns `{ password: '**********' }`
|
|
44
|
+
*/
|
|
45
|
+
export class SecretScrubber {
|
|
46
|
+
/**
|
|
47
|
+
* Additional sensitive keys provided at construction time.
|
|
48
|
+
* These bypass the shared blocklist since they are explicitly
|
|
49
|
+
* provided by the consumer as known-sensitive patterns.
|
|
50
|
+
*/
|
|
51
|
+
additionalKeys;
|
|
52
|
+
/**
|
|
53
|
+
* Create a new SecretScrubber.
|
|
54
|
+
* @param additionalKeys - Additional keys to consider sensitive
|
|
55
|
+
*/
|
|
56
|
+
constructor(additionalKeys = []) {
|
|
57
|
+
this.additionalKeys = additionalKeys;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Scrub secrets from a text string.
|
|
61
|
+
*
|
|
62
|
+
* Handles:
|
|
63
|
+
* - JWTs (eyJ...)
|
|
64
|
+
* - Bearer tokens
|
|
65
|
+
* - Key-value pairs with sensitive keys
|
|
66
|
+
*
|
|
67
|
+
* @param text - The text to scrub
|
|
68
|
+
* @returns The scrubbed text
|
|
69
|
+
*/
|
|
70
|
+
scrub(text) {
|
|
71
|
+
let scrubbed = text;
|
|
72
|
+
// 1. Known Secret Formats (High Confidence) - JWT
|
|
73
|
+
scrubbed = scrubbed.replace(JWT_REGEX, REDACTED_VALUE);
|
|
74
|
+
// 2. Common Auth Headers - Bearer token
|
|
75
|
+
// Run before generic KV scrubber to ensure "Bearer <token>" is handled as a unit
|
|
76
|
+
scrubbed = scrubbed.replace(BEARER_REGEX, `Bearer ${REDACTED_VALUE}`);
|
|
77
|
+
// 3. Basic Auth - "Basic <base64>"
|
|
78
|
+
scrubbed = scrubbed.replace(BASIC_AUTH_REGEX, `Basic ${REDACTED_VALUE}`);
|
|
79
|
+
// 4. AWS access key IDs - "AKIA..."
|
|
80
|
+
scrubbed = scrubbed.replace(AWS_KEY_REGEX, REDACTED_VALUE);
|
|
81
|
+
// 5. Connection strings - "scheme://user:pass@host"
|
|
82
|
+
scrubbed = scrubbed.replace(CONN_STRING_REGEX, `://$1:${REDACTED_VALUE}@`);
|
|
83
|
+
// 6. Sensitive URL query parameters - "?password=xxx&api_key=yyy"
|
|
84
|
+
scrubbed = scrubbed.replace(URL_PARAM_REGEX, `$1${REDACTED_VALUE}`);
|
|
85
|
+
// 7. Context-based Scrubbing (Key-Value pairs)
|
|
86
|
+
// Pre-check: skip expensive regex if no sensitive key substring is present
|
|
87
|
+
const lowerScrubbed = scrubbed.toLowerCase();
|
|
88
|
+
if (KV_KEYS_LOWER.some((k) => lowerScrubbed.includes(k))) {
|
|
89
|
+
scrubbed = scrubbed.replace(KV_REGEX, (match, prefix, key, sep, quote, value) => {
|
|
90
|
+
// Don't redact if already redacted
|
|
91
|
+
if (value.includes(REDACTED_VALUE))
|
|
92
|
+
return match;
|
|
93
|
+
return `${prefix}${key}${sep}${quote}${REDACTED_VALUE}${quote}`;
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
return scrubbed;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Recursively scrub sensitive keys from an object.
|
|
100
|
+
*
|
|
101
|
+
* Also scrubs string values that may contain embedded secrets
|
|
102
|
+
* (e.g., "password=secret123" patterns).
|
|
103
|
+
*
|
|
104
|
+
* @param obj - The object to scrub
|
|
105
|
+
* @returns A new object with sensitive values redacted
|
|
106
|
+
*/
|
|
107
|
+
scrubObject(obj) {
|
|
108
|
+
return this.scrubObjectRecursive(obj, new WeakSet());
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Internal recursive scrub with circular reference protection.
|
|
112
|
+
*/
|
|
113
|
+
scrubObjectRecursive(obj, visited) {
|
|
114
|
+
if (typeof obj !== "object" || obj === null) {
|
|
115
|
+
// Scrub string values for embedded secrets (e.g., "token=abc123")
|
|
116
|
+
if (typeof obj === "string") {
|
|
117
|
+
return this.scrub(obj);
|
|
118
|
+
}
|
|
119
|
+
return obj;
|
|
120
|
+
}
|
|
121
|
+
// Circular reference protection — prevent stack overflow
|
|
122
|
+
if (visited.has(obj)) {
|
|
123
|
+
return "[Circular]";
|
|
124
|
+
}
|
|
125
|
+
visited.add(obj);
|
|
126
|
+
if (Array.isArray(obj)) {
|
|
127
|
+
return obj.map((item) => this.scrubObjectRecursive(item, visited));
|
|
128
|
+
}
|
|
129
|
+
const redacted = {};
|
|
130
|
+
// @type-narrowing — After null-check and Array.isArray, obj is a plain object; TS cannot narrow unknown to Record
|
|
131
|
+
const objRecord = obj;
|
|
132
|
+
for (const key in objRecord) {
|
|
133
|
+
if (Object.prototype.hasOwnProperty.call(objRecord, key)) {
|
|
134
|
+
if (this.isSensitiveKey(key)) {
|
|
135
|
+
redacted[key] = REDACTED_VALUE;
|
|
136
|
+
}
|
|
137
|
+
else if (typeof objRecord[key] === "object") {
|
|
138
|
+
redacted[key] = this.scrubObjectRecursive(objRecord[key], visited);
|
|
139
|
+
}
|
|
140
|
+
else if (typeof objRecord[key] === "string") {
|
|
141
|
+
// @type-narrowing — typeof === 'string' branch; TS does not narrow Record<string, unknown> values via control flow
|
|
142
|
+
redacted[key] = this.scrub(objRecord[key]);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
redacted[key] = objRecord[key];
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return redacted;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Check if a key is sensitive.
|
|
153
|
+
*
|
|
154
|
+
* Delegates to the shared utility for base sensitive keys (including
|
|
155
|
+
* blocklist logic). Additional keys provided at construction are checked
|
|
156
|
+
* separately — they bypass the blocklist since they are explicitly
|
|
157
|
+
* declared as sensitive by the consumer.
|
|
158
|
+
*
|
|
159
|
+
* @param key - The key to check
|
|
160
|
+
* @returns true if the key matches a sensitive pattern
|
|
161
|
+
*/
|
|
162
|
+
isSensitiveKey(key) {
|
|
163
|
+
// Delegate to shared utility for base sensitive keys (includes blocklist)
|
|
164
|
+
if (baseSensitiveKeyCheck(key))
|
|
165
|
+
return true;
|
|
166
|
+
// Check additional keys — explicitly provided, no blocklist needed
|
|
167
|
+
if (this.additionalKeys.length === 0)
|
|
168
|
+
return false;
|
|
169
|
+
const lowerKey = key.toLowerCase();
|
|
170
|
+
return this.additionalKeys.some((ak) => lowerKey.includes(ak.toLowerCase()));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Default secret scrubber instance.
|
|
175
|
+
*/
|
|
176
|
+
export const secretScrubber = new SecretScrubber();
|
|
177
|
+
//# sourceMappingURL=secret-scrubber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-scrubber.js","sourceRoot":"","sources":["../../../src/logger/scrubbing/secret-scrubber.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Log Writer Module
|
|
3
|
+
*
|
|
4
|
+
* Defines the abstract base class for all log writers.
|
|
5
|
+
* Writers are responsible for outputting log entries to specific destinations.
|
|
6
|
+
*
|
|
7
|
+
* @module logger/writers/base-writer
|
|
8
|
+
*/
|
|
9
|
+
import type { LogLevel, LogWriter } from "../core/types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Abstract base class for log writers.
|
|
12
|
+
* Provides common functionality for all writer implementations.
|
|
13
|
+
*/
|
|
14
|
+
export declare abstract class BaseLogWriter implements LogWriter {
|
|
15
|
+
protected enabled: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Write a log entry to the destination.
|
|
18
|
+
* Must be implemented by subclasses.
|
|
19
|
+
*
|
|
20
|
+
* @param level - The log level
|
|
21
|
+
* @param message - The formatted log message
|
|
22
|
+
* @param component - The component that generated the log
|
|
23
|
+
*/
|
|
24
|
+
abstract write(level: LogLevel, message: string, component: string): void;
|
|
25
|
+
/**
|
|
26
|
+
* Close the writer and release any resources.
|
|
27
|
+
* Override in subclasses that need cleanup.
|
|
28
|
+
*
|
|
29
|
+
* @returns Promise that resolves when the writer is closed
|
|
30
|
+
*/
|
|
31
|
+
close(): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Check if the writer is available/ready.
|
|
34
|
+
*
|
|
35
|
+
* @returns true if the writer can accept log entries
|
|
36
|
+
*/
|
|
37
|
+
isAvailable(): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Enable or disable the writer.
|
|
40
|
+
*
|
|
41
|
+
* @param enabled - Whether the writer should be enabled
|
|
42
|
+
*/
|
|
43
|
+
setEnabled(enabled: boolean): void;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=base-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-writer.d.ts","sourceRoot":"","sources":["../../../src/logger/writers/base-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE5D;;;GAGG;AACH,8BAAsB,aAAc,YAAW,SAAS;IACtD,SAAS,CAAC,OAAO,EAAE,OAAO,CAAQ;IAElC;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAEzE;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;;;OAIG;IACH,WAAW,IAAI,OAAO;IAItB;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAGnC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Log Writer Module
|
|
3
|
+
*
|
|
4
|
+
* Defines the abstract base class for all log writers.
|
|
5
|
+
* Writers are responsible for outputting log entries to specific destinations.
|
|
6
|
+
*
|
|
7
|
+
* @module logger/writers/base-writer
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Abstract base class for log writers.
|
|
11
|
+
* Provides common functionality for all writer implementations.
|
|
12
|
+
*/
|
|
13
|
+
export class BaseLogWriter {
|
|
14
|
+
enabled = true;
|
|
15
|
+
/**
|
|
16
|
+
* Close the writer and release any resources.
|
|
17
|
+
* Override in subclasses that need cleanup.
|
|
18
|
+
*
|
|
19
|
+
* @returns Promise that resolves when the writer is closed
|
|
20
|
+
*/
|
|
21
|
+
async close() {
|
|
22
|
+
this.enabled = false;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Check if the writer is available/ready.
|
|
26
|
+
*
|
|
27
|
+
* @returns true if the writer can accept log entries
|
|
28
|
+
*/
|
|
29
|
+
isAvailable() {
|
|
30
|
+
return this.enabled;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Enable or disable the writer.
|
|
34
|
+
*
|
|
35
|
+
* @param enabled - Whether the writer should be enabled
|
|
36
|
+
*/
|
|
37
|
+
setEnabled(enabled) {
|
|
38
|
+
this.enabled = enabled;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=base-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-writer.js","sourceRoot":"","sources":["../../../src/logger/writers/base-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;GAGG;AACH,MAAM,OAAgB,aAAa;IACvB,OAAO,GAAY,IAAI,CAAC;IAYlC;;;;;OAKG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAC,OAAgB;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composite Log Writer Module
|
|
3
|
+
*
|
|
4
|
+
* Combines multiple log writers into a single writer interface.
|
|
5
|
+
* Delegates write operations to all registered writers.
|
|
6
|
+
*
|
|
7
|
+
* @module logger/writers/composite-writer
|
|
8
|
+
*/
|
|
9
|
+
import type { LogLevel, LogWriter } from "../core/types.js";
|
|
10
|
+
import { BaseLogWriter } from "./base-writer.js";
|
|
11
|
+
/**
|
|
12
|
+
* Composite Writer class that combines multiple writers.
|
|
13
|
+
*
|
|
14
|
+
* This is the primary writer used by the Logger class.
|
|
15
|
+
* It manages multiple output destinations (console, file, MCP)
|
|
16
|
+
* and ensures all enabled writers receive log entries.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const composite = new CompositeWriter();
|
|
21
|
+
* composite.addWriter('console', consoleWriter);
|
|
22
|
+
* composite.addWriter('file', fileWriter);
|
|
23
|
+
* composite.write('info', 'Hello world', 'server'); // Goes to both writers
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare class CompositeWriter extends BaseLogWriter {
|
|
27
|
+
private writers;
|
|
28
|
+
/**
|
|
29
|
+
* Add a named writer to the composite.
|
|
30
|
+
*
|
|
31
|
+
* @param name - Unique name for the writer
|
|
32
|
+
* @param writer - The writer instance
|
|
33
|
+
*/
|
|
34
|
+
addWriter(name: string, writer: LogWriter): void;
|
|
35
|
+
/**
|
|
36
|
+
* Remove a writer by name.
|
|
37
|
+
*
|
|
38
|
+
* @param name - The writer name to remove
|
|
39
|
+
* @returns true if a writer was removed
|
|
40
|
+
*/
|
|
41
|
+
removeWriter(name: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Get a writer by name.
|
|
44
|
+
*
|
|
45
|
+
* @param name - The writer name
|
|
46
|
+
* @returns The writer or undefined
|
|
47
|
+
*/
|
|
48
|
+
getWriter(name: string): LogWriter | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Check if a writer exists.
|
|
51
|
+
*
|
|
52
|
+
* @param name - The writer name
|
|
53
|
+
* @returns true if the writer exists
|
|
54
|
+
*/
|
|
55
|
+
hasWriter(name: string): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Write to all enabled writers.
|
|
58
|
+
*
|
|
59
|
+
* @param level - The log level
|
|
60
|
+
* @param message - The formatted log message
|
|
61
|
+
* @param component - The component that generated the log
|
|
62
|
+
*/
|
|
63
|
+
write(level: LogLevel, message: string, component: string): void;
|
|
64
|
+
/**
|
|
65
|
+
* Close all writers.
|
|
66
|
+
*
|
|
67
|
+
* @returns Promise that resolves when all writers are closed
|
|
68
|
+
*/
|
|
69
|
+
close(): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Check if any writer is available.
|
|
72
|
+
*/
|
|
73
|
+
isAvailable(): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Get the number of registered writers.
|
|
76
|
+
*/
|
|
77
|
+
getWriterCount(): number;
|
|
78
|
+
/**
|
|
79
|
+
* Get all writer names.
|
|
80
|
+
*/
|
|
81
|
+
getWriterNames(): string[];
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=composite-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composite-writer.d.ts","sourceRoot":"","sources":["../../../src/logger/writers/composite-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAChD,OAAO,CAAC,OAAO,CAAqC;IAEpD;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI;IAIhD;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInC;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI9C;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAehE;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;OAEG;IACH,WAAW,IAAI,OAAO;IAStB;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;CAG3B"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composite Log Writer Module
|
|
3
|
+
*
|
|
4
|
+
* Combines multiple log writers into a single writer interface.
|
|
5
|
+
* Delegates write operations to all registered writers.
|
|
6
|
+
*
|
|
7
|
+
* @module logger/writers/composite-writer
|
|
8
|
+
*/
|
|
9
|
+
import { BaseLogWriter } from "./base-writer.js";
|
|
10
|
+
/**
|
|
11
|
+
* Composite Writer class that combines multiple writers.
|
|
12
|
+
*
|
|
13
|
+
* This is the primary writer used by the Logger class.
|
|
14
|
+
* It manages multiple output destinations (console, file, MCP)
|
|
15
|
+
* and ensures all enabled writers receive log entries.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const composite = new CompositeWriter();
|
|
20
|
+
* composite.addWriter('console', consoleWriter);
|
|
21
|
+
* composite.addWriter('file', fileWriter);
|
|
22
|
+
* composite.write('info', 'Hello world', 'server'); // Goes to both writers
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export class CompositeWriter extends BaseLogWriter {
|
|
26
|
+
writers = new Map();
|
|
27
|
+
/**
|
|
28
|
+
* Add a named writer to the composite.
|
|
29
|
+
*
|
|
30
|
+
* @param name - Unique name for the writer
|
|
31
|
+
* @param writer - The writer instance
|
|
32
|
+
*/
|
|
33
|
+
addWriter(name, writer) {
|
|
34
|
+
this.writers.set(name, writer);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Remove a writer by name.
|
|
38
|
+
*
|
|
39
|
+
* @param name - The writer name to remove
|
|
40
|
+
* @returns true if a writer was removed
|
|
41
|
+
*/
|
|
42
|
+
removeWriter(name) {
|
|
43
|
+
return this.writers.delete(name);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get a writer by name.
|
|
47
|
+
*
|
|
48
|
+
* @param name - The writer name
|
|
49
|
+
* @returns The writer or undefined
|
|
50
|
+
*/
|
|
51
|
+
getWriter(name) {
|
|
52
|
+
return this.writers.get(name);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Check if a writer exists.
|
|
56
|
+
*
|
|
57
|
+
* @param name - The writer name
|
|
58
|
+
* @returns true if the writer exists
|
|
59
|
+
*/
|
|
60
|
+
hasWriter(name) {
|
|
61
|
+
return this.writers.has(name);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Write to all enabled writers.
|
|
65
|
+
*
|
|
66
|
+
* @param level - The log level
|
|
67
|
+
* @param message - The formatted log message
|
|
68
|
+
* @param component - The component that generated the log
|
|
69
|
+
*/
|
|
70
|
+
write(level, message, component) {
|
|
71
|
+
if (!this.enabled)
|
|
72
|
+
return;
|
|
73
|
+
for (const writer of this.writers.values()) {
|
|
74
|
+
if (writer.isAvailable()) {
|
|
75
|
+
try {
|
|
76
|
+
writer.write(level, message, component);
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// Individual writer failure must not break the pipeline.
|
|
80
|
+
// Remaining writers continue to receive log output.
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Close all writers.
|
|
87
|
+
*
|
|
88
|
+
* @returns Promise that resolves when all writers are closed
|
|
89
|
+
*/
|
|
90
|
+
async close() {
|
|
91
|
+
const closePromises = Array.from(this.writers.values()).map((writer) => writer.close());
|
|
92
|
+
await Promise.allSettled(closePromises);
|
|
93
|
+
this.writers.clear();
|
|
94
|
+
await super.close();
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Check if any writer is available.
|
|
98
|
+
*/
|
|
99
|
+
isAvailable() {
|
|
100
|
+
if (!this.enabled)
|
|
101
|
+
return false;
|
|
102
|
+
for (const writer of this.writers.values()) {
|
|
103
|
+
if (writer.isAvailable())
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get the number of registered writers.
|
|
110
|
+
*/
|
|
111
|
+
getWriterCount() {
|
|
112
|
+
return this.writers.size;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get all writer names.
|
|
116
|
+
*/
|
|
117
|
+
getWriterNames() {
|
|
118
|
+
return Array.from(this.writers.keys());
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=composite-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composite-writer.js","sourceRoot":"","sources":["../../../src/logger/writers/composite-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,eAAgB,SAAQ,aAAa;IACxC,OAAO,GAA2B,IAAI,GAAG,EAAE,CAAC;IAEpD;;;;;OAKG;IACH,SAAS,CAAC,IAAY,EAAE,MAAiB;QACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAe,EAAE,OAAe,EAAE,SAAiB;QACvD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;gBAC1C,CAAC;gBAAC,MAAM,CAAC;oBACP,yDAAyD;oBACzD,oDAAoD;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACxF,MAAM,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAEhC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,MAAM,CAAC,WAAW,EAAE;gBAAE,OAAO,IAAI,CAAC;QACxC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console Log Writer Module
|
|
3
|
+
*
|
|
4
|
+
* Writes log entries to stdout/stderr based on transport mode and log level.
|
|
5
|
+
* In stdio mode, ALL logs go to stderr to avoid corrupting JSON-RPC on stdout.
|
|
6
|
+
* In HTTP mode, info/debug go to stdout, warn/error go to stderr.
|
|
7
|
+
*
|
|
8
|
+
* @module logger/writers/console-writer
|
|
9
|
+
*/
|
|
10
|
+
import type { LogLevel, TransportMode } from "../core/types.js";
|
|
11
|
+
import { BaseLogWriter } from "./base-writer.js";
|
|
12
|
+
/**
|
|
13
|
+
* Configuration for the console writer.
|
|
14
|
+
*/
|
|
15
|
+
export interface ConsoleWriterConfig {
|
|
16
|
+
/** Transport mode determines output stream routing */
|
|
17
|
+
transport: TransportMode;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Console Writer class for terminal output.
|
|
21
|
+
*
|
|
22
|
+
* Handles the complexity of MCP transport modes:
|
|
23
|
+
* - **stdio mode**: ALL output goes to stderr (stdout is reserved for JSON-RPC)
|
|
24
|
+
* - **http/https mode**: Standard behavior (info/debug → stdout, warn/error → stderr)
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const writer = new ConsoleWriter({ transport: 'stdio' });
|
|
29
|
+
* writer.write('info', 'Hello world', 'server'); // Goes to stderr
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare class ConsoleWriter extends BaseLogWriter {
|
|
33
|
+
private transport;
|
|
34
|
+
/**
|
|
35
|
+
* Create a new ConsoleWriter.
|
|
36
|
+
* @param config - Writer configuration
|
|
37
|
+
*/
|
|
38
|
+
constructor(config: ConsoleWriterConfig);
|
|
39
|
+
/**
|
|
40
|
+
* Write a log message to the appropriate console stream.
|
|
41
|
+
*
|
|
42
|
+
* @param level - The log level
|
|
43
|
+
* @param message - The formatted log message
|
|
44
|
+
* @param _component - The component (unused, but part of interface)
|
|
45
|
+
*/
|
|
46
|
+
write(level: LogLevel, message: string, _component: string): void;
|
|
47
|
+
/**
|
|
48
|
+
* Update the transport mode.
|
|
49
|
+
* Useful when transport changes at runtime.
|
|
50
|
+
*
|
|
51
|
+
* @param transport - The new transport mode
|
|
52
|
+
*/
|
|
53
|
+
setTransport(transport: TransportMode): void;
|
|
54
|
+
/**
|
|
55
|
+
* Get the current transport mode.
|
|
56
|
+
*/
|
|
57
|
+
getTransport(): TransportMode;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=console-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-writer.d.ts","sourceRoot":"","sources":["../../../src/logger/writers/console-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAC9C,OAAO,CAAC,SAAS,CAAgB;IAEjC;;;OAGG;gBACS,MAAM,EAAE,mBAAmB;IAKvC;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAiBjE;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;IAI5C;;OAEG;IACH,YAAY,IAAI,aAAa;CAG9B"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console Log Writer Module
|
|
3
|
+
*
|
|
4
|
+
* Writes log entries to stdout/stderr based on transport mode and log level.
|
|
5
|
+
* In stdio mode, ALL logs go to stderr to avoid corrupting JSON-RPC on stdout.
|
|
6
|
+
* In HTTP mode, info/debug go to stdout, warn/error go to stderr.
|
|
7
|
+
*
|
|
8
|
+
* @module logger/writers/console-writer
|
|
9
|
+
*/
|
|
10
|
+
import { BaseLogWriter } from "./base-writer.js";
|
|
11
|
+
/**
|
|
12
|
+
* Console Writer class for terminal output.
|
|
13
|
+
*
|
|
14
|
+
* Handles the complexity of MCP transport modes:
|
|
15
|
+
* - **stdio mode**: ALL output goes to stderr (stdout is reserved for JSON-RPC)
|
|
16
|
+
* - **http/https mode**: Standard behavior (info/debug → stdout, warn/error → stderr)
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const writer = new ConsoleWriter({ transport: 'stdio' });
|
|
21
|
+
* writer.write('info', 'Hello world', 'server'); // Goes to stderr
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export class ConsoleWriter extends BaseLogWriter {
|
|
25
|
+
transport;
|
|
26
|
+
/**
|
|
27
|
+
* Create a new ConsoleWriter.
|
|
28
|
+
* @param config - Writer configuration
|
|
29
|
+
*/
|
|
30
|
+
constructor(config) {
|
|
31
|
+
super();
|
|
32
|
+
this.transport = config.transport;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Write a log message to the appropriate console stream.
|
|
36
|
+
*
|
|
37
|
+
* @param level - The log level
|
|
38
|
+
* @param message - The formatted log message
|
|
39
|
+
* @param _component - The component (unused, but part of interface)
|
|
40
|
+
*/
|
|
41
|
+
write(level, message, _component) {
|
|
42
|
+
if (!this.enabled)
|
|
43
|
+
return;
|
|
44
|
+
// In stdio mode, MUST write to stderr to avoid corrupting JSON-RPC on stdout
|
|
45
|
+
if (this.transport === "stdio") {
|
|
46
|
+
process.stderr.write(message + "\n");
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// In HTTP/HTTPS mode, use standard console behavior
|
|
50
|
+
if (level === "error" || level === "warn") {
|
|
51
|
+
process.stderr.write(message + "\n");
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
process.stdout.write(message + "\n");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Update the transport mode.
|
|
59
|
+
* Useful when transport changes at runtime.
|
|
60
|
+
*
|
|
61
|
+
* @param transport - The new transport mode
|
|
62
|
+
*/
|
|
63
|
+
setTransport(transport) {
|
|
64
|
+
this.transport = transport;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get the current transport mode.
|
|
68
|
+
*/
|
|
69
|
+
getTransport() {
|
|
70
|
+
return this.transport;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=console-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console-writer.js","sourceRoot":"","sources":["../../../src/logger/writers/console-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAUjD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,aAAc,SAAQ,aAAa;IACtC,SAAS,CAAgB;IAEjC;;;OAGG;IACH,YAAY,MAA2B;QACrC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACpC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAe,EAAE,OAAe,EAAE,UAAkB;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,6EAA6E;QAC7E,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,oDAAoD;QACpD,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,SAAwB;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF"}
|