@vendure/mcp-plugin 3.8.0-minor-bootstrap.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/lib/api/api-extensions.d.ts +2 -0
- package/lib/api/api-extensions.js +239 -0
- package/lib/api/api-extensions.js.map +1 -0
- package/lib/api/mcp-actor.service.d.ts +19 -0
- package/lib/api/mcp-actor.service.js +52 -0
- package/lib/api/mcp-actor.service.js.map +1 -0
- package/lib/api/mcp-admin.resolver.d.ts +105 -0
- package/lib/api/mcp-admin.resolver.js +463 -0
- package/lib/api/mcp-admin.resolver.js.map +1 -0
- package/lib/api/mcp-shop.resolver.d.ts +25 -0
- package/lib/api/mcp-shop.resolver.js +74 -0
- package/lib/api/mcp-shop.resolver.js.map +1 -0
- package/lib/check-options.d.ts +7 -0
- package/lib/check-options.js +130 -0
- package/lib/check-options.js.map +1 -0
- package/lib/constants.d.ts +48 -0
- package/lib/constants.js +72 -0
- package/lib/constants.js.map +1 -0
- package/lib/delete-in-batches.d.ts +5 -0
- package/lib/delete-in-batches.js +28 -0
- package/lib/delete-in-batches.js.map +1 -0
- package/lib/entities/index.d.ts +5 -0
- package/lib/entities/index.js +22 -0
- package/lib/entities/index.js.map +1 -0
- package/lib/entities/mcp-authorization-code.entity.d.ts +33 -0
- package/lib/entities/mcp-authorization-code.entity.js +77 -0
- package/lib/entities/mcp-authorization-code.entity.js.map +1 -0
- package/lib/entities/mcp-authorization-request.entity.d.ts +31 -0
- package/lib/entities/mcp-authorization-request.entity.js +73 -0
- package/lib/entities/mcp-authorization-request.entity.js.map +1 -0
- package/lib/entities/mcp-oauth-client.entity.d.ts +56 -0
- package/lib/entities/mcp-oauth-client.entity.js +70 -0
- package/lib/entities/mcp-oauth-client.entity.js.map +1 -0
- package/lib/entities/mcp-oauth-grant.entity.d.ts +77 -0
- package/lib/entities/mcp-oauth-grant.entity.js +121 -0
- package/lib/entities/mcp-oauth-grant.entity.js.map +1 -0
- package/lib/entities/mcp-tool-call-log.entity.d.ts +50 -0
- package/lib/entities/mcp-tool-call-log.entity.js +101 -0
- package/lib/entities/mcp-tool-call-log.entity.js.map +1 -0
- package/lib/events/mcp-tool-call.event.d.ts +17 -0
- package/lib/events/mcp-tool-call.event.js +23 -0
- package/lib/events/mcp-tool-call.event.js.map +1 -0
- package/lib/get-client-ip.d.ts +2 -0
- package/lib/get-client-ip.js +10 -0
- package/lib/get-client-ip.js.map +1 -0
- package/lib/get-language-code.d.ts +3 -0
- package/lib/get-language-code.js +12 -0
- package/lib/get-language-code.js.map +1 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.js +26 -0
- package/lib/index.js.map +1 -0
- package/lib/internal-types.d.ts +27 -0
- package/lib/internal-types.js +3 -0
- package/lib/internal-types.js.map +1 -0
- package/lib/logging/mcp-tool-call-log-retention.service.d.ts +8 -0
- package/lib/logging/mcp-tool-call-log-retention.service.js +54 -0
- package/lib/logging/mcp-tool-call-log-retention.service.js.map +1 -0
- package/lib/logging/mcp-tool-call-log.service.d.ts +24 -0
- package/lib/logging/mcp-tool-call-log.service.js +128 -0
- package/lib/logging/mcp-tool-call-log.service.js.map +1 -0
- package/lib/oauth/cimd/cimd-client-resolver.service.d.ts +18 -0
- package/lib/oauth/cimd/cimd-client-resolver.service.js +109 -0
- package/lib/oauth/cimd/cimd-client-resolver.service.js.map +1 -0
- package/lib/oauth/cimd/cimd-document.d.ts +11 -0
- package/lib/oauth/cimd/cimd-document.js +66 -0
- package/lib/oauth/cimd/cimd-document.js.map +1 -0
- package/lib/oauth/cimd/cimd-fetch.d.ts +14 -0
- package/lib/oauth/cimd/cimd-fetch.js +192 -0
- package/lib/oauth/cimd/cimd-fetch.js.map +1 -0
- package/lib/oauth/cimd/cimd-url.d.ts +5 -0
- package/lib/oauth/cimd/cimd-url.js +94 -0
- package/lib/oauth/cimd/cimd-url.js.map +1 -0
- package/lib/oauth/grant-session.service.d.ts +19 -0
- package/lib/oauth/grant-session.service.js +141 -0
- package/lib/oauth/grant-session.service.js.map +1 -0
- package/lib/oauth/oauth-error.d.ts +18 -0
- package/lib/oauth/oauth-error.js +60 -0
- package/lib/oauth/oauth-error.js.map +1 -0
- package/lib/oauth/oauth-metadata.service.d.ts +34 -0
- package/lib/oauth/oauth-metadata.service.js +107 -0
- package/lib/oauth/oauth-metadata.service.js.map +1 -0
- package/lib/oauth/oauth-retention.service.d.ts +23 -0
- package/lib/oauth/oauth-retention.service.js +103 -0
- package/lib/oauth/oauth-retention.service.js.map +1 -0
- package/lib/oauth/oauth-types.d.ts +61 -0
- package/lib/oauth/oauth-types.js +32 -0
- package/lib/oauth/oauth-types.js.map +1 -0
- package/lib/oauth/oauth-utils.d.ts +20 -0
- package/lib/oauth/oauth-utils.js +111 -0
- package/lib/oauth/oauth-utils.js.map +1 -0
- package/lib/oauth/oauth.controller.d.ts +31 -0
- package/lib/oauth/oauth.controller.js +132 -0
- package/lib/oauth/oauth.controller.js.map +1 -0
- package/lib/oauth/oauth.service.d.ts +69 -0
- package/lib/oauth/oauth.service.js +650 -0
- package/lib/oauth/oauth.service.js.map +1 -0
- package/lib/oauth/token-hash.d.ts +6 -0
- package/lib/oauth/token-hash.js +21 -0
- package/lib/oauth/token-hash.js.map +1 -0
- package/lib/plugin.d.ts +54 -0
- package/lib/plugin.js +171 -0
- package/lib/plugin.js.map +1 -0
- package/lib/rate-limit/ip-bucket-key.d.ts +1 -0
- package/lib/rate-limit/ip-bucket-key.js +35 -0
- package/lib/rate-limit/ip-bucket-key.js.map +1 -0
- package/lib/rate-limit/mcp-oauth-rate-limit.guard.d.ts +20 -0
- package/lib/rate-limit/mcp-oauth-rate-limit.guard.js +63 -0
- package/lib/rate-limit/mcp-oauth-rate-limit.guard.js.map +1 -0
- package/lib/rate-limit/mcp-rate-limiter.service.d.ts +47 -0
- package/lib/rate-limit/mcp-rate-limiter.service.js +248 -0
- package/lib/rate-limit/mcp-rate-limiter.service.js.map +1 -0
- package/lib/registry/bm25.d.ts +12 -0
- package/lib/registry/bm25.js +60 -0
- package/lib/registry/bm25.js.map +1 -0
- package/lib/registry/mcp-tool-execution.service.d.ts +45 -0
- package/lib/registry/mcp-tool-execution.service.js +72 -0
- package/lib/registry/mcp-tool-execution.service.js.map +1 -0
- package/lib/registry/mcp-tool-registry.service.d.ts +89 -0
- package/lib/registry/mcp-tool-registry.service.js +668 -0
- package/lib/registry/mcp-tool-registry.service.js.map +1 -0
- package/lib/registry/mcp-tool-schema.service.d.ts +42 -0
- package/lib/registry/mcp-tool-schema.service.js +229 -0
- package/lib/registry/mcp-tool-schema.service.js.map +1 -0
- package/lib/registry/registry-types.d.ts +32 -0
- package/lib/registry/registry-types.js +3 -0
- package/lib/registry/registry-types.js.map +1 -0
- package/lib/resolve-options.d.ts +7 -0
- package/lib/resolve-options.js +85 -0
- package/lib/resolve-options.js.map +1 -0
- package/lib/shared/endpoint-paths.d.ts +8 -0
- package/lib/shared/endpoint-paths.js +12 -0
- package/lib/shared/endpoint-paths.js.map +1 -0
- package/lib/shared/loopback.d.ts +2 -0
- package/lib/shared/loopback.js +9 -0
- package/lib/shared/loopback.js.map +1 -0
- package/lib/shop-session/mcp-shop-session.service.d.ts +47 -0
- package/lib/shop-session/mcp-shop-session.service.js +132 -0
- package/lib/shop-session/mcp-shop-session.service.js.map +1 -0
- package/lib/tasks/mcp-oauth-retention.task.d.ts +9 -0
- package/lib/tasks/mcp-oauth-retention.task.js +21 -0
- package/lib/tasks/mcp-oauth-retention.task.js.map +1 -0
- package/lib/tasks/mcp-tool-call-log-retention.task.d.ts +7 -0
- package/lib/tasks/mcp-tool-call-log-retention.task.js +22 -0
- package/lib/tasks/mcp-tool-call-log-retention.task.js.map +1 -0
- package/lib/tools/built-in/active-order.service.d.ts +26 -0
- package/lib/tools/built-in/active-order.service.js +125 -0
- package/lib/tools/built-in/active-order.service.js.map +1 -0
- package/lib/tools/built-in/admin/add-customer-to-group.tool.d.ts +23 -0
- package/lib/tools/built-in/admin/add-customer-to-group.tool.js +68 -0
- package/lib/tools/built-in/admin/add-customer-to-group.tool.js.map +1 -0
- package/lib/tools/built-in/admin/add-note-to-order.tool.d.ts +104 -0
- package/lib/tools/built-in/admin/add-note-to-order.tool.js +66 -0
- package/lib/tools/built-in/admin/add-note-to-order.tool.js.map +1 -0
- package/lib/tools/built-in/admin/adjust-stock.tool.d.ts +26 -0
- package/lib/tools/built-in/admin/adjust-stock.tool.js +88 -0
- package/lib/tools/built-in/admin/adjust-stock.tool.js.map +1 -0
- package/lib/tools/built-in/admin/cancel-order.tool.d.ts +17 -0
- package/lib/tools/built-in/admin/cancel-order.tool.js +60 -0
- package/lib/tools/built-in/admin/cancel-order.tool.js.map +1 -0
- package/lib/tools/built-in/admin/channel-access.d.ts +2 -0
- package/lib/tools/built-in/admin/channel-access.js +9 -0
- package/lib/tools/built-in/admin/channel-access.js.map +1 -0
- package/lib/tools/built-in/admin/create-customer.tool.d.ts +41 -0
- package/lib/tools/built-in/admin/create-customer.tool.js +57 -0
- package/lib/tools/built-in/admin/create-customer.tool.js.map +1 -0
- package/lib/tools/built-in/admin/create-fulfillment.tool.d.ts +118 -0
- package/lib/tools/built-in/admin/create-fulfillment.tool.js +156 -0
- package/lib/tools/built-in/admin/create-fulfillment.tool.js.map +1 -0
- package/lib/tools/built-in/admin/create-product.tool.d.ts +52 -0
- package/lib/tools/built-in/admin/create-product.tool.js +61 -0
- package/lib/tools/built-in/admin/create-product.tool.js.map +1 -0
- package/lib/tools/built-in/admin/create-variant.tool.d.ts +48 -0
- package/lib/tools/built-in/admin/create-variant.tool.js +79 -0
- package/lib/tools/built-in/admin/create-variant.tool.js.map +1 -0
- package/lib/tools/built-in/admin/entity-field-schemas.d.ts +36 -0
- package/lib/tools/built-in/admin/entity-field-schemas.js +63 -0
- package/lib/tools/built-in/admin/entity-field-schemas.js.map +1 -0
- package/lib/tools/built-in/admin/get-customer.tool.d.ts +28 -0
- package/lib/tools/built-in/admin/get-customer.tool.js +55 -0
- package/lib/tools/built-in/admin/get-customer.tool.js.map +1 -0
- package/lib/tools/built-in/admin/get-order.tool.d.ts +100 -0
- package/lib/tools/built-in/admin/get-order.tool.js +68 -0
- package/lib/tools/built-in/admin/get-order.tool.js.map +1 -0
- package/lib/tools/built-in/admin/get-product.tool.d.ts +69 -0
- package/lib/tools/built-in/admin/get-product.tool.js +77 -0
- package/lib/tools/built-in/admin/get-product.tool.js.map +1 -0
- package/lib/tools/built-in/admin/get-stock-levels.tool.d.ts +23 -0
- package/lib/tools/built-in/admin/get-stock-levels.tool.js +61 -0
- package/lib/tools/built-in/admin/get-stock-levels.tool.js.map +1 -0
- package/lib/tools/built-in/admin/index.d.ts +25 -0
- package/lib/tools/built-in/admin/index.js +54 -0
- package/lib/tools/built-in/admin/index.js.map +1 -0
- package/lib/tools/built-in/admin/list-channels.tool.d.ts +24 -0
- package/lib/tools/built-in/admin/list-channels.tool.js +56 -0
- package/lib/tools/built-in/admin/list-channels.tool.js.map +1 -0
- package/lib/tools/built-in/admin/list-customer-groups.tool.d.ts +23 -0
- package/lib/tools/built-in/admin/list-customer-groups.tool.js +52 -0
- package/lib/tools/built-in/admin/list-customer-groups.tool.js.map +1 -0
- package/lib/tools/built-in/admin/list-customers.tool.d.ts +62 -0
- package/lib/tools/built-in/admin/list-customers.tool.js +66 -0
- package/lib/tools/built-in/admin/list-customers.tool.js.map +1 -0
- package/lib/tools/built-in/admin/list-orders.tool.d.ts +142 -0
- package/lib/tools/built-in/admin/list-orders.tool.js +87 -0
- package/lib/tools/built-in/admin/list-orders.tool.js.map +1 -0
- package/lib/tools/built-in/admin/list-products.tool.d.ts +63 -0
- package/lib/tools/built-in/admin/list-products.tool.js +71 -0
- package/lib/tools/built-in/admin/list-products.tool.js.map +1 -0
- package/lib/tools/built-in/admin/refund-order.tool.d.ts +38 -0
- package/lib/tools/built-in/admin/refund-order.tool.js +115 -0
- package/lib/tools/built-in/admin/refund-order.tool.js.map +1 -0
- package/lib/tools/built-in/admin/set-active-channel.tool.d.ts +22 -0
- package/lib/tools/built-in/admin/set-active-channel.tool.js +84 -0
- package/lib/tools/built-in/admin/set-active-channel.tool.js.map +1 -0
- package/lib/tools/built-in/admin/translation-schemas.d.ts +12 -0
- package/lib/tools/built-in/admin/translation-schemas.js +17 -0
- package/lib/tools/built-in/admin/translation-schemas.js.map +1 -0
- package/lib/tools/built-in/admin/update-customer.tool.d.ts +42 -0
- package/lib/tools/built-in/admin/update-customer.tool.js +59 -0
- package/lib/tools/built-in/admin/update-customer.tool.js.map +1 -0
- package/lib/tools/built-in/admin/update-order-state.tool.d.ts +16 -0
- package/lib/tools/built-in/admin/update-order-state.tool.js +58 -0
- package/lib/tools/built-in/admin/update-order-state.tool.js.map +1 -0
- package/lib/tools/built-in/admin/update-product.tool.d.ts +53 -0
- package/lib/tools/built-in/admin/update-product.tool.js +68 -0
- package/lib/tools/built-in/admin/update-product.tool.js.map +1 -0
- package/lib/tools/built-in/admin/update-variant.tool.d.ts +46 -0
- package/lib/tools/built-in/admin/update-variant.tool.js +77 -0
- package/lib/tools/built-in/admin/update-variant.tool.js.map +1 -0
- package/lib/tools/built-in/admin/upload-asset.tool.d.ts +32 -0
- package/lib/tools/built-in/admin/upload-asset.tool.js +56 -0
- package/lib/tools/built-in/admin/upload-asset.tool.js.map +1 -0
- package/lib/tools/built-in/catalog-query.service.d.ts +21 -0
- package/lib/tools/built-in/catalog-query.service.js +128 -0
- package/lib/tools/built-in/catalog-query.service.js.map +1 -0
- package/lib/tools/built-in/custom-field-input.service.d.ts +10 -0
- package/lib/tools/built-in/custom-field-input.service.js +64 -0
- package/lib/tools/built-in/custom-field-input.service.js.map +1 -0
- package/lib/tools/built-in/email-schema.d.ts +2 -0
- package/lib/tools/built-in/email-schema.js +12 -0
- package/lib/tools/built-in/email-schema.js.map +1 -0
- package/lib/tools/built-in/id-schema.d.ts +3 -0
- package/lib/tools/built-in/id-schema.js +11 -0
- package/lib/tools/built-in/id-schema.js.map +1 -0
- package/lib/tools/built-in/int32-schema.d.ts +4 -0
- package/lib/tools/built-in/int32-schema.js +8 -0
- package/lib/tools/built-in/int32-schema.js.map +1 -0
- package/lib/tools/built-in/list-helpers.d.ts +48 -0
- package/lib/tools/built-in/list-helpers.js +76 -0
- package/lib/tools/built-in/list-helpers.js.map +1 -0
- package/lib/tools/built-in/order-list-helpers.d.ts +20 -0
- package/lib/tools/built-in/order-list-helpers.js +48 -0
- package/lib/tools/built-in/order-list-helpers.js.map +1 -0
- package/lib/tools/built-in/providers.d.ts +2 -0
- package/lib/tools/built-in/providers.js +7 -0
- package/lib/tools/built-in/providers.js.map +1 -0
- package/lib/tools/built-in/remote-asset.d.ts +4 -0
- package/lib/tools/built-in/remote-asset.js +54 -0
- package/lib/tools/built-in/remote-asset.js.map +1 -0
- package/lib/tools/built-in/serializer.service.d.ts +327 -0
- package/lib/tools/built-in/serializer.service.js +413 -0
- package/lib/tools/built-in/serializer.service.js.map +1 -0
- package/lib/tools/built-in/shop/add-to-cart.tool.d.ts +21 -0
- package/lib/tools/built-in/shop/add-to-cart.tool.js +100 -0
- package/lib/tools/built-in/shop/add-to-cart.tool.js.map +1 -0
- package/lib/tools/built-in/shop/address-schema.d.ts +15 -0
- package/lib/tools/built-in/shop/address-schema.js +20 -0
- package/lib/tools/built-in/shop/address-schema.js.map +1 -0
- package/lib/tools/built-in/shop/apply-coupon-code.tool.d.ts +17 -0
- package/lib/tools/built-in/shop/apply-coupon-code.tool.js +62 -0
- package/lib/tools/built-in/shop/apply-coupon-code.tool.js.map +1 -0
- package/lib/tools/built-in/shop/collection-lookup.d.ts +15 -0
- package/lib/tools/built-in/shop/collection-lookup.js +35 -0
- package/lib/tools/built-in/shop/collection-lookup.js.map +1 -0
- package/lib/tools/built-in/shop/get-cart.tool.d.ts +94 -0
- package/lib/tools/built-in/shop/get-cart.tool.js +55 -0
- package/lib/tools/built-in/shop/get-cart.tool.js.map +1 -0
- package/lib/tools/built-in/shop/get-collection.tool.d.ts +42 -0
- package/lib/tools/built-in/shop/get-collection.tool.js +64 -0
- package/lib/tools/built-in/shop/get-collection.tool.js.map +1 -0
- package/lib/tools/built-in/shop/get-eligible-payment-methods.tool.d.ts +26 -0
- package/lib/tools/built-in/shop/get-eligible-payment-methods.tool.js +58 -0
- package/lib/tools/built-in/shop/get-eligible-payment-methods.tool.js.map +1 -0
- package/lib/tools/built-in/shop/get-eligible-shipping-methods.tool.d.ts +30 -0
- package/lib/tools/built-in/shop/get-eligible-shipping-methods.tool.js +59 -0
- package/lib/tools/built-in/shop/get-eligible-shipping-methods.tool.js.map +1 -0
- package/lib/tools/built-in/shop/get-my-account.tool.d.ts +22 -0
- package/lib/tools/built-in/shop/get-my-account.tool.js +57 -0
- package/lib/tools/built-in/shop/get-my-account.tool.js.map +1 -0
- package/lib/tools/built-in/shop/get-order.tool.d.ts +100 -0
- package/lib/tools/built-in/shop/get-order.tool.js +67 -0
- package/lib/tools/built-in/shop/get-order.tool.js.map +1 -0
- package/lib/tools/built-in/shop/get-product.tool.d.ts +57 -0
- package/lib/tools/built-in/shop/get-product.tool.js +81 -0
- package/lib/tools/built-in/shop/get-product.tool.js.map +1 -0
- package/lib/tools/built-in/shop/index.d.ts +19 -0
- package/lib/tools/built-in/shop/index.js +42 -0
- package/lib/tools/built-in/shop/index.js.map +1 -0
- package/lib/tools/built-in/shop/list-collections.tool.d.ts +42 -0
- package/lib/tools/built-in/shop/list-collections.tool.js +75 -0
- package/lib/tools/built-in/shop/list-collections.tool.js.map +1 -0
- package/lib/tools/built-in/shop/list-my-orders.tool.d.ts +100 -0
- package/lib/tools/built-in/shop/list-my-orders.tool.js +63 -0
- package/lib/tools/built-in/shop/list-my-orders.tool.js.map +1 -0
- package/lib/tools/built-in/shop/place-order.tool.d.ts +188 -0
- package/lib/tools/built-in/shop/place-order.tool.js +152 -0
- package/lib/tools/built-in/shop/place-order.tool.js.map +1 -0
- package/lib/tools/built-in/shop/product-search-query.d.ts +4 -0
- package/lib/tools/built-in/shop/product-search-query.js +34 -0
- package/lib/tools/built-in/shop/product-search-query.js.map +1 -0
- package/lib/tools/built-in/shop/remove-coupon-code.tool.d.ts +17 -0
- package/lib/tools/built-in/shop/remove-coupon-code.tool.js +63 -0
- package/lib/tools/built-in/shop/remove-coupon-code.tool.js.map +1 -0
- package/lib/tools/built-in/shop/remove-from-cart.tool.d.ts +17 -0
- package/lib/tools/built-in/shop/remove-from-cart.tool.js +58 -0
- package/lib/tools/built-in/shop/remove-from-cart.tool.js.map +1 -0
- package/lib/tools/built-in/shop/search-products.tool.d.ts +48 -0
- package/lib/tools/built-in/shop/search-products.tool.js +95 -0
- package/lib/tools/built-in/shop/search-products.tool.js.map +1 -0
- package/lib/tools/built-in/shop/set-checkout-details.tool.d.ts +56 -0
- package/lib/tools/built-in/shop/set-checkout-details.tool.js +187 -0
- package/lib/tools/built-in/shop/set-checkout-details.tool.js.map +1 -0
- package/lib/tools/built-in/shop/set-shipping-method.tool.d.ts +17 -0
- package/lib/tools/built-in/shop/set-shipping-method.tool.js +58 -0
- package/lib/tools/built-in/shop/set-shipping-method.tool.js.map +1 -0
- package/lib/tools/built-in/shop/update-cart-line.tool.d.ts +18 -0
- package/lib/tools/built-in/shop/update-cart-line.tool.js +60 -0
- package/lib/tools/built-in/shop/update-cart-line.tool.js.map +1 -0
- package/lib/tools/built-in/string-schemas.d.ts +4 -0
- package/lib/tools/built-in/string-schemas.js +13 -0
- package/lib/tools/built-in/string-schemas.js.map +1 -0
- package/lib/transport/mcp-server.factory.d.ts +13 -0
- package/lib/transport/mcp-server.factory.js +32 -0
- package/lib/transport/mcp-server.factory.js.map +1 -0
- package/lib/transport/mcp-transport.controller.d.ts +77 -0
- package/lib/transport/mcp-transport.controller.js +442 -0
- package/lib/transport/mcp-transport.controller.js.map +1 -0
- package/lib/types.d.ts +432 -0
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -0
- package/package.json +42 -0
- package/src/dashboard/components/activity-block.tsx +72 -0
- package/src/dashboard/components/actor-cell.tsx +31 -0
- package/src/dashboard/components/connection-dialog.tsx +106 -0
- package/src/dashboard/components/empty-cell.tsx +7 -0
- package/src/dashboard/components/grants-block.tsx +218 -0
- package/src/dashboard/components/stats-block.tsx +275 -0
- package/src/dashboard/components/tools-block.tsx +274 -0
- package/src/dashboard/components/tooltip-button.tsx +28 -0
- package/src/dashboard/components/use-mcp-table-state.ts +47 -0
- package/src/dashboard/i18n/ar.po +311 -0
- package/src/dashboard/i18n/bg.po +311 -0
- package/src/dashboard/i18n/cs.po +311 -0
- package/src/dashboard/i18n/de.po +311 -0
- package/src/dashboard/i18n/en.po +311 -0
- package/src/dashboard/i18n/es.po +311 -0
- package/src/dashboard/i18n/fa.po +311 -0
- package/src/dashboard/i18n/fr.po +311 -0
- package/src/dashboard/i18n/he.po +311 -0
- package/src/dashboard/i18n/hr.po +311 -0
- package/src/dashboard/i18n/hu.po +311 -0
- package/src/dashboard/i18n/it.po +311 -0
- package/src/dashboard/i18n/ja.po +311 -0
- package/src/dashboard/i18n/ko.po +311 -0
- package/src/dashboard/i18n/nb.po +311 -0
- package/src/dashboard/i18n/ne.po +311 -0
- package/src/dashboard/i18n/nl.po +311 -0
- package/src/dashboard/i18n/pl.po +311 -0
- package/src/dashboard/i18n/pt_BR.po +311 -0
- package/src/dashboard/i18n/pt_PT.po +311 -0
- package/src/dashboard/i18n/ro.po +311 -0
- package/src/dashboard/i18n/ru.po +311 -0
- package/src/dashboard/i18n/sv.po +311 -0
- package/src/dashboard/i18n/tr.po +311 -0
- package/src/dashboard/i18n/uk.po +311 -0
- package/src/dashboard/i18n/uz.po +311 -0
- package/src/dashboard/i18n/zh_Hans.po +311 -0
- package/src/dashboard/i18n/zh_Hant.po +311 -0
- package/src/dashboard/index.tsx +30 -0
- package/src/dashboard/mcp-activity-route.tsx +38 -0
- package/src/dashboard/mcp-authorize-route.tsx +369 -0
- package/src/dashboard/mcp-grants-route.tsx +38 -0
- package/src/dashboard/mcp-overview-route.tsx +46 -0
- package/src/dashboard/mcp-server-redirect-route.tsx +15 -0
- package/src/dashboard/mcp-tools-route.tsx +38 -0
- package/src/dashboard/mcp.graphql.ts +127 -0
- package/src/dashboard/published-files.spec.ts +54 -0
- package/src/dashboard/tsconfig.json +9 -0
- package/src/shared/endpoint-paths.ts +8 -0
- package/src/shared/loopback.ts +6 -0
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { Trans, useLingui } from '@lingui/react/macro';
|
|
2
|
+
import {
|
|
3
|
+
Alert,
|
|
4
|
+
AlertDescription,
|
|
5
|
+
api,
|
|
6
|
+
Badge,
|
|
7
|
+
type ColumnDef,
|
|
8
|
+
DataTable,
|
|
9
|
+
DataTableColumnHeader,
|
|
10
|
+
getFilteredRowModel,
|
|
11
|
+
getSortedRowModel,
|
|
12
|
+
type ResultOf,
|
|
13
|
+
Switch,
|
|
14
|
+
toast,
|
|
15
|
+
useMutation,
|
|
16
|
+
usePermissions,
|
|
17
|
+
useQuery,
|
|
18
|
+
useQueryClient,
|
|
19
|
+
} from '@vendure/dashboard';
|
|
20
|
+
import { InfoIcon, TriangleAlert } from 'lucide-react';
|
|
21
|
+
import { useMemo, useState } from 'react';
|
|
22
|
+
|
|
23
|
+
import { mcpServerConfigQuery, mcpToolsQuery, setMcpToolEnabledMutation } from '../mcp.graphql';
|
|
24
|
+
|
|
25
|
+
import { TooltipButton } from './tooltip-button';
|
|
26
|
+
import { useMcpColumnVisibility } from './use-mcp-table-state';
|
|
27
|
+
|
|
28
|
+
type McpTool = ResultOf<typeof mcpToolsQuery>['mcpTools'][number];
|
|
29
|
+
|
|
30
|
+
const toolsQueryKey = ['mcp-tools'];
|
|
31
|
+
|
|
32
|
+
function safetyPresentation(behavior: McpTool['behavior']) {
|
|
33
|
+
if (behavior === 'destructive') {
|
|
34
|
+
return {
|
|
35
|
+
variant: 'destructive' as const,
|
|
36
|
+
label: <Trans>Destructive</Trans>,
|
|
37
|
+
explanation: <Trans>This tool can delete data or make changes that cannot be undone.</Trans>,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
if (behavior === 'readonly') {
|
|
41
|
+
return {
|
|
42
|
+
variant: 'secondary' as const,
|
|
43
|
+
label: <Trans>Read-only</Trans>,
|
|
44
|
+
explanation: <Trans>This tool only reads data. It never changes anything.</Trans>,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
variant: 'warning' as const,
|
|
49
|
+
label: <Trans>Mutating</Trans>,
|
|
50
|
+
explanation: <Trans>This tool creates or updates data, but does not delete anything.</Trans>,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function SafetyBadge({ behavior }: { behavior: McpTool['behavior'] }) {
|
|
55
|
+
const { variant, label, explanation } = safetyPresentation(behavior);
|
|
56
|
+
return (
|
|
57
|
+
<TooltipButton tooltip={explanation} className="inline-flex h-auto p-0">
|
|
58
|
+
<Badge variant={variant}>{label}</Badge>
|
|
59
|
+
</TooltipButton>
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function ToolsBlock() {
|
|
64
|
+
const { t } = useLingui();
|
|
65
|
+
const queryClient = useQueryClient();
|
|
66
|
+
const [search, setSearch] = useState('');
|
|
67
|
+
const [page, setPage] = useState(1);
|
|
68
|
+
const [pageSize, setPageSize] = useState(10);
|
|
69
|
+
const { defaultVisibility, onColumnVisibilityChange } = useMcpColumnVisibility({});
|
|
70
|
+
const { hasPermissions } = usePermissions();
|
|
71
|
+
const canUpdate = hasPermissions(['UpdateMcpServer']);
|
|
72
|
+
|
|
73
|
+
const { data, isLoading, error } = useQuery({
|
|
74
|
+
queryKey: toolsQueryKey,
|
|
75
|
+
queryFn: () => api.query(mcpToolsQuery),
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
const { data: configData } = useQuery({
|
|
79
|
+
queryKey: ['mcp-server-config'],
|
|
80
|
+
queryFn: () => api.query(mcpServerConfigQuery),
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
const toggle = useMutation({
|
|
84
|
+
mutationFn: (vars: { toolName: string; toolset: McpTool['toolset']; enabled: boolean }) =>
|
|
85
|
+
api.mutate(setMcpToolEnabledMutation, vars),
|
|
86
|
+
// Optimistic update so the switch doesn't wait for the refetch; rolled back on server rejection.
|
|
87
|
+
onMutate: async vars => {
|
|
88
|
+
await queryClient.cancelQueries({ queryKey: toolsQueryKey });
|
|
89
|
+
const previous = queryClient.getQueryData<ResultOf<typeof mcpToolsQuery>>(toolsQueryKey);
|
|
90
|
+
queryClient.setQueryData<ResultOf<typeof mcpToolsQuery>>(toolsQueryKey, old =>
|
|
91
|
+
old
|
|
92
|
+
? {
|
|
93
|
+
...old,
|
|
94
|
+
mcpTools: old.mcpTools.map(tool =>
|
|
95
|
+
tool.name === vars.toolName && tool.toolset === vars.toolset
|
|
96
|
+
? { ...tool, enabled: vars.enabled }
|
|
97
|
+
: tool,
|
|
98
|
+
),
|
|
99
|
+
}
|
|
100
|
+
: old,
|
|
101
|
+
);
|
|
102
|
+
return { previous };
|
|
103
|
+
},
|
|
104
|
+
onSuccess: () => {
|
|
105
|
+
toast.success(t`Tool updated`);
|
|
106
|
+
},
|
|
107
|
+
onError: (_error, _vars, context) => {
|
|
108
|
+
if (context?.previous) {
|
|
109
|
+
queryClient.setQueryData(toolsQueryKey, context.previous);
|
|
110
|
+
}
|
|
111
|
+
toast.error(t`Could not update tool`);
|
|
112
|
+
},
|
|
113
|
+
// Refetch either way so the cache ends up matching the server.
|
|
114
|
+
onSettled: () => {
|
|
115
|
+
void queryClient.invalidateQueries({ queryKey: toolsQueryKey });
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
const tools = data?.mcpTools ?? [];
|
|
120
|
+
const isDiscoveryExposure = configData?.mcpServerConfig.toolExposure === 'discovery';
|
|
121
|
+
|
|
122
|
+
const filtered = useMemo(() => {
|
|
123
|
+
const term = search.trim().toLowerCase();
|
|
124
|
+
if (!term) {
|
|
125
|
+
return tools;
|
|
126
|
+
}
|
|
127
|
+
return tools.filter(
|
|
128
|
+
tool => tool.name.toLowerCase().includes(term) || tool.description.toLowerCase().includes(term),
|
|
129
|
+
);
|
|
130
|
+
}, [tools, search]);
|
|
131
|
+
|
|
132
|
+
if (error) {
|
|
133
|
+
return (
|
|
134
|
+
<Alert variant="destructive">
|
|
135
|
+
<TriangleAlert className="h-4 w-4" />
|
|
136
|
+
<AlertDescription>
|
|
137
|
+
<Trans>Error loading tools: {error.message}</Trans>
|
|
138
|
+
</AlertDescription>
|
|
139
|
+
</Alert>
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const columns: Array<ColumnDef<McpTool>> = [
|
|
144
|
+
{
|
|
145
|
+
accessorKey: 'name',
|
|
146
|
+
header: headerContext => (
|
|
147
|
+
<DataTableColumnHeader
|
|
148
|
+
headerContext={headerContext}
|
|
149
|
+
customConfig={{ header: () => <Trans>Name</Trans> }}
|
|
150
|
+
/>
|
|
151
|
+
),
|
|
152
|
+
cell: ({ row }) => <span className="font-medium font-mono text-sm">{row.original.name}</span>,
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
accessorKey: 'toolset',
|
|
156
|
+
header: headerContext => (
|
|
157
|
+
<DataTableColumnHeader
|
|
158
|
+
headerContext={headerContext}
|
|
159
|
+
customConfig={{ header: () => <Trans>Toolset</Trans> }}
|
|
160
|
+
/>
|
|
161
|
+
),
|
|
162
|
+
|
|
163
|
+
filterFn: (row, columnId, filterValue: string[]) => filterValue.includes(row.getValue(columnId)),
|
|
164
|
+
cell: ({ row }) => <Badge variant="outline">{row.original.toolset}</Badge>,
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
accessorKey: 'pluginSource',
|
|
168
|
+
header: headerContext => (
|
|
169
|
+
<DataTableColumnHeader
|
|
170
|
+
headerContext={headerContext}
|
|
171
|
+
customConfig={{ header: () => <Trans>Plugin</Trans> }}
|
|
172
|
+
/>
|
|
173
|
+
),
|
|
174
|
+
// Lets operators tell built-in tools apart from ones their own plugins contribute.
|
|
175
|
+
cell: ({ row }) => (
|
|
176
|
+
<span className="text-sm text-muted-foreground">{row.original.pluginSource}</span>
|
|
177
|
+
),
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
accessorKey: 'behavior',
|
|
181
|
+
header: headerContext => (
|
|
182
|
+
<DataTableColumnHeader
|
|
183
|
+
headerContext={headerContext}
|
|
184
|
+
customConfig={{ header: () => <Trans>Safety</Trans> }}
|
|
185
|
+
/>
|
|
186
|
+
),
|
|
187
|
+
cell: ({ row }) => <SafetyBadge behavior={row.original.behavior} />,
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
accessorKey: 'description',
|
|
191
|
+
header: () => <Trans>Description</Trans>,
|
|
192
|
+
// Clamped to two lines in the row; the tooltip carries the full text.
|
|
193
|
+
cell: ({ row }) => (
|
|
194
|
+
<TooltipButton
|
|
195
|
+
tooltip={row.original.description}
|
|
196
|
+
className="block h-auto p-0 text-left text-sm font-normal text-muted-foreground line-clamp-2 max-w-md whitespace-normal"
|
|
197
|
+
>
|
|
198
|
+
{row.original.description}
|
|
199
|
+
</TooltipButton>
|
|
200
|
+
),
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
id: 'enabled',
|
|
204
|
+
header: () => <Trans>Enabled</Trans>,
|
|
205
|
+
cell: ({ row }) => (
|
|
206
|
+
<Switch
|
|
207
|
+
checked={row.original.enabled}
|
|
208
|
+
disabled={!canUpdate}
|
|
209
|
+
onCheckedChange={checked =>
|
|
210
|
+
toggle.mutate({
|
|
211
|
+
toolName: row.original.name,
|
|
212
|
+
toolset: row.original.toolset,
|
|
213
|
+
enabled: checked,
|
|
214
|
+
})
|
|
215
|
+
}
|
|
216
|
+
/>
|
|
217
|
+
),
|
|
218
|
+
},
|
|
219
|
+
];
|
|
220
|
+
|
|
221
|
+
return (
|
|
222
|
+
<div className="space-y-4">
|
|
223
|
+
{isDiscoveryExposure ? (
|
|
224
|
+
<Alert>
|
|
225
|
+
<InfoIcon className="h-4 w-4" />
|
|
226
|
+
<AlertDescription>
|
|
227
|
+
<Trans>
|
|
228
|
+
Tool exposure is set to discovery. Clients see only search_tools and execute_tool.
|
|
229
|
+
The toggles below still decide which tools execute_tool may run.
|
|
230
|
+
</Trans>
|
|
231
|
+
</AlertDescription>
|
|
232
|
+
</Alert>
|
|
233
|
+
) : null}
|
|
234
|
+
<DataTable
|
|
235
|
+
columns={columns}
|
|
236
|
+
data={filtered}
|
|
237
|
+
totalItems={filtered.length}
|
|
238
|
+
isLoading={isLoading}
|
|
239
|
+
defaultColumnVisibility={defaultVisibility}
|
|
240
|
+
onColumnVisibilityChange={onColumnVisibilityChange}
|
|
241
|
+
onSearchTermChange={term => setSearch(term)}
|
|
242
|
+
facetedFilters={{
|
|
243
|
+
toolset: {
|
|
244
|
+
title: t`Toolset`,
|
|
245
|
+
options: [
|
|
246
|
+
{ label: 'admin', value: 'admin' },
|
|
247
|
+
{ label: 'shop', value: 'shop' },
|
|
248
|
+
],
|
|
249
|
+
},
|
|
250
|
+
}}
|
|
251
|
+
onRefresh={() => {
|
|
252
|
+
void queryClient.invalidateQueries({ queryKey: toolsQueryKey });
|
|
253
|
+
}}
|
|
254
|
+
setTableOptions={options => ({
|
|
255
|
+
...options,
|
|
256
|
+
manualPagination: false,
|
|
257
|
+
manualSorting: false,
|
|
258
|
+
manualFiltering: false,
|
|
259
|
+
rowCount: undefined,
|
|
260
|
+
getSortedRowModel: getSortedRowModel(),
|
|
261
|
+
getFilteredRowModel: getFilteredRowModel(),
|
|
262
|
+
// Stops a data refresh (e.g. after toggling a tool) from jumping back to page 1.
|
|
263
|
+
autoResetPageIndex: false,
|
|
264
|
+
})}
|
|
265
|
+
page={page}
|
|
266
|
+
itemsPerPage={pageSize}
|
|
267
|
+
onPageChange={(_table, newPage, newPageSize) => {
|
|
268
|
+
setPage(newPage);
|
|
269
|
+
setPageSize(newPageSize);
|
|
270
|
+
}}
|
|
271
|
+
/>
|
|
272
|
+
</div>
|
|
273
|
+
);
|
|
274
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Button, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@vendure/dashboard';
|
|
2
|
+
|
|
3
|
+
export function TooltipButton({
|
|
4
|
+
tooltip,
|
|
5
|
+
tooltipClassName,
|
|
6
|
+
className,
|
|
7
|
+
label,
|
|
8
|
+
children,
|
|
9
|
+
}: {
|
|
10
|
+
tooltip: React.ReactNode;
|
|
11
|
+
tooltipClassName?: string;
|
|
12
|
+
className?: string;
|
|
13
|
+
label?: string;
|
|
14
|
+
children: React.ReactNode;
|
|
15
|
+
}) {
|
|
16
|
+
return (
|
|
17
|
+
<TooltipProvider>
|
|
18
|
+
<Tooltip>
|
|
19
|
+
<TooltipTrigger
|
|
20
|
+
render={<Button type="button" variant="ghost" aria-label={label} className={className} />}
|
|
21
|
+
>
|
|
22
|
+
{children}
|
|
23
|
+
</TooltipTrigger>
|
|
24
|
+
<TooltipContent className={tooltipClassName}>{tooltip}</TooltipContent>
|
|
25
|
+
</Tooltip>
|
|
26
|
+
</TooltipProvider>
|
|
27
|
+
);
|
|
28
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type ColumnFiltersState, type SortingState, usePage, useUserSettings } from '@vendure/dashboard';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
|
|
4
|
+
type ColumnVisibility = Record<string, boolean>;
|
|
5
|
+
|
|
6
|
+
export function useMcpColumnVisibility<V extends ColumnVisibility>(defaultVisibility: V) {
|
|
7
|
+
const { pageId } = usePage();
|
|
8
|
+
const { settings, setTableSettings } = useUserSettings();
|
|
9
|
+
const savedVisibility = pageId ? settings.tableSettings?.[pageId]?.columnVisibility : undefined;
|
|
10
|
+
|
|
11
|
+
return {
|
|
12
|
+
onColumnVisibilityChange: (_table: unknown, newVisibility: ColumnVisibility) => {
|
|
13
|
+
if (pageId) {
|
|
14
|
+
setTableSettings(pageId, 'columnVisibility', newVisibility);
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
defaultVisibility: { ...defaultVisibility, ...savedVisibility } as V,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function useMcpTableState<V extends ColumnVisibility>({
|
|
22
|
+
defaultSorting,
|
|
23
|
+
defaultVisibility,
|
|
24
|
+
}: {
|
|
25
|
+
defaultSorting: SortingState;
|
|
26
|
+
defaultVisibility: V;
|
|
27
|
+
}) {
|
|
28
|
+
const [page, setPage] = useState(1);
|
|
29
|
+
const [itemsPerPage, setItemsPerPage] = useState(10);
|
|
30
|
+
const [sorting, setSorting] = useState<SortingState>(defaultSorting);
|
|
31
|
+
const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);
|
|
32
|
+
const columnVisibility = useMcpColumnVisibility(defaultVisibility);
|
|
33
|
+
|
|
34
|
+
return {
|
|
35
|
+
page,
|
|
36
|
+
itemsPerPage,
|
|
37
|
+
sorting,
|
|
38
|
+
columnFilters,
|
|
39
|
+
onPageChange: (_table: unknown, newPage: number, newItemsPerPage: number) => {
|
|
40
|
+
setPage(newPage);
|
|
41
|
+
setItemsPerPage(newItemsPerPage);
|
|
42
|
+
},
|
|
43
|
+
onSortChange: (_table: unknown, newSorting: SortingState) => setSorting(newSorting),
|
|
44
|
+
onFilterChange: (_table: unknown, newFilters: ColumnFiltersState) => setColumnFilters(newFilters),
|
|
45
|
+
...columnVisibility,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
msgid ""
|
|
2
|
+
msgstr ""
|
|
3
|
+
"POT-Creation-Date: 2025-02-20 14:18+0100\n"
|
|
4
|
+
"MIME-Version: 1.0\n"
|
|
5
|
+
"Content-Type: text/plain; charset=utf-8\n"
|
|
6
|
+
"Content-Transfer-Encoding: 8bit\n"
|
|
7
|
+
"X-Generator: @lingui/cli\n"
|
|
8
|
+
"Language: ar\n"
|
|
9
|
+
"Project-Id-Version: \n"
|
|
10
|
+
"Report-Msgid-Bugs-To: \n"
|
|
11
|
+
"PO-Revision-Date: \n"
|
|
12
|
+
"Last-Translator: \n"
|
|
13
|
+
"Language-Team: \n"
|
|
14
|
+
"Plural-Forms: \n"
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
msgid "Actions"
|
|
18
|
+
msgstr "الإجراءات"
|
|
19
|
+
|
|
20
|
+
msgid "Actor"
|
|
21
|
+
msgstr "الفاعل"
|
|
22
|
+
|
|
23
|
+
msgid "Actor type"
|
|
24
|
+
msgstr "نوع الفاعل"
|
|
25
|
+
|
|
26
|
+
msgid "Approve"
|
|
27
|
+
msgstr "موافقة"
|
|
28
|
+
|
|
29
|
+
msgid "Authorization request could not be loaded"
|
|
30
|
+
msgstr "تعذّر تحميل طلب التفويض"
|
|
31
|
+
|
|
32
|
+
msgid "Calls per hour"
|
|
33
|
+
msgstr "الاستدعاءات في الساعة"
|
|
34
|
+
|
|
35
|
+
msgid "Client"
|
|
36
|
+
msgstr "العميل"
|
|
37
|
+
|
|
38
|
+
msgid "Connect an MCP client to your Vendure server using the endpoints below."
|
|
39
|
+
msgstr "قم بتوصيل عميل MCP بخادم Vendure الخاص بك باستخدام نقاط النهاية أدناه."
|
|
40
|
+
|
|
41
|
+
msgid "Could not revoke grant"
|
|
42
|
+
msgstr "تعذّر إلغاء المنح"
|
|
43
|
+
|
|
44
|
+
msgid "Could not update tool"
|
|
45
|
+
msgstr "تعذّر تحديث الأداة"
|
|
46
|
+
|
|
47
|
+
msgid "Deny"
|
|
48
|
+
msgstr "رفض"
|
|
49
|
+
|
|
50
|
+
msgid "Description"
|
|
51
|
+
msgstr "الوصف"
|
|
52
|
+
|
|
53
|
+
msgid "Destructive"
|
|
54
|
+
msgstr "تدميري"
|
|
55
|
+
|
|
56
|
+
msgid "Duration"
|
|
57
|
+
msgstr "المدة"
|
|
58
|
+
|
|
59
|
+
msgid "Enabled"
|
|
60
|
+
msgstr "ممكّن"
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
msgid "Expires"
|
|
64
|
+
msgstr "تنتهي في"
|
|
65
|
+
|
|
66
|
+
msgid "Grant revoked"
|
|
67
|
+
msgstr "تم إلغاء المنح"
|
|
68
|
+
|
|
69
|
+
msgid "Health & usage"
|
|
70
|
+
msgstr "الصحة والاستخدام"
|
|
71
|
+
|
|
72
|
+
msgid "Last activity"
|
|
73
|
+
msgstr "آخر نشاط"
|
|
74
|
+
|
|
75
|
+
msgid "Last hour"
|
|
76
|
+
msgstr "آخر ساعة"
|
|
77
|
+
|
|
78
|
+
msgid "Last 24 hours"
|
|
79
|
+
msgstr "آخر 24 ساعة"
|
|
80
|
+
|
|
81
|
+
msgid "Last 7 days"
|
|
82
|
+
msgstr "آخر 7 أيام"
|
|
83
|
+
|
|
84
|
+
msgid "Last 30 days"
|
|
85
|
+
msgstr "آخر 30 يومًا"
|
|
86
|
+
|
|
87
|
+
msgid "Loading authorization request…"
|
|
88
|
+
msgstr "جارٍ تحميل طلب التفويض…"
|
|
89
|
+
|
|
90
|
+
msgid "MCP Server"
|
|
91
|
+
msgstr "MCP Server"
|
|
92
|
+
|
|
93
|
+
msgid "Mutating"
|
|
94
|
+
msgstr "معدِّل"
|
|
95
|
+
|
|
96
|
+
msgid "Name"
|
|
97
|
+
msgstr "الاسم"
|
|
98
|
+
|
|
99
|
+
msgid "No calls recorded in this period."
|
|
100
|
+
msgstr "لا توجد استدعاءات مسجّلة في هذه الفترة."
|
|
101
|
+
|
|
102
|
+
msgid "Read-only"
|
|
103
|
+
msgstr "للقراءة فقط"
|
|
104
|
+
|
|
105
|
+
msgid "Revoke"
|
|
106
|
+
msgstr "إلغاء"
|
|
107
|
+
|
|
108
|
+
msgid "Revoke grant"
|
|
109
|
+
msgstr "إلغاء المنح"
|
|
110
|
+
|
|
111
|
+
msgid "Safety"
|
|
112
|
+
msgstr "الأمان"
|
|
113
|
+
|
|
114
|
+
msgid "Status"
|
|
115
|
+
msgstr "الحالة"
|
|
116
|
+
|
|
117
|
+
msgid "Success rate"
|
|
118
|
+
msgstr "معدل النجاح"
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
msgid "This destination is on the local machine. Any application running on that machine could receive the authorization code."
|
|
122
|
+
msgstr "هذه الوجهة موجودة على الجهاز المحلي. أي تطبيق يعمل على ذلك الجهاز قد يستلم رمز التفويض."
|
|
123
|
+
|
|
124
|
+
msgid "This immediately revokes the client's access. The client will need to authorize again to reconnect."
|
|
125
|
+
msgstr "يؤدي هذا إلى إلغاء وصول العميل فورًا. سيحتاج العميل إلى التفويض مرة أخرى لإعادة الاتصال."
|
|
126
|
+
|
|
127
|
+
msgid "Time"
|
|
128
|
+
msgstr "الوقت"
|
|
129
|
+
|
|
130
|
+
msgid "Tool"
|
|
131
|
+
msgstr "الأداة"
|
|
132
|
+
|
|
133
|
+
msgid "Tool updated"
|
|
134
|
+
msgstr "تم تحديث الأداة"
|
|
135
|
+
|
|
136
|
+
msgid "Tools"
|
|
137
|
+
msgstr "الأدوات"
|
|
138
|
+
|
|
139
|
+
msgid "Toolset"
|
|
140
|
+
msgstr "مجموعة الأدوات"
|
|
141
|
+
|
|
142
|
+
msgid "Top tools"
|
|
143
|
+
msgstr "أهم الأدوات"
|
|
144
|
+
|
|
145
|
+
msgid "Total calls"
|
|
146
|
+
msgstr "إجمالي الاستدعاءات"
|
|
147
|
+
|
|
148
|
+
msgid "Usage over the selected period"
|
|
149
|
+
msgstr "الاستخدام خلال الفترة المحددة"
|
|
150
|
+
|
|
151
|
+
msgid "p50 latency"
|
|
152
|
+
msgstr "زمن الاستجابة p50"
|
|
153
|
+
|
|
154
|
+
msgid "p95 latency"
|
|
155
|
+
msgstr "زمن الاستجابة p95"
|
|
156
|
+
|
|
157
|
+
msgid "Authorize MCP Client"
|
|
158
|
+
msgstr "تفويض عميل MCP"
|
|
159
|
+
|
|
160
|
+
msgid "The grant could not be revoked; it may have already been removed"
|
|
161
|
+
msgstr "تعذّر إلغاء المنح؛ ربما تمت إزالتها بالفعل"
|
|
162
|
+
|
|
163
|
+
msgid "Request failed ({0})"
|
|
164
|
+
msgstr "فشل الطلب ({0})"
|
|
165
|
+
|
|
166
|
+
msgid "Authorize MCP access"
|
|
167
|
+
msgstr "تفويض الوصول إلى MCP"
|
|
168
|
+
|
|
169
|
+
msgid "Plugin"
|
|
170
|
+
msgstr "الإضافة"
|
|
171
|
+
|
|
172
|
+
msgid "Error loading MCP statistics: {0}"
|
|
173
|
+
msgstr "خطأ في تحميل إحصائيات MCP: {0}"
|
|
174
|
+
|
|
175
|
+
msgid "Error loading tools: {0}"
|
|
176
|
+
msgstr "خطأ في تحميل الأدوات: {0}"
|
|
177
|
+
|
|
178
|
+
msgid "The request could not be completed"
|
|
179
|
+
msgstr "تعذر إكمال الطلب"
|
|
180
|
+
|
|
181
|
+
msgid "Active"
|
|
182
|
+
msgstr "نشط"
|
|
183
|
+
|
|
184
|
+
msgid "Revoked"
|
|
185
|
+
msgstr "ملغى"
|
|
186
|
+
|
|
187
|
+
msgid "Expired"
|
|
188
|
+
msgstr "منتهي الصلاحية"
|
|
189
|
+
|
|
190
|
+
msgid "No tool calls yet"
|
|
191
|
+
msgstr ""
|
|
192
|
+
|
|
193
|
+
msgid "Half of the calls in this period finished faster than this."
|
|
194
|
+
msgstr ""
|
|
195
|
+
|
|
196
|
+
msgid "95 out of 100 calls in this period finished faster than this. It shows how slow the worst calls are."
|
|
197
|
+
msgstr ""
|
|
198
|
+
|
|
199
|
+
msgid "This tool can delete data or make changes that cannot be undone."
|
|
200
|
+
msgstr ""
|
|
201
|
+
|
|
202
|
+
msgid "This tool only reads data. It never changes anything."
|
|
203
|
+
msgstr ""
|
|
204
|
+
|
|
205
|
+
msgid "This tool creates or updates data, but does not delete anything."
|
|
206
|
+
msgstr ""
|
|
207
|
+
|
|
208
|
+
msgid "No actions available for a revoked grant"
|
|
209
|
+
msgstr ""
|
|
210
|
+
|
|
211
|
+
msgid "Unnamed application"
|
|
212
|
+
msgstr ""
|
|
213
|
+
|
|
214
|
+
msgid "Hostname verified"
|
|
215
|
+
msgstr ""
|
|
216
|
+
|
|
217
|
+
msgid "Unverified"
|
|
218
|
+
msgstr ""
|
|
219
|
+
|
|
220
|
+
msgid "The client's details were fetched from this address, so the hostname is verified. The name above is still chosen by the client itself."
|
|
221
|
+
msgstr ""
|
|
222
|
+
|
|
223
|
+
msgid "This name and address are reported by the application itself and are not verified."
|
|
224
|
+
msgstr ""
|
|
225
|
+
|
|
226
|
+
msgid "wants to access the Admin API of your Vendure server"
|
|
227
|
+
msgstr ""
|
|
228
|
+
|
|
229
|
+
msgid "Full access to the Admin API as your administrator account."
|
|
230
|
+
msgstr ""
|
|
231
|
+
|
|
232
|
+
msgid "wants to access the Shop API of your Vendure server"
|
|
233
|
+
msgstr ""
|
|
234
|
+
|
|
235
|
+
msgid "Access to the Shop API as a customer."
|
|
236
|
+
msgstr ""
|
|
237
|
+
|
|
238
|
+
msgid "After approval, the authorization code is sent here. Only approve if you recognise this destination."
|
|
239
|
+
msgstr ""
|
|
240
|
+
|
|
241
|
+
msgid "Setup guide for connecting MCP clients"
|
|
242
|
+
msgstr ""
|
|
243
|
+
|
|
244
|
+
msgid "Anonymous"
|
|
245
|
+
msgstr ""
|
|
246
|
+
|
|
247
|
+
msgid "Failed calls"
|
|
248
|
+
msgstr ""
|
|
249
|
+
|
|
250
|
+
msgid "Average number of tool calls per hour over the selected period."
|
|
251
|
+
msgstr ""
|
|
252
|
+
|
|
253
|
+
msgid "What this number means"
|
|
254
|
+
msgstr ""
|
|
255
|
+
|
|
256
|
+
msgid "See all activity"
|
|
257
|
+
msgstr ""
|
|
258
|
+
|
|
259
|
+
msgid "Granted to"
|
|
260
|
+
msgstr ""
|
|
261
|
+
|
|
262
|
+
msgid "The link may have expired or already been used. Start the connection again from your MCP client."
|
|
263
|
+
msgstr ""
|
|
264
|
+
|
|
265
|
+
msgid "Full access to the Admin API as {name} ({emailAddress})."
|
|
266
|
+
msgstr ""
|
|
267
|
+
|
|
268
|
+
msgid "Connect a client"
|
|
269
|
+
msgstr ""
|
|
270
|
+
|
|
271
|
+
msgid "Admin API"
|
|
272
|
+
msgstr ""
|
|
273
|
+
|
|
274
|
+
msgid "Shop API"
|
|
275
|
+
msgstr ""
|
|
276
|
+
|
|
277
|
+
msgid "Test with MCP Inspector"
|
|
278
|
+
msgstr ""
|
|
279
|
+
|
|
280
|
+
msgid "Close"
|
|
281
|
+
msgstr ""
|
|
282
|
+
|
|
283
|
+
msgid "Overview"
|
|
284
|
+
msgstr ""
|
|
285
|
+
|
|
286
|
+
msgid "Activity"
|
|
287
|
+
msgstr ""
|
|
288
|
+
|
|
289
|
+
msgid "Grants"
|
|
290
|
+
msgstr ""
|
|
291
|
+
|
|
292
|
+
msgid "The client will act on this channel:"
|
|
293
|
+
msgstr ""
|
|
294
|
+
|
|
295
|
+
msgid "This destination is not on the application's own host ({clientHost}). Only approve if you expect the code to be sent there."
|
|
296
|
+
msgstr ""
|
|
297
|
+
|
|
298
|
+
msgid "Revoking needs the UpdateMcpServer permission"
|
|
299
|
+
msgstr ""
|
|
300
|
+
|
|
301
|
+
msgid "Tool exposure is set to discovery. Clients see only search_tools and execute_tool. The toggles below still decide which tools execute_tool may run."
|
|
302
|
+
msgstr ""
|
|
303
|
+
|
|
304
|
+
msgid "OAuth is not configured, so no client can be granted access. Add an oauth block to McpPlugin.init to use grants."
|
|
305
|
+
msgstr ""
|
|
306
|
+
|
|
307
|
+
msgid "The admin endpoint needs OAuth. Add an oauth block to McpPlugin.init to enable it."
|
|
308
|
+
msgstr ""
|
|
309
|
+
|
|
310
|
+
msgid "The shop endpoint is disabled (shopAccess: 'disabled')."
|
|
311
|
+
msgstr ""
|