@frontmcp/sdk 0.6.0 → 0.6.2
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/{src/auth → auth}/instances/instance.local-primary-auth.d.ts +1 -1
- package/{src/auth → auth}/instances/instance.remote-primary-auth.d.ts +1 -1
- package/{src/auth → auth}/session/index.d.ts +1 -0
- package/auth/session/vercel-kv-session.store.d.ts +96 -0
- package/{src/common → common}/interfaces/internal/primary-auth-provider.interface.d.ts +1 -4
- package/{src/common → common}/metadata/front-mcp.metadata.d.ts +1779 -67
- package/{src/common → common}/metadata/prompt.metadata.d.ts +4 -0
- package/{src/common → common}/metadata/resource.metadata.d.ts +8 -0
- package/{src/common → common}/metadata/tool-ui.metadata.d.ts +2 -2
- package/{src/common → common}/metadata/tool.metadata.d.ts +4 -0
- package/{src/common → common}/schemas/http-output.schema.d.ts +24 -6
- package/common/types/options/auth/app-auth.schema.d.ts +275 -0
- package/common/types/options/auth/auth.interfaces.d.ts +461 -0
- package/common/types/options/auth/auth.schema.d.ts +284 -0
- package/common/types/options/auth/auth.utils.d.ts +32 -0
- package/common/types/options/auth/index.d.ts +16 -0
- package/common/types/options/auth/orchestrated.schema.d.ts +381 -0
- package/common/types/options/auth/public.schema.d.ts +42 -0
- package/common/types/options/auth/shared.schemas.d.ts +120 -0
- package/common/types/options/auth/transparent.schema.d.ts +56 -0
- package/common/types/options/auth/transport.deprecated.d.ts +63 -0
- package/{src/common → common}/types/options/index.d.ts +1 -1
- package/common/types/options/redis.options.d.ts +190 -0
- package/{src/common → common}/types/options/server-info.options.d.ts +4 -0
- package/{src/common → common}/types/options/transport.options.d.ts +74 -5
- package/{src/common → common}/utils/decide-request-intent.utils.d.ts +6 -7
- package/common/utils/global-config.utils.d.ts +36 -0
- package/{src/common → common}/utils/index.d.ts +1 -0
- package/{src/completion → completion}/flows/complete.flow.d.ts +6 -8
- package/{src/errors → errors}/index.d.ts +1 -1
- package/{src/errors → errors}/mcp.error.d.ts +9 -0
- package/esm/index.mjs +22664 -0
- package/esm/mcp-apps/index.mjs +723 -0
- package/esm/package.json +81 -0
- package/{src/front-mcp → front-mcp}/front-mcp.providers.d.ts +246 -38
- package/front-mcp/index.d.ts +2 -0
- package/{src/index.d.ts → index.d.ts} +1 -1
- package/index.js +22957 -0
- package/logger/logger.tokens.d.ts +1 -0
- package/{src/logging → logging}/flows/set-level.flow.d.ts +6 -8
- package/mcp-apps/index.js +799 -0
- package/package.json +37 -17
- package/{src/prompt → prompt}/flows/get-prompt.flow.d.ts +14 -8
- package/{src/prompt → prompt}/flows/prompts-list.flow.d.ts +8 -7
- package/{src/resource → resource}/flows/read-resource.flow.d.ts +8 -9
- package/{src/resource → resource}/flows/resource-templates-list.flow.d.ts +8 -7
- package/{src/resource → resource}/flows/resources-list.flow.d.ts +8 -7
- package/{src/resource → resource}/flows/subscribe-resource.flow.d.ts +6 -8
- package/{src/resource → resource}/flows/unsubscribe-resource.flow.d.ts +6 -8
- package/store/adapters/store.vercel-kv.adapter.d.ts +86 -0
- package/{src/store → store}/index.d.ts +2 -0
- package/store/store.factory.d.ts +86 -0
- package/{src/tool → tool}/flows/call-tool.flow.d.ts +18 -9
- package/{src/tool → tool}/flows/tools-list.flow.d.ts +9 -8
- package/{src/tool → tool}/ui/index.d.ts +4 -4
- package/{src/tool → tool}/ui/platform-adapters.d.ts +2 -2
- package/{src/tool → tool}/ui/template-helpers.d.ts +5 -7
- package/{src/tool → tool}/ui/ui-resource.handler.d.ts +1 -1
- package/{src/transport → transport}/mcp-handlers/complete-request.handler.d.ts +4 -15
- package/{src/transport → transport}/mcp-handlers/get-prompt-request.handler.d.ts +5 -15
- package/{src/transport → transport}/mcp-handlers/index.d.ts +67 -195
- package/{src/transport → transport}/mcp-handlers/list-prompts-request.handler.d.ts +5 -15
- package/{src/transport → transport}/mcp-handlers/list-resource-templates-request.handler.d.ts +5 -15
- package/{src/transport → transport}/mcp-handlers/list-resources-request.handler.d.ts +5 -15
- package/{src/transport → transport}/mcp-handlers/list-tools-request.handler.d.ts +5 -15
- package/{src/transport → transport}/mcp-handlers/logging-set-level-request.handler.d.ts +3 -14
- package/{src/transport → transport}/mcp-handlers/read-resource-request.handler.d.ts +4 -15
- package/{src/transport → transport}/mcp-handlers/subscribe-request.handler.d.ts +3 -14
- package/{src/transport → transport}/mcp-handlers/unsubscribe-request.handler.d.ts +3 -14
- package/{src/transport → transport}/transport.registry.d.ts +5 -1
- package/README.md +0 -460
- package/src/adapter/adapter.instance.js +0 -70
- package/src/adapter/adapter.instance.js.map +0 -1
- package/src/adapter/adapter.regsitry.js +0 -54
- package/src/adapter/adapter.regsitry.js.map +0 -1
- package/src/adapter/adapter.utils.js +0 -83
- package/src/adapter/adapter.utils.js.map +0 -1
- package/src/app/app.registry.js +0 -66
- package/src/app/app.registry.js.map +0 -1
- package/src/app/app.utils.js +0 -58
- package/src/app/app.utils.js.map +0 -1
- package/src/app/instances/app.local.instance.js +0 -67
- package/src/app/instances/app.local.instance.js.map +0 -1
- package/src/app/instances/app.remote.instance.js +0 -36
- package/src/app/instances/app.remote.instance.js.map +0 -1
- package/src/app/instances/index.js +0 -6
- package/src/app/instances/index.js.map +0 -1
- package/src/auth/auth.registry.js +0 -219
- package/src/auth/auth.registry.js.map +0 -1
- package/src/auth/auth.utils.js +0 -84
- package/src/auth/auth.utils.js.map +0 -1
- package/src/auth/authorization/authorization.class.js +0 -217
- package/src/auth/authorization/authorization.class.js.map +0 -1
- package/src/auth/authorization/authorization.types.js +0 -79
- package/src/auth/authorization/authorization.types.js.map +0 -1
- package/src/auth/authorization/index.js +0 -19
- package/src/auth/authorization/index.js.map +0 -1
- package/src/auth/authorization/orchestrated.authorization.js +0 -306
- package/src/auth/authorization/orchestrated.authorization.js.map +0 -1
- package/src/auth/authorization/public.authorization.js +0 -132
- package/src/auth/authorization/public.authorization.js.map +0 -1
- package/src/auth/authorization/transparent.authorization.js +0 -147
- package/src/auth/authorization/transparent.authorization.js.map +0 -1
- package/src/auth/consent/consent.types.js +0 -119
- package/src/auth/consent/consent.types.js.map +0 -1
- package/src/auth/consent/index.js +0 -13
- package/src/auth/consent/index.js.map +0 -1
- package/src/auth/detection/auth-provider-detection.js +0 -230
- package/src/auth/detection/auth-provider-detection.js.map +0 -1
- package/src/auth/detection/index.js +0 -15
- package/src/auth/detection/index.js.map +0 -1
- package/src/auth/flows/auth.verify.flow.js +0 -379
- package/src/auth/flows/auth.verify.flow.js.map +0 -1
- package/src/auth/flows/oauth.authorize.flow.js +0 -822
- package/src/auth/flows/oauth.authorize.flow.js.map +0 -1
- package/src/auth/flows/oauth.callback.flow.js +0 -357
- package/src/auth/flows/oauth.callback.flow.js.map +0 -1
- package/src/auth/flows/oauth.register.flow.js +0 -201
- package/src/auth/flows/oauth.register.flow.js.map +0 -1
- package/src/auth/flows/oauth.token.flow.js +0 -319
- package/src/auth/flows/oauth.token.flow.js.map +0 -1
- package/src/auth/flows/session.verify.flow.js +0 -304
- package/src/auth/flows/session.verify.flow.js.map +0 -1
- package/src/auth/flows/well-known.jwks.flow.js +0 -89
- package/src/auth/flows/well-known.jwks.flow.js.map +0 -1
- package/src/auth/flows/well-known.oauth-authorization-server.flow.js +0 -122
- package/src/auth/flows/well-known.oauth-authorization-server.flow.js.map +0 -1
- package/src/auth/flows/well-known.prm.flow.js +0 -106
- package/src/auth/flows/well-known.prm.flow.js.map +0 -1
- package/src/auth/instances/instance.local-primary-auth.js +0 -308
- package/src/auth/instances/instance.local-primary-auth.js.map +0 -1
- package/src/auth/instances/instance.remote-primary-auth.js +0 -49
- package/src/auth/instances/instance.remote-primary-auth.js.map +0 -1
- package/src/auth/jwks/dev-key-persistence.js +0 -219
- package/src/auth/jwks/dev-key-persistence.js.map +0 -1
- package/src/auth/jwks/index.js +0 -7
- package/src/auth/jwks/index.js.map +0 -1
- package/src/auth/jwks/jwks.service.js +0 -303
- package/src/auth/jwks/jwks.service.js.map +0 -1
- package/src/auth/jwks/jwks.types.js +0 -3
- package/src/auth/jwks/jwks.types.js.map +0 -1
- package/src/auth/jwks/jwks.utils.js +0 -32
- package/src/auth/jwks/jwks.utils.js.map +0 -1
- package/src/auth/machine-id.js +0 -32
- package/src/auth/machine-id.js.map +0 -1
- package/src/auth/oauth/flows/oauth.authorize.flow.js +0 -33
- package/src/auth/oauth/flows/oauth.authorize.flow.js.map +0 -1
- package/src/auth/oauth/flows/oauth.device-authorization.flow.js +0 -48
- package/src/auth/oauth/flows/oauth.device-authorization.flow.js.map +0 -1
- package/src/auth/oauth/flows/oauth.introspect.flow.js +0 -28
- package/src/auth/oauth/flows/oauth.introspect.flow.js.map +0 -1
- package/src/auth/oauth/flows/oauth.par.flow.js +0 -29
- package/src/auth/oauth/flows/oauth.par.flow.js.map +0 -1
- package/src/auth/oauth/flows/oauth.revoke.flow.js +0 -27
- package/src/auth/oauth/flows/oauth.revoke.flow.js.map +0 -1
- package/src/auth/oauth/flows/oauth.token.flow.js +0 -59
- package/src/auth/oauth/flows/oauth.token.flow.js.map +0 -1
- package/src/auth/oauth/flows/oauth.userinfo.flow.js +0 -24
- package/src/auth/oauth/flows/oauth.userinfo.flow.js.map +0 -1
- package/src/auth/oauth/flows/oidc.logout.flow.js +0 -20
- package/src/auth/oauth/flows/oidc.logout.flow.js.map +0 -1
- package/src/auth/session/authorization-vault.js +0 -817
- package/src/auth/session/authorization-vault.js.map +0 -1
- package/src/auth/session/authorization.store.js +0 -323
- package/src/auth/session/authorization.store.js.map +0 -1
- package/src/auth/session/encrypted-authorization-vault.js +0 -493
- package/src/auth/session/encrypted-authorization-vault.js.map +0 -1
- package/src/auth/session/index.js +0 -16
- package/src/auth/session/index.js.map +0 -1
- package/src/auth/session/record/session.base.js +0 -125
- package/src/auth/session/record/session.base.js.map +0 -1
- package/src/auth/session/record/session.stateful.js +0 -55
- package/src/auth/session/record/session.stateful.js.map +0 -1
- package/src/auth/session/record/session.stateless.js +0 -32
- package/src/auth/session/record/session.stateless.js.map +0 -1
- package/src/auth/session/record/session.transparent.js +0 -22
- package/src/auth/session/record/session.transparent.js.map +0 -1
- package/src/auth/session/redis-session.store.js +0 -204
- package/src/auth/session/redis-session.store.js.map +0 -1
- package/src/auth/session/session.crypto.js +0 -47
- package/src/auth/session/session.crypto.js.map +0 -1
- package/src/auth/session/session.schema.js +0 -13
- package/src/auth/session/session.schema.js.map +0 -1
- package/src/auth/session/session.service.js +0 -105
- package/src/auth/session/session.service.js.map +0 -1
- package/src/auth/session/session.transport.js +0 -20
- package/src/auth/session/session.transport.js.map +0 -1
- package/src/auth/session/session.types.js +0 -4
- package/src/auth/session/session.types.js.map +0 -1
- package/src/auth/session/token.refresh.js +0 -63
- package/src/auth/session/token.refresh.js.map +0 -1
- package/src/auth/session/token.store.js +0 -53
- package/src/auth/session/token.store.js.map +0 -1
- package/src/auth/session/token.vault.js +0 -54
- package/src/auth/session/token.vault.js.map +0 -1
- package/src/auth/session/transport-session.manager.js +0 -298
- package/src/auth/session/transport-session.manager.js.map +0 -1
- package/src/auth/session/transport-session.types.js +0 -111
- package/src/auth/session/transport-session.types.js.map +0 -1
- package/src/auth/session/utils/auth-token.utils.js +0 -57
- package/src/auth/session/utils/auth-token.utils.js.map +0 -1
- package/src/auth/session/utils/session-id.utils.js +0 -217
- package/src/auth/session/utils/session-id.utils.js.map +0 -1
- package/src/auth/session/utils/tiny-ttl-cache.js +0 -26
- package/src/auth/session/utils/tiny-ttl-cache.js.map +0 -1
- package/src/auth/session/vault-encryption.js +0 -263
- package/src/auth/session/vault-encryption.js.map +0 -1
- package/src/auth/ui/base-layout.js +0 -279
- package/src/auth/ui/base-layout.js.map +0 -1
- package/src/auth/ui/index.js +0 -34
- package/src/auth/ui/index.js.map +0 -1
- package/src/auth/ui/templates.js +0 -426
- package/src/auth/ui/templates.js.map +0 -1
- package/src/auth/utils/audience.validator.js +0 -196
- package/src/auth/utils/audience.validator.js.map +0 -1
- package/src/auth/utils/index.js +0 -7
- package/src/auth/utils/index.js.map +0 -1
- package/src/auth/utils/www-authenticate.utils.js +0 -183
- package/src/auth/utils/www-authenticate.utils.js.map +0 -1
- package/src/common/common.schema.js +0 -35
- package/src/common/common.schema.js.map +0 -1
- package/src/common/constants.js +0 -13
- package/src/common/constants.js.map +0 -1
- package/src/common/decorators/adapter.decorator.js +0 -20
- package/src/common/decorators/adapter.decorator.js.map +0 -1
- package/src/common/decorators/app.decorator.js +0 -44
- package/src/common/decorators/app.decorator.js.map +0 -1
- package/src/common/decorators/auth-provider.decorator.js +0 -20
- package/src/common/decorators/auth-provider.decorator.js.map +0 -1
- package/src/common/decorators/decorator-utils.js +0 -195
- package/src/common/decorators/decorator-utils.js.map +0 -1
- package/src/common/decorators/flow.decorator.js +0 -19
- package/src/common/decorators/flow.decorator.js.map +0 -1
- package/src/common/decorators/front-mcp.decorator.js +0 -67
- package/src/common/decorators/front-mcp.decorator.js.map +0 -1
- package/src/common/decorators/hook.decorator.js +0 -178
- package/src/common/decorators/hook.decorator.js.map +0 -1
- package/src/common/decorators/index.js +0 -16
- package/src/common/decorators/index.js.map +0 -1
- package/src/common/decorators/logger.decorator.js +0 -20
- package/src/common/decorators/logger.decorator.js.map +0 -1
- package/src/common/decorators/plugin.decorator.js +0 -39
- package/src/common/decorators/plugin.decorator.js.map +0 -1
- package/src/common/decorators/prompt.decorator.js +0 -38
- package/src/common/decorators/prompt.decorator.js.map +0 -1
- package/src/common/decorators/provider.decorator.js +0 -20
- package/src/common/decorators/provider.decorator.js.map +0 -1
- package/src/common/decorators/resource.decorator.js +0 -94
- package/src/common/decorators/resource.decorator.js.map +0 -1
- package/src/common/decorators/tool.decorator.js +0 -45
- package/src/common/decorators/tool.decorator.js.map +0 -1
- package/src/common/dynamic/dynamic.adapter.js +0 -28
- package/src/common/dynamic/dynamic.adapter.js.map +0 -1
- package/src/common/dynamic/dynamic.plugin.js +0 -42
- package/src/common/dynamic/dynamic.plugin.js.map +0 -1
- package/src/common/dynamic/dynamic.utils.js +0 -27
- package/src/common/dynamic/dynamic.utils.js.map +0 -1
- package/src/common/dynamic/index.js +0 -6
- package/src/common/dynamic/index.js.map +0 -1
- package/src/common/entries/adapter.entry.js +0 -8
- package/src/common/entries/adapter.entry.js.map +0 -1
- package/src/common/entries/app.entry.js +0 -9
- package/src/common/entries/app.entry.js.map +0 -1
- package/src/common/entries/auth-provider.entry.js +0 -8
- package/src/common/entries/auth-provider.entry.js.map +0 -1
- package/src/common/entries/base.entry.js +0 -17
- package/src/common/entries/base.entry.js.map +0 -1
- package/src/common/entries/flow.entry.js +0 -21
- package/src/common/entries/flow.entry.js.map +0 -1
- package/src/common/entries/hook.entry.js +0 -20
- package/src/common/entries/hook.entry.js.map +0 -1
- package/src/common/entries/index.js +0 -17
- package/src/common/entries/index.js.map +0 -1
- package/src/common/entries/logger.entry.js +0 -8
- package/src/common/entries/logger.entry.js.map +0 -1
- package/src/common/entries/plugin.entry.js +0 -8
- package/src/common/entries/plugin.entry.js.map +0 -1
- package/src/common/entries/prompt.entry.js +0 -18
- package/src/common/entries/prompt.entry.js.map +0 -1
- package/src/common/entries/provider.entry.js +0 -8
- package/src/common/entries/provider.entry.js.map +0 -1
- package/src/common/entries/resource.entry.js +0 -35
- package/src/common/entries/resource.entry.js.map +0 -1
- package/src/common/entries/scope.entry.js +0 -14
- package/src/common/entries/scope.entry.js.map +0 -1
- package/src/common/entries/tool.entry.js +0 -31
- package/src/common/entries/tool.entry.js.map +0 -1
- package/src/common/flow/flow.utils.js +0 -96
- package/src/common/flow/flow.utils.js.map +0 -1
- package/src/common/index.js +0 -20
- package/src/common/index.js.map +0 -1
- package/src/common/interfaces/adapter.interface.js +0 -3
- package/src/common/interfaces/adapter.interface.js.map +0 -1
- package/src/common/interfaces/app.interface.js +0 -3
- package/src/common/interfaces/app.interface.js.map +0 -1
- package/src/common/interfaces/auth-hook.interface.js +0 -135
- package/src/common/interfaces/auth-hook.interface.js.map +0 -1
- package/src/common/interfaces/auth-provider.interface.js +0 -18
- package/src/common/interfaces/auth-provider.interface.js.map +0 -1
- package/src/common/interfaces/base.interface.js +0 -3
- package/src/common/interfaces/base.interface.js.map +0 -1
- package/src/common/interfaces/execution-context.interface.js +0 -166
- package/src/common/interfaces/execution-context.interface.js.map +0 -1
- package/src/common/interfaces/flow.interface.js +0 -95
- package/src/common/interfaces/flow.interface.js.map +0 -1
- package/src/common/interfaces/front-mcp.interface.js +0 -3
- package/src/common/interfaces/front-mcp.interface.js.map +0 -1
- package/src/common/interfaces/hook.interface.js +0 -3
- package/src/common/interfaces/hook.interface.js.map +0 -1
- package/src/common/interfaces/index.js +0 -21
- package/src/common/interfaces/index.js.map +0 -1
- package/src/common/interfaces/internal/flow.utils.js +0 -83
- package/src/common/interfaces/internal/flow.utils.js.map +0 -1
- package/src/common/interfaces/internal/index.js +0 -7
- package/src/common/interfaces/internal/index.js.map +0 -1
- package/src/common/interfaces/internal/primary-auth-provider.interface.js +0 -81
- package/src/common/interfaces/internal/primary-auth-provider.interface.js.map +0 -1
- package/src/common/interfaces/internal/registry.interface.js +0 -3
- package/src/common/interfaces/internal/registry.interface.js.map +0 -1
- package/src/common/interfaces/logger.interface.js +0 -10
- package/src/common/interfaces/logger.interface.js.map +0 -1
- package/src/common/interfaces/plugin.interface.js +0 -3
- package/src/common/interfaces/plugin.interface.js.map +0 -1
- package/src/common/interfaces/prompt.interface.js +0 -81
- package/src/common/interfaces/prompt.interface.js.map +0 -1
- package/src/common/interfaces/provider.interface.js +0 -18
- package/src/common/interfaces/provider.interface.js.map +0 -1
- package/src/common/interfaces/resource.interface.js +0 -56
- package/src/common/interfaces/resource.interface.js.map +0 -1
- package/src/common/interfaces/scope.interface.js +0 -3
- package/src/common/interfaces/scope.interface.js.map +0 -1
- package/src/common/interfaces/server.interface.js +0 -18
- package/src/common/interfaces/server.interface.js.map +0 -1
- package/src/common/interfaces/session-hook.interface.js +0 -140
- package/src/common/interfaces/session-hook.interface.js.map +0 -1
- package/src/common/interfaces/tool-hook.interface.js +0 -92
- package/src/common/interfaces/tool-hook.interface.js.map +0 -1
- package/src/common/interfaces/tool.interface.js +0 -117
- package/src/common/interfaces/tool.interface.js.map +0 -1
- package/src/common/metadata/adapter.metadata.js +0 -10
- package/src/common/metadata/adapter.metadata.js.map +0 -1
- package/src/common/metadata/app.metadata.js +0 -30
- package/src/common/metadata/app.metadata.js.map +0 -1
- package/src/common/metadata/auth-provider.metadata.js +0 -19
- package/src/common/metadata/auth-provider.metadata.js.map +0 -1
- package/src/common/metadata/flow.metadata.js +0 -15
- package/src/common/metadata/flow.metadata.js.map +0 -1
- package/src/common/metadata/front-mcp.metadata.js +0 -29
- package/src/common/metadata/front-mcp.metadata.js.map +0 -1
- package/src/common/metadata/hook.metadata.js +0 -3
- package/src/common/metadata/hook.metadata.js.map +0 -1
- package/src/common/metadata/index.js +0 -17
- package/src/common/metadata/index.js.map +0 -1
- package/src/common/metadata/logger.metadata.js +0 -10
- package/src/common/metadata/logger.metadata.js.map +0 -1
- package/src/common/metadata/plugin.metadata.js +0 -18
- package/src/common/metadata/plugin.metadata.js.map +0 -1
- package/src/common/metadata/prompt.metadata.js +0 -27
- package/src/common/metadata/prompt.metadata.js.map +0 -1
- package/src/common/metadata/provider.metadata.js +0 -36
- package/src/common/metadata/provider.metadata.js.map +0 -1
- package/src/common/metadata/resource.metadata.js +0 -31
- package/src/common/metadata/resource.metadata.js.map +0 -1
- package/src/common/metadata/tool-ui.metadata.js +0 -12
- package/src/common/metadata/tool-ui.metadata.js.map +0 -1
- package/src/common/metadata/tool.metadata.js +0 -55
- package/src/common/metadata/tool.metadata.js.map +0 -1
- package/src/common/migrate/auth-transport.migrate.js +0 -140
- package/src/common/migrate/auth-transport.migrate.js.map +0 -1
- package/src/common/migrate/index.js +0 -6
- package/src/common/migrate/index.js.map +0 -1
- package/src/common/providers/base-config.provider.js +0 -128
- package/src/common/providers/base-config.provider.js.map +0 -1
- package/src/common/records/adapter.record.js +0 -11
- package/src/common/records/adapter.record.js.map +0 -1
- package/src/common/records/app.record.js +0 -9
- package/src/common/records/app.record.js.map +0 -1
- package/src/common/records/auth-provider.record.js +0 -12
- package/src/common/records/auth-provider.record.js.map +0 -1
- package/src/common/records/flow.record.js +0 -8
- package/src/common/records/flow.record.js.map +0 -1
- package/src/common/records/hook.record.js +0 -8
- package/src/common/records/hook.record.js.map +0 -1
- package/src/common/records/index.js +0 -16
- package/src/common/records/index.js.map +0 -1
- package/src/common/records/logger.record.js +0 -8
- package/src/common/records/logger.record.js.map +0 -1
- package/src/common/records/plugin.record.js +0 -11
- package/src/common/records/plugin.record.js.map +0 -1
- package/src/common/records/prompt.record.js +0 -9
- package/src/common/records/prompt.record.js.map +0 -1
- package/src/common/records/provider.record.js +0 -14
- package/src/common/records/provider.record.js.map +0 -1
- package/src/common/records/resource.record.js +0 -20
- package/src/common/records/resource.record.js.map +0 -1
- package/src/common/records/scope.record.js +0 -9
- package/src/common/records/scope.record.js.map +0 -1
- package/src/common/records/tool.record.js +0 -9
- package/src/common/records/tool.record.js.map +0 -1
- package/src/common/schemas/annotated-class.schema.js +0 -109
- package/src/common/schemas/annotated-class.schema.js.map +0 -1
- package/src/common/schemas/http-input.schema.js +0 -13
- package/src/common/schemas/http-input.schema.js.map +0 -1
- package/src/common/schemas/http-output.schema.js +0 -321
- package/src/common/schemas/http-output.schema.js.map +0 -1
- package/src/common/schemas/index.js +0 -8
- package/src/common/schemas/index.js.map +0 -1
- package/src/common/schemas/session-header.schema.js +0 -42
- package/src/common/schemas/session-header.schema.js.map +0 -1
- package/src/common/tokens/adapter.tokens.js +0 -11
- package/src/common/tokens/adapter.tokens.js.map +0 -1
- package/src/common/tokens/app.tokens.js +0 -30
- package/src/common/tokens/app.tokens.js.map +0 -1
- package/src/common/tokens/auth-provider.tokens.js +0 -12
- package/src/common/tokens/auth-provider.tokens.js.map +0 -1
- package/src/common/tokens/base.tokens.js +0 -9
- package/src/common/tokens/base.tokens.js.map +0 -1
- package/src/common/tokens/flow-hook.tokens.js +0 -9
- package/src/common/tokens/flow-hook.tokens.js.map +0 -1
- package/src/common/tokens/flow.tokens.js +0 -16
- package/src/common/tokens/flow.tokens.js.map +0 -1
- package/src/common/tokens/front-mcp.tokens.js +0 -24
- package/src/common/tokens/front-mcp.tokens.js.map +0 -1
- package/src/common/tokens/index.js +0 -17
- package/src/common/tokens/index.js.map +0 -1
- package/src/common/tokens/logger.tokens.js +0 -11
- package/src/common/tokens/logger.tokens.js.map +0 -1
- package/src/common/tokens/plugin.tokens.js +0 -18
- package/src/common/tokens/plugin.tokens.js.map +0 -1
- package/src/common/tokens/prompt.tokens.js +0 -14
- package/src/common/tokens/prompt.tokens.js.map +0 -1
- package/src/common/tokens/provider.tokens.js +0 -12
- package/src/common/tokens/provider.tokens.js.map +0 -1
- package/src/common/tokens/resource.tokens.js +0 -28
- package/src/common/tokens/resource.tokens.js.map +0 -1
- package/src/common/tokens/server.tokens.js +0 -11
- package/src/common/tokens/server.tokens.js.map +0 -1
- package/src/common/tokens/tool.tokens.js +0 -21
- package/src/common/tokens/tool.tokens.js.map +0 -1
- package/src/common/types/auth/index.js +0 -6
- package/src/common/types/auth/index.js.map +0 -1
- package/src/common/types/auth/jwt.types.js +0 -36
- package/src/common/types/auth/jwt.types.js.map +0 -1
- package/src/common/types/auth/session.types.js +0 -53
- package/src/common/types/auth/session.types.js.map +0 -1
- package/src/common/types/common.types.js +0 -3
- package/src/common/types/common.types.js.map +0 -1
- package/src/common/types/index.js +0 -7
- package/src/common/types/index.js.map +0 -1
- package/src/common/types/options/auth.options.d.ts +0 -1266
- package/src/common/types/options/auth.options.js +0 -560
- package/src/common/types/options/auth.options.js.map +0 -1
- package/src/common/types/options/http.options.js +0 -10
- package/src/common/types/options/http.options.js.map +0 -1
- package/src/common/types/options/index.js +0 -11
- package/src/common/types/options/index.js.map +0 -1
- package/src/common/types/options/logging.options.js +0 -33
- package/src/common/types/options/logging.options.js.map +0 -1
- package/src/common/types/options/redis.options.d.ts +0 -22
- package/src/common/types/options/redis.options.js +0 -45
- package/src/common/types/options/redis.options.js.map +0 -1
- package/src/common/types/options/server-info.options.js +0 -13
- package/src/common/types/options/server-info.options.js.map +0 -1
- package/src/common/types/options/session.options.js +0 -32
- package/src/common/types/options/session.options.js.map +0 -1
- package/src/common/types/options/transport.options.js +0 -121
- package/src/common/types/options/transport.options.js.map +0 -1
- package/src/common/utils/decide-request-intent.utils.js +0 -391
- package/src/common/utils/decide-request-intent.utils.js.map +0 -1
- package/src/common/utils/index.js +0 -6
- package/src/common/utils/index.js.map +0 -1
- package/src/common/utils/path.utils.js +0 -66
- package/src/common/utils/path.utils.js.map +0 -1
- package/src/completion/flows/complete.flow.js +0 -199
- package/src/completion/flows/complete.flow.js.map +0 -1
- package/src/context/frontmcp-context-storage.js +0 -183
- package/src/context/frontmcp-context-storage.js.map +0 -1
- package/src/context/frontmcp-context.js +0 -360
- package/src/context/frontmcp-context.js.map +0 -1
- package/src/context/frontmcp-context.provider.js +0 -61
- package/src/context/frontmcp-context.provider.js.map +0 -1
- package/src/context/index.js +0 -64
- package/src/context/index.js.map +0 -1
- package/src/context/request-context-storage.js +0 -183
- package/src/context/request-context-storage.js.map +0 -1
- package/src/context/request-context.js +0 -209
- package/src/context/request-context.js.map +0 -1
- package/src/context/request-context.provider.js +0 -51
- package/src/context/request-context.provider.js.map +0 -1
- package/src/context/session-key.provider.js +0 -65
- package/src/context/session-key.provider.js.map +0 -1
- package/src/context/trace-context.js +0 -142
- package/src/context/trace-context.js.map +0 -1
- package/src/errors/authorization-required.error.js +0 -274
- package/src/errors/authorization-required.error.js.map +0 -1
- package/src/errors/error-handler.js +0 -107
- package/src/errors/error-handler.js.map +0 -1
- package/src/errors/index.js +0 -44
- package/src/errors/index.js.map +0 -1
- package/src/errors/mcp.error.js +0 -398
- package/src/errors/mcp.error.js.map +0 -1
- package/src/exceptions/mcp-exceptions/session-missing.exception.js +0 -11
- package/src/exceptions/mcp-exceptions/session-missing.exception.js.map +0 -1
- package/src/exceptions/mcp-exceptions/unsupported-client-version.exception.js +0 -15
- package/src/exceptions/mcp-exceptions/unsupported-client-version.exception.js.map +0 -1
- package/src/flows/flow.instance.js +0 -420
- package/src/flows/flow.instance.js.map +0 -1
- package/src/flows/flow.registry.js +0 -121
- package/src/flows/flow.registry.js.map +0 -1
- package/src/flows/flow.stages.js +0 -113
- package/src/flows/flow.stages.js.map +0 -1
- package/src/flows/flow.utils.js +0 -36
- package/src/flows/flow.utils.js.map +0 -1
- package/src/front-mcp/front-mcp.js +0 -63
- package/src/front-mcp/front-mcp.js.map +0 -1
- package/src/front-mcp/front-mcp.providers.js +0 -29
- package/src/front-mcp/front-mcp.providers.js.map +0 -1
- package/src/front-mcp/front-mcp.tokens.js +0 -5
- package/src/front-mcp/front-mcp.tokens.js.map +0 -1
- package/src/front-mcp/index.d.ts +0 -1
- package/src/front-mcp/index.js +0 -5
- package/src/front-mcp/index.js.map +0 -1
- package/src/front-mcp/serverless-handler.js +0 -61
- package/src/front-mcp/serverless-handler.js.map +0 -1
- package/src/hooks/hook.instance.js +0 -26
- package/src/hooks/hook.instance.js.map +0 -1
- package/src/hooks/hook.registry.js +0 -152
- package/src/hooks/hook.registry.js.map +0 -1
- package/src/hooks/hooks.utils.js +0 -34
- package/src/hooks/hooks.utils.js.map +0 -1
- package/src/index.js +0 -36
- package/src/index.js.map +0 -1
- package/src/logger/instances/instance.console-logger.js +0 -75
- package/src/logger/instances/instance.console-logger.js.map +0 -1
- package/src/logger/instances/instance.logger.js +0 -77
- package/src/logger/instances/instance.logger.js.map +0 -1
- package/src/logger/logger.registry.js +0 -96
- package/src/logger/logger.registry.js.map +0 -1
- package/src/logger/logger.tokens.js +0 -3
- package/src/logger/logger.tokens.js.map +0 -1
- package/src/logger/logger.types.js +0 -8
- package/src/logger/logger.types.js.map +0 -1
- package/src/logger/logger.utils.js +0 -42
- package/src/logger/logger.utils.js.map +0 -1
- package/src/logging/flows/set-level.flow.js +0 -108
- package/src/logging/flows/set-level.flow.js.map +0 -1
- package/src/mcp-apps/csp.js +0 -267
- package/src/mcp-apps/csp.js.map +0 -1
- package/src/mcp-apps/index.js +0 -91
- package/src/mcp-apps/index.js.map +0 -1
- package/src/mcp-apps/schemas.js +0 -345
- package/src/mcp-apps/schemas.js.map +0 -1
- package/src/mcp-apps/template.js +0 -419
- package/src/mcp-apps/template.js.map +0 -1
- package/src/mcp-apps/types.js +0 -59
- package/src/mcp-apps/types.js.map +0 -1
- package/src/notification/index.js +0 -13
- package/src/notification/index.js.map +0 -1
- package/src/notification/notification.service.js +0 -731
- package/src/notification/notification.service.js.map +0 -1
- package/src/plugin/plugin.registry.js +0 -152
- package/src/plugin/plugin.registry.js.map +0 -1
- package/src/plugin/plugin.utils.js +0 -88
- package/src/plugin/plugin.utils.js.map +0 -1
- package/src/prompt/flows/get-prompt.flow.js +0 -214
- package/src/prompt/flows/get-prompt.flow.js.map +0 -1
- package/src/prompt/flows/prompts-list.flow.js +0 -176
- package/src/prompt/flows/prompts-list.flow.js.map +0 -1
- package/src/prompt/index.js +0 -17
- package/src/prompt/index.js.map +0 -1
- package/src/prompt/prompt.events.js +0 -25
- package/src/prompt/prompt.events.js.map +0 -1
- package/src/prompt/prompt.instance.js +0 -120
- package/src/prompt/prompt.instance.js.map +0 -1
- package/src/prompt/prompt.registry.js +0 -380
- package/src/prompt/prompt.registry.js.map +0 -1
- package/src/prompt/prompt.types.js +0 -11
- package/src/prompt/prompt.types.js.map +0 -1
- package/src/prompt/prompt.utils.js +0 -136
- package/src/prompt/prompt.utils.js.map +0 -1
- package/src/provider/provider.registry.js +0 -868
- package/src/provider/provider.registry.js.map +0 -1
- package/src/provider/provider.types.js +0 -3
- package/src/provider/provider.types.js.map +0 -1
- package/src/provider/provider.utils.js +0 -103
- package/src/provider/provider.utils.js.map +0 -1
- package/src/regsitry/index.js +0 -5
- package/src/regsitry/index.js.map +0 -1
- package/src/regsitry/registry.base.js +0 -32
- package/src/regsitry/registry.base.js.map +0 -1
- package/src/resource/flows/read-resource.flow.js +0 -270
- package/src/resource/flows/read-resource.flow.js.map +0 -1
- package/src/resource/flows/resource-templates-list.flow.js +0 -191
- package/src/resource/flows/resource-templates-list.flow.js.map +0 -1
- package/src/resource/flows/resources-list.flow.js +0 -196
- package/src/resource/flows/resources-list.flow.js.map +0 -1
- package/src/resource/flows/subscribe-resource.flow.js +0 -123
- package/src/resource/flows/subscribe-resource.flow.js.map +0 -1
- package/src/resource/flows/unsubscribe-resource.flow.js +0 -107
- package/src/resource/flows/unsubscribe-resource.flow.js.map +0 -1
- package/src/resource/index.js +0 -20
- package/src/resource/index.js.map +0 -1
- package/src/resource/resource.events.js +0 -17
- package/src/resource/resource.events.js.map +0 -1
- package/src/resource/resource.instance.js +0 -163
- package/src/resource/resource.instance.js.map +0 -1
- package/src/resource/resource.registry.js +0 -468
- package/src/resource/resource.registry.js.map +0 -1
- package/src/resource/resource.types.js +0 -11
- package/src/resource/resource.types.js.map +0 -1
- package/src/resource/resource.utils.js +0 -151
- package/src/resource/resource.utils.js.map +0 -1
- package/src/scope/flows/http.request.flow.js +0 -474
- package/src/scope/flows/http.request.flow.js.map +0 -1
- package/src/scope/index.js +0 -6
- package/src/scope/index.js.map +0 -1
- package/src/scope/scope.instance.js +0 -263
- package/src/scope/scope.instance.js.map +0 -1
- package/src/scope/scope.registry.js +0 -94
- package/src/scope/scope.registry.js.map +0 -1
- package/src/scope/scope.utils.js +0 -61
- package/src/scope/scope.utils.js.map +0 -1
- package/src/server/adapters/base.host.adapter.js +0 -8
- package/src/server/adapters/base.host.adapter.js.map +0 -1
- package/src/server/adapters/express.host.adapter.js +0 -70
- package/src/server/adapters/express.host.adapter.js.map +0 -1
- package/src/server/server.instance.js +0 -54
- package/src/server/server.instance.js.map +0 -1
- package/src/server/server.types.js +0 -3
- package/src/server/server.types.js.map +0 -1
- package/src/server/server.validation.js +0 -192
- package/src/server/server.validation.js.map +0 -1
- package/src/store/adapters/store.base.adapter.js +0 -16
- package/src/store/adapters/store.base.adapter.js.map +0 -1
- package/src/store/adapters/store.memory.adapter.js +0 -89
- package/src/store/adapters/store.memory.adapter.js.map +0 -1
- package/src/store/adapters/store.redis.adapter.js +0 -104
- package/src/store/adapters/store.redis.adapter.js.map +0 -1
- package/src/store/index.js +0 -12
- package/src/store/index.js.map +0 -1
- package/src/store/store.helpers.js +0 -67
- package/src/store/store.helpers.js.map +0 -1
- package/src/store/store.registry.js +0 -37
- package/src/store/store.registry.js.map +0 -1
- package/src/store/store.tokens.js +0 -7
- package/src/store/store.tokens.js.map +0 -1
- package/src/store/store.types.js +0 -11
- package/src/store/store.types.js.map +0 -1
- package/src/store/store.utils.js +0 -18
- package/src/store/store.utils.js.map +0 -1
- package/src/tool/flows/call-tool.flow.js +0 -616
- package/src/tool/flows/call-tool.flow.js.map +0 -1
- package/src/tool/flows/tools-list.flow.js +0 -328
- package/src/tool/flows/tools-list.flow.js.map +0 -1
- package/src/tool/tool.events.js +0 -16
- package/src/tool/tool.events.js.map +0 -1
- package/src/tool/tool.instance.js +0 -117
- package/src/tool/tool.instance.js.map +0 -1
- package/src/tool/tool.registry.js +0 -353
- package/src/tool/tool.registry.js.map +0 -1
- package/src/tool/tool.types.js +0 -10
- package/src/tool/tool.types.js.map +0 -1
- package/src/tool/tool.utils.js +0 -366
- package/src/tool/tool.utils.js.map +0 -1
- package/src/tool/ui/index.js +0 -63
- package/src/tool/ui/index.js.map +0 -1
- package/src/tool/ui/platform-adapters.js +0 -18
- package/src/tool/ui/platform-adapters.js.map +0 -1
- package/src/tool/ui/template-helpers.js +0 -112
- package/src/tool/ui/template-helpers.js.map +0 -1
- package/src/tool/ui/ui-resource-template.js +0 -64
- package/src/tool/ui/ui-resource-template.js.map +0 -1
- package/src/tool/ui/ui-resource.handler.js +0 -129
- package/src/tool/ui/ui-resource.handler.js.map +0 -1
- package/src/transport/adapters/transport.local.adapter.js +0 -148
- package/src/transport/adapters/transport.local.adapter.js.map +0 -1
- package/src/transport/adapters/transport.sse.adapter.js +0 -65
- package/src/transport/adapters/transport.sse.adapter.js.map +0 -1
- package/src/transport/adapters/transport.streamable-http.adapter.js +0 -112
- package/src/transport/adapters/transport.streamable-http.adapter.js.map +0 -1
- package/src/transport/flows/handle.sse.flow.js +0 -197
- package/src/transport/flows/handle.sse.flow.js.map +0 -1
- package/src/transport/flows/handle.stateless-http.flow.js +0 -102
- package/src/transport/flows/handle.stateless-http.flow.js.map +0 -1
- package/src/transport/flows/handle.streamable-http.flow.js +0 -315
- package/src/transport/flows/handle.streamable-http.flow.js.map +0 -1
- package/src/transport/legacy/legacy.sse.tranporter.js +0 -185
- package/src/transport/legacy/legacy.sse.tranporter.js.map +0 -1
- package/src/transport/mcp-handlers/Initialized-notification.hanlder.js +0 -14
- package/src/transport/mcp-handlers/Initialized-notification.hanlder.js.map +0 -1
- package/src/transport/mcp-handlers/call-tool-request.handler.js +0 -46
- package/src/transport/mcp-handlers/call-tool-request.handler.js.map +0 -1
- package/src/transport/mcp-handlers/complete-request.handler.js +0 -11
- package/src/transport/mcp-handlers/complete-request.handler.js.map +0 -1
- package/src/transport/mcp-handlers/get-prompt-request.handler.js +0 -11
- package/src/transport/mcp-handlers/get-prompt-request.handler.js.map +0 -1
- package/src/transport/mcp-handlers/index.js +0 -57
- package/src/transport/mcp-handlers/index.js.map +0 -1
- package/src/transport/mcp-handlers/initialize-request.handler.js +0 -109
- package/src/transport/mcp-handlers/initialize-request.handler.js.map +0 -1
- package/src/transport/mcp-handlers/list-prompts-request.handler.js +0 -11
- package/src/transport/mcp-handlers/list-prompts-request.handler.js.map +0 -1
- package/src/transport/mcp-handlers/list-resource-templates-request.handler.js +0 -12
- package/src/transport/mcp-handlers/list-resource-templates-request.handler.js.map +0 -1
- package/src/transport/mcp-handlers/list-resources-request.handler.js +0 -12
- package/src/transport/mcp-handlers/list-resources-request.handler.js.map +0 -1
- package/src/transport/mcp-handlers/list-tools-request.handler.js +0 -11
- package/src/transport/mcp-handlers/list-tools-request.handler.js.map +0 -1
- package/src/transport/mcp-handlers/logging-set-level-request.handler.js +0 -34
- package/src/transport/mcp-handlers/logging-set-level-request.handler.js.map +0 -1
- package/src/transport/mcp-handlers/mcp-handlers.types.js +0 -3
- package/src/transport/mcp-handlers/mcp-handlers.types.js.map +0 -1
- package/src/transport/mcp-handlers/read-resource-request.handler.js +0 -12
- package/src/transport/mcp-handlers/read-resource-request.handler.js.map +0 -1
- package/src/transport/mcp-handlers/roots-list-changed-notification.handler.js +0 -26
- package/src/transport/mcp-handlers/roots-list-changed-notification.handler.js.map +0 -1
- package/src/transport/mcp-handlers/subscribe-request.handler.js +0 -34
- package/src/transport/mcp-handlers/subscribe-request.handler.js.map +0 -1
- package/src/transport/mcp-handlers/unsubscribe-request.handler.js +0 -34
- package/src/transport/mcp-handlers/unsubscribe-request.handler.js.map +0 -1
- package/src/transport/transport.error.js +0 -25
- package/src/transport/transport.error.js.map +0 -1
- package/src/transport/transport.event-store.js +0 -36
- package/src/transport/transport.event-store.js.map +0 -1
- package/src/transport/transport.local.js +0 -71
- package/src/transport/transport.local.js.map +0 -1
- package/src/transport/transport.registry.js +0 -523
- package/src/transport/transport.registry.js.map +0 -1
- package/src/transport/transport.remote.js +0 -31
- package/src/transport/transport.remote.js.map +0 -1
- package/src/transport/transport.types.js +0 -3
- package/src/transport/transport.types.js.map +0 -1
- package/src/types/drinen-hooks.types.js +0 -3
- package/src/types/drinen-hooks.types.js.map +0 -1
- package/src/types/invoke.type.js +0 -34
- package/src/types/invoke.type.js.map +0 -1
- package/src/types/token.types.js +0 -3
- package/src/types/token.types.js.map +0 -1
- package/src/utils/content.utils.js +0 -194
- package/src/utils/content.utils.js.map +0 -1
- package/src/utils/index.js +0 -55
- package/src/utils/index.js.map +0 -1
- package/src/utils/lineage.utils.js +0 -82
- package/src/utils/lineage.utils.js.map +0 -1
- package/src/utils/metadata.utils.js +0 -26
- package/src/utils/metadata.utils.js.map +0 -1
- package/src/utils/naming.utils.js +0 -136
- package/src/utils/naming.utils.js.map +0 -1
- package/src/utils/server.utils.js +0 -59
- package/src/utils/server.utils.js.map +0 -1
- package/src/utils/string.utils.js +0 -10
- package/src/utils/string.utils.js.map +0 -1
- package/src/utils/token.utils.js +0 -65
- package/src/utils/token.utils.js.map +0 -1
- package/src/utils/types.utils.js +0 -3
- package/src/utils/types.utils.js.map +0 -1
- package/src/utils/uri-template.utils.js +0 -113
- package/src/utils/uri-template.utils.js.map +0 -1
- package/src/utils/uri-validation.utils.js +0 -76
- package/src/utils/uri-validation.utils.js.map +0 -1
- package/{src/adapter → adapter}/adapter.instance.d.ts +0 -0
- package/{src/adapter → adapter}/adapter.regsitry.d.ts +0 -0
- package/{src/adapter → adapter}/adapter.utils.d.ts +0 -0
- package/{src/app → app}/app.registry.d.ts +0 -0
- package/{src/app → app}/app.utils.d.ts +0 -0
- package/{src/app → app}/instances/app.local.instance.d.ts +0 -0
- package/{src/app → app}/instances/app.remote.instance.d.ts +0 -0
- package/{src/app → app}/instances/index.d.ts +0 -0
- package/{src/auth → auth}/auth.registry.d.ts +0 -0
- package/{src/auth → auth}/auth.utils.d.ts +0 -0
- package/{src/auth → auth}/authorization/authorization.class.d.ts +0 -0
- package/{src/auth → auth}/authorization/authorization.types.d.ts +0 -0
- package/{src/auth → auth}/authorization/index.d.ts +0 -0
- package/{src/auth → auth}/authorization/orchestrated.authorization.d.ts +0 -0
- package/{src/auth → auth}/authorization/public.authorization.d.ts +0 -0
- package/{src/auth → auth}/authorization/transparent.authorization.d.ts +0 -0
- package/{src/auth → auth}/consent/consent.types.d.ts +0 -0
- package/{src/auth → auth}/consent/index.d.ts +0 -0
- package/{src/auth → auth}/detection/auth-provider-detection.d.ts +0 -0
- package/{src/auth → auth}/detection/index.d.ts +0 -0
- package/{src/auth → auth}/flows/auth.verify.flow.d.ts +0 -0
- package/{src/auth → auth}/flows/oauth.authorize.flow.d.ts +0 -0
- package/{src/auth → auth}/flows/oauth.callback.flow.d.ts +0 -0
- package/{src/auth → auth}/flows/oauth.register.flow.d.ts +0 -0
- package/{src/auth → auth}/flows/oauth.token.flow.d.ts +0 -0
- package/{src/auth → auth}/flows/session.verify.flow.d.ts +0 -0
- package/{src/auth → auth}/flows/well-known.jwks.flow.d.ts +0 -0
- package/{src/auth → auth}/flows/well-known.oauth-authorization-server.flow.d.ts +0 -0
- package/{src/auth → auth}/flows/well-known.prm.flow.d.ts +0 -0
- package/{src/auth → auth}/jwks/dev-key-persistence.d.ts +0 -0
- package/{src/auth → auth}/jwks/index.d.ts +0 -0
- package/{src/auth → auth}/jwks/jwks.service.d.ts +0 -0
- package/{src/auth → auth}/jwks/jwks.types.d.ts +0 -0
- package/{src/auth → auth}/jwks/jwks.utils.d.ts +0 -0
- package/{src/auth → auth}/machine-id.d.ts +0 -0
- package/{src/auth → auth}/oauth/flows/oauth.authorize.flow.d.ts +0 -0
- package/{src/auth → auth}/oauth/flows/oauth.device-authorization.flow.d.ts +0 -0
- package/{src/auth → auth}/oauth/flows/oauth.introspect.flow.d.ts +0 -0
- package/{src/auth → auth}/oauth/flows/oauth.par.flow.d.ts +0 -0
- package/{src/auth → auth}/oauth/flows/oauth.revoke.flow.d.ts +0 -0
- package/{src/auth → auth}/oauth/flows/oauth.token.flow.d.ts +0 -0
- package/{src/auth → auth}/oauth/flows/oauth.userinfo.flow.d.ts +0 -0
- package/{src/auth → auth}/oauth/flows/oidc.logout.flow.d.ts +0 -0
- package/{src/auth → auth}/session/authorization-vault.d.ts +0 -0
- package/{src/auth → auth}/session/authorization.store.d.ts +0 -0
- package/{src/auth → auth}/session/encrypted-authorization-vault.d.ts +0 -0
- package/{src/auth → auth}/session/record/session.base.d.ts +0 -0
- package/{src/auth → auth}/session/record/session.stateful.d.ts +0 -0
- package/{src/auth → auth}/session/record/session.stateless.d.ts +0 -0
- package/{src/auth → auth}/session/record/session.transparent.d.ts +0 -0
- package/{src/auth → auth}/session/redis-session.store.d.ts +0 -0
- package/{src/auth → auth}/session/session.crypto.d.ts +0 -0
- package/{src/auth → auth}/session/session.schema.d.ts +0 -0
- package/{src/auth → auth}/session/session.service.d.ts +0 -0
- package/{src/auth → auth}/session/session.transport.d.ts +0 -0
- package/{src/auth → auth}/session/session.types.d.ts +0 -0
- package/{src/auth → auth}/session/token.refresh.d.ts +0 -0
- package/{src/auth → auth}/session/token.store.d.ts +0 -0
- package/{src/auth → auth}/session/token.vault.d.ts +0 -0
- package/{src/auth → auth}/session/transport-session.manager.d.ts +0 -0
- package/{src/auth → auth}/session/transport-session.types.d.ts +0 -0
- package/{src/auth → auth}/session/utils/auth-token.utils.d.ts +0 -0
- package/{src/auth → auth}/session/utils/session-id.utils.d.ts +0 -0
- package/{src/auth → auth}/session/utils/tiny-ttl-cache.d.ts +0 -0
- package/{src/auth → auth}/session/vault-encryption.d.ts +0 -0
- package/{src/auth → auth}/ui/base-layout.d.ts +0 -0
- package/{src/auth → auth}/ui/index.d.ts +0 -0
- package/{src/auth → auth}/ui/templates.d.ts +0 -0
- package/{src/auth → auth}/utils/audience.validator.d.ts +0 -0
- package/{src/auth → auth}/utils/index.d.ts +0 -0
- package/{src/auth → auth}/utils/www-authenticate.utils.d.ts +0 -0
- package/{src/common → common}/common.schema.d.ts +0 -0
- package/{src/common → common}/constants.d.ts +0 -0
- package/{src/common → common}/decorators/adapter.decorator.d.ts +0 -0
- package/{src/common → common}/decorators/app.decorator.d.ts +0 -0
- package/{src/common → common}/decorators/auth-provider.decorator.d.ts +0 -0
- package/{src/common → common}/decorators/decorator-utils.d.ts +0 -0
- package/{src/common → common}/decorators/flow.decorator.d.ts +0 -0
- package/{src/common → common}/decorators/front-mcp.decorator.d.ts +0 -0
- package/{src/common → common}/decorators/hook.decorator.d.ts +0 -0
- package/{src/common → common}/decorators/index.d.ts +0 -0
- package/{src/common → common}/decorators/logger.decorator.d.ts +0 -0
- package/{src/common → common}/decorators/plugin.decorator.d.ts +0 -0
- package/{src/common → common}/decorators/prompt.decorator.d.ts +0 -0
- package/{src/common → common}/decorators/provider.decorator.d.ts +0 -0
- package/{src/common → common}/decorators/resource.decorator.d.ts +0 -0
- package/{src/common → common}/decorators/tool.decorator.d.ts +0 -0
- package/{src/common → common}/dynamic/dynamic.adapter.d.ts +0 -0
- package/{src/common → common}/dynamic/dynamic.plugin.d.ts +0 -0
- package/{src/common → common}/dynamic/dynamic.utils.d.ts +0 -0
- package/{src/common → common}/dynamic/index.d.ts +0 -0
- package/{src/common → common}/entries/adapter.entry.d.ts +0 -0
- package/{src/common → common}/entries/app.entry.d.ts +0 -0
- package/{src/common → common}/entries/auth-provider.entry.d.ts +0 -0
- package/{src/common → common}/entries/base.entry.d.ts +0 -0
- package/{src/common → common}/entries/flow.entry.d.ts +0 -0
- package/{src/common → common}/entries/hook.entry.d.ts +0 -0
- package/{src/common → common}/entries/index.d.ts +0 -0
- package/{src/common → common}/entries/logger.entry.d.ts +0 -0
- package/{src/common → common}/entries/plugin.entry.d.ts +0 -0
- package/{src/common → common}/entries/prompt.entry.d.ts +0 -0
- package/{src/common → common}/entries/provider.entry.d.ts +0 -0
- package/{src/common → common}/entries/resource.entry.d.ts +0 -0
- package/{src/common → common}/entries/scope.entry.d.ts +0 -0
- package/{src/common → common}/entries/tool.entry.d.ts +0 -0
- package/{src/common → common}/flow/flow.utils.d.ts +0 -0
- package/{src/common → common}/index.d.ts +0 -0
- package/{src/common → common}/interfaces/adapter.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/app.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/auth-hook.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/auth-provider.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/base.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/execution-context.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/flow.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/front-mcp.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/hook.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/index.d.ts +0 -0
- package/{src/common → common}/interfaces/internal/flow.utils.d.ts +0 -0
- package/{src/common → common}/interfaces/internal/index.d.ts +0 -0
- package/{src/common → common}/interfaces/internal/registry.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/logger.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/plugin.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/prompt.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/provider.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/resource.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/scope.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/server.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/session-hook.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/tool-hook.interface.d.ts +0 -0
- package/{src/common → common}/interfaces/tool.interface.d.ts +0 -0
- package/{src/common → common}/metadata/adapter.metadata.d.ts +0 -0
- package/{src/common → common}/metadata/app.metadata.d.ts +42 -42
- /package/{src/common → common}/metadata/auth-provider.metadata.d.ts +0 -0
- /package/{src/common → common}/metadata/flow.metadata.d.ts +0 -0
- /package/{src/common → common}/metadata/hook.metadata.d.ts +0 -0
- /package/{src/common → common}/metadata/index.d.ts +0 -0
- /package/{src/common → common}/metadata/logger.metadata.d.ts +0 -0
- /package/{src/common → common}/metadata/plugin.metadata.d.ts +0 -0
- /package/{src/common → common}/metadata/provider.metadata.d.ts +0 -0
- /package/{src/common → common}/migrate/auth-transport.migrate.d.ts +0 -0
- /package/{src/common → common}/migrate/index.d.ts +0 -0
- /package/{src/common → common}/providers/base-config.provider.d.ts +0 -0
- /package/{src/common → common}/records/adapter.record.d.ts +0 -0
- /package/{src/common → common}/records/app.record.d.ts +0 -0
- /package/{src/common → common}/records/auth-provider.record.d.ts +0 -0
- /package/{src/common → common}/records/flow.record.d.ts +0 -0
- /package/{src/common → common}/records/hook.record.d.ts +0 -0
- /package/{src/common → common}/records/index.d.ts +0 -0
- /package/{src/common → common}/records/logger.record.d.ts +0 -0
- /package/{src/common → common}/records/plugin.record.d.ts +0 -0
- /package/{src/common → common}/records/prompt.record.d.ts +0 -0
- /package/{src/common → common}/records/provider.record.d.ts +0 -0
- /package/{src/common → common}/records/resource.record.d.ts +0 -0
- /package/{src/common → common}/records/scope.record.d.ts +0 -0
- /package/{src/common → common}/records/tool.record.d.ts +0 -0
- /package/{src/common → common}/schemas/annotated-class.schema.d.ts +0 -0
- /package/{src/common → common}/schemas/http-input.schema.d.ts +0 -0
- /package/{src/common → common}/schemas/index.d.ts +0 -0
- /package/{src/common → common}/schemas/session-header.schema.d.ts +0 -0
- /package/{src/common → common}/tokens/adapter.tokens.d.ts +0 -0
- /package/{src/common → common}/tokens/app.tokens.d.ts +0 -0
- /package/{src/common → common}/tokens/auth-provider.tokens.d.ts +0 -0
- /package/{src/common → common}/tokens/base.tokens.d.ts +0 -0
- /package/{src/common → common}/tokens/flow-hook.tokens.d.ts +0 -0
- /package/{src/common → common}/tokens/flow.tokens.d.ts +0 -0
- /package/{src/common → common}/tokens/front-mcp.tokens.d.ts +0 -0
- /package/{src/common → common}/tokens/index.d.ts +0 -0
- /package/{src/common → common}/tokens/logger.tokens.d.ts +0 -0
- /package/{src/common → common}/tokens/plugin.tokens.d.ts +0 -0
- /package/{src/common → common}/tokens/prompt.tokens.d.ts +0 -0
- /package/{src/common → common}/tokens/provider.tokens.d.ts +0 -0
- /package/{src/common → common}/tokens/resource.tokens.d.ts +0 -0
- /package/{src/common → common}/tokens/server.tokens.d.ts +0 -0
- /package/{src/common → common}/tokens/tool.tokens.d.ts +0 -0
- /package/{src/common → common}/types/auth/index.d.ts +0 -0
- /package/{src/common → common}/types/auth/jwt.types.d.ts +0 -0
- /package/{src/common → common}/types/auth/session.types.d.ts +0 -0
- /package/{src/common → common}/types/common.types.d.ts +0 -0
- /package/{src/common → common}/types/index.d.ts +0 -0
- /package/{src/logger/logger.tokens.d.ts → common/types/options/auth/auth.typecheck.d.ts} +0 -0
- /package/{src/common → common}/types/options/http.options.d.ts +0 -0
- /package/{src/common → common}/types/options/logging.options.d.ts +0 -0
- /package/{src/common → common}/types/options/session.options.d.ts +0 -0
- /package/{src/common → common}/utils/path.utils.d.ts +0 -0
- /package/{src/context → context}/frontmcp-context-storage.d.ts +0 -0
- /package/{src/context → context}/frontmcp-context.d.ts +0 -0
- /package/{src/context → context}/frontmcp-context.provider.d.ts +0 -0
- /package/{src/context → context}/index.d.ts +0 -0
- /package/{src/context → context}/request-context-storage.d.ts +0 -0
- /package/{src/context → context}/request-context.d.ts +0 -0
- /package/{src/context → context}/request-context.provider.d.ts +0 -0
- /package/{src/context → context}/session-key.provider.d.ts +0 -0
- /package/{src/context → context}/trace-context.d.ts +0 -0
- /package/{src/errors → errors}/authorization-required.error.d.ts +0 -0
- /package/{src/errors → errors}/error-handler.d.ts +0 -0
- /package/{src/exceptions → exceptions}/mcp-exceptions/session-missing.exception.d.ts +0 -0
- /package/{src/exceptions → exceptions}/mcp-exceptions/unsupported-client-version.exception.d.ts +0 -0
- /package/{src/flows → flows}/flow.instance.d.ts +0 -0
- /package/{src/flows → flows}/flow.registry.d.ts +0 -0
- /package/{src/flows → flows}/flow.stages.d.ts +0 -0
- /package/{src/flows → flows}/flow.utils.d.ts +0 -0
- /package/{src/front-mcp → front-mcp}/front-mcp.d.ts +0 -0
- /package/{src/front-mcp → front-mcp}/front-mcp.tokens.d.ts +0 -0
- /package/{src/front-mcp → front-mcp}/serverless-handler.d.ts +0 -0
- /package/{src/hooks → hooks}/hook.instance.d.ts +0 -0
- /package/{src/hooks → hooks}/hook.registry.d.ts +0 -0
- /package/{src/hooks → hooks}/hooks.utils.d.ts +0 -0
- /package/{src/logger → logger}/instances/instance.console-logger.d.ts +0 -0
- /package/{src/logger → logger}/instances/instance.logger.d.ts +0 -0
- /package/{src/logger → logger}/logger.registry.d.ts +0 -0
- /package/{src/logger → logger}/logger.types.d.ts +0 -0
- /package/{src/logger → logger}/logger.utils.d.ts +0 -0
- /package/{src/mcp-apps → mcp-apps}/csp.d.ts +0 -0
- /package/{src/mcp-apps → mcp-apps}/index.d.ts +0 -0
- /package/{src/mcp-apps → mcp-apps}/schemas.d.ts +0 -0
- /package/{src/mcp-apps → mcp-apps}/template.d.ts +0 -0
- /package/{src/mcp-apps → mcp-apps}/types.d.ts +0 -0
- /package/{src/notification → notification}/index.d.ts +0 -0
- /package/{src/notification → notification}/notification.service.d.ts +0 -0
- /package/{src/plugin → plugin}/plugin.registry.d.ts +0 -0
- /package/{src/plugin → plugin}/plugin.utils.d.ts +0 -0
- /package/{src/prompt → prompt}/index.d.ts +0 -0
- /package/{src/prompt → prompt}/prompt.events.d.ts +0 -0
- /package/{src/prompt → prompt}/prompt.instance.d.ts +0 -0
- /package/{src/prompt → prompt}/prompt.registry.d.ts +0 -0
- /package/{src/prompt → prompt}/prompt.types.d.ts +0 -0
- /package/{src/prompt → prompt}/prompt.utils.d.ts +0 -0
- /package/{src/provider → provider}/provider.registry.d.ts +0 -0
- /package/{src/provider → provider}/provider.types.d.ts +0 -0
- /package/{src/provider → provider}/provider.utils.d.ts +0 -0
- /package/{src/regsitry → regsitry}/index.d.ts +0 -0
- /package/{src/regsitry → regsitry}/registry.base.d.ts +0 -0
- /package/{src/resource → resource}/index.d.ts +0 -0
- /package/{src/resource → resource}/resource.events.d.ts +0 -0
- /package/{src/resource → resource}/resource.instance.d.ts +0 -0
- /package/{src/resource → resource}/resource.registry.d.ts +0 -0
- /package/{src/resource → resource}/resource.types.d.ts +0 -0
- /package/{src/resource → resource}/resource.utils.d.ts +0 -0
- /package/{src/scope → scope}/flows/http.request.flow.d.ts +0 -0
- /package/{src/scope → scope}/index.d.ts +0 -0
- /package/{src/scope → scope}/scope.instance.d.ts +0 -0
- /package/{src/scope → scope}/scope.registry.d.ts +0 -0
- /package/{src/scope → scope}/scope.utils.d.ts +0 -0
- /package/{src/server → server}/adapters/base.host.adapter.d.ts +0 -0
- /package/{src/server → server}/adapters/express.host.adapter.d.ts +0 -0
- /package/{src/server → server}/server.instance.d.ts +0 -0
- /package/{src/server → server}/server.types.d.ts +0 -0
- /package/{src/server → server}/server.validation.d.ts +0 -0
- /package/{src/store → store}/adapters/store.base.adapter.d.ts +0 -0
- /package/{src/store → store}/adapters/store.memory.adapter.d.ts +0 -0
- /package/{src/store → store}/adapters/store.redis.adapter.d.ts +0 -0
- /package/{src/store → store}/store.helpers.d.ts +0 -0
- /package/{src/store → store}/store.registry.d.ts +0 -0
- /package/{src/store → store}/store.tokens.d.ts +0 -0
- /package/{src/store → store}/store.types.d.ts +0 -0
- /package/{src/store → store}/store.utils.d.ts +0 -0
- /package/{src/tool → tool}/tool.events.d.ts +0 -0
- /package/{src/tool → tool}/tool.instance.d.ts +0 -0
- /package/{src/tool → tool}/tool.registry.d.ts +0 -0
- /package/{src/tool → tool}/tool.types.d.ts +0 -0
- /package/{src/tool → tool}/tool.utils.d.ts +0 -0
- /package/{src/tool → tool}/ui/ui-resource-template.d.ts +0 -0
- /package/{src/transport → transport}/adapters/transport.local.adapter.d.ts +0 -0
- /package/{src/transport → transport}/adapters/transport.sse.adapter.d.ts +0 -0
- /package/{src/transport → transport}/adapters/transport.streamable-http.adapter.d.ts +0 -0
- /package/{src/transport → transport}/flows/handle.sse.flow.d.ts +0 -0
- /package/{src/transport → transport}/flows/handle.stateless-http.flow.d.ts +0 -0
- /package/{src/transport → transport}/flows/handle.streamable-http.flow.d.ts +0 -0
- /package/{src/transport → transport}/legacy/legacy.sse.tranporter.d.ts +0 -0
- /package/{src/transport → transport}/mcp-handlers/Initialized-notification.hanlder.d.ts +0 -0
- /package/{src/transport → transport}/mcp-handlers/call-tool-request.handler.d.ts +0 -0
- /package/{src/transport → transport}/mcp-handlers/initialize-request.handler.d.ts +0 -0
- /package/{src/transport → transport}/mcp-handlers/mcp-handlers.types.d.ts +0 -0
- /package/{src/transport → transport}/mcp-handlers/roots-list-changed-notification.handler.d.ts +0 -0
- /package/{src/transport → transport}/transport.error.d.ts +0 -0
- /package/{src/transport → transport}/transport.event-store.d.ts +0 -0
- /package/{src/transport → transport}/transport.local.d.ts +0 -0
- /package/{src/transport → transport}/transport.remote.d.ts +0 -0
- /package/{src/transport → transport}/transport.types.d.ts +0 -0
- /package/{src/types → types}/drinen-hooks.types.d.ts +0 -0
- /package/{src/types → types}/invoke.type.d.ts +0 -0
- /package/{src/types → types}/token.types.d.ts +0 -0
- /package/{src/utils → utils}/content.utils.d.ts +0 -0
- /package/{src/utils → utils}/index.d.ts +0 -0
- /package/{src/utils → utils}/lineage.utils.d.ts +0 -0
- /package/{src/utils → utils}/metadata.utils.d.ts +0 -0
- /package/{src/utils → utils}/naming.utils.d.ts +0 -0
- /package/{src/utils → utils}/server.utils.d.ts +0 -0
- /package/{src/utils → utils}/string.utils.d.ts +0 -0
- /package/{src/utils → utils}/token.utils.d.ts +0 -0
- /package/{src/utils → utils}/types.utils.d.ts +0 -0
- /package/{src/utils → utils}/uri-template.utils.d.ts +0 -0
- /package/{src/utils → utils}/uri-validation.utils.d.ts +0 -0
|
@@ -1,731 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// file: libs/sdk/src/notification/notification.service.ts
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.NotificationService = exports.MCP_LOGGING_LEVEL_PRIORITY = exports.MCP_APPS_EXTENSION_KEY = void 0;
|
|
5
|
-
exports.hasMcpAppsExtension = hasMcpAppsExtension;
|
|
6
|
-
exports.detectPlatformFromCapabilities = detectPlatformFromCapabilities;
|
|
7
|
-
exports.detectPlatformFromUserAgent = detectPlatformFromUserAgent;
|
|
8
|
-
exports.detectAIPlatform = detectAIPlatform;
|
|
9
|
-
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
10
|
-
/**
|
|
11
|
-
* MCP Apps extension key in capabilities.experimental
|
|
12
|
-
*/
|
|
13
|
-
exports.MCP_APPS_EXTENSION_KEY = 'io.modelcontextprotocol/ui';
|
|
14
|
-
/**
|
|
15
|
-
* Check if client capabilities include MCP Apps extension.
|
|
16
|
-
* @param capabilities - Client capabilities from initialize request
|
|
17
|
-
* @returns true if the client supports MCP Apps
|
|
18
|
-
*/
|
|
19
|
-
function hasMcpAppsExtension(capabilities) {
|
|
20
|
-
if (!capabilities?.experimental) {
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
const uiExtension = capabilities.experimental[exports.MCP_APPS_EXTENSION_KEY];
|
|
24
|
-
return uiExtension !== undefined && uiExtension !== null;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Detect platform from client capabilities.
|
|
28
|
-
* Checks for known extension capabilities before falling back to client info.
|
|
29
|
-
* @param capabilities - Client capabilities from initialize request
|
|
30
|
-
* @returns Platform type if detected from capabilities, undefined otherwise
|
|
31
|
-
*/
|
|
32
|
-
function detectPlatformFromCapabilities(capabilities) {
|
|
33
|
-
if (hasMcpAppsExtension(capabilities)) {
|
|
34
|
-
return 'ext-apps';
|
|
35
|
-
}
|
|
36
|
-
return undefined;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Match client name against custom mapping patterns.
|
|
40
|
-
* @param clientName - The client name to match
|
|
41
|
-
* @param mappings - Array of custom mapping entries
|
|
42
|
-
* @returns The matched platform type, or undefined if no match
|
|
43
|
-
*/
|
|
44
|
-
function matchCustomMappings(clientName, mappings) {
|
|
45
|
-
if (!mappings || mappings.length === 0) {
|
|
46
|
-
return undefined;
|
|
47
|
-
}
|
|
48
|
-
const lowerClientName = clientName.toLowerCase();
|
|
49
|
-
for (const mapping of mappings) {
|
|
50
|
-
if (typeof mapping.pattern === 'string') {
|
|
51
|
-
// Exact match (case-insensitive) - use RegExp for substring matching
|
|
52
|
-
if (lowerClientName === mapping.pattern.toLowerCase()) {
|
|
53
|
-
return mapping.platform;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
// RegExp match
|
|
58
|
-
if (mapping.pattern.test(clientName)) {
|
|
59
|
-
return mapping.platform;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
return undefined;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Default keyword-based platform detection.
|
|
67
|
-
* Works with client names, user-agent strings, or any identifier.
|
|
68
|
-
* @param identifier - The identifier to detect (clientInfo.name, user-agent, etc.)
|
|
69
|
-
* @returns The detected platform type
|
|
70
|
-
*/
|
|
71
|
-
function defaultPlatformDetection(identifier) {
|
|
72
|
-
const lowerIdentifier = identifier.toLowerCase();
|
|
73
|
-
// OpenAI/ChatGPT clients (includes user-agent like 'openai-mcp/1.0.0')
|
|
74
|
-
if (lowerIdentifier.includes('chatgpt') || lowerIdentifier.includes('openai') || lowerIdentifier.includes('gpt')) {
|
|
75
|
-
return 'openai';
|
|
76
|
-
}
|
|
77
|
-
// Claude clients
|
|
78
|
-
if (lowerIdentifier.includes('claude') || lowerIdentifier.includes('anthropic')) {
|
|
79
|
-
return 'claude';
|
|
80
|
-
}
|
|
81
|
-
// Google Gemini clients (use specific patterns to prevent false positives like "google-drive-connector")
|
|
82
|
-
if (lowerIdentifier.includes('gemini') ||
|
|
83
|
-
lowerIdentifier.includes('bard') ||
|
|
84
|
-
lowerIdentifier.includes('google-ai') ||
|
|
85
|
-
lowerIdentifier.includes('google ai')) {
|
|
86
|
-
return 'gemini';
|
|
87
|
-
}
|
|
88
|
-
// Cursor IDE
|
|
89
|
-
if (lowerIdentifier.includes('cursor')) {
|
|
90
|
-
return 'cursor';
|
|
91
|
-
}
|
|
92
|
-
// Continue.dev
|
|
93
|
-
if (lowerIdentifier.includes('continue')) {
|
|
94
|
-
return 'continue';
|
|
95
|
-
}
|
|
96
|
-
// Sourcegraph Cody
|
|
97
|
-
if (lowerIdentifier.includes('cody') || lowerIdentifier.includes('sourcegraph')) {
|
|
98
|
-
return 'cody';
|
|
99
|
-
}
|
|
100
|
-
// Generic MCP client (fallback for known MCP implementations)
|
|
101
|
-
if (lowerIdentifier.includes('mcp')) {
|
|
102
|
-
return 'generic-mcp';
|
|
103
|
-
}
|
|
104
|
-
return 'unknown';
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Detect platform from user-agent header.
|
|
108
|
-
* Called during session creation before MCP initialize.
|
|
109
|
-
*
|
|
110
|
-
* @param userAgent - The User-Agent header value
|
|
111
|
-
* @param config - Optional platform detection configuration
|
|
112
|
-
* @returns The detected platform type
|
|
113
|
-
*/
|
|
114
|
-
function detectPlatformFromUserAgent(userAgent, config) {
|
|
115
|
-
if (!userAgent) {
|
|
116
|
-
return 'unknown';
|
|
117
|
-
}
|
|
118
|
-
// Check custom mappings first
|
|
119
|
-
const customMatch = matchCustomMappings(userAgent, config?.mappings);
|
|
120
|
-
if (customMatch) {
|
|
121
|
-
return customMatch;
|
|
122
|
-
}
|
|
123
|
-
// If customOnly, don't use default detection
|
|
124
|
-
if (config?.customOnly) {
|
|
125
|
-
return 'unknown';
|
|
126
|
-
}
|
|
127
|
-
// Use default detection on user-agent
|
|
128
|
-
return defaultPlatformDetection(userAgent);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Detect the AI platform type from client info.
|
|
132
|
-
* Supports custom mappings that are checked before default detection.
|
|
133
|
-
*
|
|
134
|
-
* @param clientInfo - Client info from MCP initialize request
|
|
135
|
-
* @param config - Optional platform detection configuration with custom mappings
|
|
136
|
-
* @returns The detected platform type
|
|
137
|
-
*/
|
|
138
|
-
function detectAIPlatform(clientInfo, config) {
|
|
139
|
-
if (!clientInfo?.name) {
|
|
140
|
-
return 'unknown';
|
|
141
|
-
}
|
|
142
|
-
// First, check custom mappings if provided
|
|
143
|
-
const customMatch = matchCustomMappings(clientInfo.name, config?.mappings);
|
|
144
|
-
if (customMatch) {
|
|
145
|
-
return customMatch;
|
|
146
|
-
}
|
|
147
|
-
// If customOnly is true, don't fall back to default detection
|
|
148
|
-
if (config?.customOnly) {
|
|
149
|
-
return 'unknown';
|
|
150
|
-
}
|
|
151
|
-
// Fall back to default keyword-based detection
|
|
152
|
-
return defaultPlatformDetection(clientInfo.name);
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* MCP logging level priority (lower number = more verbose).
|
|
156
|
-
* Uses LoggingLevel from MCP SDK for type safety.
|
|
157
|
-
*/
|
|
158
|
-
exports.MCP_LOGGING_LEVEL_PRIORITY = {
|
|
159
|
-
debug: 0,
|
|
160
|
-
info: 1,
|
|
161
|
-
notice: 2,
|
|
162
|
-
warning: 3,
|
|
163
|
-
error: 4,
|
|
164
|
-
critical: 5,
|
|
165
|
-
alert: 6,
|
|
166
|
-
emergency: 7,
|
|
167
|
-
};
|
|
168
|
-
/**
|
|
169
|
-
* NotificationService manages server→client notifications per MCP 2025-11-25 spec.
|
|
170
|
-
*
|
|
171
|
-
* It tracks all active MCP server instances and broadcasts notifications when
|
|
172
|
-
* registries (resources, tools, prompts) change.
|
|
173
|
-
*
|
|
174
|
-
* It also manages resource subscriptions per session, allowing clients to
|
|
175
|
-
* subscribe to specific resource URIs and receive notifications when they change.
|
|
176
|
-
*
|
|
177
|
-
* @example
|
|
178
|
-
* ```typescript
|
|
179
|
-
* // In LocalTransportAdapter after server.connect()
|
|
180
|
-
* scope.notifications.registerServer(sessionId, this.server);
|
|
181
|
-
*
|
|
182
|
-
* // On session close
|
|
183
|
-
* scope.notifications.unregisterServer(sessionId);
|
|
184
|
-
*
|
|
185
|
-
* // Resource subscriptions
|
|
186
|
-
* scope.notifications.subscribeResource(sessionId, 'file://path/to/file');
|
|
187
|
-
* scope.notifications.unsubscribeResource(sessionId, 'file://path/to/file');
|
|
188
|
-
* ```
|
|
189
|
-
*/
|
|
190
|
-
class NotificationService {
|
|
191
|
-
scope;
|
|
192
|
-
logger;
|
|
193
|
-
servers = new Map();
|
|
194
|
-
unsubscribers = [];
|
|
195
|
-
/** Maps session ID to set of subscribed resource URIs */
|
|
196
|
-
subscriptions = new Map();
|
|
197
|
-
/** Maps session ID to minimum log level for that session */
|
|
198
|
-
logLevels = new Map();
|
|
199
|
-
/**
|
|
200
|
-
* Set of terminated session IDs (for session invalidation on DELETE).
|
|
201
|
-
* Uses LRU-style eviction to prevent unbounded memory growth.
|
|
202
|
-
*/
|
|
203
|
-
terminatedSessions = new Set();
|
|
204
|
-
/** Maximum number of terminated sessions to track before eviction */
|
|
205
|
-
static MAX_TERMINATED_SESSIONS = 10000;
|
|
206
|
-
constructor(scope) {
|
|
207
|
-
this.scope = scope;
|
|
208
|
-
this.logger = scope.logger.child('NotificationService');
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Initialize the notification service and subscribe to registry changes.
|
|
212
|
-
* Called after all registries are ready.
|
|
213
|
-
*/
|
|
214
|
-
async initialize() {
|
|
215
|
-
this.logger.verbose('Initializing notification service');
|
|
216
|
-
// Subscribe to resource changes
|
|
217
|
-
const unsubResources = this.scope.resources.subscribe({ immediate: false }, (event) => {
|
|
218
|
-
if (event.changeScope === 'global') {
|
|
219
|
-
this.broadcastNotification('notifications/resources/list_changed');
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
this.unsubscribers.push(unsubResources);
|
|
223
|
-
// Subscribe to tool changes
|
|
224
|
-
const unsubTools = this.scope.tools.subscribe({ immediate: false }, (event) => {
|
|
225
|
-
if (event.changeScope === 'global') {
|
|
226
|
-
this.broadcastNotification('notifications/tools/list_changed');
|
|
227
|
-
}
|
|
228
|
-
});
|
|
229
|
-
this.unsubscribers.push(unsubTools);
|
|
230
|
-
// Subscribe to prompt changes
|
|
231
|
-
const unsubPrompts = this.scope.prompts.subscribe({ immediate: false }, (event) => {
|
|
232
|
-
if (event.changeScope === 'global') {
|
|
233
|
-
this.broadcastNotification('notifications/prompts/list_changed');
|
|
234
|
-
}
|
|
235
|
-
});
|
|
236
|
-
this.unsubscribers.push(unsubPrompts);
|
|
237
|
-
this.logger.info('Notification service initialized with registry subscriptions');
|
|
238
|
-
}
|
|
239
|
-
/**
|
|
240
|
-
* Register an MCP server instance for receiving notifications.
|
|
241
|
-
* Call this when a transport connection is established.
|
|
242
|
-
*
|
|
243
|
-
* @param sessionId - Unique session identifier
|
|
244
|
-
* @param server - The MCP server instance
|
|
245
|
-
*/
|
|
246
|
-
registerServer(sessionId, server) {
|
|
247
|
-
if (this.servers.has(sessionId)) {
|
|
248
|
-
this.logger.warn(`Server already registered for session: ${sessionId.slice(0, 20)}...`);
|
|
249
|
-
return;
|
|
250
|
-
}
|
|
251
|
-
this.servers.set(sessionId, {
|
|
252
|
-
sessionId,
|
|
253
|
-
server,
|
|
254
|
-
registeredAt: Date.now(),
|
|
255
|
-
});
|
|
256
|
-
this.logger.verbose(`Registered server for session: ${sessionId.slice(0, 20)}... (total: ${this.servers.size})`);
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Unregister an MCP server instance.
|
|
260
|
-
* Call this when a transport connection is closed.
|
|
261
|
-
* Also cleans up any resource subscriptions for this session.
|
|
262
|
-
*
|
|
263
|
-
* @param sessionId - The session identifier to unregister
|
|
264
|
-
* @returns true if the server was registered and is now unregistered, false if not found
|
|
265
|
-
*/
|
|
266
|
-
unregisterServer(sessionId) {
|
|
267
|
-
const deleted = this.servers.delete(sessionId);
|
|
268
|
-
// Clean up resource subscriptions for this session
|
|
269
|
-
const subCount = this.subscriptions.get(sessionId)?.size ?? 0;
|
|
270
|
-
this.subscriptions.delete(sessionId);
|
|
271
|
-
// Clean up log level setting for this session
|
|
272
|
-
const hadLogLevel = this.logLevels.delete(sessionId);
|
|
273
|
-
if (deleted) {
|
|
274
|
-
this.logger.verbose(`Unregistered server for session: ${sessionId.slice(0, 20)}... (remaining: ${this.servers.size}, cleaned ${subCount} subscription(s)${hadLogLevel ? ', removed log level' : ''})`);
|
|
275
|
-
}
|
|
276
|
-
return deleted;
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Terminate a session. This adds the session ID to the terminated set,
|
|
280
|
-
* preventing further use of this session ID. This is called during DELETE
|
|
281
|
-
* session handling per MCP 2025-11-25 spec.
|
|
282
|
-
*
|
|
283
|
-
* Note: For stateless sessions (encrypted JWTs), the session ID cannot be
|
|
284
|
-
* truly "invalidated" cryptographically, but we track it in memory to reject
|
|
285
|
-
* future requests with this session ID on this server instance.
|
|
286
|
-
*
|
|
287
|
-
* @param sessionId - The session ID to terminate
|
|
288
|
-
* @returns true if the session was registered and is now terminated
|
|
289
|
-
*/
|
|
290
|
-
terminateSession(sessionId) {
|
|
291
|
-
// First unregister the server (cleans up subscriptions, log levels, etc.)
|
|
292
|
-
const wasRegistered = this.unregisterServer(sessionId);
|
|
293
|
-
// Cleanup SESSION-scoped providers to prevent memory leak
|
|
294
|
-
// This is critical: without cleanup, terminated session providers remain cached forever
|
|
295
|
-
this.scope.providers.cleanupSession(sessionId);
|
|
296
|
-
this.logger.verbose(`Cleaned up provider cache for terminated session: ${sessionId.slice(0, 20)}...`);
|
|
297
|
-
// Add to terminated sessions set (even if not registered, to handle edge cases)
|
|
298
|
-
// Implement LRU-style eviction to prevent unbounded memory growth
|
|
299
|
-
if (this.terminatedSessions.size >= NotificationService.MAX_TERMINATED_SESSIONS) {
|
|
300
|
-
// Remove the oldest entry (first item in Set maintains insertion order)
|
|
301
|
-
const oldest = this.terminatedSessions.values().next().value;
|
|
302
|
-
if (oldest) {
|
|
303
|
-
this.terminatedSessions.delete(oldest);
|
|
304
|
-
this.logger.verbose(`Evicted oldest terminated session to make room: ${oldest.slice(0, 20)}...`);
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
this.terminatedSessions.add(sessionId);
|
|
308
|
-
this.logger.verbose(`Terminated session: ${sessionId.slice(0, 20)}... (total terminated: ${this.terminatedSessions.size})`);
|
|
309
|
-
return wasRegistered;
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* Check if a session has been terminated.
|
|
313
|
-
* Used during session verification to reject requests with terminated session IDs.
|
|
314
|
-
*
|
|
315
|
-
* @param sessionId - The session ID to check
|
|
316
|
-
* @returns true if the session has been terminated
|
|
317
|
-
*/
|
|
318
|
-
isSessionTerminated(sessionId) {
|
|
319
|
-
return this.terminatedSessions.has(sessionId);
|
|
320
|
-
}
|
|
321
|
-
/**
|
|
322
|
-
* Broadcast a notification to all registered servers.
|
|
323
|
-
*
|
|
324
|
-
* @param method - The MCP notification method
|
|
325
|
-
* @param params - Optional notification parameters
|
|
326
|
-
*/
|
|
327
|
-
broadcastNotification(method, params) {
|
|
328
|
-
if (this.servers.size === 0) {
|
|
329
|
-
this.logger.verbose(`No servers registered for notification: ${method}`);
|
|
330
|
-
return;
|
|
331
|
-
}
|
|
332
|
-
this.logger.verbose(`Broadcasting ${method} to ${this.servers.size} server(s)`);
|
|
333
|
-
for (const [sessionId, { server }] of this.servers) {
|
|
334
|
-
this.sendNotificationToServer(server, sessionId, method, params);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
/**
|
|
338
|
-
* Send a notification to a specific session.
|
|
339
|
-
*
|
|
340
|
-
* @param sessionId - The target session
|
|
341
|
-
* @param method - The MCP notification method
|
|
342
|
-
* @param params - Optional notification parameters
|
|
343
|
-
*/
|
|
344
|
-
sendNotificationToSession(sessionId, method, params) {
|
|
345
|
-
const registered = this.servers.get(sessionId);
|
|
346
|
-
if (!registered) {
|
|
347
|
-
this.logger.warn(`Cannot send notification to unregistered session: ${sessionId.slice(0, 20)}...`);
|
|
348
|
-
return;
|
|
349
|
-
}
|
|
350
|
-
this.sendNotificationToServer(registered.server, sessionId, method, params);
|
|
351
|
-
}
|
|
352
|
-
/**
|
|
353
|
-
* Subscribe a session to receive notifications when a specific resource changes.
|
|
354
|
-
*
|
|
355
|
-
* @param sessionId - The session to subscribe
|
|
356
|
-
* @param uri - The resource URI to subscribe to
|
|
357
|
-
* @returns true if this is a new subscription, false if already subscribed
|
|
358
|
-
*/
|
|
359
|
-
subscribeResource(sessionId, uri) {
|
|
360
|
-
if (!this.servers.has(sessionId)) {
|
|
361
|
-
this.logger.warn(`Cannot subscribe unregistered session ${sessionId.slice(0, 20)}... to resource ${uri}`);
|
|
362
|
-
return false;
|
|
363
|
-
}
|
|
364
|
-
let sessionSubs = this.subscriptions.get(sessionId);
|
|
365
|
-
if (!sessionSubs) {
|
|
366
|
-
sessionSubs = new Set();
|
|
367
|
-
this.subscriptions.set(sessionId, sessionSubs);
|
|
368
|
-
}
|
|
369
|
-
const isNew = !sessionSubs.has(uri);
|
|
370
|
-
sessionSubs.add(uri);
|
|
371
|
-
if (isNew) {
|
|
372
|
-
this.logger.verbose(`Session ${sessionId.slice(0, 20)}... subscribed to resource ${uri}`);
|
|
373
|
-
}
|
|
374
|
-
return isNew;
|
|
375
|
-
}
|
|
376
|
-
/**
|
|
377
|
-
* Unsubscribe a session from a specific resource.
|
|
378
|
-
*
|
|
379
|
-
* @param sessionId - The session to unsubscribe
|
|
380
|
-
* @param uri - The resource URI to unsubscribe from
|
|
381
|
-
* @returns true if the subscription was removed, false if not subscribed
|
|
382
|
-
*/
|
|
383
|
-
unsubscribeResource(sessionId, uri) {
|
|
384
|
-
const sessionSubs = this.subscriptions.get(sessionId);
|
|
385
|
-
if (!sessionSubs) {
|
|
386
|
-
return false;
|
|
387
|
-
}
|
|
388
|
-
const wasSubscribed = sessionSubs.delete(uri);
|
|
389
|
-
// Clean up empty subscription sets
|
|
390
|
-
if (sessionSubs.size === 0) {
|
|
391
|
-
this.subscriptions.delete(sessionId);
|
|
392
|
-
}
|
|
393
|
-
if (wasSubscribed) {
|
|
394
|
-
this.logger.verbose(`Session ${sessionId.slice(0, 20)}... unsubscribed from resource ${uri}`);
|
|
395
|
-
}
|
|
396
|
-
return wasSubscribed;
|
|
397
|
-
}
|
|
398
|
-
/**
|
|
399
|
-
* Check if a session is subscribed to a specific resource.
|
|
400
|
-
*
|
|
401
|
-
* @param sessionId - The session to check
|
|
402
|
-
* @param uri - The resource URI
|
|
403
|
-
* @returns true if subscribed
|
|
404
|
-
*/
|
|
405
|
-
isSubscribed(sessionId, uri) {
|
|
406
|
-
return this.subscriptions.get(sessionId)?.has(uri) ?? false;
|
|
407
|
-
}
|
|
408
|
-
/**
|
|
409
|
-
* Get all sessions subscribed to a specific resource.
|
|
410
|
-
*
|
|
411
|
-
* @param uri - The resource URI
|
|
412
|
-
* @returns Array of session IDs subscribed to this resource
|
|
413
|
-
*/
|
|
414
|
-
getSubscribersForResource(uri) {
|
|
415
|
-
const subscribers = [];
|
|
416
|
-
for (const [sessionId, uris] of this.subscriptions) {
|
|
417
|
-
if (uris.has(uri)) {
|
|
418
|
-
subscribers.push(sessionId);
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
return subscribers;
|
|
422
|
-
}
|
|
423
|
-
/**
|
|
424
|
-
* Send a resource update notification to subscribed sessions only.
|
|
425
|
-
* Per MCP 2025-11-25 spec, only sessions that have subscribed to this
|
|
426
|
-
* resource via `resources/subscribe` will receive the notification.
|
|
427
|
-
*
|
|
428
|
-
* @param uri - The resource URI that was updated
|
|
429
|
-
*/
|
|
430
|
-
notifyResourceUpdated(uri) {
|
|
431
|
-
const subscribers = this.getSubscribersForResource(uri);
|
|
432
|
-
if (subscribers.length === 0) {
|
|
433
|
-
this.logger.verbose(`No subscribers for resource ${uri}, skipping notification`);
|
|
434
|
-
return;
|
|
435
|
-
}
|
|
436
|
-
this.logger.verbose(`Notifying ${subscribers.length} subscriber(s) of resource update: ${uri}`);
|
|
437
|
-
for (const sessionId of subscribers) {
|
|
438
|
-
this.sendNotificationToSession(sessionId, 'notifications/resources/updated', { uri });
|
|
439
|
-
}
|
|
440
|
-
}
|
|
441
|
-
/**
|
|
442
|
-
* Get the number of registered servers.
|
|
443
|
-
*/
|
|
444
|
-
get serverCount() {
|
|
445
|
-
return this.servers.size;
|
|
446
|
-
}
|
|
447
|
-
/**
|
|
448
|
-
* Set the minimum log level for a session.
|
|
449
|
-
* Only log messages at or above this level will be sent to the session.
|
|
450
|
-
* Per MCP spec, the default level when not set is determined by the server.
|
|
451
|
-
*
|
|
452
|
-
* @param sessionId - The session to configure
|
|
453
|
-
* @param level - The minimum log level
|
|
454
|
-
* @returns true if the session was found and level was set
|
|
455
|
-
*/
|
|
456
|
-
setLogLevel(sessionId, level) {
|
|
457
|
-
if (!this.servers.has(sessionId)) {
|
|
458
|
-
this.logger.warn(`Cannot set log level for unregistered session: ${sessionId.slice(0, 20)}...`);
|
|
459
|
-
return false;
|
|
460
|
-
}
|
|
461
|
-
this.logLevels.set(sessionId, level);
|
|
462
|
-
this.logger.verbose(`Set log level to '${level}' for session ${sessionId.slice(0, 20)}...`);
|
|
463
|
-
return true;
|
|
464
|
-
}
|
|
465
|
-
/**
|
|
466
|
-
* Get the current log level for a session.
|
|
467
|
-
*
|
|
468
|
-
* @param sessionId - The session to query
|
|
469
|
-
* @returns The log level, or undefined if not set
|
|
470
|
-
*/
|
|
471
|
-
getLogLevel(sessionId) {
|
|
472
|
-
return this.logLevels.get(sessionId);
|
|
473
|
-
}
|
|
474
|
-
/**
|
|
475
|
-
* Send a log message to all sessions that have enabled the given level.
|
|
476
|
-
* Per MCP 2025-11-25 spec, this sends a 'notifications/message' notification
|
|
477
|
-
* to sessions whose configured minimum level allows this message through.
|
|
478
|
-
*
|
|
479
|
-
* @param level - The log level of this message
|
|
480
|
-
* @param loggerName - Optional logger name/component identifier
|
|
481
|
-
* @param data - The log message data (string or structured data)
|
|
482
|
-
*/
|
|
483
|
-
sendLogMessage(level, loggerName, data) {
|
|
484
|
-
const messagePriority = exports.MCP_LOGGING_LEVEL_PRIORITY[level];
|
|
485
|
-
for (const [sessionId, { server }] of this.servers) {
|
|
486
|
-
const sessionLevel = this.logLevels.get(sessionId);
|
|
487
|
-
// If session hasn't set a level, skip (server decides default behavior)
|
|
488
|
-
// Here we default to NOT sending unless explicitly subscribed
|
|
489
|
-
if (!sessionLevel) {
|
|
490
|
-
continue;
|
|
491
|
-
}
|
|
492
|
-
const sessionPriority = exports.MCP_LOGGING_LEVEL_PRIORITY[sessionLevel];
|
|
493
|
-
// Only send if message level >= session's minimum level
|
|
494
|
-
if (messagePriority >= sessionPriority) {
|
|
495
|
-
const params = {
|
|
496
|
-
level,
|
|
497
|
-
data,
|
|
498
|
-
};
|
|
499
|
-
if (loggerName) {
|
|
500
|
-
params['logger'] = loggerName;
|
|
501
|
-
}
|
|
502
|
-
this.sendNotificationToServer(server, sessionId, 'notifications/message', params);
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
}
|
|
506
|
-
/**
|
|
507
|
-
* Send a log message to a specific session, respecting its log level.
|
|
508
|
-
*
|
|
509
|
-
* @param sessionId - The target session
|
|
510
|
-
* @param level - The log level of this message
|
|
511
|
-
* @param loggerName - Optional logger name/component identifier
|
|
512
|
-
* @param data - The log message data
|
|
513
|
-
* @returns true if the message was sent (session exists and level allows)
|
|
514
|
-
*/
|
|
515
|
-
sendLogMessageToSession(sessionId, level, loggerName, data) {
|
|
516
|
-
const registered = this.servers.get(sessionId);
|
|
517
|
-
if (!registered) {
|
|
518
|
-
return false;
|
|
519
|
-
}
|
|
520
|
-
const sessionLevel = this.logLevels.get(sessionId);
|
|
521
|
-
if (!sessionLevel) {
|
|
522
|
-
// Session hasn't enabled logging
|
|
523
|
-
return false;
|
|
524
|
-
}
|
|
525
|
-
const messagePriority = exports.MCP_LOGGING_LEVEL_PRIORITY[level];
|
|
526
|
-
const sessionPriority = exports.MCP_LOGGING_LEVEL_PRIORITY[sessionLevel];
|
|
527
|
-
if (messagePriority < sessionPriority) {
|
|
528
|
-
// Message level is too verbose for this session
|
|
529
|
-
return false;
|
|
530
|
-
}
|
|
531
|
-
const params = {
|
|
532
|
-
level,
|
|
533
|
-
data,
|
|
534
|
-
};
|
|
535
|
-
if (loggerName) {
|
|
536
|
-
params['logger'] = loggerName;
|
|
537
|
-
}
|
|
538
|
-
this.sendNotificationToServer(registered.server, sessionId, 'notifications/message', params);
|
|
539
|
-
return true;
|
|
540
|
-
}
|
|
541
|
-
// =====================================================
|
|
542
|
-
// Client Capabilities & Roots API (MCP 2025-11-25)
|
|
543
|
-
// =====================================================
|
|
544
|
-
/**
|
|
545
|
-
* Set client capabilities for a session.
|
|
546
|
-
* Called during initialization to store what the client supports.
|
|
547
|
-
*
|
|
548
|
-
* @param sessionId - The session to configure
|
|
549
|
-
* @param capabilities - The client's capabilities from the initialize request
|
|
550
|
-
* @returns true if the session was found and capabilities were set
|
|
551
|
-
*/
|
|
552
|
-
setClientCapabilities(sessionId, capabilities) {
|
|
553
|
-
const registered = this.servers.get(sessionId);
|
|
554
|
-
if (!registered) {
|
|
555
|
-
this.logger.warn(`Cannot set client capabilities for unregistered session: ${sessionId.slice(0, 20)}...`);
|
|
556
|
-
return false;
|
|
557
|
-
}
|
|
558
|
-
registered.clientCapabilities = capabilities;
|
|
559
|
-
this.logger.verbose(`Set client capabilities for session ${sessionId.slice(0, 20)}...: roots.listChanged=${capabilities.roots?.listChanged ?? false}`);
|
|
560
|
-
return true;
|
|
561
|
-
}
|
|
562
|
-
/**
|
|
563
|
-
* Get client capabilities for a session.
|
|
564
|
-
*
|
|
565
|
-
* @param sessionId - The session to query
|
|
566
|
-
* @returns The client's capabilities, or undefined if not set
|
|
567
|
-
*/
|
|
568
|
-
getClientCapabilities(sessionId) {
|
|
569
|
-
return this.servers.get(sessionId)?.clientCapabilities;
|
|
570
|
-
}
|
|
571
|
-
/**
|
|
572
|
-
* Set client info for a session and auto-detect the AI platform type.
|
|
573
|
-
* Called during initialization to store who the client is.
|
|
574
|
-
* Uses the scope's platform detection configuration for custom mappings.
|
|
575
|
-
*
|
|
576
|
-
* @param sessionId - The session to configure
|
|
577
|
-
* @param clientInfo - The client's info (name/version) from the initialize request
|
|
578
|
-
* @returns The detected platform type, or undefined if the session was not found
|
|
579
|
-
*/
|
|
580
|
-
setClientInfo(sessionId, clientInfo) {
|
|
581
|
-
const registered = this.servers.get(sessionId);
|
|
582
|
-
if (!registered) {
|
|
583
|
-
this.logger.warn(`Cannot set client info for unregistered session: ${sessionId.slice(0, 20)}...`);
|
|
584
|
-
return undefined;
|
|
585
|
-
}
|
|
586
|
-
registered.clientInfo = clientInfo;
|
|
587
|
-
// Use platform detection config from scope if available
|
|
588
|
-
const platformDetectionConfig = this.scope.metadata.transport?.platformDetection;
|
|
589
|
-
registered.platformType = detectAIPlatform(clientInfo, platformDetectionConfig);
|
|
590
|
-
this.logger.verbose(`Set client info for session ${sessionId.slice(0, 20)}...: name=${clientInfo.name}, version=${clientInfo.version}, platform=${registered.platformType}`);
|
|
591
|
-
return registered.platformType;
|
|
592
|
-
}
|
|
593
|
-
/**
|
|
594
|
-
* Get client info for a session.
|
|
595
|
-
*
|
|
596
|
-
* @param sessionId - The session to query
|
|
597
|
-
* @returns The client's info, or undefined if not set
|
|
598
|
-
*/
|
|
599
|
-
getClientInfo(sessionId) {
|
|
600
|
-
return this.servers.get(sessionId)?.clientInfo;
|
|
601
|
-
}
|
|
602
|
-
/**
|
|
603
|
-
* Get the detected AI platform type for a session.
|
|
604
|
-
* This is auto-detected from client info during initialization.
|
|
605
|
-
*
|
|
606
|
-
* @param sessionId - The session to query
|
|
607
|
-
* @returns The detected platform type, or 'unknown' if not detected
|
|
608
|
-
*/
|
|
609
|
-
getPlatformType(sessionId) {
|
|
610
|
-
const session = this.servers.get(sessionId);
|
|
611
|
-
return session?.platformType ?? 'unknown';
|
|
612
|
-
}
|
|
613
|
-
/**
|
|
614
|
-
* Check if a session's client supports roots listing.
|
|
615
|
-
*
|
|
616
|
-
* @param sessionId - The session to check
|
|
617
|
-
* @returns true if the client supports roots
|
|
618
|
-
*/
|
|
619
|
-
supportsRoots(sessionId) {
|
|
620
|
-
const capabilities = this.getClientCapabilities(sessionId);
|
|
621
|
-
return capabilities?.roots !== undefined;
|
|
622
|
-
}
|
|
623
|
-
/**
|
|
624
|
-
* List roots from the client for a session.
|
|
625
|
-
* This sends a `roots/list` request to the client and returns the roots.
|
|
626
|
-
*
|
|
627
|
-
* If the client doesn't support roots, returns an empty array.
|
|
628
|
-
* Results are cached and invalidated when `notifications/roots/list_changed` is received.
|
|
629
|
-
*
|
|
630
|
-
* @param sessionId - The session to request roots from
|
|
631
|
-
* @param options - Options for the request
|
|
632
|
-
* @param options.forceRefresh - If true, bypass the cache and fetch fresh roots
|
|
633
|
-
* @param options.timeout - Timeout in milliseconds (default: 30000)
|
|
634
|
-
* @returns Array of roots from the client
|
|
635
|
-
*/
|
|
636
|
-
async listRoots(sessionId, options) {
|
|
637
|
-
const registered = this.servers.get(sessionId);
|
|
638
|
-
if (!registered) {
|
|
639
|
-
this.logger.warn(`Cannot list roots for unregistered session: ${sessionId.slice(0, 20)}...`);
|
|
640
|
-
return [];
|
|
641
|
-
}
|
|
642
|
-
// Check if client supports roots
|
|
643
|
-
if (!this.supportsRoots(sessionId)) {
|
|
644
|
-
this.logger.verbose(`Client for session ${sessionId.slice(0, 20)}... does not support roots`);
|
|
645
|
-
return [];
|
|
646
|
-
}
|
|
647
|
-
// Return cached roots if available and not forcing refresh
|
|
648
|
-
if (!options?.forceRefresh && registered.cachedRoots !== undefined) {
|
|
649
|
-
this.logger.verbose(`Returning cached roots for session ${sessionId.slice(0, 20)}... (${registered.cachedRoots.length} roots)`);
|
|
650
|
-
return registered.cachedRoots;
|
|
651
|
-
}
|
|
652
|
-
try {
|
|
653
|
-
this.logger.verbose(`Requesting roots from client for session ${sessionId.slice(0, 20)}...`);
|
|
654
|
-
// Send roots/list request to client
|
|
655
|
-
const result = await registered.server.request({ method: 'roots/list' }, types_js_1.ListRootsResultSchema, {
|
|
656
|
-
timeout: options?.timeout ?? 30000,
|
|
657
|
-
});
|
|
658
|
-
// Cache the result
|
|
659
|
-
registered.cachedRoots = result.roots;
|
|
660
|
-
registered.rootsFetchedAt = Date.now();
|
|
661
|
-
this.logger.verbose(`Received ${registered.cachedRoots.length} root(s) from client for session ${sessionId.slice(0, 20)}...`);
|
|
662
|
-
return registered.cachedRoots;
|
|
663
|
-
}
|
|
664
|
-
catch (error) {
|
|
665
|
-
this.logger.warn(`Failed to list roots for session ${sessionId.slice(0, 20)}...: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
666
|
-
// Return cached roots if available, otherwise empty array
|
|
667
|
-
return registered.cachedRoots ?? [];
|
|
668
|
-
}
|
|
669
|
-
}
|
|
670
|
-
/**
|
|
671
|
-
* Invalidate cached roots for a session.
|
|
672
|
-
* Call this when receiving `notifications/roots/list_changed` from the client.
|
|
673
|
-
*
|
|
674
|
-
* @param sessionId - The session whose roots cache should be invalidated
|
|
675
|
-
* @returns true if the session was found and cache was invalidated
|
|
676
|
-
*/
|
|
677
|
-
invalidateRootsCache(sessionId) {
|
|
678
|
-
const registered = this.servers.get(sessionId);
|
|
679
|
-
if (!registered) {
|
|
680
|
-
return false;
|
|
681
|
-
}
|
|
682
|
-
const hadCache = registered.cachedRoots !== undefined;
|
|
683
|
-
registered.cachedRoots = undefined;
|
|
684
|
-
registered.rootsFetchedAt = undefined;
|
|
685
|
-
if (hadCache) {
|
|
686
|
-
this.logger.verbose(`Invalidated roots cache for session ${sessionId.slice(0, 20)}...`);
|
|
687
|
-
}
|
|
688
|
-
return hadCache;
|
|
689
|
-
}
|
|
690
|
-
/**
|
|
691
|
-
* Get the cached roots for a session without fetching from the client.
|
|
692
|
-
*
|
|
693
|
-
* @param sessionId - The session to query
|
|
694
|
-
* @returns Cached roots, or undefined if not cached
|
|
695
|
-
*/
|
|
696
|
-
getCachedRoots(sessionId) {
|
|
697
|
-
return this.servers.get(sessionId)?.cachedRoots;
|
|
698
|
-
}
|
|
699
|
-
/**
|
|
700
|
-
* Clean up subscriptions and resources.
|
|
701
|
-
*/
|
|
702
|
-
async destroy() {
|
|
703
|
-
this.logger.verbose('Destroying notification service');
|
|
704
|
-
// Unsubscribe from all registry listeners
|
|
705
|
-
for (const unsub of this.unsubscribers) {
|
|
706
|
-
unsub();
|
|
707
|
-
}
|
|
708
|
-
this.unsubscribers.length = 0;
|
|
709
|
-
// Clear server registrations, resource subscriptions, log levels, and terminated sessions
|
|
710
|
-
this.servers.clear();
|
|
711
|
-
this.subscriptions.clear();
|
|
712
|
-
this.logLevels.clear();
|
|
713
|
-
this.terminatedSessions.clear();
|
|
714
|
-
this.logger.info('Notification service destroyed');
|
|
715
|
-
}
|
|
716
|
-
sendNotificationToServer(server, sessionId, method, params) {
|
|
717
|
-
try {
|
|
718
|
-
// MCP SDK's server.notification() sends a JSON-RPC notification
|
|
719
|
-
server.notification({ method, params: params ?? {} });
|
|
720
|
-
this.logger.verbose(`Sent ${method} to session ${sessionId.slice(0, 20)}...`);
|
|
721
|
-
}
|
|
722
|
-
catch (error) {
|
|
723
|
-
// Connection may have closed; log and continue
|
|
724
|
-
this.logger.warn(`Failed to send notification ${method} to session ${sessionId.slice(0, 20)}...: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
725
|
-
// Optionally unregister dead sessions
|
|
726
|
-
this.unregisterServer(sessionId);
|
|
727
|
-
}
|
|
728
|
-
}
|
|
729
|
-
}
|
|
730
|
-
exports.NotificationService = NotificationService;
|
|
731
|
-
//# sourceMappingURL=notification.service.js.map
|