@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.
Files changed (389) hide show
  1. package/lib/api/api-extensions.d.ts +2 -0
  2. package/lib/api/api-extensions.js +239 -0
  3. package/lib/api/api-extensions.js.map +1 -0
  4. package/lib/api/mcp-actor.service.d.ts +19 -0
  5. package/lib/api/mcp-actor.service.js +52 -0
  6. package/lib/api/mcp-actor.service.js.map +1 -0
  7. package/lib/api/mcp-admin.resolver.d.ts +105 -0
  8. package/lib/api/mcp-admin.resolver.js +463 -0
  9. package/lib/api/mcp-admin.resolver.js.map +1 -0
  10. package/lib/api/mcp-shop.resolver.d.ts +25 -0
  11. package/lib/api/mcp-shop.resolver.js +74 -0
  12. package/lib/api/mcp-shop.resolver.js.map +1 -0
  13. package/lib/check-options.d.ts +7 -0
  14. package/lib/check-options.js +130 -0
  15. package/lib/check-options.js.map +1 -0
  16. package/lib/constants.d.ts +48 -0
  17. package/lib/constants.js +72 -0
  18. package/lib/constants.js.map +1 -0
  19. package/lib/delete-in-batches.d.ts +5 -0
  20. package/lib/delete-in-batches.js +28 -0
  21. package/lib/delete-in-batches.js.map +1 -0
  22. package/lib/entities/index.d.ts +5 -0
  23. package/lib/entities/index.js +22 -0
  24. package/lib/entities/index.js.map +1 -0
  25. package/lib/entities/mcp-authorization-code.entity.d.ts +33 -0
  26. package/lib/entities/mcp-authorization-code.entity.js +77 -0
  27. package/lib/entities/mcp-authorization-code.entity.js.map +1 -0
  28. package/lib/entities/mcp-authorization-request.entity.d.ts +31 -0
  29. package/lib/entities/mcp-authorization-request.entity.js +73 -0
  30. package/lib/entities/mcp-authorization-request.entity.js.map +1 -0
  31. package/lib/entities/mcp-oauth-client.entity.d.ts +56 -0
  32. package/lib/entities/mcp-oauth-client.entity.js +70 -0
  33. package/lib/entities/mcp-oauth-client.entity.js.map +1 -0
  34. package/lib/entities/mcp-oauth-grant.entity.d.ts +77 -0
  35. package/lib/entities/mcp-oauth-grant.entity.js +121 -0
  36. package/lib/entities/mcp-oauth-grant.entity.js.map +1 -0
  37. package/lib/entities/mcp-tool-call-log.entity.d.ts +50 -0
  38. package/lib/entities/mcp-tool-call-log.entity.js +101 -0
  39. package/lib/entities/mcp-tool-call-log.entity.js.map +1 -0
  40. package/lib/events/mcp-tool-call.event.d.ts +17 -0
  41. package/lib/events/mcp-tool-call.event.js +23 -0
  42. package/lib/events/mcp-tool-call.event.js.map +1 -0
  43. package/lib/get-client-ip.d.ts +2 -0
  44. package/lib/get-client-ip.js +10 -0
  45. package/lib/get-client-ip.js.map +1 -0
  46. package/lib/get-language-code.d.ts +3 -0
  47. package/lib/get-language-code.js +12 -0
  48. package/lib/get-language-code.js.map +1 -0
  49. package/lib/index.d.ts +6 -0
  50. package/lib/index.js +26 -0
  51. package/lib/index.js.map +1 -0
  52. package/lib/internal-types.d.ts +27 -0
  53. package/lib/internal-types.js +3 -0
  54. package/lib/internal-types.js.map +1 -0
  55. package/lib/logging/mcp-tool-call-log-retention.service.d.ts +8 -0
  56. package/lib/logging/mcp-tool-call-log-retention.service.js +54 -0
  57. package/lib/logging/mcp-tool-call-log-retention.service.js.map +1 -0
  58. package/lib/logging/mcp-tool-call-log.service.d.ts +24 -0
  59. package/lib/logging/mcp-tool-call-log.service.js +128 -0
  60. package/lib/logging/mcp-tool-call-log.service.js.map +1 -0
  61. package/lib/oauth/cimd/cimd-client-resolver.service.d.ts +18 -0
  62. package/lib/oauth/cimd/cimd-client-resolver.service.js +109 -0
  63. package/lib/oauth/cimd/cimd-client-resolver.service.js.map +1 -0
  64. package/lib/oauth/cimd/cimd-document.d.ts +11 -0
  65. package/lib/oauth/cimd/cimd-document.js +66 -0
  66. package/lib/oauth/cimd/cimd-document.js.map +1 -0
  67. package/lib/oauth/cimd/cimd-fetch.d.ts +14 -0
  68. package/lib/oauth/cimd/cimd-fetch.js +192 -0
  69. package/lib/oauth/cimd/cimd-fetch.js.map +1 -0
  70. package/lib/oauth/cimd/cimd-url.d.ts +5 -0
  71. package/lib/oauth/cimd/cimd-url.js +94 -0
  72. package/lib/oauth/cimd/cimd-url.js.map +1 -0
  73. package/lib/oauth/grant-session.service.d.ts +19 -0
  74. package/lib/oauth/grant-session.service.js +141 -0
  75. package/lib/oauth/grant-session.service.js.map +1 -0
  76. package/lib/oauth/oauth-error.d.ts +18 -0
  77. package/lib/oauth/oauth-error.js +60 -0
  78. package/lib/oauth/oauth-error.js.map +1 -0
  79. package/lib/oauth/oauth-metadata.service.d.ts +34 -0
  80. package/lib/oauth/oauth-metadata.service.js +107 -0
  81. package/lib/oauth/oauth-metadata.service.js.map +1 -0
  82. package/lib/oauth/oauth-retention.service.d.ts +23 -0
  83. package/lib/oauth/oauth-retention.service.js +103 -0
  84. package/lib/oauth/oauth-retention.service.js.map +1 -0
  85. package/lib/oauth/oauth-types.d.ts +61 -0
  86. package/lib/oauth/oauth-types.js +32 -0
  87. package/lib/oauth/oauth-types.js.map +1 -0
  88. package/lib/oauth/oauth-utils.d.ts +20 -0
  89. package/lib/oauth/oauth-utils.js +111 -0
  90. package/lib/oauth/oauth-utils.js.map +1 -0
  91. package/lib/oauth/oauth.controller.d.ts +31 -0
  92. package/lib/oauth/oauth.controller.js +132 -0
  93. package/lib/oauth/oauth.controller.js.map +1 -0
  94. package/lib/oauth/oauth.service.d.ts +69 -0
  95. package/lib/oauth/oauth.service.js +650 -0
  96. package/lib/oauth/oauth.service.js.map +1 -0
  97. package/lib/oauth/token-hash.d.ts +6 -0
  98. package/lib/oauth/token-hash.js +21 -0
  99. package/lib/oauth/token-hash.js.map +1 -0
  100. package/lib/plugin.d.ts +54 -0
  101. package/lib/plugin.js +171 -0
  102. package/lib/plugin.js.map +1 -0
  103. package/lib/rate-limit/ip-bucket-key.d.ts +1 -0
  104. package/lib/rate-limit/ip-bucket-key.js +35 -0
  105. package/lib/rate-limit/ip-bucket-key.js.map +1 -0
  106. package/lib/rate-limit/mcp-oauth-rate-limit.guard.d.ts +20 -0
  107. package/lib/rate-limit/mcp-oauth-rate-limit.guard.js +63 -0
  108. package/lib/rate-limit/mcp-oauth-rate-limit.guard.js.map +1 -0
  109. package/lib/rate-limit/mcp-rate-limiter.service.d.ts +47 -0
  110. package/lib/rate-limit/mcp-rate-limiter.service.js +248 -0
  111. package/lib/rate-limit/mcp-rate-limiter.service.js.map +1 -0
  112. package/lib/registry/bm25.d.ts +12 -0
  113. package/lib/registry/bm25.js +60 -0
  114. package/lib/registry/bm25.js.map +1 -0
  115. package/lib/registry/mcp-tool-execution.service.d.ts +45 -0
  116. package/lib/registry/mcp-tool-execution.service.js +72 -0
  117. package/lib/registry/mcp-tool-execution.service.js.map +1 -0
  118. package/lib/registry/mcp-tool-registry.service.d.ts +89 -0
  119. package/lib/registry/mcp-tool-registry.service.js +668 -0
  120. package/lib/registry/mcp-tool-registry.service.js.map +1 -0
  121. package/lib/registry/mcp-tool-schema.service.d.ts +42 -0
  122. package/lib/registry/mcp-tool-schema.service.js +229 -0
  123. package/lib/registry/mcp-tool-schema.service.js.map +1 -0
  124. package/lib/registry/registry-types.d.ts +32 -0
  125. package/lib/registry/registry-types.js +3 -0
  126. package/lib/registry/registry-types.js.map +1 -0
  127. package/lib/resolve-options.d.ts +7 -0
  128. package/lib/resolve-options.js +85 -0
  129. package/lib/resolve-options.js.map +1 -0
  130. package/lib/shared/endpoint-paths.d.ts +8 -0
  131. package/lib/shared/endpoint-paths.js +12 -0
  132. package/lib/shared/endpoint-paths.js.map +1 -0
  133. package/lib/shared/loopback.d.ts +2 -0
  134. package/lib/shared/loopback.js +9 -0
  135. package/lib/shared/loopback.js.map +1 -0
  136. package/lib/shop-session/mcp-shop-session.service.d.ts +47 -0
  137. package/lib/shop-session/mcp-shop-session.service.js +132 -0
  138. package/lib/shop-session/mcp-shop-session.service.js.map +1 -0
  139. package/lib/tasks/mcp-oauth-retention.task.d.ts +9 -0
  140. package/lib/tasks/mcp-oauth-retention.task.js +21 -0
  141. package/lib/tasks/mcp-oauth-retention.task.js.map +1 -0
  142. package/lib/tasks/mcp-tool-call-log-retention.task.d.ts +7 -0
  143. package/lib/tasks/mcp-tool-call-log-retention.task.js +22 -0
  144. package/lib/tasks/mcp-tool-call-log-retention.task.js.map +1 -0
  145. package/lib/tools/built-in/active-order.service.d.ts +26 -0
  146. package/lib/tools/built-in/active-order.service.js +125 -0
  147. package/lib/tools/built-in/active-order.service.js.map +1 -0
  148. package/lib/tools/built-in/admin/add-customer-to-group.tool.d.ts +23 -0
  149. package/lib/tools/built-in/admin/add-customer-to-group.tool.js +68 -0
  150. package/lib/tools/built-in/admin/add-customer-to-group.tool.js.map +1 -0
  151. package/lib/tools/built-in/admin/add-note-to-order.tool.d.ts +104 -0
  152. package/lib/tools/built-in/admin/add-note-to-order.tool.js +66 -0
  153. package/lib/tools/built-in/admin/add-note-to-order.tool.js.map +1 -0
  154. package/lib/tools/built-in/admin/adjust-stock.tool.d.ts +26 -0
  155. package/lib/tools/built-in/admin/adjust-stock.tool.js +88 -0
  156. package/lib/tools/built-in/admin/adjust-stock.tool.js.map +1 -0
  157. package/lib/tools/built-in/admin/cancel-order.tool.d.ts +17 -0
  158. package/lib/tools/built-in/admin/cancel-order.tool.js +60 -0
  159. package/lib/tools/built-in/admin/cancel-order.tool.js.map +1 -0
  160. package/lib/tools/built-in/admin/channel-access.d.ts +2 -0
  161. package/lib/tools/built-in/admin/channel-access.js +9 -0
  162. package/lib/tools/built-in/admin/channel-access.js.map +1 -0
  163. package/lib/tools/built-in/admin/create-customer.tool.d.ts +41 -0
  164. package/lib/tools/built-in/admin/create-customer.tool.js +57 -0
  165. package/lib/tools/built-in/admin/create-customer.tool.js.map +1 -0
  166. package/lib/tools/built-in/admin/create-fulfillment.tool.d.ts +118 -0
  167. package/lib/tools/built-in/admin/create-fulfillment.tool.js +156 -0
  168. package/lib/tools/built-in/admin/create-fulfillment.tool.js.map +1 -0
  169. package/lib/tools/built-in/admin/create-product.tool.d.ts +52 -0
  170. package/lib/tools/built-in/admin/create-product.tool.js +61 -0
  171. package/lib/tools/built-in/admin/create-product.tool.js.map +1 -0
  172. package/lib/tools/built-in/admin/create-variant.tool.d.ts +48 -0
  173. package/lib/tools/built-in/admin/create-variant.tool.js +79 -0
  174. package/lib/tools/built-in/admin/create-variant.tool.js.map +1 -0
  175. package/lib/tools/built-in/admin/entity-field-schemas.d.ts +36 -0
  176. package/lib/tools/built-in/admin/entity-field-schemas.js +63 -0
  177. package/lib/tools/built-in/admin/entity-field-schemas.js.map +1 -0
  178. package/lib/tools/built-in/admin/get-customer.tool.d.ts +28 -0
  179. package/lib/tools/built-in/admin/get-customer.tool.js +55 -0
  180. package/lib/tools/built-in/admin/get-customer.tool.js.map +1 -0
  181. package/lib/tools/built-in/admin/get-order.tool.d.ts +100 -0
  182. package/lib/tools/built-in/admin/get-order.tool.js +68 -0
  183. package/lib/tools/built-in/admin/get-order.tool.js.map +1 -0
  184. package/lib/tools/built-in/admin/get-product.tool.d.ts +69 -0
  185. package/lib/tools/built-in/admin/get-product.tool.js +77 -0
  186. package/lib/tools/built-in/admin/get-product.tool.js.map +1 -0
  187. package/lib/tools/built-in/admin/get-stock-levels.tool.d.ts +23 -0
  188. package/lib/tools/built-in/admin/get-stock-levels.tool.js +61 -0
  189. package/lib/tools/built-in/admin/get-stock-levels.tool.js.map +1 -0
  190. package/lib/tools/built-in/admin/index.d.ts +25 -0
  191. package/lib/tools/built-in/admin/index.js +54 -0
  192. package/lib/tools/built-in/admin/index.js.map +1 -0
  193. package/lib/tools/built-in/admin/list-channels.tool.d.ts +24 -0
  194. package/lib/tools/built-in/admin/list-channels.tool.js +56 -0
  195. package/lib/tools/built-in/admin/list-channels.tool.js.map +1 -0
  196. package/lib/tools/built-in/admin/list-customer-groups.tool.d.ts +23 -0
  197. package/lib/tools/built-in/admin/list-customer-groups.tool.js +52 -0
  198. package/lib/tools/built-in/admin/list-customer-groups.tool.js.map +1 -0
  199. package/lib/tools/built-in/admin/list-customers.tool.d.ts +62 -0
  200. package/lib/tools/built-in/admin/list-customers.tool.js +66 -0
  201. package/lib/tools/built-in/admin/list-customers.tool.js.map +1 -0
  202. package/lib/tools/built-in/admin/list-orders.tool.d.ts +142 -0
  203. package/lib/tools/built-in/admin/list-orders.tool.js +87 -0
  204. package/lib/tools/built-in/admin/list-orders.tool.js.map +1 -0
  205. package/lib/tools/built-in/admin/list-products.tool.d.ts +63 -0
  206. package/lib/tools/built-in/admin/list-products.tool.js +71 -0
  207. package/lib/tools/built-in/admin/list-products.tool.js.map +1 -0
  208. package/lib/tools/built-in/admin/refund-order.tool.d.ts +38 -0
  209. package/lib/tools/built-in/admin/refund-order.tool.js +115 -0
  210. package/lib/tools/built-in/admin/refund-order.tool.js.map +1 -0
  211. package/lib/tools/built-in/admin/set-active-channel.tool.d.ts +22 -0
  212. package/lib/tools/built-in/admin/set-active-channel.tool.js +84 -0
  213. package/lib/tools/built-in/admin/set-active-channel.tool.js.map +1 -0
  214. package/lib/tools/built-in/admin/translation-schemas.d.ts +12 -0
  215. package/lib/tools/built-in/admin/translation-schemas.js +17 -0
  216. package/lib/tools/built-in/admin/translation-schemas.js.map +1 -0
  217. package/lib/tools/built-in/admin/update-customer.tool.d.ts +42 -0
  218. package/lib/tools/built-in/admin/update-customer.tool.js +59 -0
  219. package/lib/tools/built-in/admin/update-customer.tool.js.map +1 -0
  220. package/lib/tools/built-in/admin/update-order-state.tool.d.ts +16 -0
  221. package/lib/tools/built-in/admin/update-order-state.tool.js +58 -0
  222. package/lib/tools/built-in/admin/update-order-state.tool.js.map +1 -0
  223. package/lib/tools/built-in/admin/update-product.tool.d.ts +53 -0
  224. package/lib/tools/built-in/admin/update-product.tool.js +68 -0
  225. package/lib/tools/built-in/admin/update-product.tool.js.map +1 -0
  226. package/lib/tools/built-in/admin/update-variant.tool.d.ts +46 -0
  227. package/lib/tools/built-in/admin/update-variant.tool.js +77 -0
  228. package/lib/tools/built-in/admin/update-variant.tool.js.map +1 -0
  229. package/lib/tools/built-in/admin/upload-asset.tool.d.ts +32 -0
  230. package/lib/tools/built-in/admin/upload-asset.tool.js +56 -0
  231. package/lib/tools/built-in/admin/upload-asset.tool.js.map +1 -0
  232. package/lib/tools/built-in/catalog-query.service.d.ts +21 -0
  233. package/lib/tools/built-in/catalog-query.service.js +128 -0
  234. package/lib/tools/built-in/catalog-query.service.js.map +1 -0
  235. package/lib/tools/built-in/custom-field-input.service.d.ts +10 -0
  236. package/lib/tools/built-in/custom-field-input.service.js +64 -0
  237. package/lib/tools/built-in/custom-field-input.service.js.map +1 -0
  238. package/lib/tools/built-in/email-schema.d.ts +2 -0
  239. package/lib/tools/built-in/email-schema.js +12 -0
  240. package/lib/tools/built-in/email-schema.js.map +1 -0
  241. package/lib/tools/built-in/id-schema.d.ts +3 -0
  242. package/lib/tools/built-in/id-schema.js +11 -0
  243. package/lib/tools/built-in/id-schema.js.map +1 -0
  244. package/lib/tools/built-in/int32-schema.d.ts +4 -0
  245. package/lib/tools/built-in/int32-schema.js +8 -0
  246. package/lib/tools/built-in/int32-schema.js.map +1 -0
  247. package/lib/tools/built-in/list-helpers.d.ts +48 -0
  248. package/lib/tools/built-in/list-helpers.js +76 -0
  249. package/lib/tools/built-in/list-helpers.js.map +1 -0
  250. package/lib/tools/built-in/order-list-helpers.d.ts +20 -0
  251. package/lib/tools/built-in/order-list-helpers.js +48 -0
  252. package/lib/tools/built-in/order-list-helpers.js.map +1 -0
  253. package/lib/tools/built-in/providers.d.ts +2 -0
  254. package/lib/tools/built-in/providers.js +7 -0
  255. package/lib/tools/built-in/providers.js.map +1 -0
  256. package/lib/tools/built-in/remote-asset.d.ts +4 -0
  257. package/lib/tools/built-in/remote-asset.js +54 -0
  258. package/lib/tools/built-in/remote-asset.js.map +1 -0
  259. package/lib/tools/built-in/serializer.service.d.ts +327 -0
  260. package/lib/tools/built-in/serializer.service.js +413 -0
  261. package/lib/tools/built-in/serializer.service.js.map +1 -0
  262. package/lib/tools/built-in/shop/add-to-cart.tool.d.ts +21 -0
  263. package/lib/tools/built-in/shop/add-to-cart.tool.js +100 -0
  264. package/lib/tools/built-in/shop/add-to-cart.tool.js.map +1 -0
  265. package/lib/tools/built-in/shop/address-schema.d.ts +15 -0
  266. package/lib/tools/built-in/shop/address-schema.js +20 -0
  267. package/lib/tools/built-in/shop/address-schema.js.map +1 -0
  268. package/lib/tools/built-in/shop/apply-coupon-code.tool.d.ts +17 -0
  269. package/lib/tools/built-in/shop/apply-coupon-code.tool.js +62 -0
  270. package/lib/tools/built-in/shop/apply-coupon-code.tool.js.map +1 -0
  271. package/lib/tools/built-in/shop/collection-lookup.d.ts +15 -0
  272. package/lib/tools/built-in/shop/collection-lookup.js +35 -0
  273. package/lib/tools/built-in/shop/collection-lookup.js.map +1 -0
  274. package/lib/tools/built-in/shop/get-cart.tool.d.ts +94 -0
  275. package/lib/tools/built-in/shop/get-cart.tool.js +55 -0
  276. package/lib/tools/built-in/shop/get-cart.tool.js.map +1 -0
  277. package/lib/tools/built-in/shop/get-collection.tool.d.ts +42 -0
  278. package/lib/tools/built-in/shop/get-collection.tool.js +64 -0
  279. package/lib/tools/built-in/shop/get-collection.tool.js.map +1 -0
  280. package/lib/tools/built-in/shop/get-eligible-payment-methods.tool.d.ts +26 -0
  281. package/lib/tools/built-in/shop/get-eligible-payment-methods.tool.js +58 -0
  282. package/lib/tools/built-in/shop/get-eligible-payment-methods.tool.js.map +1 -0
  283. package/lib/tools/built-in/shop/get-eligible-shipping-methods.tool.d.ts +30 -0
  284. package/lib/tools/built-in/shop/get-eligible-shipping-methods.tool.js +59 -0
  285. package/lib/tools/built-in/shop/get-eligible-shipping-methods.tool.js.map +1 -0
  286. package/lib/tools/built-in/shop/get-my-account.tool.d.ts +22 -0
  287. package/lib/tools/built-in/shop/get-my-account.tool.js +57 -0
  288. package/lib/tools/built-in/shop/get-my-account.tool.js.map +1 -0
  289. package/lib/tools/built-in/shop/get-order.tool.d.ts +100 -0
  290. package/lib/tools/built-in/shop/get-order.tool.js +67 -0
  291. package/lib/tools/built-in/shop/get-order.tool.js.map +1 -0
  292. package/lib/tools/built-in/shop/get-product.tool.d.ts +57 -0
  293. package/lib/tools/built-in/shop/get-product.tool.js +81 -0
  294. package/lib/tools/built-in/shop/get-product.tool.js.map +1 -0
  295. package/lib/tools/built-in/shop/index.d.ts +19 -0
  296. package/lib/tools/built-in/shop/index.js +42 -0
  297. package/lib/tools/built-in/shop/index.js.map +1 -0
  298. package/lib/tools/built-in/shop/list-collections.tool.d.ts +42 -0
  299. package/lib/tools/built-in/shop/list-collections.tool.js +75 -0
  300. package/lib/tools/built-in/shop/list-collections.tool.js.map +1 -0
  301. package/lib/tools/built-in/shop/list-my-orders.tool.d.ts +100 -0
  302. package/lib/tools/built-in/shop/list-my-orders.tool.js +63 -0
  303. package/lib/tools/built-in/shop/list-my-orders.tool.js.map +1 -0
  304. package/lib/tools/built-in/shop/place-order.tool.d.ts +188 -0
  305. package/lib/tools/built-in/shop/place-order.tool.js +152 -0
  306. package/lib/tools/built-in/shop/place-order.tool.js.map +1 -0
  307. package/lib/tools/built-in/shop/product-search-query.d.ts +4 -0
  308. package/lib/tools/built-in/shop/product-search-query.js +34 -0
  309. package/lib/tools/built-in/shop/product-search-query.js.map +1 -0
  310. package/lib/tools/built-in/shop/remove-coupon-code.tool.d.ts +17 -0
  311. package/lib/tools/built-in/shop/remove-coupon-code.tool.js +63 -0
  312. package/lib/tools/built-in/shop/remove-coupon-code.tool.js.map +1 -0
  313. package/lib/tools/built-in/shop/remove-from-cart.tool.d.ts +17 -0
  314. package/lib/tools/built-in/shop/remove-from-cart.tool.js +58 -0
  315. package/lib/tools/built-in/shop/remove-from-cart.tool.js.map +1 -0
  316. package/lib/tools/built-in/shop/search-products.tool.d.ts +48 -0
  317. package/lib/tools/built-in/shop/search-products.tool.js +95 -0
  318. package/lib/tools/built-in/shop/search-products.tool.js.map +1 -0
  319. package/lib/tools/built-in/shop/set-checkout-details.tool.d.ts +56 -0
  320. package/lib/tools/built-in/shop/set-checkout-details.tool.js +187 -0
  321. package/lib/tools/built-in/shop/set-checkout-details.tool.js.map +1 -0
  322. package/lib/tools/built-in/shop/set-shipping-method.tool.d.ts +17 -0
  323. package/lib/tools/built-in/shop/set-shipping-method.tool.js +58 -0
  324. package/lib/tools/built-in/shop/set-shipping-method.tool.js.map +1 -0
  325. package/lib/tools/built-in/shop/update-cart-line.tool.d.ts +18 -0
  326. package/lib/tools/built-in/shop/update-cart-line.tool.js +60 -0
  327. package/lib/tools/built-in/shop/update-cart-line.tool.js.map +1 -0
  328. package/lib/tools/built-in/string-schemas.d.ts +4 -0
  329. package/lib/tools/built-in/string-schemas.js +13 -0
  330. package/lib/tools/built-in/string-schemas.js.map +1 -0
  331. package/lib/transport/mcp-server.factory.d.ts +13 -0
  332. package/lib/transport/mcp-server.factory.js +32 -0
  333. package/lib/transport/mcp-server.factory.js.map +1 -0
  334. package/lib/transport/mcp-transport.controller.d.ts +77 -0
  335. package/lib/transport/mcp-transport.controller.js +442 -0
  336. package/lib/transport/mcp-transport.controller.js.map +1 -0
  337. package/lib/types.d.ts +432 -0
  338. package/lib/types.js +3 -0
  339. package/lib/types.js.map +1 -0
  340. package/package.json +42 -0
  341. package/src/dashboard/components/activity-block.tsx +72 -0
  342. package/src/dashboard/components/actor-cell.tsx +31 -0
  343. package/src/dashboard/components/connection-dialog.tsx +106 -0
  344. package/src/dashboard/components/empty-cell.tsx +7 -0
  345. package/src/dashboard/components/grants-block.tsx +218 -0
  346. package/src/dashboard/components/stats-block.tsx +275 -0
  347. package/src/dashboard/components/tools-block.tsx +274 -0
  348. package/src/dashboard/components/tooltip-button.tsx +28 -0
  349. package/src/dashboard/components/use-mcp-table-state.ts +47 -0
  350. package/src/dashboard/i18n/ar.po +311 -0
  351. package/src/dashboard/i18n/bg.po +311 -0
  352. package/src/dashboard/i18n/cs.po +311 -0
  353. package/src/dashboard/i18n/de.po +311 -0
  354. package/src/dashboard/i18n/en.po +311 -0
  355. package/src/dashboard/i18n/es.po +311 -0
  356. package/src/dashboard/i18n/fa.po +311 -0
  357. package/src/dashboard/i18n/fr.po +311 -0
  358. package/src/dashboard/i18n/he.po +311 -0
  359. package/src/dashboard/i18n/hr.po +311 -0
  360. package/src/dashboard/i18n/hu.po +311 -0
  361. package/src/dashboard/i18n/it.po +311 -0
  362. package/src/dashboard/i18n/ja.po +311 -0
  363. package/src/dashboard/i18n/ko.po +311 -0
  364. package/src/dashboard/i18n/nb.po +311 -0
  365. package/src/dashboard/i18n/ne.po +311 -0
  366. package/src/dashboard/i18n/nl.po +311 -0
  367. package/src/dashboard/i18n/pl.po +311 -0
  368. package/src/dashboard/i18n/pt_BR.po +311 -0
  369. package/src/dashboard/i18n/pt_PT.po +311 -0
  370. package/src/dashboard/i18n/ro.po +311 -0
  371. package/src/dashboard/i18n/ru.po +311 -0
  372. package/src/dashboard/i18n/sv.po +311 -0
  373. package/src/dashboard/i18n/tr.po +311 -0
  374. package/src/dashboard/i18n/uk.po +311 -0
  375. package/src/dashboard/i18n/uz.po +311 -0
  376. package/src/dashboard/i18n/zh_Hans.po +311 -0
  377. package/src/dashboard/i18n/zh_Hant.po +311 -0
  378. package/src/dashboard/index.tsx +30 -0
  379. package/src/dashboard/mcp-activity-route.tsx +38 -0
  380. package/src/dashboard/mcp-authorize-route.tsx +369 -0
  381. package/src/dashboard/mcp-grants-route.tsx +38 -0
  382. package/src/dashboard/mcp-overview-route.tsx +46 -0
  383. package/src/dashboard/mcp-server-redirect-route.tsx +15 -0
  384. package/src/dashboard/mcp-tools-route.tsx +38 -0
  385. package/src/dashboard/mcp.graphql.ts +127 -0
  386. package/src/dashboard/published-files.spec.ts +54 -0
  387. package/src/dashboard/tsconfig.json +9 -0
  388. package/src/shared/endpoint-paths.ts +8 -0
  389. package/src/shared/loopback.ts +6 -0
