@frontmcp/sdk 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -18
- package/package.json +20 -5
- package/src/app/app.registry.d.ts +3 -2
- package/src/app/app.registry.js +3 -1
- package/src/app/app.registry.js.map +1 -1
- package/src/app/instances/app.local.instance.js +2 -2
- package/src/app/instances/app.local.instance.js.map +1 -1
- package/src/auth/auth.registry.d.ts +34 -2
- package/src/auth/auth.registry.js +162 -24
- package/src/auth/auth.registry.js.map +1 -1
- package/src/auth/auth.utils.js +8 -9
- package/src/auth/auth.utils.js.map +1 -1
- package/src/auth/authorization/authorization.class.d.ts +125 -0
- package/src/auth/authorization/authorization.class.js +224 -0
- package/src/auth/authorization/authorization.class.js.map +1 -0
- package/src/auth/authorization/authorization.types.d.ts +300 -0
- package/src/auth/authorization/authorization.types.js +79 -0
- package/src/auth/authorization/authorization.types.js.map +1 -0
- package/src/auth/authorization/index.d.ts +5 -0
- package/src/auth/authorization/index.js +19 -0
- package/src/auth/authorization/index.js.map +1 -0
- package/src/auth/authorization/orchestrated.authorization.d.ts +242 -0
- package/src/auth/authorization/orchestrated.authorization.js +306 -0
- package/src/auth/authorization/orchestrated.authorization.js.map +1 -0
- package/src/auth/authorization/public.authorization.d.ts +91 -0
- package/src/auth/authorization/public.authorization.js +132 -0
- package/src/auth/authorization/public.authorization.js.map +1 -0
- package/src/auth/authorization/transparent.authorization.d.ts +130 -0
- package/src/auth/authorization/transparent.authorization.js +147 -0
- package/src/auth/authorization/transparent.authorization.js.map +1 -0
- package/src/auth/consent/consent.types.d.ts +111 -0
- package/src/auth/consent/consent.types.js +119 -0
- package/src/auth/consent/consent.types.js.map +1 -0
- package/src/auth/consent/index.d.ts +1 -0
- package/src/auth/consent/index.js +13 -0
- package/src/auth/consent/index.js.map +1 -0
- package/src/auth/detection/auth-provider-detection.d.ts +84 -0
- package/src/auth/detection/auth-provider-detection.js +230 -0
- package/src/auth/detection/auth-provider-detection.js.map +1 -0
- package/src/auth/detection/index.d.ts +1 -0
- package/src/auth/detection/index.js +15 -0
- package/src/auth/detection/index.js.map +1 -0
- package/src/auth/flows/auth.verify.flow.d.ts +110 -0
- package/src/auth/flows/auth.verify.flow.js +379 -0
- package/src/auth/flows/auth.verify.flow.js.map +1 -0
- package/src/auth/flows/oauth.authorize.flow.d.ts +118 -164
- package/src/auth/flows/oauth.authorize.flow.js +701 -33
- package/src/auth/flows/oauth.authorize.flow.js.map +1 -1
- package/src/auth/flows/oauth.callback.flow.d.ts +117 -0
- package/src/auth/flows/oauth.callback.flow.js +357 -0
- package/src/auth/flows/oauth.callback.flow.js.map +1 -0
- package/src/auth/flows/oauth.register.flow.d.ts +32 -125
- package/src/auth/flows/oauth.token.flow.d.ts +52 -154
- package/src/auth/flows/oauth.token.flow.js +193 -55
- package/src/auth/flows/oauth.token.flow.js.map +1 -1
- package/src/auth/flows/session.verify.flow.d.ts +66 -321
- package/src/auth/flows/session.verify.flow.js +107 -18
- package/src/auth/flows/session.verify.flow.js.map +1 -1
- package/src/auth/flows/well-known.jwks.flow.d.ts +34 -205
- package/src/auth/flows/well-known.jwks.flow.js +15 -8
- package/src/auth/flows/well-known.jwks.flow.js.map +1 -1
- package/src/auth/flows/well-known.oauth-authorization-server.flow.d.ts +48 -223
- package/src/auth/flows/well-known.oauth-authorization-server.flow.js +2 -3
- package/src/auth/flows/well-known.oauth-authorization-server.flow.js.map +1 -1
- package/src/auth/flows/well-known.prm.flow.d.ts +19 -120
- package/src/auth/flows/well-known.prm.flow.js +3 -4
- package/src/auth/flows/well-known.prm.flow.js.map +1 -1
- package/src/auth/instances/instance.local-primary-auth.d.ts +91 -4
- package/src/auth/instances/instance.local-primary-auth.js +236 -6
- package/src/auth/instances/instance.local-primary-auth.js.map +1 -1
- package/src/auth/instances/instance.remote-primary-auth.d.ts +4 -3
- package/src/auth/instances/instance.remote-primary-auth.js +2 -2
- package/src/auth/instances/instance.remote-primary-auth.js.map +1 -1
- package/src/auth/session/authorization-vault.d.ts +611 -0
- package/src/auth/session/authorization-vault.js +817 -0
- package/src/auth/session/authorization-vault.js.map +1 -0
- package/src/auth/session/authorization.store.d.ts +301 -0
- package/src/auth/session/authorization.store.js +323 -0
- package/src/auth/session/authorization.store.js.map +1 -0
- package/src/auth/session/encrypted-authorization-vault.d.ts +181 -0
- package/src/auth/session/encrypted-authorization-vault.js +493 -0
- package/src/auth/session/encrypted-authorization-vault.js.map +1 -0
- package/src/auth/session/index.d.ts +4 -4
- package/src/auth/session/index.js +11 -7
- package/src/auth/session/index.js.map +1 -1
- package/src/auth/session/session.schema.d.ts +1 -1
- package/src/auth/session/session.service.d.ts +1 -1
- package/src/auth/session/transport-session.manager.d.ts +101 -0
- package/src/auth/session/transport-session.manager.js +300 -0
- package/src/auth/session/transport-session.manager.js.map +1 -0
- package/src/auth/session/transport-session.types.d.ts +457 -0
- package/src/auth/session/transport-session.types.js +110 -0
- package/src/auth/session/transport-session.types.js.map +1 -0
- package/src/auth/session/utils/session-id.utils.d.ts +14 -2
- package/src/auth/session/utils/session-id.utils.js +68 -19
- package/src/auth/session/utils/session-id.utils.js.map +1 -1
- package/src/auth/session/vault-encryption.d.ts +189 -0
- package/src/auth/session/vault-encryption.js +263 -0
- package/src/auth/session/vault-encryption.js.map +1 -0
- package/src/auth/ui/base-layout.d.ts +188 -0
- package/src/auth/ui/base-layout.js +292 -0
- package/src/auth/ui/base-layout.js.map +1 -0
- package/src/auth/ui/htmx-templates.d.ts +135 -0
- package/src/auth/ui/htmx-templates.js +433 -0
- package/src/auth/ui/htmx-templates.js.map +1 -0
- package/src/auth/ui/index.d.ts +11 -0
- package/src/auth/ui/index.js +35 -0
- package/src/auth/ui/index.js.map +1 -0
- package/src/auth/utils/audience.validator.d.ts +129 -0
- package/src/auth/utils/audience.validator.js +196 -0
- package/src/auth/utils/audience.validator.js.map +1 -0
- package/src/auth/utils/index.d.ts +2 -0
- package/src/auth/utils/index.js +7 -0
- package/src/auth/utils/index.js.map +1 -0
- package/src/auth/utils/www-authenticate.utils.d.ts +97 -0
- package/src/auth/utils/www-authenticate.utils.js +183 -0
- package/src/auth/utils/www-authenticate.utils.js.map +1 -0
- package/src/common/common.schema.d.ts +2 -16
- package/src/common/constants.d.ts +3 -0
- package/src/common/constants.js +6 -1
- package/src/common/constants.js.map +1 -1
- package/src/common/decorators/decorator-utils.d.ts +131 -0
- package/src/common/decorators/decorator-utils.js +195 -0
- package/src/common/decorators/decorator-utils.js.map +1 -0
- package/src/common/decorators/front-mcp.decorator.js +3 -2
- package/src/common/decorators/front-mcp.decorator.js.map +1 -1
- package/src/common/decorators/hook.decorator.d.ts +58 -2
- package/src/common/decorators/hook.decorator.js +127 -17
- package/src/common/decorators/hook.decorator.js.map +1 -1
- package/src/common/decorators/plugin.decorator.d.ts +1 -1
- package/src/common/decorators/plugin.decorator.js +11 -10
- package/src/common/decorators/plugin.decorator.js.map +1 -1
- package/src/common/decorators/resource.decorator.d.ts +32 -3
- package/src/common/decorators/resource.decorator.js +46 -4
- package/src/common/decorators/resource.decorator.js.map +1 -1
- package/src/common/decorators/tool.decorator.d.ts +54 -5
- package/src/common/decorators/tool.decorator.js.map +1 -1
- package/src/common/dynamic/dynamic.plugin.d.ts +22 -11
- package/src/common/dynamic/dynamic.plugin.js +7 -1
- package/src/common/dynamic/dynamic.plugin.js.map +1 -1
- package/src/common/entries/prompt.entry.d.ts +46 -2
- package/src/common/entries/prompt.entry.js +10 -0
- package/src/common/entries/prompt.entry.js.map +1 -1
- package/src/common/entries/resource.entry.d.ts +69 -6
- package/src/common/entries/resource.entry.js +27 -3
- package/src/common/entries/resource.entry.js.map +1 -1
- package/src/common/entries/scope.entry.d.ts +5 -1
- package/src/common/entries/scope.entry.js +3 -3
- package/src/common/entries/scope.entry.js.map +1 -1
- package/src/common/flow/flow.utils.d.ts +56 -0
- package/src/common/flow/flow.utils.js +96 -0
- package/src/common/flow/flow.utils.js.map +1 -0
- package/src/common/index.d.ts +2 -2
- package/src/common/index.js +2 -2
- package/src/common/index.js.map +1 -1
- package/src/common/interfaces/execution-context.interface.d.ts +59 -0
- package/src/common/interfaces/execution-context.interface.js +81 -0
- package/src/common/interfaces/execution-context.interface.js.map +1 -0
- package/src/common/interfaces/flow.interface.d.ts +1 -1
- package/src/common/interfaces/flow.interface.js.map +1 -1
- package/src/common/interfaces/index.d.ts +1 -0
- package/src/common/interfaces/index.js +1 -0
- package/src/common/interfaces/index.js.map +1 -1
- package/src/common/interfaces/internal/primary-auth-provider.interface.d.ts +17 -2
- package/src/common/interfaces/internal/primary-auth-provider.interface.js +52 -4
- package/src/common/interfaces/internal/primary-auth-provider.interface.js.map +1 -1
- package/src/common/interfaces/internal/registry.interface.d.ts +16 -2
- package/src/common/interfaces/internal/registry.interface.js.map +1 -1
- package/src/common/interfaces/plugin.interface.js.map +1 -1
- package/src/common/interfaces/prompt.interface.d.ts +53 -4
- package/src/common/interfaces/prompt.interface.js +78 -0
- package/src/common/interfaces/prompt.interface.js.map +1 -1
- package/src/common/interfaces/resource.interface.d.ts +47 -17
- package/src/common/interfaces/resource.interface.js +53 -0
- package/src/common/interfaces/resource.interface.js.map +1 -1
- package/src/common/interfaces/tool.interface.d.ts +39 -22
- package/src/common/interfaces/tool.interface.js +61 -34
- package/src/common/interfaces/tool.interface.js.map +1 -1
- package/src/common/metadata/adapter.metadata.d.ts +1 -9
- package/src/common/metadata/app.metadata.d.ts +425 -730
- package/src/common/metadata/auth-provider.metadata.d.ts +2 -12
- package/src/common/metadata/flow.metadata.d.ts +10 -25
- package/src/common/metadata/front-mcp.metadata.d.ts +602 -1023
- package/src/common/metadata/front-mcp.metadata.js +6 -4
- package/src/common/metadata/front-mcp.metadata.js.map +1 -1
- package/src/common/metadata/hook.metadata.d.ts +1 -1
- package/src/common/metadata/hook.metadata.js.map +1 -1
- package/src/common/metadata/index.d.ts +1 -0
- package/src/common/metadata/index.js +1 -0
- package/src/common/metadata/index.js.map +1 -1
- package/src/common/metadata/logger.metadata.d.ts +1 -9
- package/src/common/metadata/plugin.metadata.d.ts +8 -30
- package/src/common/metadata/prompt.metadata.d.ts +4 -161
- package/src/common/metadata/provider.metadata.d.ts +2 -12
- package/src/common/metadata/resource.metadata.d.ts +6 -98
- package/src/common/metadata/resource.metadata.js +15 -6
- package/src/common/metadata/resource.metadata.js.map +1 -1
- package/src/common/metadata/tool-ui.metadata.d.ts +10 -0
- package/src/common/metadata/tool-ui.metadata.js +12 -0
- package/src/common/metadata/tool-ui.metadata.js.map +1 -0
- package/src/common/metadata/tool.metadata.d.ts +78 -199
- package/src/common/metadata/tool.metadata.js +11 -14
- package/src/common/metadata/tool.metadata.js.map +1 -1
- package/src/common/providers/base-config.provider.d.ts +84 -0
- package/src/common/providers/base-config.provider.js +128 -0
- package/src/common/providers/base-config.provider.js.map +1 -0
- package/src/common/records/plugin.record.d.ts +5 -6
- package/src/common/records/plugin.record.js.map +1 -1
- package/src/common/records/prompt.record.js.map +1 -1
- package/src/common/records/resource.record.d.ts +17 -1
- package/src/common/records/resource.record.js +12 -6
- package/src/common/records/resource.record.js.map +1 -1
- package/src/common/records/tool.record.js.map +1 -1
- package/src/common/schemas/annotated-class.schema.d.ts +9 -9
- package/src/common/schemas/annotated-class.schema.js +92 -27
- package/src/common/schemas/annotated-class.schema.js.map +1 -1
- package/src/common/schemas/http-input.schema.d.ts +6 -30
- package/src/common/schemas/http-output.schema.d.ts +326 -1630
- package/src/common/schemas/http-output.schema.js +39 -1
- package/src/common/schemas/http-output.schema.js.map +1 -1
- package/src/common/tokens/front-mcp.tokens.js +4 -1
- package/src/common/tokens/front-mcp.tokens.js.map +1 -1
- package/src/common/tokens/resource.tokens.d.ts +2 -0
- package/src/common/tokens/resource.tokens.js +4 -1
- package/src/common/tokens/resource.tokens.js.map +1 -1
- package/src/common/tokens/tool.tokens.d.ts +2 -0
- package/src/common/tokens/tool.tokens.js +2 -0
- package/src/common/tokens/tool.tokens.js.map +1 -1
- package/src/common/types/auth/jwt.types.d.ts +5 -31
- package/src/common/types/auth/session.types.d.ts +97 -192
- package/src/common/types/auth/session.types.js +24 -11
- package/src/common/types/auth/session.types.js.map +1 -1
- package/src/common/types/options/auth.options.d.ts +1013 -490
- package/src/common/types/options/auth.options.js +554 -36
- package/src/common/types/options/auth.options.js.map +1 -1
- package/src/common/types/options/http.options.d.ts +1 -9
- package/src/common/types/options/logging.options.d.ts +7 -13
- package/src/common/types/options/logging.options.js +4 -0
- package/src/common/types/options/logging.options.js.map +1 -1
- package/src/common/types/options/server-info.options.d.ts +3 -31
- package/src/common/types/options/session.options.d.ts +90 -10
- package/src/common/types/options/session.options.js +26 -3
- package/src/common/types/options/session.options.js.map +1 -1
- package/src/common/utils/decide-request-intent.utils.d.ts +8 -46
- package/src/common/utils/decide-request-intent.utils.js +88 -23
- package/src/common/utils/decide-request-intent.utils.js.map +1 -1
- package/src/completion/flows/complete.flow.d.ts +74 -0
- package/src/completion/flows/complete.flow.js +199 -0
- package/src/completion/flows/complete.flow.js.map +1 -0
- package/src/errors/authorization-required.error.d.ts +189 -0
- package/src/errors/authorization-required.error.js +274 -0
- package/src/errors/authorization-required.error.js.map +1 -0
- package/src/errors/index.d.ts +2 -1
- package/src/errors/index.js +17 -1
- package/src/errors/index.js.map +1 -1
- package/src/errors/mcp.error.d.ts +101 -1
- package/src/errors/mcp.error.js +147 -2
- package/src/errors/mcp.error.js.map +1 -1
- package/src/flows/flow.instance.js +4 -3
- package/src/flows/flow.instance.js.map +1 -1
- package/src/flows/flow.registry.js.map +1 -1
- package/src/flows/flow.stages.js +14 -11
- package/src/flows/flow.stages.js.map +1 -1
- package/src/front-mcp/front-mcp.providers.d.ts +464 -102
- package/src/front-mcp/front-mcp.providers.js +3 -5
- package/src/front-mcp/front-mcp.providers.js.map +1 -1
- package/src/hooks/hook.instance.d.ts +1 -1
- package/src/hooks/hook.instance.js +5 -2
- package/src/hooks/hook.instance.js.map +1 -1
- package/src/hooks/hook.registry.js +7 -5
- package/src/hooks/hook.registry.js.map +1 -1
- package/src/index.d.ts +28 -9
- package/src/index.js +5 -1
- package/src/index.js.map +1 -1
- package/src/logger/instances/instance.logger.js +3 -2
- package/src/logger/instances/instance.logger.js.map +1 -1
- package/src/logger/logger.registry.js +7 -2
- package/src/logger/logger.registry.js.map +1 -1
- package/src/logging/flows/set-level.flow.d.ts +62 -0
- package/src/logging/flows/set-level.flow.js +108 -0
- package/src/logging/flows/set-level.flow.js.map +1 -0
- package/src/mcp-apps/csp.d.ts +111 -0
- package/src/mcp-apps/csp.js +267 -0
- package/src/mcp-apps/csp.js.map +1 -0
- package/src/mcp-apps/index.d.ts +23 -0
- package/src/mcp-apps/index.js +91 -0
- package/src/mcp-apps/index.js.map +1 -0
- package/src/mcp-apps/schemas.d.ts +403 -0
- package/src/mcp-apps/schemas.js +345 -0
- package/src/mcp-apps/schemas.js.map +1 -0
- package/src/mcp-apps/template.d.ts +94 -0
- package/src/mcp-apps/template.js +419 -0
- package/src/mcp-apps/template.js.map +1 -0
- package/src/mcp-apps/types.d.ts +323 -0
- package/src/mcp-apps/types.js +59 -0
- package/src/mcp-apps/types.js.map +1 -0
- package/src/notification/index.d.ts +1 -0
- package/src/notification/index.js +13 -0
- package/src/notification/index.js.map +1 -0
- package/src/notification/notification.service.d.ts +378 -0
- package/src/notification/notification.service.js +727 -0
- package/src/notification/notification.service.js.map +1 -0
- package/src/plugin/plugin.registry.js +12 -9
- package/src/plugin/plugin.registry.js.map +1 -1
- package/src/prompt/flows/get-prompt.flow.d.ts +153 -0
- package/src/prompt/flows/get-prompt.flow.js +214 -0
- package/src/prompt/flows/get-prompt.flow.js.map +1 -0
- package/src/prompt/flows/prompts-list.flow.d.ts +67 -0
- package/src/prompt/flows/prompts-list.flow.js +176 -0
- package/src/prompt/flows/prompts-list.flow.js.map +1 -0
- package/src/prompt/index.d.ts +7 -0
- package/src/prompt/index.js +17 -0
- package/src/prompt/index.js.map +1 -0
- package/src/prompt/prompt.events.d.ts +17 -0
- package/src/prompt/prompt.events.js +25 -0
- package/src/prompt/prompt.events.js.map +1 -0
- package/src/prompt/prompt.instance.d.ts +30 -0
- package/src/prompt/prompt.instance.js +120 -0
- package/src/prompt/prompt.instance.js.map +1 -0
- package/src/prompt/prompt.registry.d.ts +79 -12
- package/src/prompt/prompt.registry.js +360 -15
- package/src/prompt/prompt.registry.js.map +1 -1
- package/src/prompt/prompt.types.d.ts +26 -0
- package/src/prompt/prompt.types.js +11 -0
- package/src/prompt/prompt.types.js.map +1 -0
- package/src/prompt/prompt.utils.d.ts +26 -0
- package/src/prompt/prompt.utils.js +136 -0
- package/src/prompt/prompt.utils.js.map +1 -0
- package/src/provider/provider.registry.d.ts +12 -5
- package/src/provider/provider.registry.js +30 -138
- package/src/provider/provider.registry.js.map +1 -1
- package/src/regsitry/registry.base.d.ts +1 -1
- package/src/regsitry/registry.base.js.map +1 -1
- package/src/resource/flows/read-resource.flow.d.ts +91 -0
- package/src/resource/flows/read-resource.flow.js +270 -0
- package/src/resource/flows/read-resource.flow.js.map +1 -0
- package/src/resource/flows/resource-templates-list.flow.d.ts +64 -0
- package/src/resource/flows/resource-templates-list.flow.js +191 -0
- package/src/resource/flows/resource-templates-list.flow.js.map +1 -0
- package/src/resource/flows/resources-list.flow.d.ts +64 -0
- package/src/resource/flows/resources-list.flow.js +196 -0
- package/src/resource/flows/resources-list.flow.js.map +1 -0
- package/src/resource/flows/subscribe-resource.flow.d.ts +45 -0
- package/src/resource/flows/subscribe-resource.flow.js +123 -0
- package/src/resource/flows/subscribe-resource.flow.js.map +1 -0
- package/src/resource/flows/unsubscribe-resource.flow.d.ts +44 -0
- package/src/resource/flows/unsubscribe-resource.flow.js +107 -0
- package/src/resource/flows/unsubscribe-resource.flow.js.map +1 -0
- package/src/resource/index.d.ts +8 -0
- package/src/resource/index.js +20 -0
- package/src/resource/index.js.map +1 -0
- package/src/resource/resource.events.d.ts +24 -0
- package/src/resource/resource.events.js +17 -0
- package/src/resource/resource.events.js.map +1 -0
- package/src/resource/resource.instance.d.ts +35 -0
- package/src/resource/resource.instance.js +163 -0
- package/src/resource/resource.instance.js.map +1 -0
- package/src/resource/resource.registry.d.ts +106 -12
- package/src/resource/resource.registry.js +449 -13
- package/src/resource/resource.registry.js.map +1 -1
- package/src/resource/resource.types.d.ts +35 -0
- package/src/resource/resource.types.js +11 -0
- package/src/resource/resource.types.js.map +1 -0
- package/src/resource/resource.utils.d.ts +30 -0
- package/src/resource/resource.utils.js +151 -0
- package/src/resource/resource.utils.js.map +1 -0
- package/src/scope/flows/http.request.flow.d.ts +48 -330
- package/src/scope/flows/http.request.flow.js +306 -78
- package/src/scope/flows/http.request.flow.js.map +1 -1
- package/src/scope/scope.instance.d.ts +12 -0
- package/src/scope/scope.instance.js +145 -15
- package/src/scope/scope.instance.js.map +1 -1
- package/src/tool/flows/call-tool.flow.d.ts +64 -1110
- package/src/tool/flows/call-tool.flow.js +303 -15
- package/src/tool/flows/call-tool.flow.js.map +1 -1
- package/src/tool/flows/tools-list.flow.d.ts +32 -473
- package/src/tool/flows/tools-list.flow.js +121 -40
- package/src/tool/flows/tools-list.flow.js.map +1 -1
- package/src/tool/tool.events.d.ts +8 -1
- package/src/tool/tool.events.js.map +1 -1
- package/src/tool/tool.instance.d.ts +3 -1
- package/src/tool/tool.instance.js +17 -3
- package/src/tool/tool.instance.js.map +1 -1
- package/src/tool/tool.registry.d.ts +7 -1
- package/src/tool/tool.registry.js +26 -10
- package/src/tool/tool.registry.js.map +1 -1
- package/src/tool/tool.types.d.ts +4 -4
- package/src/tool/tool.types.js.map +1 -1
- package/src/tool/tool.utils.d.ts +3 -12
- package/src/tool/tool.utils.js +39 -193
- package/src/tool/tool.utils.js.map +1 -1
- package/src/tool/ui/index.d.ts +22 -0
- package/src/tool/ui/index.js +63 -0
- package/src/tool/ui/index.js.map +1 -0
- package/src/tool/ui/platform-adapters.d.ts +10 -0
- package/src/tool/ui/platform-adapters.js +18 -0
- package/src/tool/ui/platform-adapters.js.map +1 -0
- package/src/tool/ui/template-helpers.d.ts +46 -0
- package/src/tool/ui/template-helpers.js +112 -0
- package/src/tool/ui/template-helpers.js.map +1 -0
- package/src/tool/ui/ui-resource-template.d.ts +34 -0
- package/src/tool/ui/ui-resource-template.js +64 -0
- package/src/tool/ui/ui-resource-template.js.map +1 -0
- package/src/tool/ui/ui-resource.handler.d.ts +74 -0
- package/src/tool/ui/ui-resource.handler.js +129 -0
- package/src/tool/ui/ui-resource.handler.js.map +1 -0
- package/src/transport/adapters/transport.local.adapter.d.ts +2 -2
- package/src/transport/adapters/transport.local.adapter.js +28 -7
- package/src/transport/adapters/transport.local.adapter.js.map +1 -1
- package/src/transport/adapters/transport.sse.adapter.d.ts +2 -2
- package/src/transport/adapters/transport.sse.adapter.js +4 -3
- package/src/transport/adapters/transport.sse.adapter.js.map +1 -1
- package/src/transport/adapters/transport.streamable-http.adapter.d.ts +10 -3
- package/src/transport/adapters/transport.streamable-http.adapter.js +54 -8
- package/src/transport/adapters/transport.streamable-http.adapter.js.map +1 -1
- package/src/transport/flows/handle.sse.flow.d.ts +29 -63
- package/src/transport/flows/handle.sse.flow.js +78 -10
- package/src/transport/flows/handle.sse.flow.js.map +1 -1
- package/src/transport/flows/handle.stateless-http.flow.d.ts +29 -0
- package/src/transport/flows/handle.stateless-http.flow.js +102 -0
- package/src/transport/flows/handle.stateless-http.flow.js.map +1 -0
- package/src/transport/flows/handle.streamable-http.flow.d.ts +32 -64
- package/src/transport/flows/handle.streamable-http.flow.js +158 -26
- package/src/transport/flows/handle.streamable-http.flow.js.map +1 -1
- package/src/transport/legacy/legacy.sse.tranporter.d.ts +9 -0
- package/src/transport/legacy/legacy.sse.tranporter.js +17 -2
- package/src/transport/legacy/legacy.sse.tranporter.js.map +1 -1
- package/src/transport/mcp-handlers/call-tool-request.handler.js +27 -1
- package/src/transport/mcp-handlers/call-tool-request.handler.js.map +1 -1
- package/src/transport/mcp-handlers/complete-request.handler.d.ts +69 -0
- package/src/transport/mcp-handlers/complete-request.handler.js +11 -0
- package/src/transport/mcp-handlers/complete-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/get-prompt-request.handler.d.ts +87 -0
- package/src/transport/mcp-handlers/get-prompt-request.handler.js +11 -0
- package/src/transport/mcp-handlers/get-prompt-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/index.d.ts +517 -208
- package/src/transport/mcp-handlers/index.js +39 -2
- package/src/transport/mcp-handlers/index.js.map +1 -1
- package/src/transport/mcp-handlers/initialize-request.handler.d.ts +1 -1
- package/src/transport/mcp-handlers/initialize-request.handler.js +73 -7
- package/src/transport/mcp-handlers/initialize-request.handler.js.map +1 -1
- package/src/transport/mcp-handlers/list-prompts-request.handler.d.ts +54 -0
- package/src/transport/mcp-handlers/list-prompts-request.handler.js +11 -0
- package/src/transport/mcp-handlers/list-prompts-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/list-resource-templates-request.handler.d.ts +51 -0
- package/src/transport/mcp-handlers/list-resource-templates-request.handler.js +12 -0
- package/src/transport/mcp-handlers/list-resource-templates-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/list-resources-request.handler.d.ts +51 -0
- package/src/transport/mcp-handlers/list-resources-request.handler.js +12 -0
- package/src/transport/mcp-handlers/list-resources-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/list-tools-request.handler.d.ts +19 -146
- package/src/transport/mcp-handlers/logging-set-level-request.handler.d.ts +46 -0
- package/src/transport/mcp-handlers/logging-set-level-request.handler.js +34 -0
- package/src/transport/mcp-handlers/logging-set-level-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/mcp-handlers.types.d.ts +3 -7
- package/src/transport/mcp-handlers/mcp-handlers.types.js.map +1 -1
- package/src/transport/mcp-handlers/read-resource-request.handler.d.ts +46 -0
- package/src/transport/mcp-handlers/read-resource-request.handler.js +12 -0
- package/src/transport/mcp-handlers/read-resource-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/roots-list-changed-notification.handler.d.ts +11 -0
- package/src/transport/mcp-handlers/roots-list-changed-notification.handler.js +26 -0
- package/src/transport/mcp-handlers/roots-list-changed-notification.handler.js.map +1 -0
- package/src/transport/mcp-handlers/subscribe-request.handler.d.ts +37 -0
- package/src/transport/mcp-handlers/subscribe-request.handler.js +34 -0
- package/src/transport/mcp-handlers/subscribe-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/unsubscribe-request.handler.d.ts +37 -0
- package/src/transport/mcp-handlers/unsubscribe-request.handler.js +34 -0
- package/src/transport/mcp-handlers/unsubscribe-request.handler.js.map +1 -0
- package/src/transport/transport.local.js +7 -2
- package/src/transport/transport.local.js.map +1 -1
- package/src/transport/transport.registry.d.ts +30 -0
- package/src/transport/transport.registry.js +84 -1
- package/src/transport/transport.registry.js.map +1 -1
- package/src/transport/transport.types.d.ts +3 -3
- package/src/transport/transport.types.js.map +1 -1
- package/src/utils/content.utils.d.ts +48 -0
- package/src/utils/content.utils.js +194 -0
- package/src/utils/content.utils.js.map +1 -0
- package/src/utils/index.d.ts +8 -0
- package/src/utils/index.js +55 -0
- package/src/utils/index.js.map +1 -0
- package/src/utils/lineage.utils.d.ts +40 -0
- package/src/utils/lineage.utils.js +82 -0
- package/src/utils/lineage.utils.js.map +1 -0
- package/src/utils/naming.utils.d.ts +46 -0
- package/src/utils/naming.utils.js +136 -0
- package/src/utils/naming.utils.js.map +1 -0
- package/src/utils/types.utils.d.ts +2 -2
- package/src/utils/types.utils.js.map +1 -1
- package/src/utils/uri-template.utils.d.ts +57 -0
- package/src/utils/uri-template.utils.js +113 -0
- package/src/utils/uri-template.utils.js.map +1 -0
- package/src/utils/uri-validation.utils.d.ts +40 -0
- package/src/utils/uri-validation.utils.js +76 -0
- package/src/utils/uri-validation.utils.js.map +1 -0
- package/src/__test-utils__/fixtures/hook.fixtures.d.ts +0 -46
- package/src/__test-utils__/fixtures/hook.fixtures.js +0 -114
- package/src/__test-utils__/fixtures/hook.fixtures.js.map +0 -1
- package/src/__test-utils__/fixtures/index.d.ts +0 -7
- package/src/__test-utils__/fixtures/index.js +0 -11
- package/src/__test-utils__/fixtures/index.js.map +0 -1
- package/src/__test-utils__/fixtures/plugin.fixtures.d.ts +0 -46
- package/src/__test-utils__/fixtures/plugin.fixtures.js +0 -127
- package/src/__test-utils__/fixtures/plugin.fixtures.js.map +0 -1
- package/src/__test-utils__/fixtures/provider.fixtures.d.ts +0 -69
- package/src/__test-utils__/fixtures/provider.fixtures.js +0 -131
- package/src/__test-utils__/fixtures/provider.fixtures.js.map +0 -1
- package/src/__test-utils__/fixtures/scope.fixtures.d.ts +0 -14
- package/src/__test-utils__/fixtures/scope.fixtures.js +0 -59
- package/src/__test-utils__/fixtures/scope.fixtures.js.map +0 -1
- package/src/__test-utils__/fixtures/tool.fixtures.d.ts +0 -36
- package/src/__test-utils__/fixtures/tool.fixtures.js +0 -91
- package/src/__test-utils__/fixtures/tool.fixtures.js.map +0 -1
- package/src/__test-utils__/helpers/assertion.helpers.d.ts +0 -45
- package/src/__test-utils__/helpers/assertion.helpers.js +0 -153
- package/src/__test-utils__/helpers/assertion.helpers.js.map +0 -1
- package/src/__test-utils__/helpers/async.helpers.d.ts +0 -48
- package/src/__test-utils__/helpers/async.helpers.js +0 -112
- package/src/__test-utils__/helpers/async.helpers.js.map +0 -1
- package/src/__test-utils__/helpers/index.d.ts +0 -6
- package/src/__test-utils__/helpers/index.js +0 -10
- package/src/__test-utils__/helpers/index.js.map +0 -1
- package/src/__test-utils__/helpers/setup.helpers.d.ts +0 -54
- package/src/__test-utils__/helpers/setup.helpers.js +0 -106
- package/src/__test-utils__/helpers/setup.helpers.js.map +0 -1
- package/src/__test-utils__/index.d.ts +0 -9
- package/src/__test-utils__/index.js +0 -14
- package/src/__test-utils__/index.js.map +0 -1
- package/src/__test-utils__/mocks/flow-instance.mock.d.ts +0 -50
- package/src/__test-utils__/mocks/flow-instance.mock.js +0 -72
- package/src/__test-utils__/mocks/flow-instance.mock.js.map +0 -1
- package/src/__test-utils__/mocks/hook-registry.mock.d.ts +0 -25
- package/src/__test-utils__/mocks/hook-registry.mock.js +0 -65
- package/src/__test-utils__/mocks/hook-registry.mock.js.map +0 -1
- package/src/__test-utils__/mocks/index.d.ts +0 -8
- package/src/__test-utils__/mocks/index.js +0 -12
- package/src/__test-utils__/mocks/index.js.map +0 -1
- package/src/__test-utils__/mocks/plugin-registry.mock.d.ts +0 -43
- package/src/__test-utils__/mocks/plugin-registry.mock.js +0 -70
- package/src/__test-utils__/mocks/plugin-registry.mock.js.map +0 -1
- package/src/__test-utils__/mocks/provider-registry.mock.d.ts +0 -39
- package/src/__test-utils__/mocks/provider-registry.mock.js +0 -72
- package/src/__test-utils__/mocks/provider-registry.mock.js.map +0 -1
- package/src/__test-utils__/mocks/tool-registry.mock.d.ts +0 -43
- package/src/__test-utils__/mocks/tool-registry.mock.js +0 -79
- package/src/__test-utils__/mocks/tool-registry.mock.js.map +0 -1
- package/src/auth/path.utils.d.ts +0 -20
- package/src/auth/path.utils.js +0 -71
- package/src/auth/path.utils.js.map +0 -1
- package/src/common/decorators-old/async-with.decorator.d.ts +0 -10
- package/src/common/decorators-old/async-with.decorator.js +0 -24
- package/src/common/decorators-old/async-with.decorator.js.map +0 -1
- package/src/common/decorators-old/auth-hook.decorator.d.ts +0 -14
- package/src/common/decorators-old/auth-hook.decorator.js +0 -27
- package/src/common/decorators-old/auth-hook.decorator.js.map +0 -1
- package/src/common/decorators-old/session-hook.decorator.d.ts +0 -14
- package/src/common/decorators-old/session-hook.decorator.js +0 -27
- package/src/common/decorators-old/session-hook.decorator.js.map +0 -1
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { Reference, PluginType, ProviderType } from '../interfaces';
|
|
2
|
-
type InitOptions<
|
|
2
|
+
type InitOptions<TInput> = ((TInput & {
|
|
3
3
|
useFactory?: never;
|
|
4
4
|
inject?: never;
|
|
5
5
|
}) & {
|
|
6
6
|
providers?: readonly ProviderType[];
|
|
7
7
|
}) | {
|
|
8
8
|
inject: () => readonly Reference<any>[];
|
|
9
|
-
useFactory: (...args: any[]) =>
|
|
9
|
+
useFactory: (...args: any[]) => TInput;
|
|
10
10
|
providers?: readonly ProviderType[];
|
|
11
11
|
};
|
|
12
|
-
type PluginClassWithOptions<
|
|
12
|
+
type PluginClassWithOptions<TInput, TOptions> = {
|
|
13
13
|
new (...args: any[]): any;
|
|
14
14
|
prototype: {
|
|
15
|
-
__options_brand?:
|
|
15
|
+
__options_brand?: TOptions;
|
|
16
|
+
__options_input_brand?: TInput;
|
|
16
17
|
};
|
|
17
|
-
dynamicProviders?: (options:
|
|
18
|
+
dynamicProviders?: (options: TInput) => readonly ProviderType[];
|
|
18
19
|
};
|
|
19
20
|
type ValueMcpPlugin<T> = {
|
|
20
21
|
provide: any;
|
|
@@ -29,11 +30,21 @@ type FactoryMcpPlugin<T> = {
|
|
|
29
30
|
type PluginReturn<T> = (ValueMcpPlugin<T> | FactoryMcpPlugin<T>) & PluginType & {
|
|
30
31
|
providers?: readonly ProviderType[];
|
|
31
32
|
};
|
|
32
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Base class for plugins that support dynamic configuration.
|
|
35
|
+
*
|
|
36
|
+
* @template TOptions - The resolved options type (after parsing with defaults applied)
|
|
37
|
+
* @template TInput - The input options type (what users provide to init()). Defaults to TOptions for backwards compatibility.
|
|
38
|
+
*/
|
|
39
|
+
export declare abstract class DynamicPlugin<TOptions extends object, TInput extends object = TOptions> {
|
|
33
40
|
/**
|
|
34
|
-
*
|
|
41
|
+
* Brand for resolved options type (used internally).
|
|
35
42
|
*/
|
|
36
43
|
__options_brand: TOptions;
|
|
44
|
+
/**
|
|
45
|
+
* Brand for input options type (used by init()).
|
|
46
|
+
*/
|
|
47
|
+
__options_input_brand: TInput;
|
|
37
48
|
/**
|
|
38
49
|
* Optional hook to contribute providers to the plugin.
|
|
39
50
|
* @param options
|
|
@@ -42,11 +53,11 @@ export declare abstract class DynamicPlugin<TOptions extends object> {
|
|
|
42
53
|
get<T>(token: Reference<T>): T;
|
|
43
54
|
/**
|
|
44
55
|
* Static init() method to create a plugin provider.
|
|
45
|
-
* @param options
|
|
56
|
+
* @param options - Input options (with optional fields for defaults)
|
|
46
57
|
*/
|
|
47
|
-
static init<TThis extends PluginClassWithOptions<any>>(this: TThis, options: InitOptions<TThis['prototype'] extends {
|
|
48
|
-
|
|
49
|
-
} ?
|
|
58
|
+
static init<TThis extends PluginClassWithOptions<any, any>>(this: TThis, options: InitOptions<TThis['prototype'] extends {
|
|
59
|
+
__options_input_brand?: infer I;
|
|
60
|
+
} ? I : never>): PluginReturn<TThis['prototype'] extends {
|
|
50
61
|
__options_brand?: infer O;
|
|
51
62
|
} ? O : never>;
|
|
52
63
|
}
|
|
@@ -2,13 +2,19 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DynamicPlugin = void 0;
|
|
4
4
|
const dynamic_utils_1 = require("./dynamic.utils");
|
|
5
|
+
/**
|
|
6
|
+
* Base class for plugins that support dynamic configuration.
|
|
7
|
+
*
|
|
8
|
+
* @template TOptions - The resolved options type (after parsing with defaults applied)
|
|
9
|
+
* @template TInput - The input options type (what users provide to init()). Defaults to TOptions for backwards compatibility.
|
|
10
|
+
*/
|
|
5
11
|
class DynamicPlugin {
|
|
6
12
|
get(token) {
|
|
7
13
|
throw new Error('Method not implemented.');
|
|
8
14
|
}
|
|
9
15
|
/**
|
|
10
16
|
* Static init() method to create a plugin provider.
|
|
11
|
-
* @param options
|
|
17
|
+
* @param options - Input options (with optional fields for defaults)
|
|
12
18
|
*/
|
|
13
19
|
static init(options) {
|
|
14
20
|
const extraProviders = options.providers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic.plugin.js","sourceRoot":"","sources":["../../../../src/common/dynamic/dynamic.plugin.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"dynamic.plugin.js","sourceRoot":"","sources":["../../../../src/common/dynamic/dynamic.plugin.ts"],"names":[],"mappings":";;;AAEA,mDAAiF;AA0BjF;;;;;GAKG;AACH,MAAsB,aAAa;IAiBjC,GAAG,CAAI,KAAmB;QACxB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,IAAI,CAET,OAAgG;QAEhG,MAAM,cAAc,GAAI,OAAe,CAAC,SAAgD,CAAC;QACzF,MAAM,YAAY,GAAG,OAAc,CAAC;QAEpC,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;YAC5B,OAAO;gBACL,GAAG,YAAY;gBACf,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,OAAO,CAAC,MAAgC;gBAChD,UAAU,EAAE,OAAO,CAAC,UAAiB;gBACrC,SAAS,EAAE,IAAA,qCAAqB,EAAC,cAAc,IAAI,EAAE,CAAC;aACvD,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAA,uCAAuB,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACxD,MAAM,eAAe,GAAG,IAAA,qCAAqB,EAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3F,OAAO;YACL,GAAG,YAAY;YACf,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC;YAC3B,SAAS,EAAE,eAAe;SAC3B,CAAC;IACJ,CAAC;CACF;AAnDD,sCAmDC","sourcesContent":["// dynamic-plugin.ts\nimport { Reference, PluginType, ProviderType, ProviderRegistryInterface } from '../interfaces';\nimport { collectDynamicProviders, dedupePluginProviders } from './dynamic.utils';\n\n// InitOptions accepts input type (what users provide to init())\ntype InitOptions<TInput> =\n | ((TInput & { useFactory?: never; inject?: never }) & { providers?: readonly ProviderType[] })\n | {\n inject: () => readonly Reference<any>[];\n useFactory: (...args: any[]) => TInput;\n providers?: readonly ProviderType[];\n };\n\ntype PluginClassWithOptions<TInput, TOptions> = {\n new (...args: any[]): any;\n prototype: { __options_brand?: TOptions; __options_input_brand?: TInput };\n // optional hook contributed by plugin authors\n dynamicProviders?: (options: TInput) => readonly ProviderType[];\n};\n\ntype ValueMcpPlugin<T> = { provide: any; useValue: T; providers?: ProviderType[] };\ntype FactoryMcpPlugin<T> = { provide: any; inject: () => readonly Reference<any>[]; useFactory: (...args: any[]) => T };\n\ntype PluginReturn<T> = (ValueMcpPlugin<T> | FactoryMcpPlugin<T>) &\n PluginType & {\n providers?: readonly ProviderType[];\n };\n\n/**\n * Base class for plugins that support dynamic configuration.\n *\n * @template TOptions - The resolved options type (after parsing with defaults applied)\n * @template TInput - The input options type (what users provide to init()). Defaults to TOptions for backwards compatibility.\n */\nexport abstract class DynamicPlugin<TOptions extends object, TInput extends object = TOptions> {\n /**\n * Brand for resolved options type (used internally).\n */\n declare __options_brand: TOptions;\n\n /**\n * Brand for input options type (used by init()).\n */\n declare __options_input_brand: TInput;\n\n /**\n * Optional hook to contribute providers to the plugin.\n * @param options\n */\n static dynamicProviders?(options: any): readonly ProviderType[];\n\n get<T>(token: Reference<T>): T {\n throw new Error('Method not implemented.');\n }\n\n /**\n * Static init() method to create a plugin provider.\n * @param options - Input options (with optional fields for defaults)\n */\n static init<TThis extends PluginClassWithOptions<any, any>>(\n this: TThis,\n options: InitOptions<TThis['prototype'] extends { __options_input_brand?: infer I } ? I : never>,\n ): PluginReturn<TThis['prototype'] extends { __options_brand?: infer O } ? O : never> {\n const extraProviders = (options as any).providers as readonly ProviderType[] | undefined;\n const typedOptions = options as any;\n\n if ('useFactory' in options) {\n return {\n ...typedOptions,\n provide: this,\n inject: options.inject as () => Reference<any>[],\n useFactory: options.useFactory as any,\n providers: dedupePluginProviders(extraProviders ?? []),\n };\n }\n\n const dyn = collectDynamicProviders(this, typedOptions);\n const mergedProviders = dedupePluginProviders([...(dyn ?? []), ...(extraProviders ?? [])]);\n return {\n ...typedOptions,\n provide: this,\n useValue: new this(options),\n providers: mergedProviders,\n };\n }\n}\n"]}
|
|
@@ -1,6 +1,50 @@
|
|
|
1
|
-
import { BaseEntry } from './base.entry';
|
|
1
|
+
import { BaseEntry, EntryOwnerRef } from './base.entry';
|
|
2
2
|
import { PromptRecord } from '../records';
|
|
3
|
-
import { PromptInterface } from '../interfaces';
|
|
3
|
+
import { PromptContext, PromptInterface } from '../interfaces';
|
|
4
4
|
import { PromptMetadata } from '../metadata';
|
|
5
|
+
import { GetPromptResult, Request, Notification } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
+
import { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
|
|
7
|
+
import { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types.js';
|
|
8
|
+
export type PromptGetExtra = RequestHandlerExtra<Request, Notification> & {
|
|
9
|
+
authInfo: AuthInfo;
|
|
10
|
+
};
|
|
11
|
+
export type ParsedPromptResult = GetPromptResult;
|
|
12
|
+
export type PromptSafeTransformResult<T> = {
|
|
13
|
+
success: true;
|
|
14
|
+
data: T;
|
|
15
|
+
} | {
|
|
16
|
+
success: false;
|
|
17
|
+
error: Error;
|
|
18
|
+
};
|
|
5
19
|
export declare abstract class PromptEntry extends BaseEntry<PromptRecord, PromptInterface, PromptMetadata> {
|
|
20
|
+
owner: EntryOwnerRef;
|
|
21
|
+
/**
|
|
22
|
+
* The name of the prompt, as declared in the metadata.
|
|
23
|
+
*/
|
|
24
|
+
name: string;
|
|
25
|
+
/**
|
|
26
|
+
* The full name of the prompt, including the owner name as prefix.
|
|
27
|
+
*/
|
|
28
|
+
fullName: string;
|
|
29
|
+
/**
|
|
30
|
+
* Create a prompt context (class or function wrapper).
|
|
31
|
+
* @param args Arguments passed to the prompt
|
|
32
|
+
* @param ctx Request context with auth info
|
|
33
|
+
*/
|
|
34
|
+
abstract create(args: Record<string, string>, ctx: PromptGetExtra): PromptContext;
|
|
35
|
+
/**
|
|
36
|
+
* Parse and validate arguments against the prompt's argument definitions.
|
|
37
|
+
* @param args Arguments from the MCP request
|
|
38
|
+
* @returns Validated arguments
|
|
39
|
+
*/
|
|
40
|
+
abstract parseArguments(args?: Record<string, string>): Record<string, string>;
|
|
41
|
+
/**
|
|
42
|
+
* Convert the raw prompt return value into an MCP GetPromptResult.
|
|
43
|
+
* Accepts any raw output from the prompt execute method and normalizes it.
|
|
44
|
+
*/
|
|
45
|
+
abstract parseOutput(raw: unknown): ParsedPromptResult;
|
|
46
|
+
/**
|
|
47
|
+
* Safe version of parseOutput that returns success/error instead of throwing.
|
|
48
|
+
*/
|
|
49
|
+
abstract safeParseOutput(raw: unknown): PromptSafeTransformResult<ParsedPromptResult>;
|
|
6
50
|
}
|
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// file: libs/sdk/src/common/entries/prompt.entry.ts
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
exports.PromptEntry = void 0;
|
|
4
5
|
const base_entry_1 = require("./base.entry");
|
|
5
6
|
class PromptEntry extends base_entry_1.BaseEntry {
|
|
7
|
+
owner;
|
|
8
|
+
/**
|
|
9
|
+
* The name of the prompt, as declared in the metadata.
|
|
10
|
+
*/
|
|
11
|
+
name;
|
|
12
|
+
/**
|
|
13
|
+
* The full name of the prompt, including the owner name as prefix.
|
|
14
|
+
*/
|
|
15
|
+
fullName;
|
|
6
16
|
}
|
|
7
17
|
exports.PromptEntry = PromptEntry;
|
|
8
18
|
//# sourceMappingURL=prompt.entry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.entry.js","sourceRoot":"","sources":["../../../../src/common/entries/prompt.entry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompt.entry.js","sourceRoot":"","sources":["../../../../src/common/entries/prompt.entry.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAEpD,6CAAwD;AAexD,MAAsB,WAAY,SAAQ,sBAAwD;IAChG,KAAK,CAAgB;IAErB;;OAEG;IACH,IAAI,CAAS;IAEb;;OAEG;IACH,QAAQ,CAAS;CA0BlB;AArCD,kCAqCC","sourcesContent":["// file: libs/sdk/src/common/entries/prompt.entry.ts\n\nimport { BaseEntry, EntryOwnerRef } from './base.entry';\nimport { PromptRecord } from '../records';\nimport { PromptContext, PromptInterface } from '../interfaces';\nimport { PromptMetadata } from '../metadata';\nimport { GetPromptResult, Request, Notification } from '@modelcontextprotocol/sdk/types.js';\nimport { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';\nimport { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types.js';\n\nexport type PromptGetExtra = RequestHandlerExtra<Request, Notification> & {\n authInfo: AuthInfo;\n};\n\nexport type ParsedPromptResult = GetPromptResult;\nexport type PromptSafeTransformResult<T> = { success: true; data: T } | { success: false; error: Error };\n\nexport abstract class PromptEntry extends BaseEntry<PromptRecord, PromptInterface, PromptMetadata> {\n owner: EntryOwnerRef;\n\n /**\n * The name of the prompt, as declared in the metadata.\n */\n name: string;\n\n /**\n * The full name of the prompt, including the owner name as prefix.\n */\n fullName: string;\n\n /**\n * Create a prompt context (class or function wrapper).\n * @param args Arguments passed to the prompt\n * @param ctx Request context with auth info\n */\n abstract create(args: Record<string, string>, ctx: PromptGetExtra): PromptContext;\n\n /**\n * Parse and validate arguments against the prompt's argument definitions.\n * @param args Arguments from the MCP request\n * @returns Validated arguments\n */\n abstract parseArguments(args?: Record<string, string>): Record<string, string>;\n\n /**\n * Convert the raw prompt return value into an MCP GetPromptResult.\n * Accepts any raw output from the prompt execute method and normalizes it.\n */\n abstract parseOutput(raw: unknown): ParsedPromptResult;\n\n /**\n * Safe version of parseOutput that returns success/error instead of throwing.\n */\n abstract safeParseOutput(raw: unknown): PromptSafeTransformResult<ParsedPromptResult>;\n}\n"]}
|
|
@@ -1,7 +1,70 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
1
|
+
import { BaseEntry, EntryOwnerRef } from './base.entry';
|
|
2
|
+
import { AnyResourceRecord } from '../records';
|
|
3
|
+
import { ResourceContext, ResourceInterface } from '../interfaces';
|
|
4
|
+
import { ResourceMetadata, ResourceTemplateMetadata } from '../metadata';
|
|
5
|
+
import { ReadResourceResult, Request, Notification } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
+
import { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
|
|
7
|
+
import { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types.js';
|
|
8
|
+
export type ResourceReadExtra = RequestHandlerExtra<Request, Notification> & {
|
|
9
|
+
authInfo: AuthInfo;
|
|
10
|
+
};
|
|
11
|
+
export type ParsedResourceResult = ReadResourceResult;
|
|
12
|
+
export type ResourceSafeTransformResult<T> = {
|
|
13
|
+
success: true;
|
|
14
|
+
data: T;
|
|
15
|
+
} | {
|
|
16
|
+
success: false;
|
|
17
|
+
error: Error;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Base class for resource entries.
|
|
21
|
+
* @template Params - Type for URI template parameters (e.g., `{ userId: string }`)
|
|
22
|
+
* @template Out - Type for the resource output
|
|
23
|
+
*/
|
|
24
|
+
export declare abstract class ResourceEntry<Params extends Record<string, string> = Record<string, string>, Out = unknown> extends BaseEntry<AnyResourceRecord, ResourceInterface<Params, Out>, ResourceMetadata | ResourceTemplateMetadata> {
|
|
25
|
+
owner: EntryOwnerRef;
|
|
26
|
+
/**
|
|
27
|
+
* The name of the resource, as declared in the metadata.
|
|
28
|
+
*/
|
|
29
|
+
name: string;
|
|
30
|
+
/**
|
|
31
|
+
* The full name of the resource, including the owner name as prefix.
|
|
32
|
+
*/
|
|
33
|
+
fullName: string;
|
|
34
|
+
/**
|
|
35
|
+
* URI for static resources (from ResourceMetadata)
|
|
36
|
+
*/
|
|
37
|
+
uri?: string;
|
|
38
|
+
/**
|
|
39
|
+
* URI template for template resources (from ResourceTemplateMetadata)
|
|
40
|
+
*/
|
|
41
|
+
uriTemplate?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Whether this resource is a template (has uriTemplate instead of uri)
|
|
44
|
+
*/
|
|
45
|
+
isTemplate: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Create a resource context (class or function wrapper).
|
|
48
|
+
* @param uri The actual URI being read (for templates, this includes resolved params)
|
|
49
|
+
* @param params Extracted URI template parameters (empty for static resources)
|
|
50
|
+
* @param ctx Request context with auth info
|
|
51
|
+
*/
|
|
52
|
+
abstract create(uri: string, params: Params, ctx: ResourceReadExtra): ResourceContext<Params, Out>;
|
|
53
|
+
/**
|
|
54
|
+
* Convert the raw resource return value (Out) into an MCP ReadResourceResult.
|
|
55
|
+
*/
|
|
56
|
+
abstract parseOutput(result: Out): ParsedResourceResult;
|
|
57
|
+
/**
|
|
58
|
+
* Safe version of parseOutput that returns success/error instead of throwing.
|
|
59
|
+
*/
|
|
60
|
+
abstract safeParseOutput(raw: Out): ResourceSafeTransformResult<ParsedResourceResult>;
|
|
61
|
+
/**
|
|
62
|
+
* Match a URI against this resource.
|
|
63
|
+
* For static resources: exact match against uri
|
|
64
|
+
* For templates: pattern match and extract parameters
|
|
65
|
+
*/
|
|
66
|
+
abstract matchUri(uri: string): {
|
|
67
|
+
matches: boolean;
|
|
68
|
+
params: Params;
|
|
69
|
+
};
|
|
7
70
|
}
|
|
@@ -1,11 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// file: libs/sdk/src/common/entries/resource.entry.ts
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
exports.ResourceEntry = void 0;
|
|
4
5
|
const base_entry_1 = require("./base.entry");
|
|
6
|
+
/**
|
|
7
|
+
* Base class for resource entries.
|
|
8
|
+
* @template Params - Type for URI template parameters (e.g., `{ userId: string }`)
|
|
9
|
+
* @template Out - Type for the resource output
|
|
10
|
+
*/
|
|
5
11
|
class ResourceEntry extends base_entry_1.BaseEntry {
|
|
12
|
+
owner;
|
|
13
|
+
/**
|
|
14
|
+
* The name of the resource, as declared in the metadata.
|
|
15
|
+
*/
|
|
16
|
+
name;
|
|
17
|
+
/**
|
|
18
|
+
* The full name of the resource, including the owner name as prefix.
|
|
19
|
+
*/
|
|
20
|
+
fullName;
|
|
21
|
+
/**
|
|
22
|
+
* URI for static resources (from ResourceMetadata)
|
|
23
|
+
*/
|
|
24
|
+
uri;
|
|
25
|
+
/**
|
|
26
|
+
* URI template for template resources (from ResourceTemplateMetadata)
|
|
27
|
+
*/
|
|
28
|
+
uriTemplate;
|
|
29
|
+
/**
|
|
30
|
+
* Whether this resource is a template (has uriTemplate instead of uri)
|
|
31
|
+
*/
|
|
32
|
+
isTemplate;
|
|
6
33
|
}
|
|
7
34
|
exports.ResourceEntry = ResourceEntry;
|
|
8
|
-
// TODO: support resource templates
|
|
9
|
-
// abstract class ResourceTemplateEntry<In = z.ZodRawShape, Out = z.ZodRawShape> extends BaseEntry<ResourceTemplateRecord, ResourceTemplateInterface<In, Out>, ResourceTemplateType> {
|
|
10
|
-
// }
|
|
11
35
|
//# sourceMappingURL=resource.entry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.entry.js","sourceRoot":"","sources":["../../../../src/common/entries/resource.entry.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"resource.entry.js","sourceRoot":"","sources":["../../../../src/common/entries/resource.entry.ts"],"names":[],"mappings":";AAAA,sDAAsD;;;AAEtD,6CAAwD;AAexD;;;;GAIG;AACH,MAAsB,aAGpB,SAAQ,sBAAyG;IACjH,KAAK,CAAgB;IAErB;;OAEG;IACH,IAAI,CAAS;IAEb;;OAEG;IACH,QAAQ,CAAS;IAEjB;;OAEG;IACH,GAAG,CAAU;IAEb;;OAEG;IACH,WAAW,CAAU;IAErB;;OAEG;IACH,UAAU,CAAU;CA0BrB;AAvDD,sCAuDC","sourcesContent":["// file: libs/sdk/src/common/entries/resource.entry.ts\n\nimport { BaseEntry, EntryOwnerRef } from './base.entry';\nimport { AnyResourceRecord } from '../records';\nimport { ResourceContext, ResourceInterface } from '../interfaces';\nimport { ResourceMetadata, ResourceTemplateMetadata } from '../metadata';\nimport { ReadResourceResult, Request, Notification } from '@modelcontextprotocol/sdk/types.js';\nimport { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';\nimport { AuthInfo } from '@modelcontextprotocol/sdk/server/auth/types.js';\n\nexport type ResourceReadExtra = RequestHandlerExtra<Request, Notification> & {\n authInfo: AuthInfo;\n};\n\nexport type ParsedResourceResult = ReadResourceResult;\nexport type ResourceSafeTransformResult<T> = { success: true; data: T } | { success: false; error: Error };\n\n/**\n * Base class for resource entries.\n * @template Params - Type for URI template parameters (e.g., `{ userId: string }`)\n * @template Out - Type for the resource output\n */\nexport abstract class ResourceEntry<\n Params extends Record<string, string> = Record<string, string>,\n Out = unknown,\n> extends BaseEntry<AnyResourceRecord, ResourceInterface<Params, Out>, ResourceMetadata | ResourceTemplateMetadata> {\n owner: EntryOwnerRef;\n\n /**\n * The name of the resource, as declared in the metadata.\n */\n name: string;\n\n /**\n * The full name of the resource, including the owner name as prefix.\n */\n fullName: string;\n\n /**\n * URI for static resources (from ResourceMetadata)\n */\n uri?: string;\n\n /**\n * URI template for template resources (from ResourceTemplateMetadata)\n */\n uriTemplate?: string;\n\n /**\n * Whether this resource is a template (has uriTemplate instead of uri)\n */\n isTemplate: boolean;\n\n /**\n * Create a resource context (class or function wrapper).\n * @param uri The actual URI being read (for templates, this includes resolved params)\n * @param params Extracted URI template parameters (empty for static resources)\n * @param ctx Request context with auth info\n */\n abstract create(uri: string, params: Params, ctx: ResourceReadExtra): ResourceContext<Params, Out>;\n\n /**\n * Convert the raw resource return value (Out) into an MCP ReadResourceResult.\n */\n abstract parseOutput(result: Out): ParsedResourceResult;\n\n /**\n * Safe version of parseOutput that returns success/error instead of throwing.\n */\n abstract safeParseOutput(raw: Out): ResourceSafeTransformResult<ParsedResourceResult>;\n\n /**\n * Match a URI against this resource.\n * For static resources: exact match against uri\n * For templates: pattern match and extract parameters\n */\n abstract matchUri(uri: string): { matches: boolean; params: Params };\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { BaseEntry } from './base.entry';
|
|
2
2
|
import { ScopeRecord } from '../records';
|
|
3
|
-
import { ScopeInterface, ProviderRegistryInterface, AppRegistryInterface, AuthRegistryInterface, FrontMcpAuth, Token, FlowInputOf, FlowOutputOf, Type, FlowType, FrontMcpLogger, ToolRegistryInterface, HookRegistryInterface } from '../interfaces';
|
|
3
|
+
import { ScopeInterface, ProviderRegistryInterface, AppRegistryInterface, AuthRegistryInterface, FrontMcpAuth, Token, FlowInputOf, FlowOutputOf, Type, FlowType, FrontMcpLogger, ToolRegistryInterface, HookRegistryInterface, ResourceRegistryInterface, PromptRegistryInterface } from '../interfaces';
|
|
4
4
|
import { FlowName, ScopeMetadata } from '../metadata';
|
|
5
|
+
import type { NotificationService } from '../../notification';
|
|
5
6
|
export declare abstract class ScopeEntry extends BaseEntry<ScopeRecord, ScopeInterface, ScopeMetadata> {
|
|
6
7
|
abstract readonly id: string;
|
|
7
8
|
abstract readonly entryPath: string;
|
|
@@ -14,6 +15,9 @@ export declare abstract class ScopeEntry extends BaseEntry<ScopeRecord, ScopeInt
|
|
|
14
15
|
abstract get providers(): ProviderRegistryInterface;
|
|
15
16
|
abstract get apps(): AppRegistryInterface;
|
|
16
17
|
abstract get tools(): ToolRegistryInterface;
|
|
18
|
+
abstract get resources(): ResourceRegistryInterface;
|
|
19
|
+
abstract get prompts(): PromptRegistryInterface;
|
|
20
|
+
abstract get notifications(): NotificationService;
|
|
17
21
|
abstract registryFlows(...flows: FlowType[]): Promise<void>;
|
|
18
22
|
abstract runFlow<Name extends FlowName>(name: Name, input: FlowInputOf<Name>, additionalDeps?: Map<Token, Type>): Promise<FlowOutputOf<Name> | undefined>;
|
|
19
23
|
}
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ScopeEntry = void 0;
|
|
4
4
|
const base_entry_1 = require("./base.entry");
|
|
5
|
-
const
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
6
|
class ScopeEntry extends base_entry_1.BaseEntry {
|
|
7
7
|
get fullPath() {
|
|
8
|
-
const prefix = (0,
|
|
9
|
-
const scope = (0,
|
|
8
|
+
const prefix = (0, utils_1.normalizeEntryPrefix)(this.entryPath ?? '');
|
|
9
|
+
const scope = (0, utils_1.normalizeScopeBase)(this.routeBase ?? '');
|
|
10
10
|
return `${prefix}${scope}`;
|
|
11
11
|
}
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.entry.js","sourceRoot":"","sources":["../../../../src/common/entries/scope.entry.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"scope.entry.js","sourceRoot":"","sources":["../../../../src/common/entries/scope.entry.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAoBzC,oCAAoE;AAGpE,MAAsB,UAAW,SAAQ,sBAAqD;IAM5F,IAAI,QAAQ;QACV,MAAM,MAAM,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,IAAA,0BAAkB,EAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACvD,OAAO,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC;IAC7B,CAAC;CA2BF;AArCD,gCAqCC","sourcesContent":["import { BaseEntry } from './base.entry';\nimport { ScopeRecord } from '../records';\nimport {\n ScopeInterface,\n ProviderRegistryInterface,\n AppRegistryInterface,\n AuthRegistryInterface,\n FrontMcpAuth,\n Token,\n FlowInputOf,\n FlowOutputOf,\n Type,\n FlowType,\n FrontMcpLogger,\n ToolRegistryInterface,\n HookRegistryInterface,\n ResourceRegistryInterface,\n PromptRegistryInterface,\n} from '../interfaces';\nimport { FlowName, ScopeMetadata } from '../metadata';\nimport { normalizeEntryPrefix, normalizeScopeBase } from '../utils';\nimport type { NotificationService } from '../../notification';\n\nexport abstract class ScopeEntry extends BaseEntry<ScopeRecord, ScopeInterface, ScopeMetadata> {\n abstract readonly id: string;\n abstract readonly entryPath: string;\n abstract readonly routeBase: string;\n abstract readonly logger: FrontMcpLogger;\n\n get fullPath(): string {\n const prefix = normalizeEntryPrefix(this.entryPath ?? '');\n const scope = normalizeScopeBase(this.routeBase ?? '');\n return `${prefix}${scope}`;\n }\n\n abstract get auth(): FrontMcpAuth;\n\n abstract get hooks(): HookRegistryInterface;\n\n abstract get authProviders(): AuthRegistryInterface;\n\n abstract get providers(): ProviderRegistryInterface;\n\n abstract get apps(): AppRegistryInterface;\n\n abstract get tools(): ToolRegistryInterface;\n\n abstract get resources(): ResourceRegistryInterface;\n\n abstract get prompts(): PromptRegistryInterface;\n\n abstract get notifications(): NotificationService;\n\n abstract registryFlows(...flows: FlowType[]): Promise<void>;\n\n abstract runFlow<Name extends FlowName>(\n name: Name,\n input: FlowInputOf<Name>,\n additionalDeps?: Map<Token, Type>,\n ): Promise<FlowOutputOf<Name> | undefined>;\n}\n"]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ZodType } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Parse list request input and validate method.
|
|
4
|
+
* Common pattern used in tools/list, resources/list, etc.
|
|
5
|
+
*
|
|
6
|
+
* @param rawInput - Raw input from the flow
|
|
7
|
+
* @param schema - Zod schema for the input
|
|
8
|
+
* @param expectedMethod - Expected MCP method (e.g., 'tools/list', 'resources/list')
|
|
9
|
+
* @returns Parsed params including cursor
|
|
10
|
+
*/
|
|
11
|
+
export declare function parseListInput<T extends ZodType>(rawInput: unknown, schema: T, expectedMethod: string): {
|
|
12
|
+
cursor?: string;
|
|
13
|
+
params: Record<string, unknown>;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Entry with owner information for conflict resolution
|
|
17
|
+
*/
|
|
18
|
+
export interface OwnedEntry<T> {
|
|
19
|
+
ownerName: string;
|
|
20
|
+
entry: T;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Resolved entry with final name after conflict resolution
|
|
24
|
+
*/
|
|
25
|
+
export interface ResolvedEntry<T> extends OwnedEntry<T> {
|
|
26
|
+
finalName: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Resolve name conflicts by prefixing with owner name.
|
|
30
|
+
* Used for tools, resources, prompts, etc.
|
|
31
|
+
*
|
|
32
|
+
* @param entries - Array of entries with owner names
|
|
33
|
+
* @param getBaseName - Function to extract base name from entry
|
|
34
|
+
* @returns Resolved entries with final names
|
|
35
|
+
*/
|
|
36
|
+
export declare function resolveNameConflicts<T>(entries: OwnedEntry<T>[], getBaseName: (entry: T) => string): ResolvedEntry<T>[];
|
|
37
|
+
/**
|
|
38
|
+
* Get a preview of items for logging (first N items).
|
|
39
|
+
*
|
|
40
|
+
* @param items - Array of items
|
|
41
|
+
* @param getName - Function to extract display name from item
|
|
42
|
+
* @param n - Number of items to preview (default: 5)
|
|
43
|
+
* @returns Formatted preview string
|
|
44
|
+
*/
|
|
45
|
+
export declare function previewItems<T>(items: T[], getName: (item: T) => string, n?: number): string;
|
|
46
|
+
/**
|
|
47
|
+
* Get the count of conflicts from entries.
|
|
48
|
+
*
|
|
49
|
+
* @param entries - Array of entries
|
|
50
|
+
* @param getBaseName - Function to extract base name from entry
|
|
51
|
+
* @returns Object with conflict count and conflict names
|
|
52
|
+
*/
|
|
53
|
+
export declare function detectConflicts<T>(entries: T[], getBaseName: (entry: T) => string): {
|
|
54
|
+
count: number;
|
|
55
|
+
names: string[];
|
|
56
|
+
};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// file: libs/sdk/src/common/flow/flow.utils.ts
|
|
3
|
+
// Shared utilities for list flows (tools/list, resources/list, etc.)
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.parseListInput = parseListInput;
|
|
6
|
+
exports.resolveNameConflicts = resolveNameConflicts;
|
|
7
|
+
exports.previewItems = previewItems;
|
|
8
|
+
exports.detectConflicts = detectConflicts;
|
|
9
|
+
const zod_1 = require("zod");
|
|
10
|
+
const errors_1 = require("../../errors");
|
|
11
|
+
/**
|
|
12
|
+
* Parse list request input and validate method.
|
|
13
|
+
* Common pattern used in tools/list, resources/list, etc.
|
|
14
|
+
*
|
|
15
|
+
* @param rawInput - Raw input from the flow
|
|
16
|
+
* @param schema - Zod schema for the input
|
|
17
|
+
* @param expectedMethod - Expected MCP method (e.g., 'tools/list', 'resources/list')
|
|
18
|
+
* @returns Parsed params including cursor
|
|
19
|
+
*/
|
|
20
|
+
function parseListInput(rawInput, schema, expectedMethod) {
|
|
21
|
+
let method;
|
|
22
|
+
let params;
|
|
23
|
+
try {
|
|
24
|
+
const inputData = schema.parse(rawInput);
|
|
25
|
+
method = inputData.request.method;
|
|
26
|
+
params = inputData.request.params ?? {};
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
throw new errors_1.InvalidInputError('Invalid request format', e instanceof zod_1.z.ZodError ? e.issues : undefined);
|
|
30
|
+
}
|
|
31
|
+
if (method !== expectedMethod) {
|
|
32
|
+
throw new errors_1.InvalidMethodError(method, expectedMethod);
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
cursor: params?.['cursor'],
|
|
36
|
+
params,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Resolve name conflicts by prefixing with owner name.
|
|
41
|
+
* Used for tools, resources, prompts, etc.
|
|
42
|
+
*
|
|
43
|
+
* @param entries - Array of entries with owner names
|
|
44
|
+
* @param getBaseName - Function to extract base name from entry
|
|
45
|
+
* @returns Resolved entries with final names
|
|
46
|
+
*/
|
|
47
|
+
function resolveNameConflicts(entries, getBaseName) {
|
|
48
|
+
// Count occurrences of each base name
|
|
49
|
+
const counts = new Map();
|
|
50
|
+
for (const { entry } of entries) {
|
|
51
|
+
const baseName = getBaseName(entry);
|
|
52
|
+
counts.set(baseName, (counts.get(baseName) ?? 0) + 1);
|
|
53
|
+
}
|
|
54
|
+
// Find which names have conflicts (appear more than once)
|
|
55
|
+
const conflicts = new Set([...counts.entries()].filter(([, n]) => n > 1).map(([k]) => k));
|
|
56
|
+
// Resolve by prefixing conflicting names with owner
|
|
57
|
+
return entries.map(({ ownerName, entry }) => {
|
|
58
|
+
const baseName = getBaseName(entry);
|
|
59
|
+
const finalName = conflicts.has(baseName) ? `${ownerName}:${baseName}` : baseName;
|
|
60
|
+
return { ownerName, entry, finalName };
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get a preview of items for logging (first N items).
|
|
65
|
+
*
|
|
66
|
+
* @param items - Array of items
|
|
67
|
+
* @param getName - Function to extract display name from item
|
|
68
|
+
* @param n - Number of items to preview (default: 5)
|
|
69
|
+
* @returns Formatted preview string
|
|
70
|
+
*/
|
|
71
|
+
function previewItems(items, getName, n = 5) {
|
|
72
|
+
const names = items.slice(0, n).map(getName);
|
|
73
|
+
const preview = names.join(', ');
|
|
74
|
+
const extra = items.length > n ? `, +${items.length - n} more` : '';
|
|
75
|
+
return `${preview}${extra}`;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get the count of conflicts from entries.
|
|
79
|
+
*
|
|
80
|
+
* @param entries - Array of entries
|
|
81
|
+
* @param getBaseName - Function to extract base name from entry
|
|
82
|
+
* @returns Object with conflict count and conflict names
|
|
83
|
+
*/
|
|
84
|
+
function detectConflicts(entries, getBaseName) {
|
|
85
|
+
const counts = new Map();
|
|
86
|
+
for (const entry of entries) {
|
|
87
|
+
const baseName = getBaseName(entry);
|
|
88
|
+
counts.set(baseName, (counts.get(baseName) ?? 0) + 1);
|
|
89
|
+
}
|
|
90
|
+
const conflictNames = [...counts.entries()].filter(([, n]) => n > 1).map(([k]) => k);
|
|
91
|
+
return {
|
|
92
|
+
count: conflictNames.length,
|
|
93
|
+
names: conflictNames,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=flow.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow.utils.js","sourceRoot":"","sources":["../../../../src/common/flow/flow.utils.ts"],"names":[],"mappings":";AAAA,+CAA+C;AAC/C,qEAAqE;;AAcrE,wCAwBC;AAyBD,oDAoBC;AAUD,oCAKC;AASD,0CAgBC;AAzHD,6BAAiC;AACjC,yCAAqE;AAErE;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAC5B,QAAiB,EACjB,MAAS,EACT,cAAsB;IAEtB,IAAI,MAAc,CAAC;IACnB,IAAI,MAA+B,CAAC;IAEpC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAqE,CAAC;QAC7G,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;QAClC,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IAC1C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,0BAAiB,CAAC,wBAAwB,EAAE,CAAC,YAAY,OAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACxG,CAAC;IAED,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;QAC9B,MAAM,IAAI,2BAAkB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvD,CAAC;IAED,OAAO;QACL,MAAM,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAuB;QAChD,MAAM;KACP,CAAC;AACJ,CAAC;AAiBD;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAClC,OAAwB,EACxB,WAAiC;IAEjC,sCAAsC;IACtC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,0DAA0D;IAC1D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAElG,oDAAoD;IACpD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1C,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAClF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAI,KAAU,EAAE,OAA4B,EAAE,CAAC,GAAG,CAAC;IAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,OAAO,GAAG,OAAO,GAAG,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,eAAe,CAC7B,OAAY,EACZ,WAAiC;IAEjC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAErF,OAAO;QACL,KAAK,EAAE,aAAa,CAAC,MAAM;QAC3B,KAAK,EAAE,aAAa;KACrB,CAAC;AACJ,CAAC","sourcesContent":["// file: libs/sdk/src/common/flow/flow.utils.ts\n// Shared utilities for list flows (tools/list, resources/list, etc.)\n\nimport { z, ZodType } from 'zod';\nimport { InvalidInputError, InvalidMethodError } from '../../errors';\n\n/**\n * Parse list request input and validate method.\n * Common pattern used in tools/list, resources/list, etc.\n *\n * @param rawInput - Raw input from the flow\n * @param schema - Zod schema for the input\n * @param expectedMethod - Expected MCP method (e.g., 'tools/list', 'resources/list')\n * @returns Parsed params including cursor\n */\nexport function parseListInput<T extends ZodType>(\n rawInput: unknown,\n schema: T,\n expectedMethod: string,\n): { cursor?: string; params: Record<string, unknown> } {\n let method: string;\n let params: Record<string, unknown>;\n\n try {\n const inputData = schema.parse(rawInput) as { request: { method: string; params: Record<string, unknown> } };\n method = inputData.request.method;\n params = inputData.request.params ?? {};\n } catch (e) {\n throw new InvalidInputError('Invalid request format', e instanceof z.ZodError ? e.issues : undefined);\n }\n\n if (method !== expectedMethod) {\n throw new InvalidMethodError(method, expectedMethod);\n }\n\n return {\n cursor: params?.['cursor'] as string | undefined,\n params,\n };\n}\n\n/**\n * Entry with owner information for conflict resolution\n */\nexport interface OwnedEntry<T> {\n ownerName: string;\n entry: T;\n}\n\n/**\n * Resolved entry with final name after conflict resolution\n */\nexport interface ResolvedEntry<T> extends OwnedEntry<T> {\n finalName: string;\n}\n\n/**\n * Resolve name conflicts by prefixing with owner name.\n * Used for tools, resources, prompts, etc.\n *\n * @param entries - Array of entries with owner names\n * @param getBaseName - Function to extract base name from entry\n * @returns Resolved entries with final names\n */\nexport function resolveNameConflicts<T>(\n entries: OwnedEntry<T>[],\n getBaseName: (entry: T) => string,\n): ResolvedEntry<T>[] {\n // Count occurrences of each base name\n const counts = new Map<string, number>();\n for (const { entry } of entries) {\n const baseName = getBaseName(entry);\n counts.set(baseName, (counts.get(baseName) ?? 0) + 1);\n }\n\n // Find which names have conflicts (appear more than once)\n const conflicts = new Set<string>([...counts.entries()].filter(([, n]) => n > 1).map(([k]) => k));\n\n // Resolve by prefixing conflicting names with owner\n return entries.map(({ ownerName, entry }) => {\n const baseName = getBaseName(entry);\n const finalName = conflicts.has(baseName) ? `${ownerName}:${baseName}` : baseName;\n return { ownerName, entry, finalName };\n });\n}\n\n/**\n * Get a preview of items for logging (first N items).\n *\n * @param items - Array of items\n * @param getName - Function to extract display name from item\n * @param n - Number of items to preview (default: 5)\n * @returns Formatted preview string\n */\nexport function previewItems<T>(items: T[], getName: (item: T) => string, n = 5): string {\n const names = items.slice(0, n).map(getName);\n const preview = names.join(', ');\n const extra = items.length > n ? `, +${items.length - n} more` : '';\n return `${preview}${extra}`;\n}\n\n/**\n * Get the count of conflicts from entries.\n *\n * @param entries - Array of entries\n * @param getBaseName - Function to extract base name from entry\n * @returns Object with conflict count and conflict names\n */\nexport function detectConflicts<T>(\n entries: T[],\n getBaseName: (entry: T) => string,\n): { count: number; names: string[] } {\n const counts = new Map<string, number>();\n for (const entry of entries) {\n const baseName = getBaseName(entry);\n counts.set(baseName, (counts.get(baseName) ?? 0) + 1);\n }\n\n const conflictNames = [...counts.entries()].filter(([, n]) => n > 1).map(([k]) => k);\n\n return {\n count: conflictNames.length,\n names: conflictNames,\n };\n}\n"]}
|
package/src/common/index.d.ts
CHANGED
|
@@ -9,9 +9,9 @@ export * from './records';
|
|
|
9
9
|
export * from './entries';
|
|
10
10
|
export * from './utils';
|
|
11
11
|
export * from './schemas';
|
|
12
|
-
export * from './
|
|
13
|
-
export * from './decorators-old/session-hook.decorator';
|
|
12
|
+
export * from './flow/flow.utils';
|
|
14
13
|
export * from './interfaces/tool-hook.interface';
|
|
15
14
|
export * from './interfaces/session-hook.interface';
|
|
16
15
|
export * from './interfaces/auth-hook.interface';
|
|
17
16
|
export * from './providers/session.provider';
|
|
17
|
+
export * from './providers/base-config.provider';
|
package/src/common/index.js
CHANGED
|
@@ -12,10 +12,10 @@ tslib_1.__exportStar(require("./records"), exports);
|
|
|
12
12
|
tslib_1.__exportStar(require("./entries"), exports);
|
|
13
13
|
tslib_1.__exportStar(require("./utils"), exports);
|
|
14
14
|
tslib_1.__exportStar(require("./schemas"), exports);
|
|
15
|
-
tslib_1.__exportStar(require("./
|
|
16
|
-
tslib_1.__exportStar(require("./decorators-old/session-hook.decorator"), exports);
|
|
15
|
+
tslib_1.__exportStar(require("./flow/flow.utils"), exports);
|
|
17
16
|
tslib_1.__exportStar(require("./interfaces/tool-hook.interface"), exports);
|
|
18
17
|
tslib_1.__exportStar(require("./interfaces/session-hook.interface"), exports);
|
|
19
18
|
tslib_1.__exportStar(require("./interfaces/auth-hook.interface"), exports);
|
|
20
19
|
tslib_1.__exportStar(require("./providers/session.provider"), exports);
|
|
20
|
+
tslib_1.__exportStar(require("./providers/base-config.provider"), exports);
|
|
21
21
|
//# sourceMappingURL=index.js.map
|
package/src/common/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,uDAA6B;AAC7B,kDAAwB;AACxB,qDAA2B;AAC3B,uDAA6B;AAC7B,mDAAyB;AACzB,oDAA0B;AAC1B,oDAA0B;AAC1B,oDAA0B;AAC1B,kDAAwB;AACxB,oDAA0B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,uDAA6B;AAC7B,kDAAwB;AACxB,qDAA2B;AAC3B,uDAA6B;AAC7B,mDAAyB;AACzB,oDAA0B;AAC1B,oDAA0B;AAC1B,oDAA0B;AAC1B,kDAAwB;AACxB,oDAA0B;AAC1B,4DAAkC;AAElC,2EAAiD;AACjD,8EAAoD;AACpD,2EAAiD;AAEjD,uEAA6C;AAC7C,2EAAiD","sourcesContent":["export * from './constants';\nexport * from './decorators';\nexport * from './types';\nexport * from './metadata';\nexport * from './interfaces';\nexport * from './tokens';\nexport * from './dynamic';\nexport * from './records';\nexport * from './entries';\nexport * from './utils';\nexport * from './schemas';\nexport * from './flow/flow.utils';\n\nexport * from './interfaces/tool-hook.interface';\nexport * from './interfaces/session-hook.interface';\nexport * from './interfaces/auth-hook.interface';\n\nexport * from './providers/session.provider';\nexport * from './providers/base-config.provider';\n"]}
|