@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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handle.streamable-http.flow.js","sourceRoot":"","sources":["../../../../src/transport/flows/handle.streamable-http.flow.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Flow,\n httpInputSchema,\n FlowRunOptions,\n httpOutputSchema,\n FlowPlan,\n FlowBase,\n FlowHooksOf,\n sessionIdSchema,\n httpRespond,\n ServerRequestTokens,\n Authorization,\n FlowControl,\n validateMcpSessionHeader,\n} from '../../common';\nimport { z } from 'zod';\nimport { ElicitResultSchema, RequestSchema } from '@modelcontextprotocol/sdk/types.js';\nimport { Scope } from '../../scope';\nimport { createSessionId } from '../../auth/session/utils/session-id.utils';\n\nexport const plan = {\n pre: ['parseInput', 'router'],\n execute: ['onInitialize', 'onMessage', 'onElicitResult', 'onSseListener'],\n post: [],\n finalize: ['cleanup'],\n} as const satisfies FlowPlan<string>;\n\n// Relaxed session schema for state - payload is optional when using mcp-session-id header directly\nconst stateSessionSchema = z.object({\n id: z.string(),\n payload: z\n .object({\n nodeId: z.string(),\n authSig: z.string(),\n uuid: z.string().uuid(),\n iat: z.number(),\n protocol: z.enum(['legacy-sse', 'sse', 'streamable-http', 'stateful-http', 'stateless-http']).optional(),\n isPublic: z.boolean().optional(),\n platformType: z\n .enum(['openai', 'claude', 'gemini', 'cursor', 'continue', 'cody', 'generic-mcp', 'ext-apps', 'unknown'])\n .optional(),\n })\n .optional(),\n});\n\nexport const stateSchema = z.object({\n token: z.string(),\n session: stateSessionSchema,\n requestType: z.enum(['initialize', 'message', 'elicitResult', 'sseListener']).optional(),\n});\n\nconst name = 'handle:streamable-http' as const;\nconst { Stage } = FlowHooksOf(name);\n\ndeclare global {\n interface ExtendFlows {\n 'handle:streamable-http': FlowRunOptions<\n HandleStreamableHttpFlow,\n typeof plan,\n typeof httpInputSchema,\n typeof httpOutputSchema,\n typeof stateSchema\n >;\n }\n}\n\n@Flow({\n name,\n plan,\n access: 'authorized',\n inputSchema: httpInputSchema,\n outputSchema: httpOutputSchema,\n})\nexport default class HandleStreamableHttpFlow extends FlowBase<typeof name> {\n name = name;\n\n @Stage('parseInput')\n async parseInput() {\n const { request } = this.rawInput;\n\n console.log('[DEBUG] parseInput: starting');\n const authorization = request[ServerRequestTokens.auth] as Authorization;\n console.log(\n '[DEBUG] parseInput: authorization =',\n authorization\n ? {\n hasToken: !!authorization.token,\n hasSession: !!authorization.session,\n sessionId: authorization.session?.id?.slice(0, 30),\n }\n : 'undefined',\n );\n const { token } = authorization;\n\n // CRITICAL: The mcp-session-id header is the client's reference to their session.\n // We MUST use this exact ID for transport registry lookup.\n //\n // Priority 1: Use mcp-session-id header if present (client's session ID for lookup)\n // This is the ID the client received from initialize and is referencing.\n // Priority 2: Use session from authorization if header matches or is absent\n // Priority 3: Create new session (first request - no header, no authorization.session)\n const raw = request.headers?.['mcp-session-id'];\n const rawMcpSessionHeader = typeof raw === 'string' ? raw : undefined;\n const mcpSessionHeader = validateMcpSessionHeader(rawMcpSessionHeader);\n\n // If client sent a header but validation failed, return 404\n if (raw !== undefined && !mcpSessionHeader) {\n this.respond(httpRespond.sessionNotFound('invalid session id'));\n return;\n }\n\n let session: { id: string; payload?: z.infer<typeof stateSchema>['session']['payload'] };\n\n if (mcpSessionHeader) {\n // Client sent session ID - ALWAYS use it for transport lookup\n // If authorization.session exists and matches, use its payload for protocol detection\n // If authorization.session differs or is missing, still use header ID (payload may be undefined)\n if (authorization.session?.id === mcpSessionHeader) {\n session = authorization.session;\n } else {\n session = { id: mcpSessionHeader };\n }\n } else if (authorization.session) {\n // No header but authorization has session - use it (shouldn't happen in normal flow)\n session = authorization.session;\n } else {\n // No session - create new one (initialize request)\n session = createSessionId('streamable-http', token, {\n userAgent: request.headers?.['user-agent'] as string | undefined,\n platformDetectionConfig: (this.scope as Scope).metadata.transport?.platformDetection,\n });\n }\n\n this.state.set(stateSchema.parse({ token, session }));\n }\n\n @Stage('router')\n async router() {\n const { request } = this.rawInput;\n\n // GET requests are SSE listener streams - no body expected\n // Per MCP spec, clients can open SSE stream with GET + Accept: text/event-stream\n if (request.method.toUpperCase() === 'GET') {\n this.state.set('requestType', 'sseListener');\n return;\n }\n\n // POST requests have MCP JSON-RPC body\n const body = request.body as { method?: string } | undefined;\n const method = body?.method;\n\n // Use method-based detection for routing (more permissive than strict schema)\n // The actual schema validation happens in the MCP SDK's transport layer\n if (method === 'initialize') {\n this.state.set('requestType', 'initialize');\n } else if (ElicitResultSchema.safeParse(request.body).success) {\n this.state.set('requestType', 'elicitResult');\n } else if (method && RequestSchema.safeParse(request.body).success) {\n this.state.set('requestType', 'message');\n } else {\n this.respond(httpRespond.rpcError('Invalid Request'));\n }\n }\n\n @Stage('onInitialize', {\n filter: ({ state: { requestType } }) => requestType === 'initialize',\n })\n async onInitialize() {\n const transportService = (this.scope as Scope).transportService;\n const logger = (this.scope as Scope).logger.child('handle:streamable-http:onInitialize');\n\n const { request, response } = this.rawInput;\n const { token, session } = this.state.required;\n\n logger.info('onInitialize: creating transport', {\n sessionId: session.id.slice(0, 30),\n hasToken: !!token,\n tokenPrefix: token?.slice(0, 10),\n });\n\n try {\n const transport = await transportService.createTransporter('streamable-http', token, session.id, response);\n logger.info('onInitialize: transport created, calling initialize');\n await transport.initialize(request, response);\n logger.info('onInitialize: completed successfully');\n this.handled();\n } catch (error) {\n // FlowControl is expected control flow (from this.handled()), not an error\n if (error instanceof FlowControl) {\n throw error;\n }\n logger.error('onInitialize: failed', {\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n });\n throw error;\n }\n }\n\n @Stage('onElicitResult', {\n filter: ({ state: { requestType } }) => requestType === 'elicitResult',\n })\n async onElicitResult() {\n this.fail(new Error('Not implemented'));\n }\n\n @Stage('onMessage', {\n filter: ({ state: { requestType } }) => requestType === 'message',\n })\n async onMessage() {\n const transportService = (this.scope as Scope).transportService;\n const logger = this.scopeLogger.child('handle:streamable-http:onMessage');\n\n const { request, response } = this.rawInput;\n const { token, session } = this.state.required;\n\n // 1. Try to get existing transport from memory\n let transport = await transportService.getTransporter('streamable-http', token, session.id);\n\n // 2. If not in memory, check if session exists in Redis and recreate\n if (!transport) {\n try {\n const storedSession = await transportService.getStoredSession('streamable-http', token, session.id);\n if (storedSession) {\n logger.info('Recreating transport from Redis session', {\n sessionId: session.id?.slice(0, 20),\n createdAt: storedSession.createdAt,\n });\n transport = await transportService.recreateTransporter(\n 'streamable-http',\n token,\n session.id,\n storedSession,\n response,\n );\n }\n } catch (error) {\n // Log and fall through to 404 logic - transport remains undefined\n logger.warn('Failed to recreate transport from stored session', {\n sessionId: session.id?.slice(0, 20),\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n\n if (!transport) {\n // Check if session was ever created to differentiate error types per MCP Spec 2025-11-25\n const wasCreated = await transportService.wasSessionCreatedAsync('streamable-http', token, session.id);\n const body = request.body as Record<string, unknown> | undefined;\n\n if (wasCreated) {\n // Session existed but was terminated/evicted → HTTP 404 (client should re-initialize)\n logger.info('Session expired - client should re-initialize', {\n sessionId: session.id?.slice(0, 20),\n tokenHash: token.slice(0, 8),\n method: body?.['method'],\n requestId: body?.['id'],\n mcpSessionId: request.headers?.['mcp-session-id'],\n });\n this.respond(httpRespond.sessionExpired('session expired'));\n } else {\n // Session was never created → HTTP 404 (per user requirement: invalid/missing session = 404)\n logger.warn('Session not initialized - client attempted request without initializing', {\n sessionId: session.id?.slice(0, 20),\n tokenHash: token.slice(0, 8),\n method: body?.['method'],\n requestId: body?.['id'],\n mcpSessionId: request.headers?.['mcp-session-id'],\n userAgent: (request.headers?.['user-agent'] as string | undefined)?.slice(0, 50),\n });\n this.respond(httpRespond.sessionNotFound('session not initialized'));\n }\n return;\n }\n\n try {\n await transport.handleRequest(request, response);\n this.handled();\n } catch (error) {\n // FlowControl is expected control flow, not an error\n if (!(error instanceof FlowControl)) {\n const body = request.body as Record<string, unknown> | undefined;\n logger.error('handleRequest failed', {\n error: error instanceof Error ? { name: error.name, message: error.message, stack: error.stack } : error,\n method: body?.['method'],\n id: body?.['id'],\n sessionId: session.id?.slice(0, 20),\n });\n }\n throw error;\n }\n }\n\n @Stage('onSseListener', {\n filter: ({ state: { requestType } }) => requestType === 'sseListener',\n })\n async onSseListener() {\n const transportService = (this.scope as Scope).transportService;\n const logger = this.scopeLogger.child('handle:streamable-http:onSseListener');\n\n const { request, response } = this.rawInput;\n const { token, session } = this.state.required;\n\n // 1. Try to get existing transport from memory\n let transport = await transportService.getTransporter('streamable-http', token, session.id);\n\n // 2. If not in memory, check if session exists in Redis and recreate\n if (!transport) {\n try {\n const storedSession = await transportService.getStoredSession('streamable-http', token, session.id);\n if (storedSession) {\n logger.info('Recreating transport from Redis session for SSE listener', {\n sessionId: session.id?.slice(0, 20),\n createdAt: storedSession.createdAt,\n });\n transport = await transportService.recreateTransporter(\n 'streamable-http',\n token,\n session.id,\n storedSession,\n response,\n );\n }\n } catch (error) {\n // Log and fall through to 404 logic - transport remains undefined\n logger.warn('Failed to recreate transport from stored session for SSE listener', {\n sessionId: session.id?.slice(0, 20),\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n\n if (!transport) {\n this.respond(httpRespond.notFound('Session not found'));\n return;\n }\n\n // Forward GET request to transport (opens SSE stream for server→client notifications)\n await transport.handleRequest(request, response);\n this.handled();\n }\n}\n"]}
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SSEServerTransport = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const node_crypto_1 = require("node:crypto");
|
|
6
|
-
const raw_body_1 = tslib_1.__importDefault(require("raw-body"));
|
|
7
|
-
const content_type_1 = tslib_1.__importDefault(require("content-type"));
|
|
8
|
-
const url_1 = require("url");
|
|
9
|
-
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
10
|
-
const MAXIMUM_MESSAGE_SIZE = '4mb';
|
|
11
|
-
/**
|
|
12
|
-
* Server transport for SSE: this will send messages over an SSE connection and receive messages from HTTP POST requests.
|
|
13
|
-
*
|
|
14
|
-
* This transport is only available in Node.js environments.
|
|
15
|
-
*/
|
|
16
|
-
class SSEServerTransport {
|
|
17
|
-
_endpoint;
|
|
18
|
-
res;
|
|
19
|
-
_sseResponse;
|
|
20
|
-
_sessionId;
|
|
21
|
-
_options;
|
|
22
|
-
/** Incrementing event ID counter for SSE events (MCP 2025-11-25 spec compliance) */
|
|
23
|
-
_eventIdCounter = 0;
|
|
24
|
-
onclose;
|
|
25
|
-
onerror;
|
|
26
|
-
onmessage;
|
|
27
|
-
/**
|
|
28
|
-
* Creates a new SSE server transport, which will direct the client to POST messages to the relative or absolute URL identified by `_endpoint`.
|
|
29
|
-
*/
|
|
30
|
-
constructor(_endpoint, res, options) {
|
|
31
|
-
this._endpoint = _endpoint;
|
|
32
|
-
this.res = res;
|
|
33
|
-
this._sessionId = options?.sessionId ?? (0, node_crypto_1.randomUUID)();
|
|
34
|
-
this._options = options || { enableDnsRebindingProtection: false };
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Validates request headers for DNS rebinding protection.
|
|
38
|
-
* @returns Error message if validation fails, undefined if validation passes.
|
|
39
|
-
*/
|
|
40
|
-
validateRequestHeaders(req) {
|
|
41
|
-
// Skip validation if protection is not enabled
|
|
42
|
-
if (!this._options.enableDnsRebindingProtection) {
|
|
43
|
-
return undefined;
|
|
44
|
-
}
|
|
45
|
-
// Validate Host header if allowedHosts is configured
|
|
46
|
-
if (this._options.allowedHosts && this._options.allowedHosts.length > 0) {
|
|
47
|
-
const hostHeader = req.headers.host;
|
|
48
|
-
if (!hostHeader || !this._options.allowedHosts.includes(hostHeader)) {
|
|
49
|
-
return `Invalid Host header: ${hostHeader}`;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
// Validate Origin header if allowedOrigins is configured
|
|
53
|
-
if (this._options.allowedOrigins && this._options.allowedOrigins.length > 0) {
|
|
54
|
-
const originHeader = req.headers.origin;
|
|
55
|
-
if (!originHeader || !this._options.allowedOrigins.includes(originHeader)) {
|
|
56
|
-
return `Invalid Origin header: ${originHeader}`;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return undefined;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Handles the initial SSE connection request.
|
|
63
|
-
*
|
|
64
|
-
* This should be called when a GET request is made to establish the SSE stream.
|
|
65
|
-
*/
|
|
66
|
-
async start() {
|
|
67
|
-
if (this._sseResponse) {
|
|
68
|
-
throw new Error('SSEServerTransport already started! If using Server class, note that connect() calls start() automatically.');
|
|
69
|
-
}
|
|
70
|
-
this.res.writeHead(200, {
|
|
71
|
-
'Content-Type': 'text/event-stream',
|
|
72
|
-
'Cache-Control': 'no-cache, no-transform',
|
|
73
|
-
Connection: 'keep-alive',
|
|
74
|
-
});
|
|
75
|
-
// Send the endpoint event
|
|
76
|
-
// Use a dummy base URL because this._endpoint is relative.
|
|
77
|
-
// This allows using URL/URLSearchParams for robust parameter handling.
|
|
78
|
-
const dummyBase = 'http://localhost'; // Any valid base works
|
|
79
|
-
const endpointUrl = new url_1.URL(this._endpoint, dummyBase);
|
|
80
|
-
endpointUrl.searchParams.set('sessionId', this._sessionId);
|
|
81
|
-
// Reconstruct the relative URL string (pathname + search + hash)
|
|
82
|
-
const relativeUrlWithSession = endpointUrl.pathname + endpointUrl.search + endpointUrl.hash;
|
|
83
|
-
// Include event ID per MCP 2025-11-25 spec for client reconnection support
|
|
84
|
-
const eventId = ++this._eventIdCounter;
|
|
85
|
-
this.res.write(`id: ${eventId}\nevent: endpoint\ndata: ${relativeUrlWithSession}\n\n`);
|
|
86
|
-
this._sseResponse = this.res;
|
|
87
|
-
this.res.on('close', () => {
|
|
88
|
-
this._sseResponse = undefined;
|
|
89
|
-
this.onclose?.();
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Handles incoming POST messages.
|
|
94
|
-
*
|
|
95
|
-
* This should be called when a POST request is made to send a message to the server.
|
|
96
|
-
*/
|
|
97
|
-
async handlePostMessage(req, res, parsedBody) {
|
|
98
|
-
if (!this._sseResponse) {
|
|
99
|
-
const message = 'SSE connection not established';
|
|
100
|
-
res.writeHead(500).end(message);
|
|
101
|
-
throw new Error(message);
|
|
102
|
-
}
|
|
103
|
-
// Validate request headers for DNS rebinding protection
|
|
104
|
-
const validationError = this.validateRequestHeaders(req);
|
|
105
|
-
if (validationError) {
|
|
106
|
-
res.writeHead(403).end(validationError);
|
|
107
|
-
this.onerror?.(new Error(validationError));
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
const authInfo = req.auth;
|
|
111
|
-
const requestInfo = { headers: req.headers };
|
|
112
|
-
let body;
|
|
113
|
-
try {
|
|
114
|
-
const ct = content_type_1.default.parse(req.headers['content-type'] ?? '');
|
|
115
|
-
if (ct.type !== 'application/json') {
|
|
116
|
-
throw new Error(`Unsupported content-type: ${ct.type}`);
|
|
117
|
-
}
|
|
118
|
-
body =
|
|
119
|
-
parsedBody ??
|
|
120
|
-
(await (0, raw_body_1.default)(req, {
|
|
121
|
-
limit: MAXIMUM_MESSAGE_SIZE,
|
|
122
|
-
encoding: ct.parameters.charset ?? 'utf-8',
|
|
123
|
-
}));
|
|
124
|
-
}
|
|
125
|
-
catch (error) {
|
|
126
|
-
res.writeHead(400).end(String(error));
|
|
127
|
-
this.onerror?.(error);
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
try {
|
|
131
|
-
await this.handleMessage(typeof body === 'string' ? JSON.parse(body) : body, { requestInfo, authInfo });
|
|
132
|
-
}
|
|
133
|
-
catch {
|
|
134
|
-
res.writeHead(400).end(`Invalid message: ${body}`);
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
res.writeHead(202).end('Accepted');
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Handle a client message, regardless of how it arrived. This can be used to inform the server of messages that arrive via a means different than HTTP POST.
|
|
141
|
-
*/
|
|
142
|
-
async handleMessage(message, extra) {
|
|
143
|
-
let parsedMessage;
|
|
144
|
-
try {
|
|
145
|
-
parsedMessage = types_js_1.JSONRPCMessageSchema.parse(message);
|
|
146
|
-
}
|
|
147
|
-
catch (error) {
|
|
148
|
-
this.onerror?.(error);
|
|
149
|
-
throw error;
|
|
150
|
-
}
|
|
151
|
-
this.onmessage?.(parsedMessage, extra);
|
|
152
|
-
}
|
|
153
|
-
async close() {
|
|
154
|
-
this._sseResponse?.end();
|
|
155
|
-
this._sseResponse = undefined;
|
|
156
|
-
this.onclose?.();
|
|
157
|
-
}
|
|
158
|
-
async send(message) {
|
|
159
|
-
if (!this._sseResponse) {
|
|
160
|
-
throw new Error('Not connected');
|
|
161
|
-
}
|
|
162
|
-
// Include event ID per MCP 2025-11-25 spec for client reconnection support
|
|
163
|
-
const eventId = ++this._eventIdCounter;
|
|
164
|
-
this._sseResponse.write(`id: ${eventId}\nevent: message\ndata: ${JSON.stringify(message)}\n\n`);
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Returns the session ID for this transport.
|
|
168
|
-
*
|
|
169
|
-
* This can be used to route incoming POST requests.
|
|
170
|
-
*/
|
|
171
|
-
get sessionId() {
|
|
172
|
-
return this._sessionId;
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Returns the current event ID counter value.
|
|
176
|
-
*
|
|
177
|
-
* This is the ID that was used for the last sent event.
|
|
178
|
-
* Useful for testing and debugging reconnection scenarios.
|
|
179
|
-
*/
|
|
180
|
-
get lastEventId() {
|
|
181
|
-
return this._eventIdCounter;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
exports.SSEServerTransport = SSEServerTransport;
|
|
185
|
-
//# sourceMappingURL=legacy.sse.tranporter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"legacy.sse.tranporter.js","sourceRoot":"","sources":["../../../../src/transport/legacy/legacy.sse.tranporter.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { IncomingMessage, ServerResponse } from 'node:http';\nimport getRawBody from 'raw-body';\nimport contentType from 'content-type';\nimport { URL } from 'url';\nimport { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { JSONRPCMessage, JSONRPCMessageSchema, MessageExtraInfo } from '@modelcontextprotocol/sdk/types.js';\nimport { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types.js';\n\nconst MAXIMUM_MESSAGE_SIZE = '4mb';\n\n/**\n * Configuration options for SSEServerTransport.\n */\nexport interface SSEServerTransportOptions {\n /**\n * List of allowed host header values for DNS rebinding protection.\n * If not specified, host validation is disabled.\n */\n allowedHosts?: string[];\n\n /**\n * List of allowed origin header values for DNS rebinding protection.\n * If not specified, origin validation is disabled.\n */\n allowedOrigins?: string[];\n\n /**\n * Enable DNS rebinding protection (requires allowedHosts and/or allowedOrigins to be configured).\n * Default is false for backwards compatibility.\n */\n enableDnsRebindingProtection?: boolean;\n\n sessionId?: string;\n}\n\n/**\n * Server transport for SSE: this will send messages over an SSE connection and receive messages from HTTP POST requests.\n *\n * This transport is only available in Node.js environments.\n */\nexport class SSEServerTransport implements Transport {\n private _sseResponse?: ServerResponse;\n private _sessionId: string;\n private _options: SSEServerTransportOptions;\n /** Incrementing event ID counter for SSE events (MCP 2025-11-25 spec compliance) */\n private _eventIdCounter = 0;\n onclose?: () => void;\n onerror?: (error: Error) => void;\n onmessage?: (message: JSONRPCMessage, extra?: MessageExtraInfo) => void;\n\n /**\n * Creates a new SSE server transport, which will direct the client to POST messages to the relative or absolute URL identified by `_endpoint`.\n */\n constructor(private _endpoint: string, private res: ServerResponse, options?: SSEServerTransportOptions) {\n this._sessionId = options?.sessionId ?? randomUUID();\n this._options = options || { enableDnsRebindingProtection: false };\n }\n\n /**\n * Validates request headers for DNS rebinding protection.\n * @returns Error message if validation fails, undefined if validation passes.\n */\n private validateRequestHeaders(req: IncomingMessage): string | undefined {\n // Skip validation if protection is not enabled\n if (!this._options.enableDnsRebindingProtection) {\n return undefined;\n }\n\n // Validate Host header if allowedHosts is configured\n if (this._options.allowedHosts && this._options.allowedHosts.length > 0) {\n const hostHeader = req.headers.host;\n if (!hostHeader || !this._options.allowedHosts.includes(hostHeader)) {\n return `Invalid Host header: ${hostHeader}`;\n }\n }\n\n // Validate Origin header if allowedOrigins is configured\n if (this._options.allowedOrigins && this._options.allowedOrigins.length > 0) {\n const originHeader = req.headers.origin;\n if (!originHeader || !this._options.allowedOrigins.includes(originHeader)) {\n return `Invalid Origin header: ${originHeader}`;\n }\n }\n\n return undefined;\n }\n\n /**\n * Handles the initial SSE connection request.\n *\n * This should be called when a GET request is made to establish the SSE stream.\n */\n async start(): Promise<void> {\n if (this._sseResponse) {\n throw new Error(\n 'SSEServerTransport already started! If using Server class, note that connect() calls start() automatically.',\n );\n }\n\n this.res.writeHead(200, {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache, no-transform',\n Connection: 'keep-alive',\n });\n\n // Send the endpoint event\n // Use a dummy base URL because this._endpoint is relative.\n // This allows using URL/URLSearchParams for robust parameter handling.\n const dummyBase = 'http://localhost'; // Any valid base works\n const endpointUrl = new URL(this._endpoint, dummyBase);\n endpointUrl.searchParams.set('sessionId', this._sessionId);\n\n // Reconstruct the relative URL string (pathname + search + hash)\n const relativeUrlWithSession = endpointUrl.pathname + endpointUrl.search + endpointUrl.hash;\n\n // Include event ID per MCP 2025-11-25 spec for client reconnection support\n const eventId = ++this._eventIdCounter;\n this.res.write(`id: ${eventId}\\nevent: endpoint\\ndata: ${relativeUrlWithSession}\\n\\n`);\n\n this._sseResponse = this.res;\n this.res.on('close', () => {\n this._sseResponse = undefined;\n this.onclose?.();\n });\n }\n\n /**\n * Handles incoming POST messages.\n *\n * This should be called when a POST request is made to send a message to the server.\n */\n async handlePostMessage(\n req: IncomingMessage & { auth?: AuthInfo },\n res: ServerResponse,\n parsedBody?: unknown,\n ): Promise<void> {\n if (!this._sseResponse) {\n const message = 'SSE connection not established';\n res.writeHead(500).end(message);\n throw new Error(message);\n }\n\n // Validate request headers for DNS rebinding protection\n const validationError = this.validateRequestHeaders(req);\n if (validationError) {\n res.writeHead(403).end(validationError);\n this.onerror?.(new Error(validationError));\n return;\n }\n\n const authInfo: AuthInfo | undefined = req.auth;\n const requestInfo: RequestInfo = { headers: req.headers } as any;\n\n let body: string | unknown;\n try {\n const ct = contentType.parse(req.headers['content-type'] ?? '');\n if (ct.type !== 'application/json') {\n throw new Error(`Unsupported content-type: ${ct.type}`);\n }\n\n body =\n parsedBody ??\n (await getRawBody(req, {\n limit: MAXIMUM_MESSAGE_SIZE,\n encoding: ct.parameters.charset ?? 'utf-8',\n }));\n } catch (error) {\n res.writeHead(400).end(String(error));\n this.onerror?.(error as Error);\n return;\n }\n\n try {\n await this.handleMessage(typeof body === 'string' ? JSON.parse(body) : body, { requestInfo, authInfo } as any);\n } catch {\n res.writeHead(400).end(`Invalid message: ${body}`);\n return;\n }\n\n res.writeHead(202).end('Accepted');\n }\n\n /**\n * Handle a client message, regardless of how it arrived. This can be used to inform the server of messages that arrive via a means different than HTTP POST.\n */\n async handleMessage(message: unknown, extra?: MessageExtraInfo): Promise<void> {\n let parsedMessage: JSONRPCMessage;\n try {\n parsedMessage = JSONRPCMessageSchema.parse(message);\n } catch (error) {\n this.onerror?.(error as Error);\n throw error;\n }\n\n this.onmessage?.(parsedMessage, extra);\n }\n\n async close(): Promise<void> {\n this._sseResponse?.end();\n this._sseResponse = undefined;\n this.onclose?.();\n }\n\n async send(message: JSONRPCMessage): Promise<void> {\n if (!this._sseResponse) {\n throw new Error('Not connected');\n }\n\n // Include event ID per MCP 2025-11-25 spec for client reconnection support\n const eventId = ++this._eventIdCounter;\n this._sseResponse.write(`id: ${eventId}\\nevent: message\\ndata: ${JSON.stringify(message)}\\n\\n`);\n }\n\n /**\n * Returns the session ID for this transport.\n *\n * This can be used to route incoming POST requests.\n */\n get sessionId(): string {\n return this._sessionId;\n }\n\n /**\n * Returns the current event ID counter value.\n *\n * This is the ID that was used for the last sent event.\n * Useful for testing and debugging reconnection scenarios.\n */\n get lastEventId(): number {\n return this._eventIdCounter;\n }\n}\n"]}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = initializedNotificationHandler;
|
|
4
|
-
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
5
|
-
function initializedNotificationHandler(options) {
|
|
6
|
-
return {
|
|
7
|
-
requestSchema: types_js_1.InitializedNotificationSchema,
|
|
8
|
-
handler: async (request, ctx) => {
|
|
9
|
-
// check session
|
|
10
|
-
return {};
|
|
11
|
-
},
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=Initialized-notification.hanlder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Initialized-notification.hanlder.js","sourceRoot":"","sources":["../../../../src/transport/mcp-handlers/Initialized-notification.hanlder.ts"],"names":[],"mappings":";;AASA,iDAUC;AAnBD,iEAM4C;AAG5C,SAAwB,8BAA8B,CACpD,OAA0B;IAE1B,OAAO;QACL,aAAa,EAAE,wCAA6B;QAC5C,OAAO,EAAE,KAAK,EAAE,OAAgC,EAAE,GAAG,EAAmB,EAAE;YACxE,gBAAgB;YAChB,OAAO,EAAE,CAAC;QACZ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import {\n isInitializedNotification,\n InitializedNotificationSchema,\n InitializeResultSchema,\n InitializedNotification,\n Result,\n} from '@modelcontextprotocol/sdk/types.js';\nimport { McpHandler, McpHandlerOptions } from './mcp-handlers.types';\n\nexport default function initializedNotificationHandler(\n options: McpHandlerOptions\n): McpHandler<InitializedNotification, Result> {\n return {\n requestSchema: InitializedNotificationSchema,\n handler: async (request: InitializedNotification, ctx): Promise<Result> => {\n // check session\n return {};\n },\n };\n}\n"]}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = callToolRequestHandler;
|
|
4
|
-
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
5
|
-
const errors_1 = require("../../errors");
|
|
6
|
-
const common_1 = require("../../common");
|
|
7
|
-
function callToolRequestHandler({ scope, }) {
|
|
8
|
-
const logger = scope.logger.child('call-tool-request-handler');
|
|
9
|
-
return {
|
|
10
|
-
requestSchema: types_js_1.CallToolRequestSchema,
|
|
11
|
-
handler: async (request, ctx) => {
|
|
12
|
-
const toolName = request.params?.name || 'unknown';
|
|
13
|
-
logger.verbose(`tools/call: ${toolName}`);
|
|
14
|
-
try {
|
|
15
|
-
return await scope.runFlowForOutput('tools:call-tool', { request, ctx });
|
|
16
|
-
}
|
|
17
|
-
catch (e) {
|
|
18
|
-
// FlowControl is a control flow mechanism, not an error - handle silently
|
|
19
|
-
if (e instanceof common_1.FlowControl) {
|
|
20
|
-
if (e.type === 'respond') {
|
|
21
|
-
// Validate output using MCP schema
|
|
22
|
-
const parseResult = types_js_1.CallToolResultSchema.safeParse(e.output);
|
|
23
|
-
if (parseResult.success) {
|
|
24
|
-
return parseResult.data;
|
|
25
|
-
}
|
|
26
|
-
logger.error('FlowControl.respond has invalid output', {
|
|
27
|
-
tool: toolName,
|
|
28
|
-
validationErrors: parseResult.error.issues,
|
|
29
|
-
});
|
|
30
|
-
return (0, errors_1.formatMcpErrorResponse)(new errors_1.InternalMcpError('FlowControl output is not a valid CallToolResult'));
|
|
31
|
-
}
|
|
32
|
-
// For handled, next, abort, fail - return appropriate response
|
|
33
|
-
logger.warn(`FlowControl ended with type: ${e.type}`, { tool: toolName, type: e.type, output: e.output });
|
|
34
|
-
return (0, errors_1.formatMcpErrorResponse)(new errors_1.InternalMcpError(`Flow ended with: ${e.type}`));
|
|
35
|
-
}
|
|
36
|
-
// Log detailed error info
|
|
37
|
-
logger.error('CallTool Failed', {
|
|
38
|
-
tool: toolName,
|
|
39
|
-
error: e instanceof Error ? { name: e.name, message: e.message, stack: e.stack } : e,
|
|
40
|
-
});
|
|
41
|
-
return (0, errors_1.formatMcpErrorResponse)(e);
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=call-tool-request.handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"call-tool-request.handler.js","sourceRoot":"","sources":["../../../../src/transport/mcp-handlers/call-tool-request.handler.ts"],"names":[],"mappings":";;AAUA,yCA0CC;AApDD,iEAK4C;AAE5C,yCAAwE;AACxE,yCAA2C;AAE3C,SAAwB,sBAAsB,CAAC,EAC7C,KAAK,GACa;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAE/D,OAAO;QACL,aAAa,EAAE,gCAAqB;QACpC,OAAO,EAAE,KAAK,EAAE,OAAwB,EAAE,GAAG,EAAE,EAAE;YAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,SAAS,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC;YAE1C,IAAI,CAAC;gBACH,OAAO,MAAM,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3E,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,0EAA0E;gBAC1E,IAAI,CAAC,YAAY,oBAAW,EAAE,CAAC;oBAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBACzB,mCAAmC;wBACnC,MAAM,WAAW,GAAG,+BAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;wBAC7D,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;4BACxB,OAAO,WAAW,CAAC,IAAI,CAAC;wBAC1B,CAAC;wBACD,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE;4BACrD,IAAI,EAAE,QAAQ;4BACd,gBAAgB,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM;yBAC3C,CAAC,CAAC;wBACH,OAAO,IAAA,+BAAsB,EAAC,IAAI,yBAAgB,CAAC,kDAAkD,CAAC,CAAC,CAAC;oBAC1G,CAAC;oBACD,+DAA+D;oBAC/D,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC1G,OAAO,IAAA,+BAAsB,EAAC,IAAI,yBAAgB,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACpF,CAAC;gBAED,0BAA0B;gBAC1B,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;oBAC9B,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;iBACrF,CAAC,CAAC;gBACH,OAAO,IAAA,+BAAsB,EAAC,CAAC,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;KACoD,CAAC;AAC1D,CAAC","sourcesContent":["import {\n CallToolRequest,\n CallToolRequestSchema,\n CallToolResult,\n CallToolResultSchema,\n} from '@modelcontextprotocol/sdk/types.js';\nimport { McpHandler, McpHandlerOptions } from './mcp-handlers.types';\nimport { formatMcpErrorResponse, InternalMcpError } from '../../errors';\nimport { FlowControl } from '../../common';\n\nexport default function callToolRequestHandler({\n scope,\n}: McpHandlerOptions): McpHandler<CallToolRequest, CallToolResult> {\n const logger = scope.logger.child('call-tool-request-handler');\n\n return {\n requestSchema: CallToolRequestSchema,\n handler: async (request: CallToolRequest, ctx) => {\n const toolName = request.params?.name || 'unknown';\n logger.verbose(`tools/call: ${toolName}`);\n\n try {\n return await scope.runFlowForOutput('tools:call-tool', { request, ctx });\n } catch (e) {\n // FlowControl is a control flow mechanism, not an error - handle silently\n if (e instanceof FlowControl) {\n if (e.type === 'respond') {\n // Validate output using MCP schema\n const parseResult = CallToolResultSchema.safeParse(e.output);\n if (parseResult.success) {\n return parseResult.data;\n }\n logger.error('FlowControl.respond has invalid output', {\n tool: toolName,\n validationErrors: parseResult.error.issues,\n });\n return formatMcpErrorResponse(new InternalMcpError('FlowControl output is not a valid CallToolResult'));\n }\n // For handled, next, abort, fail - return appropriate response\n logger.warn(`FlowControl ended with type: ${e.type}`, { tool: toolName, type: e.type, output: e.output });\n return formatMcpErrorResponse(new InternalMcpError(`Flow ended with: ${e.type}`));\n }\n\n // Log detailed error info\n logger.error('CallTool Failed', {\n tool: toolName,\n error: e instanceof Error ? { name: e.name, message: e.message, stack: e.stack } : e,\n });\n return formatMcpErrorResponse(e);\n }\n },\n } satisfies McpHandler<CallToolRequest, CallToolResult>;\n}\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = CompleteRequestHandler;
|
|
4
|
-
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
5
|
-
function CompleteRequestHandler({ scope }) {
|
|
6
|
-
return {
|
|
7
|
-
requestSchema: types_js_1.CompleteRequestSchema,
|
|
8
|
-
handler: (request, ctx) => scope.runFlowForOutput('completion:complete', { request, ctx }),
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=complete-request.handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"complete-request.handler.js","sourceRoot":"","sources":["../../../../src/transport/mcp-handlers/complete-request.handler.ts"],"names":[],"mappings":";;AAGA,yCAKC;AARD,iEAA4G;AAG5G,SAAwB,sBAAsB,CAAC,EAAE,KAAK,EAAqB;IACzE,OAAO;QACL,aAAa,EAAE,gCAAqB;QACpC,OAAO,EAAE,CAAC,OAAwB,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;KACtD,CAAC;AAC1D,CAAC","sourcesContent":["import { CompleteRequestSchema, CompleteRequest, CompleteResult } from '@modelcontextprotocol/sdk/types.js';\nimport { McpHandler, McpHandlerOptions } from './mcp-handlers.types';\n\nexport default function CompleteRequestHandler({ scope }: McpHandlerOptions) {\n return {\n requestSchema: CompleteRequestSchema,\n handler: (request: CompleteRequest, ctx) => scope.runFlowForOutput('completion:complete', { request, ctx }),\n } satisfies McpHandler<CompleteRequest, CompleteResult>;\n}\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = GetPromptRequestHandler;
|
|
4
|
-
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
5
|
-
function GetPromptRequestHandler({ scope }) {
|
|
6
|
-
return {
|
|
7
|
-
requestSchema: types_js_1.GetPromptRequestSchema,
|
|
8
|
-
handler: (request, ctx) => scope.runFlowForOutput('prompts:get-prompt', { request, ctx }),
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=get-prompt-request.handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-prompt-request.handler.js","sourceRoot":"","sources":["../../../../src/transport/mcp-handlers/get-prompt-request.handler.ts"],"names":[],"mappings":";;AAGA,0CAKC;AARD,iEAA+G;AAG/G,SAAwB,uBAAuB,CAAC,EAAE,KAAK,EAAqB;IAC1E,OAAO;QACL,aAAa,EAAE,iCAAsB;QACrC,OAAO,EAAE,CAAC,OAAyB,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;KACpD,CAAC;AAC5D,CAAC","sourcesContent":["import { GetPromptRequestSchema, GetPromptRequest, GetPromptResult } from '@modelcontextprotocol/sdk/types.js';\nimport { McpHandler, McpHandlerOptions } from './mcp-handlers.types';\n\nexport default function GetPromptRequestHandler({ scope }: McpHandlerOptions) {\n return {\n requestSchema: GetPromptRequestSchema,\n handler: (request: GetPromptRequest, ctx) => scope.runFlowForOutput('prompts:get-prompt', { request, ctx }),\n } satisfies McpHandler<GetPromptRequest, GetPromptResult>;\n}\n"]}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createMcpHandlers = createMcpHandlers;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const initialize_request_handler_1 = tslib_1.__importDefault(require("./initialize-request.handler"));
|
|
6
|
-
const Initialized_notification_hanlder_1 = tslib_1.__importDefault(require("./Initialized-notification.hanlder"));
|
|
7
|
-
const list_tools_request_handler_1 = tslib_1.__importDefault(require("./list-tools-request.handler"));
|
|
8
|
-
const call_tool_request_handler_1 = tslib_1.__importDefault(require("./call-tool-request.handler"));
|
|
9
|
-
const list_resources_request_handler_1 = tslib_1.__importDefault(require("./list-resources-request.handler"));
|
|
10
|
-
const list_resource_templates_request_handler_1 = tslib_1.__importDefault(require("./list-resource-templates-request.handler"));
|
|
11
|
-
const read_resource_request_handler_1 = tslib_1.__importDefault(require("./read-resource-request.handler"));
|
|
12
|
-
const subscribe_request_handler_1 = tslib_1.__importDefault(require("./subscribe-request.handler"));
|
|
13
|
-
const unsubscribe_request_handler_1 = tslib_1.__importDefault(require("./unsubscribe-request.handler"));
|
|
14
|
-
const list_prompts_request_handler_1 = tslib_1.__importDefault(require("./list-prompts-request.handler"));
|
|
15
|
-
const get_prompt_request_handler_1 = tslib_1.__importDefault(require("./get-prompt-request.handler"));
|
|
16
|
-
const complete_request_handler_1 = tslib_1.__importDefault(require("./complete-request.handler"));
|
|
17
|
-
const logging_set_level_request_handler_1 = tslib_1.__importDefault(require("./logging-set-level-request.handler"));
|
|
18
|
-
const roots_list_changed_notification_handler_1 = tslib_1.__importDefault(require("./roots-list-changed-notification.handler"));
|
|
19
|
-
function createMcpHandlers(options) {
|
|
20
|
-
const toolsHandler = options.serverOptions?.capabilities?.tools
|
|
21
|
-
? [(0, list_tools_request_handler_1.default)(options), (0, call_tool_request_handler_1.default)(options)]
|
|
22
|
-
: [];
|
|
23
|
-
const resourcesHandler = options.serverOptions?.capabilities?.resources
|
|
24
|
-
? [
|
|
25
|
-
(0, list_resources_request_handler_1.default)(options),
|
|
26
|
-
(0, list_resource_templates_request_handler_1.default)(options),
|
|
27
|
-
(0, read_resource_request_handler_1.default)(options),
|
|
28
|
-
(0, subscribe_request_handler_1.default)(options),
|
|
29
|
-
(0, unsubscribe_request_handler_1.default)(options),
|
|
30
|
-
]
|
|
31
|
-
: [];
|
|
32
|
-
const promptsHandler = options.serverOptions?.capabilities?.prompts
|
|
33
|
-
? [(0, list_prompts_request_handler_1.default)(options), (0, get_prompt_request_handler_1.default)(options)]
|
|
34
|
-
: [];
|
|
35
|
-
// Completion handler is available when prompts or resources are enabled
|
|
36
|
-
// Per MCP spec, completion/complete supports both ref/prompt and ref/resource
|
|
37
|
-
const completionHandler = options.serverOptions?.capabilities?.prompts || options.serverOptions?.capabilities?.resources
|
|
38
|
-
? [(0, complete_request_handler_1.default)(options)]
|
|
39
|
-
: [];
|
|
40
|
-
// Logging handler is available when logging capability is enabled
|
|
41
|
-
// Per MCP 2025-11-25 spec, servers MAY provide logging capability
|
|
42
|
-
const loggingHandler = options.serverOptions?.capabilities?.logging ? [(0, logging_set_level_request_handler_1.default)(options)] : [];
|
|
43
|
-
return [
|
|
44
|
-
(0, initialize_request_handler_1.default)(options),
|
|
45
|
-
(0, Initialized_notification_hanlder_1.default)(options),
|
|
46
|
-
(0, roots_list_changed_notification_handler_1.default)(options),
|
|
47
|
-
...toolsHandler,
|
|
48
|
-
...resourcesHandler,
|
|
49
|
-
...promptsHandler,
|
|
50
|
-
...completionHandler,
|
|
51
|
-
...loggingHandler,
|
|
52
|
-
];
|
|
53
|
-
}
|
|
54
|
-
// export function hookMcpHandlers(gateway: FrontMcpInterface, handlers: McpHandler[]): McpHandler[] {
|
|
55
|
-
// return handlers;
|
|
56
|
-
// }
|
|
57
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/transport/mcp-handlers/index.ts"],"names":[],"mappings":";;AAgBA,8CAuCC;;AAtDD,sGAAoE;AACpE,kHAAgF;AAChF,sGAAmE;AACnE,oGAAiE;AACjE,8GAA2E;AAC3E,gIAA4F;AAC5F,4GAAyE;AACzE,oGAAkE;AAClE,wGAAsE;AACtE,0GAAuE;AACvE,sGAAmE;AACnE,kGAAgE;AAChE,oHAAgF;AAChF,gIAA4F;AAE5F,SAAgB,iBAAiB,CAAC,OAA0B;IAC1D,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK;QAC7D,CAAC,CAAC,CAAC,IAAA,oCAAuB,EAAC,OAAO,CAAC,EAAE,IAAA,mCAAsB,EAAC,OAAO,CAAC,CAAC;QACrE,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,EAAE,YAAY,EAAE,SAAS;QACrE,CAAC,CAAC;YACE,IAAA,wCAA2B,EAAC,OAAO,CAAC;YACpC,IAAA,iDAAmC,EAAC,OAAO,CAAC;YAC5C,IAAA,uCAA0B,EAAC,OAAO,CAAC;YACnC,IAAA,mCAAuB,EAAC,OAAO,CAAC;YAChC,IAAA,qCAAyB,EAAC,OAAO,CAAC;SACnC;QACH,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,YAAY,EAAE,OAAO;QACjE,CAAC,CAAC,CAAC,IAAA,sCAAyB,EAAC,OAAO,CAAC,EAAE,IAAA,oCAAuB,EAAC,OAAO,CAAC,CAAC;QACxE,CAAC,CAAC,EAAE,CAAC;IAEP,wEAAwE;IACxE,8EAA8E;IAC9E,MAAM,iBAAiB,GACrB,OAAO,CAAC,aAAa,EAAE,YAAY,EAAE,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,YAAY,EAAE,SAAS;QAC5F,CAAC,CAAC,CAAC,IAAA,kCAAsB,EAAC,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC,EAAE,CAAC;IAET,kEAAkE;IAClE,kEAAkE;IAClE,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAA,2CAA6B,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpH,OAAO;QACL,IAAA,oCAAwB,EAAC,OAAO,CAAC;QACjC,IAAA,0CAA8B,EAAC,OAAO,CAAC;QACvC,IAAA,iDAAmC,EAAC,OAAO,CAAC;QAC5C,GAAG,YAAY;QACf,GAAG,gBAAgB;QACnB,GAAG,cAAc;QACjB,GAAG,iBAAiB;QACpB,GAAG,cAAc;KAClB,CAAC;AACJ,CAAC;AAED,sGAAsG;AACtG,qBAAqB;AACrB,IAAI","sourcesContent":["import { McpHandlerOptions } from './mcp-handlers.types';\nimport initializeRequestHandler from './initialize-request.handler';\nimport initializedNotificationHandler from './Initialized-notification.hanlder';\nimport listToolsRequestHandler from './list-tools-request.handler';\nimport callToolRequestHandler from './call-tool-request.handler';\nimport listResourcesRequestHandler from './list-resources-request.handler';\nimport listResourceTemplatesRequestHandler from './list-resource-templates-request.handler';\nimport readResourceRequestHandler from './read-resource-request.handler';\nimport subscribeRequestHandler from './subscribe-request.handler';\nimport unsubscribeRequestHandler from './unsubscribe-request.handler';\nimport listPromptsRequestHandler from './list-prompts-request.handler';\nimport getPromptRequestHandler from './get-prompt-request.handler';\nimport completeRequestHandler from './complete-request.handler';\nimport loggingSetLevelRequestHandler from './logging-set-level-request.handler';\nimport rootsListChangedNotificationHandler from './roots-list-changed-notification.handler';\n\nexport function createMcpHandlers(options: McpHandlerOptions) {\n const toolsHandler = options.serverOptions?.capabilities?.tools\n ? [listToolsRequestHandler(options), callToolRequestHandler(options)]\n : [];\n const resourcesHandler = options.serverOptions?.capabilities?.resources\n ? [\n listResourcesRequestHandler(options),\n listResourceTemplatesRequestHandler(options),\n readResourceRequestHandler(options),\n subscribeRequestHandler(options),\n unsubscribeRequestHandler(options),\n ]\n : [];\n\n const promptsHandler = options.serverOptions?.capabilities?.prompts\n ? [listPromptsRequestHandler(options), getPromptRequestHandler(options)]\n : [];\n\n // Completion handler is available when prompts or resources are enabled\n // Per MCP spec, completion/complete supports both ref/prompt and ref/resource\n const completionHandler =\n options.serverOptions?.capabilities?.prompts || options.serverOptions?.capabilities?.resources\n ? [completeRequestHandler(options)]\n : [];\n\n // Logging handler is available when logging capability is enabled\n // Per MCP 2025-11-25 spec, servers MAY provide logging capability\n const loggingHandler = options.serverOptions?.capabilities?.logging ? [loggingSetLevelRequestHandler(options)] : [];\n\n return [\n initializeRequestHandler(options),\n initializedNotificationHandler(options),\n rootsListChangedNotificationHandler(options),\n ...toolsHandler,\n ...resourcesHandler,\n ...promptsHandler,\n ...completionHandler,\n ...loggingHandler,\n ];\n}\n\n// export function hookMcpHandlers(gateway: FrontMcpInterface, handlers: McpHandler[]): McpHandler[] {\n// return handlers;\n// }\n"]}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = initializeRequestHandler;
|
|
4
|
-
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
5
|
-
const types_js_2 = require("@modelcontextprotocol/sdk/types.js");
|
|
6
|
-
const unsupported_client_version_exception_1 = require("../../exceptions/mcp-exceptions/unsupported-client-version.exception");
|
|
7
|
-
const notification_1 = require("../../notification");
|
|
8
|
-
const session_id_utils_1 = require("../../auth/session/utils/session-id.utils");
|
|
9
|
-
/**
|
|
10
|
-
* Validates that the client's protocol version is a valid date string format.
|
|
11
|
-
* Per MCP spec, older versions should be accepted if supported - version negotiation
|
|
12
|
-
* determines which version to use, not this guard.
|
|
13
|
-
*/
|
|
14
|
-
function guardClientVersion(clientVersion) {
|
|
15
|
-
const parsed = new Date(clientVersion);
|
|
16
|
-
if (isNaN(parsed.getTime())) {
|
|
17
|
-
throw unsupported_client_version_exception_1.UnsupportedClientVersionException.fromVersion(clientVersion);
|
|
18
|
-
}
|
|
19
|
-
// Don't reject older versions - let version negotiation handle it
|
|
20
|
-
}
|
|
21
|
-
function initializeRequestHandler({ serverOptions, scope, }) {
|
|
22
|
-
const logger = scope.logger.child('initialize-handler');
|
|
23
|
-
return {
|
|
24
|
-
requestSchema: types_js_1.InitializeRequestSchema,
|
|
25
|
-
handler: async (request, ctx) => {
|
|
26
|
-
logger.info('initialize: received request', {
|
|
27
|
-
clientName: request.params.clientInfo?.name,
|
|
28
|
-
clientVersion: request.params.clientInfo?.version,
|
|
29
|
-
protocolVersion: request.params.protocolVersion,
|
|
30
|
-
hasCapabilities: !!request.params.capabilities,
|
|
31
|
-
sessionId: ctx.authInfo?.sessionId?.slice(0, 20),
|
|
32
|
-
});
|
|
33
|
-
guardClientVersion(request.params.protocolVersion);
|
|
34
|
-
// Store client capabilities and client info from the initialize request
|
|
35
|
-
// The session ID is available in the auth info from the transport
|
|
36
|
-
const sessionId = ctx.authInfo?.sessionId;
|
|
37
|
-
let detectedPlatform = undefined;
|
|
38
|
-
if (sessionId) {
|
|
39
|
-
// Store client capabilities if provided
|
|
40
|
-
if (request.params.capabilities) {
|
|
41
|
-
// Map MCP client capabilities to our ClientCapabilities interface
|
|
42
|
-
const clientCapabilities = {
|
|
43
|
-
roots: request.params.capabilities.roots,
|
|
44
|
-
sampling: request.params.capabilities.sampling,
|
|
45
|
-
// Include experimental capabilities for MCP Apps extension detection
|
|
46
|
-
experimental: request.params.capabilities.experimental,
|
|
47
|
-
};
|
|
48
|
-
scope.notifications.setClientCapabilities(sessionId, clientCapabilities);
|
|
49
|
-
// Try to detect platform from capabilities first (e.g., MCP Apps extension)
|
|
50
|
-
detectedPlatform = (0, notification_1.detectPlatformFromCapabilities)(clientCapabilities);
|
|
51
|
-
}
|
|
52
|
-
// Store client info (name/version) for platform detection
|
|
53
|
-
// and update the session payload with the detected platform type
|
|
54
|
-
if (request.params.clientInfo) {
|
|
55
|
-
// Try to store in notification service (may fail for HTTP transports without registered server)
|
|
56
|
-
scope.notifications.setClientInfo(sessionId, {
|
|
57
|
-
name: request.params.clientInfo.name,
|
|
58
|
-
version: request.params.clientInfo.version,
|
|
59
|
-
});
|
|
60
|
-
// Detect platform directly from client info (don't rely on setClientInfo return)
|
|
61
|
-
// Use platform detection config from scope if available
|
|
62
|
-
const platformDetectionConfig = scope.metadata.transport?.platformDetection;
|
|
63
|
-
const clientInfoPlatform = (0, notification_1.detectAIPlatform)(request.params.clientInfo, platformDetectionConfig);
|
|
64
|
-
// Prefer capability-based detection (ext-apps) over client info detection
|
|
65
|
-
const finalPlatform = detectedPlatform ?? clientInfoPlatform;
|
|
66
|
-
// Update the session payload with the detected platform type
|
|
67
|
-
// This makes platformType available via ctx.authInfo.sessionIdPayload.platformType
|
|
68
|
-
if (finalPlatform && ctx.authInfo?.sessionIdPayload) {
|
|
69
|
-
ctx.authInfo.sessionIdPayload.platformType = finalPlatform;
|
|
70
|
-
// Persist the platformType to the session cache so subsequent requests can access it
|
|
71
|
-
// This is critical for HTTP transports where sessions are parsed from encrypted headers
|
|
72
|
-
(0, session_id_utils_1.updateSessionPayload)(sessionId, { platformType: finalPlatform });
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
else if (detectedPlatform && ctx.authInfo?.sessionIdPayload) {
|
|
76
|
-
// Update platform even without client info if detected from capabilities
|
|
77
|
-
ctx.authInfo.sessionIdPayload.platformType = detectedPlatform;
|
|
78
|
-
// Persist to session cache
|
|
79
|
-
(0, session_id_utils_1.updateSessionPayload)(sessionId, { platformType: detectedPlatform });
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
// MCP Protocol Version Negotiation (per spec):
|
|
83
|
-
// "If the server supports the requested protocol version, it MUST respond with the same version.
|
|
84
|
-
// Otherwise, the server MUST respond with another protocol version it supports."
|
|
85
|
-
const requestedVersion = request.params.protocolVersion;
|
|
86
|
-
const protocolVersion = types_js_2.SUPPORTED_PROTOCOL_VERSIONS.includes(requestedVersion)
|
|
87
|
-
? requestedVersion
|
|
88
|
-
: types_js_2.LATEST_PROTOCOL_VERSION;
|
|
89
|
-
const result = {
|
|
90
|
-
capabilities: serverOptions.capabilities,
|
|
91
|
-
instructions: serverOptions.instructions,
|
|
92
|
-
serverInfo: {
|
|
93
|
-
name: 'FrontMcpServer',
|
|
94
|
-
version: '0.0.1',
|
|
95
|
-
title: 'FrontMcpServer',
|
|
96
|
-
},
|
|
97
|
-
protocolVersion,
|
|
98
|
-
};
|
|
99
|
-
logger.info('initialize: sending response', {
|
|
100
|
-
capabilities: JSON.stringify(result.capabilities),
|
|
101
|
-
protocolVersion: result.protocolVersion,
|
|
102
|
-
serverName: result.serverInfo.name,
|
|
103
|
-
sessionId: ctx.authInfo?.sessionId?.slice(0, 20),
|
|
104
|
-
});
|
|
105
|
-
return result;
|
|
106
|
-
},
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
//# sourceMappingURL=initialize-request.handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"initialize-request.handler.js","sourceRoot":"","sources":["../../../../src/transport/mcp-handlers/initialize-request.handler.ts"],"names":[],"mappings":"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","sourcesContent":["import { InitializeRequestSchema, InitializeRequest, InitializeResult } from '@modelcontextprotocol/sdk/types.js';\nimport { LATEST_PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS } from '@modelcontextprotocol/sdk/types.js';\nimport { McpHandler, McpHandlerOptions } from './mcp-handlers.types';\nimport { UnsupportedClientVersionException } from '../../exceptions/mcp-exceptions/unsupported-client-version.exception';\nimport type { ClientCapabilities } from '../../notification';\nimport { detectPlatformFromCapabilities, detectAIPlatform } from '../../notification';\nimport { updateSessionPayload } from '../../auth/session/utils/session-id.utils';\n\n/**\n * Validates that the client's protocol version is a valid date string format.\n * Per MCP spec, older versions should be accepted if supported - version negotiation\n * determines which version to use, not this guard.\n */\nfunction guardClientVersion(clientVersion: string): void {\n const parsed = new Date(clientVersion);\n if (isNaN(parsed.getTime())) {\n throw UnsupportedClientVersionException.fromVersion(clientVersion);\n }\n // Don't reject older versions - let version negotiation handle it\n}\nexport default function initializeRequestHandler({\n serverOptions,\n scope,\n}: McpHandlerOptions): McpHandler<InitializeRequest, InitializeResult> {\n const logger = scope.logger.child('initialize-handler');\n\n return {\n requestSchema: InitializeRequestSchema,\n handler: async (request, ctx): Promise<InitializeResult> => {\n logger.info('initialize: received request', {\n clientName: request.params.clientInfo?.name,\n clientVersion: request.params.clientInfo?.version,\n protocolVersion: request.params.protocolVersion,\n hasCapabilities: !!request.params.capabilities,\n sessionId: ctx.authInfo?.sessionId?.slice(0, 20),\n });\n\n guardClientVersion(request.params.protocolVersion);\n\n // Store client capabilities and client info from the initialize request\n // The session ID is available in the auth info from the transport\n const sessionId = ctx.authInfo?.sessionId;\n let detectedPlatform: ReturnType<typeof detectPlatformFromCapabilities> = undefined;\n\n if (sessionId) {\n // Store client capabilities if provided\n if (request.params.capabilities) {\n // Map MCP client capabilities to our ClientCapabilities interface\n const clientCapabilities: ClientCapabilities = {\n roots: request.params.capabilities.roots as ClientCapabilities['roots'],\n sampling: request.params.capabilities.sampling as ClientCapabilities['sampling'],\n // Include experimental capabilities for MCP Apps extension detection\n experimental: request.params.capabilities.experimental as ClientCapabilities['experimental'],\n };\n scope.notifications.setClientCapabilities(sessionId, clientCapabilities);\n\n // Try to detect platform from capabilities first (e.g., MCP Apps extension)\n detectedPlatform = detectPlatformFromCapabilities(clientCapabilities);\n }\n\n // Store client info (name/version) for platform detection\n // and update the session payload with the detected platform type\n if (request.params.clientInfo) {\n // Try to store in notification service (may fail for HTTP transports without registered server)\n scope.notifications.setClientInfo(sessionId, {\n name: request.params.clientInfo.name,\n version: request.params.clientInfo.version,\n });\n\n // Detect platform directly from client info (don't rely on setClientInfo return)\n // Use platform detection config from scope if available\n const platformDetectionConfig = scope.metadata.transport?.platformDetection;\n const clientInfoPlatform = detectAIPlatform(request.params.clientInfo, platformDetectionConfig);\n\n // Prefer capability-based detection (ext-apps) over client info detection\n const finalPlatform = detectedPlatform ?? clientInfoPlatform;\n\n // Update the session payload with the detected platform type\n // This makes platformType available via ctx.authInfo.sessionIdPayload.platformType\n if (finalPlatform && ctx.authInfo?.sessionIdPayload) {\n ctx.authInfo.sessionIdPayload.platformType = finalPlatform;\n\n // Persist the platformType to the session cache so subsequent requests can access it\n // This is critical for HTTP transports where sessions are parsed from encrypted headers\n updateSessionPayload(sessionId, { platformType: finalPlatform });\n }\n } else if (detectedPlatform && ctx.authInfo?.sessionIdPayload) {\n // Update platform even without client info if detected from capabilities\n ctx.authInfo.sessionIdPayload.platformType = detectedPlatform;\n\n // Persist to session cache\n updateSessionPayload(sessionId, { platformType: detectedPlatform });\n }\n }\n\n // MCP Protocol Version Negotiation (per spec):\n // \"If the server supports the requested protocol version, it MUST respond with the same version.\n // Otherwise, the server MUST respond with another protocol version it supports.\"\n const requestedVersion = request.params.protocolVersion;\n const protocolVersion = SUPPORTED_PROTOCOL_VERSIONS.includes(requestedVersion)\n ? requestedVersion\n : LATEST_PROTOCOL_VERSION;\n\n const result: InitializeResult = {\n capabilities: serverOptions.capabilities!,\n instructions: serverOptions.instructions,\n serverInfo: {\n name: 'FrontMcpServer',\n version: '0.0.1',\n title: 'FrontMcpServer',\n },\n protocolVersion,\n };\n\n logger.info('initialize: sending response', {\n capabilities: JSON.stringify(result.capabilities),\n protocolVersion: result.protocolVersion,\n serverName: result.serverInfo.name,\n sessionId: ctx.authInfo?.sessionId?.slice(0, 20),\n });\n\n return result;\n },\n };\n}\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = ListPromptsRequestHandler;
|
|
4
|
-
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
5
|
-
function ListPromptsRequestHandler({ scope }) {
|
|
6
|
-
return {
|
|
7
|
-
requestSchema: types_js_1.ListPromptsRequestSchema,
|
|
8
|
-
handler: (request, ctx) => scope.runFlowForOutput('prompts:list-prompts', { request, ctx }),
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=list-prompts-request.handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-prompts-request.handler.js","sourceRoot":"","sources":["../../../../src/transport/mcp-handlers/list-prompts-request.handler.ts"],"names":[],"mappings":";;AAGA,4CAKC;AARD,iEAAqH;AAGrH,SAAwB,yBAAyB,CAAC,EAAE,KAAK,EAAqB;IAC5E,OAAO;QACL,aAAa,EAAE,mCAAwB;QACvC,OAAO,EAAE,CAAC,OAA2B,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;KACpD,CAAC;AAChE,CAAC","sourcesContent":["import { ListPromptsRequestSchema, ListPromptsRequest, ListPromptsResult } from '@modelcontextprotocol/sdk/types.js';\nimport { McpHandler, McpHandlerOptions } from './mcp-handlers.types';\n\nexport default function ListPromptsRequestHandler({ scope }: McpHandlerOptions) {\n return {\n requestSchema: ListPromptsRequestSchema,\n handler: (request: ListPromptsRequest, ctx) => scope.runFlowForOutput('prompts:list-prompts', { request, ctx }),\n } satisfies McpHandler<ListPromptsRequest, ListPromptsResult>;\n}\n"]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// file: libs/sdk/src/transport/mcp-handlers/list-resource-templates-request.handler.ts
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.default = listResourceTemplatesRequestHandler;
|
|
5
|
-
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
6
|
-
function listResourceTemplatesRequestHandler({ scope }) {
|
|
7
|
-
return {
|
|
8
|
-
requestSchema: types_js_1.ListResourceTemplatesRequestSchema,
|
|
9
|
-
handler: (request, ctx) => scope.runFlowForOutput('resources:list-resource-templates', { request, ctx }),
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=list-resource-templates-request.handler.js.map
|