@financedistrict/medusa-plugin-agentic-commerce 0.1.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 (185) hide show
  1. package/.medusa/server/src/admin/index.js +22 -0
  2. package/.medusa/server/src/admin/index.mjs +23 -0
  3. package/.medusa/server/src/api/acp/checkout_sessions/[id]/cancel/route.d.ts +3 -0
  4. package/.medusa/server/src/api/acp/checkout_sessions/[id]/cancel/route.d.ts.map +1 -0
  5. package/.medusa/server/src/api/acp/checkout_sessions/[id]/cancel/route.js +39 -0
  6. package/.medusa/server/src/api/acp/checkout_sessions/[id]/cancel/route.js.map +1 -0
  7. package/.medusa/server/src/api/acp/checkout_sessions/[id]/complete/route.d.ts +3 -0
  8. package/.medusa/server/src/api/acp/checkout_sessions/[id]/complete/route.d.ts.map +1 -0
  9. package/.medusa/server/src/api/acp/checkout_sessions/[id]/complete/route.js +73 -0
  10. package/.medusa/server/src/api/acp/checkout_sessions/[id]/complete/route.js.map +1 -0
  11. package/.medusa/server/src/api/acp/checkout_sessions/[id]/route.d.ts +4 -0
  12. package/.medusa/server/src/api/acp/checkout_sessions/[id]/route.d.ts.map +1 -0
  13. package/.medusa/server/src/api/acp/checkout_sessions/[id]/route.js +107 -0
  14. package/.medusa/server/src/api/acp/checkout_sessions/[id]/route.js.map +1 -0
  15. package/.medusa/server/src/api/acp/checkout_sessions/route.d.ts +3 -0
  16. package/.medusa/server/src/api/acp/checkout_sessions/route.d.ts.map +1 -0
  17. package/.medusa/server/src/api/acp/checkout_sessions/route.js +70 -0
  18. package/.medusa/server/src/api/acp/checkout_sessions/route.js.map +1 -0
  19. package/.medusa/server/src/api/acp/orders/[id]/route.d.ts +3 -0
  20. package/.medusa/server/src/api/acp/orders/[id]/route.d.ts.map +1 -0
  21. package/.medusa/server/src/api/acp/orders/[id]/route.js +37 -0
  22. package/.medusa/server/src/api/acp/orders/[id]/route.js.map +1 -0
  23. package/.medusa/server/src/api/acp/product-feed/route.d.ts +3 -0
  24. package/.medusa/server/src/api/acp/product-feed/route.d.ts.map +1 -0
  25. package/.medusa/server/src/api/acp/product-feed/route.js +57 -0
  26. package/.medusa/server/src/api/acp/product-feed/route.js.map +1 -0
  27. package/.medusa/server/src/api/middleware/idempotency.d.ts +21 -0
  28. package/.medusa/server/src/api/middleware/idempotency.d.ts.map +1 -0
  29. package/.medusa/server/src/api/middleware/idempotency.js +184 -0
  30. package/.medusa/server/src/api/middleware/idempotency.js.map +1 -0
  31. package/.medusa/server/src/api/middlewares.d.ts +3 -0
  32. package/.medusa/server/src/api/middlewares.d.ts.map +1 -0
  33. package/.medusa/server/src/api/middlewares.js +309 -0
  34. package/.medusa/server/src/api/middlewares.js.map +1 -0
  35. package/.medusa/server/src/api/ucp/carts/[id]/cancel/route.d.ts +3 -0
  36. package/.medusa/server/src/api/ucp/carts/[id]/cancel/route.d.ts.map +1 -0
  37. package/.medusa/server/src/api/ucp/carts/[id]/cancel/route.js +39 -0
  38. package/.medusa/server/src/api/ucp/carts/[id]/cancel/route.js.map +1 -0
  39. package/.medusa/server/src/api/ucp/carts/[id]/route.d.ts +4 -0
  40. package/.medusa/server/src/api/ucp/carts/[id]/route.d.ts.map +1 -0
  41. package/.medusa/server/src/api/ucp/carts/[id]/route.js +96 -0
  42. package/.medusa/server/src/api/ucp/carts/[id]/route.js.map +1 -0
  43. package/.medusa/server/src/api/ucp/carts/route.d.ts +3 -0
  44. package/.medusa/server/src/api/ucp/carts/route.d.ts.map +1 -0
  45. package/.medusa/server/src/api/ucp/carts/route.js +52 -0
  46. package/.medusa/server/src/api/ucp/carts/route.js.map +1 -0
  47. package/.medusa/server/src/api/ucp/catalog/lookup/route.d.ts +3 -0
  48. package/.medusa/server/src/api/ucp/catalog/lookup/route.d.ts.map +1 -0
  49. package/.medusa/server/src/api/ucp/catalog/lookup/route.js +66 -0
  50. package/.medusa/server/src/api/ucp/catalog/lookup/route.js.map +1 -0
  51. package/.medusa/server/src/api/ucp/catalog/search/route.d.ts +3 -0
  52. package/.medusa/server/src/api/ucp/catalog/search/route.d.ts.map +1 -0
  53. package/.medusa/server/src/api/ucp/catalog/search/route.js +84 -0
  54. package/.medusa/server/src/api/ucp/catalog/search/route.js.map +1 -0
  55. package/.medusa/server/src/api/ucp/checkout-sessions/[id]/cancel/route.d.ts +3 -0
  56. package/.medusa/server/src/api/ucp/checkout-sessions/[id]/cancel/route.d.ts.map +1 -0
  57. package/.medusa/server/src/api/ucp/checkout-sessions/[id]/cancel/route.js +40 -0
  58. package/.medusa/server/src/api/ucp/checkout-sessions/[id]/cancel/route.js.map +1 -0
  59. package/.medusa/server/src/api/ucp/checkout-sessions/[id]/complete/route.d.ts +3 -0
  60. package/.medusa/server/src/api/ucp/checkout-sessions/[id]/complete/route.d.ts.map +1 -0
  61. package/.medusa/server/src/api/ucp/checkout-sessions/[id]/complete/route.js +77 -0
  62. package/.medusa/server/src/api/ucp/checkout-sessions/[id]/complete/route.js.map +1 -0
  63. package/.medusa/server/src/api/ucp/checkout-sessions/[id]/route.d.ts +4 -0
  64. package/.medusa/server/src/api/ucp/checkout-sessions/[id]/route.d.ts.map +1 -0
  65. package/.medusa/server/src/api/ucp/checkout-sessions/[id]/route.js +110 -0
  66. package/.medusa/server/src/api/ucp/checkout-sessions/[id]/route.js.map +1 -0
  67. package/.medusa/server/src/api/ucp/checkout-sessions/route.d.ts +3 -0
  68. package/.medusa/server/src/api/ucp/checkout-sessions/route.d.ts.map +1 -0
  69. package/.medusa/server/src/api/ucp/checkout-sessions/route.js +71 -0
  70. package/.medusa/server/src/api/ucp/checkout-sessions/route.js.map +1 -0
  71. package/.medusa/server/src/api/ucp/orders/[id]/route.d.ts +3 -0
  72. package/.medusa/server/src/api/ucp/orders/[id]/route.d.ts.map +1 -0
  73. package/.medusa/server/src/api/ucp/orders/[id]/route.js +38 -0
  74. package/.medusa/server/src/api/ucp/orders/[id]/route.js.map +1 -0
  75. package/.medusa/server/src/api/validation-schemas.d.ts +992 -0
  76. package/.medusa/server/src/api/validation-schemas.d.ts.map +1 -0
  77. package/.medusa/server/src/api/validation-schemas.js +200 -0
  78. package/.medusa/server/src/api/validation-schemas.js.map +1 -0
  79. package/.medusa/server/src/api/well-known/acp.json/route.d.ts +3 -0
  80. package/.medusa/server/src/api/well-known/acp.json/route.d.ts.map +1 -0
  81. package/.medusa/server/src/api/well-known/acp.json/route.js +44 -0
  82. package/.medusa/server/src/api/well-known/acp.json/route.js.map +1 -0
  83. package/.medusa/server/src/api/well-known/ucp/route.d.ts +3 -0
  84. package/.medusa/server/src/api/well-known/ucp/route.d.ts.map +1 -0
  85. package/.medusa/server/src/api/well-known/ucp/route.js +34 -0
  86. package/.medusa/server/src/api/well-known/ucp/route.js.map +1 -0
  87. package/.medusa/server/src/index.d.ts +51 -0
  88. package/.medusa/server/src/index.d.ts.map +1 -0
  89. package/.medusa/server/src/index.js +81 -0
  90. package/.medusa/server/src/index.js.map +1 -0
  91. package/.medusa/server/src/jobs/sync-product-feed.d.ts +16 -0
  92. package/.medusa/server/src/jobs/sync-product-feed.d.ts.map +1 -0
  93. package/.medusa/server/src/jobs/sync-product-feed.js +78 -0
  94. package/.medusa/server/src/jobs/sync-product-feed.js.map +1 -0
  95. package/.medusa/server/src/lib/address-translator.d.ts +40 -0
  96. package/.medusa/server/src/lib/address-translator.d.ts.map +1 -0
  97. package/.medusa/server/src/lib/address-translator.js +79 -0
  98. package/.medusa/server/src/lib/address-translator.js.map +1 -0
  99. package/.medusa/server/src/lib/cart-fields.d.ts +10 -0
  100. package/.medusa/server/src/lib/cart-fields.d.ts.map +1 -0
  101. package/.medusa/server/src/lib/cart-fields.js +42 -0
  102. package/.medusa/server/src/lib/cart-fields.js.map +1 -0
  103. package/.medusa/server/src/lib/error-formatters.d.ts +38 -0
  104. package/.medusa/server/src/lib/error-formatters.d.ts.map +1 -0
  105. package/.medusa/server/src/lib/error-formatters.js +42 -0
  106. package/.medusa/server/src/lib/error-formatters.js.map +1 -0
  107. package/.medusa/server/src/lib/formatters/acp.d.ts +108 -0
  108. package/.medusa/server/src/lib/formatters/acp.d.ts.map +1 -0
  109. package/.medusa/server/src/lib/formatters/acp.js +158 -0
  110. package/.medusa/server/src/lib/formatters/acp.js.map +1 -0
  111. package/.medusa/server/src/lib/formatters/types.d.ts +19 -0
  112. package/.medusa/server/src/lib/formatters/types.d.ts.map +1 -0
  113. package/.medusa/server/src/lib/formatters/types.js +15 -0
  114. package/.medusa/server/src/lib/formatters/types.js.map +1 -0
  115. package/.medusa/server/src/lib/formatters/ucp.d.ts +123 -0
  116. package/.medusa/server/src/lib/formatters/ucp.d.ts.map +1 -0
  117. package/.medusa/server/src/lib/formatters/ucp.js +226 -0
  118. package/.medusa/server/src/lib/formatters/ucp.js.map +1 -0
  119. package/.medusa/server/src/lib/order-fields.d.ts +6 -0
  120. package/.medusa/server/src/lib/order-fields.d.ts.map +1 -0
  121. package/.medusa/server/src/lib/order-fields.js +29 -0
  122. package/.medusa/server/src/lib/order-fields.js.map +1 -0
  123. package/.medusa/server/src/lib/payment-handler-registry.d.ts +58 -0
  124. package/.medusa/server/src/lib/payment-handler-registry.d.ts.map +1 -0
  125. package/.medusa/server/src/lib/payment-handler-registry.js +150 -0
  126. package/.medusa/server/src/lib/payment-handler-registry.js.map +1 -0
  127. package/.medusa/server/src/lib/public-url.d.ts +12 -0
  128. package/.medusa/server/src/lib/public-url.d.ts.map +1 -0
  129. package/.medusa/server/src/lib/public-url.js +14 -0
  130. package/.medusa/server/src/lib/public-url.js.map +1 -0
  131. package/.medusa/server/src/lib/status-maps.d.ts +7 -0
  132. package/.medusa/server/src/lib/status-maps.d.ts.map +1 -0
  133. package/.medusa/server/src/lib/status-maps.js +43 -0
  134. package/.medusa/server/src/lib/status-maps.js.map +1 -0
  135. package/.medusa/server/src/modules/agentic-commerce/index.d.ts +7 -0
  136. package/.medusa/server/src/modules/agentic-commerce/index.d.ts.map +1 -0
  137. package/.medusa/server/src/modules/agentic-commerce/index.js +13 -0
  138. package/.medusa/server/src/modules/agentic-commerce/index.js.map +1 -0
  139. package/.medusa/server/src/modules/agentic-commerce/service.d.ts +294 -0
  140. package/.medusa/server/src/modules/agentic-commerce/service.d.ts.map +1 -0
  141. package/.medusa/server/src/modules/agentic-commerce/service.js +206 -0
  142. package/.medusa/server/src/modules/agentic-commerce/service.js.map +1 -0
  143. package/.medusa/server/src/subscribers/order-placed-webhook.d.ts +16 -0
  144. package/.medusa/server/src/subscribers/order-placed-webhook.d.ts.map +1 -0
  145. package/.medusa/server/src/subscribers/order-placed-webhook.js +83 -0
  146. package/.medusa/server/src/subscribers/order-placed-webhook.js.map +1 -0
  147. package/.medusa/server/src/types/payment-handler-adapter.d.ts +92 -0
  148. package/.medusa/server/src/types/payment-handler-adapter.d.ts.map +1 -0
  149. package/.medusa/server/src/types/payment-handler-adapter.js +34 -0
  150. package/.medusa/server/src/types/payment-handler-adapter.js.map +1 -0
  151. package/.medusa/server/src/workflows/cancel-checkout-session.d.ts +9 -0
  152. package/.medusa/server/src/workflows/cancel-checkout-session.d.ts.map +1 -0
  153. package/.medusa/server/src/workflows/cancel-checkout-session.js +53 -0
  154. package/.medusa/server/src/workflows/cancel-checkout-session.js.map +1 -0
  155. package/.medusa/server/src/workflows/complete-checkout-session.d.ts +23 -0
  156. package/.medusa/server/src/workflows/complete-checkout-session.d.ts.map +1 -0
  157. package/.medusa/server/src/workflows/complete-checkout-session.js +44 -0
  158. package/.medusa/server/src/workflows/complete-checkout-session.js.map +1 -0
  159. package/.medusa/server/src/workflows/create-checkout-session.d.ts +20 -0
  160. package/.medusa/server/src/workflows/create-checkout-session.d.ts.map +1 -0
  161. package/.medusa/server/src/workflows/create-checkout-session.js +65 -0
  162. package/.medusa/server/src/workflows/create-checkout-session.js.map +1 -0
  163. package/.medusa/server/src/workflows/index.d.ts +5 -0
  164. package/.medusa/server/src/workflows/index.d.ts.map +1 -0
  165. package/.medusa/server/src/workflows/index.js +15 -0
  166. package/.medusa/server/src/workflows/index.js.map +1 -0
  167. package/.medusa/server/src/workflows/steps/ensure-shipping-method.d.ts +10 -0
  168. package/.medusa/server/src/workflows/steps/ensure-shipping-method.d.ts.map +1 -0
  169. package/.medusa/server/src/workflows/steps/ensure-shipping-method.js +50 -0
  170. package/.medusa/server/src/workflows/steps/ensure-shipping-method.js.map +1 -0
  171. package/.medusa/server/src/workflows/steps/setup-payment.d.ts +21 -0
  172. package/.medusa/server/src/workflows/steps/setup-payment.d.ts.map +1 -0
  173. package/.medusa/server/src/workflows/steps/setup-payment.js +88 -0
  174. package/.medusa/server/src/workflows/steps/setup-payment.js.map +1 -0
  175. package/.medusa/server/src/workflows/steps/validate-checkout-prerequisites.d.ts +9 -0
  176. package/.medusa/server/src/workflows/steps/validate-checkout-prerequisites.d.ts.map +1 -0
  177. package/.medusa/server/src/workflows/steps/validate-checkout-prerequisites.js +34 -0
  178. package/.medusa/server/src/workflows/steps/validate-checkout-prerequisites.js.map +1 -0
  179. package/.medusa/server/src/workflows/update-checkout-session.d.ts +22 -0
  180. package/.medusa/server/src/workflows/update-checkout-session.d.ts.map +1 -0
  181. package/.medusa/server/src/workflows/update-checkout-session.js +103 -0
  182. package/.medusa/server/src/workflows/update-checkout-session.js.map +1 -0
  183. package/LICENSE +21 -0
  184. package/README.md +356 -0
  185. package/package.json +59 -0
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GET = GET;
7
+ exports.PUT = PUT;
8
+ const update_checkout_session_1 = __importDefault(require("../../../../workflows/update-checkout-session"));
9
+ const cart_fields_1 = require("../../../../lib/cart-fields");
10
+ const address_translator_1 = require("../../../../lib/address-translator");
11
+ const error_formatters_1 = require("../../../../lib/error-formatters");
12
+ const public_url_1 = require("../../../../lib/public-url");
13
+ const UCP_VERSION = "2026-01-11";
14
+ async function GET(req, res) {
15
+ const { id } = req.params;
16
+ try {
17
+ const query = req.scope.resolve("query");
18
+ const { data: [cart] } = await query.graph({
19
+ entity: "cart",
20
+ fields: cart_fields_1.CHECKOUT_SESSION_CART_FIELDS,
21
+ filters: { id },
22
+ });
23
+ if (!cart) {
24
+ res.status(404).json((0, error_formatters_1.formatUcpError)({
25
+ ucpVersion: UCP_VERSION,
26
+ code: "not_found",
27
+ content: "Cart not found",
28
+ }));
29
+ return;
30
+ }
31
+ const agenticCommerceService = req.scope.resolve("agenticCommerce");
32
+ const baseUrl = `${(0, public_url_1.getPublicBaseUrl)(req)}/ucp/carts`;
33
+ const formatted = agenticCommerceService.formatUcpCart(cart, baseUrl);
34
+ res.json(formatted);
35
+ }
36
+ catch (error) {
37
+ res.status(500).json((0, error_formatters_1.formatUcpError)({
38
+ ucpVersion: UCP_VERSION,
39
+ code: "internal_error",
40
+ content: error.message,
41
+ }));
42
+ }
43
+ }
44
+ async function PUT(req, res) {
45
+ const { id } = req.params;
46
+ try {
47
+ const body = req.validatedBody;
48
+ // Translate UCP field names to internal format
49
+ const items = body.line_items
50
+ ? body.line_items.map((li) => ({
51
+ variant_id: li.item?.id,
52
+ line_item_id: li.line_item_id,
53
+ quantity: li.quantity,
54
+ }))
55
+ : undefined;
56
+ const email = body.buyer?.email;
57
+ const shippingAddress = body.shipping_address
58
+ ? (0, address_translator_1.ucpAddressToMedusa)(body.shipping_address)
59
+ : undefined;
60
+ await (0, update_checkout_session_1.default)(req.scope).run({
61
+ input: {
62
+ cart_id: id,
63
+ items,
64
+ email,
65
+ shipping_address: shippingAddress,
66
+ },
67
+ });
68
+ // Fetch updated cart
69
+ const query = req.scope.resolve("query");
70
+ const { data: [cart] } = await query.graph({
71
+ entity: "cart",
72
+ fields: cart_fields_1.CHECKOUT_SESSION_CART_FIELDS,
73
+ filters: { id },
74
+ });
75
+ if (!cart) {
76
+ res.status(404).json((0, error_formatters_1.formatUcpError)({
77
+ ucpVersion: UCP_VERSION,
78
+ code: "not_found",
79
+ content: "Cart not found",
80
+ }));
81
+ return;
82
+ }
83
+ const agenticCommerceService = req.scope.resolve("agenticCommerce");
84
+ const baseUrl = `${(0, public_url_1.getPublicBaseUrl)(req)}/ucp/carts`;
85
+ const formatted = agenticCommerceService.formatUcpCart(cart, baseUrl);
86
+ res.json(formatted);
87
+ }
88
+ catch (error) {
89
+ res.status(500).json((0, error_formatters_1.formatUcpError)({
90
+ ucpVersion: UCP_VERSION,
91
+ code: "internal_error",
92
+ content: error.message,
93
+ }));
94
+ }
95
+ }
96
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/ucp/carts/[id]/route.ts"],"names":[],"mappings":";;;;;AASA,kBAgCC;AAED,kBA0DC;AApGD,4GAAyF;AACzF,6DAA0E;AAC1E,2EAAuE;AACvE,uEAAiE;AACjE,2DAA6D;AAE7D,MAAM,WAAW,GAAG,YAAY,CAAA;AAEzB,KAAK,UAAU,GAAG,CAAC,GAAkB,EAAE,GAAmB;IAC/D,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAA;IAEzB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAQ,CAAA;QAC/C,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;YACzC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,0CAA4B;YACpC,OAAO,EAAE,EAAE,EAAE,EAAE;SAChB,CAAC,CAAA;QAEF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAc,EAAC;gBAClC,UAAU,EAAE,WAAW;gBACvB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,gBAAgB;aAC1B,CAAC,CAAC,CAAA;YACH,OAAM;QACR,CAAC;QAED,MAAM,sBAAsB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAQ,CAAA;QAC1E,MAAM,OAAO,GAAG,GAAG,IAAA,6BAAgB,EAAC,GAAG,CAAC,YAAY,CAAA;QACpD,MAAM,SAAS,GAAG,sBAAsB,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAErE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACrB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAc,EAAC;YAClC,UAAU,EAAE,WAAW;YACvB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC,CAAA;IACL,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,GAAG,CAAC,GAAkB,EAAE,GAAmB;IAC/D,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAA;IAEzB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,GAAG,CAAC,aAAoB,CAAA;QAErC,+CAA+C;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU;YAC3B,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,CAAC;gBAChC,UAAU,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;gBACvB,YAAY,EAAE,EAAE,CAAC,YAAY;gBAC7B,QAAQ,EAAE,EAAE,CAAC,QAAQ;aACtB,CAAC,CAAC;YACL,CAAC,CAAC,SAAS,CAAA;QAEb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAA;QAC/B,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB;YAC3C,CAAC,CAAC,IAAA,uCAAkB,EAAC,IAAI,CAAC,gBAAgB,CAAC;YAC3C,CAAC,CAAC,SAAS,CAAA;QAEb,MAAM,IAAA,iCAA6B,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;YACjD,KAAK,EAAE;gBACL,OAAO,EAAE,EAAE;gBACX,KAAK;gBACL,KAAK;gBACL,gBAAgB,EAAE,eAAe;aAC3B;SACT,CAAC,CAAA;QAEF,qBAAqB;QACrB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAQ,CAAA;QAC/C,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;YACzC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,0CAA4B;YACpC,OAAO,EAAE,EAAE,EAAE,EAAE;SAChB,CAAC,CAAA;QAEF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAc,EAAC;gBAClC,UAAU,EAAE,WAAW;gBACvB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,gBAAgB;aAC1B,CAAC,CAAC,CAAA;YACH,OAAM;QACR,CAAC;QAED,MAAM,sBAAsB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAQ,CAAA;QAC1E,MAAM,OAAO,GAAG,GAAG,IAAA,6BAAgB,EAAC,GAAG,CAAC,YAAY,CAAA;QACpD,MAAM,SAAS,GAAG,sBAAsB,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAErE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACrB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAc,EAAC;YAClC,UAAU,EAAE,WAAW;YACvB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC,CAAA;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
2
+ export declare function POST(req: MedusaRequest, res: MedusaResponse): Promise<void>;
3
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/ucp/carts/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAQ7E,wBAAsB,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,iBA4CjE"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.POST = POST;
7
+ const create_checkout_session_1 = __importDefault(require("../../../workflows/create-checkout-session"));
8
+ const cart_fields_1 = require("../../../lib/cart-fields");
9
+ const error_formatters_1 = require("../../../lib/error-formatters");
10
+ const public_url_1 = require("../../../lib/public-url");
11
+ const UCP_VERSION = "2026-01-11";
12
+ async function POST(req, res) {
13
+ const body = req.validatedBody;
14
+ try {
15
+ // Translate UCP field names to internal format
16
+ const items = (body.line_items || []).map((li) => ({
17
+ variant_id: li.item.id,
18
+ quantity: li.quantity,
19
+ }));
20
+ const email = body.buyer?.email;
21
+ const regionId = body.context?.region;
22
+ const currencyCode = body.context?.currency;
23
+ const { result: cart } = await (0, create_checkout_session_1.default)(req.scope).run({
24
+ input: {
25
+ items,
26
+ email,
27
+ region_id: regionId,
28
+ currency_code: currencyCode,
29
+ protocol: "ucp",
30
+ },
31
+ });
32
+ // Fetch full cart for formatting
33
+ const query = req.scope.resolve("query");
34
+ const { data: [fullCart] } = await query.graph({
35
+ entity: "cart",
36
+ fields: cart_fields_1.CHECKOUT_SESSION_CART_FIELDS,
37
+ filters: { id: cart.id },
38
+ });
39
+ const agenticCommerceService = req.scope.resolve("agenticCommerce");
40
+ const baseUrl = `${(0, public_url_1.getPublicBaseUrl)(req)}/ucp/carts`;
41
+ const formatted = agenticCommerceService.formatUcpCart(fullCart, baseUrl);
42
+ res.status(201).json(formatted);
43
+ }
44
+ catch (error) {
45
+ res.status(500).json((0, error_formatters_1.formatUcpError)({
46
+ ucpVersion: UCP_VERSION,
47
+ code: "internal_error",
48
+ content: error.message,
49
+ }));
50
+ }
51
+ }
52
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/ucp/carts/route.ts"],"names":[],"mappings":";;;;;AAQA,oBA4CC;AAnDD,yGAAsF;AACtF,0DAAuE;AACvE,oEAA8D;AAC9D,wDAA0D;AAE1D,MAAM,WAAW,GAAG,YAAY,CAAA;AAEzB,KAAK,UAAU,IAAI,CAAC,GAAkB,EAAE,GAAmB;IAChE,MAAM,IAAI,GAAG,GAAG,CAAC,aAAoB,CAAA;IAErC,IAAI,CAAC;QACH,+CAA+C;QAC/C,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,CAAC;YACtD,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;YACtB,QAAQ,EAAE,EAAE,CAAC,QAAQ;SACtB,CAAC,CAAC,CAAA;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAA;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAA;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAA;QAE3C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,iCAA6B,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;YAC1E,KAAK,EAAE;gBACL,KAAK;gBACL,KAAK;gBACL,SAAS,EAAE,QAAQ;gBACnB,aAAa,EAAE,YAAY;gBAC3B,QAAQ,EAAE,KAAK;aAChB;SACF,CAAC,CAAA;QAEF,iCAAiC;QACjC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAQ,CAAA;QAC/C,MAAM,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;YAC7C,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,0CAA4B;YACpC,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;SACzB,CAAC,CAAA;QAEF,MAAM,sBAAsB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAQ,CAAA;QAC1E,MAAM,OAAO,GAAG,GAAG,IAAA,6BAAgB,EAAC,GAAG,CAAC,YAAY,CAAA;QACpD,MAAM,SAAS,GAAG,sBAAsB,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAEzE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACjC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAc,EAAC;YAClC,UAAU,EAAE,WAAW;YACvB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC,CAAA;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
2
+ export declare function POST(req: MedusaRequest, res: MedusaResponse): Promise<void>;
3
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/ucp/catalog/lookup/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAK7E,wBAAsB,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,iBAiEjE"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = POST;
4
+ const error_formatters_1 = require("../../../../lib/error-formatters");
5
+ const UCP_VERSION = "2026-01-11";
6
+ async function POST(req, res) {
7
+ const body = req.validatedBody;
8
+ const ids = body.ids || [];
9
+ try {
10
+ const queryService = req.scope.resolve("query");
11
+ const agenticCommerceService = req.scope.resolve("agenticCommerce");
12
+ // IDs can be product IDs or variant IDs — try both
13
+ const { data: products } = await queryService.graph({
14
+ entity: "product",
15
+ fields: [
16
+ "id", "title", "description", "handle", "thumbnail", "status",
17
+ "variants.id", "variants.title", "variants.sku",
18
+ "variants.prices.*",
19
+ "variants.inventory_quantity",
20
+ "categories.id", "categories.name",
21
+ "images.url",
22
+ ],
23
+ filters: { id: ids },
24
+ });
25
+ // Also try to find products by variant IDs for any IDs not found as product IDs
26
+ let allProducts = [...products];
27
+ const foundProductIds = new Set(products.map((p) => p.id));
28
+ const remainingIds = ids.filter((id) => !foundProductIds.has(id));
29
+ if (remainingIds.length > 0) {
30
+ const { data: variantProducts } = await queryService.graph({
31
+ entity: "product",
32
+ fields: [
33
+ "id", "title", "description", "handle", "thumbnail", "status",
34
+ "variants.id", "variants.title", "variants.sku",
35
+ "variants.prices.*",
36
+ "variants.inventory_quantity",
37
+ "categories.id", "categories.name",
38
+ "images.url",
39
+ ],
40
+ filters: { variants: { id: remainingIds } },
41
+ });
42
+ for (const p of variantProducts) {
43
+ if (!foundProductIds.has(p.id)) {
44
+ allProducts.push(p);
45
+ foundProductIds.add(p.id);
46
+ }
47
+ }
48
+ }
49
+ const formatted = allProducts
50
+ .filter((p) => p.status === "published")
51
+ .map((p) => agenticCommerceService.formatUcpProduct(p));
52
+ res.json({
53
+ ucp: { version: UCP_VERSION, status: "success" },
54
+ products: formatted,
55
+ messages: [],
56
+ });
57
+ }
58
+ catch (error) {
59
+ res.status(500).json((0, error_formatters_1.formatUcpError)({
60
+ ucpVersion: UCP_VERSION,
61
+ code: "internal_error",
62
+ content: error.message,
63
+ }));
64
+ }
65
+ }
66
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/ucp/catalog/lookup/route.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
2
+ export declare function POST(req: MedusaRequest, res: MedusaResponse): Promise<void>;
3
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/ucp/catalog/search/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAK7E,wBAAsB,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,iBAwFjE"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = POST;
4
+ const error_formatters_1 = require("../../../../lib/error-formatters");
5
+ const UCP_VERSION = "2026-01-11";
6
+ async function POST(req, res) {
7
+ const body = req.validatedBody;
8
+ const searchQuery = body.query;
9
+ const category = body.filters?.category;
10
+ const minPrice = body.filters?.min_price;
11
+ const maxPrice = body.filters?.max_price;
12
+ const take = Math.min(body.pagination?.limit || 20, 100);
13
+ const skip = body.pagination?.offset || 0;
14
+ try {
15
+ const queryService = req.scope.resolve("query");
16
+ const agenticCommerceService = req.scope.resolve("agenticCommerce");
17
+ // Fetch all published products for in-memory filtering
18
+ const graphFilters = { status: "published" };
19
+ const { data: products } = await queryService.graph({
20
+ entity: "product",
21
+ fields: [
22
+ "id", "title", "description", "handle", "thumbnail", "status",
23
+ "variants.id", "variants.title", "variants.sku",
24
+ "variants.prices.*",
25
+ "variants.inventory_quantity",
26
+ "categories.id", "categories.name",
27
+ "images.url",
28
+ ],
29
+ filters: graphFilters,
30
+ pagination: { take: 500 },
31
+ });
32
+ // Apply text search filter in memory
33
+ let filtered = products;
34
+ if (searchQuery) {
35
+ const q = searchQuery.toLowerCase();
36
+ filtered = filtered.filter((p) => (p.title || "").toLowerCase().includes(q) ||
37
+ (p.description || "").toLowerCase().includes(q) ||
38
+ (p.handle || "").toLowerCase().includes(q));
39
+ }
40
+ // Apply category filter
41
+ if (category) {
42
+ const catName = category.toLowerCase();
43
+ filtered = filtered.filter((p) => (p.categories || []).some((c) => c.name.toLowerCase() === catName));
44
+ }
45
+ // Apply price filters (minor units / cents)
46
+ if (minPrice != null || maxPrice != null) {
47
+ filtered = filtered.filter((p) => {
48
+ const prices = (p.variants || []).flatMap((v) => (v.prices || [])
49
+ .filter((pr) => pr.currency_code === "eur")
50
+ .map((pr) => pr.amount));
51
+ if (prices.length === 0)
52
+ return true;
53
+ const minProductPrice = Math.min(...prices);
54
+ if (minPrice != null && minProductPrice < minPrice)
55
+ return false;
56
+ if (maxPrice != null && minProductPrice > maxPrice)
57
+ return false;
58
+ return true;
59
+ });
60
+ }
61
+ // Paginate filtered results
62
+ const total = filtered.length;
63
+ const paged = filtered.slice(skip, skip + take);
64
+ const products_formatted = paged.map((p) => agenticCommerceService.formatUcpProduct(p));
65
+ res.json({
66
+ ucp: { version: UCP_VERSION, status: "success" },
67
+ products: products_formatted,
68
+ pagination: {
69
+ total,
70
+ limit: take,
71
+ offset: skip,
72
+ has_more: skip + take < total,
73
+ },
74
+ });
75
+ }
76
+ catch (error) {
77
+ res.status(500).json((0, error_formatters_1.formatUcpError)({
78
+ ucpVersion: UCP_VERSION,
79
+ code: "internal_error",
80
+ content: error.message,
81
+ }));
82
+ }
83
+ }
84
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/ucp/catalog/search/route.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
2
+ export declare function POST(req: MedusaRequest, res: MedusaResponse): Promise<void>;
3
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../src/api/ucp/checkout-sessions/[id]/cancel/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAM7E,wBAAsB,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,iBA+BjE"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.POST = POST;
7
+ const cancel_checkout_session_1 = __importDefault(require("../../../../../workflows/cancel-checkout-session"));
8
+ const error_formatters_1 = require("../../../../../lib/error-formatters");
9
+ const UCP_VERSION = "2026-01-11";
10
+ async function POST(req, res) {
11
+ const { id } = req.params;
12
+ try {
13
+ const { result } = await (0, cancel_checkout_session_1.default)(req.scope).run({
14
+ input: { cart_id: id },
15
+ });
16
+ res.json({
17
+ ucp: { version: UCP_VERSION, status: "success" },
18
+ id,
19
+ status: "canceled",
20
+ currency: null,
21
+ line_items: [],
22
+ totals: [],
23
+ messages: [
24
+ { type: "info", code: "session_canceled", content: "Checkout session has been cancelled.", severity: "info" },
25
+ ],
26
+ links: [],
27
+ });
28
+ }
29
+ catch (error) {
30
+ const statusCode = error.message?.includes("not found") ? 404
31
+ : error.message?.includes("completed") ? 409
32
+ : 500;
33
+ res.status(statusCode).json((0, error_formatters_1.formatUcpError)({
34
+ ucpVersion: UCP_VERSION,
35
+ code: statusCode === 404 ? "not_found" : statusCode === 409 ? "already_completed" : "internal_error",
36
+ content: error.message,
37
+ }));
38
+ }
39
+ }
40
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../../src/api/ucp/checkout-sessions/[id]/cancel/route.ts"],"names":[],"mappings":";;;;;AAMA,oBA+BC;AApCD,+GAA4F;AAC5F,0EAAoE;AAEpE,MAAM,WAAW,GAAG,YAAY,CAAA;AAEzB,KAAK,UAAU,IAAI,CAAC,GAAkB,EAAE,GAAmB;IAChE,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAA;IAEzB,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,iCAA6B,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;YACpE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;SACvB,CAAC,CAAA;QAEF,GAAG,CAAC,IAAI,CAAC;YACP,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE;YAChD,EAAE;YACF,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,sCAAsC,EAAE,QAAQ,EAAE,MAAM,EAAE;aAC9G;YACD,KAAK,EAAE,EAAE;SACV,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG;YAC3D,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG;gBAC5C,CAAC,CAAC,GAAG,CAAA;QAEP,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAc,EAAC;YACzC,UAAU,EAAE,WAAW;YACvB,IAAI,EAAE,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB;YACpG,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC,CAAA;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
2
+ export declare function POST(req: MedusaRequest, res: MedusaResponse): Promise<void>;
3
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../../src/api/ucp/checkout-sessions/[id]/complete/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAS7E,wBAAsB,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,iBAoEjE"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.POST = POST;
7
+ const complete_checkout_session_1 = __importDefault(require("../../../../../workflows/complete-checkout-session"));
8
+ const core_flows_1 = require("@medusajs/medusa/core-flows");
9
+ const cart_fields_1 = require("../../../../../lib/cart-fields");
10
+ const error_formatters_1 = require("../../../../../lib/error-formatters");
11
+ const public_url_1 = require("../../../../../lib/public-url");
12
+ const UCP_VERSION = "2026-01-11";
13
+ async function POST(req, res) {
14
+ const { id } = req.params;
15
+ const body = req.validatedBody;
16
+ const agenticCommerceService = req.scope.resolve("agenticCommerce");
17
+ const paymentProviderId = agenticCommerceService.getPaymentProviderId();
18
+ // Translate UCP payment credentials to internal format
19
+ // Supports both new (instrument.credential.authorization) and legacy (flat token) fields
20
+ const paymentCreds = body?.payment_credentials;
21
+ const instrumentCredential = paymentCreds?.instrument?.credential;
22
+ const eip3009Authorization = instrumentCredential?.authorization || paymentCreds?.token;
23
+ const x402Version = instrumentCredential?.x402_version;
24
+ try {
25
+ const { result } = await (0, complete_checkout_session_1.default)(req.scope).run({
26
+ input: {
27
+ cart_id: id,
28
+ payment_provider_id: paymentProviderId,
29
+ payment_data: eip3009Authorization
30
+ ? {
31
+ eip3009_authorization: eip3009Authorization,
32
+ x402_version: x402Version,
33
+ handler_id: paymentCreds?.handler,
34
+ }
35
+ : undefined,
36
+ },
37
+ });
38
+ // Fetch completed cart for formatting
39
+ const query = req.scope.resolve("query");
40
+ const { data: [cart] } = await query.graph({
41
+ entity: "cart",
42
+ fields: cart_fields_1.CHECKOUT_SESSION_CART_FIELDS,
43
+ filters: { id },
44
+ });
45
+ const baseUrl = `${(0, public_url_1.getPublicBaseUrl)(req)}/ucp/checkout-sessions`;
46
+ const session = agenticCommerceService.formatUcpCheckoutSession(cart || {}, baseUrl);
47
+ res.json({
48
+ ...session,
49
+ status: "completed",
50
+ order: result.order_id
51
+ ? {
52
+ id: result.order_id,
53
+ checkout_id: id,
54
+ permalink_url: `${agenticCommerceService.getStorefrontUrl()}/orders/${result.order_id}`,
55
+ links: [{ type: "self", url: `${(0, public_url_1.getPublicBaseUrl)(req)}/ucp/orders/${result.order_id}` }],
56
+ }
57
+ : null,
58
+ });
59
+ }
60
+ catch (error) {
61
+ // On payment failure, refresh payment state
62
+ try {
63
+ await (0, core_flows_1.refreshPaymentCollectionForCartWorkflow)(req.scope).run({
64
+ input: { cart_id: id },
65
+ });
66
+ }
67
+ catch {
68
+ // Best effort cleanup
69
+ }
70
+ res.status(500).json((0, error_formatters_1.formatUcpError)({
71
+ ucpVersion: UCP_VERSION,
72
+ code: "checkout_failed",
73
+ content: error.message,
74
+ }));
75
+ }
76
+ }
77
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../../src/api/ucp/checkout-sessions/[id]/complete/route.ts"],"names":[],"mappings":";;;;;AASA,oBAoEC;AA5ED,mHAAgG;AAChG,4DAAqF;AACrF,gEAA6E;AAC7E,0EAAoE;AACpE,8DAAgE;AAEhE,MAAM,WAAW,GAAG,YAAY,CAAA;AAEzB,KAAK,UAAU,IAAI,CAAC,GAAkB,EAAE,GAAmB;IAChE,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAA;IACzB,MAAM,IAAI,GAAG,GAAG,CAAC,aAAoB,CAAA;IAErC,MAAM,sBAAsB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAQ,CAAA;IAC1E,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,oBAAoB,EAAE,CAAA;IAEvE,uDAAuD;IACvD,yFAAyF;IACzF,MAAM,YAAY,GAAG,IAAI,EAAE,mBAAmB,CAAA;IAC9C,MAAM,oBAAoB,GAAG,YAAY,EAAE,UAAU,EAAE,UAAU,CAAA;IACjE,MAAM,oBAAoB,GAAG,oBAAoB,EAAE,aAAa,IAAI,YAAY,EAAE,KAAK,CAAA;IACvF,MAAM,WAAW,GAAG,oBAAoB,EAAE,YAAY,CAAA;IAEtD,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,mCAA+B,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;YACtE,KAAK,EAAE;gBACL,OAAO,EAAE,EAAE;gBACX,mBAAmB,EAAE,iBAAiB;gBACtC,YAAY,EAAE,oBAAoB;oBAChC,CAAC,CAAC;wBACE,qBAAqB,EAAE,oBAAoB;wBAC3C,YAAY,EAAE,WAAW;wBACzB,UAAU,EAAE,YAAY,EAAE,OAAO;qBAClC;oBACH,CAAC,CAAC,SAAS;aACd;SACF,CAAC,CAAA;QAEF,sCAAsC;QACtC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAQ,CAAA;QAC/C,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;YACzC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,0CAA4B;YACpC,OAAO,EAAE,EAAE,EAAE,EAAE;SAChB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,GAAG,IAAA,6BAAgB,EAAC,GAAG,CAAC,wBAAwB,CAAA;QAChE,MAAM,OAAO,GAAG,sBAAsB,CAAC,wBAAwB,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,CAAA;QAEpF,GAAG,CAAC,IAAI,CAAC;YACP,GAAG,OAAO;YACV,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,MAAM,CAAC,QAAQ;gBACpB,CAAC,CAAC;oBACE,EAAE,EAAE,MAAM,CAAC,QAAQ;oBACnB,WAAW,EAAE,EAAE;oBACf,aAAa,EAAE,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,WAAW,MAAM,CAAC,QAAQ,EAAE;oBACvF,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAA,6BAAgB,EAAC,GAAG,CAAC,eAAe,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;iBACzF;gBACH,CAAC,CAAC,IAAI;SACT,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,4CAA4C;QAC5C,IAAI,CAAC;YACH,MAAM,IAAA,oDAAuC,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;gBAC3D,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;aACvB,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;QAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAA,iCAAc,EAAC;YAClC,UAAU,EAAE,WAAW;YACvB,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC,CAAA;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
2
+ export declare function GET(req: MedusaRequest, res: MedusaResponse): Promise<void>;
3
+ export declare function PUT(req: MedusaRequest, res: MedusaResponse): Promise<void>;
4
+ //# sourceMappingURL=route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/ucp/checkout-sessions/[id]/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAS7E,wBAAsB,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,iBAgChE;AAED,wBAAsB,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,iBA2EhE"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GET = GET;
7
+ exports.PUT = PUT;
8
+ const update_checkout_session_1 = __importDefault(require("../../../../workflows/update-checkout-session"));
9
+ const cart_fields_1 = require("../../../../lib/cart-fields");
10
+ const address_translator_1 = require("../../../../lib/address-translator");
11
+ const error_formatters_1 = require("../../../../lib/error-formatters");
12
+ const public_url_1 = require("../../../../lib/public-url");
13
+ const UCP_VERSION = "2026-01-11";
14
+ async function GET(req, res) {
15
+ const { id } = req.params;
16
+ try {
17
+ const query = req.scope.resolve("query");
18
+ const { data: [cart] } = await query.graph({
19
+ entity: "cart",
20
+ fields: cart_fields_1.CHECKOUT_SESSION_CART_FIELDS,
21
+ filters: { id },
22
+ });
23
+ if (!cart) {
24
+ res.status(404).json((0, error_formatters_1.formatUcpError)({
25
+ ucpVersion: UCP_VERSION,
26
+ code: "not_found",
27
+ content: "Checkout session not found",
28
+ }));
29
+ return;
30
+ }
31
+ const agenticCommerceService = req.scope.resolve("agenticCommerce");
32
+ const baseUrl = `${(0, public_url_1.getPublicBaseUrl)(req)}/ucp/checkout-sessions`;
33
+ const session = agenticCommerceService.formatUcpCheckoutSession(cart, baseUrl);
34
+ res.json(session);
35
+ }
36
+ catch (error) {
37
+ res.status(500).json((0, error_formatters_1.formatUcpError)({
38
+ ucpVersion: UCP_VERSION,
39
+ code: "internal_error",
40
+ content: error.message,
41
+ }));
42
+ }
43
+ }
44
+ async function PUT(req, res) {
45
+ const { id } = req.params;
46
+ try {
47
+ const body = req.validatedBody;
48
+ // Translate UCP field names to internal format
49
+ const items = body.line_items
50
+ ? body.line_items.map((li) => ({
51
+ variant_id: li.item?.id,
52
+ line_item_id: li.line_item_id,
53
+ quantity: li.quantity,
54
+ }))
55
+ : undefined;
56
+ const email = body.buyer?.email;
57
+ const shippingAddress = body.shipping_address
58
+ ? (0, address_translator_1.ucpAddressToMedusa)(body.shipping_address)
59
+ : undefined;
60
+ await (0, update_checkout_session_1.default)(req.scope).run({
61
+ input: {
62
+ cart_id: id,
63
+ items,
64
+ email,
65
+ shipping_address: shippingAddress,
66
+ },
67
+ });
68
+ // Fetch updated cart
69
+ const query = req.scope.resolve("query");
70
+ const { data: [cart] } = await query.graph({
71
+ entity: "cart",
72
+ fields: cart_fields_1.CHECKOUT_SESSION_CART_FIELDS,
73
+ filters: { id },
74
+ });
75
+ if (!cart) {
76
+ res.status(404).json((0, error_formatters_1.formatUcpError)({
77
+ ucpVersion: UCP_VERSION,
78
+ code: "not_found",
79
+ content: "Checkout session not found",
80
+ }));
81
+ return;
82
+ }
83
+ const agenticCommerceService = req.scope.resolve("agenticCommerce");
84
+ const baseUrl = `${(0, public_url_1.getPublicBaseUrl)(req)}/ucp/checkout-sessions`;
85
+ // Re-prepare payment requirements if total changed
86
+ const paymentHandlers = agenticCommerceService.getPaymentHandlerService();
87
+ await paymentHandlers.prepareCheckoutPayment({
88
+ cart,
89
+ checkoutBaseUrl: baseUrl,
90
+ storeName: agenticCommerceService.getStoreName(),
91
+ container: req.scope,
92
+ });
93
+ // Re-fetch to include any metadata updates from checkout-prepare
94
+ const { data: [updatedCart] } = await query.graph({
95
+ entity: "cart",
96
+ fields: cart_fields_1.CHECKOUT_SESSION_CART_FIELDS,
97
+ filters: { id },
98
+ });
99
+ const session = agenticCommerceService.formatUcpCheckoutSession(updatedCart || cart, baseUrl);
100
+ res.json(session);
101
+ }
102
+ catch (error) {
103
+ res.status(500).json((0, error_formatters_1.formatUcpError)({
104
+ ucpVersion: UCP_VERSION,
105
+ code: "internal_error",
106
+ content: error.message,
107
+ }));
108
+ }
109
+ }
110
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/ucp/checkout-sessions/[id]/route.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
2
+ export declare function POST(req: MedusaRequest, res: MedusaResponse): Promise<void>;
3
+ //# sourceMappingURL=route.d.ts.map