@@ -0,0 +1,142 @@
1
+ import { OrderService, RequestContext, TranslatorService } from '@vendure/core';
2
+ import { McpToolHandler } from '@vendure/mcp-sdk';
3
+ import { z } from 'zod';
4
+ import { McpToolSerializerService } from '../serializer.service';
5
+ declare const listOrdersInput: z.ZodObject<{
6
+ filter: z.ZodOptional<z.ZodObject<{
7
+ code: z.ZodOptional<z.ZodObject<{
8
+ eq: z.ZodOptional<z.ZodString>;
9
+ contains: z.ZodOptional<z.ZodString>;
10
+ in: z.ZodOptional<z.ZodArray<z.ZodString>>;
11
+ }, z.core.$strict>>;
12
+ state: z.ZodOptional<z.ZodObject<{
13
+ eq: z.ZodOptional<z.ZodString>;
14
+ contains: z.ZodOptional<z.ZodString>;
15
+ in: z.ZodOptional<z.ZodArray<z.ZodString>>;
16
+ }, z.core.$strict>>;
17
+ active: z.ZodOptional<z.ZodObject<{
18
+ eq: z.ZodOptional<z.ZodBoolean>;
19
+ }, z.core.$strict>>;
20
+ customerLastName: z.ZodOptional<z.ZodObject<{
21
+ eq: z.ZodOptional<z.ZodString>;
22
+ contains: z.ZodOptional<z.ZodString>;
23
+ in: z.ZodOptional<z.ZodArray<z.ZodString>>;
24
+ }, z.core.$strict>>;
25
+ orderPlacedAt: z.ZodOptional<z.ZodObject<{
26
+ before: z.ZodOptional<z.ZodPipe<z.ZodISODateTime, z.ZodTransform<Date, string>>>;
27
+ after: z.ZodOptional<z.ZodPipe<z.ZodISODateTime, z.ZodTransform<Date, string>>>;
28
+ }, z.core.$strict>>;
29
+ updatedAt: z.ZodOptional<z.ZodObject<{
30
+ before: z.ZodOptional<z.ZodPipe<z.ZodISODateTime, z.ZodTransform<Date, string>>>;
31
+ after: z.ZodOptional<z.ZodPipe<z.ZodISODateTime, z.ZodTransform<Date, string>>>;
32
+ }, z.core.$strict>>;
33
+ totalWithTax: z.ZodOptional<z.ZodObject<{
34
+ eq: z.ZodOptional<z.ZodNumber>;
35
+ gte: z.ZodOptional<z.ZodNumber>;
36
+ lte: z.ZodOptional<z.ZodNumber>;
37
+ }, z.core.$strict>>;
38
+ }, z.core.$strict>>;
39
+ sortBy: z.ZodOptional<z.ZodEnum<{
40
+ createdAt: "createdAt";
41
+ updatedAt: "updatedAt";
42
+ orderPlacedAt: "orderPlacedAt";
43
+ total: "total";
44
+ }>>;
45
+ sortDirection: z.ZodOptional<z.ZodEnum<{
46
+ ASC: "ASC";
47
+ DESC: "DESC";
48
+ }>>;
49
+ limit: z.ZodOptional<z.ZodNumber>;
50
+ offset: z.ZodOptional<z.ZodNumber>;
51
+ }, z.core.$strict>;
52
+ type ListOrdersInput = z.infer<typeof listOrdersInput>;
53
+ export declare class ListOrdersTool implements McpToolHandler<ListOrdersInput> {
54
+ private readonly orderService;
55
+ private readonly translator;
56
+ private readonly serializer;
57
+ constructor(orderService: OrderService, translator: TranslatorService, serializer: McpToolSerializerService);
58
+ execute(ctx: RequestContext, input: ListOrdersInput): Promise<{
59
+ items: ({
60
+ id: import("@vendure/core").ID;
61
+ code: string;
62
+ state: import("@vendure/core").OrderState;
63
+ active: boolean;
64
+ total: number;
65
+ totalDecimal: string;
66
+ totalWithTax: number;
67
+ totalWithTaxDecimal: string;
68
+ currencyCode: import("@vendure/core").CurrencyCode;
69
+ totalQuantity: number;
70
+ createdAt: string | null;
71
+ updatedAt: string | null;
72
+ orderPlacedAt: string | null;
73
+ couponCodes: string[];
74
+ discounts: {
75
+ adjustmentSource: string;
76
+ type: import("@vendure/core").AdjustmentType;
77
+ description: string;
78
+ amount: number;
79
+ amountDecimal: string;
80
+ amountWithTax: number;
81
+ amountWithTaxDecimal: string;
82
+ }[];
83
+ lines: {
84
+ id: import("@vendure/core").ID;
85
+ quantity: number;
86
+ linePriceWithTax: number;
87
+ linePriceWithTaxDecimal: string;
88
+ productVariant: {
89
+ id: import("@vendure/core").ID;
90
+ name: import("@vendure/core").LocaleString;
91
+ sku: string;
92
+ } | null;
93
+ }[];
94
+ payments: {
95
+ id: import("@vendure/core").ID;
96
+ method: string;
97
+ amount: number;
98
+ amountDecimal: string;
99
+ state: import("@vendure/core").PaymentState;
100
+ transactionId: string;
101
+ errorMessage: string | undefined;
102
+ publicMetadata: any;
103
+ refunds: {
104
+ id: import("@vendure/core").ID;
105
+ state: import("@vendure/core").RefundState;
106
+ total: number;
107
+ totalDecimal: string;
108
+ reason: string;
109
+ }[];
110
+ }[] | undefined;
111
+ fulfillments: {
112
+ id: import("@vendure/core").ID;
113
+ state: import("@vendure/core").FulfillmentState;
114
+ method: string;
115
+ trackingCode: string;
116
+ lines: {
117
+ orderLineId: import("@vendure/core").ID;
118
+ quantity: number;
119
+ }[];
120
+ }[] | undefined;
121
+ customer: {
122
+ id: import("@vendure/core").ID;
123
+ emailAddress: string;
124
+ firstName: string;
125
+ lastName: string;
126
+ } | null | undefined;
127
+ shippingAddress: Record<string, string> | null;
128
+ billingAddress: Record<string, string> | null;
129
+ shippingWithTax: number;
130
+ shippingWithTaxDecimal: string;
131
+ shippingLines: {
132
+ id: import("@vendure/core").ID;
133
+ shippingMethodId: import("@vendure/core").ID | null;
134
+ priceWithTax: number;
135
+ priceWithTaxDecimal: string;
136
+ }[] | undefined;
137
+ } | null)[];
138
+ total: number;
139
+ hasMore: boolean;
140
+ }>;
141
+ }
142
+ export {};
@@ -0,0 +1,87 @@
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.ListOrdersTool = 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 list_helpers_1 = require("../list-helpers");
18
+ const order_list_helpers_1 = require("../order-list-helpers");
19
+ const serializer_service_1 = require("../serializer.service");
20
+ const listOrdersInput = zod_1.z.strictObject(Object.assign(Object.assign({}, (0, list_helpers_1.paginationFields)('orders')), { filter: zod_1.z
21
+ .strictObject({
22
+ code: list_helpers_1.stringFilter.optional(),
23
+ state: list_helpers_1.stringFilter
24
+ .describe('Order state, for example PaymentSettled or ArrangingPayment.')
25
+ .optional(),
26
+ active: list_helpers_1.booleanFilter
27
+ .describe('true for open carts, false for placed or cancelled orders.')
28
+ .optional(),
29
+ customerLastName: list_helpers_1.stringFilter.optional(),
30
+ orderPlacedAt: list_helpers_1.dateFilter.optional(),
31
+ updatedAt: list_helpers_1.dateFilter.optional(),
32
+ totalWithTax: list_helpers_1.numberFilter
33
+ .describe("Whole number in the currency's smallest unit, like every price these tools return.")
34
+ .optional(),
35
+ })
36
+ .describe('Conditions an order must meet; all of them apply together. Example: ' +
37
+ '{"state":{"eq":"ArrangingPayment"},"updatedAt":{"before":"2026-08-25T12:00:00Z"}} ' +
38
+ 'finds orders stuck at payment since before noon.')
39
+ .optional(), sortBy: zod_1.z
40
+ .enum(order_list_helpers_1.ORDER_SORT_FIELDS)
41
+ .describe('Field to sort by. Defaults to updatedAt, most recently changed first. Open carts have ' +
42
+ 'no orderPlacedAt, so when sorting by it filter active: false to see placed orders only.')
43
+ .optional(), sortDirection: order_list_helpers_1.sortDirection.describe('Sort direction. Defaults to DESC.').optional() }));
44
+ let ListOrdersTool = class ListOrdersTool {
45
+ constructor(orderService, translator, serializer) {
46
+ this.orderService = orderService;
47
+ this.translator = translator;
48
+ this.serializer = serializer;
49
+ }
50
+ async execute(ctx, input) {
51
+ var _a;
52
+ const options = (0, order_list_helpers_1.orderListOptions)(input, 'updatedAt');
53
+ if (((_a = input.filter) === null || _a === void 0 ? void 0 : _a.active) === undefined) {
54
+ options.filter = Object.assign(Object.assign({}, options.filter), { active: { eq: false } });
55
+ }
56
+ const result = await this.orderService.findAll(ctx, options, order_list_helpers_1.ORDER_LIST_RELATIONS);
57
+ (0, order_list_helpers_1.translateLineVariants)(result.items, this.translator, ctx);
58
+ return (0, list_helpers_1.page)(result.items.map(order => this.serializer.order(order)), result.totalItems, input);
59
+ }
60
+ };
61
+ exports.ListOrdersTool = ListOrdersTool;
62
+ exports.ListOrdersTool = ListOrdersTool = __decorate([
63
+ (0, mcp_sdk_1.McpTool)({
64
+ name: 'list_orders',
65
+ toolset: 'admin',
66
+ description: 'List and filter orders for operations users, most recently updated first by default. ' +
67
+ 'Unplaced carts are excluded unless you pass filter.active.',
68
+ keywords: [
69
+ 'show all orders',
70
+ 'recent orders in the store',
71
+ 'browse the order queue',
72
+ 'every order placed',
73
+ 'orders dashboard for staff',
74
+ 'pull the full order list',
75
+ 'orders in a given state',
76
+ 'find orders by customer last name',
77
+ ],
78
+ permissions: [core_1.Permission.ReadOrder],
79
+ behavior: 'readonly',
80
+ inputSchema: listOrdersInput,
81
+ }),
82
+ (0, common_1.Injectable)(),
83
+ __metadata("design:paramtypes", [core_1.OrderService,
84
+ core_1.TranslatorService,
85
+ serializer_service_1.McpToolSerializerService])
86
+ ], ListOrdersTool);
87
+ //# sourceMappingURL=list-orders.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-orders.tool.js","sourceRoot":"","sources":["../../../../src/tools/built-in/admin/list-orders.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { ProductService, RequestContext } from '@vendure/core';
2
+ import { McpToolHandler } from '@vendure/mcp-sdk';
3
+ import { z } from 'zod';
4
+ import { McpCatalogQueryService } from '../catalog-query.service';
5
+ import { McpToolSerializerService } from '../serializer.service';
6
+ declare const listProductsInput: z.ZodObject<{
7
+ filter: z.ZodOptional<z.ZodObject<{
8
+ name: z.ZodOptional<z.ZodObject<{
9
+ eq: z.ZodOptional<z.ZodString>;
10
+ contains: z.ZodOptional<z.ZodString>;
11
+ in: z.ZodOptional<z.ZodArray<z.ZodString>>;
12
+ }, z.core.$strict>>;
13
+ slug: z.ZodOptional<z.ZodObject<{
14
+ eq: z.ZodOptional<z.ZodString>;
15
+ contains: z.ZodOptional<z.ZodString>;
16
+ in: z.ZodOptional<z.ZodArray<z.ZodString>>;
17
+ }, z.core.$strict>>;
18
+ sku: z.ZodOptional<z.ZodObject<{
19
+ eq: z.ZodOptional<z.ZodString>;
20
+ contains: z.ZodOptional<z.ZodString>;
21
+ in: z.ZodOptional<z.ZodArray<z.ZodString>>;
22
+ }, z.core.$strict>>;
23
+ enabled: z.ZodOptional<z.ZodObject<{
24
+ eq: z.ZodOptional<z.ZodBoolean>;
25
+ }, z.core.$strict>>;
26
+ updatedAt: z.ZodOptional<z.ZodObject<{
27
+ before: z.ZodOptional<z.ZodPipe<z.ZodISODateTime, z.ZodTransform<Date, string>>>;
28
+ after: z.ZodOptional<z.ZodPipe<z.ZodISODateTime, z.ZodTransform<Date, string>>>;
29
+ }, z.core.$strict>>;
30
+ }, z.core.$strict>>;
31
+ limit: z.ZodOptional<z.ZodNumber>;
32
+ offset: z.ZodOptional<z.ZodNumber>;
33
+ }, z.core.$strict>;
34
+ type ListProductsInput = z.infer<typeof listProductsInput>;
35
+ export declare class ListProductsTool implements McpToolHandler<ListProductsInput> {
36
+ private readonly productService;
37
+ private readonly catalog;
38
+ private readonly serializer;
39
+ constructor(productService: ProductService, catalog: McpCatalogQueryService, serializer: McpToolSerializerService);
40
+ execute(ctx: RequestContext, input: ListProductsInput): Promise<{
41
+ items: {
42
+ id: import("@vendure/core").ID;
43
+ name: import("@vendure/core").LocaleString;
44
+ slug: import("@vendure/core").LocaleString;
45
+ description: string;
46
+ enabled: boolean;
47
+ featuredAsset: {
48
+ id: import("@vendure/core").ID;
49
+ preview: string;
50
+ } | null;
51
+ priceRange: {
52
+ min: number;
53
+ minDecimal: string;
54
+ max: number;
55
+ maxDecimal: string;
56
+ currencyCode: import("@vendure/core").CurrencyCode;
57
+ } | null;
58
+ }[];
59
+ total: number;
60
+ hasMore: boolean;
61
+ }>;
62
+ }
63
+ export {};
@@ -0,0 +1,71 @@
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.ListProductsTool = 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 catalog_query_service_1 = require("../catalog-query.service");
18
+ const list_helpers_1 = require("../list-helpers");
19
+ const serializer_service_1 = require("../serializer.service");
20
+ const listProductsInput = zod_1.z.strictObject(Object.assign(Object.assign({}, (0, list_helpers_1.paginationFields)('products')), { filter: zod_1.z
21
+ .strictObject({
22
+ name: list_helpers_1.stringFilter.optional(),
23
+ slug: list_helpers_1.stringFilter.optional(),
24
+ sku: list_helpers_1.stringFilter
25
+ .describe("Matches any of the product's variant SKUs. The result lists products, not " +
26
+ 'variants, so it does not show which variant matched.')
27
+ .optional(),
28
+ enabled: list_helpers_1.booleanFilter.optional(),
29
+ updatedAt: list_helpers_1.dateFilter.optional(),
30
+ })
31
+ .describe('Conditions a product must meet; all of them apply together. Example: ' +
32
+ '{"sku":{"contains":"L2201"}} finds the product a variant SKU belongs to.')
33
+ .optional() }));
34
+ let ListProductsTool = class ListProductsTool {
35
+ constructor(productService, catalog, serializer) {
36
+ this.productService = productService;
37
+ this.catalog = catalog;
38
+ this.serializer = serializer;
39
+ }
40
+ async execute(ctx, input) {
41
+ const result = await this.productService.findAll(ctx, (0, list_helpers_1.listOptions)(input), ['featuredAsset']);
42
+ // Staff see the whole catalog, so the price range counts disabled variants too.
43
+ const variantsByProduct = await this.catalog.variantsByProductId(ctx, result.items.map(product => product.id), { includeDisabled: true });
44
+ return (0, list_helpers_1.page)(result.items.map(product => { var _a; return this.serializer.productListItem(product, (_a = variantsByProduct.get(String(product.id))) !== null && _a !== void 0 ? _a : []); }), result.totalItems, input);
45
+ }
46
+ };
47
+ exports.ListProductsTool = ListProductsTool;
48
+ exports.ListProductsTool = ListProductsTool = __decorate([
49
+ (0, mcp_sdk_1.McpTool)({
50
+ name: 'list_products',
51
+ toolset: 'admin',
52
+ description: "List and filter catalog products. Use get_product for a product's variant IDs.",
53
+ keywords: [
54
+ 'show the whole catalog',
55
+ 'list every product',
56
+ 'browse all items we sell',
57
+ 'full product list',
58
+ 'see the inventory of products',
59
+ 'catalog listing for staff',
60
+ 'find product by sku',
61
+ ],
62
+ permissions: [core_1.Permission.ReadProduct],
63
+ behavior: 'readonly',
64
+ inputSchema: listProductsInput,
65
+ }),
66
+ (0, common_1.Injectable)(),
67
+ __metadata("design:paramtypes", [core_1.ProductService,
68
+ catalog_query_service_1.McpCatalogQueryService,
69
+ serializer_service_1.McpToolSerializerService])
70
+ ], ListProductsTool);
71
+ //# sourceMappingURL=list-products.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-products.tool.js","sourceRoot":"","sources":["../../../../src/tools/built-in/admin/list-products.tool.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,wCAAoF;AACpF,8CAA2D;AAC3D,6BAAwB;AAExB,oEAAkE;AAClE,kDAOyB;AACzB,8DAAiE;AAEjE,MAAM,iBAAiB,GAAG,OAAC,CAAC,YAAY,iCACjC,IAAA,+BAAgB,EAAC,UAAU,CAAC,KAC/B,MAAM,EAAE,OAAC;SACJ,YAAY,CAAC;QACV,IAAI,EAAE,2BAAY,CAAC,QAAQ,EAAE;QAC7B,IAAI,EAAE,2BAAY,CAAC,QAAQ,EAAE;QAC7B,GAAG,EAAE,2BAAY;aACZ,QAAQ,CACL,4EAA4E;YACxE,sDAAsD,CAC7D;aACA,QAAQ,EAAE;QACf,OAAO,EAAE,4BAAa,CAAC,QAAQ,EAAE;QACjC,SAAS,EAAE,yBAAU,CAAC,QAAQ,EAAE;KACnC,CAAC;SACD,QAAQ,CACL,uEAAuE;QACnE,0EAA0E,CACjF;SACA,QAAQ,EAAE,IACjB,CAAC;AAsBI,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACzB,YACqB,cAA8B,EAC9B,OAA+B,EAC/B,UAAoC;QAFpC,mBAAc,GAAd,cAAc,CAAgB;QAC9B,YAAO,GAAP,OAAO,CAAwB;QAC/B,eAAU,GAAV,UAAU,CAA0B;IACtD,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,GAAmB,EAAE,KAAwB;QACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,IAAA,0BAAW,EAAU,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;QACtG,gFAAgF;QAChF,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAC5D,GAAG,EACH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EACvC,EAAE,eAAe,EAAE,IAAI,EAAE,CAC5B,CAAC;QACF,OAAO,IAAA,mBAAI,EACP,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,WACvB,OAAA,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,EAAE,MAAA,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,mCAAI,EAAE,CAAC,CAAA,EAAA,CAC5F,EACD,MAAM,CAAC,UAAU,EACjB,KAAK,CACR,CAAC;IACN,CAAC;CACJ,CAAA;AAvBY,4CAAgB;2BAAhB,gBAAgB;IAlB5B,IAAA,iBAAO,EAAC;QACL,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,gFAAgF;QAC7F,QAAQ,EAAE;YACN,wBAAwB;YACxB,oBAAoB;YACpB,0BAA0B;YAC1B,mBAAmB;YACnB,+BAA+B;YAC/B,2BAA2B;YAC3B,qBAAqB;SACxB;QACD,WAAW,EAAE,CAAC,iBAAU,CAAC,WAAW,CAAC;QACrC,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,iBAAiB;KACjC,CAAC;IACD,IAAA,mBAAU,GAAE;qCAG4B,qBAAc;QACrB,8CAAsB;QACnB,6CAAwB;GAJhD,gBAAgB,CAuB5B"}
@@ -0,0 +1,38 @@
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 refundOrderInput: z.ZodObject<{
6
+ id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
7
+ amount: z.ZodOptional<z.ZodNumber>;
8
+ reason: z.ZodOptional<z.ZodString>;
9
+ paymentId: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
10
+ }, z.core.$strict>;
11
+ type RefundOrderToolInput = z.infer<typeof refundOrderInput>;
12
+ export declare class RefundOrderTool implements McpToolHandler<RefundOrderToolInput> {
13
+ private readonly orderService;
14
+ private readonly serializer;
15
+ constructor(orderService: OrderService, serializer: McpToolSerializerService);
16
+ execute(ctx: RequestContext, input: RefundOrderToolInput): Promise<import("@vendure/common/lib/generated-types").MultipleOrderError | import("@vendure/common/lib/generated-types").OrderStateTransitionError | import("@vendure/common/lib/generated-types").QuantityTooGreatError | import("@vendure/common/lib/generated-types").AlreadyRefundedError | import("@vendure/common/lib/generated-types").NothingToRefundError | import("@vendure/common/lib/generated-types").PaymentOrderMismatchError | import("@vendure/common/lib/generated-types").RefundAmountError | import("@vendure/common/lib/generated-types").RefundDestinationError | import("@vendure/common/lib/generated-types").RefundIncompleteError | import("@vendure/common/lib/generated-types").RefundOrderStateError | import("@vendure/common/lib/generated-types").RefundStateTransitionError | {
17
+ __typename: string;
18
+ errorCode: string;
19
+ message: string;
20
+ refund?: undefined;
21
+ } | {
22
+ refund: {
23
+ id: import("@vendure/core").ID;
24
+ state: import("@vendure/core").RefundState;
25
+ total: number;
26
+ totalDecimal: string;
27
+ currencyCode: import("@vendure/core").CurrencyCode;
28
+ reason: string;
29
+ paymentId: import("@vendure/core").ID;
30
+ };
31
+ __typename?: undefined;
32
+ errorCode?: undefined;
33
+ message?: undefined;
34
+ }>;
35
+ /** Why no payment was picked: the first Settled payment is already refunded, or there is none. */
36
+ private nothingToRefundMessage;
37
+ }
38
+ export {};
@@ -0,0 +1,115 @@
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.RefundOrderTool = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const shared_utils_1 = require("@vendure/common/lib/shared-utils");
15
+ const core_1 = require("@vendure/core");
16
+ const mcp_sdk_1 = require("@vendure/mcp-sdk");
17
+ const zod_1 = require("zod");
18
+ const id_schema_1 = require("../id-schema");
19
+ const int32_schema_1 = require("../int32-schema");
20
+ const order_list_helpers_1 = require("../order-list-helpers");
21
+ const serializer_service_1 = require("../serializer.service");
22
+ const string_schemas_1 = require("../string-schemas");
23
+ const refundOrderInput = zod_1.z.strictObject({
24
+ id: id_schema_1.idSchema.describe('Order ID.'),
25
+ amount: int32_schema_1.int32Schema
26
+ .min(1)
27
+ .describe('Amount to refund as a whole number of minor units. Defaults to the selected ' +
28
+ "payment's remaining refundable amount.")
29
+ .optional(),
30
+ reason: string_schemas_1.shortText.describe('Reason for the refund.').optional(),
31
+ paymentId: id_schema_1.idSchema
32
+ .describe("Payment to refund; must belong to this order. Defaults to the order's first Settled payment that still has a refundable amount.")
33
+ .optional(),
34
+ });
35
+ /** The refunds that count against a payment: a Failed refund returned no money. */
36
+ function countedRefunds(payment) {
37
+ var _a, _b;
38
+ return (_b = (_a = payment.refunds) === null || _a === void 0 ? void 0 : _a.filter(refund => refund.state !== 'Failed')) !== null && _b !== void 0 ? _b : [];
39
+ }
40
+ function getRefundableAmount(payment) {
41
+ return payment.amount - (0, shared_utils_1.summate)(countedRefunds(payment), 'total');
42
+ }
43
+ let RefundOrderTool = class RefundOrderTool {
44
+ constructor(orderService, serializer) {
45
+ this.orderService = orderService;
46
+ this.serializer = serializer;
47
+ }
48
+ async execute(ctx, input) {
49
+ var _a;
50
+ const order = await (0, order_list_helpers_1.findOrderOrThrow)(this.orderService, ctx, input.id, [
51
+ 'payments',
52
+ 'payments.refunds',
53
+ ]);
54
+ const payment = input.paymentId
55
+ ? order.payments.find(p => (0, core_1.idsAreEqual)(p.id, input.paymentId))
56
+ : order.payments.find(p => p.state === 'Settled' && getRefundableAmount(p) > 0);
57
+ if (!payment) {
58
+ // A bare Vendure error result: the registry reports it as a failed call.
59
+ return {
60
+ __typename: 'RefundPaymentIdMissingError',
61
+ errorCode: 'REFUND_PAYMENT_ID_MISSING_ERROR',
62
+ message: input.paymentId
63
+ ? 'The requested payment was not found on this order.'
64
+ : this.nothingToRefundMessage(order),
65
+ };
66
+ }
67
+ const refund = await this.orderService.refundOrder(ctx, {
68
+ paymentId: payment.id,
69
+ amount: (_a = input.amount) !== null && _a !== void 0 ? _a : getRefundableAmount(payment),
70
+ reason: input.reason,
71
+ shipping: 0,
72
+ adjustment: 0,
73
+ });
74
+ return (0, core_1.isGraphQlErrorResult)(refund)
75
+ ? refund
76
+ : { refund: this.serializer.refund(refund, order.currencyCode) };
77
+ }
78
+ /** Why no payment was picked: the first Settled payment is already refunded, or there is none. */
79
+ nothingToRefundMessage(order) {
80
+ const settled = order.payments.find(p => p.state === 'Settled');
81
+ if (!settled) {
82
+ return `Order ${order.code} has no Settled payment to refund.`;
83
+ }
84
+ const refunds = countedRefunds(settled);
85
+ const refunded = this.serializer.decimal((0, shared_utils_1.summate)(refunds, 'total'));
86
+ const states = refunds.map(refund => refund.state).join(', ');
87
+ return (`Payment ${String(settled.id)} has no refundable amount left: ${refunded} of ` +
88
+ `${this.serializer.decimal(settled.amount)} already refunded (${states}).`);
89
+ }
90
+ };
91
+ exports.RefundOrderTool = RefundOrderTool;
92
+ exports.RefundOrderTool = RefundOrderTool = __decorate([
93
+ (0, mcp_sdk_1.McpTool)({
94
+ name: 'refund_order',
95
+ toolset: 'admin',
96
+ description: "Refund part or all of an order's payment. With amount, refunds that amount; without it, refunds " +
97
+ 'the remaining refundable amount of the first Settled payment. Pass paymentId to pick a payment ' +
98
+ 'when the order has several.',
99
+ keywords: [
100
+ 'give the customer their money back',
101
+ 'issue a refund',
102
+ 'return the payment',
103
+ 'reimburse a buyer',
104
+ 'pay back an order',
105
+ 'process a refund',
106
+ ],
107
+ permissions: [core_1.Permission.UpdateOrder],
108
+ behavior: 'destructive',
109
+ inputSchema: refundOrderInput,
110
+ }),
111
+ (0, common_1.Injectable)(),
112
+ __metadata("design:paramtypes", [core_1.OrderService,
113
+ serializer_service_1.McpToolSerializerService])
114
+ ], RefundOrderTool);
115
+ //# sourceMappingURL=refund-order.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refund-order.tool.js","sourceRoot":"","sources":["../../../../src/tools/built-in/admin/refund-order.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { ChannelService, RequestContext, TransactionalConnection } from '@vendure/core';
2
+ import { McpCallerInfo, McpToolHandler } from '@vendure/mcp-sdk';
3
+ import { z } from 'zod';
4
+ import { McpToolSerializerService } from '../serializer.service';
5
+ declare const setActiveChannelInput: z.ZodObject<{
6
+ channelToken: z.ZodString;
7
+ }, z.core.$strict>;
8
+ type SetActiveChannelInput = z.infer<typeof setActiveChannelInput>;
9
+ export declare class SetActiveChannelTool implements McpToolHandler<SetActiveChannelInput> {
10
+ private readonly channelService;
11
+ private readonly connection;
12
+ private readonly serializer;
13
+ constructor(channelService: ChannelService, connection: TransactionalConnection, serializer: McpToolSerializerService);
14
+ execute(ctx: RequestContext, input: SetActiveChannelInput, caller?: McpCallerInfo): Promise<{
15
+ channel: {
16
+ id: import("@vendure/core").ID;
17
+ code: string;
18
+ token: string;
19
+ };
20
+ }>;
21
+ }
22
+ export {};
@@ -0,0 +1,84 @@
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.SetActiveChannelTool = 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 mcp_oauth_grant_entity_1 = require("../../../entities/mcp-oauth-grant.entity");
18
+ const serializer_service_1 = require("../serializer.service");
19
+ const string_schemas_1 = require("../string-schemas");
20
+ const channel_access_1 = require("./channel-access");
21
+ const setActiveChannelInput = zod_1.z.strictObject({
22
+ channelToken: string_schemas_1.shortText.describe('Channel token of the channel to activate.'),
23
+ });
24
+ let SetActiveChannelTool = class SetActiveChannelTool {
25
+ constructor(channelService, connection, serializer) {
26
+ this.channelService = channelService;
27
+ this.connection = connection;
28
+ this.serializer = serializer;
29
+ }
30
+ async execute(ctx, input, caller) {
31
+ let channel;
32
+ try {
33
+ channel = await this.channelService.getChannelFromToken(ctx, input.channelToken);
34
+ }
35
+ catch (e) {
36
+ if (!(e instanceof core_1.ChannelNotFoundError))
37
+ throw e;
38
+ throw new core_1.UserInputError(`No channel with token "${input.channelToken}". Call list_channels for the tokens ` +
39
+ 'you can use.');
40
+ }
41
+ const accessibleIds = (0, channel_access_1.userChannelIds)(ctx);
42
+ if (!accessibleIds.some(id => (0, core_1.idsAreEqual)(id, channel.id))) {
43
+ throw new core_1.ForbiddenError();
44
+ }
45
+ // Update only channelId so a concurrent token refresh cannot overwrite rotated hashes.
46
+ if (!(caller === null || caller === void 0 ? void 0 : caller.grant)) {
47
+ // An authenticated MCP caller always carries a grant; its absence means the caller info
48
+ // was not wired up, so fail loudly rather than report a switch that never persisted.
49
+ throw new core_1.InternalServerError('MCP set_active_channel requires an authenticated grant');
50
+ }
51
+ const result = await this.connection
52
+ .getRepository(ctx, mcp_oauth_grant_entity_1.McpOauthGrant)
53
+ .update({ id: caller.grant.id }, { channelId: channel.id });
54
+ if (result.affected === 0) {
55
+ throw new core_1.EntityNotFoundError('McpOauthGrant', caller.grant.id);
56
+ }
57
+ return { channel: this.serializer.channel(channel) };
58
+ }
59
+ };
60
+ exports.SetActiveChannelTool = SetActiveChannelTool;
61
+ exports.SetActiveChannelTool = SetActiveChannelTool = __decorate([
62
+ (0, mcp_sdk_1.McpTool)({
63
+ name: 'set_active_channel',
64
+ toolset: 'admin',
65
+ description: 'Set the active channel for this MCP grant by channel token.',
66
+ keywords: [
67
+ 'switch to another store',
68
+ 'change the active channel',
69
+ 'select which storefront to work in',
70
+ 'set my current channel',
71
+ 'switch channels',
72
+ "change the store I'm managing",
73
+ ],
74
+ permissions: [core_1.Permission.Authenticated],
75
+ // Every later write on this grant lands on the channel this picks, so it is confirmed first.
76
+ behavior: 'destructive',
77
+ inputSchema: setActiveChannelInput,
78
+ }),
79
+ (0, common_1.Injectable)(),
80
+ __metadata("design:paramtypes", [core_1.ChannelService,
81
+ core_1.TransactionalConnection,
82
+ serializer_service_1.McpToolSerializerService])
83
+ ], SetActiveChannelTool);
84
+ //# sourceMappingURL=set-active-channel.tool.js.map