@frontmcp/sdk 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -18
- package/package.json +20 -5
- package/src/app/app.registry.d.ts +3 -2
- package/src/app/app.registry.js +3 -1
- package/src/app/app.registry.js.map +1 -1
- package/src/app/instances/app.local.instance.js +2 -2
- package/src/app/instances/app.local.instance.js.map +1 -1
- package/src/auth/auth.registry.d.ts +34 -2
- package/src/auth/auth.registry.js +162 -24
- package/src/auth/auth.registry.js.map +1 -1
- package/src/auth/auth.utils.js +8 -9
- package/src/auth/auth.utils.js.map +1 -1
- package/src/auth/authorization/authorization.class.d.ts +125 -0
- package/src/auth/authorization/authorization.class.js +224 -0
- package/src/auth/authorization/authorization.class.js.map +1 -0
- package/src/auth/authorization/authorization.types.d.ts +300 -0
- package/src/auth/authorization/authorization.types.js +79 -0
- package/src/auth/authorization/authorization.types.js.map +1 -0
- package/src/auth/authorization/index.d.ts +5 -0
- package/src/auth/authorization/index.js +19 -0
- package/src/auth/authorization/index.js.map +1 -0
- package/src/auth/authorization/orchestrated.authorization.d.ts +242 -0
- package/src/auth/authorization/orchestrated.authorization.js +306 -0
- package/src/auth/authorization/orchestrated.authorization.js.map +1 -0
- package/src/auth/authorization/public.authorization.d.ts +91 -0
- package/src/auth/authorization/public.authorization.js +132 -0
- package/src/auth/authorization/public.authorization.js.map +1 -0
- package/src/auth/authorization/transparent.authorization.d.ts +130 -0
- package/src/auth/authorization/transparent.authorization.js +147 -0
- package/src/auth/authorization/transparent.authorization.js.map +1 -0
- package/src/auth/consent/consent.types.d.ts +111 -0
- package/src/auth/consent/consent.types.js +119 -0
- package/src/auth/consent/consent.types.js.map +1 -0
- package/src/auth/consent/index.d.ts +1 -0
- package/src/auth/consent/index.js +13 -0
- package/src/auth/consent/index.js.map +1 -0
- package/src/auth/detection/auth-provider-detection.d.ts +84 -0
- package/src/auth/detection/auth-provider-detection.js +230 -0
- package/src/auth/detection/auth-provider-detection.js.map +1 -0
- package/src/auth/detection/index.d.ts +1 -0
- package/src/auth/detection/index.js +15 -0
- package/src/auth/detection/index.js.map +1 -0
- package/src/auth/flows/auth.verify.flow.d.ts +110 -0
- package/src/auth/flows/auth.verify.flow.js +379 -0
- package/src/auth/flows/auth.verify.flow.js.map +1 -0
- package/src/auth/flows/oauth.authorize.flow.d.ts +118 -164
- package/src/auth/flows/oauth.authorize.flow.js +701 -33
- package/src/auth/flows/oauth.authorize.flow.js.map +1 -1
- package/src/auth/flows/oauth.callback.flow.d.ts +117 -0
- package/src/auth/flows/oauth.callback.flow.js +357 -0
- package/src/auth/flows/oauth.callback.flow.js.map +1 -0
- package/src/auth/flows/oauth.register.flow.d.ts +32 -125
- package/src/auth/flows/oauth.token.flow.d.ts +52 -154
- package/src/auth/flows/oauth.token.flow.js +193 -55
- package/src/auth/flows/oauth.token.flow.js.map +1 -1
- package/src/auth/flows/session.verify.flow.d.ts +66 -321
- package/src/auth/flows/session.verify.flow.js +107 -18
- package/src/auth/flows/session.verify.flow.js.map +1 -1
- package/src/auth/flows/well-known.jwks.flow.d.ts +34 -205
- package/src/auth/flows/well-known.jwks.flow.js +15 -8
- package/src/auth/flows/well-known.jwks.flow.js.map +1 -1
- package/src/auth/flows/well-known.oauth-authorization-server.flow.d.ts +48 -223
- package/src/auth/flows/well-known.oauth-authorization-server.flow.js +2 -3
- package/src/auth/flows/well-known.oauth-authorization-server.flow.js.map +1 -1
- package/src/auth/flows/well-known.prm.flow.d.ts +19 -120
- package/src/auth/flows/well-known.prm.flow.js +3 -4
- package/src/auth/flows/well-known.prm.flow.js.map +1 -1
- package/src/auth/instances/instance.local-primary-auth.d.ts +91 -4
- package/src/auth/instances/instance.local-primary-auth.js +236 -6
- package/src/auth/instances/instance.local-primary-auth.js.map +1 -1
- package/src/auth/instances/instance.remote-primary-auth.d.ts +4 -3
- package/src/auth/instances/instance.remote-primary-auth.js +2 -2
- package/src/auth/instances/instance.remote-primary-auth.js.map +1 -1
- package/src/auth/session/authorization-vault.d.ts +611 -0
- package/src/auth/session/authorization-vault.js +817 -0
- package/src/auth/session/authorization-vault.js.map +1 -0
- package/src/auth/session/authorization.store.d.ts +301 -0
- package/src/auth/session/authorization.store.js +323 -0
- package/src/auth/session/authorization.store.js.map +1 -0
- package/src/auth/session/encrypted-authorization-vault.d.ts +181 -0
- package/src/auth/session/encrypted-authorization-vault.js +493 -0
- package/src/auth/session/encrypted-authorization-vault.js.map +1 -0
- package/src/auth/session/index.d.ts +4 -4
- package/src/auth/session/index.js +11 -7
- package/src/auth/session/index.js.map +1 -1
- package/src/auth/session/session.schema.d.ts +1 -1
- package/src/auth/session/session.service.d.ts +1 -1
- package/src/auth/session/transport-session.manager.d.ts +101 -0
- package/src/auth/session/transport-session.manager.js +300 -0
- package/src/auth/session/transport-session.manager.js.map +1 -0
- package/src/auth/session/transport-session.types.d.ts +457 -0
- package/src/auth/session/transport-session.types.js +110 -0
- package/src/auth/session/transport-session.types.js.map +1 -0
- package/src/auth/session/utils/session-id.utils.d.ts +14 -2
- package/src/auth/session/utils/session-id.utils.js +68 -19
- package/src/auth/session/utils/session-id.utils.js.map +1 -1
- package/src/auth/session/vault-encryption.d.ts +189 -0
- package/src/auth/session/vault-encryption.js +263 -0
- package/src/auth/session/vault-encryption.js.map +1 -0
- package/src/auth/ui/base-layout.d.ts +188 -0
- package/src/auth/ui/base-layout.js +292 -0
- package/src/auth/ui/base-layout.js.map +1 -0
- package/src/auth/ui/htmx-templates.d.ts +135 -0
- package/src/auth/ui/htmx-templates.js +433 -0
- package/src/auth/ui/htmx-templates.js.map +1 -0
- package/src/auth/ui/index.d.ts +11 -0
- package/src/auth/ui/index.js +35 -0
- package/src/auth/ui/index.js.map +1 -0
- package/src/auth/utils/audience.validator.d.ts +129 -0
- package/src/auth/utils/audience.validator.js +196 -0
- package/src/auth/utils/audience.validator.js.map +1 -0
- package/src/auth/utils/index.d.ts +2 -0
- package/src/auth/utils/index.js +7 -0
- package/src/auth/utils/index.js.map +1 -0
- package/src/auth/utils/www-authenticate.utils.d.ts +97 -0
- package/src/auth/utils/www-authenticate.utils.js +183 -0
- package/src/auth/utils/www-authenticate.utils.js.map +1 -0
- package/src/common/common.schema.d.ts +2 -16
- package/src/common/constants.d.ts +3 -0
- package/src/common/constants.js +6 -1
- package/src/common/constants.js.map +1 -1
- package/src/common/decorators/decorator-utils.d.ts +131 -0
- package/src/common/decorators/decorator-utils.js +195 -0
- package/src/common/decorators/decorator-utils.js.map +1 -0
- package/src/common/decorators/front-mcp.decorator.js +3 -2
- package/src/common/decorators/front-mcp.decorator.js.map +1 -1
- package/src/common/decorators/hook.decorator.d.ts +58 -2
- package/src/common/decorators/hook.decorator.js +127 -17
- package/src/common/decorators/hook.decorator.js.map +1 -1
- package/src/common/decorators/plugin.decorator.d.ts +1 -1
- package/src/common/decorators/plugin.decorator.js +11 -10
- package/src/common/decorators/plugin.decorator.js.map +1 -1
- package/src/common/decorators/resource.decorator.d.ts +32 -3
- package/src/common/decorators/resource.decorator.js +46 -4
- package/src/common/decorators/resource.decorator.js.map +1 -1
- package/src/common/decorators/tool.decorator.d.ts +54 -5
- package/src/common/decorators/tool.decorator.js.map +1 -1
- package/src/common/dynamic/dynamic.plugin.d.ts +22 -11
- package/src/common/dynamic/dynamic.plugin.js +7 -1
- package/src/common/dynamic/dynamic.plugin.js.map +1 -1
- package/src/common/entries/prompt.entry.d.ts +46 -2
- package/src/common/entries/prompt.entry.js +10 -0
- package/src/common/entries/prompt.entry.js.map +1 -1
- package/src/common/entries/resource.entry.d.ts +69 -6
- package/src/common/entries/resource.entry.js +27 -3
- package/src/common/entries/resource.entry.js.map +1 -1
- package/src/common/entries/scope.entry.d.ts +5 -1
- package/src/common/entries/scope.entry.js +3 -3
- package/src/common/entries/scope.entry.js.map +1 -1
- package/src/common/flow/flow.utils.d.ts +56 -0
- package/src/common/flow/flow.utils.js +96 -0
- package/src/common/flow/flow.utils.js.map +1 -0
- package/src/common/index.d.ts +2 -2
- package/src/common/index.js +2 -2
- package/src/common/index.js.map +1 -1
- package/src/common/interfaces/execution-context.interface.d.ts +59 -0
- package/src/common/interfaces/execution-context.interface.js +81 -0
- package/src/common/interfaces/execution-context.interface.js.map +1 -0
- package/src/common/interfaces/flow.interface.d.ts +1 -1
- package/src/common/interfaces/flow.interface.js.map +1 -1
- package/src/common/interfaces/index.d.ts +1 -0
- package/src/common/interfaces/index.js +1 -0
- package/src/common/interfaces/index.js.map +1 -1
- package/src/common/interfaces/internal/primary-auth-provider.interface.d.ts +17 -2
- package/src/common/interfaces/internal/primary-auth-provider.interface.js +52 -4
- package/src/common/interfaces/internal/primary-auth-provider.interface.js.map +1 -1
- package/src/common/interfaces/internal/registry.interface.d.ts +16 -2
- package/src/common/interfaces/internal/registry.interface.js.map +1 -1
- package/src/common/interfaces/plugin.interface.js.map +1 -1
- package/src/common/interfaces/prompt.interface.d.ts +53 -4
- package/src/common/interfaces/prompt.interface.js +78 -0
- package/src/common/interfaces/prompt.interface.js.map +1 -1
- package/src/common/interfaces/resource.interface.d.ts +47 -17
- package/src/common/interfaces/resource.interface.js +53 -0
- package/src/common/interfaces/resource.interface.js.map +1 -1
- package/src/common/interfaces/tool.interface.d.ts +39 -22
- package/src/common/interfaces/tool.interface.js +61 -34
- package/src/common/interfaces/tool.interface.js.map +1 -1
- package/src/common/metadata/adapter.metadata.d.ts +1 -9
- package/src/common/metadata/app.metadata.d.ts +425 -730
- package/src/common/metadata/auth-provider.metadata.d.ts +2 -12
- package/src/common/metadata/flow.metadata.d.ts +10 -25
- package/src/common/metadata/front-mcp.metadata.d.ts +602 -1023
- package/src/common/metadata/front-mcp.metadata.js +6 -4
- package/src/common/metadata/front-mcp.metadata.js.map +1 -1
- package/src/common/metadata/hook.metadata.d.ts +1 -1
- package/src/common/metadata/hook.metadata.js.map +1 -1
- package/src/common/metadata/index.d.ts +1 -0
- package/src/common/metadata/index.js +1 -0
- package/src/common/metadata/index.js.map +1 -1
- package/src/common/metadata/logger.metadata.d.ts +1 -9
- package/src/common/metadata/plugin.metadata.d.ts +8 -30
- package/src/common/metadata/prompt.metadata.d.ts +4 -161
- package/src/common/metadata/provider.metadata.d.ts +2 -12
- package/src/common/metadata/resource.metadata.d.ts +6 -98
- package/src/common/metadata/resource.metadata.js +15 -6
- package/src/common/metadata/resource.metadata.js.map +1 -1
- package/src/common/metadata/tool-ui.metadata.d.ts +10 -0
- package/src/common/metadata/tool-ui.metadata.js +12 -0
- package/src/common/metadata/tool-ui.metadata.js.map +1 -0
- package/src/common/metadata/tool.metadata.d.ts +78 -199
- package/src/common/metadata/tool.metadata.js +11 -14
- package/src/common/metadata/tool.metadata.js.map +1 -1
- package/src/common/providers/base-config.provider.d.ts +84 -0
- package/src/common/providers/base-config.provider.js +128 -0
- package/src/common/providers/base-config.provider.js.map +1 -0
- package/src/common/records/plugin.record.d.ts +5 -6
- package/src/common/records/plugin.record.js.map +1 -1
- package/src/common/records/prompt.record.js.map +1 -1
- package/src/common/records/resource.record.d.ts +17 -1
- package/src/common/records/resource.record.js +12 -6
- package/src/common/records/resource.record.js.map +1 -1
- package/src/common/records/tool.record.js.map +1 -1
- package/src/common/schemas/annotated-class.schema.d.ts +9 -9
- package/src/common/schemas/annotated-class.schema.js +92 -27
- package/src/common/schemas/annotated-class.schema.js.map +1 -1
- package/src/common/schemas/http-input.schema.d.ts +6 -30
- package/src/common/schemas/http-output.schema.d.ts +326 -1630
- package/src/common/schemas/http-output.schema.js +39 -1
- package/src/common/schemas/http-output.schema.js.map +1 -1
- package/src/common/tokens/front-mcp.tokens.js +4 -1
- package/src/common/tokens/front-mcp.tokens.js.map +1 -1
- package/src/common/tokens/resource.tokens.d.ts +2 -0
- package/src/common/tokens/resource.tokens.js +4 -1
- package/src/common/tokens/resource.tokens.js.map +1 -1
- package/src/common/tokens/tool.tokens.d.ts +2 -0
- package/src/common/tokens/tool.tokens.js +2 -0
- package/src/common/tokens/tool.tokens.js.map +1 -1
- package/src/common/types/auth/jwt.types.d.ts +5 -31
- package/src/common/types/auth/session.types.d.ts +97 -192
- package/src/common/types/auth/session.types.js +24 -11
- package/src/common/types/auth/session.types.js.map +1 -1
- package/src/common/types/options/auth.options.d.ts +1013 -490
- package/src/common/types/options/auth.options.js +554 -36
- package/src/common/types/options/auth.options.js.map +1 -1
- package/src/common/types/options/http.options.d.ts +1 -9
- package/src/common/types/options/logging.options.d.ts +7 -13
- package/src/common/types/options/logging.options.js +4 -0
- package/src/common/types/options/logging.options.js.map +1 -1
- package/src/common/types/options/server-info.options.d.ts +3 -31
- package/src/common/types/options/session.options.d.ts +90 -10
- package/src/common/types/options/session.options.js +26 -3
- package/src/common/types/options/session.options.js.map +1 -1
- package/src/common/utils/decide-request-intent.utils.d.ts +8 -46
- package/src/common/utils/decide-request-intent.utils.js +88 -23
- package/src/common/utils/decide-request-intent.utils.js.map +1 -1
- package/src/completion/flows/complete.flow.d.ts +74 -0
- package/src/completion/flows/complete.flow.js +199 -0
- package/src/completion/flows/complete.flow.js.map +1 -0
- package/src/errors/authorization-required.error.d.ts +189 -0
- package/src/errors/authorization-required.error.js +274 -0
- package/src/errors/authorization-required.error.js.map +1 -0
- package/src/errors/index.d.ts +2 -1
- package/src/errors/index.js +17 -1
- package/src/errors/index.js.map +1 -1
- package/src/errors/mcp.error.d.ts +101 -1
- package/src/errors/mcp.error.js +147 -2
- package/src/errors/mcp.error.js.map +1 -1
- package/src/flows/flow.instance.js +4 -3
- package/src/flows/flow.instance.js.map +1 -1
- package/src/flows/flow.registry.js.map +1 -1
- package/src/flows/flow.stages.js +14 -11
- package/src/flows/flow.stages.js.map +1 -1
- package/src/front-mcp/front-mcp.providers.d.ts +464 -102
- package/src/front-mcp/front-mcp.providers.js +3 -5
- package/src/front-mcp/front-mcp.providers.js.map +1 -1
- package/src/hooks/hook.instance.d.ts +1 -1
- package/src/hooks/hook.instance.js +5 -2
- package/src/hooks/hook.instance.js.map +1 -1
- package/src/hooks/hook.registry.js +7 -5
- package/src/hooks/hook.registry.js.map +1 -1
- package/src/index.d.ts +28 -9
- package/src/index.js +5 -1
- package/src/index.js.map +1 -1
- package/src/logger/instances/instance.logger.js +3 -2
- package/src/logger/instances/instance.logger.js.map +1 -1
- package/src/logger/logger.registry.js +7 -2
- package/src/logger/logger.registry.js.map +1 -1
- package/src/logging/flows/set-level.flow.d.ts +62 -0
- package/src/logging/flows/set-level.flow.js +108 -0
- package/src/logging/flows/set-level.flow.js.map +1 -0
- package/src/mcp-apps/csp.d.ts +111 -0
- package/src/mcp-apps/csp.js +267 -0
- package/src/mcp-apps/csp.js.map +1 -0
- package/src/mcp-apps/index.d.ts +23 -0
- package/src/mcp-apps/index.js +91 -0
- package/src/mcp-apps/index.js.map +1 -0
- package/src/mcp-apps/schemas.d.ts +403 -0
- package/src/mcp-apps/schemas.js +345 -0
- package/src/mcp-apps/schemas.js.map +1 -0
- package/src/mcp-apps/template.d.ts +94 -0
- package/src/mcp-apps/template.js +419 -0
- package/src/mcp-apps/template.js.map +1 -0
- package/src/mcp-apps/types.d.ts +323 -0
- package/src/mcp-apps/types.js +59 -0
- package/src/mcp-apps/types.js.map +1 -0
- package/src/notification/index.d.ts +1 -0
- package/src/notification/index.js +13 -0
- package/src/notification/index.js.map +1 -0
- package/src/notification/notification.service.d.ts +378 -0
- package/src/notification/notification.service.js +727 -0
- package/src/notification/notification.service.js.map +1 -0
- package/src/plugin/plugin.registry.js +12 -9
- package/src/plugin/plugin.registry.js.map +1 -1
- package/src/prompt/flows/get-prompt.flow.d.ts +153 -0
- package/src/prompt/flows/get-prompt.flow.js +214 -0
- package/src/prompt/flows/get-prompt.flow.js.map +1 -0
- package/src/prompt/flows/prompts-list.flow.d.ts +67 -0
- package/src/prompt/flows/prompts-list.flow.js +176 -0
- package/src/prompt/flows/prompts-list.flow.js.map +1 -0
- package/src/prompt/index.d.ts +7 -0
- package/src/prompt/index.js +17 -0
- package/src/prompt/index.js.map +1 -0
- package/src/prompt/prompt.events.d.ts +17 -0
- package/src/prompt/prompt.events.js +25 -0
- package/src/prompt/prompt.events.js.map +1 -0
- package/src/prompt/prompt.instance.d.ts +30 -0
- package/src/prompt/prompt.instance.js +120 -0
- package/src/prompt/prompt.instance.js.map +1 -0
- package/src/prompt/prompt.registry.d.ts +79 -12
- package/src/prompt/prompt.registry.js +360 -15
- package/src/prompt/prompt.registry.js.map +1 -1
- package/src/prompt/prompt.types.d.ts +26 -0
- package/src/prompt/prompt.types.js +11 -0
- package/src/prompt/prompt.types.js.map +1 -0
- package/src/prompt/prompt.utils.d.ts +26 -0
- package/src/prompt/prompt.utils.js +136 -0
- package/src/prompt/prompt.utils.js.map +1 -0
- package/src/provider/provider.registry.d.ts +12 -5
- package/src/provider/provider.registry.js +30 -138
- package/src/provider/provider.registry.js.map +1 -1
- package/src/regsitry/registry.base.d.ts +1 -1
- package/src/regsitry/registry.base.js.map +1 -1
- package/src/resource/flows/read-resource.flow.d.ts +91 -0
- package/src/resource/flows/read-resource.flow.js +270 -0
- package/src/resource/flows/read-resource.flow.js.map +1 -0
- package/src/resource/flows/resource-templates-list.flow.d.ts +64 -0
- package/src/resource/flows/resource-templates-list.flow.js +191 -0
- package/src/resource/flows/resource-templates-list.flow.js.map +1 -0
- package/src/resource/flows/resources-list.flow.d.ts +64 -0
- package/src/resource/flows/resources-list.flow.js +196 -0
- package/src/resource/flows/resources-list.flow.js.map +1 -0
- package/src/resource/flows/subscribe-resource.flow.d.ts +45 -0
- package/src/resource/flows/subscribe-resource.flow.js +123 -0
- package/src/resource/flows/subscribe-resource.flow.js.map +1 -0
- package/src/resource/flows/unsubscribe-resource.flow.d.ts +44 -0
- package/src/resource/flows/unsubscribe-resource.flow.js +107 -0
- package/src/resource/flows/unsubscribe-resource.flow.js.map +1 -0
- package/src/resource/index.d.ts +8 -0
- package/src/resource/index.js +20 -0
- package/src/resource/index.js.map +1 -0
- package/src/resource/resource.events.d.ts +24 -0
- package/src/resource/resource.events.js +17 -0
- package/src/resource/resource.events.js.map +1 -0
- package/src/resource/resource.instance.d.ts +35 -0
- package/src/resource/resource.instance.js +163 -0
- package/src/resource/resource.instance.js.map +1 -0
- package/src/resource/resource.registry.d.ts +106 -12
- package/src/resource/resource.registry.js +449 -13
- package/src/resource/resource.registry.js.map +1 -1
- package/src/resource/resource.types.d.ts +35 -0
- package/src/resource/resource.types.js +11 -0
- package/src/resource/resource.types.js.map +1 -0
- package/src/resource/resource.utils.d.ts +30 -0
- package/src/resource/resource.utils.js +151 -0
- package/src/resource/resource.utils.js.map +1 -0
- package/src/scope/flows/http.request.flow.d.ts +48 -330
- package/src/scope/flows/http.request.flow.js +306 -78
- package/src/scope/flows/http.request.flow.js.map +1 -1
- package/src/scope/scope.instance.d.ts +12 -0
- package/src/scope/scope.instance.js +145 -15
- package/src/scope/scope.instance.js.map +1 -1
- package/src/tool/flows/call-tool.flow.d.ts +64 -1110
- package/src/tool/flows/call-tool.flow.js +303 -15
- package/src/tool/flows/call-tool.flow.js.map +1 -1
- package/src/tool/flows/tools-list.flow.d.ts +32 -473
- package/src/tool/flows/tools-list.flow.js +111 -10
- package/src/tool/flows/tools-list.flow.js.map +1 -1
- package/src/tool/tool.events.d.ts +8 -1
- package/src/tool/tool.events.js.map +1 -1
- package/src/tool/tool.instance.d.ts +3 -1
- package/src/tool/tool.instance.js +17 -3
- package/src/tool/tool.instance.js.map +1 -1
- package/src/tool/tool.registry.d.ts +7 -1
- package/src/tool/tool.registry.js +26 -10
- package/src/tool/tool.registry.js.map +1 -1
- package/src/tool/tool.types.d.ts +4 -4
- package/src/tool/tool.types.js.map +1 -1
- package/src/tool/tool.utils.d.ts +3 -12
- package/src/tool/tool.utils.js +39 -193
- package/src/tool/tool.utils.js.map +1 -1
- package/src/tool/ui/index.d.ts +22 -0
- package/src/tool/ui/index.js +63 -0
- package/src/tool/ui/index.js.map +1 -0
- package/src/tool/ui/platform-adapters.d.ts +10 -0
- package/src/tool/ui/platform-adapters.js +18 -0
- package/src/tool/ui/platform-adapters.js.map +1 -0
- package/src/tool/ui/template-helpers.d.ts +46 -0
- package/src/tool/ui/template-helpers.js +112 -0
- package/src/tool/ui/template-helpers.js.map +1 -0
- package/src/tool/ui/ui-resource-template.d.ts +34 -0
- package/src/tool/ui/ui-resource-template.js +64 -0
- package/src/tool/ui/ui-resource-template.js.map +1 -0
- package/src/tool/ui/ui-resource.handler.d.ts +74 -0
- package/src/tool/ui/ui-resource.handler.js +129 -0
- package/src/tool/ui/ui-resource.handler.js.map +1 -0
- package/src/transport/adapters/transport.local.adapter.d.ts +2 -2
- package/src/transport/adapters/transport.local.adapter.js +28 -7
- package/src/transport/adapters/transport.local.adapter.js.map +1 -1
- package/src/transport/adapters/transport.sse.adapter.d.ts +2 -2
- package/src/transport/adapters/transport.sse.adapter.js +4 -3
- package/src/transport/adapters/transport.sse.adapter.js.map +1 -1
- package/src/transport/adapters/transport.streamable-http.adapter.d.ts +10 -3
- package/src/transport/adapters/transport.streamable-http.adapter.js +54 -8
- package/src/transport/adapters/transport.streamable-http.adapter.js.map +1 -1
- package/src/transport/flows/handle.sse.flow.d.ts +29 -63
- package/src/transport/flows/handle.sse.flow.js +78 -10
- package/src/transport/flows/handle.sse.flow.js.map +1 -1
- package/src/transport/flows/handle.stateless-http.flow.d.ts +29 -0
- package/src/transport/flows/handle.stateless-http.flow.js +102 -0
- package/src/transport/flows/handle.stateless-http.flow.js.map +1 -0
- package/src/transport/flows/handle.streamable-http.flow.d.ts +32 -64
- package/src/transport/flows/handle.streamable-http.flow.js +158 -26
- package/src/transport/flows/handle.streamable-http.flow.js.map +1 -1
- package/src/transport/legacy/legacy.sse.tranporter.d.ts +9 -0
- package/src/transport/legacy/legacy.sse.tranporter.js +17 -2
- package/src/transport/legacy/legacy.sse.tranporter.js.map +1 -1
- package/src/transport/mcp-handlers/call-tool-request.handler.js +27 -1
- package/src/transport/mcp-handlers/call-tool-request.handler.js.map +1 -1
- package/src/transport/mcp-handlers/complete-request.handler.d.ts +69 -0
- package/src/transport/mcp-handlers/complete-request.handler.js +11 -0
- package/src/transport/mcp-handlers/complete-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/get-prompt-request.handler.d.ts +87 -0
- package/src/transport/mcp-handlers/get-prompt-request.handler.js +11 -0
- package/src/transport/mcp-handlers/get-prompt-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/index.d.ts +517 -208
- package/src/transport/mcp-handlers/index.js +39 -2
- package/src/transport/mcp-handlers/index.js.map +1 -1
- package/src/transport/mcp-handlers/initialize-request.handler.d.ts +1 -1
- package/src/transport/mcp-handlers/initialize-request.handler.js +73 -7
- package/src/transport/mcp-handlers/initialize-request.handler.js.map +1 -1
- package/src/transport/mcp-handlers/list-prompts-request.handler.d.ts +54 -0
- package/src/transport/mcp-handlers/list-prompts-request.handler.js +11 -0
- package/src/transport/mcp-handlers/list-prompts-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/list-resource-templates-request.handler.d.ts +51 -0
- package/src/transport/mcp-handlers/list-resource-templates-request.handler.js +12 -0
- package/src/transport/mcp-handlers/list-resource-templates-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/list-resources-request.handler.d.ts +51 -0
- package/src/transport/mcp-handlers/list-resources-request.handler.js +12 -0
- package/src/transport/mcp-handlers/list-resources-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/list-tools-request.handler.d.ts +19 -146
- package/src/transport/mcp-handlers/logging-set-level-request.handler.d.ts +46 -0
- package/src/transport/mcp-handlers/logging-set-level-request.handler.js +34 -0
- package/src/transport/mcp-handlers/logging-set-level-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/mcp-handlers.types.d.ts +3 -7
- package/src/transport/mcp-handlers/mcp-handlers.types.js.map +1 -1
- package/src/transport/mcp-handlers/read-resource-request.handler.d.ts +46 -0
- package/src/transport/mcp-handlers/read-resource-request.handler.js +12 -0
- package/src/transport/mcp-handlers/read-resource-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/roots-list-changed-notification.handler.d.ts +11 -0
- package/src/transport/mcp-handlers/roots-list-changed-notification.handler.js +26 -0
- package/src/transport/mcp-handlers/roots-list-changed-notification.handler.js.map +1 -0
- package/src/transport/mcp-handlers/subscribe-request.handler.d.ts +37 -0
- package/src/transport/mcp-handlers/subscribe-request.handler.js +34 -0
- package/src/transport/mcp-handlers/subscribe-request.handler.js.map +1 -0
- package/src/transport/mcp-handlers/unsubscribe-request.handler.d.ts +37 -0
- package/src/transport/mcp-handlers/unsubscribe-request.handler.js +34 -0
- package/src/transport/mcp-handlers/unsubscribe-request.handler.js.map +1 -0
- package/src/transport/transport.local.js +7 -2
- package/src/transport/transport.local.js.map +1 -1
- package/src/transport/transport.registry.d.ts +30 -0
- package/src/transport/transport.registry.js +84 -1
- package/src/transport/transport.registry.js.map +1 -1
- package/src/transport/transport.types.d.ts +3 -3
- package/src/transport/transport.types.js.map +1 -1
- package/src/utils/content.utils.d.ts +48 -0
- package/src/utils/content.utils.js +194 -0
- package/src/utils/content.utils.js.map +1 -0
- package/src/utils/index.d.ts +8 -0
- package/src/utils/index.js +55 -0
- package/src/utils/index.js.map +1 -0
- package/src/utils/lineage.utils.d.ts +40 -0
- package/src/utils/lineage.utils.js +82 -0
- package/src/utils/lineage.utils.js.map +1 -0
- package/src/utils/naming.utils.d.ts +46 -0
- package/src/utils/naming.utils.js +136 -0
- package/src/utils/naming.utils.js.map +1 -0
- package/src/utils/types.utils.d.ts +2 -2
- package/src/utils/types.utils.js.map +1 -1
- package/src/utils/uri-template.utils.d.ts +57 -0
- package/src/utils/uri-template.utils.js +113 -0
- package/src/utils/uri-template.utils.js.map +1 -0
- package/src/utils/uri-validation.utils.d.ts +40 -0
- package/src/utils/uri-validation.utils.js +76 -0
- package/src/utils/uri-validation.utils.js.map +1 -0
- package/src/__test-utils__/fixtures/hook.fixtures.d.ts +0 -46
- package/src/__test-utils__/fixtures/hook.fixtures.js +0 -114
- package/src/__test-utils__/fixtures/hook.fixtures.js.map +0 -1
- package/src/__test-utils__/fixtures/index.d.ts +0 -7
- package/src/__test-utils__/fixtures/index.js +0 -11
- package/src/__test-utils__/fixtures/index.js.map +0 -1
- package/src/__test-utils__/fixtures/plugin.fixtures.d.ts +0 -46
- package/src/__test-utils__/fixtures/plugin.fixtures.js +0 -127
- package/src/__test-utils__/fixtures/plugin.fixtures.js.map +0 -1
- package/src/__test-utils__/fixtures/provider.fixtures.d.ts +0 -69
- package/src/__test-utils__/fixtures/provider.fixtures.js +0 -131
- package/src/__test-utils__/fixtures/provider.fixtures.js.map +0 -1
- package/src/__test-utils__/fixtures/scope.fixtures.d.ts +0 -14
- package/src/__test-utils__/fixtures/scope.fixtures.js +0 -59
- package/src/__test-utils__/fixtures/scope.fixtures.js.map +0 -1
- package/src/__test-utils__/fixtures/tool.fixtures.d.ts +0 -36
- package/src/__test-utils__/fixtures/tool.fixtures.js +0 -91
- package/src/__test-utils__/fixtures/tool.fixtures.js.map +0 -1
- package/src/__test-utils__/helpers/assertion.helpers.d.ts +0 -45
- package/src/__test-utils__/helpers/assertion.helpers.js +0 -153
- package/src/__test-utils__/helpers/assertion.helpers.js.map +0 -1
- package/src/__test-utils__/helpers/async.helpers.d.ts +0 -48
- package/src/__test-utils__/helpers/async.helpers.js +0 -112
- package/src/__test-utils__/helpers/async.helpers.js.map +0 -1
- package/src/__test-utils__/helpers/index.d.ts +0 -6
- package/src/__test-utils__/helpers/index.js +0 -10
- package/src/__test-utils__/helpers/index.js.map +0 -1
- package/src/__test-utils__/helpers/setup.helpers.d.ts +0 -54
- package/src/__test-utils__/helpers/setup.helpers.js +0 -106
- package/src/__test-utils__/helpers/setup.helpers.js.map +0 -1
- package/src/__test-utils__/index.d.ts +0 -9
- package/src/__test-utils__/index.js +0 -14
- package/src/__test-utils__/index.js.map +0 -1
- package/src/__test-utils__/mocks/flow-instance.mock.d.ts +0 -50
- package/src/__test-utils__/mocks/flow-instance.mock.js +0 -72
- package/src/__test-utils__/mocks/flow-instance.mock.js.map +0 -1
- package/src/__test-utils__/mocks/hook-registry.mock.d.ts +0 -25
- package/src/__test-utils__/mocks/hook-registry.mock.js +0 -65
- package/src/__test-utils__/mocks/hook-registry.mock.js.map +0 -1
- package/src/__test-utils__/mocks/index.d.ts +0 -8
- package/src/__test-utils__/mocks/index.js +0 -12
- package/src/__test-utils__/mocks/index.js.map +0 -1
- package/src/__test-utils__/mocks/plugin-registry.mock.d.ts +0 -43
- package/src/__test-utils__/mocks/plugin-registry.mock.js +0 -70
- package/src/__test-utils__/mocks/plugin-registry.mock.js.map +0 -1
- package/src/__test-utils__/mocks/provider-registry.mock.d.ts +0 -39
- package/src/__test-utils__/mocks/provider-registry.mock.js +0 -72
- package/src/__test-utils__/mocks/provider-registry.mock.js.map +0 -1
- package/src/__test-utils__/mocks/tool-registry.mock.d.ts +0 -43
- package/src/__test-utils__/mocks/tool-registry.mock.js +0 -79
- package/src/__test-utils__/mocks/tool-registry.mock.js.map +0 -1
- package/src/auth/path.utils.d.ts +0 -20
- package/src/auth/path.utils.js +0 -71
- package/src/auth/path.utils.js.map +0 -1
- package/src/common/decorators-old/async-with.decorator.d.ts +0 -10
- package/src/common/decorators-old/async-with.decorator.js +0 -24
- package/src/common/decorators-old/async-with.decorator.js.map +0 -1
- package/src/common/decorators-old/auth-hook.decorator.d.ts +0 -14
- package/src/common/decorators-old/auth-hook.decorator.js +0 -27
- package/src/common/decorators-old/auth-hook.decorator.js.map +0 -1
- package/src/common/decorators-old/session-hook.decorator.d.ts +0 -14
- package/src/common/decorators-old/session-hook.decorator.js +0 -27
- package/src/common/decorators-old/session-hook.decorator.js.map +0 -1
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import { z
|
|
2
|
-
import type {
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { JSONSchema } from 'zod/v4/core';
|
|
3
|
+
/** JSON Schema type from Zod v4 */
|
|
4
|
+
type JsonSchema = JSONSchema.JSONSchema;
|
|
5
|
+
import { ToolUIConfig } from './tool-ui.metadata';
|
|
6
|
+
import { ToolInputOf, ToolOutputOf } from '../decorators';
|
|
3
7
|
declare global {
|
|
4
8
|
/**
|
|
5
9
|
* Declarative metadata extends to the an McpTool decorator.
|
|
@@ -7,6 +11,23 @@ declare global {
|
|
|
7
11
|
interface ExtendFrontMcpToolMetadata {
|
|
8
12
|
}
|
|
9
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Example input/output pair for a tool, used in documentation and describe output.
|
|
16
|
+
*/
|
|
17
|
+
export interface ToolExample {
|
|
18
|
+
/**
|
|
19
|
+
* Description of what this example demonstrates.
|
|
20
|
+
*/
|
|
21
|
+
description: string;
|
|
22
|
+
/**
|
|
23
|
+
* Example input values for the tool.
|
|
24
|
+
*/
|
|
25
|
+
input: Record<string, unknown>;
|
|
26
|
+
/**
|
|
27
|
+
* Optional expected output for the example.
|
|
28
|
+
*/
|
|
29
|
+
output?: unknown;
|
|
30
|
+
}
|
|
10
31
|
export interface ToolAnnotations {
|
|
11
32
|
[x: string]: unknown;
|
|
12
33
|
/**
|
|
@@ -57,20 +78,10 @@ type PrimitiveOutputType = 'string' | 'number' | 'date' | 'boolean' | z.ZodStrin
|
|
|
57
78
|
type ImageOutputType = 'image';
|
|
58
79
|
export declare const ImageOutputSchema: z.ZodObject<{
|
|
59
80
|
type: z.ZodLiteral<"image">;
|
|
60
|
-
data: z.
|
|
81
|
+
data: z.ZodString;
|
|
61
82
|
mimeType: z.ZodString;
|
|
62
83
|
_meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
63
|
-
},
|
|
64
|
-
type: "image";
|
|
65
|
-
data: string;
|
|
66
|
-
mimeType: string;
|
|
67
|
-
_meta?: Record<string, unknown> | undefined;
|
|
68
|
-
}, {
|
|
69
|
-
type: "image";
|
|
70
|
-
data: string;
|
|
71
|
-
mimeType: string;
|
|
72
|
-
_meta?: Record<string, unknown> | undefined;
|
|
73
|
-
}>;
|
|
84
|
+
}, z.core.$strip>;
|
|
74
85
|
export type ImageOutput = z.output<typeof ImageOutputSchema>;
|
|
75
86
|
/**
|
|
76
87
|
* Tool response type audio, will use the AudioContentSchema from MCP types
|
|
@@ -78,20 +89,10 @@ export type ImageOutput = z.output<typeof ImageOutputSchema>;
|
|
|
78
89
|
type AudioOutputType = 'audio';
|
|
79
90
|
export declare const AudioOutputSchema: z.ZodObject<{
|
|
80
91
|
type: z.ZodLiteral<"audio">;
|
|
81
|
-
data: z.
|
|
92
|
+
data: z.ZodString;
|
|
82
93
|
mimeType: z.ZodString;
|
|
83
94
|
_meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
84
|
-
},
|
|
85
|
-
type: "audio";
|
|
86
|
-
data: string;
|
|
87
|
-
mimeType: string;
|
|
88
|
-
_meta?: Record<string, unknown> | undefined;
|
|
89
|
-
}, {
|
|
90
|
-
type: "audio";
|
|
91
|
-
data: string;
|
|
92
|
-
mimeType: string;
|
|
93
|
-
_meta?: Record<string, unknown> | undefined;
|
|
94
|
-
}>;
|
|
95
|
+
}, z.core.$strip>;
|
|
95
96
|
export type AudioOutput = z.output<typeof AudioOutputSchema>;
|
|
96
97
|
/**
|
|
97
98
|
* Tool response type resource, will use the EmbeddedResourceSchema from MCP types
|
|
@@ -99,130 +100,43 @@ export type AudioOutput = z.output<typeof AudioOutputSchema>;
|
|
|
99
100
|
type ResourceOutputType = 'resource';
|
|
100
101
|
export declare const ResourceOutputSchema: z.ZodObject<{
|
|
101
102
|
type: z.ZodLiteral<"resource">;
|
|
102
|
-
resource: z.ZodUnion<[z.ZodObject<
|
|
103
|
+
resource: z.ZodUnion<readonly [z.ZodObject<{
|
|
103
104
|
uri: z.ZodString;
|
|
104
105
|
mimeType: z.ZodOptional<z.ZodString>;
|
|
105
106
|
_meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
106
|
-
}, {
|
|
107
107
|
text: z.ZodString;
|
|
108
|
-
}
|
|
109
|
-
uri: string;
|
|
110
|
-
text: string;
|
|
111
|
-
_meta?: Record<string, unknown> | undefined;
|
|
112
|
-
mimeType?: string | undefined;
|
|
113
|
-
}, {
|
|
114
|
-
uri: string;
|
|
115
|
-
text: string;
|
|
116
|
-
_meta?: Record<string, unknown> | undefined;
|
|
117
|
-
mimeType?: string | undefined;
|
|
118
|
-
}>, z.ZodObject<z.objectUtil.extendShape<{
|
|
108
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
119
109
|
uri: z.ZodString;
|
|
120
110
|
mimeType: z.ZodOptional<z.ZodString>;
|
|
121
111
|
_meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}>, "strip", z.ZodTypeAny, {
|
|
125
|
-
uri: string;
|
|
126
|
-
blob: string;
|
|
127
|
-
_meta?: Record<string, unknown> | undefined;
|
|
128
|
-
mimeType?: string | undefined;
|
|
129
|
-
}, {
|
|
130
|
-
uri: string;
|
|
131
|
-
blob: string;
|
|
132
|
-
_meta?: Record<string, unknown> | undefined;
|
|
133
|
-
mimeType?: string | undefined;
|
|
134
|
-
}>]>;
|
|
112
|
+
blob: z.ZodString;
|
|
113
|
+
}, z.core.$strip>]>;
|
|
135
114
|
_meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
136
|
-
},
|
|
137
|
-
type: "resource";
|
|
138
|
-
resource: {
|
|
139
|
-
uri: string;
|
|
140
|
-
text: string;
|
|
141
|
-
_meta?: Record<string, unknown> | undefined;
|
|
142
|
-
mimeType?: string | undefined;
|
|
143
|
-
} | {
|
|
144
|
-
uri: string;
|
|
145
|
-
blob: string;
|
|
146
|
-
_meta?: Record<string, unknown> | undefined;
|
|
147
|
-
mimeType?: string | undefined;
|
|
148
|
-
};
|
|
149
|
-
_meta?: Record<string, unknown> | undefined;
|
|
150
|
-
}, {
|
|
151
|
-
type: "resource";
|
|
152
|
-
resource: {
|
|
153
|
-
uri: string;
|
|
154
|
-
text: string;
|
|
155
|
-
_meta?: Record<string, unknown> | undefined;
|
|
156
|
-
mimeType?: string | undefined;
|
|
157
|
-
} | {
|
|
158
|
-
uri: string;
|
|
159
|
-
blob: string;
|
|
160
|
-
_meta?: Record<string, unknown> | undefined;
|
|
161
|
-
mimeType?: string | undefined;
|
|
162
|
-
};
|
|
163
|
-
_meta?: Record<string, unknown> | undefined;
|
|
164
|
-
}>;
|
|
115
|
+
}, z.core.$strip>;
|
|
165
116
|
export type ResourceOutput = z.output<typeof ResourceOutputSchema>;
|
|
166
117
|
/**
|
|
167
118
|
* Tool response type resource_link, will use the ResourceLinkSchema from MCP types
|
|
168
119
|
*/
|
|
169
120
|
type ResourceLinkOutputType = 'resource_link';
|
|
170
121
|
export declare const ResourceLinkOutputSchema: z.ZodObject<{
|
|
171
|
-
name: z.ZodString;
|
|
172
|
-
title: z.ZodOptional<z.ZodString>;
|
|
173
|
-
} & {
|
|
174
122
|
uri: z.ZodString;
|
|
175
123
|
description: z.ZodOptional<z.ZodString>;
|
|
176
124
|
mimeType: z.ZodOptional<z.ZodString>;
|
|
177
|
-
_meta: z.ZodOptional<z.ZodObject<{},
|
|
178
|
-
} & {
|
|
125
|
+
_meta: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
|
|
179
126
|
icons: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
180
127
|
src: z.ZodString;
|
|
181
128
|
mimeType: z.ZodOptional<z.ZodString>;
|
|
182
|
-
sizes: z.ZodOptional<z.ZodArray<z.ZodString
|
|
183
|
-
},
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
sizes?: string[] | undefined;
|
|
187
|
-
}, {
|
|
188
|
-
src: string;
|
|
189
|
-
mimeType?: string | undefined;
|
|
190
|
-
sizes?: string[] | undefined;
|
|
191
|
-
}>, "many">>;
|
|
192
|
-
} & {
|
|
129
|
+
sizes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
130
|
+
}, z.core.$strip>>>;
|
|
131
|
+
name: z.ZodString;
|
|
132
|
+
title: z.ZodOptional<z.ZodString>;
|
|
193
133
|
type: z.ZodLiteral<"resource_link">;
|
|
194
|
-
},
|
|
195
|
-
type: "resource_link";
|
|
196
|
-
name: string;
|
|
197
|
-
uri: string;
|
|
198
|
-
_meta?: z.objectOutputType<{}, z.ZodTypeAny, "passthrough"> | undefined;
|
|
199
|
-
mimeType?: string | undefined;
|
|
200
|
-
icons?: {
|
|
201
|
-
src: string;
|
|
202
|
-
mimeType?: string | undefined;
|
|
203
|
-
sizes?: string[] | undefined;
|
|
204
|
-
}[] | undefined;
|
|
205
|
-
title?: string | undefined;
|
|
206
|
-
description?: string | undefined;
|
|
207
|
-
}, {
|
|
208
|
-
type: "resource_link";
|
|
209
|
-
name: string;
|
|
210
|
-
uri: string;
|
|
211
|
-
_meta?: z.objectInputType<{}, z.ZodTypeAny, "passthrough"> | undefined;
|
|
212
|
-
mimeType?: string | undefined;
|
|
213
|
-
icons?: {
|
|
214
|
-
src: string;
|
|
215
|
-
mimeType?: string | undefined;
|
|
216
|
-
sizes?: string[] | undefined;
|
|
217
|
-
}[] | undefined;
|
|
218
|
-
title?: string | undefined;
|
|
219
|
-
description?: string | undefined;
|
|
220
|
-
}>;
|
|
134
|
+
}, z.core.$strip>;
|
|
221
135
|
export type ResourceLinkOutput = z.output<typeof ResourceLinkOutputSchema>;
|
|
222
136
|
/**
|
|
223
137
|
* Tool response type json, ZodRawShape for fast usage
|
|
224
138
|
*/
|
|
225
|
-
type StructuredOutputType = z.ZodRawShape | z.ZodObject<any> | z.ZodArray<
|
|
139
|
+
type StructuredOutputType = z.ZodRawShape | z.ZodObject<any> | z.ZodArray<z.ZodType> | z.ZodUnion<[z.ZodObject<any>, ...z.ZodObject<any>[]]> | z.ZodDiscriminatedUnion<z.ZodObject<any>[]>;
|
|
226
140
|
export type ToolSingleOutputType = PrimitiveOutputType | ImageOutputType | AudioOutputType | ResourceOutputType | ResourceLinkOutputType | StructuredOutputType;
|
|
227
141
|
/**
|
|
228
142
|
* Default default tool schema is {}
|
|
@@ -255,7 +169,7 @@ export interface ToolMetadata<InSchema = ToolInputType, OutSchema extends ToolOu
|
|
|
255
169
|
* Zod schema describing the expected input payload for the tool.
|
|
256
170
|
* Used for validation and for generating automatic docs/UX.
|
|
257
171
|
*/
|
|
258
|
-
rawInputSchema?:
|
|
172
|
+
rawInputSchema?: JsonSchema;
|
|
259
173
|
/**
|
|
260
174
|
* Zod schema describing the structure of the tool's successful output.
|
|
261
175
|
*/
|
|
@@ -272,90 +186,55 @@ export interface ToolMetadata<InSchema = ToolInputType, OutSchema extends ToolOu
|
|
|
272
186
|
* Default: false
|
|
273
187
|
*/
|
|
274
188
|
hideFromDiscovery?: boolean;
|
|
189
|
+
/**
|
|
190
|
+
* Optional usage examples for the tool.
|
|
191
|
+
* These are used by codecall:describe to provide accurate usage examples.
|
|
192
|
+
* If provided, these take precedence over auto-generated examples.
|
|
193
|
+
*/
|
|
194
|
+
examples?: ToolExample[];
|
|
195
|
+
ui?: ToolUIConfig<ToolInputOf<InSchema>, ToolOutputOf<OutSchema>>;
|
|
275
196
|
}
|
|
276
197
|
export declare const frontMcpToolMetadataSchema: z.ZodObject<{
|
|
277
198
|
id: z.ZodOptional<z.ZodString>;
|
|
278
199
|
name: z.ZodString;
|
|
279
200
|
description: z.ZodOptional<z.ZodString>;
|
|
280
|
-
inputSchema: z.
|
|
201
|
+
inputSchema: z.ZodCustom<Object, Object>;
|
|
281
202
|
rawInputSchema: z.ZodOptional<z.ZodAny>;
|
|
282
|
-
outputSchema: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodUnion<
|
|
283
|
-
|
|
203
|
+
outputSchema: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodEnum<{
|
|
204
|
+
string: "string";
|
|
205
|
+
number: "number";
|
|
206
|
+
boolean: "boolean";
|
|
207
|
+
date: "date";
|
|
208
|
+
}>, z.ZodEnum<{
|
|
209
|
+
image: "image";
|
|
210
|
+
audio: "audio";
|
|
211
|
+
resource: "resource";
|
|
212
|
+
resource_link: "resource_link";
|
|
213
|
+
}>]>, z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>, z.ZodRecord<z.ZodString, z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodEnum<{
|
|
214
|
+
string: "string";
|
|
215
|
+
number: "number";
|
|
216
|
+
boolean: "boolean";
|
|
217
|
+
date: "date";
|
|
218
|
+
}>, z.ZodEnum<{
|
|
219
|
+
image: "image";
|
|
220
|
+
audio: "audio";
|
|
221
|
+
resource: "resource";
|
|
222
|
+
resource_link: "resource_link";
|
|
223
|
+
}>]>, z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>, z.ZodRecord<z.ZodString, z.ZodCustom<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>, z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>>]>>]>>;
|
|
224
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
284
225
|
annotations: z.ZodOptional<z.ZodObject<{
|
|
285
226
|
title: z.ZodOptional<z.ZodString>;
|
|
286
227
|
readOnlyHint: z.ZodOptional<z.ZodBoolean>;
|
|
287
228
|
destructiveHint: z.ZodOptional<z.ZodBoolean>;
|
|
288
229
|
idempotentHint: z.ZodOptional<z.ZodBoolean>;
|
|
289
230
|
openWorldHint: z.ZodOptional<z.ZodBoolean>;
|
|
290
|
-
},
|
|
291
|
-
title: z.ZodOptional<z.ZodString>;
|
|
292
|
-
readOnlyHint: z.ZodOptional<z.ZodBoolean>;
|
|
293
|
-
destructiveHint: z.ZodOptional<z.ZodBoolean>;
|
|
294
|
-
idempotentHint: z.ZodOptional<z.ZodBoolean>;
|
|
295
|
-
openWorldHint: z.ZodOptional<z.ZodBoolean>;
|
|
296
|
-
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
297
|
-
title: z.ZodOptional<z.ZodString>;
|
|
298
|
-
readOnlyHint: z.ZodOptional<z.ZodBoolean>;
|
|
299
|
-
destructiveHint: z.ZodOptional<z.ZodBoolean>;
|
|
300
|
-
idempotentHint: z.ZodOptional<z.ZodBoolean>;
|
|
301
|
-
openWorldHint: z.ZodOptional<z.ZodBoolean>;
|
|
302
|
-
}, z.ZodTypeAny, "passthrough">>>;
|
|
303
|
-
hideFromDiscovery: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
304
|
-
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
305
|
-
id: z.ZodOptional<z.ZodString>;
|
|
306
|
-
name: z.ZodString;
|
|
307
|
-
description: z.ZodOptional<z.ZodString>;
|
|
308
|
-
inputSchema: z.ZodType<Object, z.ZodTypeDef, Object>;
|
|
309
|
-
rawInputSchema: z.ZodOptional<z.ZodAny>;
|
|
310
|
-
outputSchema: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodEnum<["string", "number", "date", "boolean"]>, z.ZodEnum<["image", "audio", "resource", "resource_link"]>]>, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>, z.ZodRecord<z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>>]>, z.ZodArray<z.ZodUnion<[z.ZodUnion<[z.ZodEnum<["string", "number", "date", "boolean"]>, z.ZodEnum<["image", "audio", "resource", "resource_link"]>]>, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>, z.ZodRecord<z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>>]>, "many">]>>;
|
|
311
|
-
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
312
|
-
annotations: z.ZodOptional<z.ZodObject<{
|
|
313
|
-
title: z.ZodOptional<z.ZodString>;
|
|
314
|
-
readOnlyHint: z.ZodOptional<z.ZodBoolean>;
|
|
315
|
-
destructiveHint: z.ZodOptional<z.ZodBoolean>;
|
|
316
|
-
idempotentHint: z.ZodOptional<z.ZodBoolean>;
|
|
317
|
-
openWorldHint: z.ZodOptional<z.ZodBoolean>;
|
|
318
|
-
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
319
|
-
title: z.ZodOptional<z.ZodString>;
|
|
320
|
-
readOnlyHint: z.ZodOptional<z.ZodBoolean>;
|
|
321
|
-
destructiveHint: z.ZodOptional<z.ZodBoolean>;
|
|
322
|
-
idempotentHint: z.ZodOptional<z.ZodBoolean>;
|
|
323
|
-
openWorldHint: z.ZodOptional<z.ZodBoolean>;
|
|
324
|
-
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
325
|
-
title: z.ZodOptional<z.ZodString>;
|
|
326
|
-
readOnlyHint: z.ZodOptional<z.ZodBoolean>;
|
|
327
|
-
destructiveHint: z.ZodOptional<z.ZodBoolean>;
|
|
328
|
-
idempotentHint: z.ZodOptional<z.ZodBoolean>;
|
|
329
|
-
openWorldHint: z.ZodOptional<z.ZodBoolean>;
|
|
330
|
-
}, z.ZodTypeAny, "passthrough">>>;
|
|
331
|
-
hideFromDiscovery: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
332
|
-
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
333
|
-
id: z.ZodOptional<z.ZodString>;
|
|
334
|
-
name: z.ZodString;
|
|
335
|
-
description: z.ZodOptional<z.ZodString>;
|
|
336
|
-
inputSchema: z.ZodType<Object, z.ZodTypeDef, Object>;
|
|
337
|
-
rawInputSchema: z.ZodOptional<z.ZodAny>;
|
|
338
|
-
outputSchema: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodUnion<[z.ZodEnum<["string", "number", "date", "boolean"]>, z.ZodEnum<["image", "audio", "resource", "resource_link"]>]>, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>, z.ZodRecord<z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>>]>, z.ZodArray<z.ZodUnion<[z.ZodUnion<[z.ZodEnum<["string", "number", "date", "boolean"]>, z.ZodEnum<["image", "audio", "resource", "resource_link"]>]>, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>, z.ZodRecord<z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>>]>, "many">]>>;
|
|
339
|
-
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
340
|
-
annotations: z.ZodOptional<z.ZodObject<{
|
|
341
|
-
title: z.ZodOptional<z.ZodString>;
|
|
342
|
-
readOnlyHint: z.ZodOptional<z.ZodBoolean>;
|
|
343
|
-
destructiveHint: z.ZodOptional<z.ZodBoolean>;
|
|
344
|
-
idempotentHint: z.ZodOptional<z.ZodBoolean>;
|
|
345
|
-
openWorldHint: z.ZodOptional<z.ZodBoolean>;
|
|
346
|
-
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
347
|
-
title: z.ZodOptional<z.ZodString>;
|
|
348
|
-
readOnlyHint: z.ZodOptional<z.ZodBoolean>;
|
|
349
|
-
destructiveHint: z.ZodOptional<z.ZodBoolean>;
|
|
350
|
-
idempotentHint: z.ZodOptional<z.ZodBoolean>;
|
|
351
|
-
openWorldHint: z.ZodOptional<z.ZodBoolean>;
|
|
352
|
-
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
353
|
-
title: z.ZodOptional<z.ZodString>;
|
|
354
|
-
readOnlyHint: z.ZodOptional<z.ZodBoolean>;
|
|
355
|
-
destructiveHint: z.ZodOptional<z.ZodBoolean>;
|
|
356
|
-
idempotentHint: z.ZodOptional<z.ZodBoolean>;
|
|
357
|
-
openWorldHint: z.ZodOptional<z.ZodBoolean>;
|
|
358
|
-
}, z.ZodTypeAny, "passthrough">>>;
|
|
231
|
+
}, z.core.$loose>>;
|
|
359
232
|
hideFromDiscovery: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
360
|
-
|
|
233
|
+
examples: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
234
|
+
description: z.ZodString;
|
|
235
|
+
input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
236
|
+
output: z.ZodOptional<z.ZodUnknown>;
|
|
237
|
+
}, z.core.$strip>>>;
|
|
238
|
+
ui: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
|
|
239
|
+
}, z.core.$loose>;
|
|
361
240
|
export {};
|
|
@@ -24,24 +24,19 @@ exports.ResourceLinkOutputSchema = types_js_1.ResourceLinkSchema;
|
|
|
24
24
|
*/
|
|
25
25
|
const primitiveOutputLiteralSchema = zod_1.z.enum(['string', 'number', 'date', 'boolean']);
|
|
26
26
|
const specialOutputLiteralSchema = zod_1.z.enum(['image', 'audio', 'resource', 'resource_link']);
|
|
27
|
-
const outputLiteralSchema = zod_1.z.union([
|
|
28
|
-
primitiveOutputLiteralSchema,
|
|
29
|
-
specialOutputLiteralSchema,
|
|
30
|
-
]);
|
|
27
|
+
const outputLiteralSchema = zod_1.z.union([primitiveOutputLiteralSchema, specialOutputLiteralSchema]);
|
|
31
28
|
// Any Zod schema instance (object, array, union, etc.)
|
|
32
29
|
const zodSchemaInstanceSchema = zod_1.z.instanceof(zod_1.z.ZodType);
|
|
33
30
|
// Raw shape: { field: z.string(), ... }
|
|
34
|
-
const zodRawShapeSchema = zod_1.z.record(zodSchemaInstanceSchema);
|
|
35
|
-
const toolSingleOutputSchema = zod_1.z.union([
|
|
36
|
-
outputLiteralSchema,
|
|
37
|
-
zodSchemaInstanceSchema,
|
|
38
|
-
zodRawShapeSchema,
|
|
39
|
-
]);
|
|
31
|
+
const zodRawShapeSchema = zod_1.z.record(zod_1.z.string(), zodSchemaInstanceSchema);
|
|
32
|
+
const toolSingleOutputSchema = zod_1.z.union([outputLiteralSchema, zodSchemaInstanceSchema, zodRawShapeSchema]);
|
|
40
33
|
// ToolOutputType = ToolSingleOutputType | ToolSingleOutputType[]
|
|
41
|
-
const toolOutputSchema = zod_1.z.union([
|
|
42
|
-
|
|
43
|
-
zod_1.z.
|
|
44
|
-
|
|
34
|
+
const toolOutputSchema = zod_1.z.union([toolSingleOutputSchema, zod_1.z.array(toolSingleOutputSchema)]);
|
|
35
|
+
const toolExampleSchema = zod_1.z.object({
|
|
36
|
+
description: zod_1.z.string(),
|
|
37
|
+
input: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()),
|
|
38
|
+
output: zod_1.z.unknown().optional(),
|
|
39
|
+
});
|
|
45
40
|
exports.frontMcpToolMetadataSchema = zod_1.z
|
|
46
41
|
.object({
|
|
47
42
|
id: zod_1.z.string().optional(),
|
|
@@ -53,6 +48,8 @@ exports.frontMcpToolMetadataSchema = zod_1.z
|
|
|
53
48
|
tags: zod_1.z.array(zod_1.z.string().min(1)).optional(),
|
|
54
49
|
annotations: mcpToolAnnotationsSchema.optional(),
|
|
55
50
|
hideFromDiscovery: zod_1.z.boolean().optional().default(false),
|
|
51
|
+
examples: zod_1.z.array(toolExampleSchema).optional(),
|
|
52
|
+
ui: zod_1.z.looseObject({}).optional(),
|
|
56
53
|
})
|
|
57
54
|
.passthrough();
|
|
58
55
|
//# sourceMappingURL=tool.metadata.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.metadata.js","sourceRoot":"","sources":["../../../../src/common/metadata/tool.metadata.ts"],"names":[],"mappings":";;;AAAA,6BAAmC;AAGnC,iEAK4C;AAmD5C,MAAM,wBAAwB,GAAG,OAAC;KAC/B,MAAM,CAAC;IACN,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,YAAY,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,eAAe,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACvC,cAAc,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACtC,aAAa,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACC,CAAC;KACxC,WAAW,EAAE,CAAC;AAmBJ,QAAA,iBAAiB,GAAG,6BAAkB,CAAC;AAOvC,QAAA,iBAAiB,GAAG,6BAAkB,CAAC;AAOvC,QAAA,oBAAoB,GAAG,iCAAsB,CAAC;AAO9C,QAAA,wBAAwB,GAAG,6BAAkB,CAAC;AAkF3D;;;;;GAKG;AAEH,MAAM,4BAA4B,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AACrF,MAAM,0BAA0B,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;AAE3F,MAAM,mBAAmB,GAAG,OAAC,CAAC,KAAK,CAAC;IAClC,4BAA4B;IAC5B,0BAA0B;CAC3B,CAAC,CAAC;AAEH,uDAAuD;AACvD,MAAM,uBAAuB,GAAG,OAAC,CAAC,UAAU,CAAC,OAAC,CAAC,OAAO,CAAC,CAAC;AAExD,wCAAwC;AACxC,MAAM,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAE5D,MAAM,sBAAsB,GAAG,OAAC,CAAC,KAAK,CAAC;IACrC,mBAAmB;IACnB,uBAAuB;IACvB,iBAAiB;CAClB,CAAC,CAAC;AAEH,iEAAiE;AACjE,MAAM,gBAAgB,GAAG,OAAC,CAAC,KAAK,CAAC;IAC/B,sBAAsB;IACtB,OAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;CAChC,CAAC,CAAC;AACU,QAAA,0BAA0B,GAAG,OAAC;KACxC,MAAM,CAAC;IACN,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,WAAW,EAAE,OAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IACjC,cAAc,EAAE,OAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACzC,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3C,WAAW,EAAE,wBAAwB,CAAC,QAAQ,EAAE;IAChD,iBAAiB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACO,CAAC;KACjE,WAAW,EAAE,CAAC","sourcesContent":["import { z, ZodObject } from 'zod';\nimport { RawZodShape } from '../types';\nimport type { JSONSchema7 } from 'json-schema';\nimport {\n ImageContentSchema,\n AudioContentSchema,\n ResourceLinkSchema,\n EmbeddedResourceSchema,\n} from '@modelcontextprotocol/sdk/types.js';\n\ndeclare global {\n /**\n * Declarative metadata extends to the an McpTool decorator.\n */\n interface ExtendFrontMcpToolMetadata {}\n}\n\nexport interface ToolAnnotations {\n [x: string]: unknown;\n\n /**\n * A human-readable title for the tool.\n */\n title?: string;\n /**\n * If true, the tool does not modify its environment.\n *\n * Default: false\n */\n readOnlyHint?: boolean;\n /**\n * If true, the tool may perform destructive updates to its environment.\n * If false, the tool performs only additive updates.\n *\n * (This property is meaningful only when `readOnlyHint == false`)\n *\n * Default: true\n */\n destructiveHint?: boolean;\n /**\n * If true, calling the tool repeatedly with the same arguments\n * will have no additional effect on the its environment.\n *\n * (This property is meaningful only when `readOnlyHint == false`)\n *\n * Default: false\n */\n idempotentHint?: boolean;\n /**\n * If true, this tool may interact with an \"open world\" of external\n * entities. If false, the tool's domain of interaction is closed.\n * For example, the world of a web search tool is open, whereas that\n * of a memory tool is not.\n *\n * Default: true\n */\n openWorldHint?: boolean;\n}\n\nconst mcpToolAnnotationsSchema = z\n .object({\n title: z.string().optional(),\n readOnlyHint: z.boolean().optional(),\n destructiveHint: z.boolean().optional(),\n idempotentHint: z.boolean().optional(),\n openWorldHint: z.boolean().optional(),\n } satisfies RawZodShape<ToolAnnotations>)\n .passthrough();\n\n/**\n * Tool response type text: include if outputSchema is zod primitive types\n */\ntype PrimitiveOutputType =\n | 'string'\n | 'number'\n | 'date'\n | 'boolean'\n | z.ZodString\n | z.ZodNumber\n | z.ZodBoolean\n | z.ZodBigInt\n | z.ZodDate;\n/**\n * Tool response type image, will use the ImageContentSchema from MCP types\n */\ntype ImageOutputType = 'image';\nexport const ImageOutputSchema = ImageContentSchema;\nexport type ImageOutput = z.output<typeof ImageOutputSchema>;\n\n/**\n * Tool response type audio, will use the AudioContentSchema from MCP types\n */\ntype AudioOutputType = 'audio';\nexport const AudioOutputSchema = AudioContentSchema;\nexport type AudioOutput = z.output<typeof AudioOutputSchema>;\n\n/**\n * Tool response type resource, will use the EmbeddedResourceSchema from MCP types\n */\ntype ResourceOutputType = 'resource';\nexport const ResourceOutputSchema = EmbeddedResourceSchema;\nexport type ResourceOutput = z.output<typeof ResourceOutputSchema>;\n\n/**\n * Tool response type resource_link, will use the ResourceLinkSchema from MCP types\n */\ntype ResourceLinkOutputType = 'resource_link';\nexport const ResourceLinkOutputSchema = ResourceLinkSchema;\nexport type ResourceLinkOutput = z.output<typeof ResourceLinkOutputSchema>;\n\n/**\n * Tool response type json, ZodRawShape for fast usage\n */\ntype StructuredOutputType =\n | z.ZodRawShape\n | z.ZodObject<any>\n | z.ZodArray<any>\n | z.ZodUnion<[ZodObject<any>, ...ZodObject<any>[]]>\n | z.ZodDiscriminatedUnion<any, any>;\n\nexport type ToolSingleOutputType =\n | PrimitiveOutputType\n | ImageOutputType\n | AudioOutputType\n | ResourceOutputType\n | ResourceLinkOutputType\n | StructuredOutputType;\n\n/**\n * Default default tool schema is {}\n */\nexport type ToolOutputType = ToolSingleOutputType | ToolSingleOutputType[] | undefined;\nexport type ToolInputType = z.ZodRawShape;\n\n/**\n * Declarative metadata describing what an McpTool contributes.\n */\nexport interface ToolMetadata<InSchema = ToolInputType, OutSchema extends ToolOutputType = ToolOutputType>\n extends ExtendFrontMcpToolMetadata {\n /**\n * Optional unique identifier for the tool.\n * If omitted, a consumer may derive an ID from the class or file name.\n */\n id?: string;\n\n /**\n * Human‑readable name of the tool, used in UIs, logs, and discovery.\n */\n name: string;\n\n /**\n * Short summary describing what the tool does and when to use it.\n */\n description?: string;\n\n /**\n * Zod schema describing the expected input payload for the tool.\n * Used for validation and for generating automatic docs/UX.\n */\n inputSchema: InSchema;\n /**\n * Zod schema describing the expected input payload for the tool.\n * Used for validation and for generating automatic docs/UX.\n */\n rawInputSchema?: JSONSchema7;\n\n /**\n * Zod schema describing the structure of the tool's successful output.\n */\n outputSchema?: OutSchema;\n\n /**\n * Optional list of tags/labels that categorize the tool for discovery and filtering.\n */\n tags?: string[];\n\n annotations?: ToolAnnotations;\n\n /**\n * If true, the tool will not be shown in the tool/list action results.\n * this method can still be called directly with tool/call even if hidden.\n * use case: tools that are intended to be private or internal. (usually for testing / private apis)\n * Default: false\n */\n hideFromDiscovery?: boolean;\n}\n\n\n\n/**\n * Runtime schema for ToolSingleOutputType:\n * - literals ('string', 'image', ...)\n * - any Zod schema (ZodObject, ZodArray, etc.)\n * - raw shapes (Record<string, ZodTypeAny>)\n */\n\nconst primitiveOutputLiteralSchema = z.enum(['string', 'number', 'date', 'boolean']);\nconst specialOutputLiteralSchema = z.enum(['image', 'audio', 'resource', 'resource_link']);\n\nconst outputLiteralSchema = z.union([\n primitiveOutputLiteralSchema,\n specialOutputLiteralSchema,\n]);\n\n// Any Zod schema instance (object, array, union, etc.)\nconst zodSchemaInstanceSchema = z.instanceof(z.ZodType);\n\n// Raw shape: { field: z.string(), ... }\nconst zodRawShapeSchema = z.record(zodSchemaInstanceSchema);\n\nconst toolSingleOutputSchema = z.union([\n outputLiteralSchema,\n zodSchemaInstanceSchema,\n zodRawShapeSchema,\n]);\n\n// ToolOutputType = ToolSingleOutputType | ToolSingleOutputType[]\nconst toolOutputSchema = z.union([\n toolSingleOutputSchema,\n z.array(toolSingleOutputSchema),\n]);\nexport const frontMcpToolMetadataSchema = z\n .object({\n id: z.string().optional(),\n name: z.string().min(1),\n description: z.string().optional(),\n inputSchema: z.instanceof(Object),\n rawInputSchema: z.any().optional(),\n outputSchema: toolOutputSchema.optional(),\n tags: z.array(z.string().min(1)).optional(),\n annotations: mcpToolAnnotationsSchema.optional(),\n hideFromDiscovery: z.boolean().optional().default(false),\n } satisfies RawZodShape<ToolMetadata, ExtendFrontMcpToolMetadata>)\n .passthrough();\n"]}
|
|
1
|
+
{"version":3,"file":"tool.metadata.js","sourceRoot":"","sources":["../../../../src/common/metadata/tool.metadata.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAMxB,iEAK4C;AAyE5C,MAAM,wBAAwB,GAAG,OAAC;KAC/B,MAAM,CAAC;IACN,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,YAAY,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,eAAe,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACvC,cAAc,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACtC,aAAa,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACC,CAAC;KACxC,WAAW,EAAE,CAAC;AAmBJ,QAAA,iBAAiB,GAAG,6BAAkB,CAAC;AAOvC,QAAA,iBAAiB,GAAG,6BAAkB,CAAC;AAOvC,QAAA,oBAAoB,GAAG,iCAAsB,CAAC;AAO9C,QAAA,wBAAwB,GAAG,6BAAkB,CAAC;AAyF3D;;;;;GAKG;AAEH,MAAM,4BAA4B,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AACrF,MAAM,0BAA0B,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;AAE3F,MAAM,mBAAmB,GAAG,OAAC,CAAC,KAAK,CAAC,CAAC,4BAA4B,EAAE,0BAA0B,CAAC,CAAC,CAAC;AAEhG,uDAAuD;AACvD,MAAM,uBAAuB,GAAG,OAAC,CAAC,UAAU,CAAC,OAAC,CAAC,OAAO,CAAC,CAAC;AAExD,wCAAwC;AACxC,MAAM,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAC;AAExE,MAAM,sBAAsB,GAAG,OAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAE1G,iEAAiE;AACjE,MAAM,gBAAgB,GAAG,OAAC,CAAC,KAAK,CAAC,CAAC,sBAAsB,EAAE,OAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;AAC5F,MAAM,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACjC,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE;IACvB,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC;IACxC,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEU,QAAA,0BAA0B,GAAG,OAAC;KACxC,MAAM,CAAC;IACN,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,WAAW,EAAE,OAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IACjC,cAAc,EAAE,OAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACzC,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3C,WAAW,EAAE,wBAAwB,CAAC,QAAQ,EAAE;IAChD,iBAAiB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACxD,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;IAC/C,EAAE,EAAE,OAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC+B,CAAC;KACjE,WAAW,EAAE,CAAC","sourcesContent":["import { z } from 'zod';\nimport { RawZodShape } from '../types';\nimport type { JSONSchema } from 'zod/v4/core';\n\n/** JSON Schema type from Zod v4 */\ntype JsonSchema = JSONSchema.JSONSchema;\nimport {\n ImageContentSchema,\n AudioContentSchema,\n ResourceLinkSchema,\n EmbeddedResourceSchema,\n} from '@modelcontextprotocol/sdk/types.js';\nimport { ToolUIConfig } from './tool-ui.metadata';\nimport { ToolInputOf, ToolOutputOf } from '../decorators';\n\ndeclare global {\n /**\n * Declarative metadata extends to the an McpTool decorator.\n */\n interface ExtendFrontMcpToolMetadata {}\n}\n\n/**\n * Example input/output pair for a tool, used in documentation and describe output.\n */\nexport interface ToolExample {\n /**\n * Description of what this example demonstrates.\n */\n description: string;\n\n /**\n * Example input values for the tool.\n */\n input: Record<string, unknown>;\n\n /**\n * Optional expected output for the example.\n */\n output?: unknown;\n}\n\nexport interface ToolAnnotations {\n [x: string]: unknown;\n\n /**\n * A human-readable title for the tool.\n */\n title?: string;\n /**\n * If true, the tool does not modify its environment.\n *\n * Default: false\n */\n readOnlyHint?: boolean;\n /**\n * If true, the tool may perform destructive updates to its environment.\n * If false, the tool performs only additive updates.\n *\n * (This property is meaningful only when `readOnlyHint == false`)\n *\n * Default: true\n */\n destructiveHint?: boolean;\n /**\n * If true, calling the tool repeatedly with the same arguments\n * will have no additional effect on the its environment.\n *\n * (This property is meaningful only when `readOnlyHint == false`)\n *\n * Default: false\n */\n idempotentHint?: boolean;\n /**\n * If true, this tool may interact with an \"open world\" of external\n * entities. If false, the tool's domain of interaction is closed.\n * For example, the world of a web search tool is open, whereas that\n * of a memory tool is not.\n *\n * Default: true\n */\n openWorldHint?: boolean;\n}\n\nconst mcpToolAnnotationsSchema = z\n .object({\n title: z.string().optional(),\n readOnlyHint: z.boolean().optional(),\n destructiveHint: z.boolean().optional(),\n idempotentHint: z.boolean().optional(),\n openWorldHint: z.boolean().optional(),\n } satisfies RawZodShape<ToolAnnotations>)\n .passthrough();\n\n/**\n * Tool response type text: include if outputSchema is zod primitive types\n */\ntype PrimitiveOutputType =\n | 'string'\n | 'number'\n | 'date'\n | 'boolean'\n | z.ZodString\n | z.ZodNumber\n | z.ZodBoolean\n | z.ZodBigInt\n | z.ZodDate;\n/**\n * Tool response type image, will use the ImageContentSchema from MCP types\n */\ntype ImageOutputType = 'image';\nexport const ImageOutputSchema = ImageContentSchema;\nexport type ImageOutput = z.output<typeof ImageOutputSchema>;\n\n/**\n * Tool response type audio, will use the AudioContentSchema from MCP types\n */\ntype AudioOutputType = 'audio';\nexport const AudioOutputSchema = AudioContentSchema;\nexport type AudioOutput = z.output<typeof AudioOutputSchema>;\n\n/**\n * Tool response type resource, will use the EmbeddedResourceSchema from MCP types\n */\ntype ResourceOutputType = 'resource';\nexport const ResourceOutputSchema = EmbeddedResourceSchema;\nexport type ResourceOutput = z.output<typeof ResourceOutputSchema>;\n\n/**\n * Tool response type resource_link, will use the ResourceLinkSchema from MCP types\n */\ntype ResourceLinkOutputType = 'resource_link';\nexport const ResourceLinkOutputSchema = ResourceLinkSchema;\nexport type ResourceLinkOutput = z.output<typeof ResourceLinkOutputSchema>;\n\n/**\n * Tool response type json, ZodRawShape for fast usage\n */\ntype StructuredOutputType =\n | z.ZodRawShape\n | z.ZodObject<any>\n | z.ZodArray<z.ZodType>\n | z.ZodUnion<[z.ZodObject<any>, ...z.ZodObject<any>[]]>\n | z.ZodDiscriminatedUnion<z.ZodObject<any>[]>;\n\nexport type ToolSingleOutputType =\n | PrimitiveOutputType\n | ImageOutputType\n | AudioOutputType\n | ResourceOutputType\n | ResourceLinkOutputType\n | StructuredOutputType;\n\n/**\n * Default default tool schema is {}\n */\nexport type ToolOutputType = ToolSingleOutputType | ToolSingleOutputType[] | undefined;\nexport type ToolInputType = z.ZodRawShape;\n\n/**\n * Declarative metadata describing what an McpTool contributes.\n */\nexport interface ToolMetadata<InSchema = ToolInputType, OutSchema extends ToolOutputType = ToolOutputType>\n extends ExtendFrontMcpToolMetadata {\n /**\n * Optional unique identifier for the tool.\n * If omitted, a consumer may derive an ID from the class or file name.\n */\n id?: string;\n\n /**\n * Human‑readable name of the tool, used in UIs, logs, and discovery.\n */\n name: string;\n\n /**\n * Short summary describing what the tool does and when to use it.\n */\n description?: string;\n\n /**\n * Zod schema describing the expected input payload for the tool.\n * Used for validation and for generating automatic docs/UX.\n */\n inputSchema: InSchema;\n /**\n * Zod schema describing the expected input payload for the tool.\n * Used for validation and for generating automatic docs/UX.\n */\n rawInputSchema?: JsonSchema;\n\n /**\n * Zod schema describing the structure of the tool's successful output.\n */\n outputSchema?: OutSchema;\n\n /**\n * Optional list of tags/labels that categorize the tool for discovery and filtering.\n */\n tags?: string[];\n\n annotations?: ToolAnnotations;\n\n /**\n * If true, the tool will not be shown in the tool/list action results.\n * this method can still be called directly with tool/call even if hidden.\n * use case: tools that are intended to be private or internal. (usually for testing / private apis)\n * Default: false\n */\n hideFromDiscovery?: boolean;\n\n /**\n * Optional usage examples for the tool.\n * These are used by codecall:describe to provide accurate usage examples.\n * If provided, these take precedence over auto-generated examples.\n */\n examples?: ToolExample[];\n\n ui?: ToolUIConfig<ToolInputOf<InSchema>, ToolOutputOf<OutSchema>>;\n}\n\n/**\n * Runtime schema for ToolSingleOutputType:\n * - literals ('string', 'image', ...)\n * - any Zod schema (ZodObject, ZodArray, etc.)\n * - raw shapes (Record<string, ZodTypeAny>)\n */\n\nconst primitiveOutputLiteralSchema = z.enum(['string', 'number', 'date', 'boolean']);\nconst specialOutputLiteralSchema = z.enum(['image', 'audio', 'resource', 'resource_link']);\n\nconst outputLiteralSchema = z.union([primitiveOutputLiteralSchema, specialOutputLiteralSchema]);\n\n// Any Zod schema instance (object, array, union, etc.)\nconst zodSchemaInstanceSchema = z.instanceof(z.ZodType);\n\n// Raw shape: { field: z.string(), ... }\nconst zodRawShapeSchema = z.record(z.string(), zodSchemaInstanceSchema);\n\nconst toolSingleOutputSchema = z.union([outputLiteralSchema, zodSchemaInstanceSchema, zodRawShapeSchema]);\n\n// ToolOutputType = ToolSingleOutputType | ToolSingleOutputType[]\nconst toolOutputSchema = z.union([toolSingleOutputSchema, z.array(toolSingleOutputSchema)]);\nconst toolExampleSchema = z.object({\n description: z.string(),\n input: z.record(z.string(), z.unknown()),\n output: z.unknown().optional(),\n});\n\nexport const frontMcpToolMetadataSchema = z\n .object({\n id: z.string().optional(),\n name: z.string().min(1),\n description: z.string().optional(),\n inputSchema: z.instanceof(Object),\n rawInputSchema: z.any().optional(),\n outputSchema: toolOutputSchema.optional(),\n tags: z.array(z.string().min(1)).optional(),\n annotations: mcpToolAnnotationsSchema.optional(),\n hideFromDiscovery: z.boolean().optional().default(false),\n examples: z.array(toolExampleSchema).optional(),\n ui: z.looseObject({}).optional(),\n } satisfies RawZodShape<ToolMetadata, ExtendFrontMcpToolMetadata>)\n .passthrough();\n"]}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe dotted path builder for nested object access
|
|
3
|
+
* Examples: 'vm.preset', 'embedding.strategy', 'directCalls.enabled'
|
|
4
|
+
*/
|
|
5
|
+
export type DottedPath<T, Prefix extends string = ''> = T extends object ? {
|
|
6
|
+
[K in keyof T & string]: T[K] extends object ? `${Prefix}${K}` | DottedPath<T[K], `${Prefix}${K}.`> : `${Prefix}${K}`;
|
|
7
|
+
}[keyof T & string] : never;
|
|
8
|
+
/**
|
|
9
|
+
* Get the type at a dotted path
|
|
10
|
+
*/
|
|
11
|
+
export type PathValue<T, P extends string> = P extends `${infer Key}.${infer Rest}` ? Key extends keyof T ? PathValue<T[Key], Rest> : never : P extends keyof T ? T[P] : never;
|
|
12
|
+
/**
|
|
13
|
+
* Base configuration provider with type-safe path lookup and convict-like API
|
|
14
|
+
*/
|
|
15
|
+
export declare abstract class BaseConfig<TConfig extends object> {
|
|
16
|
+
protected readonly config: TConfig;
|
|
17
|
+
constructor(config: TConfig);
|
|
18
|
+
/**
|
|
19
|
+
* Get the complete configuration object
|
|
20
|
+
*/
|
|
21
|
+
getAll(): TConfig;
|
|
22
|
+
/**
|
|
23
|
+
* Get a value using dotted path notation (convict-like)
|
|
24
|
+
* @example
|
|
25
|
+
* config.get('vm.preset') // returns 'secure'
|
|
26
|
+
* config.get('embedding.strategy') // returns 'tfidf'
|
|
27
|
+
* config.get('directCalls.enabled') // returns true
|
|
28
|
+
* config.get('vm.timeout', 5000) // returns value or 5000 if undefined
|
|
29
|
+
*/
|
|
30
|
+
get<P extends DottedPath<TConfig>>(path: P): PathValue<TConfig, P>;
|
|
31
|
+
get<P extends DottedPath<TConfig>>(path: P, defaultValue: PathValue<TConfig, P>): PathValue<TConfig, P>;
|
|
32
|
+
/**
|
|
33
|
+
* Check if a path exists in the configuration
|
|
34
|
+
* @example
|
|
35
|
+
* config.has('vm.preset') // returns true
|
|
36
|
+
* config.has('nonexistent.path') // returns false
|
|
37
|
+
*/
|
|
38
|
+
has(path: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Get a value with a default fallback
|
|
41
|
+
* @example
|
|
42
|
+
* config.getOrDefault('vm.timeout', 5000)
|
|
43
|
+
*/
|
|
44
|
+
getOrDefault<P extends DottedPath<TConfig>>(path: P, defaultValue: PathValue<TConfig, P>): PathValue<TConfig, P>;
|
|
45
|
+
/**
|
|
46
|
+
* Get a required value (throws if undefined)
|
|
47
|
+
* @example
|
|
48
|
+
* config.getRequired('vm.preset')
|
|
49
|
+
* config.getOrThrow('vm.preset')
|
|
50
|
+
*/
|
|
51
|
+
getRequired<P extends DottedPath<TConfig>>(path: P): PathValue<TConfig, P>;
|
|
52
|
+
/**
|
|
53
|
+
* Alias for getRequired - Get a required value (throws if undefined)
|
|
54
|
+
* @example
|
|
55
|
+
* config.getOrThrow('vm.preset')
|
|
56
|
+
*/
|
|
57
|
+
getOrThrow<P extends DottedPath<TConfig>>(path: P): PathValue<TConfig, P>;
|
|
58
|
+
/**
|
|
59
|
+
* Get a nested object at a path
|
|
60
|
+
* @example
|
|
61
|
+
* config.getSection('vm') // returns entire vm config
|
|
62
|
+
*/
|
|
63
|
+
getSection<K extends keyof TConfig>(section: K): TConfig[K];
|
|
64
|
+
/**
|
|
65
|
+
* Check if the configuration matches a specific value at a path
|
|
66
|
+
* @example
|
|
67
|
+
* config.matches('vm.preset', 'secure') // returns true/false
|
|
68
|
+
*/
|
|
69
|
+
matches<P extends DottedPath<TConfig>>(path: P, value: PathValue<TConfig, P>): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Get multiple values at once
|
|
72
|
+
* @example
|
|
73
|
+
* config.getMany(['vm.preset', 'embedding.strategy', 'topK'])
|
|
74
|
+
*/
|
|
75
|
+
getMany<P extends DottedPath<TConfig>>(paths: P[]): Record<P, PathValue<TConfig, P>>;
|
|
76
|
+
/**
|
|
77
|
+
* Convert configuration to JSON
|
|
78
|
+
*/
|
|
79
|
+
toJSON(): TConfig;
|
|
80
|
+
/**
|
|
81
|
+
* Convert configuration to string
|
|
82
|
+
*/
|
|
83
|
+
toString(): string;
|
|
84
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// file: libs/sdk/src/common/providers/base-config.provider.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.BaseConfig = void 0;
|
|
5
|
+
/**
|
|
6
|
+
* Base configuration provider with type-safe path lookup and convict-like API
|
|
7
|
+
*/
|
|
8
|
+
class BaseConfig {
|
|
9
|
+
config;
|
|
10
|
+
constructor(config) {
|
|
11
|
+
this.config = config;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get the complete configuration object
|
|
15
|
+
*/
|
|
16
|
+
getAll() {
|
|
17
|
+
return this.config;
|
|
18
|
+
}
|
|
19
|
+
get(path, defaultValue) {
|
|
20
|
+
const keys = path.split('.');
|
|
21
|
+
let result = this.config;
|
|
22
|
+
for (const key of keys) {
|
|
23
|
+
if (result && typeof result === 'object' && key in result) {
|
|
24
|
+
result = result[key];
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
return defaultValue !== undefined ? defaultValue : undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const value = result;
|
|
31
|
+
return value !== undefined
|
|
32
|
+
? value
|
|
33
|
+
: defaultValue !== undefined
|
|
34
|
+
? defaultValue
|
|
35
|
+
: undefined;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check if a path exists in the configuration
|
|
39
|
+
* @example
|
|
40
|
+
* config.has('vm.preset') // returns true
|
|
41
|
+
* config.has('nonexistent.path') // returns false
|
|
42
|
+
*/
|
|
43
|
+
has(path) {
|
|
44
|
+
const keys = path.split('.');
|
|
45
|
+
let result = this.config;
|
|
46
|
+
for (const key of keys) {
|
|
47
|
+
if (result && typeof result === 'object' && key in result) {
|
|
48
|
+
result = result[key];
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return result !== undefined;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get a value with a default fallback
|
|
58
|
+
* @example
|
|
59
|
+
* config.getOrDefault('vm.timeout', 5000)
|
|
60
|
+
*/
|
|
61
|
+
getOrDefault(path, defaultValue) {
|
|
62
|
+
const value = this.get(path);
|
|
63
|
+
return value !== undefined ? value : defaultValue;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get a required value (throws if undefined)
|
|
67
|
+
* @example
|
|
68
|
+
* config.getRequired('vm.preset')
|
|
69
|
+
* config.getOrThrow('vm.preset')
|
|
70
|
+
*/
|
|
71
|
+
getRequired(path) {
|
|
72
|
+
const value = this.get(path);
|
|
73
|
+
if (value === undefined) {
|
|
74
|
+
throw new Error(`Required configuration path "${path}" is undefined`);
|
|
75
|
+
}
|
|
76
|
+
return value;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Alias for getRequired - Get a required value (throws if undefined)
|
|
80
|
+
* @example
|
|
81
|
+
* config.getOrThrow('vm.preset')
|
|
82
|
+
*/
|
|
83
|
+
getOrThrow(path) {
|
|
84
|
+
return this.getRequired(path);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get a nested object at a path
|
|
88
|
+
* @example
|
|
89
|
+
* config.getSection('vm') // returns entire vm config
|
|
90
|
+
*/
|
|
91
|
+
getSection(section) {
|
|
92
|
+
return this.config[section];
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Check if the configuration matches a specific value at a path
|
|
96
|
+
* @example
|
|
97
|
+
* config.matches('vm.preset', 'secure') // returns true/false
|
|
98
|
+
*/
|
|
99
|
+
matches(path, value) {
|
|
100
|
+
return this.get(path) === value;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get multiple values at once
|
|
104
|
+
* @example
|
|
105
|
+
* config.getMany(['vm.preset', 'embedding.strategy', 'topK'])
|
|
106
|
+
*/
|
|
107
|
+
getMany(paths) {
|
|
108
|
+
const result = {};
|
|
109
|
+
for (const path of paths) {
|
|
110
|
+
result[path] = this.get(path);
|
|
111
|
+
}
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Convert configuration to JSON
|
|
116
|
+
*/
|
|
117
|
+
toJSON() {
|
|
118
|
+
return this.config;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Convert configuration to string
|
|
122
|
+
*/
|
|
123
|
+
toString() {
|
|
124
|
+
return JSON.stringify(this.config, null, 2);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
exports.BaseConfig = BaseConfig;
|
|
128
|
+
//# sourceMappingURL=base-config.provider.js.map
|