@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,26 @@
|
|
|
1
|
+
import { ProductVariantService, RequestContext, StockLevelService, StockLocationService } from '@vendure/core';
|
|
2
|
+
import { McpToolHandler } from '@vendure/mcp-sdk';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { McpToolSerializerService } from '../serializer.service';
|
|
5
|
+
declare const adjustStockInput: z.ZodObject<{
|
|
6
|
+
variantId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
7
|
+
locationId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
8
|
+
delta: z.ZodNumber;
|
|
9
|
+
}, z.core.$strict>;
|
|
10
|
+
type AdjustStockInput = z.infer<typeof adjustStockInput>;
|
|
11
|
+
export declare class AdjustStockTool implements McpToolHandler<AdjustStockInput> {
|
|
12
|
+
private readonly productVariantService;
|
|
13
|
+
private readonly stockLevelService;
|
|
14
|
+
private readonly stockLocationService;
|
|
15
|
+
private readonly serializer;
|
|
16
|
+
constructor(productVariantService: ProductVariantService, stockLevelService: StockLevelService, stockLocationService: StockLocationService, serializer: McpToolSerializerService);
|
|
17
|
+
execute(ctx: RequestContext, input: AdjustStockInput): Promise<{
|
|
18
|
+
stockLevels: {
|
|
19
|
+
stockLocationId: import("@vendure/core").ID;
|
|
20
|
+
stockLocationName: string;
|
|
21
|
+
stockOnHand: number;
|
|
22
|
+
stockAllocated: number;
|
|
23
|
+
}[];
|
|
24
|
+
}>;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AdjustStockTool = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const core_1 = require("@vendure/core");
|
|
15
|
+
const mcp_sdk_1 = require("@vendure/mcp-sdk");
|
|
16
|
+
const zod_1 = require("zod");
|
|
17
|
+
const id_schema_1 = require("../id-schema");
|
|
18
|
+
const int32_schema_1 = require("../int32-schema");
|
|
19
|
+
const serializer_service_1 = require("../serializer.service");
|
|
20
|
+
const adjustStockInput = zod_1.z.strictObject({
|
|
21
|
+
variantId: id_schema_1.idSchema.describe('Product variant ID.'),
|
|
22
|
+
locationId: id_schema_1.idSchema.describe('Stock location ID.'),
|
|
23
|
+
delta: int32_schema_1.int32Schema.describe('Amount to add (positive) or remove (negative) from stock on hand.'),
|
|
24
|
+
});
|
|
25
|
+
let AdjustStockTool = class AdjustStockTool {
|
|
26
|
+
constructor(productVariantService, stockLevelService, stockLocationService, serializer) {
|
|
27
|
+
this.productVariantService = productVariantService;
|
|
28
|
+
this.stockLevelService = stockLevelService;
|
|
29
|
+
this.stockLocationService = stockLocationService;
|
|
30
|
+
this.serializer = serializer;
|
|
31
|
+
}
|
|
32
|
+
async execute(ctx, input) {
|
|
33
|
+
var _a;
|
|
34
|
+
// The stock read below only sees locations in the active channel, but the write below does
|
|
35
|
+
// not, so we check the location here to avoid silently overwriting another channel's stock.
|
|
36
|
+
const location = await this.stockLocationService.findOne(ctx, input.locationId);
|
|
37
|
+
if (!location) {
|
|
38
|
+
throw new core_1.UserInputError(`Stock location ${input.locationId} is not available in the active channel.`);
|
|
39
|
+
}
|
|
40
|
+
const levels = await this.stockLevelService.getStockLevelsForVariant(ctx, input.variantId);
|
|
41
|
+
const current = levels.find(level => (0, core_1.idsAreEqual)(level.stockLocationId, input.locationId));
|
|
42
|
+
const stockOnHand = ((_a = current === null || current === void 0 ? void 0 : current.stockOnHand) !== null && _a !== void 0 ? _a : 0) + input.delta;
|
|
43
|
+
if (stockOnHand < int32_schema_1.GRAPHQL_INT_MIN || stockOnHand > int32_schema_1.GRAPHQL_INT_MAX) {
|
|
44
|
+
throw new core_1.UserInputError(`A delta of ${input.delta} would set stock on hand to ${stockOnHand}, outside ` +
|
|
45
|
+
`${int32_schema_1.GRAPHQL_INT_MIN} to ${int32_schema_1.GRAPHQL_INT_MAX}.`);
|
|
46
|
+
}
|
|
47
|
+
await this.productVariantService.update(ctx, [
|
|
48
|
+
{
|
|
49
|
+
id: input.variantId,
|
|
50
|
+
stockLevels: [
|
|
51
|
+
{
|
|
52
|
+
stockLocationId: input.locationId,
|
|
53
|
+
stockOnHand,
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
},
|
|
57
|
+
]);
|
|
58
|
+
const updated = await this.stockLevelService.getStockLevelsForVariant(ctx, input.variantId);
|
|
59
|
+
return { stockLevels: updated.map(level => this.serializer.stockLevel(level)) };
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
exports.AdjustStockTool = AdjustStockTool;
|
|
63
|
+
exports.AdjustStockTool = AdjustStockTool = __decorate([
|
|
64
|
+
(0, mcp_sdk_1.McpTool)({
|
|
65
|
+
name: 'adjust_stock',
|
|
66
|
+
toolset: 'admin',
|
|
67
|
+
description: 'Adjust stock on hand for a variant and stock location.',
|
|
68
|
+
keywords: [
|
|
69
|
+
'restock this item',
|
|
70
|
+
'update the inventory count',
|
|
71
|
+
'add or remove stock',
|
|
72
|
+
'correct the stock level',
|
|
73
|
+
'increase stock on hand',
|
|
74
|
+
'fix inventory quantity',
|
|
75
|
+
],
|
|
76
|
+
// UpdateStockLocation would be the wrong permission: it covers the StockLocation entity
|
|
77
|
+
// itself, not the quantities held at a location, which this mutation actually changes.
|
|
78
|
+
permissions: [core_1.Permission.UpdateProduct],
|
|
79
|
+
behavior: 'destructive',
|
|
80
|
+
inputSchema: adjustStockInput,
|
|
81
|
+
}),
|
|
82
|
+
(0, common_1.Injectable)(),
|
|
83
|
+
__metadata("design:paramtypes", [core_1.ProductVariantService,
|
|
84
|
+
core_1.StockLevelService,
|
|
85
|
+
core_1.StockLocationService,
|
|
86
|
+
serializer_service_1.McpToolSerializerService])
|
|
87
|
+
], AdjustStockTool);
|
|
88
|
+
//# sourceMappingURL=adjust-stock.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adjust-stock.tool.js","sourceRoot":"","sources":["../../../../src/tools/built-in/admin/adjust-stock.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { OrderService, RequestContext } from '@vendure/core';
|
|
2
|
+
import { McpToolHandler } from '@vendure/mcp-sdk';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { McpToolSerializerService } from '../serializer.service';
|
|
5
|
+
declare const cancelOrderInput: z.ZodObject<{
|
|
6
|
+
id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
7
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
8
|
+
cancelShipping: z.ZodOptional<z.ZodBoolean>;
|
|
9
|
+
}, z.core.$strict>;
|
|
10
|
+
type CancelOrderToolInput = z.infer<typeof cancelOrderInput>;
|
|
11
|
+
export declare class CancelOrderTool implements McpToolHandler<CancelOrderToolInput> {
|
|
12
|
+
private readonly orderService;
|
|
13
|
+
private readonly serializer;
|
|
14
|
+
constructor(orderService: OrderService, serializer: McpToolSerializerService);
|
|
15
|
+
execute(ctx: RequestContext, input: CancelOrderToolInput): Promise<Record<string, unknown>>;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CancelOrderTool = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const core_1 = require("@vendure/core");
|
|
15
|
+
const mcp_sdk_1 = require("@vendure/mcp-sdk");
|
|
16
|
+
const zod_1 = require("zod");
|
|
17
|
+
const id_schema_1 = require("../id-schema");
|
|
18
|
+
const serializer_service_1 = require("../serializer.service");
|
|
19
|
+
const string_schemas_1 = require("../string-schemas");
|
|
20
|
+
const cancelOrderInput = zod_1.z.strictObject({
|
|
21
|
+
id: id_schema_1.idSchema.describe('Order ID.'),
|
|
22
|
+
reason: string_schemas_1.longText.describe('Reason for the cancellation.').optional(),
|
|
23
|
+
cancelShipping: zod_1.z.boolean().describe('Also cancel shipping charges. Defaults to true.').optional(),
|
|
24
|
+
});
|
|
25
|
+
let CancelOrderTool = class CancelOrderTool {
|
|
26
|
+
constructor(orderService, serializer) {
|
|
27
|
+
this.orderService = orderService;
|
|
28
|
+
this.serializer = serializer;
|
|
29
|
+
}
|
|
30
|
+
async execute(ctx, input) {
|
|
31
|
+
return this.serializer.orderOrError(await this.orderService.cancelOrder(ctx, {
|
|
32
|
+
orderId: input.id,
|
|
33
|
+
reason: input.reason,
|
|
34
|
+
cancelShipping: input.cancelShipping !== false,
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
exports.CancelOrderTool = CancelOrderTool;
|
|
39
|
+
exports.CancelOrderTool = CancelOrderTool = __decorate([
|
|
40
|
+
(0, mcp_sdk_1.McpTool)({
|
|
41
|
+
name: 'cancel_order',
|
|
42
|
+
toolset: 'admin',
|
|
43
|
+
description: 'Cancel an order and restock cancelled lines.',
|
|
44
|
+
keywords: [
|
|
45
|
+
'void an order',
|
|
46
|
+
"cancel a customer's purchase",
|
|
47
|
+
'call off this order',
|
|
48
|
+
'scrap the order and restock',
|
|
49
|
+
'abort an order',
|
|
50
|
+
'kill this order',
|
|
51
|
+
],
|
|
52
|
+
permissions: [core_1.Permission.UpdateOrder],
|
|
53
|
+
behavior: 'destructive',
|
|
54
|
+
inputSchema: cancelOrderInput,
|
|
55
|
+
}),
|
|
56
|
+
(0, common_1.Injectable)(),
|
|
57
|
+
__metadata("design:paramtypes", [core_1.OrderService,
|
|
58
|
+
serializer_service_1.McpToolSerializerService])
|
|
59
|
+
], CancelOrderTool);
|
|
60
|
+
//# sourceMappingURL=cancel-order.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancel-order.tool.js","sourceRoot":"","sources":["../../../../src/tools/built-in/admin/cancel-order.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,wCAAyE;AACzE,8CAA2D;AAC3D,6BAAwB;AAExB,4CAAwC;AACxC,8DAAiE;AACjE,sDAA6C;AAE7C,MAAM,gBAAgB,GAAG,OAAC,CAAC,YAAY,CAAC;IACpC,EAAE,EAAE,oBAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;IAClC,MAAM,EAAE,yBAAQ,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC,QAAQ,EAAE;IACpE,cAAc,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC,CAAC,QAAQ,EAAE;CACrG,CAAC,CAAC;AAqBI,IAAM,eAAe,GAArB,MAAM,eAAe;IACxB,YACqB,YAA0B,EAC1B,UAAoC;QADpC,iBAAY,GAAZ,YAAY,CAAc;QAC1B,eAAU,GAAV,UAAU,CAA0B;IACtD,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,GAAmB,EAAE,KAA2B;QAC1D,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAC/B,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE;YACrC,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,cAAc,EAAE,KAAK,CAAC,cAAc,KAAK,KAAK;SACjD,CAAC,CACL,CAAC;IACN,CAAC;CACJ,CAAA;AAfY,0CAAe;0BAAf,eAAe;IAjB3B,IAAA,iBAAO,EAAC;QACL,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,8CAA8C;QAC3D,QAAQ,EAAE;YACN,eAAe;YACf,8BAA8B;YAC9B,qBAAqB;YACrB,6BAA6B;YAC7B,gBAAgB;YAChB,iBAAiB;SACpB;QACD,WAAW,EAAE,CAAC,iBAAU,CAAC,WAAW,CAAC;QACrC,QAAQ,EAAE,aAAa;QACvB,WAAW,EAAE,gBAAgB;KAChC,CAAC;IACD,IAAA,mBAAU,GAAE;qCAG0B,mBAAY;QACd,6CAAwB;GAHhD,eAAe,CAe3B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.userChannelIds = userChannelIds;
|
|
4
|
+
// An empty list means the user has no channel access at all, not that we couldn't tell.
|
|
5
|
+
function userChannelIds(ctx) {
|
|
6
|
+
var _a, _b, _c;
|
|
7
|
+
return (_c = (_b = (_a = ctx.session) === null || _a === void 0 ? void 0 : _a.user) === null || _b === void 0 ? void 0 : _b.channelPermissions.map(entry => entry.id)) !== null && _c !== void 0 ? _c : [];
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=channel-access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel-access.js","sourceRoot":"","sources":["../../../../src/tools/built-in/admin/channel-access.ts"],"names":[],"mappings":";;AAGA,wCAEC;AAHD,wFAAwF;AACxF,SAAgB,cAAc,CAAC,GAAmB;;IAC9C,OAAO,MAAA,MAAA,MAAA,GAAG,CAAC,OAAO,0CAAE,IAAI,0CAAE,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,mCAAI,EAAE,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { CustomerService, RequestContext } from '@vendure/core';
|
|
2
|
+
import { McpToolHandler } from '@vendure/mcp-sdk';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { McpCustomFieldInputService } from '../custom-field-input.service';
|
|
5
|
+
import { McpToolSerializerService } from '../serializer.service';
|
|
6
|
+
declare const createCustomerInput: z.ZodObject<{
|
|
7
|
+
input: z.ZodObject<{
|
|
8
|
+
firstName: z.ZodString;
|
|
9
|
+
lastName: z.ZodString;
|
|
10
|
+
emailAddress: z.ZodString;
|
|
11
|
+
phoneNumber: z.ZodOptional<z.ZodString>;
|
|
12
|
+
title: z.ZodOptional<z.ZodString>;
|
|
13
|
+
customFields: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
|
|
14
|
+
}, z.core.$strict>;
|
|
15
|
+
}, z.core.$strict>;
|
|
16
|
+
type CreateCustomerToolInput = z.infer<typeof createCustomerInput>;
|
|
17
|
+
export declare class CreateCustomerTool implements McpToolHandler<CreateCustomerToolInput> {
|
|
18
|
+
private readonly customerService;
|
|
19
|
+
private readonly customFieldInput;
|
|
20
|
+
private readonly serializer;
|
|
21
|
+
constructor(customerService: CustomerService, customFieldInput: McpCustomFieldInputService, serializer: McpToolSerializerService);
|
|
22
|
+
execute(ctx: RequestContext, input: CreateCustomerToolInput): Promise<{
|
|
23
|
+
customer: {
|
|
24
|
+
id: import("@vendure/core").ID;
|
|
25
|
+
firstName: string;
|
|
26
|
+
lastName: string;
|
|
27
|
+
emailAddress: string;
|
|
28
|
+
phoneNumber: string;
|
|
29
|
+
addresses: {
|
|
30
|
+
defaultShippingAddress: boolean;
|
|
31
|
+
defaultBillingAddress: boolean;
|
|
32
|
+
id: import("@vendure/core").ID;
|
|
33
|
+
}[] | undefined;
|
|
34
|
+
} | null;
|
|
35
|
+
} | {
|
|
36
|
+
errorCode: string;
|
|
37
|
+
message: string;
|
|
38
|
+
customer?: undefined;
|
|
39
|
+
}>;
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CreateCustomerTool = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const core_1 = require("@vendure/core");
|
|
15
|
+
const mcp_sdk_1 = require("@vendure/mcp-sdk");
|
|
16
|
+
const zod_1 = require("zod");
|
|
17
|
+
const custom_field_input_service_1 = require("../custom-field-input.service");
|
|
18
|
+
const serializer_service_1 = require("../serializer.service");
|
|
19
|
+
const entity_field_schemas_1 = require("./entity-field-schemas");
|
|
20
|
+
const createCustomerInput = zod_1.z.strictObject({
|
|
21
|
+
input: entity_field_schemas_1.customerFieldsSchema,
|
|
22
|
+
});
|
|
23
|
+
let CreateCustomerTool = class CreateCustomerTool {
|
|
24
|
+
constructor(customerService, customFieldInput, serializer) {
|
|
25
|
+
this.customerService = customerService;
|
|
26
|
+
this.customFieldInput = customFieldInput;
|
|
27
|
+
this.serializer = serializer;
|
|
28
|
+
}
|
|
29
|
+
async execute(ctx, input) {
|
|
30
|
+
await this.customFieldInput.assertWritable(ctx, 'Customer', input.input.customFields);
|
|
31
|
+
return this.serializer.customerOrError(await this.customerService.create(ctx, input.input));
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
exports.CreateCustomerTool = CreateCustomerTool;
|
|
35
|
+
exports.CreateCustomerTool = CreateCustomerTool = __decorate([
|
|
36
|
+
(0, mcp_sdk_1.McpTool)({
|
|
37
|
+
name: 'create_customer',
|
|
38
|
+
toolset: 'admin',
|
|
39
|
+
description: 'Create a new customer record with their name, email address and an optional phone number.',
|
|
40
|
+
keywords: [
|
|
41
|
+
'add a new customer',
|
|
42
|
+
'register a buyer',
|
|
43
|
+
'set up a client account',
|
|
44
|
+
'onboard a new customer',
|
|
45
|
+
'create a shopper record',
|
|
46
|
+
'make a customer account',
|
|
47
|
+
],
|
|
48
|
+
permissions: [core_1.Permission.CreateCustomer],
|
|
49
|
+
behavior: 'mutating',
|
|
50
|
+
inputSchema: createCustomerInput,
|
|
51
|
+
}),
|
|
52
|
+
(0, common_1.Injectable)(),
|
|
53
|
+
__metadata("design:paramtypes", [core_1.CustomerService,
|
|
54
|
+
custom_field_input_service_1.McpCustomFieldInputService,
|
|
55
|
+
serializer_service_1.McpToolSerializerService])
|
|
56
|
+
], CreateCustomerTool);
|
|
57
|
+
//# sourceMappingURL=create-customer.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-customer.tool.js","sourceRoot":"","sources":["../../../../src/tools/built-in/admin/create-customer.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,wCAA4E;AAC5E,8CAA2D;AAC3D,6BAAwB;AAExB,8EAA2E;AAC3E,8DAAiE;AAEjE,iEAA8D;AAE9D,MAAM,mBAAmB,GAAG,OAAC,CAAC,YAAY,CAAC;IACvC,KAAK,EAAE,2CAAoB;CAC9B,CAAC,CAAC;AAqBI,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC3B,YACqB,eAAgC,EAChC,gBAA4C,EAC5C,UAAoC;QAFpC,oBAAe,GAAf,eAAe,CAAiB;QAChC,qBAAgB,GAAhB,gBAAgB,CAA4B;QAC5C,eAAU,GAAV,UAAU,CAA0B;IACtD,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,GAAmB,EAAE,KAA8B;QAC7D,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAChG,CAAC;CACJ,CAAA;AAXY,gDAAkB;6BAAlB,kBAAkB;IAjB9B,IAAA,iBAAO,EAAC;QACL,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,2FAA2F;QACxG,QAAQ,EAAE;YACN,oBAAoB;YACpB,kBAAkB;YAClB,yBAAyB;YACzB,wBAAwB;YACxB,yBAAyB;YACzB,yBAAyB;SAC5B;QACD,WAAW,EAAE,CAAC,iBAAU,CAAC,cAAc,CAAC;QACxC,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,mBAAmB;KACnC,CAAC;IACD,IAAA,mBAAU,GAAE;qCAG6B,sBAAe;QACd,uDAA0B;QAChC,6CAAwB;GAJhD,kBAAkB,CAW9B"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { FulfillmentState, FulfillmentStateTransitionError, ID, OrderService, RequestContext, TransactionalConnection } from '@vendure/core';
|
|
2
|
+
import { McpToolHandler } from '@vendure/mcp-sdk';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { McpToolSerializerService } from '../serializer.service';
|
|
5
|
+
declare const createFulfillmentInput: z.ZodObject<{
|
|
6
|
+
id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
7
|
+
method: z.ZodString;
|
|
8
|
+
trackingCode: z.ZodOptional<z.ZodString>;
|
|
9
|
+
lines: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
10
|
+
orderLineId: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
11
|
+
quantity: z.ZodNumber;
|
|
12
|
+
}, z.core.$strict>>>;
|
|
13
|
+
state: z.ZodOptional<z.ZodEnum<{
|
|
14
|
+
Shipped: "Shipped";
|
|
15
|
+
Delivered: "Delivered";
|
|
16
|
+
}>>;
|
|
17
|
+
}, z.core.$strict>;
|
|
18
|
+
type CreateFulfillmentInput = z.infer<typeof createFulfillmentInput>;
|
|
19
|
+
export declare class CreateFulfillmentTool implements McpToolHandler<CreateFulfillmentInput> {
|
|
20
|
+
private readonly orderService;
|
|
21
|
+
private readonly serializer;
|
|
22
|
+
private readonly connection;
|
|
23
|
+
constructor(orderService: OrderService, serializer: McpToolSerializerService, connection: TransactionalConnection);
|
|
24
|
+
execute(ctx: RequestContext, input: CreateFulfillmentInput): Promise<import("@vendure/common/lib/generated-types").EmptyOrderLineSelectionError | FulfillmentStateTransitionError | import("@vendure/common/lib/generated-types").CreateFulfillmentError | import("@vendure/common/lib/generated-types").FulfillmentStateTransitionError | import("@vendure/common/lib/generated-types").InsufficientStockOnHandError | import("@vendure/common/lib/generated-types").InvalidFulfillmentHandlerError | import("@vendure/common/lib/generated-types").ItemsAlreadyFulfilledError | {
|
|
25
|
+
fulfillment: {
|
|
26
|
+
id: ID;
|
|
27
|
+
state: FulfillmentState;
|
|
28
|
+
method: string;
|
|
29
|
+
trackingCode: string;
|
|
30
|
+
lines: {
|
|
31
|
+
orderLineId: ID;
|
|
32
|
+
quantity: number;
|
|
33
|
+
}[];
|
|
34
|
+
};
|
|
35
|
+
order: {
|
|
36
|
+
id: ID;
|
|
37
|
+
code: string;
|
|
38
|
+
state: import("@vendure/core").OrderState;
|
|
39
|
+
active: boolean;
|
|
40
|
+
total: number;
|
|
41
|
+
totalDecimal: string;
|
|
42
|
+
totalWithTax: number;
|
|
43
|
+
totalWithTaxDecimal: string;
|
|
44
|
+
currencyCode: import("@vendure/core").CurrencyCode;
|
|
45
|
+
totalQuantity: number;
|
|
46
|
+
createdAt: string | null;
|
|
47
|
+
updatedAt: string | null;
|
|
48
|
+
orderPlacedAt: string | null;
|
|
49
|
+
couponCodes: string[];
|
|
50
|
+
discounts: {
|
|
51
|
+
adjustmentSource: string;
|
|
52
|
+
type: import("@vendure/core").AdjustmentType;
|
|
53
|
+
description: string;
|
|
54
|
+
amount: number;
|
|
55
|
+
amountDecimal: string;
|
|
56
|
+
amountWithTax: number;
|
|
57
|
+
amountWithTaxDecimal: string;
|
|
58
|
+
}[];
|
|
59
|
+
lines: {
|
|
60
|
+
id: ID;
|
|
61
|
+
quantity: number;
|
|
62
|
+
linePriceWithTax: number;
|
|
63
|
+
linePriceWithTaxDecimal: string;
|
|
64
|
+
productVariant: {
|
|
65
|
+
id: ID;
|
|
66
|
+
name: import("@vendure/core").LocaleString;
|
|
67
|
+
sku: string;
|
|
68
|
+
} | null;
|
|
69
|
+
}[];
|
|
70
|
+
payments: {
|
|
71
|
+
id: ID;
|
|
72
|
+
method: string;
|
|
73
|
+
amount: number;
|
|
74
|
+
amountDecimal: string;
|
|
75
|
+
state: import("@vendure/core").PaymentState;
|
|
76
|
+
transactionId: string;
|
|
77
|
+
errorMessage: string | undefined;
|
|
78
|
+
publicMetadata: any;
|
|
79
|
+
refunds: {
|
|
80
|
+
id: ID;
|
|
81
|
+
state: import("@vendure/core").RefundState;
|
|
82
|
+
total: number;
|
|
83
|
+
totalDecimal: string;
|
|
84
|
+
reason: string;
|
|
85
|
+
}[];
|
|
86
|
+
}[] | undefined;
|
|
87
|
+
fulfillments: {
|
|
88
|
+
id: ID;
|
|
89
|
+
state: FulfillmentState;
|
|
90
|
+
method: string;
|
|
91
|
+
trackingCode: string;
|
|
92
|
+
lines: {
|
|
93
|
+
orderLineId: ID;
|
|
94
|
+
quantity: number;
|
|
95
|
+
}[];
|
|
96
|
+
}[] | undefined;
|
|
97
|
+
customer: {
|
|
98
|
+
id: ID;
|
|
99
|
+
emailAddress: string;
|
|
100
|
+
firstName: string;
|
|
101
|
+
lastName: string;
|
|
102
|
+
} | null | undefined;
|
|
103
|
+
shippingAddress: Record<string, string> | null;
|
|
104
|
+
billingAddress: Record<string, string> | null;
|
|
105
|
+
shippingWithTax: number;
|
|
106
|
+
shippingWithTaxDecimal: string;
|
|
107
|
+
shippingLines: {
|
|
108
|
+
id: ID;
|
|
109
|
+
shippingMethodId: ID | null;
|
|
110
|
+
priceWithTax: number;
|
|
111
|
+
priceWithTaxDecimal: string;
|
|
112
|
+
}[] | undefined;
|
|
113
|
+
} | null;
|
|
114
|
+
}>;
|
|
115
|
+
private transitionOrThrow;
|
|
116
|
+
private linesOfOrder;
|
|
117
|
+
}
|
|
118
|
+
export {};
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CreateFulfillmentTool = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const core_1 = require("@vendure/core");
|
|
15
|
+
const mcp_sdk_1 = require("@vendure/mcp-sdk");
|
|
16
|
+
const zod_1 = require("zod");
|
|
17
|
+
const id_schema_1 = require("../id-schema");
|
|
18
|
+
const int32_schema_1 = require("../int32-schema");
|
|
19
|
+
const order_list_helpers_1 = require("../order-list-helpers");
|
|
20
|
+
const serializer_service_1 = require("../serializer.service");
|
|
21
|
+
const string_schemas_1 = require("../string-schemas");
|
|
22
|
+
const createFulfillmentInput = zod_1.z.strictObject({
|
|
23
|
+
id: id_schema_1.idSchema.describe('Order ID.'),
|
|
24
|
+
method: string_schemas_1.shortText.describe('Shipping method or carrier name to record on the fulfillment.'),
|
|
25
|
+
trackingCode: string_schemas_1.shortText.describe("The carrier's tracking code for this shipment.").optional(),
|
|
26
|
+
lines: zod_1.z
|
|
27
|
+
.array(zod_1.z.strictObject({
|
|
28
|
+
orderLineId: id_schema_1.idSchema.describe('Order line ID, as returned by get_order.'),
|
|
29
|
+
quantity: int32_schema_1.int32Schema
|
|
30
|
+
.min(1)
|
|
31
|
+
.describe('How many of that line to fulfill, a whole number of at least 1.'),
|
|
32
|
+
}))
|
|
33
|
+
.describe('Lines to fulfill. Omit to fulfill every line in the quantity still unfulfilled.')
|
|
34
|
+
.optional(),
|
|
35
|
+
state: zod_1.z
|
|
36
|
+
.enum(['Shipped', 'Delivered'])
|
|
37
|
+
.describe('Move the new fulfillment straight to this state. Shipped makes the order Shipped or ' +
|
|
38
|
+
'PartiallyShipped; Delivered makes it Delivered or PartiallyDelivered.')
|
|
39
|
+
.optional(),
|
|
40
|
+
});
|
|
41
|
+
class RefusedTransition extends Error {
|
|
42
|
+
constructor(result) {
|
|
43
|
+
super(result.message);
|
|
44
|
+
this.result = result;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
let CreateFulfillmentTool = class CreateFulfillmentTool {
|
|
48
|
+
constructor(orderService, serializer, connection) {
|
|
49
|
+
this.orderService = orderService;
|
|
50
|
+
this.serializer = serializer;
|
|
51
|
+
this.connection = connection;
|
|
52
|
+
}
|
|
53
|
+
async execute(ctx, input) {
|
|
54
|
+
const order = await (0, order_list_helpers_1.findOrderOrThrow)(this.orderService, ctx, input.id, order_list_helpers_1.ORDER_DETAIL_RELATIONS);
|
|
55
|
+
const lines = input.lines ? this.linesOfOrder(order, input.lines) : unfulfilledLines(order);
|
|
56
|
+
try {
|
|
57
|
+
// Creating the fulfillment, moving it on and reading the result back are one unit of
|
|
58
|
+
// work, so a refused transition leaves no fulfillment behind.
|
|
59
|
+
return await this.connection.withTransaction(ctx, async (txCtx) => {
|
|
60
|
+
var _a, _b, _c, _d;
|
|
61
|
+
const created = await this.orderService.createFulfillment(txCtx, {
|
|
62
|
+
lines,
|
|
63
|
+
handler: {
|
|
64
|
+
code: core_1.manualFulfillmentHandler.code,
|
|
65
|
+
arguments: [
|
|
66
|
+
{ name: 'method', value: input.method },
|
|
67
|
+
{ name: 'trackingCode', value: (_a = input.trackingCode) !== null && _a !== void 0 ? _a : '' },
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
if ((0, core_1.isGraphQlErrorResult)(created)) {
|
|
72
|
+
return created;
|
|
73
|
+
}
|
|
74
|
+
const fulfillment = input.state
|
|
75
|
+
? await this.transitionOrThrow(txCtx, created.id, input.state)
|
|
76
|
+
: created;
|
|
77
|
+
const updated = await this.orderService.findOne(txCtx, input.id, order_list_helpers_1.ORDER_DETAIL_RELATIONS);
|
|
78
|
+
return {
|
|
79
|
+
fulfillment: this.serializer.fulfillment(fulfillment, (_d = (_c = (_b = updated === null || updated === void 0 ? void 0 : updated.fulfillments) === null || _b === void 0 ? void 0 : _b.find(item => (0, core_1.idsAreEqual)(item.id, fulfillment.id))) === null || _c === void 0 ? void 0 : _c.lines) !== null && _d !== void 0 ? _d : []),
|
|
80
|
+
order: this.serializer.order(updated),
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
if (e instanceof RefusedTransition) {
|
|
86
|
+
return e.result;
|
|
87
|
+
}
|
|
88
|
+
throw e;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async transitionOrThrow(ctx, fulfillmentId, state) {
|
|
92
|
+
const result = await this.orderService.transitionFulfillmentToState(ctx, fulfillmentId, state);
|
|
93
|
+
if ((0, core_1.isGraphQlErrorResult)(result)) {
|
|
94
|
+
throw new RefusedTransition(result);
|
|
95
|
+
}
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
// Core works out which order to fulfill from the line ids alone, so without this check a line
|
|
99
|
+
// id from a different order would silently fulfill that order instead of the one named here.
|
|
100
|
+
linesOfOrder(order, lines) {
|
|
101
|
+
for (const line of lines) {
|
|
102
|
+
if (!order.lines.some(orderLine => (0, core_1.idsAreEqual)(orderLine.id, line.orderLineId))) {
|
|
103
|
+
throw new core_1.UserInputError(`Order line ${String(line.orderLineId)} is not on order ${String(order.id)}.`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return lines;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
exports.CreateFulfillmentTool = CreateFulfillmentTool;
|
|
110
|
+
exports.CreateFulfillmentTool = CreateFulfillmentTool = __decorate([
|
|
111
|
+
(0, mcp_sdk_1.McpTool)({
|
|
112
|
+
name: 'create_fulfillment',
|
|
113
|
+
toolset: 'admin',
|
|
114
|
+
description: "Create a fulfillment for some or all of an order's lines. Without state, the fulfillment " +
|
|
115
|
+
'is Pending and the order state does not change.',
|
|
116
|
+
keywords: [
|
|
117
|
+
'fulfil an order',
|
|
118
|
+
'fulfill the items in an order',
|
|
119
|
+
'mark an order as shipped',
|
|
120
|
+
'dispatch an order to the customer',
|
|
121
|
+
'add a tracking code to an order',
|
|
122
|
+
'record a shipment for an order',
|
|
123
|
+
],
|
|
124
|
+
permissions: [core_1.Permission.UpdateOrder],
|
|
125
|
+
// Marked destructive because nothing undoes a fulfillment or the stock movement it writes.
|
|
126
|
+
behavior: 'destructive',
|
|
127
|
+
inputSchema: createFulfillmentInput,
|
|
128
|
+
}),
|
|
129
|
+
(0, common_1.Injectable)(),
|
|
130
|
+
__metadata("design:paramtypes", [core_1.OrderService,
|
|
131
|
+
serializer_service_1.McpToolSerializerService,
|
|
132
|
+
core_1.TransactionalConnection])
|
|
133
|
+
], CreateFulfillmentTool);
|
|
134
|
+
// A cancelled fulfillment doesn't count, so cancelling one frees its quantity to be fulfilled again.
|
|
135
|
+
function unfulfilledLines(order) {
|
|
136
|
+
var _a, _b, _c, _d;
|
|
137
|
+
const fulfilled = new Map();
|
|
138
|
+
for (const fulfillment of (_a = order.fulfillments) !== null && _a !== void 0 ? _a : []) {
|
|
139
|
+
if (fulfillment.state === 'Cancelled') {
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
for (const line of (_b = fulfillment.lines) !== null && _b !== void 0 ? _b : []) {
|
|
143
|
+
const key = String(line.orderLineId);
|
|
144
|
+
fulfilled.set(key, ((_c = fulfilled.get(key)) !== null && _c !== void 0 ? _c : 0) + line.quantity);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
const lines = [];
|
|
148
|
+
for (const line of order.lines) {
|
|
149
|
+
const quantity = line.quantity - ((_d = fulfilled.get(String(line.id))) !== null && _d !== void 0 ? _d : 0);
|
|
150
|
+
if (0 < quantity) {
|
|
151
|
+
lines.push({ orderLineId: line.id, quantity });
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return lines;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=create-fulfillment.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-fulfillment.tool.js","sourceRoot":"","sources":["../../../../src/tools/built-in/admin/create-fulfillment.tool.ts"],"names":[],"mappings":"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"}
|