@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,868 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
require("reflect-metadata");
|
|
4
|
-
const common_1 = require("../common");
|
|
5
|
-
const provider_utils_1 = require("./provider.utils");
|
|
6
|
-
const token_utils_1 = require("../utils/token.utils");
|
|
7
|
-
const metadata_utils_1 = require("../utils/metadata.utils");
|
|
8
|
-
const regsitry_1 = require("../regsitry");
|
|
9
|
-
const scope_1 = require("../scope");
|
|
10
|
-
const session_key_provider_1 = require("../context/session-key.provider");
|
|
11
|
-
class ProviderRegistry extends regsitry_1.RegistryAbstract {
|
|
12
|
-
parentProviders;
|
|
13
|
-
/** used to track which registry provided which token */
|
|
14
|
-
providedBy;
|
|
15
|
-
/** topo order (deps first) */
|
|
16
|
-
order = new Set();
|
|
17
|
-
// /** scoped instance stores by key */
|
|
18
|
-
// private scoped = new Map<string, Map<Token, any>>();
|
|
19
|
-
registries = new Map();
|
|
20
|
-
/** Session-scoped provider instance cache by sessionKey */
|
|
21
|
-
sessionStores = new Map();
|
|
22
|
-
/** Locks to prevent concurrent session builds (race condition prevention) */
|
|
23
|
-
sessionBuildLocks = new Map();
|
|
24
|
-
/** Maximum number of sessions to cache (LRU eviction) */
|
|
25
|
-
static MAX_SESSION_CACHE_SIZE = 10000;
|
|
26
|
-
/** Session cache TTL in milliseconds (1 hour) */
|
|
27
|
-
static SESSION_CACHE_TTL_MS = 3600000;
|
|
28
|
-
/** Cleanup interval in milliseconds (1 minute) */
|
|
29
|
-
static SESSION_CLEANUP_INTERVAL_MS = 60000;
|
|
30
|
-
/** Handle for the session cleanup interval */
|
|
31
|
-
sessionCleanupInterval = null;
|
|
32
|
-
constructor(list, parentProviders) {
|
|
33
|
-
super('ProviderRegistry', parentProviders, list, false);
|
|
34
|
-
this.parentProviders = parentProviders;
|
|
35
|
-
this.providedBy = new Map();
|
|
36
|
-
this.buildGraph();
|
|
37
|
-
this.topoSort();
|
|
38
|
-
this.ready = this.initialize();
|
|
39
|
-
}
|
|
40
|
-
getProviders() {
|
|
41
|
-
return [...this.instances.values()];
|
|
42
|
-
}
|
|
43
|
-
/* -------------------- Hierarchy helpers -------------------- */
|
|
44
|
-
/** Walk up the registry chain to find a def for a token. */
|
|
45
|
-
lookupDefInHierarchy(token) {
|
|
46
|
-
if (this.defs.has(token))
|
|
47
|
-
return { registry: this, rec: this.defs.get(token) };
|
|
48
|
-
return this.providers?.lookupDefInHierarchy(token);
|
|
49
|
-
}
|
|
50
|
-
/** Resolve a DEFAULT-scoped dependency from the hierarchy, enforcing scope & instantiation. */
|
|
51
|
-
resolveDefaultFromHierarchy(token) {
|
|
52
|
-
const found = this.lookupDefInHierarchy(token);
|
|
53
|
-
if (!found)
|
|
54
|
-
throw new Error(`Cannot resolve token ${(0, token_utils_1.tokenName)(token)}: not registered in hierarchy.`);
|
|
55
|
-
const { registry, rec } = found;
|
|
56
|
-
const sc = registry.getProviderScope(rec);
|
|
57
|
-
if (sc !== common_1.ProviderScope.GLOBAL) {
|
|
58
|
-
const scName = common_1.ProviderScope[sc];
|
|
59
|
-
throw new Error(`Dependency ${(0, token_utils_1.tokenName)(token)} is scoped (${scName}) in ${registry.constructor.name}; cannot use as DEFAULT.`);
|
|
60
|
-
}
|
|
61
|
-
const inst = registry.instances.get(token);
|
|
62
|
-
if (inst === undefined) {
|
|
63
|
-
throw new Error(`Dependency ${(0, token_utils_1.tokenName)(token)} (DEFAULT) is not instantiated in ${registry.constructor.name}`);
|
|
64
|
-
}
|
|
65
|
-
return inst;
|
|
66
|
-
}
|
|
67
|
-
/* -------------------- Build phase -------------------- */
|
|
68
|
-
buildMap(list) {
|
|
69
|
-
const tokens = new Set();
|
|
70
|
-
const defs = new Map();
|
|
71
|
-
const graph = new Map();
|
|
72
|
-
for (const raw of list) {
|
|
73
|
-
const rec = (0, provider_utils_1.normalizeProvider)(raw);
|
|
74
|
-
const provide = rec.provide;
|
|
75
|
-
tokens.add(provide);
|
|
76
|
-
defs.set(provide, rec);
|
|
77
|
-
graph.set(provide, new Set());
|
|
78
|
-
}
|
|
79
|
-
return { tokens, defs, graph };
|
|
80
|
-
}
|
|
81
|
-
buildGraph() {
|
|
82
|
-
for (const token of this.tokens) {
|
|
83
|
-
const rec = this.defs.get(token);
|
|
84
|
-
const deps = this.discoveryDeps(rec);
|
|
85
|
-
for (const d of deps) {
|
|
86
|
-
const isLocal = this.tokens.has(d);
|
|
87
|
-
const up = isLocal ? undefined : this.lookupDefInHierarchy(d);
|
|
88
|
-
if (!isLocal && !up) {
|
|
89
|
-
throw new Error(`Provider ${(0, token_utils_1.tokenName)(token)} depends on ${(0, token_utils_1.tokenName)(d)}, which is not registered (local or parent).`);
|
|
90
|
-
}
|
|
91
|
-
const depRec = isLocal ? this.defs.get(d) : up.rec;
|
|
92
|
-
const depScope = isLocal ? this.getProviderScope(depRec) : up.registry.getProviderScope(depRec);
|
|
93
|
-
if (this.getProviderScope(rec) === common_1.ProviderScope.GLOBAL && depScope !== common_1.ProviderScope.GLOBAL) {
|
|
94
|
-
throw new Error(`Invalid dependency: DEFAULT-scoped provider ${(0, token_utils_1.tokenName)(token)} cannot depend on scoped provider ${(0, token_utils_1.tokenName)(d)}.`);
|
|
95
|
-
}
|
|
96
|
-
// Only wire local -> local edges in our local graph; parent deps are external to this DAG.
|
|
97
|
-
if (isLocal)
|
|
98
|
-
this.graph.get(token).add(d);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
topoSort() {
|
|
103
|
-
const WHITE = 0, GRAY = 1, BLACK = 2;
|
|
104
|
-
const color = new Map();
|
|
105
|
-
const order = new Set();
|
|
106
|
-
const path = [];
|
|
107
|
-
const dfs = (n) => {
|
|
108
|
-
color.set(n, GRAY);
|
|
109
|
-
path.push(n);
|
|
110
|
-
for (const dep of this.graph.get(n) ?? []) {
|
|
111
|
-
const c = color.get(dep) ?? WHITE;
|
|
112
|
-
if (c === GRAY) {
|
|
113
|
-
const idx = path.findIndex((p) => p === dep);
|
|
114
|
-
const cycle = [...path.slice(idx), dep].map((t) => (0, token_utils_1.tokenName)(t)).join(' -> ');
|
|
115
|
-
throw new Error(`Dependency cycle detected: ${cycle}`);
|
|
116
|
-
}
|
|
117
|
-
if (c === WHITE)
|
|
118
|
-
dfs(dep);
|
|
119
|
-
}
|
|
120
|
-
color.set(n, BLACK);
|
|
121
|
-
order.add(n);
|
|
122
|
-
path.pop();
|
|
123
|
-
};
|
|
124
|
-
for (const n of this.graph.keys())
|
|
125
|
-
if ((color.get(n) ?? WHITE) === WHITE)
|
|
126
|
-
dfs(n);
|
|
127
|
-
this.order = order;
|
|
128
|
-
}
|
|
129
|
-
/** Incremental instantiation for DEFAULT providers.
|
|
130
|
-
* - Skips already-built singletons unless force:true.
|
|
131
|
-
* - Can limit to a subset via onlyTokens.
|
|
132
|
-
*/
|
|
133
|
-
async initialize(opts) {
|
|
134
|
-
const force = !!opts?.force;
|
|
135
|
-
const only = opts?.onlyTokens ? new Set(opts.onlyTokens) : null;
|
|
136
|
-
for (const token of this.order) {
|
|
137
|
-
const rec = this.defs.get(token);
|
|
138
|
-
if (this.getProviderScope(rec) !== common_1.ProviderScope.GLOBAL)
|
|
139
|
-
continue;
|
|
140
|
-
if (only && !only.has(token))
|
|
141
|
-
continue;
|
|
142
|
-
if (!force && this.instances.has(token))
|
|
143
|
-
continue;
|
|
144
|
-
if (force && this.instances.has(token)) {
|
|
145
|
-
this.instances.delete(token);
|
|
146
|
-
}
|
|
147
|
-
try {
|
|
148
|
-
await this.initiateOne(token, rec);
|
|
149
|
-
}
|
|
150
|
-
catch (e) {
|
|
151
|
-
const msg = e?.message ?? e;
|
|
152
|
-
// Use safe logging to avoid Node.js 24 util.inspect bug with Zod errors
|
|
153
|
-
console.error(`Failed instantiating:`, msg);
|
|
154
|
-
throw new Error(`Failed constructing ${(0, token_utils_1.tokenName)(token)}: ${msg}`);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
// Start background session cleanup after initialization
|
|
158
|
-
// This ensures expired sessions are periodically cleaned up (TTL enforcement)
|
|
159
|
-
// Only start for scope-level registries (those with parentProviders) since
|
|
160
|
-
// SESSION providers are stored in scope registries, not the global registry
|
|
161
|
-
if (this.parentProviders) {
|
|
162
|
-
this.startSessionCleanup();
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
/* -------------------- Views & session stores -------------------- */
|
|
166
|
-
/** Return the live singleton map as a read-only view. No copying. */
|
|
167
|
-
getAllSingletons() {
|
|
168
|
-
return this.instances; // exposed as ReadonlyMap in the type
|
|
169
|
-
}
|
|
170
|
-
discoveryDeps(rec) {
|
|
171
|
-
return (0, provider_utils_1.providerDiscoveryDeps)(rec, this.tokens, (k, phase) => (0, token_utils_1.depsOfClass)(k, phase));
|
|
172
|
-
}
|
|
173
|
-
invocationTokens(_token, rec) {
|
|
174
|
-
return (0, provider_utils_1.providerInvocationTokens)(rec, (k, phase) => (0, token_utils_1.depsOfClass)(k, phase));
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Normalize deprecated scopes to their modern equivalents.
|
|
178
|
-
*
|
|
179
|
-
* - SESSION → CONTEXT (deprecated)
|
|
180
|
-
* - REQUEST → CONTEXT (deprecated)
|
|
181
|
-
*
|
|
182
|
-
* This enables backwards compatibility while unifying the scope model.
|
|
183
|
-
*/
|
|
184
|
-
normalizeScope(scope) {
|
|
185
|
-
switch (scope) {
|
|
186
|
-
case common_1.ProviderScope.SESSION:
|
|
187
|
-
case common_1.ProviderScope.REQUEST:
|
|
188
|
-
return common_1.ProviderScope.CONTEXT;
|
|
189
|
-
default:
|
|
190
|
-
return scope;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
getProviderScope(rec) {
|
|
194
|
-
const rawScope = rec.metadata?.scope ?? common_1.ProviderScope.GLOBAL;
|
|
195
|
-
return this.normalizeScope(rawScope);
|
|
196
|
-
}
|
|
197
|
-
getScope() {
|
|
198
|
-
return this.getActiveScope();
|
|
199
|
-
}
|
|
200
|
-
/* -------------------- Instantiation -------------------- */
|
|
201
|
-
async withTimeout(p, ms, label) {
|
|
202
|
-
if (ms <= 0 || !Number.isFinite(ms))
|
|
203
|
-
return p;
|
|
204
|
-
let timer;
|
|
205
|
-
try {
|
|
206
|
-
const tm = new Promise((_, rej) => (timer = setTimeout(() => rej(new Error(`Timeout after ${ms}ms: ${label}`)), ms)));
|
|
207
|
-
return await Promise.race([p, tm]);
|
|
208
|
-
}
|
|
209
|
-
finally {
|
|
210
|
-
clearTimeout(timer);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
async resolveFactoryArg(t, store, scopeKey) {
|
|
214
|
-
if (store.has(t))
|
|
215
|
-
return store.get(t);
|
|
216
|
-
if (this.instances.has(t))
|
|
217
|
-
return this.instances.get(t);
|
|
218
|
-
// Local def?
|
|
219
|
-
const rec = this.defs.get(t);
|
|
220
|
-
if (rec) {
|
|
221
|
-
const sc = this.getProviderScope(rec);
|
|
222
|
-
if (sc === common_1.ProviderScope.GLOBAL) {
|
|
223
|
-
if (!this.instances.has(t)) {
|
|
224
|
-
throw new Error(`Dependency ${(0, token_utils_1.tokenName)(t)} (DEFAULT scope) is not instantiated`);
|
|
225
|
-
}
|
|
226
|
-
return this.instances.get(t);
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
await this.buildIntoStore(t, rec, store, scopeKey);
|
|
230
|
-
return store.get(t);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
// Parent def?
|
|
234
|
-
const up = this.lookupDefInHierarchy(t);
|
|
235
|
-
if (up) {
|
|
236
|
-
const sc = up.registry.getProviderScope(up.rec);
|
|
237
|
-
if (sc === common_1.ProviderScope.GLOBAL) {
|
|
238
|
-
const inst = up.registry.instances.get(t);
|
|
239
|
-
if (inst === undefined) {
|
|
240
|
-
throw new Error(`Dependency ${(0, token_utils_1.tokenName)(t)} (DEFAULT scope) is not instantiated in parent`);
|
|
241
|
-
}
|
|
242
|
-
return inst;
|
|
243
|
-
}
|
|
244
|
-
else {
|
|
245
|
-
await up.registry.buildIntoStore(t, up.rec, store, scopeKey);
|
|
246
|
-
return store.get(t);
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
// Constructable fallback (non-DI)
|
|
250
|
-
if ((0, token_utils_1.isClass)(t)) {
|
|
251
|
-
if ((0, metadata_utils_1.hasAsyncWith)(t)) {
|
|
252
|
-
const out = t.with();
|
|
253
|
-
return (0, token_utils_1.isPromise)(out) ? await this.withTimeout(out, this.asyncTimeoutMs, `${t.name}.with(...)`) : out;
|
|
254
|
-
}
|
|
255
|
-
const instance = new t();
|
|
256
|
-
const init = instance?.init;
|
|
257
|
-
if (typeof init === 'function') {
|
|
258
|
-
const ret = init.call(instance);
|
|
259
|
-
if ((0, token_utils_1.isPromise)(ret))
|
|
260
|
-
await this.withTimeout(ret, this.asyncTimeoutMs, `${t.name}.init()`);
|
|
261
|
-
}
|
|
262
|
-
return instance;
|
|
263
|
-
}
|
|
264
|
-
throw new Error(`Cannot resolve token ${(0, token_utils_1.tokenName)(t)}: not registered in hierarchy and not constructable.`);
|
|
265
|
-
}
|
|
266
|
-
/** Build a single DEFAULT-scoped singleton (used by incremental instantiating). */
|
|
267
|
-
async initiateOne(token, rec) {
|
|
268
|
-
switch (rec.kind) {
|
|
269
|
-
case common_1.ProviderKind.VALUE: {
|
|
270
|
-
this.instances.set(token, rec.useValue);
|
|
271
|
-
return;
|
|
272
|
-
}
|
|
273
|
-
case common_1.ProviderKind.FACTORY: {
|
|
274
|
-
const deps = this.invocationTokens(token, rec);
|
|
275
|
-
const args = [];
|
|
276
|
-
for (const d of deps)
|
|
277
|
-
args.push(await this.resolveFactoryArg(d, this.instances));
|
|
278
|
-
const out = rec.useFactory(...args);
|
|
279
|
-
const val = (0, token_utils_1.isPromise)(out)
|
|
280
|
-
? await this.withTimeout(out, this.asyncTimeoutMs, `${(0, token_utils_1.tokenName)(token)}.useFactory(...)`)
|
|
281
|
-
: out;
|
|
282
|
-
this.instances.set(token, val);
|
|
283
|
-
return;
|
|
284
|
-
}
|
|
285
|
-
case common_1.ProviderKind.CLASS: {
|
|
286
|
-
const depTokens = this.invocationTokens(token, rec);
|
|
287
|
-
const deps = depTokens.map((t) => this.resolveDefaultFromHierarchy(t));
|
|
288
|
-
const klass = rec.useClass;
|
|
289
|
-
if ((0, metadata_utils_1.hasAsyncWith)(klass)) {
|
|
290
|
-
const out = klass.with(...deps);
|
|
291
|
-
const val = (0, token_utils_1.isPromise)(out)
|
|
292
|
-
? await this.withTimeout(out, this.asyncTimeoutMs, `${klass.name}.with(...)`)
|
|
293
|
-
: out;
|
|
294
|
-
this.instances.set(token, val);
|
|
295
|
-
}
|
|
296
|
-
else {
|
|
297
|
-
const instance = new klass(...deps);
|
|
298
|
-
const init = instance?.init;
|
|
299
|
-
if (typeof init === 'function') {
|
|
300
|
-
const ret = init.call(instance);
|
|
301
|
-
if ((0, token_utils_1.isPromise)(ret))
|
|
302
|
-
await this.withTimeout(ret, this.asyncTimeoutMs, `${klass.name}.init()`);
|
|
303
|
-
}
|
|
304
|
-
this.instances.set(token, instance);
|
|
305
|
-
}
|
|
306
|
-
return;
|
|
307
|
-
}
|
|
308
|
-
case common_1.ProviderKind.CLASS_TOKEN: {
|
|
309
|
-
const depTokens = this.invocationTokens(token, rec);
|
|
310
|
-
const deps = depTokens.map((t) => this.resolveDefaultFromHierarchy(t));
|
|
311
|
-
const klass = rec.provide;
|
|
312
|
-
if ((0, metadata_utils_1.hasAsyncWith)(klass)) {
|
|
313
|
-
const out = klass.with(...deps);
|
|
314
|
-
const val = (0, token_utils_1.isPromise)(out)
|
|
315
|
-
? await this.withTimeout(out, this.asyncTimeoutMs, `${klass.name}.with(...)`)
|
|
316
|
-
: out;
|
|
317
|
-
this.instances.set(token, val);
|
|
318
|
-
}
|
|
319
|
-
else {
|
|
320
|
-
const instance = new klass(...deps);
|
|
321
|
-
const init = instance?.init;
|
|
322
|
-
if (typeof init === 'function') {
|
|
323
|
-
const ret = init.call(instance);
|
|
324
|
-
if ((0, token_utils_1.isPromise)(ret))
|
|
325
|
-
await this.withTimeout(ret, this.asyncTimeoutMs, `${klass.name}.init()`);
|
|
326
|
-
}
|
|
327
|
-
this.instances.set(token, instance);
|
|
328
|
-
}
|
|
329
|
-
return;
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
// Build a registered provider into the given scoped store (recursive for scoped deps).
|
|
334
|
-
async buildIntoStore(token, rec, store, scopeKey, injectedDeps) {
|
|
335
|
-
if (store.has(token))
|
|
336
|
-
return;
|
|
337
|
-
try {
|
|
338
|
-
switch (rec.kind) {
|
|
339
|
-
case common_1.ProviderKind.VALUE: {
|
|
340
|
-
store.set(token, rec.useValue);
|
|
341
|
-
return;
|
|
342
|
-
}
|
|
343
|
-
case common_1.ProviderKind.FACTORY: {
|
|
344
|
-
const deps = this.invocationTokens(token, rec);
|
|
345
|
-
const args = [];
|
|
346
|
-
for (const d of deps)
|
|
347
|
-
args.push(await this.resolveFactoryArg(d, store, scopeKey));
|
|
348
|
-
const out = rec.useFactory(...args);
|
|
349
|
-
const val = (0, token_utils_1.isPromise)(out)
|
|
350
|
-
? await this.withTimeout(out, this.asyncTimeoutMs, `${(0, token_utils_1.tokenName)(token)}.useFactory(...)`)
|
|
351
|
-
: out;
|
|
352
|
-
store.set(token, val);
|
|
353
|
-
return;
|
|
354
|
-
}
|
|
355
|
-
case common_1.ProviderKind.CLASS: {
|
|
356
|
-
const depsTokens = this.invocationTokens(token, rec);
|
|
357
|
-
const deps = [];
|
|
358
|
-
for (const d of depsTokens)
|
|
359
|
-
deps.push(await this.resolveManagedForClass(d, store, scopeKey));
|
|
360
|
-
const klass = rec.useClass;
|
|
361
|
-
if ((0, metadata_utils_1.hasAsyncWith)(klass)) {
|
|
362
|
-
const out = klass.with(...deps);
|
|
363
|
-
const val = (0, token_utils_1.isPromise)(out)
|
|
364
|
-
? await this.withTimeout(out, this.asyncTimeoutMs, `${klass.name}.with(...)`)
|
|
365
|
-
: out;
|
|
366
|
-
store.set(token, val);
|
|
367
|
-
}
|
|
368
|
-
else {
|
|
369
|
-
const instance = new klass(...deps);
|
|
370
|
-
const init = instance?.init;
|
|
371
|
-
if (typeof init === 'function') {
|
|
372
|
-
const ret = init.call(instance);
|
|
373
|
-
if ((0, token_utils_1.isPromise)(ret))
|
|
374
|
-
await this.withTimeout(ret, this.asyncTimeoutMs, `${klass.name}.init()`);
|
|
375
|
-
}
|
|
376
|
-
store.set(token, instance);
|
|
377
|
-
}
|
|
378
|
-
return;
|
|
379
|
-
}
|
|
380
|
-
case common_1.ProviderKind.CLASS_TOKEN: {
|
|
381
|
-
const depsTokens = this.invocationTokens(token, rec);
|
|
382
|
-
const deps = injectedDeps ?? [];
|
|
383
|
-
for (const d of depsTokens)
|
|
384
|
-
deps.push(await this.resolveManagedForClass(d, store, scopeKey));
|
|
385
|
-
const klass = rec.provide;
|
|
386
|
-
if ((0, metadata_utils_1.hasAsyncWith)(klass)) {
|
|
387
|
-
const out = klass.with(...deps);
|
|
388
|
-
const val = (0, token_utils_1.isPromise)(out)
|
|
389
|
-
? await this.withTimeout(out, this.asyncTimeoutMs, `${klass.name}.with(...)`)
|
|
390
|
-
: out;
|
|
391
|
-
store.set(token, val);
|
|
392
|
-
}
|
|
393
|
-
else {
|
|
394
|
-
const instance = new klass(...deps);
|
|
395
|
-
const init = instance?.init;
|
|
396
|
-
if (typeof init === 'function') {
|
|
397
|
-
const ret = init.call(instance);
|
|
398
|
-
if ((0, token_utils_1.isPromise)(ret))
|
|
399
|
-
await this.withTimeout(ret, this.asyncTimeoutMs, `${klass.name}.init()`);
|
|
400
|
-
}
|
|
401
|
-
store.set(token, instance);
|
|
402
|
-
}
|
|
403
|
-
return;
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
catch (e) {
|
|
408
|
-
const msg = e?.message ?? e;
|
|
409
|
-
// Use safe logging to avoid Node.js 24 util.inspect bug with Zod errors
|
|
410
|
-
console.error(`Failed constructing:`, msg);
|
|
411
|
-
throw new Error(`Failed constructing (scoped) ${(0, token_utils_1.tokenName)(token)}: ${msg}`);
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
// Ensure managed dependency value for CLASS/CLASS_TOKEN providers:
|
|
415
|
-
// prefer scoped store, then singleton; recursively build scoped deps.
|
|
416
|
-
// If not local, climb the hierarchy and either read DEFAULT instance or build scoped into this store.
|
|
417
|
-
async resolveManagedForClass(d, store, scopeKey) {
|
|
418
|
-
if (store.has(d))
|
|
419
|
-
return store.get(d);
|
|
420
|
-
if (this.instances.has(d))
|
|
421
|
-
return this.instances.get(d);
|
|
422
|
-
// Local DI?
|
|
423
|
-
const depRec = this.defs.get(d);
|
|
424
|
-
if (depRec) {
|
|
425
|
-
const sc = this.getProviderScope(depRec);
|
|
426
|
-
if (sc === common_1.ProviderScope.GLOBAL) {
|
|
427
|
-
const v = this.instances.get(d);
|
|
428
|
-
if (v === undefined)
|
|
429
|
-
throw new Error(`${(0, token_utils_1.tokenName)(d)} (DEFAULT scope) is not instantiated`);
|
|
430
|
-
return v;
|
|
431
|
-
}
|
|
432
|
-
else {
|
|
433
|
-
await this.buildIntoStore(d, depRec, store, scopeKey);
|
|
434
|
-
return store.get(d);
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
// Parent DI?
|
|
438
|
-
const up = this.lookupDefInHierarchy(d);
|
|
439
|
-
if (up) {
|
|
440
|
-
const sc = up.registry.getProviderScope(up.rec);
|
|
441
|
-
if (sc === common_1.ProviderScope.GLOBAL) {
|
|
442
|
-
const v = up.registry.instances.get(d);
|
|
443
|
-
if (v === undefined)
|
|
444
|
-
throw new Error(`${(0, token_utils_1.tokenName)(d)} (DEFAULT scope) is not instantiated in parent`);
|
|
445
|
-
return v;
|
|
446
|
-
}
|
|
447
|
-
else {
|
|
448
|
-
await up.registry.buildIntoStore(d, up.rec, store, scopeKey);
|
|
449
|
-
return store.get(d);
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
throw new Error(`${(0, token_utils_1.tokenName)(d)} is not instantiated`);
|
|
453
|
-
}
|
|
454
|
-
get(token) {
|
|
455
|
-
if (this.instances.has(token))
|
|
456
|
-
return this.instances.get(token);
|
|
457
|
-
const rec = this.defs.get(token);
|
|
458
|
-
if (rec && this.getProviderScope(rec) !== common_1.ProviderScope.GLOBAL) {
|
|
459
|
-
const scName = common_1.ProviderScope[this.getProviderScope(rec)];
|
|
460
|
-
throw new Error(`Provider ${(0, token_utils_1.tokenName)(token)} is scoped (${scName}). Use getScoped(token, key).`);
|
|
461
|
-
}
|
|
462
|
-
// bubble to parent
|
|
463
|
-
if (this.providers)
|
|
464
|
-
return this.providers.get(token);
|
|
465
|
-
throw new Error(`Provider ${(0, token_utils_1.tokenName)(token)} is not available in local or parent registries`);
|
|
466
|
-
}
|
|
467
|
-
// noinspection JSUnusedGlobalSymbols
|
|
468
|
-
addRegistry(type, value) {
|
|
469
|
-
let registry = this.registries.get(type);
|
|
470
|
-
if (!registry) {
|
|
471
|
-
this.registries.set(type, new Set());
|
|
472
|
-
registry = this.registries.get(type);
|
|
473
|
-
}
|
|
474
|
-
registry.add(value);
|
|
475
|
-
}
|
|
476
|
-
getRegistries(type) {
|
|
477
|
-
return [...(this.registries.get(type) ?? [])];
|
|
478
|
-
}
|
|
479
|
-
getHooksRegistry() {
|
|
480
|
-
return this.getRegistries('HookRegistry')[0];
|
|
481
|
-
}
|
|
482
|
-
// noinspection JSUnusedGlobalSymbols
|
|
483
|
-
getScopeRegistry() {
|
|
484
|
-
return this.getRegistries('ScopeRegistry')[0];
|
|
485
|
-
}
|
|
486
|
-
/** bootstrap helper: resolve a dependency usable during app bootstrap (must be GLOBAL). */
|
|
487
|
-
async resolveBootstrapDep(t) {
|
|
488
|
-
if (this.instances.has(t))
|
|
489
|
-
return this.instances.get(t);
|
|
490
|
-
if (this.registries.has(t))
|
|
491
|
-
return this.registries.get(t);
|
|
492
|
-
const found = this.lookupDefInHierarchy(t);
|
|
493
|
-
if (found) {
|
|
494
|
-
const { registry, rec } = found;
|
|
495
|
-
const sc = registry.getProviderScope(rec);
|
|
496
|
-
if (sc !== common_1.ProviderScope.GLOBAL)
|
|
497
|
-
throw new Error(`Plugin dependency ${(0, token_utils_1.tokenName)(t)} must be DEFAULT-scoped at bootstrap`);
|
|
498
|
-
const v = registry.instances.get(t);
|
|
499
|
-
if (v === undefined)
|
|
500
|
-
throw new Error(`Plugin dependency ${(0, token_utils_1.tokenName)(t)} (DEFAULT scope) is not instantiated`);
|
|
501
|
-
return v;
|
|
502
|
-
}
|
|
503
|
-
throw new Error(`Cannot resolve plugin dependency ${(0, token_utils_1.tokenName)(t)} (local or parent)`);
|
|
504
|
-
}
|
|
505
|
-
/** Lightweight, synchronous resolver for app-scoped DI.
|
|
506
|
-
* - If `cls` is a registered DEFAULT provider token, returns the singleton (must be instantiated).
|
|
507
|
-
* - If `cls` is SCOPED in DI, throws (use getScoped/buildViews instead).
|
|
508
|
-
* - Otherwise, if `cls` is a constructable class not registered in DI, returns `new cls()`.
|
|
509
|
-
* If it defines a synchronous init(), it will be invoked (async init() is NOT awaited).
|
|
510
|
-
*/
|
|
511
|
-
resolve(cls) {
|
|
512
|
-
// 1) If it's a registered token (local or parent), handle via DI rules
|
|
513
|
-
const found = this.lookupDefInHierarchy(cls);
|
|
514
|
-
if (found) {
|
|
515
|
-
const { registry, rec } = found;
|
|
516
|
-
const sc = registry.getProviderScope(rec);
|
|
517
|
-
if (sc !== common_1.ProviderScope.GLOBAL) {
|
|
518
|
-
const scName = common_1.ProviderScope[sc];
|
|
519
|
-
throw new Error(`Provider ${(0, token_utils_1.tokenName)(cls)} is scoped (${scName}). Use getScoped(token, key) or buildViews(...).`);
|
|
520
|
-
}
|
|
521
|
-
if (!registry.instances.has(cls)) {
|
|
522
|
-
throw new Error(`Provider ${(0, token_utils_1.tokenName)(cls)} (DEFAULT scope) is not instantiated. Call providers.instantiate() first.`);
|
|
523
|
-
}
|
|
524
|
-
return registry.instances.get(cls);
|
|
525
|
-
}
|
|
526
|
-
// 2) Not a registered token — best-effort construct (for tools/hooks/wrappers)
|
|
527
|
-
if ((0, token_utils_1.isClass)(cls)) {
|
|
528
|
-
const instance = new cls();
|
|
529
|
-
// Call sync init() if present (do NOT await)
|
|
530
|
-
const init = instance?.init;
|
|
531
|
-
if (typeof init === 'function') {
|
|
532
|
-
// If someone accidentally made init async here, we intentionally do NOT await to keep it sync.
|
|
533
|
-
init.call(instance);
|
|
534
|
-
}
|
|
535
|
-
return instance;
|
|
536
|
-
}
|
|
537
|
-
// 3) Unsupported token type
|
|
538
|
-
throw new Error(`Cannot resolve ${(0, token_utils_1.tokenName)(cls)}: not a registered DEFAULT provider and not a constructable class.`);
|
|
539
|
-
}
|
|
540
|
-
mergeFromRegistry(providedBy, exported) {
|
|
541
|
-
for (const { token, def, instance } of exported) {
|
|
542
|
-
if (def.metadata.scope === common_1.ProviderScope.GLOBAL) {
|
|
543
|
-
this.instances.set(token, instance);
|
|
544
|
-
}
|
|
545
|
-
this.defs.set(token, def);
|
|
546
|
-
this.providedBy.set(token, providedBy);
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
/**
|
|
550
|
-
* Used by plugins to get the exported provider definitions.
|
|
551
|
-
*/
|
|
552
|
-
getProviderInfo(token) {
|
|
553
|
-
const def = this.defs.get(token);
|
|
554
|
-
const instance = this.instances.get(token);
|
|
555
|
-
if (!def || !instance)
|
|
556
|
-
throw new Error(`Cannot get provider info for ${(0, token_utils_1.tokenName)(token)}: not a registered DEFAULT provider and not a constructable class.`);
|
|
557
|
-
return {
|
|
558
|
-
token,
|
|
559
|
-
def,
|
|
560
|
-
instance,
|
|
561
|
-
};
|
|
562
|
-
}
|
|
563
|
-
injectProvider(injected) {
|
|
564
|
-
const rec = {
|
|
565
|
-
...injected,
|
|
566
|
-
kind: common_1.ProviderKind.INJECTED,
|
|
567
|
-
};
|
|
568
|
-
this.tokens.add(rec.provide);
|
|
569
|
-
this.defs.set(rec.provide, rec);
|
|
570
|
-
this.graph.set(rec.provide, new Set());
|
|
571
|
-
this.instances.set(rec.provide, rec.value);
|
|
572
|
-
}
|
|
573
|
-
async addDynamicProviders(dynamicProviders) {
|
|
574
|
-
// Normalize ProviderType[] to ProviderRecord[] before instantiation
|
|
575
|
-
const normalized = dynamicProviders.map((p) => (0, provider_utils_1.normalizeProvider)(p));
|
|
576
|
-
return Promise.all(normalized.map((rec) => this.initiateOne(rec.provide, rec)));
|
|
577
|
-
}
|
|
578
|
-
getWithParents(token) {
|
|
579
|
-
if (this.instances.has(token)) {
|
|
580
|
-
return this.get(token);
|
|
581
|
-
}
|
|
582
|
-
const parent = this.parentProviders;
|
|
583
|
-
if (!parent) {
|
|
584
|
-
return this.get(token);
|
|
585
|
-
}
|
|
586
|
-
return parent.getWithParents(token);
|
|
587
|
-
}
|
|
588
|
-
getActiveScope() {
|
|
589
|
-
return this.getWithParents(scope_1.Scope);
|
|
590
|
-
}
|
|
591
|
-
getActiveServer() {
|
|
592
|
-
return this.getWithParents(common_1.FrontMcpServer);
|
|
593
|
-
}
|
|
594
|
-
/* -------------------- Session Cache Management -------------------- */
|
|
595
|
-
/**
|
|
596
|
-
* Clean up a specific session's provider cache.
|
|
597
|
-
* Call this when a session is terminated or expired.
|
|
598
|
-
*
|
|
599
|
-
* @param sessionKey - The session identifier to clean up
|
|
600
|
-
*/
|
|
601
|
-
cleanupSession(sessionKey) {
|
|
602
|
-
this.sessionStores.delete(sessionKey);
|
|
603
|
-
// Resolve any waiters before deleting the lock to prevent hung promises
|
|
604
|
-
const lock = this.sessionBuildLocks.get(sessionKey);
|
|
605
|
-
if (lock) {
|
|
606
|
-
lock.resolve();
|
|
607
|
-
this.sessionBuildLocks.delete(sessionKey);
|
|
608
|
-
}
|
|
609
|
-
}
|
|
610
|
-
/**
|
|
611
|
-
* Clean up expired sessions from the cache.
|
|
612
|
-
* Sessions older than SESSION_CACHE_TTL_MS are removed.
|
|
613
|
-
*
|
|
614
|
-
* @returns Number of sessions cleaned up
|
|
615
|
-
*/
|
|
616
|
-
cleanupExpiredSessions() {
|
|
617
|
-
const now = Date.now();
|
|
618
|
-
const cutoff = now - ProviderRegistry.SESSION_CACHE_TTL_MS;
|
|
619
|
-
let cleaned = 0;
|
|
620
|
-
for (const [key, entry] of this.sessionStores) {
|
|
621
|
-
if (entry.lastAccess < cutoff) {
|
|
622
|
-
this.sessionStores.delete(key);
|
|
623
|
-
// Resolve any waiters before deleting the lock to prevent hung promises
|
|
624
|
-
const lock = this.sessionBuildLocks.get(key);
|
|
625
|
-
if (lock) {
|
|
626
|
-
lock.resolve();
|
|
627
|
-
this.sessionBuildLocks.delete(key);
|
|
628
|
-
}
|
|
629
|
-
cleaned++;
|
|
630
|
-
}
|
|
631
|
-
}
|
|
632
|
-
return cleaned;
|
|
633
|
-
}
|
|
634
|
-
/**
|
|
635
|
-
* Start the background session cleanup timer.
|
|
636
|
-
* This periodically removes expired sessions from the cache.
|
|
637
|
-
*/
|
|
638
|
-
startSessionCleanup() {
|
|
639
|
-
// Only start if not already running
|
|
640
|
-
if (this.sessionCleanupInterval) {
|
|
641
|
-
return;
|
|
642
|
-
}
|
|
643
|
-
this.sessionCleanupInterval = setInterval(() => {
|
|
644
|
-
const cleaned = this.cleanupExpiredSessions();
|
|
645
|
-
if (cleaned > 0) {
|
|
646
|
-
console.debug(`[ProviderRegistry] Cleaned up ${cleaned} expired sessions`);
|
|
647
|
-
}
|
|
648
|
-
}, ProviderRegistry.SESSION_CLEANUP_INTERVAL_MS);
|
|
649
|
-
// Allow the process to exit even if the interval is running
|
|
650
|
-
// This is important for graceful shutdown in serverless environments
|
|
651
|
-
if (this.sessionCleanupInterval.unref) {
|
|
652
|
-
this.sessionCleanupInterval.unref();
|
|
653
|
-
}
|
|
654
|
-
}
|
|
655
|
-
/**
|
|
656
|
-
* Stop the background session cleanup timer.
|
|
657
|
-
* Call this when shutting down the server gracefully.
|
|
658
|
-
*/
|
|
659
|
-
stopSessionCleanup() {
|
|
660
|
-
if (this.sessionCleanupInterval) {
|
|
661
|
-
clearInterval(this.sessionCleanupInterval);
|
|
662
|
-
this.sessionCleanupInterval = null;
|
|
663
|
-
}
|
|
664
|
-
}
|
|
665
|
-
/**
|
|
666
|
-
* Dispose of the registry, cleaning up all resources.
|
|
667
|
-
* Call this when the registry/scope is being destroyed to prevent:
|
|
668
|
-
* - Memory leaks from retained interval handles
|
|
669
|
-
* - Orphaned session cleanup timers
|
|
670
|
-
*
|
|
671
|
-
* @example
|
|
672
|
-
* ```typescript
|
|
673
|
-
* // In scope teardown
|
|
674
|
-
* scope.providers.dispose();
|
|
675
|
-
* ```
|
|
676
|
-
*/
|
|
677
|
-
dispose() {
|
|
678
|
-
this.stopSessionCleanup();
|
|
679
|
-
// Clear all session stores to help garbage collection
|
|
680
|
-
this.sessionStores.clear();
|
|
681
|
-
// Resolve any pending locks to prevent hung promises
|
|
682
|
-
for (const lock of this.sessionBuildLocks.values()) {
|
|
683
|
-
lock.resolve();
|
|
684
|
-
}
|
|
685
|
-
this.sessionBuildLocks.clear();
|
|
686
|
-
}
|
|
687
|
-
/**
|
|
688
|
-
* Get session cache statistics for monitoring.
|
|
689
|
-
*/
|
|
690
|
-
getSessionCacheStats() {
|
|
691
|
-
return {
|
|
692
|
-
size: this.sessionStores.size,
|
|
693
|
-
maxSize: ProviderRegistry.MAX_SESSION_CACHE_SIZE,
|
|
694
|
-
ttlMs: ProviderRegistry.SESSION_CACHE_TTL_MS,
|
|
695
|
-
};
|
|
696
|
-
}
|
|
697
|
-
/* -------------------- Scoped Provider Views -------------------- */
|
|
698
|
-
/**
|
|
699
|
-
* Build provider instance views for different scopes.
|
|
700
|
-
*
|
|
701
|
-
* This method creates a complete view of providers across all scopes:
|
|
702
|
-
* - GLOBAL: Returns existing singleton instances (read-only)
|
|
703
|
-
* - CONTEXT: Builds per-context providers (unified session + request)
|
|
704
|
-
*
|
|
705
|
-
* Note: For backwards compatibility, SESSION and REQUEST scopes are normalized
|
|
706
|
-
* to CONTEXT. The returned views include `session` and `request` aliases that
|
|
707
|
-
* both point to the `context` store.
|
|
708
|
-
*
|
|
709
|
-
* @param sessionKey - Unique context/session identifier for CONTEXT-scoped providers
|
|
710
|
-
* @param contextProviders - Optional pre-built CONTEXT-scoped providers (e.g., FrontMcpContext)
|
|
711
|
-
* @returns ProviderViews with global and context provider maps (session/request as aliases)
|
|
712
|
-
*/
|
|
713
|
-
async buildViews(sessionKey, contextProviders) {
|
|
714
|
-
// Early validation BEFORE any cache operations or lock acquisition
|
|
715
|
-
// This prevents cache pollution with invalid session keys
|
|
716
|
-
session_key_provider_1.SessionKey.validate(sessionKey);
|
|
717
|
-
// 1. Global providers - return existing singletons
|
|
718
|
-
const global = this.getAllSingletons();
|
|
719
|
-
// 2. Context providers - build per-context (unified session+request)
|
|
720
|
-
// Note: We don't cache context providers because they're per-request.
|
|
721
|
-
// The unified context model means all non-global providers are fresh per-request.
|
|
722
|
-
const contextStore = new Map(contextProviders);
|
|
723
|
-
// Inject SessionKey for backwards compatibility with providers that depend on it
|
|
724
|
-
// @deprecated - Providers should migrate to using FRONTMCP_CONTEXT instead
|
|
725
|
-
if (!contextStore.has(session_key_provider_1.SessionKey)) {
|
|
726
|
-
contextStore.set(session_key_provider_1.SessionKey, new session_key_provider_1.SessionKey(sessionKey));
|
|
727
|
-
}
|
|
728
|
-
// Build all CONTEXT-scoped providers (including normalized SESSION/REQUEST)
|
|
729
|
-
for (const token of this.order) {
|
|
730
|
-
const rec = this.defs.get(token);
|
|
731
|
-
if (!rec)
|
|
732
|
-
continue;
|
|
733
|
-
// getProviderScope() already normalizes SESSION/REQUEST → CONTEXT
|
|
734
|
-
if (this.getProviderScope(rec) !== common_1.ProviderScope.CONTEXT)
|
|
735
|
-
continue;
|
|
736
|
-
if (contextStore.has(token))
|
|
737
|
-
continue;
|
|
738
|
-
await this.buildIntoStoreWithViews(token, rec, contextStore, sessionKey, contextStore, global);
|
|
739
|
-
}
|
|
740
|
-
// Return views with backwards-compatible aliases
|
|
741
|
-
// All three (context, session, request) point to the same map
|
|
742
|
-
return {
|
|
743
|
-
global,
|
|
744
|
-
context: contextStore,
|
|
745
|
-
// Backwards compatibility aliases
|
|
746
|
-
session: contextStore,
|
|
747
|
-
request: contextStore,
|
|
748
|
-
};
|
|
749
|
-
}
|
|
750
|
-
/**
|
|
751
|
-
* Build a provider into a store, with access to context and global views for dependencies.
|
|
752
|
-
*/
|
|
753
|
-
async buildIntoStoreWithViews(token, rec, store, scopeKey, contextStore, globalStore) {
|
|
754
|
-
if (store.has(token))
|
|
755
|
-
return;
|
|
756
|
-
try {
|
|
757
|
-
switch (rec.kind) {
|
|
758
|
-
case common_1.ProviderKind.VALUE: {
|
|
759
|
-
store.set(token, rec.useValue);
|
|
760
|
-
return;
|
|
761
|
-
}
|
|
762
|
-
case common_1.ProviderKind.FACTORY: {
|
|
763
|
-
const deps = this.invocationTokens(token, rec);
|
|
764
|
-
const args = [];
|
|
765
|
-
for (const d of deps) {
|
|
766
|
-
args.push(await this.resolveFromViews(d, contextStore, globalStore, scopeKey));
|
|
767
|
-
}
|
|
768
|
-
const out = rec.useFactory(...args);
|
|
769
|
-
const val = (0, token_utils_1.isPromise)(out)
|
|
770
|
-
? await this.withTimeout(out, this.asyncTimeoutMs, `${(0, token_utils_1.tokenName)(token)}.useFactory(...)`)
|
|
771
|
-
: out;
|
|
772
|
-
store.set(token, val);
|
|
773
|
-
return;
|
|
774
|
-
}
|
|
775
|
-
case common_1.ProviderKind.CLASS:
|
|
776
|
-
case common_1.ProviderKind.CLASS_TOKEN: {
|
|
777
|
-
const depsTokens = this.invocationTokens(token, rec);
|
|
778
|
-
const deps = [];
|
|
779
|
-
for (const d of depsTokens) {
|
|
780
|
-
deps.push(await this.resolveFromViews(d, contextStore, globalStore, scopeKey));
|
|
781
|
-
}
|
|
782
|
-
const klass = rec.kind === common_1.ProviderKind.CLASS ? rec.useClass : rec.provide;
|
|
783
|
-
if ((0, metadata_utils_1.hasAsyncWith)(klass)) {
|
|
784
|
-
const out = klass.with(...deps);
|
|
785
|
-
const val = (0, token_utils_1.isPromise)(out)
|
|
786
|
-
? await this.withTimeout(out, this.asyncTimeoutMs, `${klass.name}.with(...)`)
|
|
787
|
-
: out;
|
|
788
|
-
store.set(token, val);
|
|
789
|
-
}
|
|
790
|
-
else {
|
|
791
|
-
const instance = new klass(...deps);
|
|
792
|
-
const init = instance?.init;
|
|
793
|
-
if (typeof init === 'function') {
|
|
794
|
-
const ret = init.call(instance);
|
|
795
|
-
if ((0, token_utils_1.isPromise)(ret))
|
|
796
|
-
await this.withTimeout(ret, this.asyncTimeoutMs, `${klass.name}.init()`);
|
|
797
|
-
}
|
|
798
|
-
store.set(token, instance);
|
|
799
|
-
}
|
|
800
|
-
return;
|
|
801
|
-
}
|
|
802
|
-
}
|
|
803
|
-
}
|
|
804
|
-
catch (e) {
|
|
805
|
-
const msg = e?.message ?? e;
|
|
806
|
-
console.error(`Failed constructing (context-scoped):`, msg);
|
|
807
|
-
throw new Error(`Failed constructing (context-scoped) ${(0, token_utils_1.tokenName)(token)}: ${msg}`);
|
|
808
|
-
}
|
|
809
|
-
}
|
|
810
|
-
/**
|
|
811
|
-
* Resolve a dependency from the available views (context → global).
|
|
812
|
-
*/
|
|
813
|
-
async resolveFromViews(token, contextStore, globalStore, scopeKey) {
|
|
814
|
-
// Check stores in order: context -> global -> instances
|
|
815
|
-
if (contextStore.has(token))
|
|
816
|
-
return contextStore.get(token);
|
|
817
|
-
if (globalStore.has(token))
|
|
818
|
-
return globalStore.get(token);
|
|
819
|
-
if (this.instances.has(token))
|
|
820
|
-
return this.instances.get(token);
|
|
821
|
-
// Try to build if it's a registered provider
|
|
822
|
-
const rec = this.defs.get(token);
|
|
823
|
-
if (rec) {
|
|
824
|
-
const scope = this.getProviderScope(rec);
|
|
825
|
-
if (scope === common_1.ProviderScope.GLOBAL) {
|
|
826
|
-
throw new Error(`GLOBAL dependency ${(0, token_utils_1.tokenName)(token)} is not instantiated`);
|
|
827
|
-
}
|
|
828
|
-
else {
|
|
829
|
-
// CONTEXT scope - build into context store
|
|
830
|
-
await this.buildIntoStoreWithViews(token, rec, contextStore, scopeKey, contextStore, globalStore);
|
|
831
|
-
return contextStore.get(token);
|
|
832
|
-
}
|
|
833
|
-
}
|
|
834
|
-
// Check parent hierarchy
|
|
835
|
-
const up = this.lookupDefInHierarchy(token);
|
|
836
|
-
if (up) {
|
|
837
|
-
const sc = up.registry.getProviderScope(up.rec);
|
|
838
|
-
if (sc === common_1.ProviderScope.GLOBAL) {
|
|
839
|
-
const v = up.registry.instances.get(token);
|
|
840
|
-
if (v !== undefined)
|
|
841
|
-
return v;
|
|
842
|
-
throw new Error(`GLOBAL dependency ${(0, token_utils_1.tokenName)(token)} is not instantiated in parent`);
|
|
843
|
-
}
|
|
844
|
-
}
|
|
845
|
-
throw new Error(`Cannot resolve dependency ${(0, token_utils_1.tokenName)(token)} from views`);
|
|
846
|
-
}
|
|
847
|
-
/**
|
|
848
|
-
* Get a provider from the given views, checking context → global.
|
|
849
|
-
*
|
|
850
|
-
* @param token - The provider token to look up
|
|
851
|
-
* @param views - The provider views to search
|
|
852
|
-
* @returns The provider instance
|
|
853
|
-
* @throws Error if provider not found in any view
|
|
854
|
-
*/
|
|
855
|
-
getScoped(token, views) {
|
|
856
|
-
// Check context first (unified session+request store)
|
|
857
|
-
if (views.context.has(token))
|
|
858
|
-
return views.context.get(token);
|
|
859
|
-
if (views.global.has(token))
|
|
860
|
-
return views.global.get(token);
|
|
861
|
-
// Check instances as fallback for global providers
|
|
862
|
-
if (this.instances.has(token))
|
|
863
|
-
return this.instances.get(token);
|
|
864
|
-
throw new Error(`Provider ${(0, token_utils_1.tokenName)(token)} not found in views. Ensure it was built via buildViews().`);
|
|
865
|
-
}
|
|
866
|
-
}
|
|
867
|
-
exports.default = ProviderRegistry;
|
|
868
|
-
//# sourceMappingURL=provider.registry.js.map
|