@strapi/core 5.48.1 → 5.50.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/dist/Strapi.d.ts.map +1 -1
- package/dist/Strapi.js +11 -5
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs +2 -1
- package/dist/Strapi.mjs.map +1 -1
- package/dist/ai.d.ts +2 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +8 -0
- package/dist/ai.js.map +1 -0
- package/dist/ai.mjs +3 -0
- package/dist/ai.mjs.map +1 -0
- package/dist/configuration/config-loader.d.ts.map +1 -1
- package/dist/configuration/config-loader.js +11 -6
- package/dist/configuration/config-loader.js.map +1 -1
- package/dist/configuration/get-dirs.d.ts.map +1 -1
- package/dist/configuration/index.d.ts +0 -3
- package/dist/configuration/index.d.ts.map +1 -1
- package/dist/configuration/index.js +22 -18
- package/dist/configuration/index.js.map +1 -1
- package/dist/configuration/index.mjs +0 -3
- package/dist/configuration/index.mjs.map +1 -1
- package/dist/configuration/server-config.d.ts +11 -0
- package/dist/configuration/server-config.d.ts.map +1 -0
- package/dist/configuration/server-config.js +16 -0
- package/dist/configuration/server-config.js.map +1 -0
- package/dist/configuration/server-config.mjs +14 -0
- package/dist/configuration/server-config.mjs.map +1 -0
- package/dist/configuration/urls.d.ts.map +1 -1
- package/dist/configuration/urls.js +11 -7
- package/dist/configuration/urls.js.map +1 -1
- package/dist/core-api/controller/collection-type.d.ts.map +1 -1
- package/dist/core-api/controller/single-type.d.ts.map +1 -1
- package/dist/core-api/controller/transform.d.ts.map +1 -1
- package/dist/core-api/routes/index.d.ts.map +1 -1
- package/dist/core-api/routes/index.js +3 -2
- package/dist/core-api/routes/index.js.map +1 -1
- package/dist/core-api/routes/validation/attributes.d.ts.map +1 -1
- package/dist/core-api/routes/validation/common.js +3 -2
- package/dist/core-api/routes/validation/common.js.map +1 -1
- package/dist/core-api/routes/validation/content-type.js +3 -2
- package/dist/core-api/routes/validation/content-type.js.map +1 -1
- package/dist/core-api/routes/validation/mappers.d.ts.map +1 -1
- package/dist/core-api/routes/validation/mappers.js +3 -2
- package/dist/core-api/routes/validation/mappers.js.map +1 -1
- package/dist/core-api/routes/validation/utils.d.ts.map +1 -1
- package/dist/core-api/routes/validation/utils.js +3 -2
- package/dist/core-api/routes/validation/utils.js.map +1 -1
- package/dist/core-api/service/collection-type.d.ts.map +1 -1
- package/dist/core-api/service/pagination.d.ts.map +1 -1
- package/dist/core-api/service/single-type.d.ts.map +1 -1
- package/dist/domain/content-type/index.d.ts.map +1 -1
- package/dist/domain/content-type/index.js +9 -5
- package/dist/domain/content-type/index.js.map +1 -1
- package/dist/domain/content-type/validator.d.ts.map +1 -1
- package/dist/domain/content-type/validator.js +6 -2
- package/dist/domain/content-type/validator.js.map +1 -1
- package/dist/domain/module/index.d.ts.map +1 -1
- package/dist/domain/module/index.js +6 -2
- package/dist/domain/module/index.js.map +1 -1
- package/dist/domain/module/validation.d.ts.map +1 -1
- package/dist/ee/index.d.ts +2 -1
- package/dist/ee/index.d.ts.map +1 -1
- package/dist/ee/license.d.ts.map +1 -1
- package/dist/ee/license.js +8 -3
- package/dist/ee/license.js.map +1 -1
- package/dist/factories.d.ts.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -1
- package/dist/loaders/admin.js +5 -1
- package/dist/loaders/admin.js.map +1 -1
- package/dist/loaders/apis.js +16 -11
- package/dist/loaders/apis.js.map +1 -1
- package/dist/loaders/components.js +6 -2
- package/dist/loaders/components.js.map +1 -1
- package/dist/loaders/middlewares.js +6 -2
- package/dist/loaders/middlewares.js.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.js +5 -1
- package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
- package/dist/loaders/plugins/get-user-plugins-config.js +6 -2
- package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
- package/dist/loaders/plugins/index.js +8 -4
- package/dist/loaders/plugins/index.js.map +1 -1
- package/dist/loaders/policies.js +6 -2
- package/dist/loaders/policies.js.map +1 -1
- package/dist/loaders/sanitizers.d.ts.map +1 -1
- package/dist/loaders/src-index.d.ts.map +1 -1
- package/dist/loaders/validators.d.ts.map +1 -1
- package/dist/mcp.d.ts +4 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +12 -0
- package/dist/mcp.js.map +1 -0
- package/dist/mcp.mjs +4 -0
- package/dist/mcp.mjs.map +1 -0
- package/dist/middlewares/body.d.ts.map +1 -1
- package/dist/middlewares/body.js +9 -4
- package/dist/middlewares/body.js.map +1 -1
- package/dist/middlewares/body.mjs +1 -1
- package/dist/middlewares/body.mjs.map +1 -1
- package/dist/middlewares/compression.js +5 -1
- package/dist/middlewares/compression.js.map +1 -1
- package/dist/middlewares/cors.d.ts.map +1 -1
- package/dist/middlewares/cors.js +5 -1
- package/dist/middlewares/cors.js.map +1 -1
- package/dist/middlewares/errors.d.ts +5 -0
- package/dist/middlewares/errors.d.ts.map +1 -1
- package/dist/middlewares/errors.js.map +1 -1
- package/dist/middlewares/errors.mjs.map +1 -1
- package/dist/middlewares/favicon.d.ts +0 -1
- package/dist/middlewares/favicon.d.ts.map +1 -1
- package/dist/middlewares/favicon.js +5 -1
- package/dist/middlewares/favicon.js.map +1 -1
- package/dist/middlewares/ip.js +5 -1
- package/dist/middlewares/ip.js.map +1 -1
- package/dist/middlewares/public.js +5 -1
- package/dist/middlewares/public.js.map +1 -1
- package/dist/middlewares/query.js +6 -2
- package/dist/middlewares/query.js.map +1 -1
- package/dist/middlewares/security.js +5 -1
- package/dist/middlewares/security.js.map +1 -1
- package/dist/migrations/database/5.0.0-discard-drafts.js +5 -1
- package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
- package/dist/migrations/draft-publish.d.ts.map +1 -1
- package/dist/migrations/first-published-at.d.ts.map +1 -1
- package/dist/migrations/first-published-at.js +5 -1
- package/dist/migrations/first-published-at.js.map +1 -1
- package/dist/migrations/i18n.d.ts.map +1 -1
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/package.json.js +18 -21
- package/dist/package.json.js.map +1 -1
- package/dist/package.json.mjs +18 -21
- package/dist/package.json.mjs.map +1 -1
- package/dist/providers/provider.d.ts.map +1 -1
- package/dist/registries/apis.d.ts.map +1 -1
- package/dist/registries/components.d.ts +1 -1
- package/dist/registries/components.d.ts.map +1 -1
- package/dist/registries/content-types.d.ts +2 -3
- package/dist/registries/content-types.d.ts.map +1 -1
- package/dist/registries/controllers.d.ts +3 -3
- package/dist/registries/controllers.d.ts.map +1 -1
- package/dist/registries/custom-fields.d.ts.map +1 -1
- package/dist/registries/hooks.d.ts +3 -4
- package/dist/registries/hooks.d.ts.map +1 -1
- package/dist/registries/middlewares.d.ts +2 -3
- package/dist/registries/middlewares.d.ts.map +1 -1
- package/dist/registries/models.d.ts +1 -1
- package/dist/registries/modules.d.ts.map +1 -1
- package/dist/registries/namespace.d.ts.map +1 -1
- package/dist/registries/plugins.d.ts.map +1 -1
- package/dist/registries/policies.d.ts +1 -2
- package/dist/registries/policies.d.ts.map +1 -1
- package/dist/registries/sanitizers.d.ts +2 -2
- package/dist/registries/sanitizers.js +7 -3
- package/dist/registries/sanitizers.js.map +1 -1
- package/dist/registries/services.d.ts +3 -3
- package/dist/registries/services.d.ts.map +1 -1
- package/dist/registries/validators.d.ts +2 -2
- package/dist/registries/validators.js +7 -3
- package/dist/registries/validators.js.map +1 -1
- package/dist/services/ai.d.ts.map +1 -1
- package/dist/services/auth/index.js +7 -3
- package/dist/services/auth/index.js.map +1 -1
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/content-api/index.d.ts +4 -4
- package/dist/services/content-api/index.d.ts.map +1 -1
- package/dist/services/content-api/index.js +10 -6
- package/dist/services/content-api/index.js.map +1 -1
- package/dist/services/content-api/permissions/engine.d.ts.map +1 -1
- package/dist/services/content-api/permissions/engine.js +5 -1
- package/dist/services/content-api/permissions/engine.js.map +1 -1
- package/dist/services/content-api/permissions/index.d.ts +2 -2
- package/dist/services/content-api/permissions/index.d.ts.map +1 -1
- package/dist/services/content-api/permissions/index.js +10 -6
- package/dist/services/content-api/permissions/index.js.map +1 -1
- package/dist/services/content-api/permissions/providers/action.d.ts +1 -1
- package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
- package/dist/services/content-api/permissions/providers/condition.d.ts +1 -1
- package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
- package/dist/services/content-source-maps.d.ts.map +1 -1
- package/dist/services/core-store.d.ts.map +1 -1
- package/dist/services/cron.d.ts +5 -5
- package/dist/services/custom-fields.d.ts.map +1 -1
- package/dist/services/document-service/attributes/index.d.ts +0 -1
- package/dist/services/document-service/attributes/index.d.ts.map +1 -1
- package/dist/services/document-service/attributes/transforms.js +5 -1
- package/dist/services/document-service/attributes/transforms.js.map +1 -1
- package/dist/services/document-service/common.d.ts.map +1 -1
- package/dist/services/document-service/components.d.ts +2 -2
- package/dist/services/document-service/components.d.ts.map +1 -1
- package/dist/services/document-service/components.js +14 -10
- package/dist/services/document-service/components.js.map +1 -1
- package/dist/services/document-service/components.mjs.map +1 -1
- package/dist/services/document-service/draft-and-publish.d.ts +0 -1
- package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
- package/dist/services/document-service/draft-and-publish.js +1 -1
- package/dist/services/document-service/draft-and-publish.js.map +1 -1
- package/dist/services/document-service/draft-and-publish.mjs +1 -1
- package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
- package/dist/services/document-service/entries.d.ts.map +1 -1
- package/dist/services/document-service/entries.js +6 -2
- package/dist/services/document-service/entries.js.map +1 -1
- package/dist/services/document-service/entries.mjs +7 -3
- package/dist/services/document-service/entries.mjs.map +1 -1
- package/dist/services/document-service/events.d.ts.map +1 -1
- package/dist/services/document-service/first-published-at.d.ts.map +1 -1
- package/dist/services/document-service/index.d.ts.map +1 -1
- package/dist/services/document-service/internationalization.d.ts +0 -1
- package/dist/services/document-service/internationalization.d.ts.map +1 -1
- package/dist/services/document-service/internationalization.js.map +1 -1
- package/dist/services/document-service/internationalization.mjs.map +1 -1
- package/dist/services/document-service/middlewares/middleware-manager.d.ts.map +1 -1
- package/dist/services/document-service/params.d.ts +1 -1
- package/dist/services/document-service/params.d.ts.map +1 -1
- package/dist/services/document-service/publication-filter.d.ts +1 -1
- package/dist/services/document-service/publication-filter.d.ts.map +1 -1
- package/dist/services/document-service/transform/data.d.ts +2 -0
- package/dist/services/document-service/transform/data.d.ts.map +1 -1
- package/dist/services/document-service/transform/data.js +7 -1
- package/dist/services/document-service/transform/data.js.map +1 -1
- package/dist/services/document-service/transform/data.mjs +7 -2
- package/dist/services/document-service/transform/data.mjs.map +1 -1
- package/dist/services/document-service/transform/fields.d.ts.map +1 -1
- package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
- package/dist/services/document-service/transform/id-map.js +7 -4
- package/dist/services/document-service/transform/id-map.js.map +1 -1
- package/dist/services/document-service/transform/id-map.mjs +7 -4
- package/dist/services/document-service/transform/id-map.mjs.map +1 -1
- package/dist/services/document-service/transform/id-transform.d.ts +0 -1
- package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
- package/dist/services/document-service/transform/populate.d.ts.map +1 -1
- package/dist/services/document-service/transform/query.d.ts +0 -1
- package/dist/services/document-service/transform/query.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/transform/default-locale.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/data.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
- package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.d.ts +0 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/xto-one.d.ts.map +1 -1
- package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -1
- package/dist/services/document-service/utils/bidirectional-relations.js +7 -2
- package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -1
- package/dist/services/document-service/utils/bidirectional-relations.mjs +7 -2
- package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -1
- package/dist/services/document-service/utils/clean-component-join-table.d.ts.map +1 -1
- package/dist/services/document-service/utils/ordered-parallel.d.ts.map +1 -1
- package/dist/services/document-service/utils/populate.d.ts +1 -1
- package/dist/services/document-service/utils/populate.d.ts.map +1 -1
- package/dist/services/document-service/utils/populate.js.map +1 -1
- package/dist/services/document-service/utils/populate.mjs.map +1 -1
- package/dist/services/document-service/utils/self-referential-relations.d.ts.map +1 -1
- package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
- package/dist/services/entity-service/index.d.ts.map +1 -1
- package/dist/services/entity-service/index.js +9 -4
- package/dist/services/entity-service/index.js.map +1 -1
- package/dist/services/entity-validator/index.d.ts.map +1 -1
- package/dist/services/entity-validator/index.js +9 -4
- package/dist/services/entity-validator/index.js.map +1 -1
- package/dist/services/entity-validator/index.mjs.map +1 -1
- package/dist/services/entity-validator/validators.d.ts.map +1 -1
- package/dist/services/entity-validator/validators.js +10 -6
- package/dist/services/entity-validator/validators.js.map +1 -1
- package/dist/services/errors.d.ts.map +1 -1
- package/dist/services/errors.js +7 -3
- package/dist/services/errors.js.map +1 -1
- package/dist/services/features.d.ts.map +1 -1
- package/dist/services/fs.d.ts.map +1 -1
- package/dist/services/fs.js +10 -5
- package/dist/services/fs.js.map +1 -1
- package/dist/services/mcp/authentication.d.ts.map +1 -1
- package/dist/services/mcp/handlers/handlePost.d.ts.map +1 -1
- package/dist/services/mcp/index.d.ts.map +1 -1
- package/dist/services/mcp/internal/McpCapabilityRegistry.d.ts +2 -2
- package/dist/services/mcp/internal/McpServerFactory.d.ts.map +1 -1
- package/dist/services/mcp/internal/syncMcpSessionCapabilities.d.ts.map +1 -1
- package/dist/services/mcp/metrics/metrics.d.ts.map +1 -1
- package/dist/services/mcp/metrics/normalizeMcpCapability.d.ts.map +1 -1
- package/dist/services/mcp/metrics/wrapCapabilityHandlerForMetrics.d.ts.map +1 -1
- package/dist/services/mcp/middleware/oauthDiscoveryFallback.d.ts.map +1 -1
- package/dist/services/mcp/prompt-registry.d.ts +31 -3
- package/dist/services/mcp/prompt-registry.d.ts.map +1 -1
- package/dist/services/mcp/prompt-registry.js +31 -0
- package/dist/services/mcp/prompt-registry.js.map +1 -1
- package/dist/services/mcp/prompt-registry.mjs +31 -1
- package/dist/services/mcp/prompt-registry.mjs.map +1 -1
- package/dist/services/mcp/resource-registry.d.ts +31 -1
- package/dist/services/mcp/resource-registry.d.ts.map +1 -1
- package/dist/services/mcp/resource-registry.js +31 -0
- package/dist/services/mcp/resource-registry.js.map +1 -1
- package/dist/services/mcp/resource-registry.mjs +31 -1
- package/dist/services/mcp/resource-registry.mjs.map +1 -1
- package/dist/services/mcp/routes.d.ts +1 -1
- package/dist/services/mcp/routes.d.ts.map +1 -1
- package/dist/services/mcp/tool-registry.d.ts +36 -9
- package/dist/services/mcp/tool-registry.d.ts.map +1 -1
- package/dist/services/mcp/tool-registry.js +35 -3
- package/dist/services/mcp/tool-registry.js.map +1 -1
- package/dist/services/mcp/tool-registry.mjs +35 -3
- package/dist/services/mcp/tool-registry.mjs.map +1 -1
- package/dist/services/mcp/tools/log.d.ts +15 -85
- package/dist/services/mcp/tools/log.d.ts.map +1 -1
- package/dist/services/mcp/utils/createSafeCapabilityRegistration.d.ts.map +1 -1
- package/dist/services/mcp/utils/safeHandlerWrapper.d.ts.map +1 -1
- package/dist/services/mcp/utils/sendJsonRpcError.d.ts +0 -1
- package/dist/services/mcp/utils/sendJsonRpcError.d.ts.map +1 -1
- package/dist/services/mcp/utils/withTimeout.d.ts.map +1 -1
- package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
- package/dist/services/metrics/admin-user-hash.js +5 -1
- package/dist/services/metrics/admin-user-hash.js.map +1 -1
- package/dist/services/metrics/index.d.ts.map +1 -1
- package/dist/services/metrics/is-truthy.d.ts.map +1 -1
- package/dist/services/metrics/is-truthy.js +5 -1
- package/dist/services/metrics/is-truthy.js.map +1 -1
- package/dist/services/metrics/middleware.d.ts.map +1 -1
- package/dist/services/metrics/rate-limiter.d.ts +2 -1
- package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
- package/dist/services/metrics/sender.d.ts.map +1 -1
- package/dist/services/metrics/sender.js +17 -9
- package/dist/services/metrics/sender.js.map +1 -1
- package/dist/services/query-params.d.ts.map +1 -1
- package/dist/services/reloader.d.ts.map +1 -1
- package/dist/services/request-context.d.ts.map +1 -1
- package/dist/services/server/admin-api.d.ts +3 -5
- package/dist/services/server/admin-api.d.ts.map +1 -1
- package/dist/services/server/api.d.ts +3 -4
- package/dist/services/server/api.d.ts.map +1 -1
- package/dist/services/server/api.js +5 -1
- package/dist/services/server/api.js.map +1 -1
- package/dist/services/server/compose-endpoint.d.ts.map +1 -1
- package/dist/services/server/compose-endpoint.js +5 -1
- package/dist/services/server/compose-endpoint.js.map +1 -1
- package/dist/services/server/content-api.d.ts +3 -5
- package/dist/services/server/content-api.d.ts.map +1 -1
- package/dist/services/server/http-server.d.ts +0 -1
- package/dist/services/server/http-server.d.ts.map +1 -1
- package/dist/services/server/http-server.js +5 -1
- package/dist/services/server/http-server.js.map +1 -1
- package/dist/services/server/index.d.ts.map +1 -1
- package/dist/services/server/index.js +5 -1
- package/dist/services/server/index.js.map +1 -1
- package/dist/services/server/koa-methods.d.ts +107 -0
- package/dist/services/server/koa-methods.d.ts.map +1 -0
- package/dist/services/server/koa-methods.js +24 -0
- package/dist/services/server/koa-methods.js.map +1 -0
- package/dist/services/server/koa-methods.mjs +22 -0
- package/dist/services/server/koa-methods.mjs.map +1 -0
- package/dist/services/server/koa.d.ts +0 -9
- package/dist/services/server/koa.d.ts.map +1 -1
- package/dist/services/server/koa.js +14 -10
- package/dist/services/server/koa.js.map +1 -1
- package/dist/services/server/koa.mjs +7 -9
- package/dist/services/server/koa.mjs.map +1 -1
- package/dist/services/server/middleware.d.ts.map +1 -1
- package/dist/services/server/middleware.js +5 -1
- package/dist/services/server/middleware.js.map +1 -1
- package/dist/services/server/openapi.d.ts.map +1 -1
- package/dist/services/server/openapi.js +11 -6
- package/dist/services/server/openapi.js.map +1 -1
- package/dist/services/server/policy.d.ts.map +1 -1
- package/dist/services/server/register-middlewares.d.ts.map +1 -1
- package/dist/services/server/register-routes.d.ts.map +1 -1
- package/dist/services/server/register-routes.js +8 -4
- package/dist/services/server/register-routes.js.map +1 -1
- package/dist/services/server/routing.d.ts +0 -2
- package/dist/services/server/routing.d.ts.map +1 -1
- package/dist/services/server/routing.js +5 -1
- package/dist/services/server/routing.js.map +1 -1
- package/dist/services/session-manager.d.ts +20 -0
- package/dist/services/session-manager.d.ts.map +1 -1
- package/dist/services/session-manager.js +71 -9
- package/dist/services/session-manager.js.map +1 -1
- package/dist/services/session-manager.mjs +57 -0
- package/dist/services/session-manager.mjs.map +1 -1
- package/dist/services/webhook-runner.js +7 -2
- package/dist/services/webhook-runner.js.map +1 -1
- package/dist/services/webhook-store.d.ts.map +1 -1
- package/dist/services/worker-queue.js +5 -1
- package/dist/services/worker-queue.js.map +1 -1
- package/dist/utils/convert-custom-field-type.d.ts.map +1 -1
- package/dist/utils/cron.d.ts.map +1 -1
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
- package/dist/utils/filepath-to-prop-path.js +13 -8
- package/dist/utils/filepath-to-prop-path.js.map +1 -1
- package/dist/utils/is-initialized.d.ts.map +1 -1
- package/dist/utils/load-config-file.d.ts.map +1 -1
- package/dist/utils/load-config-file.js +7 -2
- package/dist/utils/load-config-file.js.map +1 -1
- package/dist/utils/load-files.d.ts +1 -1
- package/dist/utils/load-files.d.ts.map +1 -1
- package/dist/utils/load-files.js +12 -6
- package/dist/utils/load-files.js.map +1 -1
- package/dist/utils/open-browser.d.ts +0 -1
- package/dist/utils/open-browser.d.ts.map +1 -1
- package/dist/utils/open-browser.js +5 -1
- package/dist/utils/open-browser.js.map +1 -1
- package/dist/utils/resolve-working-dirs.d.ts.map +1 -1
- package/dist/utils/resolve-working-dirs.js +6 -2
- package/dist/utils/resolve-working-dirs.js.map +1 -1
- package/dist/utils/signals.d.ts.map +1 -1
- package/dist/utils/startup-logger.d.ts.map +1 -1
- package/dist/utils/startup-logger.js +27 -21
- package/dist/utils/startup-logger.js.map +1 -1
- package/dist/utils/transform-content-types-to-models.d.ts +3 -3
- package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
- package/dist/utils/transform-content-types-to-models.js +10 -5
- package/dist/utils/transform-content-types-to-models.js.map +1 -1
- package/dist/utils/update-notifier/index.d.ts.map +1 -1
- package/dist/utils/update-notifier/index.js +21 -8
- package/dist/utils/update-notifier/index.js.map +1 -1
- package/dist/utils/update-notifier/index.mjs +6 -1
- package/dist/utils/update-notifier/index.mjs.map +1 -1
- package/package.json +18 -21
|
@@ -13,6 +13,36 @@ var id = 0;
|
|
|
13
13
|
function _class_private_field_loose_key(name) {
|
|
14
14
|
return "__private_" + id++ + "_" + name;
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Defines a Strapi MCP prompt with full type inference, ready to pass to
|
|
18
|
+
* `strapi.ai.mcp.registerPrompt()`. Exposed publicly as `ai.mcp.definePrompt`.
|
|
19
|
+
*
|
|
20
|
+
* The returned value is the definition unchanged — this builder only exists to
|
|
21
|
+
* infer the `name`/`argsSchema` and narrow the access variant (`devModeOnly` vs
|
|
22
|
+
* `auth`) so the result is directly assignable to `registerPrompt`.
|
|
23
|
+
*
|
|
24
|
+
* @param prompt - The prompt definition. Provide either `devModeOnly: true`
|
|
25
|
+
* (dev-only, no auth) or an `auth` policy set — never both.
|
|
26
|
+
* @returns The same definition, with its access variant narrowed.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { ai } from '@strapi/strapi';
|
|
31
|
+
*
|
|
32
|
+
* const context = ai.mcp.definePrompt({
|
|
33
|
+
* name: 'app-context',
|
|
34
|
+
* title: 'App Context',
|
|
35
|
+
* description: 'Provides context about the app',
|
|
36
|
+
* devModeOnly: true,
|
|
37
|
+
* createHandler: (strapi) => async () => ({
|
|
38
|
+
* messages: [{ role: 'user', content: { type: 'text', text: 'You are connected to Strapi.' } }],
|
|
39
|
+
* }),
|
|
40
|
+
* });
|
|
41
|
+
*
|
|
42
|
+
* // later, in register() or bootstrap():
|
|
43
|
+
* strapi.ai.mcp.registerPrompt(context);
|
|
44
|
+
* ```
|
|
45
|
+
*/ const makeMcpPromptDefinition = (definition)=>definition;
|
|
16
46
|
var _strapi = /*#__PURE__*/ _class_private_field_loose_key("_strapi");
|
|
17
47
|
class McpPromptRegistry extends McpCapabilityRegistryBase {
|
|
18
48
|
bind(mcpServer) {
|
|
@@ -71,5 +101,5 @@ class McpPromptRegistry extends McpCapabilityRegistryBase {
|
|
|
71
101
|
}
|
|
72
102
|
}
|
|
73
103
|
|
|
74
|
-
export { McpPromptRegistry };
|
|
104
|
+
export { McpPromptRegistry, makeMcpPromptDefinition };
|
|
75
105
|
//# sourceMappingURL=prompt-registry.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-registry.mjs","sources":["../../../src/services/mcp/prompt-registry.ts"],"sourcesContent":["// eslint-disable-next-line import/extensions\nimport type { McpServer, RegisteredPrompt } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { Core, Modules } from '@strapi/types';\n\nimport { McpCapabilityDefinitionRegistry } from './internal/McpCapabilityDefinitionRegistry';\nimport {\n type McpCapabilityRegistry,\n McpCapabilityRegistryBase,\n} from './internal/McpCapabilityRegistry';\nimport { createSafeCapabilityRegistration } from './utils/createSafeCapabilityRegistration';\nimport { wrapCapabilityHandlerForMetrics } from './metrics/wrapCapabilityHandlerForMetrics';\n\
|
|
1
|
+
{"version":3,"file":"prompt-registry.mjs","sources":["../../../src/services/mcp/prompt-registry.ts"],"sourcesContent":["// eslint-disable-next-line import/extensions\nimport type { McpServer, RegisteredPrompt } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { Core, Modules } from '@strapi/types';\n\nimport { McpCapabilityDefinitionRegistry } from './internal/McpCapabilityDefinitionRegistry';\nimport {\n type McpCapabilityRegistry,\n McpCapabilityRegistryBase,\n} from './internal/McpCapabilityRegistry';\nimport { createSafeCapabilityRegistration } from './utils/createSafeCapabilityRegistration';\nimport { wrapCapabilityHandlerForMetrics } from './metrics/wrapCapabilityHandlerForMetrics';\n\n/**\n * Defines a Strapi MCP prompt with full type inference, ready to pass to\n * `strapi.ai.mcp.registerPrompt()`. Exposed publicly as `ai.mcp.definePrompt`.\n *\n * The returned value is the definition unchanged — this builder only exists to\n * infer the `name`/`argsSchema` and narrow the access variant (`devModeOnly` vs\n * `auth`) so the result is directly assignable to `registerPrompt`.\n *\n * @param prompt - The prompt definition. Provide either `devModeOnly: true`\n * (dev-only, no auth) or an `auth` policy set — never both.\n * @returns The same definition, with its access variant narrowed.\n *\n * @example\n * ```ts\n * import { ai } from '@strapi/strapi';\n *\n * const context = ai.mcp.definePrompt({\n * name: 'app-context',\n * title: 'App Context',\n * description: 'Provides context about the app',\n * devModeOnly: true,\n * createHandler: (strapi) => async () => ({\n * messages: [{ role: 'user', content: { type: 'text', text: 'You are connected to Strapi.' } }],\n * }),\n * });\n *\n * // later, in register() or bootstrap():\n * strapi.ai.mcp.registerPrompt(context);\n * ```\n */\nexport const makeMcpPromptDefinition = ((definition: Modules.MCP.McpPromptDefinition) =>\n definition) as unknown as Modules.MCP.McpPromptBuilder;\n\nexport class McpPromptRegistry\n extends McpCapabilityRegistryBase<'prompt', Modules.MCP.McpPromptDefinition, RegisteredPrompt>\n implements McpCapabilityRegistry\n{\n #strapi: Core.Strapi;\n\n constructor(ctx: {\n strapi: Core.Strapi;\n definitions: McpCapabilityDefinitionRegistry<'prompt', Modules.MCP.McpPromptDefinition>;\n }) {\n super(ctx.definitions);\n this.#strapi = ctx.strapi;\n }\n\n bind(mcpServer: McpServer) {\n const strapi = this.#strapi;\n\n super.register((definition) => {\n const { name, title, description, argsSchema, createHandler } = definition;\n\n return createSafeCapabilityRegistration({\n strapi,\n capabilityType: 'Prompt',\n name,\n createHandler,\n createFallbackHandler(errorMessage) {\n return async () => ({\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Prompt \"${name}\" failed to initialize: ${errorMessage}`,\n },\n },\n ],\n });\n },\n createErrorResult(error) {\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Prompt \"${name}\" execution failed: ${error.message}`,\n },\n },\n ],\n };\n },\n registerWithSdk(safeHandler) {\n const sdkHandler = wrapCapabilityHandlerForMetrics(\n strapi,\n 'prompt',\n name,\n definition.telemetry,\n safeHandler\n );\n\n return mcpServer.registerPrompt(\n name,\n {\n title,\n description,\n // @ts-expect-error - Internal handler type mismatch due to optional argsSchema\n argsSchema,\n },\n sdkHandler\n );\n },\n });\n });\n }\n}\n"],"names":["makeMcpPromptDefinition","definition","McpPromptRegistry","McpCapabilityRegistryBase","bind","mcpServer","strapi","register","name","title","description","argsSchema","createHandler","createSafeCapabilityRegistration","capabilityType","createFallbackHandler","errorMessage","messages","role","content","type","text","createErrorResult","error","message","registerWithSdk","safeHandler","sdkHandler","wrapCapabilityHandlerForMetrics","telemetry","registerPrompt","ctx","definitions"],"mappings":";;;;AAAA;;;;;;;;;;;AAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BC,IACM,MAAMA,uBAAAA,GAA2B,CAACC,aACvCA;AAMA,IAAA,OAAA,iBAAA,8BAAA,CAAA,SAAA,CAAA;AAJK,MAAMC,iBAAAA,SACHC,yBAAAA,CAAAA;AAaRC,IAAAA,IAAAA,CAAKC,SAAoB,EAAE;AACzB,QAAA,MAAMC,MAAAA,GAAS,+BAAA,CAAA,IAAI,EAAC,OAAA,CAAA,CAAA,OAAA,CAAA;QAEpB,KAAK,CAACC,SAAS,CAACN,UAAAA,GAAAA;YACd,MAAM,EAAEO,IAAI,EAAEC,KAAK,EAAEC,WAAW,EAAEC,UAAU,EAAEC,aAAa,EAAE,GAAGX,UAAAA;AAEhE,YAAA,OAAOY,gCAAAA,CAAiC;AACtCP,gBAAAA,MAAAA;gBACAQ,cAAAA,EAAgB,QAAA;AAChBN,gBAAAA,IAAAA;AACAI,gBAAAA,aAAAA;AACAG,gBAAAA,qBAAAA,CAAAA,CAAsBC,YAAY,EAAA;AAChC,oBAAA,OAAO,WAAa;4BAClBC,QAAAA,EAAU;AACR,gCAAA;oCACEC,IAAAA,EAAM,MAAA;oCACNC,OAAAA,EAAS;wCACPC,IAAAA,EAAM,MAAA;AACNC,wCAAAA,IAAAA,EAAM,CAAC,QAAQ,EAAEb,IAAAA,CAAK,wBAAwB,EAAEQ,YAAAA,CAAAA;AAClD;AACF;AACD;yBACH,CAAA;AACF,gBAAA,CAAA;AACAM,gBAAAA,iBAAAA,CAAAA,CAAkBC,KAAK,EAAA;oBACrB,OAAO;wBACLN,QAAAA,EAAU;AACR,4BAAA;gCACEC,IAAAA,EAAM,MAAA;gCACNC,OAAAA,EAAS;oCACPC,IAAAA,EAAM,MAAA;oCACNC,IAAAA,EAAM,CAAC,QAAQ,EAAEb,IAAAA,CAAK,oBAAoB,EAAEe,KAAAA,CAAMC,OAAO,CAAA;AAC3D;AACF;AACD;AACH,qBAAA;AACF,gBAAA,CAAA;AACAC,gBAAAA,eAAAA,CAAAA,CAAgBC,WAAW,EAAA;AACzB,oBAAA,MAAMC,aAAaC,+BAAAA,CACjBtB,MAAAA,EACA,UACAE,IAAAA,EACAP,UAAAA,CAAW4B,SAAS,EACpBH,WAAAA,CAAAA;oBAGF,OAAOrB,SAAAA,CAAUyB,cAAc,CAC7BtB,IAAAA,EACA;AACEC,wBAAAA,KAAAA;AACAC,wBAAAA,WAAAA;;AAEAC,wBAAAA;qBACF,EACAgB,UAAAA,CAAAA;AAEJ,gBAAA;AACF,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;AACF,IAAA;AAnEA,IAAA,WAAA,CAAYI,GAGX,CAAE;AACD,QAAA,KAAK,CAACA,GAAAA,CAAIC,WAAW,CAAA,EANvB,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,OAAA,EAAA;;mBAAA;;AAOE,QAAA,+BAAA,CAAA,IAAI,EAAC,OAAA,CAAA,CAAA,OAAA,CAAA,GAAUD,IAAIzB,MAAM;AAC3B,IAAA;AA8DF;;;;"}
|
|
@@ -2,7 +2,37 @@ import type { McpServer, RegisteredResource } from '@modelcontextprotocol/sdk/se
|
|
|
2
2
|
import type { Core, Modules } from '@strapi/types';
|
|
3
3
|
import { McpCapabilityDefinitionRegistry } from './internal/McpCapabilityDefinitionRegistry';
|
|
4
4
|
import { type McpCapabilityRegistry, McpCapabilityRegistryBase } from './internal/McpCapabilityRegistry';
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Defines a Strapi MCP resource with full type inference, ready to pass to
|
|
7
|
+
* `strapi.ai.mcp.registerResource()`. Exposed publicly as `ai.mcp.defineResource`.
|
|
8
|
+
*
|
|
9
|
+
* The returned value is the definition unchanged — this builder only exists to
|
|
10
|
+
* infer the `name` and narrow the access variant (`devModeOnly` vs `auth`) so the
|
|
11
|
+
* result is directly assignable to `registerResource`.
|
|
12
|
+
*
|
|
13
|
+
* @param resource - The resource definition. Provide either `devModeOnly: true`
|
|
14
|
+
* (dev-only, no auth) or an `auth` policy set — never both.
|
|
15
|
+
* @returns The same definition, with its access variant narrowed.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { ai } from '@strapi/strapi';
|
|
20
|
+
*
|
|
21
|
+
* const appInfo = ai.mcp.defineResource({
|
|
22
|
+
* name: 'app-info',
|
|
23
|
+
* uri: 'strapi://app/info',
|
|
24
|
+
* metadata: { description: 'Metadata about the app', mimeType: 'application/json' },
|
|
25
|
+
* devModeOnly: true,
|
|
26
|
+
* createHandler: (strapi) => async (uri) => ({
|
|
27
|
+
* contents: [{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify({ ok: true }) }],
|
|
28
|
+
* }),
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* // later, in register() or bootstrap():
|
|
32
|
+
* strapi.ai.mcp.registerResource(appInfo);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare const makeMcpResourceDefinition: Modules.MCP.McpResourceBuilder;
|
|
6
36
|
export declare class McpResourceRegistry extends McpCapabilityRegistryBase<'resource', Modules.MCP.McpResourceDefinition, RegisteredResource> implements McpCapabilityRegistry {
|
|
7
37
|
#private;
|
|
8
38
|
constructor(ctx: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-registry.d.ts","sourceRoot":"","sources":["../../../src/services/mcp/resource-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,kBAAkB,EAEnB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EACL,KAAK,qBAAqB,EAC1B,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAI1C,eAAO,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"resource-registry.d.ts","sourceRoot":"","sources":["../../../src/services/mcp/resource-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,kBAAkB,EAEnB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EACL,KAAK,qBAAqB,EAC1B,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAI1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,yBAAyB,EACV,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;AAE3D,qBAAa,mBACX,SAAQ,yBAAyB,CAC/B,UAAU,EACV,OAAO,CAAC,GAAG,CAAC,qBAAqB,EACjC,kBAAkB,CAEpB,YAAW,qBAAqB;;gBAIpB,GAAG,EAAE;QACf,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,+BAA+B,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;KAC7F;IAKD,IAAI,CAAC,SAAS,EAAE,SAAS;CA+C1B"}
|
|
@@ -14,6 +14,36 @@ var id = 0;
|
|
|
14
14
|
function _class_private_field_loose_key(name) {
|
|
15
15
|
return "__private_" + id++ + "_" + name;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Defines a Strapi MCP resource with full type inference, ready to pass to
|
|
19
|
+
* `strapi.ai.mcp.registerResource()`. Exposed publicly as `ai.mcp.defineResource`.
|
|
20
|
+
*
|
|
21
|
+
* The returned value is the definition unchanged — this builder only exists to
|
|
22
|
+
* infer the `name` and narrow the access variant (`devModeOnly` vs `auth`) so the
|
|
23
|
+
* result is directly assignable to `registerResource`.
|
|
24
|
+
*
|
|
25
|
+
* @param resource - The resource definition. Provide either `devModeOnly: true`
|
|
26
|
+
* (dev-only, no auth) or an `auth` policy set — never both.
|
|
27
|
+
* @returns The same definition, with its access variant narrowed.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* import { ai } from '@strapi/strapi';
|
|
32
|
+
*
|
|
33
|
+
* const appInfo = ai.mcp.defineResource({
|
|
34
|
+
* name: 'app-info',
|
|
35
|
+
* uri: 'strapi://app/info',
|
|
36
|
+
* metadata: { description: 'Metadata about the app', mimeType: 'application/json' },
|
|
37
|
+
* devModeOnly: true,
|
|
38
|
+
* createHandler: (strapi) => async (uri) => ({
|
|
39
|
+
* contents: [{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify({ ok: true }) }],
|
|
40
|
+
* }),
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* // later, in register() or bootstrap():
|
|
44
|
+
* strapi.ai.mcp.registerResource(appInfo);
|
|
45
|
+
* ```
|
|
46
|
+
*/ const makeMcpResourceDefinition = (definition)=>definition;
|
|
17
47
|
var _strapi = /*#__PURE__*/ _class_private_field_loose_key("_strapi");
|
|
18
48
|
class McpResourceRegistry extends McpCapabilityRegistry.McpCapabilityRegistryBase {
|
|
19
49
|
bind(mcpServer) {
|
|
@@ -64,4 +94,5 @@ class McpResourceRegistry extends McpCapabilityRegistry.McpCapabilityRegistryBas
|
|
|
64
94
|
}
|
|
65
95
|
|
|
66
96
|
exports.McpResourceRegistry = McpResourceRegistry;
|
|
97
|
+
exports.makeMcpResourceDefinition = makeMcpResourceDefinition;
|
|
67
98
|
//# sourceMappingURL=resource-registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-registry.js","sources":["../../../src/services/mcp/resource-registry.ts"],"sourcesContent":["import type {\n McpServer,\n RegisteredResource,\n // eslint-disable-next-line import/extensions\n} from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { Core, Modules } from '@strapi/types';\nimport { McpCapabilityDefinitionRegistry } from './internal/McpCapabilityDefinitionRegistry';\nimport {\n type McpCapabilityRegistry,\n McpCapabilityRegistryBase,\n} from './internal/McpCapabilityRegistry';\nimport { createSafeCapabilityRegistration } from './utils/createSafeCapabilityRegistration';\nimport { wrapCapabilityHandlerForMetrics } from './metrics/wrapCapabilityHandlerForMetrics';\n\
|
|
1
|
+
{"version":3,"file":"resource-registry.js","sources":["../../../src/services/mcp/resource-registry.ts"],"sourcesContent":["import type {\n McpServer,\n RegisteredResource,\n // eslint-disable-next-line import/extensions\n} from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { Core, Modules } from '@strapi/types';\nimport { McpCapabilityDefinitionRegistry } from './internal/McpCapabilityDefinitionRegistry';\nimport {\n type McpCapabilityRegistry,\n McpCapabilityRegistryBase,\n} from './internal/McpCapabilityRegistry';\nimport { createSafeCapabilityRegistration } from './utils/createSafeCapabilityRegistration';\nimport { wrapCapabilityHandlerForMetrics } from './metrics/wrapCapabilityHandlerForMetrics';\n\n/**\n * Defines a Strapi MCP resource with full type inference, ready to pass to\n * `strapi.ai.mcp.registerResource()`. Exposed publicly as `ai.mcp.defineResource`.\n *\n * The returned value is the definition unchanged — this builder only exists to\n * infer the `name` and narrow the access variant (`devModeOnly` vs `auth`) so the\n * result is directly assignable to `registerResource`.\n *\n * @param resource - The resource definition. Provide either `devModeOnly: true`\n * (dev-only, no auth) or an `auth` policy set — never both.\n * @returns The same definition, with its access variant narrowed.\n *\n * @example\n * ```ts\n * import { ai } from '@strapi/strapi';\n *\n * const appInfo = ai.mcp.defineResource({\n * name: 'app-info',\n * uri: 'strapi://app/info',\n * metadata: { description: 'Metadata about the app', mimeType: 'application/json' },\n * devModeOnly: true,\n * createHandler: (strapi) => async (uri) => ({\n * contents: [{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify({ ok: true }) }],\n * }),\n * });\n *\n * // later, in register() or bootstrap():\n * strapi.ai.mcp.registerResource(appInfo);\n * ```\n */\nexport const makeMcpResourceDefinition = ((definition: Modules.MCP.McpResourceDefinition) =>\n definition) as unknown as Modules.MCP.McpResourceBuilder;\n\nexport class McpResourceRegistry\n extends McpCapabilityRegistryBase<\n 'resource',\n Modules.MCP.McpResourceDefinition,\n RegisteredResource\n >\n implements McpCapabilityRegistry\n{\n #strapi: Core.Strapi;\n\n constructor(ctx: {\n strapi: Core.Strapi;\n definitions: McpCapabilityDefinitionRegistry<'resource', Modules.MCP.McpResourceDefinition>;\n }) {\n super(ctx.definitions);\n this.#strapi = ctx.strapi;\n }\n\n bind(mcpServer: McpServer) {\n const strapi = this.#strapi;\n\n super.register((definition) => {\n const { name, uri, metadata, createHandler } = definition;\n\n return createSafeCapabilityRegistration({\n strapi,\n capabilityType: 'Resource',\n name,\n createHandler,\n createFallbackHandler(errorMessage) {\n return async (resourceUri) => ({\n contents: [\n {\n uri: resourceUri.href,\n text: `Resource \"${name}\" failed to initialize: ${errorMessage}`,\n mimeType: 'text/plain',\n },\n ],\n });\n },\n createErrorResult(error, args) {\n return {\n contents: [\n {\n uri: args[0] instanceof URL ? args[0].href : uri,\n text: `Resource \"${name}\" execution failed: ${error.message}`,\n mimeType: 'text/plain',\n },\n ],\n };\n },\n registerWithSdk(safeHandler) {\n const sdkHandler = wrapCapabilityHandlerForMetrics(\n strapi,\n 'resource',\n name,\n definition.telemetry,\n safeHandler\n );\n\n return mcpServer.registerResource(name, uri, metadata, sdkHandler);\n },\n });\n });\n }\n}\n"],"names":["makeMcpResourceDefinition","definition","McpResourceRegistry","McpCapabilityRegistryBase","bind","mcpServer","strapi","register","name","uri","metadata","createHandler","createSafeCapabilityRegistration","capabilityType","createFallbackHandler","errorMessage","resourceUri","contents","href","text","mimeType","createErrorResult","error","args","URL","message","registerWithSdk","safeHandler","sdkHandler","wrapCapabilityHandlerForMetrics","telemetry","registerResource","ctx","definitions"],"mappings":";;;;;;;;;;;;;;;;AAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BC,IACM,MAAMA,yBAAAA,GAA6B,CAACC,aACzCA;AAUA,IAAA,OAAA,iBAAA,8BAAA,CAAA,SAAA,CAAA;AARK,MAAMC,mBAAAA,SACHC,+CAAAA,CAAAA;AAiBRC,IAAAA,IAAAA,CAAKC,SAAoB,EAAE;AACzB,QAAA,MAAMC,MAAAA,GAAS,+BAAA,CAAA,IAAI,EAAC,OAAA,CAAA,CAAA,OAAA,CAAA;QAEpB,KAAK,CAACC,SAAS,CAACN,UAAAA,GAAAA;YACd,MAAM,EAAEO,IAAI,EAAEC,GAAG,EAAEC,QAAQ,EAAEC,aAAa,EAAE,GAAGV,UAAAA;AAE/C,YAAA,OAAOW,iEAAAA,CAAiC;AACtCN,gBAAAA,MAAAA;gBACAO,cAAAA,EAAgB,UAAA;AAChBL,gBAAAA,IAAAA;AACAG,gBAAAA,aAAAA;AACAG,gBAAAA,qBAAAA,CAAAA,CAAsBC,YAAY,EAAA;oBAChC,OAAO,OAAOC,eAAiB;4BAC7BC,QAAAA,EAAU;AACR,gCAAA;AACER,oCAAAA,GAAAA,EAAKO,YAAYE,IAAI;AACrBC,oCAAAA,IAAAA,EAAM,CAAC,UAAU,EAAEX,IAAAA,CAAK,wBAAwB,EAAEO,YAAAA,CAAAA,CAAc;oCAChEK,QAAAA,EAAU;AACZ;AACD;yBACH,CAAA;AACF,gBAAA,CAAA;gBACAC,iBAAAA,CAAAA,CAAkBC,KAAK,EAAEC,IAAI,EAAA;oBAC3B,OAAO;wBACLN,QAAAA,EAAU;AACR,4BAAA;gCACER,GAAAA,EAAKc,IAAI,CAAC,CAAA,CAAE,YAAYC,GAAAA,GAAMD,IAAI,CAAC,CAAA,CAAE,CAACL,IAAI,GAAGT,GAAAA;gCAC7CU,IAAAA,EAAM,CAAC,UAAU,EAAEX,IAAAA,CAAK,oBAAoB,EAAEc,KAAAA,CAAMG,OAAO,CAAA,CAAE;gCAC7DL,QAAAA,EAAU;AACZ;AACD;AACH,qBAAA;AACF,gBAAA,CAAA;AACAM,gBAAAA,eAAAA,CAAAA,CAAgBC,WAAW,EAAA;AACzB,oBAAA,MAAMC,aAAaC,+DAAAA,CACjBvB,MAAAA,EACA,YACAE,IAAAA,EACAP,UAAAA,CAAW6B,SAAS,EACpBH,WAAAA,CAAAA;AAGF,oBAAA,OAAOtB,SAAAA,CAAU0B,gBAAgB,CAACvB,IAAAA,EAAMC,KAAKC,QAAAA,EAAUkB,UAAAA,CAAAA;AACzD,gBAAA;AACF,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;AACF,IAAA;AAtDA,IAAA,WAAA,CAAYI,GAGX,CAAE;AACD,QAAA,KAAK,CAACA,GAAAA,CAAIC,WAAW,CAAA,EANvB,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,OAAA,EAAA;;mBAAA;;AAOE,QAAA,+BAAA,CAAA,IAAI,EAAC,OAAA,CAAA,CAAA,OAAA,CAAA,GAAUD,IAAI1B,MAAM;AAC3B,IAAA;AAiDF;;;;;"}
|
|
@@ -12,6 +12,36 @@ var id = 0;
|
|
|
12
12
|
function _class_private_field_loose_key(name) {
|
|
13
13
|
return "__private_" + id++ + "_" + name;
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Defines a Strapi MCP resource with full type inference, ready to pass to
|
|
17
|
+
* `strapi.ai.mcp.registerResource()`. Exposed publicly as `ai.mcp.defineResource`.
|
|
18
|
+
*
|
|
19
|
+
* The returned value is the definition unchanged — this builder only exists to
|
|
20
|
+
* infer the `name` and narrow the access variant (`devModeOnly` vs `auth`) so the
|
|
21
|
+
* result is directly assignable to `registerResource`.
|
|
22
|
+
*
|
|
23
|
+
* @param resource - The resource definition. Provide either `devModeOnly: true`
|
|
24
|
+
* (dev-only, no auth) or an `auth` policy set — never both.
|
|
25
|
+
* @returns The same definition, with its access variant narrowed.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* import { ai } from '@strapi/strapi';
|
|
30
|
+
*
|
|
31
|
+
* const appInfo = ai.mcp.defineResource({
|
|
32
|
+
* name: 'app-info',
|
|
33
|
+
* uri: 'strapi://app/info',
|
|
34
|
+
* metadata: { description: 'Metadata about the app', mimeType: 'application/json' },
|
|
35
|
+
* devModeOnly: true,
|
|
36
|
+
* createHandler: (strapi) => async (uri) => ({
|
|
37
|
+
* contents: [{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify({ ok: true }) }],
|
|
38
|
+
* }),
|
|
39
|
+
* });
|
|
40
|
+
*
|
|
41
|
+
* // later, in register() or bootstrap():
|
|
42
|
+
* strapi.ai.mcp.registerResource(appInfo);
|
|
43
|
+
* ```
|
|
44
|
+
*/ const makeMcpResourceDefinition = (definition)=>definition;
|
|
15
45
|
var _strapi = /*#__PURE__*/ _class_private_field_loose_key("_strapi");
|
|
16
46
|
class McpResourceRegistry extends McpCapabilityRegistryBase {
|
|
17
47
|
bind(mcpServer) {
|
|
@@ -61,5 +91,5 @@ class McpResourceRegistry extends McpCapabilityRegistryBase {
|
|
|
61
91
|
}
|
|
62
92
|
}
|
|
63
93
|
|
|
64
|
-
export { McpResourceRegistry };
|
|
94
|
+
export { McpResourceRegistry, makeMcpResourceDefinition };
|
|
65
95
|
//# sourceMappingURL=resource-registry.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-registry.mjs","sources":["../../../src/services/mcp/resource-registry.ts"],"sourcesContent":["import type {\n McpServer,\n RegisteredResource,\n // eslint-disable-next-line import/extensions\n} from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { Core, Modules } from '@strapi/types';\nimport { McpCapabilityDefinitionRegistry } from './internal/McpCapabilityDefinitionRegistry';\nimport {\n type McpCapabilityRegistry,\n McpCapabilityRegistryBase,\n} from './internal/McpCapabilityRegistry';\nimport { createSafeCapabilityRegistration } from './utils/createSafeCapabilityRegistration';\nimport { wrapCapabilityHandlerForMetrics } from './metrics/wrapCapabilityHandlerForMetrics';\n\
|
|
1
|
+
{"version":3,"file":"resource-registry.mjs","sources":["../../../src/services/mcp/resource-registry.ts"],"sourcesContent":["import type {\n McpServer,\n RegisteredResource,\n // eslint-disable-next-line import/extensions\n} from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { Core, Modules } from '@strapi/types';\nimport { McpCapabilityDefinitionRegistry } from './internal/McpCapabilityDefinitionRegistry';\nimport {\n type McpCapabilityRegistry,\n McpCapabilityRegistryBase,\n} from './internal/McpCapabilityRegistry';\nimport { createSafeCapabilityRegistration } from './utils/createSafeCapabilityRegistration';\nimport { wrapCapabilityHandlerForMetrics } from './metrics/wrapCapabilityHandlerForMetrics';\n\n/**\n * Defines a Strapi MCP resource with full type inference, ready to pass to\n * `strapi.ai.mcp.registerResource()`. Exposed publicly as `ai.mcp.defineResource`.\n *\n * The returned value is the definition unchanged — this builder only exists to\n * infer the `name` and narrow the access variant (`devModeOnly` vs `auth`) so the\n * result is directly assignable to `registerResource`.\n *\n * @param resource - The resource definition. Provide either `devModeOnly: true`\n * (dev-only, no auth) or an `auth` policy set — never both.\n * @returns The same definition, with its access variant narrowed.\n *\n * @example\n * ```ts\n * import { ai } from '@strapi/strapi';\n *\n * const appInfo = ai.mcp.defineResource({\n * name: 'app-info',\n * uri: 'strapi://app/info',\n * metadata: { description: 'Metadata about the app', mimeType: 'application/json' },\n * devModeOnly: true,\n * createHandler: (strapi) => async (uri) => ({\n * contents: [{ uri: uri.href, mimeType: 'application/json', text: JSON.stringify({ ok: true }) }],\n * }),\n * });\n *\n * // later, in register() or bootstrap():\n * strapi.ai.mcp.registerResource(appInfo);\n * ```\n */\nexport const makeMcpResourceDefinition = ((definition: Modules.MCP.McpResourceDefinition) =>\n definition) as unknown as Modules.MCP.McpResourceBuilder;\n\nexport class McpResourceRegistry\n extends McpCapabilityRegistryBase<\n 'resource',\n Modules.MCP.McpResourceDefinition,\n RegisteredResource\n >\n implements McpCapabilityRegistry\n{\n #strapi: Core.Strapi;\n\n constructor(ctx: {\n strapi: Core.Strapi;\n definitions: McpCapabilityDefinitionRegistry<'resource', Modules.MCP.McpResourceDefinition>;\n }) {\n super(ctx.definitions);\n this.#strapi = ctx.strapi;\n }\n\n bind(mcpServer: McpServer) {\n const strapi = this.#strapi;\n\n super.register((definition) => {\n const { name, uri, metadata, createHandler } = definition;\n\n return createSafeCapabilityRegistration({\n strapi,\n capabilityType: 'Resource',\n name,\n createHandler,\n createFallbackHandler(errorMessage) {\n return async (resourceUri) => ({\n contents: [\n {\n uri: resourceUri.href,\n text: `Resource \"${name}\" failed to initialize: ${errorMessage}`,\n mimeType: 'text/plain',\n },\n ],\n });\n },\n createErrorResult(error, args) {\n return {\n contents: [\n {\n uri: args[0] instanceof URL ? args[0].href : uri,\n text: `Resource \"${name}\" execution failed: ${error.message}`,\n mimeType: 'text/plain',\n },\n ],\n };\n },\n registerWithSdk(safeHandler) {\n const sdkHandler = wrapCapabilityHandlerForMetrics(\n strapi,\n 'resource',\n name,\n definition.telemetry,\n safeHandler\n );\n\n return mcpServer.registerResource(name, uri, metadata, sdkHandler);\n },\n });\n });\n }\n}\n"],"names":["makeMcpResourceDefinition","definition","McpResourceRegistry","McpCapabilityRegistryBase","bind","mcpServer","strapi","register","name","uri","metadata","createHandler","createSafeCapabilityRegistration","capabilityType","createFallbackHandler","errorMessage","resourceUri","contents","href","text","mimeType","createErrorResult","error","args","URL","message","registerWithSdk","safeHandler","sdkHandler","wrapCapabilityHandlerForMetrics","telemetry","registerResource","ctx","definitions"],"mappings":";;;;;;;;;;;;;;AAcA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BC,IACM,MAAMA,yBAAAA,GAA6B,CAACC,aACzCA;AAUA,IAAA,OAAA,iBAAA,8BAAA,CAAA,SAAA,CAAA;AARK,MAAMC,mBAAAA,SACHC,yBAAAA,CAAAA;AAiBRC,IAAAA,IAAAA,CAAKC,SAAoB,EAAE;AACzB,QAAA,MAAMC,MAAAA,GAAS,+BAAA,CAAA,IAAI,EAAC,OAAA,CAAA,CAAA,OAAA,CAAA;QAEpB,KAAK,CAACC,SAAS,CAACN,UAAAA,GAAAA;YACd,MAAM,EAAEO,IAAI,EAAEC,GAAG,EAAEC,QAAQ,EAAEC,aAAa,EAAE,GAAGV,UAAAA;AAE/C,YAAA,OAAOW,gCAAAA,CAAiC;AACtCN,gBAAAA,MAAAA;gBACAO,cAAAA,EAAgB,UAAA;AAChBL,gBAAAA,IAAAA;AACAG,gBAAAA,aAAAA;AACAG,gBAAAA,qBAAAA,CAAAA,CAAsBC,YAAY,EAAA;oBAChC,OAAO,OAAOC,eAAiB;4BAC7BC,QAAAA,EAAU;AACR,gCAAA;AACER,oCAAAA,GAAAA,EAAKO,YAAYE,IAAI;AACrBC,oCAAAA,IAAAA,EAAM,CAAC,UAAU,EAAEX,IAAAA,CAAK,wBAAwB,EAAEO,YAAAA,CAAAA,CAAc;oCAChEK,QAAAA,EAAU;AACZ;AACD;yBACH,CAAA;AACF,gBAAA,CAAA;gBACAC,iBAAAA,CAAAA,CAAkBC,KAAK,EAAEC,IAAI,EAAA;oBAC3B,OAAO;wBACLN,QAAAA,EAAU;AACR,4BAAA;gCACER,GAAAA,EAAKc,IAAI,CAAC,CAAA,CAAE,YAAYC,GAAAA,GAAMD,IAAI,CAAC,CAAA,CAAE,CAACL,IAAI,GAAGT,GAAAA;gCAC7CU,IAAAA,EAAM,CAAC,UAAU,EAAEX,IAAAA,CAAK,oBAAoB,EAAEc,KAAAA,CAAMG,OAAO,CAAA,CAAE;gCAC7DL,QAAAA,EAAU;AACZ;AACD;AACH,qBAAA;AACF,gBAAA,CAAA;AACAM,gBAAAA,eAAAA,CAAAA,CAAgBC,WAAW,EAAA;AACzB,oBAAA,MAAMC,aAAaC,+BAAAA,CACjBvB,MAAAA,EACA,YACAE,IAAAA,EACAP,UAAAA,CAAW6B,SAAS,EACpBH,WAAAA,CAAAA;AAGF,oBAAA,OAAOtB,SAAAA,CAAU0B,gBAAgB,CAACvB,IAAAA,EAAMC,KAAKC,QAAAA,EAAUkB,UAAAA,CAAAA;AACzD,gBAAA;AACF,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;AACF,IAAA;AAtDA,IAAA,WAAA,CAAYI,GAGX,CAAE;AACD,QAAA,KAAK,CAACA,GAAAA,CAAIC,WAAW,CAAA,EANvB,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,OAAA,EAAA;;mBAAA;;AAOE,QAAA,+BAAA,CAAA,IAAI,EAAC,OAAA,CAAA,CAAA,OAAA,CAAA,GAAUD,IAAI1B,MAAM;AAC3B,IAAA;AAiDF;;;;"}
|
|
@@ -7,5 +7,5 @@ export type McpRouteHandlers = {
|
|
|
7
7
|
* Creates MCP route definitions for registration with Strapi server.
|
|
8
8
|
* @internal
|
|
9
9
|
*/
|
|
10
|
-
export declare const createMcpRoutes: (config: McpConfiguration, handlers: McpRouteHandlers) => Omit<Core.Route,
|
|
10
|
+
export declare const createMcpRoutes: (config: McpConfiguration, handlers: McpRouteHandlers) => Omit<Core.Route, "info">[];
|
|
11
11
|
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/services/mcp/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAgB/D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/services/mcp/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAgB/D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAC1B,QAAQ,gBAAgB,EACxB,UAAU,gBAAgB,KACzB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAU1B,CAAC"}
|
|
@@ -1,17 +1,44 @@
|
|
|
1
1
|
import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import type { Core, Modules } from '@strapi/types';
|
|
3
|
-
import { z } from '@strapi/utils';
|
|
4
3
|
import { McpCapabilityDefinitionRegistry } from './internal/McpCapabilityDefinitionRegistry';
|
|
5
4
|
import { type McpCapabilityRegistry, McpCapabilityRegistryBase } from './internal/McpCapabilityRegistry';
|
|
6
5
|
import type { McpAdminTokenAbility } from './authentication';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Defines a Strapi MCP tool with full type inference, ready to pass to
|
|
8
|
+
* `strapi.ai.mcp.registerTool()`. Exposed publicly as `ai.mcp.defineTool`.
|
|
9
|
+
*
|
|
10
|
+
* The returned value is the definition unchanged — this builder only exists to
|
|
11
|
+
* infer the `name`, input/output schemas and handler types, and to narrow the
|
|
12
|
+
* access variant (`devModeOnly` vs `auth`) so the result is directly assignable
|
|
13
|
+
* to `registerTool`.
|
|
14
|
+
*
|
|
15
|
+
* @param tool - The tool definition. Provide either `devModeOnly: true` (dev-only,
|
|
16
|
+
* no auth) or an `auth` policy set — never both.
|
|
17
|
+
* @returns The same definition, with its access variant narrowed.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* import { ai } from '@strapi/strapi';
|
|
22
|
+
* import { z } from '@strapi/utils';
|
|
23
|
+
*
|
|
24
|
+
* const greet = ai.mcp.defineTool({
|
|
25
|
+
* name: 'greet',
|
|
26
|
+
* title: 'Greet',
|
|
27
|
+
* description: 'Greets a user by name',
|
|
28
|
+
* devModeOnly: true,
|
|
29
|
+
* resolveInputSchema: () => z.object({ name: z.string() }),
|
|
30
|
+
* resolveOutputSchema: () => z.object({ message: z.string() }),
|
|
31
|
+
* createHandler: (strapi) => async ({ args }) => {
|
|
32
|
+
* const message = `Hello, ${args.name}!`;
|
|
33
|
+
* return { content: [{ type: 'text', text: message }], structuredContent: { message } };
|
|
34
|
+
* },
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* // later, in register() or bootstrap():
|
|
38
|
+
* strapi.ai.mcp.registerTool(greet);
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare const makeMcpToolDefinition: Modules.MCP.McpToolBuilder;
|
|
15
42
|
export declare class McpToolRegistry extends McpCapabilityRegistryBase<'tool', Modules.MCP.McpToolDefinition, RegisteredTool> implements McpCapabilityRegistry {
|
|
16
43
|
#private;
|
|
17
44
|
constructor(ctx: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../../src/services/mcp/tool-registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../../src/services/mcp/tool-registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EACL,KAAK,qBAAqB,EAC1B,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAG1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,qBAAqB,EACN,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAEvD,qBAAa,eACX,SAAQ,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,cAAc,CACvF,YAAW,qBAAqB;;gBAQpB,GAAG,EAAE;QACf,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,+BAA+B,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACpF,OAAO,EAAE,oBAAoB,CAAC;QAC9B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;KAC7C;IAOD,IAAI,CAAC,SAAS,EAAE,SAAS;CAwE1B"}
|
|
@@ -15,9 +15,41 @@ var id = 0;
|
|
|
15
15
|
function _class_private_field_loose_key(name) {
|
|
16
16
|
return "__private_" + id++ + "_" + name;
|
|
17
17
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Defines a Strapi MCP tool with full type inference, ready to pass to
|
|
20
|
+
* `strapi.ai.mcp.registerTool()`. Exposed publicly as `ai.mcp.defineTool`.
|
|
21
|
+
*
|
|
22
|
+
* The returned value is the definition unchanged — this builder only exists to
|
|
23
|
+
* infer the `name`, input/output schemas and handler types, and to narrow the
|
|
24
|
+
* access variant (`devModeOnly` vs `auth`) so the result is directly assignable
|
|
25
|
+
* to `registerTool`.
|
|
26
|
+
*
|
|
27
|
+
* @param tool - The tool definition. Provide either `devModeOnly: true` (dev-only,
|
|
28
|
+
* no auth) or an `auth` policy set — never both.
|
|
29
|
+
* @returns The same definition, with its access variant narrowed.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* import { ai } from '@strapi/strapi';
|
|
34
|
+
* import { z } from '@strapi/utils';
|
|
35
|
+
*
|
|
36
|
+
* const greet = ai.mcp.defineTool({
|
|
37
|
+
* name: 'greet',
|
|
38
|
+
* title: 'Greet',
|
|
39
|
+
* description: 'Greets a user by name',
|
|
40
|
+
* devModeOnly: true,
|
|
41
|
+
* resolveInputSchema: () => z.object({ name: z.string() }),
|
|
42
|
+
* resolveOutputSchema: () => z.object({ message: z.string() }),
|
|
43
|
+
* createHandler: (strapi) => async ({ args }) => {
|
|
44
|
+
* const message = `Hello, ${args.name}!`;
|
|
45
|
+
* return { content: [{ type: 'text', text: message }], structuredContent: { message } };
|
|
46
|
+
* },
|
|
47
|
+
* });
|
|
48
|
+
*
|
|
49
|
+
* // later, in register() or bootstrap():
|
|
50
|
+
* strapi.ai.mcp.registerTool(greet);
|
|
51
|
+
* ```
|
|
52
|
+
*/ const makeMcpToolDefinition = (definition)=>definition;
|
|
21
53
|
var _strapi = /*#__PURE__*/ _class_private_field_loose_key("_strapi"), _ability = /*#__PURE__*/ _class_private_field_loose_key("_ability"), _user = /*#__PURE__*/ _class_private_field_loose_key("_user");
|
|
22
54
|
class McpToolRegistry extends McpCapabilityRegistry.McpCapabilityRegistryBase {
|
|
23
55
|
bind(mcpServer) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.js","sources":["../../../src/services/mcp/tool-registry.ts"],"sourcesContent":["// eslint-disable-next-line import/extensions\nimport type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { Core, Modules } from '@strapi/types';\nimport {
|
|
1
|
+
{"version":3,"file":"tool-registry.js","sources":["../../../src/services/mcp/tool-registry.ts"],"sourcesContent":["// eslint-disable-next-line import/extensions\nimport type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { Core, Modules } from '@strapi/types';\nimport { McpCapabilityDefinitionRegistry } from './internal/McpCapabilityDefinitionRegistry';\nimport {\n type McpCapabilityRegistry,\n McpCapabilityRegistryBase,\n} from './internal/McpCapabilityRegistry';\nimport { wrapCapabilityHandlerForMetrics } from './metrics/wrapCapabilityHandlerForMetrics';\nimport { createSafeCapabilityRegistration } from './utils/createSafeCapabilityRegistration';\nimport type { McpAdminTokenAbility } from './authentication';\n\n/**\n * Defines a Strapi MCP tool with full type inference, ready to pass to\n * `strapi.ai.mcp.registerTool()`. Exposed publicly as `ai.mcp.defineTool`.\n *\n * The returned value is the definition unchanged — this builder only exists to\n * infer the `name`, input/output schemas and handler types, and to narrow the\n * access variant (`devModeOnly` vs `auth`) so the result is directly assignable\n * to `registerTool`.\n *\n * @param tool - The tool definition. Provide either `devModeOnly: true` (dev-only,\n * no auth) or an `auth` policy set — never both.\n * @returns The same definition, with its access variant narrowed.\n *\n * @example\n * ```ts\n * import { ai } from '@strapi/strapi';\n * import { z } from '@strapi/utils';\n *\n * const greet = ai.mcp.defineTool({\n * name: 'greet',\n * title: 'Greet',\n * description: 'Greets a user by name',\n * devModeOnly: true,\n * resolveInputSchema: () => z.object({ name: z.string() }),\n * resolveOutputSchema: () => z.object({ message: z.string() }),\n * createHandler: (strapi) => async ({ args }) => {\n * const message = `Hello, ${args.name}!`;\n * return { content: [{ type: 'text', text: message }], structuredContent: { message } };\n * },\n * });\n *\n * // later, in register() or bootstrap():\n * strapi.ai.mcp.registerTool(greet);\n * ```\n */\nexport const makeMcpToolDefinition = ((definition: Modules.MCP.McpToolDefinition) =>\n definition) as unknown as Modules.MCP.McpToolBuilder;\n\nexport class McpToolRegistry\n extends McpCapabilityRegistryBase<'tool', Modules.MCP.McpToolDefinition, RegisteredTool>\n implements McpCapabilityRegistry\n{\n #strapi: Core.Strapi;\n\n #ability: McpAdminTokenAbility;\n\n #user: Modules.MCP.McpHandlerContext['user'];\n\n constructor(ctx: {\n strapi: Core.Strapi;\n definitions: McpCapabilityDefinitionRegistry<'tool', Modules.MCP.McpToolDefinition>;\n ability: McpAdminTokenAbility;\n user: Modules.MCP.McpHandlerContext['user'];\n }) {\n super(ctx.definitions);\n this.#strapi = ctx.strapi;\n this.#ability = ctx.ability;\n this.#user = ctx.user;\n }\n\n bind(mcpServer: McpServer) {\n const strapi = this.#strapi;\n\n super.register((definition) => {\n const { name, title, description, resolveInputSchema, resolveOutputSchema, createHandler } =\n definition;\n\n // Bind the session ability and token owner into the handler context so handlers can enforce\n // field-level and entity-level permission checks and set creator fields.\n const context: Modules.MCP.McpHandlerContext = {\n userAbility: this.#ability,\n user: this.#user,\n };\n const createHandlerWithContext = (strapi: Core.Strapi) => createHandler(strapi, context);\n\n return createSafeCapabilityRegistration({\n strapi,\n capabilityType: 'Tool',\n name,\n createHandler: createHandlerWithContext,\n createFallbackHandler(errorMessage) {\n return async () => ({\n content: [\n {\n type: 'text' as const,\n text: `Tool \"${name}\" failed to initialize: ${errorMessage}`,\n },\n ],\n isError: true,\n });\n },\n createErrorResult(error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Tool \"${name}\" execution failed: ${error.message}`,\n },\n ],\n isError: true,\n };\n },\n registerWithSdk(safeHandler) {\n const inputSchema =\n resolveInputSchema !== undefined ? resolveInputSchema(context) : undefined;\n const outputSchema = resolveOutputSchema(context);\n\n // Adapt from our object-literal handler `({ args, extra })` to\n // the MCP SDK's positional form `(args, extra)` / `(extra)`.\n const baseHandler =\n inputSchema !== undefined\n ? (args: unknown, extra: unknown) =>\n safeHandler({ args, extra } as Parameters<typeof safeHandler>[0])\n : (extra: unknown) => safeHandler({ extra } as Parameters<typeof safeHandler>[0]);\n\n const sdkHandler = wrapCapabilityHandlerForMetrics(\n strapi,\n 'tool',\n name,\n definition.telemetry,\n baseHandler\n );\n\n return mcpServer.registerTool(\n name,\n { title, description, inputSchema, outputSchema },\n sdkHandler\n );\n },\n });\n });\n }\n}\n"],"names":["makeMcpToolDefinition","definition","McpToolRegistry","McpCapabilityRegistryBase","bind","mcpServer","strapi","register","name","title","description","resolveInputSchema","resolveOutputSchema","createHandler","context","userAbility","user","createHandlerWithContext","createSafeCapabilityRegistration","capabilityType","createFallbackHandler","errorMessage","content","type","text","isError","createErrorResult","error","message","registerWithSdk","safeHandler","inputSchema","undefined","outputSchema","baseHandler","args","extra","sdkHandler","wrapCapabilityHandlerForMetrics","telemetry","registerTool","ctx","definitions","ability"],"mappings":"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"}
|
|
@@ -13,9 +13,41 @@ var id = 0;
|
|
|
13
13
|
function _class_private_field_loose_key(name) {
|
|
14
14
|
return "__private_" + id++ + "_" + name;
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Defines a Strapi MCP tool with full type inference, ready to pass to
|
|
18
|
+
* `strapi.ai.mcp.registerTool()`. Exposed publicly as `ai.mcp.defineTool`.
|
|
19
|
+
*
|
|
20
|
+
* The returned value is the definition unchanged — this builder only exists to
|
|
21
|
+
* infer the `name`, input/output schemas and handler types, and to narrow the
|
|
22
|
+
* access variant (`devModeOnly` vs `auth`) so the result is directly assignable
|
|
23
|
+
* to `registerTool`.
|
|
24
|
+
*
|
|
25
|
+
* @param tool - The tool definition. Provide either `devModeOnly: true` (dev-only,
|
|
26
|
+
* no auth) or an `auth` policy set — never both.
|
|
27
|
+
* @returns The same definition, with its access variant narrowed.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* import { ai } from '@strapi/strapi';
|
|
32
|
+
* import { z } from '@strapi/utils';
|
|
33
|
+
*
|
|
34
|
+
* const greet = ai.mcp.defineTool({
|
|
35
|
+
* name: 'greet',
|
|
36
|
+
* title: 'Greet',
|
|
37
|
+
* description: 'Greets a user by name',
|
|
38
|
+
* devModeOnly: true,
|
|
39
|
+
* resolveInputSchema: () => z.object({ name: z.string() }),
|
|
40
|
+
* resolveOutputSchema: () => z.object({ message: z.string() }),
|
|
41
|
+
* createHandler: (strapi) => async ({ args }) => {
|
|
42
|
+
* const message = `Hello, ${args.name}!`;
|
|
43
|
+
* return { content: [{ type: 'text', text: message }], structuredContent: { message } };
|
|
44
|
+
* },
|
|
45
|
+
* });
|
|
46
|
+
*
|
|
47
|
+
* // later, in register() or bootstrap():
|
|
48
|
+
* strapi.ai.mcp.registerTool(greet);
|
|
49
|
+
* ```
|
|
50
|
+
*/ const makeMcpToolDefinition = (definition)=>definition;
|
|
19
51
|
var _strapi = /*#__PURE__*/ _class_private_field_loose_key("_strapi"), _ability = /*#__PURE__*/ _class_private_field_loose_key("_ability"), _user = /*#__PURE__*/ _class_private_field_loose_key("_user");
|
|
20
52
|
class McpToolRegistry extends McpCapabilityRegistryBase {
|
|
21
53
|
bind(mcpServer) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.mjs","sources":["../../../src/services/mcp/tool-registry.ts"],"sourcesContent":["// eslint-disable-next-line import/extensions\nimport type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { Core, Modules } from '@strapi/types';\nimport {
|
|
1
|
+
{"version":3,"file":"tool-registry.mjs","sources":["../../../src/services/mcp/tool-registry.ts"],"sourcesContent":["// eslint-disable-next-line import/extensions\nimport type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { Core, Modules } from '@strapi/types';\nimport { McpCapabilityDefinitionRegistry } from './internal/McpCapabilityDefinitionRegistry';\nimport {\n type McpCapabilityRegistry,\n McpCapabilityRegistryBase,\n} from './internal/McpCapabilityRegistry';\nimport { wrapCapabilityHandlerForMetrics } from './metrics/wrapCapabilityHandlerForMetrics';\nimport { createSafeCapabilityRegistration } from './utils/createSafeCapabilityRegistration';\nimport type { McpAdminTokenAbility } from './authentication';\n\n/**\n * Defines a Strapi MCP tool with full type inference, ready to pass to\n * `strapi.ai.mcp.registerTool()`. Exposed publicly as `ai.mcp.defineTool`.\n *\n * The returned value is the definition unchanged — this builder only exists to\n * infer the `name`, input/output schemas and handler types, and to narrow the\n * access variant (`devModeOnly` vs `auth`) so the result is directly assignable\n * to `registerTool`.\n *\n * @param tool - The tool definition. Provide either `devModeOnly: true` (dev-only,\n * no auth) or an `auth` policy set — never both.\n * @returns The same definition, with its access variant narrowed.\n *\n * @example\n * ```ts\n * import { ai } from '@strapi/strapi';\n * import { z } from '@strapi/utils';\n *\n * const greet = ai.mcp.defineTool({\n * name: 'greet',\n * title: 'Greet',\n * description: 'Greets a user by name',\n * devModeOnly: true,\n * resolveInputSchema: () => z.object({ name: z.string() }),\n * resolveOutputSchema: () => z.object({ message: z.string() }),\n * createHandler: (strapi) => async ({ args }) => {\n * const message = `Hello, ${args.name}!`;\n * return { content: [{ type: 'text', text: message }], structuredContent: { message } };\n * },\n * });\n *\n * // later, in register() or bootstrap():\n * strapi.ai.mcp.registerTool(greet);\n * ```\n */\nexport const makeMcpToolDefinition = ((definition: Modules.MCP.McpToolDefinition) =>\n definition) as unknown as Modules.MCP.McpToolBuilder;\n\nexport class McpToolRegistry\n extends McpCapabilityRegistryBase<'tool', Modules.MCP.McpToolDefinition, RegisteredTool>\n implements McpCapabilityRegistry\n{\n #strapi: Core.Strapi;\n\n #ability: McpAdminTokenAbility;\n\n #user: Modules.MCP.McpHandlerContext['user'];\n\n constructor(ctx: {\n strapi: Core.Strapi;\n definitions: McpCapabilityDefinitionRegistry<'tool', Modules.MCP.McpToolDefinition>;\n ability: McpAdminTokenAbility;\n user: Modules.MCP.McpHandlerContext['user'];\n }) {\n super(ctx.definitions);\n this.#strapi = ctx.strapi;\n this.#ability = ctx.ability;\n this.#user = ctx.user;\n }\n\n bind(mcpServer: McpServer) {\n const strapi = this.#strapi;\n\n super.register((definition) => {\n const { name, title, description, resolveInputSchema, resolveOutputSchema, createHandler } =\n definition;\n\n // Bind the session ability and token owner into the handler context so handlers can enforce\n // field-level and entity-level permission checks and set creator fields.\n const context: Modules.MCP.McpHandlerContext = {\n userAbility: this.#ability,\n user: this.#user,\n };\n const createHandlerWithContext = (strapi: Core.Strapi) => createHandler(strapi, context);\n\n return createSafeCapabilityRegistration({\n strapi,\n capabilityType: 'Tool',\n name,\n createHandler: createHandlerWithContext,\n createFallbackHandler(errorMessage) {\n return async () => ({\n content: [\n {\n type: 'text' as const,\n text: `Tool \"${name}\" failed to initialize: ${errorMessage}`,\n },\n ],\n isError: true,\n });\n },\n createErrorResult(error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: `Tool \"${name}\" execution failed: ${error.message}`,\n },\n ],\n isError: true,\n };\n },\n registerWithSdk(safeHandler) {\n const inputSchema =\n resolveInputSchema !== undefined ? resolveInputSchema(context) : undefined;\n const outputSchema = resolveOutputSchema(context);\n\n // Adapt from our object-literal handler `({ args, extra })` to\n // the MCP SDK's positional form `(args, extra)` / `(extra)`.\n const baseHandler =\n inputSchema !== undefined\n ? (args: unknown, extra: unknown) =>\n safeHandler({ args, extra } as Parameters<typeof safeHandler>[0])\n : (extra: unknown) => safeHandler({ extra } as Parameters<typeof safeHandler>[0]);\n\n const sdkHandler = wrapCapabilityHandlerForMetrics(\n strapi,\n 'tool',\n name,\n definition.telemetry,\n baseHandler\n );\n\n return mcpServer.registerTool(\n name,\n { title, description, inputSchema, outputSchema },\n sdkHandler\n );\n },\n });\n });\n }\n}\n"],"names":["makeMcpToolDefinition","definition","McpToolRegistry","McpCapabilityRegistryBase","bind","mcpServer","strapi","register","name","title","description","resolveInputSchema","resolveOutputSchema","createHandler","context","userAbility","user","createHandlerWithContext","createSafeCapabilityRegistration","capabilityType","createFallbackHandler","errorMessage","content","type","text","isError","createErrorResult","error","message","registerWithSdk","safeHandler","inputSchema","undefined","outputSchema","baseHandler","args","extra","sdkHandler","wrapCapabilityHandlerForMetrics","telemetry","registerTool","ctx","definitions","ability"],"mappings":";;;;AAAA;;;;;;;;;;;AAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCC,IACM,MAAMA,qBAAAA,GAAyB,CAACC,aACrCA;AAMA,IAAA,OAAA,iBAAA,8BAAA,CAAA,SAAA,CAAA,EAEA,QAAA,iBAAA,8BAAA,CAAA,UAAA,CAAA,EAEA,KAAA,iBAAA,8BAAA,CAAA,OAAA,CAAA;AARK,MAAMC,eAAAA,SACHC,yBAAAA,CAAAA;AAqBRC,IAAAA,IAAAA,CAAKC,SAAoB,EAAE;AACzB,QAAA,MAAMC,MAAAA,GAAS,+BAAA,CAAA,IAAI,EAAC,OAAA,CAAA,CAAA,OAAA,CAAA;QAEpB,KAAK,CAACC,SAAS,CAACN,UAAAA,GAAAA;AACd,YAAA,MAAM,EAAEO,IAAI,EAAEC,KAAK,EAAEC,WAAW,EAAEC,kBAAkB,EAAEC,mBAAmB,EAAEC,aAAa,EAAE,GACxFZ,UAAAA;;;AAIF,YAAA,MAAMa,OAAAA,GAAyC;AAC7CC,gBAAAA,WAAW,EAAE,+BAAA,CAAA,IAAI,EAAC,QAAA,CAAA,CAAA,QAAA,CAAA;AAClBC,gBAAAA,IAAI,EAAE,+BAAA,CAAA,IAAI,EAAC,KAAA,CAAA,CAAA,KAAA;AACb,aAAA;AACA,YAAA,MAAMC,wBAAAA,GAA2B,CAACX,MAAAA,GAAwBO,aAAAA,CAAcP,MAAAA,EAAQQ,OAAAA,CAAAA;AAEhF,YAAA,OAAOI,gCAAAA,CAAiC;AACtCZ,gBAAAA,MAAAA;gBACAa,cAAAA,EAAgB,MAAA;AAChBX,gBAAAA,IAAAA;gBACAK,aAAAA,EAAeI,wBAAAA;AACfG,gBAAAA,qBAAAA,CAAAA,CAAsBC,YAAY,EAAA;AAChC,oBAAA,OAAO,WAAa;4BAClBC,OAAAA,EAAS;AACP,gCAAA;oCACEC,IAAAA,EAAM,MAAA;AACNC,oCAAAA,IAAAA,EAAM,CAAC,MAAM,EAAEhB,IAAAA,CAAK,wBAAwB,EAAEa,YAAAA,CAAAA;AAChD;AACD,6BAAA;4BACDI,OAAAA,EAAS;yBACX,CAAA;AACF,gBAAA,CAAA;AACAC,gBAAAA,iBAAAA,CAAAA,CAAkBC,KAAK,EAAA;oBACrB,OAAO;wBACLL,OAAAA,EAAS;AACP,4BAAA;gCACEC,IAAAA,EAAM,MAAA;gCACNC,IAAAA,EAAM,CAAC,MAAM,EAAEhB,IAAAA,CAAK,oBAAoB,EAAEmB,KAAAA,CAAMC,OAAO,CAAA;AACzD;AACD,yBAAA;wBACDH,OAAAA,EAAS;AACX,qBAAA;AACF,gBAAA,CAAA;AACAI,gBAAAA,eAAAA,CAAAA,CAAgBC,WAAW,EAAA;AACzB,oBAAA,MAAMC,WAAAA,GACJpB,kBAAAA,KAAuBqB,SAAAA,GAAYrB,kBAAAA,CAAmBG,OAAAA,CAAAA,GAAWkB,SAAAA;AACnE,oBAAA,MAAMC,eAAerB,mBAAAA,CAAoBE,OAAAA,CAAAA;;;AAIzC,oBAAA,MAAMoB,cACJH,WAAAA,KAAgBC,SAAAA,GACZ,CAACG,IAAAA,EAAeC,QACdN,WAAAA,CAAY;AAAEK,4BAAAA,IAAAA;AAAMC,4BAAAA;yBAAM,CAAA,GAC5B,CAACA,QAAmBN,WAAAA,CAAY;AAAEM,4BAAAA;AAAM,yBAAA,CAAA;AAE9C,oBAAA,MAAMC,aAAaC,+BAAAA,CACjBhC,MAAAA,EACA,QACAE,IAAAA,EACAP,UAAAA,CAAWsC,SAAS,EACpBL,WAAAA,CAAAA;oBAGF,OAAO7B,SAAAA,CAAUmC,YAAY,CAC3BhC,IAAAA,EACA;AAAEC,wBAAAA,KAAAA;AAAOC,wBAAAA,WAAAA;AAAaqB,wBAAAA,WAAAA;AAAaE,wBAAAA;qBAAa,EAChDI,UAAAA,CAAAA;AAEJ,gBAAA;AACF,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;AACF,IAAA;AAnFA,IAAA,WAAA,CAAYI,GAKX,CAAE;AACD,QAAA,KAAK,CAACA,GAAAA,CAAIC,WAAW,CAAA,EAZvB,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,OAAA,EAAA;;mBAAA;YAEA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,QAAA,EAAA;;mBAAA;YAEA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,KAAA,EAAA;;mBAAA;;AASE,QAAA,+BAAA,CAAA,IAAI,EAAC,OAAA,CAAA,CAAA,OAAA,CAAA,GAAUD,IAAInC,MAAM;AACzB,QAAA,+BAAA,CAAA,IAAI,EAAC,QAAA,CAAA,CAAA,QAAA,CAAA,GAAWmC,IAAIE,OAAO;AAC3B,QAAA,+BAAA,CAAA,IAAI,EAAC,KAAA,CAAA,CAAA,KAAA,CAAA,GAAQF,IAAIzB,IAAI;AACvB,IAAA;AA0EF;;;;"}
|