@frontmcp/sdk 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -18
- package/package.json +20 -5
- package/src/app/app.registry.d.ts +3 -2
- package/src/app/app.registry.js +3 -1
- package/src/app/app.registry.js.map +1 -1
- package/src/app/instances/app.local.instance.js +2 -2
- package/src/app/instances/app.local.instance.js.map +1 -1
- package/src/auth/auth.registry.d.ts +34 -2
- package/src/auth/auth.registry.js +162 -24
- package/src/auth/auth.registry.js.map +1 -1
- package/src/auth/auth.utils.js +8 -9
- package/src/auth/auth.utils.js.map +1 -1
- package/src/auth/authorization/authorization.class.d.ts +125 -0
- package/src/auth/authorization/authorization.class.js +224 -0
- package/src/auth/authorization/authorization.class.js.map +1 -0
- package/src/auth/authorization/authorization.types.d.ts +300 -0
- package/src/auth/authorization/authorization.types.js +79 -0
- package/src/auth/authorization/authorization.types.js.map +1 -0
- package/src/auth/authorization/index.d.ts +5 -0
- package/src/auth/authorization/index.js +19 -0
- package/src/auth/authorization/index.js.map +1 -0
- package/src/auth/authorization/orchestrated.authorization.d.ts +242 -0
- package/src/auth/authorization/orchestrated.authorization.js +306 -0
- package/src/auth/authorization/orchestrated.authorization.js.map +1 -0
- package/src/auth/authorization/public.authorization.d.ts +91 -0
- package/src/auth/authorization/public.authorization.js +132 -0
- package/src/auth/authorization/public.authorization.js.map +1 -0
- package/src/auth/authorization/transparent.authorization.d.ts +130 -0
- package/src/auth/authorization/transparent.authorization.js +147 -0
- package/src/auth/authorization/transparent.authorization.js.map +1 -0
- package/src/auth/consent/consent.types.d.ts +111 -0
- package/src/auth/consent/consent.types.js +119 -0
- package/src/auth/consent/consent.types.js.map +1 -0
- package/src/auth/consent/index.d.ts +1 -0
- package/src/auth/consent/index.js +13 -0
- package/src/auth/consent/index.js.map +1 -0
- package/src/auth/detection/auth-provider-detection.d.ts +84 -0
- package/src/auth/detection/auth-provider-detection.js +230 -0
- package/src/auth/detection/auth-provider-detection.js.map +1 -0
- package/src/auth/detection/index.d.ts +1 -0
- package/src/auth/detection/index.js +15 -0
- package/src/auth/detection/index.js.map +1 -0
- package/src/auth/flows/auth.verify.flow.d.ts +110 -0
- package/src/auth/flows/auth.verify.flow.js +379 -0
- package/src/auth/flows/auth.verify.flow.js.map +1 -0
- package/src/auth/flows/oauth.authorize.flow.d.ts +118 -164
- package/src/auth/flows/oauth.authorize.flow.js +701 -33
- package/src/auth/flows/oauth.authorize.flow.js.map +1 -1
- package/src/auth/flows/oauth.callback.flow.d.ts +117 -0
- package/src/auth/flows/oauth.callback.flow.js +357 -0
- package/src/auth/flows/oauth.callback.flow.js.map +1 -0
- package/src/auth/flows/oauth.register.flow.d.ts +32 -125
- package/src/auth/flows/oauth.token.flow.d.ts +52 -154
- package/src/auth/flows/oauth.token.flow.js +193 -55
- package/src/auth/flows/oauth.token.flow.js.map +1 -1
- package/src/auth/flows/session.verify.flow.d.ts +66 -321
- package/src/auth/flows/session.verify.flow.js +107 -18
- package/src/auth/flows/session.verify.flow.js.map +1 -1
- package/src/auth/flows/well-known.jwks.flow.d.ts +34 -205
- package/src/auth/flows/well-known.jwks.flow.js +15 -8
- package/src/auth/flows/well-known.jwks.flow.js.map +1 -1
- package/src/auth/flows/well-known.oauth-authorization-server.flow.d.ts +48 -223
- package/src/auth/flows/well-known.oauth-authorization-server.flow.js +2 -3
- package/src/auth/flows/well-known.oauth-authorization-server.flow.js.map +1 -1
- package/src/auth/flows/well-known.prm.flow.d.ts +19 -120
- package/src/auth/flows/well-known.prm.flow.js +3 -4
- package/src/auth/flows/well-known.prm.flow.js.map +1 -1
- package/src/auth/instances/instance.local-primary-auth.d.ts +91 -4
- package/src/auth/instances/instance.local-primary-auth.js +236 -6
- package/src/auth/instances/instance.local-primary-auth.js.map +1 -1
- package/src/auth/instances/instance.remote-primary-auth.d.ts +4 -3
- package/src/auth/instances/instance.remote-primary-auth.js +2 -2
- package/src/auth/instances/instance.remote-primary-auth.js.map +1 -1
- package/src/auth/session/authorization-vault.d.ts +611 -0
- package/src/auth/session/authorization-vault.js +817 -0
- package/src/auth/session/authorization-vault.js.map +1 -0
- package/src/auth/session/authorization.store.d.ts +301 -0
- package/src/auth/session/authorization.store.js +323 -0
- package/src/auth/session/authorization.store.js.map +1 -0
- package/src/auth/session/encrypted-authorization-vault.d.ts +181 -0
- package/src/auth/session/encrypted-authorization-vault.js +493 -0
- package/src/auth/session/encrypted-authorization-vault.js.map +1 -0
- package/src/auth/session/index.d.ts +4 -4
- package/src/auth/session/index.js +11 -7
- package/src/auth/session/index.js.map +1 -1
- package/src/auth/session/session.schema.d.ts +1 -1
- package/src/auth/session/session.service.d.ts +1 -1
- package/src/auth/session/transport-session.manager.d.ts +101 -0
- package/src/auth/session/transport-session.manager.js +300 -0
- package/src/auth/session/transport-session.manager.js.map +1 -0
- package/src/auth/session/transport-session.types.d.ts +457 -0
- package/src/auth/session/transport-session.types.js +110 -0
- package/src/auth/session/transport-session.types.js.map +1 -0
- package/src/auth/session/utils/session-id.utils.d.ts +14 -2
- package/src/auth/session/utils/session-id.utils.js +68 -19
- package/src/auth/session/utils/session-id.utils.js.map +1 -1
- package/src/auth/session/vault-encryption.d.ts +189 -0
- package/src/auth/session/vault-encryption.js +263 -0
- package/src/auth/session/vault-encryption.js.map +1 -0
- package/src/auth/ui/base-layout.d.ts +188 -0
- package/src/auth/ui/base-layout.js +292 -0
- package/src/auth/ui/base-layout.js.map +1 -0
- package/src/auth/ui/htmx-templates.d.ts +135 -0
- package/src/auth/ui/htmx-templates.js +433 -0
- package/src/auth/ui/htmx-templates.js.map +1 -0
- package/src/auth/ui/index.d.ts +11 -0
- package/src/auth/ui/index.js +35 -0
- package/src/auth/ui/index.js.map +1 -0
- package/src/auth/utils/audience.validator.d.ts +129 -0
- package/src/auth/utils/audience.validator.js +196 -0
- package/src/auth/utils/audience.validator.js.map +1 -0
- package/src/auth/utils/index.d.ts +2 -0
- package/src/auth/utils/index.js +7 -0
- package/src/auth/utils/index.js.map +1 -0
- package/src/auth/utils/www-authenticate.utils.d.ts +97 -0
- package/src/auth/utils/www-authenticate.utils.js +183 -0
- package/src/auth/utils/www-authenticate.utils.js.map +1 -0
- package/src/common/common.schema.d.ts +2 -16
- package/src/common/constants.d.ts +3 -0
- package/src/common/constants.js +6 -1
- package/src/common/constants.js.map +1 -1
- package/src/common/decorators/decorator-utils.d.ts +131 -0
- package/src/common/decorators/decorator-utils.js +195 -0
- package/src/common/decorators/decorator-utils.js.map +1 -0
- package/src/common/decorators/front-mcp.decorator.js +3 -2
- package/src/common/decorators/front-mcp.decorator.js.map +1 -1
- package/src/common/decorators/hook.decorator.d.ts +58 -2
- package/src/common/decorators/hook.decorator.js +127 -17
- package/src/common/decorators/hook.decorator.js.map +1 -1
- package/src/common/decorators/plugin.decorator.d.ts +1 -1
- package/src/common/decorators/plugin.decorator.js +11 -10
- package/src/common/decorators/plugin.decorator.js.map +1 -1
- package/src/common/decorators/resource.decorator.d.ts +32 -3
- package/src/common/decorators/resource.decorator.js +46 -4
- package/src/common/decorators/resource.decorator.js.map +1 -1
- package/src/common/decorators/tool.decorator.d.ts +54 -5
- package/src/common/decorators/tool.decorator.js.map +1 -1
- package/src/common/dynamic/dynamic.plugin.d.ts +22 -11
- package/src/common/dynamic/dynamic.plugin.js +7 -1
- package/src/common/dynamic/dynamic.plugin.js.map +1 -1
- package/src/common/entries/prompt.entry.d.ts +46 -2
- package/src/common/entries/prompt.entry.js +10 -0
- package/src/common/entries/prompt.entry.js.map +1 -1
- package/src/common/entries/resource.entry.d.ts +69 -6
- package/src/common/entries/resource.entry.js +27 -3
- package/src/common/entries/resource.entry.js.map +1 -1
- package/src/common/entries/scope.entry.d.ts +5 -1
- package/src/common/entries/scope.entry.js +3 -3
- package/src/common/entries/scope.entry.js.map +1 -1
- package/src/common/flow/flow.utils.d.ts +56 -0
- package/src/common/flow/flow.utils.js +96 -0
- package/src/common/flow/flow.utils.js.map +1 -0
- package/src/common/index.d.ts +2 -2
- package/src/common/index.js +2 -2
- package/src/common/index.js.map +1 -1
- package/src/common/interfaces/execution-context.interface.d.ts +59 -0
- package/src/common/interfaces/execution-context.interface.js +81 -0
- package/src/common/interfaces/execution-context.interface.js.map +1 -0
- package/src/common/interfaces/flow.interface.d.ts +1 -1
- package/src/common/interfaces/flow.interface.js.map +1 -1
- package/src/common/interfaces/index.d.ts +1 -0
- package/src/common/interfaces/index.js +1 -0
- package/src/common/interfaces/index.js.map +1 -1
- package/src/common/interfaces/internal/primary-auth-provider.interface.d.ts +17 -2
- package/src/common/interfaces/internal/primary-auth-provider.interface.js +52 -4
- package/src/common/interfaces/internal/primary-auth-provider.interface.js.map +1 -1
- package/src/common/interfaces/internal/registry.interface.d.ts +16 -2
- package/src/common/interfaces/internal/registry.interface.js.map +1 -1
- package/src/common/interfaces/plugin.interface.js.map +1 -1
- package/src/common/interfaces/prompt.interface.d.ts +53 -4
- package/src/common/interfaces/prompt.interface.js +78 -0
- package/src/common/interfaces/prompt.interface.js.map +1 -1
- package/src/common/interfaces/resource.interface.d.ts +47 -17
- package/src/common/interfaces/resource.interface.js +53 -0
- package/src/common/interfaces/resource.interface.js.map +1 -1
- package/src/common/interfaces/tool.interface.d.ts +39 -22
- package/src/common/interfaces/tool.interface.js +61 -34
- package/src/common/interfaces/tool.interface.js.map +1 -1
- package/src/common/metadata/adapter.metadata.d.ts +1 -9
- package/src/common/metadata/app.metadata.d.ts +425 -730
- package/src/common/metadata/auth-provider.metadata.d.ts +2 -12
- package/src/common/metadata/flow.metadata.d.ts +10 -25
- package/src/common/metadata/front-mcp.metadata.d.ts +602 -1023
- package/src/common/metadata/front-mcp.metadata.js +6 -4
- package/src/common/metadata/front-mcp.metadata.js.map +1 -1
- package/src/common/metadata/hook.metadata.d.ts +1 -1
- package/src/common/metadata/hook.metadata.js.map +1 -1
- package/src/common/metadata/index.d.ts +1 -0
- package/src/common/metadata/index.js +1 -0
- package/src/common/metadata/index.js.map +1 -1
- package/src/common/metadata/logger.metadata.d.ts +1 -9
- package/src/common/metadata/plugin.metadata.d.ts +8 -30
- package/src/common/metadata/prompt.metadata.d.ts +4 -161
- package/src/common/metadata/provider.metadata.d.ts +2 -12
- package/src/common/metadata/resource.metadata.d.ts +6 -98
- package/src/common/metadata/resource.metadata.js +15 -6
- package/src/common/metadata/resource.metadata.js.map +1 -1
- package/src/common/metadata/tool-ui.metadata.d.ts +10 -0
- package/src/common/metadata/tool-ui.metadata.js +12 -0
- package/src/common/metadata/tool-ui.metadata.js.map +1 -0
- package/src/common/metadata/tool.metadata.d.ts +78 -199
- package/src/common/metadata/tool.metadata.js +11 -14
- package/src/common/metadata/tool.metadata.js.map +1 -1
- package/src/common/providers/base-config.provider.d.ts +84 -0
- package/src/common/providers/base-config.provider.js +128 -0
- package/src/common/providers/base-config.provider.js.map +1 -0
- package/src/common/records/plugin.record.d.ts +5 -6
- package/src/common/records/plugin.record.js.map +1 -1
- package/src/common/records/prompt.record.js.map +1 -1
- package/src/common/records/resource.record.d.ts +17 -1
- package/src/common/records/resource.record.js +12 -6
- package/src/common/records/resource.record.js.map +1 -1
- package/src/common/records/tool.record.js.map +1 -1
- package/src/common/schemas/annotated-class.schema.d.ts +9 -9
- package/src/common/schemas/annotated-class.schema.js +92 -27
- package/src/common/schemas/annotated-class.schema.js.map +1 -1
- package/src/common/schemas/http-input.schema.d.ts +6 -30
- package/src/common/schemas/http-output.schema.d.ts +326 -1630
- package/src/common/schemas/http-output.schema.js +39 -1
- package/src/common/schemas/http-output.schema.js.map +1 -1
- package/src/common/tokens/front-mcp.tokens.js +4 -1
- package/src/common/tokens/front-mcp.tokens.js.map +1 -1
- package/src/common/tokens/resource.tokens.d.ts +2 -0
- package/src/common/tokens/resource.tokens.js +4 -1
- package/src/common/tokens/resource.tokens.js.map +1 -1
- package/src/common/tokens/tool.tokens.d.ts +2 -0
- package/src/common/tokens/tool.tokens.js +2 -0
- package/src/common/tokens/tool.tokens.js.map +1 -1
- package/src/common/types/auth/jwt.types.d.ts +5 -31
- package/src/common/types/auth/session.types.d.ts +97 -192
- package/src/common/types/auth/session.types.js +24 -11
- package/src/common/types/auth/session.types.js.map +1 -1
- package/src/common/types/options/auth.options.d.ts +1013 -490
- package/src/common/types/options/auth.options.js +554 -36
- package/src/common/types/options/auth.options.js.map +1 -1
- package/src/common/types/options/http.options.d.ts +1 -9
- package/src/common/types/options/logging.options.d.ts +7 -13
- package/src/common/types/options/logging.options.js +4 -0
- package/src/common/types/options/logging.options.js.map +1 -1
- package/src/common/types/options/server-info.options.d.ts +3 -31
- package/src/common/types/options/session.options.d.ts +90 -10
- package/src/common/types/options/session.options.js +26 -3
- package/src/common/types/options/session.options.js.map +1 -1
- package/src/common/utils/decide-request-intent.utils.d.ts +8 -46
- package/src/common/utils/decide-request-intent.utils.js +88 -23
- package/src/common/utils/decide-request-intent.utils.js.map +1 -1
- package/src/completion/flows/complete.flow.d.ts +74 -0
- package/src/completion/flows/complete.flow.js +199 -0
- package/src/completion/flows/complete.flow.js.map +1 -0
- package/src/errors/authorization-required.error.d.ts +189 -0
- package/src/errors/authorization-required.error.js +274 -0
- package/src/errors/authorization-required.error.js.map +1 -0
- package/src/errors/index.d.ts +2 -1
- package/src/errors/index.js +17 -1
- package/src/errors/index.js.map +1 -1
- package/src/errors/mcp.error.d.ts +101 -1
- package/src/errors/mcp.error.js +147 -2
- package/src/errors/mcp.error.js.map +1 -1
- package/src/flows/flow.instance.js +4 -3
- package/src/flows/flow.instance.js.map +1 -1
- package/src/flows/flow.registry.js.map +1 -1
- package/src/flows/flow.stages.js +14 -11
- package/src/flows/flow.stages.js.map +1 -1
- package/src/front-mcp/front-mcp.providers.d.ts +464 -102
- package/src/front-mcp/front-mcp.providers.js +3 -5
- package/src/front-mcp/front-mcp.providers.js.map +1 -1
- package/src/hooks/hook.instance.d.ts +1 -1
- package/src/hooks/hook.instance.js +5 -2
- package/src/hooks/hook.instance.js.map +1 -1
- package/src/hooks/hook.registry.js +7 -5
- package/src/hooks/hook.registry.js.map +1 -1
- package/src/index.d.ts +28 -9
- package/src/index.js +5 -1
- package/src/index.js.map +1 -1
- package/src/logger/instances/instance.logger.js +3 -2
- package/src/logger/instances/instance.logger.js.map +1 -1
- package/src/logger/logger.registry.js +7 -2
- package/src/logger/logger.registry.js.map +1 -1
- package/src/logging/flows/set-level.flow.d.ts +62 -0
- package/src/logging/flows/set-level.flow.js +108 -0
- package/src/logging/flows/set-level.flow.js.map +1 -0
- package/src/mcp-apps/csp.d.ts +111 -0
- package/src/mcp-apps/csp.js +267 -0
- package/src/mcp-apps/csp.js.map +1 -0
- package/src/mcp-apps/index.d.ts +23 -0
- package/src/mcp-apps/index.js +91 -0
- package/src/mcp-apps/index.js.map +1 -0
- package/src/mcp-apps/schemas.d.ts +403 -0
- package/src/mcp-apps/schemas.js +345 -0
- package/src/mcp-apps/schemas.js.map +1 -0
- package/src/mcp-apps/template.d.ts +94 -0
- package/src/mcp-apps/template.js +419 -0
- package/src/mcp-apps/template.js.map +1 -0
- package/src/mcp-apps/types.d.ts +323 -0
- package/src/mcp-apps/types.js +59 -0
- package/src/mcp-apps/types.js.map +1 -0
- package/src/notification/index.d.ts +1 -0
- package/src/notification/index.js +13 -0
- package/src/notification/index.js.map +1 -0
- package/src/notification/notification.service.d.ts +378 -0
- package/src/notification/notification.service.js +727 -0
- package/src/notification/notification.service.js.map +1 -0
- package/src/plugin/plugin.registry.js +12 -9
- package/src/plugin/plugin.registry.js.map +1 -1
- package/src/prompt/flows/get-prompt.flow.d.ts +153 -0
- package/src/prompt/flows/get-prompt.flow.js +214 -0
- package/src/prompt/flows/get-prompt.flow.js.map +1 -0
- package/src/prompt/flows/prompts-list.flow.d.ts +67 -0
- package/src/prompt/flows/prompts-list.flow.js +176 -0
- package/src/prompt/flows/prompts-list.flow.js.map +1 -0
- package/src/prompt/index.d.ts +7 -0
- package/src/prompt/index.js +17 -0
- package/src/prompt/index.js.map +1 -0
- package/src/prompt/prompt.events.d.ts +17 -0
- package/src/prompt/prompt.events.js +25 -0
- package/src/prompt/prompt.events.js.map +1 -0
- package/src/prompt/prompt.instance.d.ts +30 -0
- package/src/prompt/prompt.instance.js +120 -0
- package/src/prompt/prompt.instance.js.map +1 -0
- package/src/prompt/prompt.registry.d.ts +79 -12
- package/src/prompt/prompt.registry.js +360 -15
- package/src/prompt/prompt.registry.js.map +1 -1
- package/src/prompt/prompt.types.d.ts +26 -0
- package/src/prompt/prompt.types.js +11 -0
- package/src/prompt/prompt.types.js.map +1 -0
- package/src/prompt/prompt.utils.d.ts +26 -0
- package/src/prompt/prompt.utils.js +136 -0
- package/src/prompt/prompt.utils.js.map +1 -0
- package/src/provider/provider.registry.d.ts +12 -5
- package/src/provider/provider.registry.js +30 -138
- package/src/provider/provider.registry.js.map +1 -1
- package/src/regsitry/registry.base.d.ts +1 -1
- package/src/regsitry/registry.base.js.map +1 -1
- package/src/resource/flows/read-resource.flow.d.ts +91 -0
- package/src/resource/flows/read-resource.flow.js +270 -0
- package/src/resource/flows/read-resource.flow.js.map +1 -0
- package/src/resource/flows/resource-templates-list.flow.d.ts +64 -0
- package/src/resource/flows/resource-templates-list.flow.js +191 -0
- package/src/resource/flows/resource-templates-list.flow.js.map +1 -0
- package/src/resource/flows/resources-list.flow.d.ts +64 -0
- package/src/resource/flows/resources-list.flow.js +196 -0
- package/src/resource/flows/resources-list.flow.js.map +1 -0
- package/src/resource/flows/subscribe-resource.flow.d.ts +45 -0
- package/src/resource/flows/subscribe-resource.flow.js +123 -0
- package/src/resource/flows/subscribe-resource.flow.js.map +1 -0
- package/src/resource/flows/unsubscribe-resource.flow.d.ts +44 -0
- package/src/resource/flows/unsubscribe-resource.flow.js +107 -0
- package/src/resource/flows/unsubscribe-resource.flow.js.map +1 -0
- package/src/resource/index.d.ts +8 -0
- package/src/resource/index.js +20 -0
- package/src/resource/index.js.map +1 -0
- package/src/resource/resource.events.d.ts +24 -0
- package/src/resource/resource.events.js +17 -0
- package/src/resource/resource.events.js.map +1 -0
- package/src/resource/resource.instance.d.ts +35 -0
- package/src/resource/resource.instance.js +163 -0
- package/src/resource/resource.instance.js.map +1 -0
- package/src/resource/resource.registry.d.ts +106 -12
- package/src/resource/resource.registry.js +449 -13
- package/src/resource/resource.registry.js.map +1 -1
- package/src/resource/resource.types.d.ts +35 -0
- package/src/resource/resource.types.js +11 -0
- package/src/resource/resource.types.js.map +1 -0
- package/src/resource/resource.utils.d.ts +30 -0
- package/src/resource/resource.utils.js +151 -0
- package/src/resource/resource.utils.js.map +1 -0
- package/src/scope/flows/http.request.flow.d.ts +48 -330
- package/src/scope/flows/http.request.flow.js +306 -78
- package/src/scope/flows/http.request.flow.js.map +1 -1
- package/src/scope/scope.instance.d.ts +12 -0
- package/src/scope/scope.instance.js +145 -15
- package/src/scope/scope.instance.js.map +1 -1
- package/src/tool/flows/call-tool.flow.d.ts +64 -1110
- package/src/tool/flows/call-tool.flow.js +303 -15
- package/src/tool/flows/call-tool.flow.js.map +1 -1
- package/src/tool/flows/tools-list.flow.d.ts +32 -473
- package/src/tool/flows/tools-list.flow.js +111 -10
- package/src/tool/flows/tools-list.flow.js.map +1 -1
- package/src/tool/tool.events.d.ts +8 -1
- package/src/tool/tool.events.js.map +1 -1
- package/src/tool/tool.instance.d.ts +3 -1
- package/src/tool/tool.instance.js +17 -3
- package/src/tool/tool.instance.js.map +1 -1
- package/src/tool/tool.registry.d.ts +7 -1
- package/src/tool/tool.registry.js +26 -10
- package/src/tool/tool.registry.js.map +1 -1
- package/src/tool/tool.types.d.ts +4 -4
- package/src/tool/tool.types.js.map +1 -1
- package/src/tool/tool.utils.d.ts +3 -12
- package/src/tool/tool.utils.js +39 -193
- package/src/tool/tool.utils.js.map +1 -1
- package/src/tool/ui/index.d.ts +22 -0
- package/src/tool/ui/index.js +63 -0
- package/src/tool/ui/index.js.map +1 -0
- package/src/tool/ui/platform-adapters.d.ts +10 -0
- package/src/tool/ui/platform-adapters.js +18 -0
- package/src/tool/ui/platform-adapters.js.map +1 -0
- package/src/tool/ui/template-helpers.d.ts +46 -0
- package/src/tool/ui/template-helpers.js +112 -0
- package/src/tool/ui/template-helpers.js.map +1 -0
- package/src/tool/ui/ui-resource-template.d.ts +34 -0
- package/src/tool/ui/ui-resource-template.js +64 -0
- package/src/tool/ui/ui-resource-template.js.map +1 -0
- package/src/tool/ui/ui-resource.handler.d.ts +74 -0
- package/src/tool/ui/ui-resource.handler.js +129 -0
- package/src/tool/ui/ui-resource.handler.js.map +1 -0
- package/src/transport/adapters/transport.local.adapter.d.ts +2 -2
- package/src/transport/adapters/transport.local.adapter.js +28 -7
- package/src/transport/adapters/transport.local.adapter.js.map +1 -1
- package/src/transport/adapters/transport.sse.adapter.d.ts +2 -2
- package/src/transport/adapters/transport.sse.adapter.js +4 -3
- package/src/transport/adapters/transport.sse.adapter.js.map +1 -1
- package/src/transport/adapters/transport.streamable-http.adapter.d.ts +10 -3
- package/src/transport/adapters/transport.streamable-http.adapter.js +54 -8
- package/src/transport/adapters/transport.streamable-http.adapter.js.map +1 -1
- package/src/transport/flows/handle.sse.flow.d.ts +29 -63
- package/src/transport/flows/handle.sse.flow.js +78 -10
- package/src/transport/flows/handle.sse.flow.js.map +1 -1
- package/src/transport/flows/handle.stateless-http.flow.d.ts +29 -0
- package/src/transport/flows/handle.stateless-http.flow.js +102 -0
- package/src/transport/flows/handle.stateless-http.flow.js.map +1 -0
- package/src/transport/flows/handle.streamable-http.flow.d.ts +32 -64
- package/src/transport/flows/handle.streamable-http.flow.js +158 -26
- package/src/transport/flows/handle.streamable-http.flow.js.map +1 -1
- package/src/transport/legacy/legacy.sse.tranporter.d.ts +9 -0
- package/src/transport/legacy/legacy.sse.tranporter.js +17 -2
- package/src/transport/legacy/legacy.sse.tranporter.js.map +1 -1
- package/src/transport/mcp-handlers/call-tool-request.handler.js +27 -1
- package/src/transport/mcp-handlers/call-tool-request.handler.js.map +1 -1
- package/src/transport/mcp-handlers/complete-request.handler.d.ts +69 -0
- package/src/transport/mcp-handlers/complete-request.handler.js +11 -0
- package/src/transport/mcp-handlers/complete-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/get-prompt-request.handler.d.ts +87 -0
- package/src/transport/mcp-handlers/get-prompt-request.handler.js +11 -0
- package/src/transport/mcp-handlers/get-prompt-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/index.d.ts +517 -208
- package/src/transport/mcp-handlers/index.js +39 -2
- package/src/transport/mcp-handlers/index.js.map +1 -1
- package/src/transport/mcp-handlers/initialize-request.handler.d.ts +1 -1
- package/src/transport/mcp-handlers/initialize-request.handler.js +73 -7
- package/src/transport/mcp-handlers/initialize-request.handler.js.map +1 -1
- package/src/transport/mcp-handlers/list-prompts-request.handler.d.ts +54 -0
- package/src/transport/mcp-handlers/list-prompts-request.handler.js +11 -0
- package/src/transport/mcp-handlers/list-prompts-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/list-resource-templates-request.handler.d.ts +51 -0
- package/src/transport/mcp-handlers/list-resource-templates-request.handler.js +12 -0
- package/src/transport/mcp-handlers/list-resource-templates-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/list-resources-request.handler.d.ts +51 -0
- package/src/transport/mcp-handlers/list-resources-request.handler.js +12 -0
- package/src/transport/mcp-handlers/list-resources-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/list-tools-request.handler.d.ts +19 -146
- package/src/transport/mcp-handlers/logging-set-level-request.handler.d.ts +46 -0
- package/src/transport/mcp-handlers/logging-set-level-request.handler.js +34 -0
- package/src/transport/mcp-handlers/logging-set-level-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/mcp-handlers.types.d.ts +3 -7
- package/src/transport/mcp-handlers/mcp-handlers.types.js.map +1 -1
- package/src/transport/mcp-handlers/read-resource-request.handler.d.ts +46 -0
- package/src/transport/mcp-handlers/read-resource-request.handler.js +12 -0
- package/src/transport/mcp-handlers/read-resource-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/roots-list-changed-notification.handler.d.ts +11 -0
- package/src/transport/mcp-handlers/roots-list-changed-notification.handler.js +26 -0
- package/src/transport/mcp-handlers/roots-list-changed-notification.handler.js.map +1 -0
- package/src/transport/mcp-handlers/subscribe-request.handler.d.ts +37 -0
- package/src/transport/mcp-handlers/subscribe-request.handler.js +34 -0
- package/src/transport/mcp-handlers/subscribe-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/unsubscribe-request.handler.d.ts +37 -0
- package/src/transport/mcp-handlers/unsubscribe-request.handler.js +34 -0
- package/src/transport/mcp-handlers/unsubscribe-request.handler.js.map +1 -0
- package/src/transport/transport.local.js +7 -2
- package/src/transport/transport.local.js.map +1 -1
- package/src/transport/transport.registry.d.ts +30 -0
- package/src/transport/transport.registry.js +84 -1
- package/src/transport/transport.registry.js.map +1 -1
- package/src/transport/transport.types.d.ts +3 -3
- package/src/transport/transport.types.js.map +1 -1
- package/src/utils/content.utils.d.ts +48 -0
- package/src/utils/content.utils.js +194 -0
- package/src/utils/content.utils.js.map +1 -0
- package/src/utils/index.d.ts +8 -0
- package/src/utils/index.js +55 -0
- package/src/utils/index.js.map +1 -0
- package/src/utils/lineage.utils.d.ts +40 -0
- package/src/utils/lineage.utils.js +82 -0
- package/src/utils/lineage.utils.js.map +1 -0
- package/src/utils/naming.utils.d.ts +46 -0
- package/src/utils/naming.utils.js +136 -0
- package/src/utils/naming.utils.js.map +1 -0
- package/src/utils/types.utils.d.ts +2 -2
- package/src/utils/types.utils.js.map +1 -1
- package/src/utils/uri-template.utils.d.ts +57 -0
- package/src/utils/uri-template.utils.js +113 -0
- package/src/utils/uri-template.utils.js.map +1 -0
- package/src/utils/uri-validation.utils.d.ts +40 -0
- package/src/utils/uri-validation.utils.js +76 -0
- package/src/utils/uri-validation.utils.js.map +1 -0
- package/src/__test-utils__/fixtures/hook.fixtures.d.ts +0 -46
- package/src/__test-utils__/fixtures/hook.fixtures.js +0 -114
- package/src/__test-utils__/fixtures/hook.fixtures.js.map +0 -1
- package/src/__test-utils__/fixtures/index.d.ts +0 -7
- package/src/__test-utils__/fixtures/index.js +0 -11
- package/src/__test-utils__/fixtures/index.js.map +0 -1
- package/src/__test-utils__/fixtures/plugin.fixtures.d.ts +0 -46
- package/src/__test-utils__/fixtures/plugin.fixtures.js +0 -127
- package/src/__test-utils__/fixtures/plugin.fixtures.js.map +0 -1
- package/src/__test-utils__/fixtures/provider.fixtures.d.ts +0 -69
- package/src/__test-utils__/fixtures/provider.fixtures.js +0 -131
- package/src/__test-utils__/fixtures/provider.fixtures.js.map +0 -1
- package/src/__test-utils__/fixtures/scope.fixtures.d.ts +0 -14
- package/src/__test-utils__/fixtures/scope.fixtures.js +0 -59
- package/src/__test-utils__/fixtures/scope.fixtures.js.map +0 -1
- package/src/__test-utils__/fixtures/tool.fixtures.d.ts +0 -36
- package/src/__test-utils__/fixtures/tool.fixtures.js +0 -91
- package/src/__test-utils__/fixtures/tool.fixtures.js.map +0 -1
- package/src/__test-utils__/helpers/assertion.helpers.d.ts +0 -45
- package/src/__test-utils__/helpers/assertion.helpers.js +0 -153
- package/src/__test-utils__/helpers/assertion.helpers.js.map +0 -1
- package/src/__test-utils__/helpers/async.helpers.d.ts +0 -48
- package/src/__test-utils__/helpers/async.helpers.js +0 -112
- package/src/__test-utils__/helpers/async.helpers.js.map +0 -1
- package/src/__test-utils__/helpers/index.d.ts +0 -6
- package/src/__test-utils__/helpers/index.js +0 -10
- package/src/__test-utils__/helpers/index.js.map +0 -1
- package/src/__test-utils__/helpers/setup.helpers.d.ts +0 -54
- package/src/__test-utils__/helpers/setup.helpers.js +0 -106
- package/src/__test-utils__/helpers/setup.helpers.js.map +0 -1
- package/src/__test-utils__/index.d.ts +0 -9
- package/src/__test-utils__/index.js +0 -14
- package/src/__test-utils__/index.js.map +0 -1
- package/src/__test-utils__/mocks/flow-instance.mock.d.ts +0 -50
- package/src/__test-utils__/mocks/flow-instance.mock.js +0 -72
- package/src/__test-utils__/mocks/flow-instance.mock.js.map +0 -1
- package/src/__test-utils__/mocks/hook-registry.mock.d.ts +0 -25
- package/src/__test-utils__/mocks/hook-registry.mock.js +0 -65
- package/src/__test-utils__/mocks/hook-registry.mock.js.map +0 -1
- package/src/__test-utils__/mocks/index.d.ts +0 -8
- package/src/__test-utils__/mocks/index.js +0 -12
- package/src/__test-utils__/mocks/index.js.map +0 -1
- package/src/__test-utils__/mocks/plugin-registry.mock.d.ts +0 -43
- package/src/__test-utils__/mocks/plugin-registry.mock.js +0 -70
- package/src/__test-utils__/mocks/plugin-registry.mock.js.map +0 -1
- package/src/__test-utils__/mocks/provider-registry.mock.d.ts +0 -39
- package/src/__test-utils__/mocks/provider-registry.mock.js +0 -72
- package/src/__test-utils__/mocks/provider-registry.mock.js.map +0 -1
- package/src/__test-utils__/mocks/tool-registry.mock.d.ts +0 -43
- package/src/__test-utils__/mocks/tool-registry.mock.js +0 -79
- package/src/__test-utils__/mocks/tool-registry.mock.js.map +0 -1
- package/src/auth/path.utils.d.ts +0 -20
- package/src/auth/path.utils.js +0 -71
- package/src/auth/path.utils.js.map +0 -1
- package/src/common/decorators-old/async-with.decorator.d.ts +0 -10
- package/src/common/decorators-old/async-with.decorator.js +0 -24
- package/src/common/decorators-old/async-with.decorator.js.map +0 -1
- package/src/common/decorators-old/auth-hook.decorator.d.ts +0 -14
- package/src/common/decorators-old/auth-hook.decorator.js +0 -27
- package/src/common/decorators-old/auth-hook.decorator.js.map +0 -1
- package/src/common/decorators-old/session-hook.decorator.d.ts +0 -14
- package/src/common/decorators-old/session-hook.decorator.js +0 -27
- package/src/common/decorators-old/session-hook.decorator.js.map +0 -1
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Transport protocol types supported by MCP
|
|
4
|
+
* These are the actual transport protocols for sessions (excludes 'delete-session' action)
|
|
5
|
+
*/
|
|
6
|
+
export type TransportProtocol = 'legacy-sse' | 'sse' | 'streamable-http' | 'stateful-http' | 'stateless-http';
|
|
7
|
+
/**
|
|
8
|
+
* Session storage mode for distributed systems
|
|
9
|
+
*/
|
|
10
|
+
export type SessionStorageMode = 'stateless' | 'stateful';
|
|
11
|
+
/**
|
|
12
|
+
* TransportSession represents a single client connection.
|
|
13
|
+
* Multiple sessions can share the same authorization.
|
|
14
|
+
* Each session is bound to a specific transport protocol.
|
|
15
|
+
*/
|
|
16
|
+
export interface TransportSession {
|
|
17
|
+
/** Unique session ID (encrypted JWT or UUID) */
|
|
18
|
+
id: string;
|
|
19
|
+
/** Reference to the authorization this session uses */
|
|
20
|
+
authorizationId: string;
|
|
21
|
+
/** Transport protocol for this session */
|
|
22
|
+
protocol: TransportProtocol;
|
|
23
|
+
/** Session creation timestamp (epoch ms) */
|
|
24
|
+
createdAt: number;
|
|
25
|
+
/** Session expiration (epoch ms, independent of auth expiration) */
|
|
26
|
+
expiresAt?: number;
|
|
27
|
+
/** Node ID for distributed systems */
|
|
28
|
+
nodeId: string;
|
|
29
|
+
/** Client fingerprint for rate limiting/tracking */
|
|
30
|
+
clientFingerprint?: string;
|
|
31
|
+
/** Transport-specific state */
|
|
32
|
+
transportState?: TransportState;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Transport-specific state that varies by protocol
|
|
36
|
+
*/
|
|
37
|
+
export type TransportState = SseTransportState | StreamableHttpTransportState | StatefulHttpTransportState | StatelessHttpTransportState | LegacySseTransportState;
|
|
38
|
+
/**
|
|
39
|
+
* SSE (Server-Sent Events) transport state
|
|
40
|
+
*/
|
|
41
|
+
export interface SseTransportState {
|
|
42
|
+
type: 'sse';
|
|
43
|
+
/** Last event ID for reconnection (per SSE spec) */
|
|
44
|
+
lastEventId?: string;
|
|
45
|
+
/** Connection keep-alive timestamp */
|
|
46
|
+
lastPing?: number;
|
|
47
|
+
/** Connection state */
|
|
48
|
+
connectionState?: 'connecting' | 'open' | 'closed';
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Streamable HTTP transport state
|
|
52
|
+
*/
|
|
53
|
+
export interface StreamableHttpTransportState {
|
|
54
|
+
type: 'streamable-http';
|
|
55
|
+
/** Request sequence number */
|
|
56
|
+
requestSeq: number;
|
|
57
|
+
/** Active stream ID if streaming */
|
|
58
|
+
activeStreamId?: string;
|
|
59
|
+
/** Pending request IDs */
|
|
60
|
+
pendingRequests?: string[];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Stateful HTTP transport state
|
|
64
|
+
*/
|
|
65
|
+
export interface StatefulHttpTransportState {
|
|
66
|
+
type: 'stateful-http';
|
|
67
|
+
/** Request sequence number */
|
|
68
|
+
requestSeq: number;
|
|
69
|
+
/** Pending responses awaiting delivery */
|
|
70
|
+
pendingResponses?: string[];
|
|
71
|
+
/** Last activity timestamp */
|
|
72
|
+
lastActivity?: number;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Stateless HTTP transport state
|
|
76
|
+
*/
|
|
77
|
+
export interface StatelessHttpTransportState {
|
|
78
|
+
type: 'stateless-http';
|
|
79
|
+
/** Request count for rate limiting */
|
|
80
|
+
requestCount: number;
|
|
81
|
+
/** Window start for rate limiting */
|
|
82
|
+
windowStart?: number;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Legacy SSE transport state (for backwards compatibility)
|
|
86
|
+
*/
|
|
87
|
+
export interface LegacySseTransportState {
|
|
88
|
+
type: 'legacy-sse';
|
|
89
|
+
/** Message endpoint path */
|
|
90
|
+
messagePath: string;
|
|
91
|
+
/** Last event ID */
|
|
92
|
+
lastEventId?: string;
|
|
93
|
+
/** Connection state */
|
|
94
|
+
connectionState?: 'connecting' | 'open' | 'closed';
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Session JWT payload - encodes both auth ref and transport context
|
|
98
|
+
* This is the structure encrypted in the mcp-session-id header
|
|
99
|
+
*/
|
|
100
|
+
export interface SessionJwtPayload {
|
|
101
|
+
/** Session ID (UUID) */
|
|
102
|
+
sid: string;
|
|
103
|
+
/** Authorization ID (token signature fingerprint) */
|
|
104
|
+
aid: string;
|
|
105
|
+
/** Transport protocol */
|
|
106
|
+
proto: TransportProtocol;
|
|
107
|
+
/** Node ID (for distributed systems) */
|
|
108
|
+
nid: string;
|
|
109
|
+
/** Issued at (epoch seconds) */
|
|
110
|
+
iat: number;
|
|
111
|
+
/** Expiration (epoch seconds) */
|
|
112
|
+
exp?: number;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Extended session JWT payload for stateless mode
|
|
116
|
+
* Includes encrypted state and tokens
|
|
117
|
+
*/
|
|
118
|
+
export interface StatelessSessionJwtPayload extends SessionJwtPayload {
|
|
119
|
+
/** Encrypted transport state (AES-256-GCM) */
|
|
120
|
+
state?: string;
|
|
121
|
+
/** Encrypted provider tokens (AES-256-GCM, for orchestrated mode) */
|
|
122
|
+
tokens?: string;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Stored session record (for stateful mode in Redis/memory)
|
|
126
|
+
*/
|
|
127
|
+
export interface StoredSession {
|
|
128
|
+
/** The transport session data */
|
|
129
|
+
session: TransportSession;
|
|
130
|
+
/** Authorization ID reference */
|
|
131
|
+
authorizationId: string;
|
|
132
|
+
/** Encrypted provider tokens (for orchestrated mode) */
|
|
133
|
+
tokens?: Record<string, EncryptedBlob>;
|
|
134
|
+
/** Creation timestamp */
|
|
135
|
+
createdAt: number;
|
|
136
|
+
/** Last accessed timestamp */
|
|
137
|
+
lastAccessedAt: number;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Encrypted blob structure (AES-256-GCM)
|
|
141
|
+
*/
|
|
142
|
+
export interface EncryptedBlob {
|
|
143
|
+
/** Algorithm identifier */
|
|
144
|
+
alg: 'A256GCM';
|
|
145
|
+
/** Key ID (for rotation) */
|
|
146
|
+
kid?: string;
|
|
147
|
+
/** Initialization vector (base64url) */
|
|
148
|
+
iv: string;
|
|
149
|
+
/** Authentication tag (base64url) */
|
|
150
|
+
tag: string;
|
|
151
|
+
/** Ciphertext (base64url) */
|
|
152
|
+
data: string;
|
|
153
|
+
/** Expiration hint (epoch seconds) */
|
|
154
|
+
exp?: number;
|
|
155
|
+
/** Additional metadata */
|
|
156
|
+
meta?: Record<string, unknown>;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Session store interface for stateful sessions
|
|
160
|
+
*/
|
|
161
|
+
export interface SessionStore {
|
|
162
|
+
/**
|
|
163
|
+
* Get a stored session by ID
|
|
164
|
+
*/
|
|
165
|
+
get(sessionId: string): Promise<StoredSession | null>;
|
|
166
|
+
/**
|
|
167
|
+
* Store a session with optional TTL
|
|
168
|
+
*/
|
|
169
|
+
set(sessionId: string, session: StoredSession, ttlMs?: number): Promise<void>;
|
|
170
|
+
/**
|
|
171
|
+
* Delete a session
|
|
172
|
+
*/
|
|
173
|
+
delete(sessionId: string): Promise<void>;
|
|
174
|
+
/**
|
|
175
|
+
* Check if a session exists
|
|
176
|
+
*/
|
|
177
|
+
exists(sessionId: string): Promise<boolean>;
|
|
178
|
+
/**
|
|
179
|
+
* Allocate a new session ID
|
|
180
|
+
*/
|
|
181
|
+
allocId(): string;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Session storage configuration
|
|
185
|
+
*/
|
|
186
|
+
export type SessionStorageConfig = {
|
|
187
|
+
mode: 'stateless';
|
|
188
|
+
} | {
|
|
189
|
+
mode: 'stateful';
|
|
190
|
+
store: 'memory';
|
|
191
|
+
} | {
|
|
192
|
+
mode: 'stateful';
|
|
193
|
+
store: 'redis';
|
|
194
|
+
config: RedisConfig;
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* Redis configuration
|
|
198
|
+
*/
|
|
199
|
+
export interface RedisConfig {
|
|
200
|
+
host: string;
|
|
201
|
+
port?: number;
|
|
202
|
+
password?: string;
|
|
203
|
+
db?: number;
|
|
204
|
+
tls?: boolean;
|
|
205
|
+
keyPrefix?: string;
|
|
206
|
+
}
|
|
207
|
+
export declare const transportProtocolSchema: z.ZodEnum<{
|
|
208
|
+
"legacy-sse": "legacy-sse";
|
|
209
|
+
sse: "sse";
|
|
210
|
+
"streamable-http": "streamable-http";
|
|
211
|
+
"stateful-http": "stateful-http";
|
|
212
|
+
"stateless-http": "stateless-http";
|
|
213
|
+
}>;
|
|
214
|
+
export declare const sseTransportStateSchema: z.ZodObject<{
|
|
215
|
+
type: z.ZodLiteral<"sse">;
|
|
216
|
+
lastEventId: z.ZodOptional<z.ZodString>;
|
|
217
|
+
lastPing: z.ZodOptional<z.ZodNumber>;
|
|
218
|
+
connectionState: z.ZodOptional<z.ZodEnum<{
|
|
219
|
+
connecting: "connecting";
|
|
220
|
+
open: "open";
|
|
221
|
+
closed: "closed";
|
|
222
|
+
}>>;
|
|
223
|
+
}, z.core.$strip>;
|
|
224
|
+
export declare const streamableHttpTransportStateSchema: z.ZodObject<{
|
|
225
|
+
type: z.ZodLiteral<"streamable-http">;
|
|
226
|
+
requestSeq: z.ZodNumber;
|
|
227
|
+
activeStreamId: z.ZodOptional<z.ZodString>;
|
|
228
|
+
pendingRequests: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
229
|
+
}, z.core.$strip>;
|
|
230
|
+
export declare const statefulHttpTransportStateSchema: z.ZodObject<{
|
|
231
|
+
type: z.ZodLiteral<"stateful-http">;
|
|
232
|
+
requestSeq: z.ZodNumber;
|
|
233
|
+
pendingResponses: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
234
|
+
lastActivity: z.ZodOptional<z.ZodNumber>;
|
|
235
|
+
}, z.core.$strip>;
|
|
236
|
+
export declare const statelessHttpTransportStateSchema: z.ZodObject<{
|
|
237
|
+
type: z.ZodLiteral<"stateless-http">;
|
|
238
|
+
requestCount: z.ZodNumber;
|
|
239
|
+
windowStart: z.ZodOptional<z.ZodNumber>;
|
|
240
|
+
}, z.core.$strip>;
|
|
241
|
+
export declare const legacySseTransportStateSchema: z.ZodObject<{
|
|
242
|
+
type: z.ZodLiteral<"legacy-sse">;
|
|
243
|
+
messagePath: z.ZodString;
|
|
244
|
+
lastEventId: z.ZodOptional<z.ZodString>;
|
|
245
|
+
connectionState: z.ZodOptional<z.ZodEnum<{
|
|
246
|
+
connecting: "connecting";
|
|
247
|
+
open: "open";
|
|
248
|
+
closed: "closed";
|
|
249
|
+
}>>;
|
|
250
|
+
}, z.core.$strip>;
|
|
251
|
+
export declare const transportStateSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
252
|
+
type: z.ZodLiteral<"sse">;
|
|
253
|
+
lastEventId: z.ZodOptional<z.ZodString>;
|
|
254
|
+
lastPing: z.ZodOptional<z.ZodNumber>;
|
|
255
|
+
connectionState: z.ZodOptional<z.ZodEnum<{
|
|
256
|
+
connecting: "connecting";
|
|
257
|
+
open: "open";
|
|
258
|
+
closed: "closed";
|
|
259
|
+
}>>;
|
|
260
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
261
|
+
type: z.ZodLiteral<"streamable-http">;
|
|
262
|
+
requestSeq: z.ZodNumber;
|
|
263
|
+
activeStreamId: z.ZodOptional<z.ZodString>;
|
|
264
|
+
pendingRequests: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
265
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
266
|
+
type: z.ZodLiteral<"stateful-http">;
|
|
267
|
+
requestSeq: z.ZodNumber;
|
|
268
|
+
pendingResponses: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
269
|
+
lastActivity: z.ZodOptional<z.ZodNumber>;
|
|
270
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
271
|
+
type: z.ZodLiteral<"stateless-http">;
|
|
272
|
+
requestCount: z.ZodNumber;
|
|
273
|
+
windowStart: z.ZodOptional<z.ZodNumber>;
|
|
274
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
275
|
+
type: z.ZodLiteral<"legacy-sse">;
|
|
276
|
+
messagePath: z.ZodString;
|
|
277
|
+
lastEventId: z.ZodOptional<z.ZodString>;
|
|
278
|
+
connectionState: z.ZodOptional<z.ZodEnum<{
|
|
279
|
+
connecting: "connecting";
|
|
280
|
+
open: "open";
|
|
281
|
+
closed: "closed";
|
|
282
|
+
}>>;
|
|
283
|
+
}, z.core.$strip>], "type">;
|
|
284
|
+
export declare const transportSessionSchema: z.ZodObject<{
|
|
285
|
+
id: z.ZodString;
|
|
286
|
+
authorizationId: z.ZodString;
|
|
287
|
+
protocol: z.ZodEnum<{
|
|
288
|
+
"legacy-sse": "legacy-sse";
|
|
289
|
+
sse: "sse";
|
|
290
|
+
"streamable-http": "streamable-http";
|
|
291
|
+
"stateful-http": "stateful-http";
|
|
292
|
+
"stateless-http": "stateless-http";
|
|
293
|
+
}>;
|
|
294
|
+
createdAt: z.ZodNumber;
|
|
295
|
+
expiresAt: z.ZodOptional<z.ZodNumber>;
|
|
296
|
+
nodeId: z.ZodString;
|
|
297
|
+
clientFingerprint: z.ZodOptional<z.ZodString>;
|
|
298
|
+
transportState: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
299
|
+
type: z.ZodLiteral<"sse">;
|
|
300
|
+
lastEventId: z.ZodOptional<z.ZodString>;
|
|
301
|
+
lastPing: z.ZodOptional<z.ZodNumber>;
|
|
302
|
+
connectionState: z.ZodOptional<z.ZodEnum<{
|
|
303
|
+
connecting: "connecting";
|
|
304
|
+
open: "open";
|
|
305
|
+
closed: "closed";
|
|
306
|
+
}>>;
|
|
307
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
308
|
+
type: z.ZodLiteral<"streamable-http">;
|
|
309
|
+
requestSeq: z.ZodNumber;
|
|
310
|
+
activeStreamId: z.ZodOptional<z.ZodString>;
|
|
311
|
+
pendingRequests: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
312
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
313
|
+
type: z.ZodLiteral<"stateful-http">;
|
|
314
|
+
requestSeq: z.ZodNumber;
|
|
315
|
+
pendingResponses: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
316
|
+
lastActivity: z.ZodOptional<z.ZodNumber>;
|
|
317
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
318
|
+
type: z.ZodLiteral<"stateless-http">;
|
|
319
|
+
requestCount: z.ZodNumber;
|
|
320
|
+
windowStart: z.ZodOptional<z.ZodNumber>;
|
|
321
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
322
|
+
type: z.ZodLiteral<"legacy-sse">;
|
|
323
|
+
messagePath: z.ZodString;
|
|
324
|
+
lastEventId: z.ZodOptional<z.ZodString>;
|
|
325
|
+
connectionState: z.ZodOptional<z.ZodEnum<{
|
|
326
|
+
connecting: "connecting";
|
|
327
|
+
open: "open";
|
|
328
|
+
closed: "closed";
|
|
329
|
+
}>>;
|
|
330
|
+
}, z.core.$strip>], "type">>;
|
|
331
|
+
}, z.core.$strip>;
|
|
332
|
+
export declare const sessionJwtPayloadSchema: z.ZodObject<{
|
|
333
|
+
sid: z.ZodString;
|
|
334
|
+
aid: z.ZodString;
|
|
335
|
+
proto: z.ZodEnum<{
|
|
336
|
+
"legacy-sse": "legacy-sse";
|
|
337
|
+
sse: "sse";
|
|
338
|
+
"streamable-http": "streamable-http";
|
|
339
|
+
"stateful-http": "stateful-http";
|
|
340
|
+
"stateless-http": "stateless-http";
|
|
341
|
+
}>;
|
|
342
|
+
nid: z.ZodString;
|
|
343
|
+
iat: z.ZodNumber;
|
|
344
|
+
exp: z.ZodOptional<z.ZodNumber>;
|
|
345
|
+
}, z.core.$strip>;
|
|
346
|
+
export declare const statelessSessionJwtPayloadSchema: z.ZodObject<{
|
|
347
|
+
sid: z.ZodString;
|
|
348
|
+
aid: z.ZodString;
|
|
349
|
+
proto: z.ZodEnum<{
|
|
350
|
+
"legacy-sse": "legacy-sse";
|
|
351
|
+
sse: "sse";
|
|
352
|
+
"streamable-http": "streamable-http";
|
|
353
|
+
"stateful-http": "stateful-http";
|
|
354
|
+
"stateless-http": "stateless-http";
|
|
355
|
+
}>;
|
|
356
|
+
nid: z.ZodString;
|
|
357
|
+
iat: z.ZodNumber;
|
|
358
|
+
exp: z.ZodOptional<z.ZodNumber>;
|
|
359
|
+
state: z.ZodOptional<z.ZodString>;
|
|
360
|
+
tokens: z.ZodOptional<z.ZodString>;
|
|
361
|
+
}, z.core.$strip>;
|
|
362
|
+
export declare const encryptedBlobSchema: z.ZodObject<{
|
|
363
|
+
alg: z.ZodLiteral<"A256GCM">;
|
|
364
|
+
kid: z.ZodOptional<z.ZodString>;
|
|
365
|
+
iv: z.ZodString;
|
|
366
|
+
tag: z.ZodString;
|
|
367
|
+
data: z.ZodString;
|
|
368
|
+
exp: z.ZodOptional<z.ZodNumber>;
|
|
369
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
370
|
+
}, z.core.$strip>;
|
|
371
|
+
export declare const storedSessionSchema: z.ZodObject<{
|
|
372
|
+
session: z.ZodObject<{
|
|
373
|
+
id: z.ZodString;
|
|
374
|
+
authorizationId: z.ZodString;
|
|
375
|
+
protocol: z.ZodEnum<{
|
|
376
|
+
"legacy-sse": "legacy-sse";
|
|
377
|
+
sse: "sse";
|
|
378
|
+
"streamable-http": "streamable-http";
|
|
379
|
+
"stateful-http": "stateful-http";
|
|
380
|
+
"stateless-http": "stateless-http";
|
|
381
|
+
}>;
|
|
382
|
+
createdAt: z.ZodNumber;
|
|
383
|
+
expiresAt: z.ZodOptional<z.ZodNumber>;
|
|
384
|
+
nodeId: z.ZodString;
|
|
385
|
+
clientFingerprint: z.ZodOptional<z.ZodString>;
|
|
386
|
+
transportState: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
387
|
+
type: z.ZodLiteral<"sse">;
|
|
388
|
+
lastEventId: z.ZodOptional<z.ZodString>;
|
|
389
|
+
lastPing: z.ZodOptional<z.ZodNumber>;
|
|
390
|
+
connectionState: z.ZodOptional<z.ZodEnum<{
|
|
391
|
+
connecting: "connecting";
|
|
392
|
+
open: "open";
|
|
393
|
+
closed: "closed";
|
|
394
|
+
}>>;
|
|
395
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
396
|
+
type: z.ZodLiteral<"streamable-http">;
|
|
397
|
+
requestSeq: z.ZodNumber;
|
|
398
|
+
activeStreamId: z.ZodOptional<z.ZodString>;
|
|
399
|
+
pendingRequests: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
400
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
401
|
+
type: z.ZodLiteral<"stateful-http">;
|
|
402
|
+
requestSeq: z.ZodNumber;
|
|
403
|
+
pendingResponses: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
404
|
+
lastActivity: z.ZodOptional<z.ZodNumber>;
|
|
405
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
406
|
+
type: z.ZodLiteral<"stateless-http">;
|
|
407
|
+
requestCount: z.ZodNumber;
|
|
408
|
+
windowStart: z.ZodOptional<z.ZodNumber>;
|
|
409
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
410
|
+
type: z.ZodLiteral<"legacy-sse">;
|
|
411
|
+
messagePath: z.ZodString;
|
|
412
|
+
lastEventId: z.ZodOptional<z.ZodString>;
|
|
413
|
+
connectionState: z.ZodOptional<z.ZodEnum<{
|
|
414
|
+
connecting: "connecting";
|
|
415
|
+
open: "open";
|
|
416
|
+
closed: "closed";
|
|
417
|
+
}>>;
|
|
418
|
+
}, z.core.$strip>], "type">>;
|
|
419
|
+
}, z.core.$strip>;
|
|
420
|
+
authorizationId: z.ZodString;
|
|
421
|
+
tokens: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
422
|
+
alg: z.ZodLiteral<"A256GCM">;
|
|
423
|
+
kid: z.ZodOptional<z.ZodString>;
|
|
424
|
+
iv: z.ZodString;
|
|
425
|
+
tag: z.ZodString;
|
|
426
|
+
data: z.ZodString;
|
|
427
|
+
exp: z.ZodOptional<z.ZodNumber>;
|
|
428
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
429
|
+
}, z.core.$strip>>>;
|
|
430
|
+
createdAt: z.ZodNumber;
|
|
431
|
+
lastAccessedAt: z.ZodNumber;
|
|
432
|
+
}, z.core.$strip>;
|
|
433
|
+
export declare const redisConfigSchema: z.ZodObject<{
|
|
434
|
+
host: z.ZodString;
|
|
435
|
+
port: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
436
|
+
password: z.ZodOptional<z.ZodString>;
|
|
437
|
+
db: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
438
|
+
tls: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
439
|
+
keyPrefix: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
440
|
+
}, z.core.$strip>;
|
|
441
|
+
export declare const sessionStorageConfigSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
442
|
+
mode: z.ZodLiteral<"stateless">;
|
|
443
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
444
|
+
mode: z.ZodLiteral<"stateful">;
|
|
445
|
+
store: z.ZodLiteral<"memory">;
|
|
446
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
447
|
+
mode: z.ZodLiteral<"stateful">;
|
|
448
|
+
store: z.ZodLiteral<"redis">;
|
|
449
|
+
config: z.ZodObject<{
|
|
450
|
+
host: z.ZodString;
|
|
451
|
+
port: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
452
|
+
password: z.ZodOptional<z.ZodString>;
|
|
453
|
+
db: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
454
|
+
tls: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
455
|
+
keyPrefix: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
456
|
+
}, z.core.$strip>;
|
|
457
|
+
}, z.core.$strip>]>;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// auth/session/transport-session.types.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.sessionStorageConfigSchema = exports.redisConfigSchema = exports.storedSessionSchema = exports.encryptedBlobSchema = exports.statelessSessionJwtPayloadSchema = exports.sessionJwtPayloadSchema = exports.transportSessionSchema = exports.transportStateSchema = exports.legacySseTransportStateSchema = exports.statelessHttpTransportStateSchema = exports.statefulHttpTransportStateSchema = exports.streamableHttpTransportStateSchema = exports.sseTransportStateSchema = exports.transportProtocolSchema = void 0;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
// ============================================
|
|
7
|
+
// Zod Schemas
|
|
8
|
+
// ============================================
|
|
9
|
+
exports.transportProtocolSchema = zod_1.z.enum([
|
|
10
|
+
'legacy-sse',
|
|
11
|
+
'sse',
|
|
12
|
+
'streamable-http',
|
|
13
|
+
'stateful-http',
|
|
14
|
+
'stateless-http',
|
|
15
|
+
]);
|
|
16
|
+
exports.sseTransportStateSchema = zod_1.z.object({
|
|
17
|
+
type: zod_1.z.literal('sse'),
|
|
18
|
+
lastEventId: zod_1.z.string().optional(),
|
|
19
|
+
lastPing: zod_1.z.number().optional(),
|
|
20
|
+
connectionState: zod_1.z.enum(['connecting', 'open', 'closed']).optional(),
|
|
21
|
+
});
|
|
22
|
+
exports.streamableHttpTransportStateSchema = zod_1.z.object({
|
|
23
|
+
type: zod_1.z.literal('streamable-http'),
|
|
24
|
+
requestSeq: zod_1.z.number(),
|
|
25
|
+
activeStreamId: zod_1.z.string().optional(),
|
|
26
|
+
pendingRequests: zod_1.z.array(zod_1.z.string()).optional(),
|
|
27
|
+
});
|
|
28
|
+
exports.statefulHttpTransportStateSchema = zod_1.z.object({
|
|
29
|
+
type: zod_1.z.literal('stateful-http'),
|
|
30
|
+
requestSeq: zod_1.z.number(),
|
|
31
|
+
pendingResponses: zod_1.z.array(zod_1.z.string()).optional(),
|
|
32
|
+
lastActivity: zod_1.z.number().optional(),
|
|
33
|
+
});
|
|
34
|
+
exports.statelessHttpTransportStateSchema = zod_1.z.object({
|
|
35
|
+
type: zod_1.z.literal('stateless-http'),
|
|
36
|
+
requestCount: zod_1.z.number(),
|
|
37
|
+
windowStart: zod_1.z.number().optional(),
|
|
38
|
+
});
|
|
39
|
+
exports.legacySseTransportStateSchema = zod_1.z.object({
|
|
40
|
+
type: zod_1.z.literal('legacy-sse'),
|
|
41
|
+
messagePath: zod_1.z.string(),
|
|
42
|
+
lastEventId: zod_1.z.string().optional(),
|
|
43
|
+
connectionState: zod_1.z.enum(['connecting', 'open', 'closed']).optional(),
|
|
44
|
+
});
|
|
45
|
+
exports.transportStateSchema = zod_1.z.discriminatedUnion('type', [
|
|
46
|
+
exports.sseTransportStateSchema,
|
|
47
|
+
exports.streamableHttpTransportStateSchema,
|
|
48
|
+
exports.statefulHttpTransportStateSchema,
|
|
49
|
+
exports.statelessHttpTransportStateSchema,
|
|
50
|
+
exports.legacySseTransportStateSchema,
|
|
51
|
+
]);
|
|
52
|
+
exports.transportSessionSchema = zod_1.z.object({
|
|
53
|
+
id: zod_1.z.string(),
|
|
54
|
+
authorizationId: zod_1.z.string(),
|
|
55
|
+
protocol: exports.transportProtocolSchema,
|
|
56
|
+
createdAt: zod_1.z.number(),
|
|
57
|
+
expiresAt: zod_1.z.number().optional(),
|
|
58
|
+
nodeId: zod_1.z.string(),
|
|
59
|
+
clientFingerprint: zod_1.z.string().optional(),
|
|
60
|
+
transportState: exports.transportStateSchema.optional(),
|
|
61
|
+
});
|
|
62
|
+
exports.sessionJwtPayloadSchema = zod_1.z.object({
|
|
63
|
+
sid: zod_1.z.string(),
|
|
64
|
+
aid: zod_1.z.string(),
|
|
65
|
+
proto: exports.transportProtocolSchema,
|
|
66
|
+
nid: zod_1.z.string(),
|
|
67
|
+
iat: zod_1.z.number(),
|
|
68
|
+
exp: zod_1.z.number().optional(),
|
|
69
|
+
});
|
|
70
|
+
exports.statelessSessionJwtPayloadSchema = exports.sessionJwtPayloadSchema.extend({
|
|
71
|
+
state: zod_1.z.string().optional(),
|
|
72
|
+
tokens: zod_1.z.string().optional(),
|
|
73
|
+
});
|
|
74
|
+
exports.encryptedBlobSchema = zod_1.z.object({
|
|
75
|
+
alg: zod_1.z.literal('A256GCM'),
|
|
76
|
+
kid: zod_1.z.string().optional(),
|
|
77
|
+
iv: zod_1.z.string(),
|
|
78
|
+
tag: zod_1.z.string(),
|
|
79
|
+
data: zod_1.z.string(),
|
|
80
|
+
exp: zod_1.z.number().optional(),
|
|
81
|
+
meta: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
|
|
82
|
+
});
|
|
83
|
+
exports.storedSessionSchema = zod_1.z.object({
|
|
84
|
+
session: exports.transportSessionSchema,
|
|
85
|
+
authorizationId: zod_1.z.string(),
|
|
86
|
+
tokens: zod_1.z.record(zod_1.z.string(), exports.encryptedBlobSchema).optional(),
|
|
87
|
+
createdAt: zod_1.z.number(),
|
|
88
|
+
lastAccessedAt: zod_1.z.number(),
|
|
89
|
+
});
|
|
90
|
+
exports.redisConfigSchema = zod_1.z.object({
|
|
91
|
+
host: zod_1.z.string(),
|
|
92
|
+
port: zod_1.z.number().optional().default(6379),
|
|
93
|
+
password: zod_1.z.string().optional(),
|
|
94
|
+
db: zod_1.z.number().optional().default(0),
|
|
95
|
+
tls: zod_1.z.boolean().optional().default(false),
|
|
96
|
+
keyPrefix: zod_1.z.string().optional().default('mcp:session:'),
|
|
97
|
+
});
|
|
98
|
+
// Stateful storage options (discriminated by store type)
|
|
99
|
+
const statefulStorageSchema = zod_1.z.discriminatedUnion('store', [
|
|
100
|
+
zod_1.z.object({ store: zod_1.z.literal('memory') }),
|
|
101
|
+
zod_1.z.object({ store: zod_1.z.literal('redis'), config: exports.redisConfigSchema }),
|
|
102
|
+
]);
|
|
103
|
+
// Session storage config using union instead of discriminatedUnion
|
|
104
|
+
// to avoid duplicate mode values
|
|
105
|
+
exports.sessionStorageConfigSchema = zod_1.z.union([
|
|
106
|
+
zod_1.z.object({ mode: zod_1.z.literal('stateless') }),
|
|
107
|
+
zod_1.z.object({ mode: zod_1.z.literal('stateful') }).merge(statefulStorageSchema.options[0]),
|
|
108
|
+
zod_1.z.object({ mode: zod_1.z.literal('stateful') }).merge(statefulStorageSchema.options[1]),
|
|
109
|
+
]);
|
|
110
|
+
//# sourceMappingURL=transport-session.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-session.types.js","sourceRoot":"","sources":["../../../../src/auth/session/transport-session.types.ts"],"names":[],"mappings":"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","sourcesContent":["// auth/session/transport-session.types.ts\n\nimport { z } from 'zod';\n\n/**\n * Transport protocol types supported by MCP\n * These are the actual transport protocols for sessions (excludes 'delete-session' action)\n */\nexport type TransportProtocol = 'legacy-sse' | 'sse' | 'streamable-http' | 'stateful-http' | 'stateless-http';\n\n/**\n * Session storage mode for distributed systems\n */\nexport type SessionStorageMode = 'stateless' | 'stateful';\n\n/**\n * TransportSession represents a single client connection.\n * Multiple sessions can share the same authorization.\n * Each session is bound to a specific transport protocol.\n */\nexport interface TransportSession {\n /** Unique session ID (encrypted JWT or UUID) */\n id: string;\n\n /** Reference to the authorization this session uses */\n authorizationId: string;\n\n /** Transport protocol for this session */\n protocol: TransportProtocol;\n\n /** Session creation timestamp (epoch ms) */\n createdAt: number;\n\n /** Session expiration (epoch ms, independent of auth expiration) */\n expiresAt?: number;\n\n /** Node ID for distributed systems */\n nodeId: string;\n\n /** Client fingerprint for rate limiting/tracking */\n clientFingerprint?: string;\n\n /** Transport-specific state */\n transportState?: TransportState;\n}\n\n/**\n * Transport-specific state that varies by protocol\n */\nexport type TransportState =\n | SseTransportState\n | StreamableHttpTransportState\n | StatefulHttpTransportState\n | StatelessHttpTransportState\n | LegacySseTransportState;\n\n/**\n * SSE (Server-Sent Events) transport state\n */\nexport interface SseTransportState {\n type: 'sse';\n /** Last event ID for reconnection (per SSE spec) */\n lastEventId?: string;\n /** Connection keep-alive timestamp */\n lastPing?: number;\n /** Connection state */\n connectionState?: 'connecting' | 'open' | 'closed';\n}\n\n/**\n * Streamable HTTP transport state\n */\nexport interface StreamableHttpTransportState {\n type: 'streamable-http';\n /** Request sequence number */\n requestSeq: number;\n /** Active stream ID if streaming */\n activeStreamId?: string;\n /** Pending request IDs */\n pendingRequests?: string[];\n}\n\n/**\n * Stateful HTTP transport state\n */\nexport interface StatefulHttpTransportState {\n type: 'stateful-http';\n /** Request sequence number */\n requestSeq: number;\n /** Pending responses awaiting delivery */\n pendingResponses?: string[];\n /** Last activity timestamp */\n lastActivity?: number;\n}\n\n/**\n * Stateless HTTP transport state\n */\nexport interface StatelessHttpTransportState {\n type: 'stateless-http';\n /** Request count for rate limiting */\n requestCount: number;\n /** Window start for rate limiting */\n windowStart?: number;\n}\n\n/**\n * Legacy SSE transport state (for backwards compatibility)\n */\nexport interface LegacySseTransportState {\n type: 'legacy-sse';\n /** Message endpoint path */\n messagePath: string;\n /** Last event ID */\n lastEventId?: string;\n /** Connection state */\n connectionState?: 'connecting' | 'open' | 'closed';\n}\n\n/**\n * Session JWT payload - encodes both auth ref and transport context\n * This is the structure encrypted in the mcp-session-id header\n */\nexport interface SessionJwtPayload {\n /** Session ID (UUID) */\n sid: string;\n /** Authorization ID (token signature fingerprint) */\n aid: string;\n /** Transport protocol */\n proto: TransportProtocol;\n /** Node ID (for distributed systems) */\n nid: string;\n /** Issued at (epoch seconds) */\n iat: number;\n /** Expiration (epoch seconds) */\n exp?: number;\n}\n\n/**\n * Extended session JWT payload for stateless mode\n * Includes encrypted state and tokens\n */\nexport interface StatelessSessionJwtPayload extends SessionJwtPayload {\n /** Encrypted transport state (AES-256-GCM) */\n state?: string;\n /** Encrypted provider tokens (AES-256-GCM, for orchestrated mode) */\n tokens?: string;\n}\n\n/**\n * Stored session record (for stateful mode in Redis/memory)\n */\nexport interface StoredSession {\n /** The transport session data */\n session: TransportSession;\n /** Authorization ID reference */\n authorizationId: string;\n /** Encrypted provider tokens (for orchestrated mode) */\n tokens?: Record<string, EncryptedBlob>;\n /** Creation timestamp */\n createdAt: number;\n /** Last accessed timestamp */\n lastAccessedAt: number;\n}\n\n/**\n * Encrypted blob structure (AES-256-GCM)\n */\nexport interface EncryptedBlob {\n /** Algorithm identifier */\n alg: 'A256GCM';\n /** Key ID (for rotation) */\n kid?: string;\n /** Initialization vector (base64url) */\n iv: string;\n /** Authentication tag (base64url) */\n tag: string;\n /** Ciphertext (base64url) */\n data: string;\n /** Expiration hint (epoch seconds) */\n exp?: number;\n /** Additional metadata */\n meta?: Record<string, unknown>;\n}\n\n/**\n * Session store interface for stateful sessions\n */\nexport interface SessionStore {\n /**\n * Get a stored session by ID\n */\n get(sessionId: string): Promise<StoredSession | null>;\n\n /**\n * Store a session with optional TTL\n */\n set(sessionId: string, session: StoredSession, ttlMs?: number): Promise<void>;\n\n /**\n * Delete a session\n */\n delete(sessionId: string): Promise<void>;\n\n /**\n * Check if a session exists\n */\n exists(sessionId: string): Promise<boolean>;\n\n /**\n * Allocate a new session ID\n */\n allocId(): string;\n}\n\n/**\n * Session storage configuration\n */\nexport type SessionStorageConfig =\n | { mode: 'stateless' }\n | { mode: 'stateful'; store: 'memory' }\n | { mode: 'stateful'; store: 'redis'; config: RedisConfig };\n\n/**\n * Redis configuration\n */\nexport interface RedisConfig {\n host: string;\n port?: number;\n password?: string;\n db?: number;\n tls?: boolean;\n keyPrefix?: string;\n}\n\n// ============================================\n// Zod Schemas\n// ============================================\n\nexport const transportProtocolSchema = z.enum([\n 'legacy-sse',\n 'sse',\n 'streamable-http',\n 'stateful-http',\n 'stateless-http',\n]);\n\nexport const sseTransportStateSchema = z.object({\n type: z.literal('sse'),\n lastEventId: z.string().optional(),\n lastPing: z.number().optional(),\n connectionState: z.enum(['connecting', 'open', 'closed']).optional(),\n});\n\nexport const streamableHttpTransportStateSchema = z.object({\n type: z.literal('streamable-http'),\n requestSeq: z.number(),\n activeStreamId: z.string().optional(),\n pendingRequests: z.array(z.string()).optional(),\n});\n\nexport const statefulHttpTransportStateSchema = z.object({\n type: z.literal('stateful-http'),\n requestSeq: z.number(),\n pendingResponses: z.array(z.string()).optional(),\n lastActivity: z.number().optional(),\n});\n\nexport const statelessHttpTransportStateSchema = z.object({\n type: z.literal('stateless-http'),\n requestCount: z.number(),\n windowStart: z.number().optional(),\n});\n\nexport const legacySseTransportStateSchema = z.object({\n type: z.literal('legacy-sse'),\n messagePath: z.string(),\n lastEventId: z.string().optional(),\n connectionState: z.enum(['connecting', 'open', 'closed']).optional(),\n});\n\nexport const transportStateSchema = z.discriminatedUnion('type', [\n sseTransportStateSchema,\n streamableHttpTransportStateSchema,\n statefulHttpTransportStateSchema,\n statelessHttpTransportStateSchema,\n legacySseTransportStateSchema,\n]);\n\nexport const transportSessionSchema = z.object({\n id: z.string(),\n authorizationId: z.string(),\n protocol: transportProtocolSchema,\n createdAt: z.number(),\n expiresAt: z.number().optional(),\n nodeId: z.string(),\n clientFingerprint: z.string().optional(),\n transportState: transportStateSchema.optional(),\n});\n\nexport const sessionJwtPayloadSchema = z.object({\n sid: z.string(),\n aid: z.string(),\n proto: transportProtocolSchema,\n nid: z.string(),\n iat: z.number(),\n exp: z.number().optional(),\n});\n\nexport const statelessSessionJwtPayloadSchema = sessionJwtPayloadSchema.extend({\n state: z.string().optional(),\n tokens: z.string().optional(),\n});\n\nexport const encryptedBlobSchema = z.object({\n alg: z.literal('A256GCM'),\n kid: z.string().optional(),\n iv: z.string(),\n tag: z.string(),\n data: z.string(),\n exp: z.number().optional(),\n meta: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const storedSessionSchema = z.object({\n session: transportSessionSchema,\n authorizationId: z.string(),\n tokens: z.record(z.string(), encryptedBlobSchema).optional(),\n createdAt: z.number(),\n lastAccessedAt: z.number(),\n});\n\nexport const redisConfigSchema = z.object({\n host: z.string(),\n port: z.number().optional().default(6379),\n password: z.string().optional(),\n db: z.number().optional().default(0),\n tls: z.boolean().optional().default(false),\n keyPrefix: z.string().optional().default('mcp:session:'),\n});\n\n// Stateful storage options (discriminated by store type)\nconst statefulStorageSchema = z.discriminatedUnion('store', [\n z.object({ store: z.literal('memory') }),\n z.object({ store: z.literal('redis'), config: redisConfigSchema }),\n]);\n\n// Session storage config using union instead of discriminatedUnion\n// to avoid duplicate mode values\nexport const sessionStorageConfigSchema = z.union([\n z.object({ mode: z.literal('stateless') }),\n z.object({ mode: z.literal('stateful') }).merge(statefulStorageSchema.options[0]),\n z.object({ mode: z.literal('stateful') }).merge(statefulStorageSchema.options[1]),\n]);\n"]}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SessionIdPayload, TransportProtocolType } from '../../../common';
|
|
2
|
+
import type { PlatformDetectionConfig } from '../../../common/types/options/session.options';
|
|
2
3
|
export declare function encryptJson(obj: unknown): string;
|
|
4
|
+
/**
|
|
5
|
+
* Decrypt a public session ID without signature verification.
|
|
6
|
+
* Public sessions use authSig: 'public' and isPublic: true
|
|
7
|
+
*/
|
|
8
|
+
export declare function decryptPublicSession(sessionId: string): SessionIdPayload | null;
|
|
3
9
|
/**
|
|
4
10
|
* Validates an existing session header OR creates a fresh one.
|
|
5
11
|
* - Valid: nodeId matches local, authSig matches current Authorization
|
|
@@ -9,7 +15,13 @@ export declare function parseSessionHeader(sessionHeader: string | undefined, to
|
|
|
9
15
|
id: string;
|
|
10
16
|
payload: SessionIdPayload;
|
|
11
17
|
} | undefined;
|
|
12
|
-
export
|
|
18
|
+
export interface CreateSessionOptions {
|
|
19
|
+
/** User-Agent header for pre-initialize platform detection */
|
|
20
|
+
userAgent?: string;
|
|
21
|
+
/** Platform detection configuration from scope */
|
|
22
|
+
platformDetectionConfig?: PlatformDetectionConfig;
|
|
23
|
+
}
|
|
24
|
+
export declare function createSessionId(protocol: TransportProtocolType, token: string, options?: CreateSessionOptions): {
|
|
13
25
|
id: string;
|
|
14
26
|
payload: SessionIdPayload;
|
|
15
27
|
};
|