@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,107 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.McpOauthMetadataService = void 0;
16
+ const server_1 = require("@modelcontextprotocol/server");
17
+ const common_1 = require("@nestjs/common");
18
+ const constants_1 = require("../constants");
19
+ const endpoint_paths_1 = require("../shared/endpoint-paths");
20
+ const oauth_error_1 = require("./oauth-error");
21
+ const oauth_utils_1 = require("./oauth-utils");
22
+ /** Builds the RFC 8414 and RFC 9728 OAuth discovery documents this server publishes. */
23
+ let McpOauthMetadataService = class McpOauthMetadataService {
24
+ constructor(options) {
25
+ this.options = options;
26
+ }
27
+ metadata() {
28
+ const issuer = this.issuerOrigin();
29
+ return {
30
+ issuer,
31
+ authorization_endpoint: `${issuer}/${endpoint_paths_1.OAUTH_ENDPOINT_PATHS.authorize}`,
32
+ token_endpoint: `${issuer}/${endpoint_paths_1.OAUTH_ENDPOINT_PATHS.token}`,
33
+ registration_endpoint: `${issuer}/${endpoint_paths_1.OAUTH_ENDPOINT_PATHS.register}`,
34
+ revocation_endpoint: `${issuer}/${endpoint_paths_1.OAUTH_ENDPOINT_PATHS.revoke}`,
35
+ response_types_supported: ['code'],
36
+ grant_types_supported: constants_1.SUPPORTED_OAUTH_GRANT_TYPES,
37
+ code_challenge_methods_supported: ['S256'],
38
+ token_endpoint_auth_methods_supported: ['none'],
39
+ // CIMD (draft-ietf-oauth-client-id-metadata-document §6): clients check this
40
+ // flag before sending a URL client_id, so it must be present because we support it.
41
+ client_id_metadata_document_supported: true,
42
+ };
43
+ }
44
+ protectedResourceMetadata(toolsetParam) {
45
+ if (toolsetParam !== 'shop' && toolsetParam !== 'admin') {
46
+ throw new common_1.NotFoundException();
47
+ }
48
+ if (!this.availableToolsets().includes(toolsetParam)) {
49
+ throw new common_1.NotFoundException();
50
+ }
51
+ const issuer = this.issuerOrigin();
52
+ return {
53
+ resource: this.resourceForToolset(toolsetParam),
54
+ authorization_servers: [issuer],
55
+ bearer_methods_supported: ['header'],
56
+ resource_name: `Vendure ${toolsetParam} MCP`,
57
+ };
58
+ }
59
+ protectedResourceMetadataUrl(toolset) {
60
+ return (0, server_1.getOAuthProtectedResourceMetadataUrl)(new URL(this.resourceForToolset(toolset)));
61
+ }
62
+ resolveResource(resource) {
63
+ if (!resource) {
64
+ throw new oauth_error_1.McpOauthError('invalid_target', 'resource is required');
65
+ }
66
+ let url;
67
+ try {
68
+ url = new URL(resource);
69
+ }
70
+ catch (_a) {
71
+ throw new oauth_error_1.McpOauthError('invalid_target', 'Unsupported OAuth resource');
72
+ }
73
+ if (url.search || url.hash) {
74
+ throw new oauth_error_1.McpOauthError('invalid_target', 'OAuth resource must not include query parameters or fragments');
75
+ }
76
+ const wanted = comparableResource(url);
77
+ for (const toolset of this.availableToolsets()) {
78
+ const candidate = this.resourceForToolset(toolset);
79
+ if (comparableResource(new URL(candidate)) === wanted) {
80
+ return { resource: candidate, toolset };
81
+ }
82
+ }
83
+ throw new oauth_error_1.McpOauthError('invalid_target', 'Unsupported OAuth resource');
84
+ }
85
+ /** Shop is not a valid toolset when shop access is switched off. */
86
+ availableToolsets() {
87
+ return this.options.shopAccess === 'disabled' ? ['admin'] : ['shop', 'admin'];
88
+ }
89
+ issuerOrigin() {
90
+ return (0, oauth_utils_1.resolvedOauthOptions)(this.options).issuer.replace(/\/$/, '');
91
+ }
92
+ resourceForToolset(toolset) {
93
+ return `${this.issuerOrigin()}/mcp/${toolset}`;
94
+ }
95
+ };
96
+ exports.McpOauthMetadataService = McpOauthMetadataService;
97
+ exports.McpOauthMetadataService = McpOauthMetadataService = __decorate([
98
+ (0, common_1.Injectable)(),
99
+ __param(0, (0, common_1.Inject)(constants_1.MCP_PLUGIN_OPTIONS)),
100
+ __metadata("design:paramtypes", [Object])
101
+ ], McpOauthMetadataService);
102
+ /** Origin plus path with a trailing slash removed, so two spellings of one resource compare equal. */
103
+ function comparableResource(url) {
104
+ const path = url.pathname.length > 1 ? url.pathname.replace(/\/$/, '') : url.pathname;
105
+ return `${url.origin}${path}`;
106
+ }
107
+ //# sourceMappingURL=oauth-metadata.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-metadata.service.js","sourceRoot":"","sources":["../../src/oauth/oauth-metadata.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { ConfigService, RequestContext, TransactionalConnection } from '@vendure/core';
2
+ import { ResolvedMcpPluginOptions } from '../internal-types';
3
+ export interface McpOauthRetentionResult {
4
+ deletedSessions: number;
5
+ deletedRequests: number;
6
+ deletedCodes: number;
7
+ deletedGrants: number;
8
+ deletedClients: number;
9
+ }
10
+ export declare class McpOauthRetentionService {
11
+ private readonly connection;
12
+ private readonly configService;
13
+ private readonly options;
14
+ constructor(connection: TransactionalConnection, configService: ConfigService, options: ResolvedMcpPluginOptions);
15
+ deleteExpiredOauthRecords(ctx: RequestContext): Promise<McpOauthRetentionResult>;
16
+ /** Prevents expired or revoked grants from leaving a live GraphQL session behind. */
17
+ private deleteSessionsOfDeadGrants;
18
+ /** Only ever catches abandoned flows, since a used request or code is deleted immediately when it's consumed. */
19
+ private deleteExpiredShortLivedRecords;
20
+ /** Kept longer than other OAuth records for audit value; the default retention matches the tool-call log window so a retained log can still resolve its grant. */
21
+ private deleteDeadGrants;
22
+ private deleteUnusedClients;
23
+ }
@@ -0,0 +1,103 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.McpOauthRetentionService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const core_1 = require("@vendure/core");
18
+ const constants_1 = require("../constants");
19
+ const delete_in_batches_1 = require("../delete-in-batches");
20
+ const mcp_authorization_code_entity_1 = require("../entities/mcp-authorization-code.entity");
21
+ const mcp_authorization_request_entity_1 = require("../entities/mcp-authorization-request.entity");
22
+ const mcp_oauth_client_entity_1 = require("../entities/mcp-oauth-client.entity");
23
+ const mcp_oauth_grant_entity_1 = require("../entities/mcp-oauth-grant.entity");
24
+ const oauth_utils_1 = require("./oauth-utils");
25
+ let McpOauthRetentionService = class McpOauthRetentionService {
26
+ constructor(connection, configService, options) {
27
+ this.connection = connection;
28
+ this.configService = configService;
29
+ this.options = options;
30
+ }
31
+ async deleteExpiredOauthRecords(ctx) {
32
+ const deletedSessions = await this.deleteSessionsOfDeadGrants(ctx);
33
+ const deletedRequests = await this.deleteExpiredShortLivedRecords(ctx, mcp_authorization_request_entity_1.McpAuthorizationRequest);
34
+ const deletedCodes = await this.deleteExpiredShortLivedRecords(ctx, mcp_authorization_code_entity_1.McpAuthorizationCode);
35
+ const deletedGrants = await this.deleteDeadGrants(ctx);
36
+ const deletedClients = await this.deleteUnusedClients(ctx);
37
+ return { deletedSessions, deletedRequests, deletedCodes, deletedGrants, deletedClients };
38
+ }
39
+ /** Prevents expired or revoked grants from leaving a live GraphQL session behind. */
40
+ deleteSessionsOfDeadGrants(ctx) {
41
+ return (0, delete_in_batches_1.deleteInBatches)(this.connection, ctx, core_1.Session, () => this.connection
42
+ .getRepository(ctx, mcp_oauth_grant_entity_1.McpOauthGrant)
43
+ .createQueryBuilder('grant')
44
+ .select('session.id', 'id')
45
+ .addSelect('session.token', 'token')
46
+ .innerJoin(core_1.Session, 'session', 'session.id = grant.vendureSessionId')
47
+ .where('grant.expiresAt <= :now', { now: new Date() })
48
+ .orWhere('grant.revokedAt IS NOT NULL')
49
+ .limit(constants_1.RETENTION_DELETE_BATCH_SIZE)
50
+ .getRawMany(), async (sessions) => {
51
+ for (const session of sessions) {
52
+ await (0, oauth_utils_1.deleteCachedVendureSession)(this.configService, session.token);
53
+ }
54
+ });
55
+ }
56
+ /** Only ever catches abandoned flows, since a used request or code is deleted immediately when it's consumed. */
57
+ deleteExpiredShortLivedRecords(ctx, entity) {
58
+ return (0, delete_in_batches_1.deleteInBatches)(this.connection, ctx, entity, () => this.connection
59
+ .getRepository(ctx, entity)
60
+ .createQueryBuilder('record')
61
+ .select('record.id', 'id')
62
+ .where('record.expiresAt <= :now', { now: new Date() })
63
+ .limit(constants_1.RETENTION_DELETE_BATCH_SIZE)
64
+ .getRawMany());
65
+ }
66
+ /** Kept longer than other OAuth records for audit value; the default retention matches the tool-call log window so a retained log can still resolve its grant. */
67
+ deleteDeadGrants(ctx) {
68
+ const oauth = this.options.oauth;
69
+ if (!oauth || oauth.grantRetentionDays === 0) {
70
+ return Promise.resolve(0);
71
+ }
72
+ const cutoff = new Date(Date.now() - oauth.grantRetentionDays * constants_1.MS_PER_DAY);
73
+ return (0, delete_in_batches_1.deleteInBatches)(this.connection, ctx, mcp_oauth_grant_entity_1.McpOauthGrant, () => this.connection
74
+ .getRepository(ctx, mcp_oauth_grant_entity_1.McpOauthGrant)
75
+ .createQueryBuilder('grant')
76
+ .select('grant.id', 'id')
77
+ .where('grant.expiresAt < :cutoff', { cutoff })
78
+ .orWhere('grant.revokedAt < :cutoff', { cutoff })
79
+ .limit(constants_1.RETENTION_DELETE_BATCH_SIZE)
80
+ .getRawMany());
81
+ }
82
+ deleteUnusedClients(ctx) {
83
+ const cutoff = new Date(Date.now() - constants_1.MCP_UNUSED_OAUTH_CLIENT_RETENTION_MS);
84
+ return (0, delete_in_batches_1.deleteInBatches)(this.connection, ctx, mcp_oauth_client_entity_1.McpOauthClient, () => this.connection
85
+ .getRepository(ctx, mcp_oauth_client_entity_1.McpOauthClient)
86
+ .createQueryBuilder('client')
87
+ .select('client.id', 'id')
88
+ .leftJoin(mcp_oauth_grant_entity_1.McpOauthGrant, 'grant', 'grant.oauthClientId = client.id')
89
+ .where('client.lastUsedAt IS NULL')
90
+ .andWhere('client.createdAt < :cutoff', { cutoff })
91
+ .andWhere('grant.id IS NULL')
92
+ .limit(constants_1.RETENTION_DELETE_BATCH_SIZE)
93
+ .getRawMany());
94
+ }
95
+ };
96
+ exports.McpOauthRetentionService = McpOauthRetentionService;
97
+ exports.McpOauthRetentionService = McpOauthRetentionService = __decorate([
98
+ (0, common_1.Injectable)(),
99
+ __param(2, (0, common_1.Inject)(constants_1.MCP_PLUGIN_OPTIONS)),
100
+ __metadata("design:paramtypes", [core_1.TransactionalConnection,
101
+ core_1.ConfigService, Object])
102
+ ], McpOauthRetentionService);
103
+ //# sourceMappingURL=oauth-retention.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-retention.service.js","sourceRoot":"","sources":["../../src/oauth/oauth-retention.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { McpToolset } from '@vendure/mcp-sdk';
2
+ import { z } from 'zod';
3
+ export declare const registerClientInputSchema: z.ZodObject<{
4
+ client_name: z.ZodOptional<z.ZodString>;
5
+ client_uri: z.ZodOptional<z.ZodString>;
6
+ logo_uri: z.ZodOptional<z.ZodString>;
7
+ redirect_uris: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
+ grant_types: z.ZodOptional<z.ZodArray<z.ZodString>>;
9
+ token_endpoint_auth_method: z.ZodOptional<z.ZodString>;
10
+ }, z.core.$strip>;
11
+ export type RegisterClientInput = z.infer<typeof registerClientInputSchema>;
12
+ export declare const authorizeInputSchema: z.ZodObject<{
13
+ response_type: z.ZodOptional<z.ZodString>;
14
+ client_id: z.ZodOptional<z.ZodString>;
15
+ redirect_uri: z.ZodOptional<z.ZodString>;
16
+ state: z.ZodOptional<z.ZodString>;
17
+ code_challenge: z.ZodOptional<z.ZodString>;
18
+ code_challenge_method: z.ZodOptional<z.ZodString>;
19
+ resource: z.ZodOptional<z.ZodString>;
20
+ }, z.core.$strip>;
21
+ export type AuthorizeInput = z.infer<typeof authorizeInputSchema>;
22
+ export declare const tokenInputSchema: z.ZodObject<{
23
+ grant_type: z.ZodOptional<z.ZodString>;
24
+ code: z.ZodOptional<z.ZodString>;
25
+ refresh_token: z.ZodOptional<z.ZodString>;
26
+ client_id: z.ZodOptional<z.ZodString>;
27
+ redirect_uri: z.ZodOptional<z.ZodString>;
28
+ code_verifier: z.ZodOptional<z.ZodString>;
29
+ resource: z.ZodOptional<z.ZodString>;
30
+ }, z.core.$strip>;
31
+ export type TokenInput = z.infer<typeof tokenInputSchema>;
32
+ export interface AuthorizationRequestInfo {
33
+ client_id: string;
34
+ /**
35
+ * How the client's identity was established: 'cimd' when the client_id is a URL whose
36
+ * metadata document was fetched and validated (its hostname is verifiable), 'dcr' for
37
+ * Dynamic Client Registration (all fields self-asserted).
38
+ */
39
+ client_id_source: 'cimd' | 'dcr';
40
+ client_name: string;
41
+ client_uri?: string;
42
+ logo_uri?: string;
43
+ redirect_uri: string;
44
+ resource: string;
45
+ toolset: McpToolset;
46
+ }
47
+ export interface RegisteredClientResponse {
48
+ client_id: string;
49
+ client_name: string;
50
+ client_uri?: string;
51
+ logo_uri?: string;
52
+ redirect_uris: string[];
53
+ grant_types: string[];
54
+ token_endpoint_auth_method: string;
55
+ }
56
+ export interface OAuthTokenResponse {
57
+ access_token: string;
58
+ refresh_token: string;
59
+ token_type: 'Bearer';
60
+ expires_in: number;
61
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tokenInputSchema = exports.authorizeInputSchema = exports.registerClientInputSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ // Field names are snake_case to match the OAuth 2.1 wire contract.
6
+ exports.registerClientInputSchema = zod_1.z.object({
7
+ client_name: zod_1.z.string().optional(),
8
+ client_uri: zod_1.z.string().optional(),
9
+ logo_uri: zod_1.z.string().optional(),
10
+ redirect_uris: zod_1.z.array(zod_1.z.string()).optional(),
11
+ grant_types: zod_1.z.array(zod_1.z.string()).optional(),
12
+ token_endpoint_auth_method: zod_1.z.string().optional(),
13
+ });
14
+ exports.authorizeInputSchema = zod_1.z.object({
15
+ response_type: zod_1.z.string().optional(),
16
+ client_id: zod_1.z.string().optional(),
17
+ redirect_uri: zod_1.z.string().optional(),
18
+ state: zod_1.z.string().optional(),
19
+ code_challenge: zod_1.z.string().optional(),
20
+ code_challenge_method: zod_1.z.string().optional(),
21
+ resource: zod_1.z.string().optional(),
22
+ });
23
+ exports.tokenInputSchema = zod_1.z.object({
24
+ grant_type: zod_1.z.string().optional(),
25
+ code: zod_1.z.string().optional(),
26
+ refresh_token: zod_1.z.string().optional(),
27
+ client_id: zod_1.z.string().optional(),
28
+ redirect_uri: zod_1.z.string().optional(),
29
+ code_verifier: zod_1.z.string().optional(),
30
+ resource: zod_1.z.string().optional(),
31
+ });
32
+ //# sourceMappingURL=oauth-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-types.js","sourceRoot":"","sources":["../../src/oauth/oauth-types.ts"],"names":[],"mappings":";;;AACA,6BAAwB;AAExB,mEAAmE;AACtD,QAAA,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,aAAa,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC7C,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3C,0BAA0B,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC;AAGU,QAAA,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,qBAAqB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAGU,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IACrC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { ConfigService } from '@vendure/core';
2
+ import { McpOauthOptionsWithDefaults, ResolvedMcpPluginOptions } from '../internal-types';
3
+ export declare function randomToken(): string;
4
+ export declare function addSeconds(date: Date, seconds: number): Date;
5
+ export declare function verifyPkceChallenge(verifier: string, challenge: string): boolean;
6
+ export declare function appendOAuthParams(redirectUri: string, params: Record<string, string | undefined>): string;
7
+ export declare function assertSafeRedirectUri(redirectUri: string): void;
8
+ export declare function httpsUrlOrNull(value: unknown): string | null;
9
+ export declare function deleteCachedVendureSession(configService: ConfigService, token: string | undefined): Promise<void>;
10
+ /** The OAuth options with defaults applied and the issuer known. */
11
+ export type McpOauthOptionsWithIssuer = McpOauthOptionsWithDefaults & {
12
+ issuer: string;
13
+ };
14
+ /**
15
+ * Returns the resolved OAuth options, throwing if OAuth was not configured
16
+ * (i.e. no `oauth.tokenSecret` was supplied to the plugin).
17
+ */
18
+ export declare function resolvedOauthOptions(options: ResolvedMcpPluginOptions): McpOauthOptionsWithIssuer;
19
+ /** RFC 8252 section 7.3: a loopback redirect URI matches whatever port the app picked at runtime. */
20
+ export declare function isRegisteredRedirectUri(registeredUris: readonly string[], redirectUri: string): boolean;
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.randomToken = randomToken;
4
+ exports.addSeconds = addSeconds;
5
+ exports.verifyPkceChallenge = verifyPkceChallenge;
6
+ exports.appendOAuthParams = appendOAuthParams;
7
+ exports.assertSafeRedirectUri = assertSafeRedirectUri;
8
+ exports.httpsUrlOrNull = httpsUrlOrNull;
9
+ exports.deleteCachedVendureSession = deleteCachedVendureSession;
10
+ exports.resolvedOauthOptions = resolvedOauthOptions;
11
+ exports.isRegisteredRedirectUri = isRegisteredRedirectUri;
12
+ const core_1 = require("@vendure/core");
13
+ const node_crypto_1 = require("node:crypto");
14
+ const constants_1 = require("../constants");
15
+ const loopback_1 = require("../shared/loopback");
16
+ const oauth_error_1 = require("./oauth-error");
17
+ function randomToken() {
18
+ return (0, node_crypto_1.randomBytes)(32).toString('base64url');
19
+ }
20
+ function addSeconds(date, seconds) {
21
+ return new Date(date.getTime() + seconds * 1000);
22
+ }
23
+ function verifyPkceChallenge(verifier, challenge) {
24
+ const digest = (0, node_crypto_1.createHash)('sha256').update(verifier).digest('base64url');
25
+ return digest === challenge;
26
+ }
27
+ function appendOAuthParams(redirectUri, params) {
28
+ const url = new URL(redirectUri);
29
+ for (const [key, value] of Object.entries(params)) {
30
+ if (value != null) {
31
+ url.searchParams.set(key, value);
32
+ }
33
+ }
34
+ return url.toString();
35
+ }
36
+ // Blocks schemes a browser could execute or that reach the local filesystem. Anything else
37
+ // non-http(s) is assumed to be a native app's own scheme (RFC 8252), which the OS hands to
38
+ // the installed app instead.
39
+ const FORBIDDEN_REDIRECT_SCHEMES = new Set(['javascript:', 'data:', 'vbscript:', 'file:', 'blob:', 'about:']);
40
+ function assertSafeRedirectUri(redirectUri) {
41
+ let url;
42
+ try {
43
+ url = new URL(redirectUri);
44
+ }
45
+ catch (_a) {
46
+ throw new oauth_error_1.McpOauthError('invalid_redirect_uri', 'redirect_uri must be an absolute URL');
47
+ }
48
+ if (url.protocol === 'http:' && !(0, loopback_1.isLoopbackHostname)(url.hostname)) {
49
+ throw new oauth_error_1.McpOauthError('invalid_redirect_uri', 'redirect_uri may only use HTTP on localhost');
50
+ }
51
+ if (FORBIDDEN_REDIRECT_SCHEMES.has(url.protocol.toLowerCase())) {
52
+ throw new oauth_error_1.McpOauthError('invalid_redirect_uri', `redirect_uri must not use the ${url.protocol} scheme`);
53
+ }
54
+ if (redirectUri.length > constants_1.MAX_CLIENT_METADATA_FIELD_LENGTH) {
55
+ throw new oauth_error_1.McpOauthError('invalid_redirect_uri', `redirect_uri must be at most ${constants_1.MAX_CLIENT_METADATA_FIELD_LENGTH} characters`);
56
+ }
57
+ }
58
+ function httpsUrlOrNull(value) {
59
+ if (typeof value !== 'string' || value.length > constants_1.MAX_CLIENT_METADATA_FIELD_LENGTH) {
60
+ return null;
61
+ }
62
+ try {
63
+ return new URL(value).protocol === 'https:' ? value : null;
64
+ }
65
+ catch (_a) {
66
+ return null;
67
+ }
68
+ }
69
+ async function deleteCachedVendureSession(configService, token) {
70
+ if (!token)
71
+ return;
72
+ try {
73
+ await configService.authOptions.sessionCacheStrategy.delete(token);
74
+ }
75
+ catch (error) {
76
+ core_1.Logger.error('Failed to evict a deleted MCP session from the session cache', constants_1.loggerCtx, error instanceof Error ? error.stack : undefined);
77
+ }
78
+ }
79
+ /**
80
+ * Returns the resolved OAuth options, throwing if OAuth was not configured
81
+ * (i.e. no `oauth.tokenSecret` was supplied to the plugin).
82
+ */
83
+ function resolvedOauthOptions(options) {
84
+ var _a;
85
+ if (!((_a = options.oauth) === null || _a === void 0 ? void 0 : _a.tokenSecret)) {
86
+ throw new oauth_error_1.McpOauthError('server_error', 'MCP OAuth is not configured (oauth.tokenSecret is required)');
87
+ }
88
+ // The plugin's configuration hook sets oauth.issuer at boot when the user left it out, so by
89
+ // the time any request arrives it is always a string.
90
+ return options.oauth;
91
+ }
92
+ /** RFC 8252 section 7.3: a loopback redirect URI matches whatever port the app picked at runtime. */
93
+ function isRegisteredRedirectUri(registeredUris, redirectUri) {
94
+ let requested;
95
+ try {
96
+ requested = withoutLoopbackPort(redirectUri);
97
+ }
98
+ catch (_a) {
99
+ return false;
100
+ }
101
+ // Registered URIs passed assertSafeRedirectUri, so they parse.
102
+ return registeredUris.some(registered => withoutLoopbackPort(registered) === requested);
103
+ }
104
+ function withoutLoopbackPort(uri) {
105
+ const url = new URL(uri);
106
+ if (url.protocol === 'http:' && (0, loopback_1.isLoopbackHostname)(url.hostname)) {
107
+ url.port = '';
108
+ }
109
+ return url.href;
110
+ }
111
+ //# sourceMappingURL=oauth-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-utils.js","sourceRoot":"","sources":["../../src/oauth/oauth-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { Response } from 'express';
2
+ import { McpOauthMetadataService } from './oauth-metadata.service';
3
+ import { McpOauthService } from './oauth.service';
4
+ export declare class McpOauthController {
5
+ private readonly oauthService;
6
+ private readonly oauthMetadata;
7
+ constructor(oauthService: McpOauthService, oauthMetadata: McpOauthMetadataService);
8
+ metadata(): {
9
+ issuer: string;
10
+ authorization_endpoint: string;
11
+ token_endpoint: string;
12
+ registration_endpoint: string;
13
+ revocation_endpoint: string;
14
+ response_types_supported: string[];
15
+ grant_types_supported: string[];
16
+ code_challenge_methods_supported: string[];
17
+ token_endpoint_auth_methods_supported: string[];
18
+ client_id_metadata_document_supported: boolean;
19
+ };
20
+ protectedResourceMetadata(toolsetParam: string): {
21
+ resource: string;
22
+ authorization_servers: string[];
23
+ bearer_methods_supported: string[];
24
+ resource_name: string;
25
+ };
26
+ register(body: unknown): Promise<import("./oauth-types").RegisteredClientResponse>;
27
+ authorize(query: unknown, res: Response): Promise<void>;
28
+ authorizationRequest(requestToken: unknown): Promise<import("./oauth-types").AuthorizationRequestInfo>;
29
+ token(body: unknown): Promise<import("./oauth-types").OAuthTokenResponse>;
30
+ revoke(body: unknown): Promise<Record<string, never>>;
31
+ }