@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 @@
1
+ {"version":3,"file":"validation-schemas.d.ts","sourceRoot":"","sources":["../../../../src/api/validation-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,yBAAyB,CAAA;AA4C3C,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBzC,CAAA;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAezC,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,gCAAgC;;;;;;gBAMrC,0DAA0D;;gBAE1D,qCAAqC;;gBAErC,sEAAsE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW5E,CAAA;AAKF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAezC,CAAA;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWzC,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,gCAAgC;;;;;;gBAMrC,0DAA0D;;gBAE1D,qCAAqC;;;;;;;;;;;;;;;;;;;;;;QAIzC,4FAA4F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK9F,CAAA;AAIF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa9B,CAAA;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU9B,CAAA;AAIF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW9B,CAAA;AAEF,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAA"}
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CatalogLookupSchema = exports.CatalogSearchSchema = exports.UpdateUcpCartSchema = exports.CreateUcpCartSchema = exports.CompleteUcpCheckoutSessionSchema = exports.UpdateUcpCheckoutSessionSchema = exports.CreateUcpCheckoutSessionSchema = exports.CompleteAcpCheckoutSessionSchema = exports.UpdateAcpCheckoutSessionSchema = exports.CreateAcpCheckoutSessionSchema = void 0;
4
+ const zod_1 = require("@medusajs/framework/zod");
5
+ // --- Shared schemas ---
6
+ // Medusa internal address format (used by workflows)
7
+ const MedusaAddressSchema = zod_1.z.object({
8
+ first_name: zod_1.z.string().optional(),
9
+ last_name: zod_1.z.string().optional(),
10
+ address_1: zod_1.z.string(),
11
+ address_2: zod_1.z.string().optional(),
12
+ city: zod_1.z.string(),
13
+ province: zod_1.z.string().optional(),
14
+ postal_code: zod_1.z.string(),
15
+ country_code: zod_1.z.string().min(2).max(2),
16
+ phone: zod_1.z.string().optional(),
17
+ });
18
+ // ACP address format (protocol-facing)
19
+ const AcpAddressSchema = zod_1.z.object({
20
+ name: zod_1.z.string().optional(),
21
+ line_one: zod_1.z.string(),
22
+ line_two: zod_1.z.string().optional(),
23
+ city: zod_1.z.string(),
24
+ state: zod_1.z.string().optional(),
25
+ postal_code: zod_1.z.string(),
26
+ country: zod_1.z.string().min(2).max(2),
27
+ phone_number: zod_1.z.string().optional(),
28
+ });
29
+ // UCP address format (protocol-facing)
30
+ const UcpAddressSchema = zod_1.z.object({
31
+ name: zod_1.z.string().optional(),
32
+ line1: zod_1.z.string(),
33
+ line2: zod_1.z.string().optional(),
34
+ city: zod_1.z.string(),
35
+ state: zod_1.z.string().optional(),
36
+ postal_code: zod_1.z.string(),
37
+ country: zod_1.z.string().min(2).max(2),
38
+ phone: zod_1.z.string().optional(),
39
+ });
40
+ // --- ACP schemas ---
41
+ // ACP uses items[].id (not variant_id), fulfillment_details (not fulfillment_address)
42
+ exports.CreateAcpCheckoutSessionSchema = zod_1.z.object({
43
+ items: zod_1.z.array(zod_1.z.object({
44
+ id: zod_1.z.string(),
45
+ quantity: zod_1.z.number().int().positive(),
46
+ })).min(1),
47
+ region_id: zod_1.z.string().optional(),
48
+ currency_code: zod_1.z.string().optional(),
49
+ buyer: zod_1.z.object({
50
+ email: zod_1.z.string().email(),
51
+ first_name: zod_1.z.string().optional(),
52
+ last_name: zod_1.z.string().optional(),
53
+ phone_number: zod_1.z.string().optional(),
54
+ }).optional(),
55
+ fulfillment_details: zod_1.z.object({
56
+ name: zod_1.z.string().optional(),
57
+ email: zod_1.z.string().email().optional(),
58
+ phone_number: zod_1.z.string().optional(),
59
+ address: AcpAddressSchema,
60
+ }).optional(),
61
+ webhook_url: zod_1.z.string().url().optional(),
62
+ });
63
+ exports.UpdateAcpCheckoutSessionSchema = zod_1.z.object({
64
+ items: zod_1.z.array(zod_1.z.object({
65
+ id: zod_1.z.string(),
66
+ quantity: zod_1.z.number().int().positive(),
67
+ })).optional(),
68
+ buyer: zod_1.z.object({
69
+ email: zod_1.z.string().email().optional(),
70
+ first_name: zod_1.z.string().optional(),
71
+ last_name: zod_1.z.string().optional(),
72
+ }).optional(),
73
+ fulfillment_details: zod_1.z.object({
74
+ name: zod_1.z.string().optional(),
75
+ address: AcpAddressSchema,
76
+ }).optional(),
77
+ fulfillment_option_id: zod_1.z.string().optional(),
78
+ });
79
+ /**
80
+ * ACP complete checkout schema.
81
+ * Instrument type is handler-defined — we accept "eip3009_authorization" for Prism.
82
+ * The credential contains the base64-encoded x402 PaymentAuthorizationResult.
83
+ */
84
+ exports.CompleteAcpCheckoutSessionSchema = zod_1.z.object({
85
+ payment_data: zod_1.z.object({
86
+ handler_id: zod_1.z.string().optional(),
87
+ instrument: zod_1.z.object({
88
+ type: zod_1.z.string().optional(), // "eip3009_authorization" for Prism
89
+ credential: zod_1.z.object({
90
+ /** Base64-encoded x402 PaymentAuthorizationResult JSON */
91
+ authorization: zod_1.z.string().optional(),
92
+ /** x402 protocol version (1 or 2) */
93
+ x402_version: zod_1.z.number().int().optional(),
94
+ /** @deprecated Use authorization field. Kept for backwards compat. */
95
+ token: zod_1.z.string().optional(),
96
+ }).optional(),
97
+ }).optional(),
98
+ }).optional(),
99
+ buyer: zod_1.z.object({
100
+ email: zod_1.z.string().email().optional(),
101
+ first_name: zod_1.z.string().optional(),
102
+ last_name: zod_1.z.string().optional(),
103
+ }).optional(),
104
+ billing_address: AcpAddressSchema.optional(),
105
+ });
106
+ // --- UCP schemas ---
107
+ // UCP uses line_items[].item.id (not variant_id)
108
+ exports.CreateUcpCheckoutSessionSchema = zod_1.z.object({
109
+ line_items: zod_1.z.array(zod_1.z.object({
110
+ item: zod_1.z.object({ id: zod_1.z.string() }),
111
+ quantity: zod_1.z.number().int().positive(),
112
+ })).min(1),
113
+ context: zod_1.z.object({
114
+ country: zod_1.z.string().optional(),
115
+ region: zod_1.z.string().optional(),
116
+ currency: zod_1.z.string().optional(),
117
+ }).optional(),
118
+ buyer: zod_1.z.object({
119
+ email: zod_1.z.string().email().optional(),
120
+ name: zod_1.z.string().optional(),
121
+ }).optional(),
122
+ shipping_address: UcpAddressSchema.optional(),
123
+ });
124
+ exports.UpdateUcpCheckoutSessionSchema = zod_1.z.object({
125
+ line_items: zod_1.z.array(zod_1.z.object({
126
+ item: zod_1.z.object({ id: zod_1.z.string() }).optional(),
127
+ line_item_id: zod_1.z.string().optional(),
128
+ quantity: zod_1.z.number().int().min(0),
129
+ })).optional(),
130
+ buyer: zod_1.z.object({
131
+ email: zod_1.z.string().email().optional(),
132
+ name: zod_1.z.string().optional(),
133
+ }).optional(),
134
+ shipping_address: UcpAddressSchema.optional(),
135
+ });
136
+ /**
137
+ * UCP complete checkout schema.
138
+ * Uses the instrument model matching UCP spec — handler + instrument with credential.
139
+ */
140
+ exports.CompleteUcpCheckoutSessionSchema = zod_1.z.object({
141
+ payment_credentials: zod_1.z.object({
142
+ handler: zod_1.z.string().optional(), // "xyz.fd.prism_payment"
143
+ instrument: zod_1.z.object({
144
+ type: zod_1.z.string().optional(), // "eip3009_authorization"
145
+ credential: zod_1.z.object({
146
+ /** Base64-encoded x402 PaymentAuthorizationResult JSON */
147
+ authorization: zod_1.z.string().optional(),
148
+ /** x402 protocol version (1 or 2) */
149
+ x402_version: zod_1.z.number().int().optional(),
150
+ }).optional(),
151
+ }).optional(),
152
+ /** @deprecated Legacy flat token field. Use instrument.credential.authorization instead. */
153
+ token: zod_1.z.string().optional(),
154
+ chain: zod_1.z.string().optional(),
155
+ currency: zod_1.z.string().optional(),
156
+ }).optional(),
157
+ });
158
+ // --- UCP Cart schemas ---
159
+ exports.CreateUcpCartSchema = zod_1.z.object({
160
+ line_items: zod_1.z.array(zod_1.z.object({
161
+ item: zod_1.z.object({ id: zod_1.z.string() }),
162
+ quantity: zod_1.z.number().int().positive(),
163
+ })).optional(),
164
+ context: zod_1.z.object({
165
+ country: zod_1.z.string().optional(),
166
+ region: zod_1.z.string().optional(),
167
+ currency: zod_1.z.string().optional(),
168
+ }).optional(),
169
+ buyer: zod_1.z.object({
170
+ email: zod_1.z.string().email().optional(),
171
+ }).optional(),
172
+ });
173
+ exports.UpdateUcpCartSchema = zod_1.z.object({
174
+ line_items: zod_1.z.array(zod_1.z.object({
175
+ item: zod_1.z.object({ id: zod_1.z.string() }).optional(),
176
+ line_item_id: zod_1.z.string().optional(),
177
+ quantity: zod_1.z.number().int().min(0),
178
+ })).optional(),
179
+ buyer: zod_1.z.object({
180
+ email: zod_1.z.string().email().optional(),
181
+ }).optional(),
182
+ shipping_address: UcpAddressSchema.optional(),
183
+ });
184
+ // --- UCP Catalog schemas ---
185
+ exports.CatalogSearchSchema = zod_1.z.object({
186
+ query: zod_1.z.string().optional(),
187
+ filters: zod_1.z.object({
188
+ category: zod_1.z.string().optional(),
189
+ min_price: zod_1.z.number().optional(),
190
+ max_price: zod_1.z.number().optional(),
191
+ }).optional(),
192
+ pagination: zod_1.z.object({
193
+ limit: zod_1.z.number().int().positive().max(100).optional().default(20),
194
+ offset: zod_1.z.number().int().min(0).optional().default(0),
195
+ }).optional(),
196
+ });
197
+ exports.CatalogLookupSchema = zod_1.z.object({
198
+ ids: zod_1.z.array(zod_1.z.string()).min(1),
199
+ });
200
+ //# sourceMappingURL=validation-schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-schemas.js","sourceRoot":"","sources":["../../../../src/api/validation-schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
2
+ export declare function GET(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/well-known/acp.json/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAG7E,wBAAsB,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,iBAyChE"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ const public_url_1 = require("../../../lib/public-url");
5
+ async function GET(req, res) {
6
+ const baseUrl = (0, public_url_1.getPublicBaseUrl)(req);
7
+ const agenticCommerceService = req.scope.resolve("agenticCommerce");
8
+ const paymentHandlers = agenticCommerceService.getPaymentHandlerService();
9
+ const acpVersion = agenticCommerceService.getAcpVersion();
10
+ // Fetch supported currencies from regions
11
+ let supportedCurrencies = ["eur"];
12
+ try {
13
+ const query = req.scope.resolve("query");
14
+ const { data: regions } = await query.graph({
15
+ entity: "region",
16
+ fields: ["currency_code"],
17
+ });
18
+ if (regions.length > 0) {
19
+ supportedCurrencies = [...new Set(regions.map((r) => r.currency_code))];
20
+ }
21
+ }
22
+ catch {
23
+ // Fall back to default
24
+ }
25
+ const handlers = await paymentHandlers.getAcpDiscoveryHandlers();
26
+ res.json({
27
+ protocol: {
28
+ name: "acp",
29
+ version: acpVersion,
30
+ supported_versions: [acpVersion],
31
+ },
32
+ api_base_url: `${baseUrl}/acp`,
33
+ transports: ["rest"],
34
+ capabilities: {
35
+ services: ["checkout", "orders"],
36
+ payment: {
37
+ handlers,
38
+ },
39
+ supported_currencies: supportedCurrencies,
40
+ supported_locales: ["en"],
41
+ },
42
+ });
43
+ }
44
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/well-known/acp.json/route.ts"],"names":[],"mappings":";;AAGA,kBAyCC;AA3CD,wDAA0D;AAEnD,KAAK,UAAU,GAAG,CAAC,GAAkB,EAAE,GAAmB;IAC/D,MAAM,OAAO,GAAG,IAAA,6BAAgB,EAAC,GAAG,CAAC,CAAA;IACrC,MAAM,sBAAsB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAQ,CAAA;IAC1E,MAAM,eAAe,GAAG,sBAAsB,CAAC,wBAAwB,EAAE,CAAA;IAEzE,MAAM,UAAU,GAAG,sBAAsB,CAAC,aAAa,EAAE,CAAA;IAEzD,0CAA0C;IAC1C,IAAI,mBAAmB,GAAa,CAAC,KAAK,CAAC,CAAA;IAC3C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAQ,CAAA;QAC/C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;YAC1C,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,eAAe,CAAC;SAC1B,CAAC,CAAA;QACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,mBAAmB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAa,CAAA;QAC1F,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uBAAuB;IACzB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,uBAAuB,EAAE,CAAA;IAEhE,GAAG,CAAC,IAAI,CAAC;QACP,QAAQ,EAAE;YACR,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,UAAU;YACnB,kBAAkB,EAAE,CAAC,UAAU,CAAC;SACjC;QACD,YAAY,EAAE,GAAG,OAAO,MAAM;QAC9B,UAAU,EAAE,CAAC,MAAM,CAAC;QACpB,YAAY,EAAE;YACZ,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC;YAChC,OAAO,EAAE;gBACP,QAAQ;aACT;YACD,oBAAoB,EAAE,mBAAmB;YACzC,iBAAiB,EAAE,CAAC,IAAI,CAAC;SAC1B;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http";
2
+ export declare function GET(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/well-known/ucp/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAG7E,wBAAsB,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,iBAiChE"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ const public_url_1 = require("../../../lib/public-url");
5
+ async function GET(req, res) {
6
+ const baseUrl = (0, public_url_1.getPublicBaseUrl)(req);
7
+ const agenticCommerceService = req.scope.resolve("agenticCommerce");
8
+ const paymentHandlers = agenticCommerceService.getPaymentHandlerService();
9
+ const ucpVersion = agenticCommerceService.getUcpVersion();
10
+ const handlers = await paymentHandlers.getUcpDiscoveryHandlers();
11
+ res.json({
12
+ ucp: {
13
+ version: ucpVersion,
14
+ services: {
15
+ "dev.ucp.shopping": [
16
+ {
17
+ version: ucpVersion,
18
+ transport: "rest",
19
+ endpoint: `${baseUrl}/ucp`,
20
+ },
21
+ ],
22
+ },
23
+ capabilities: {
24
+ "dev.ucp.shopping.catalog.search": [{ version: ucpVersion }],
25
+ "dev.ucp.shopping.catalog.lookup": [{ version: ucpVersion }],
26
+ "dev.ucp.shopping.checkout": [{ version: ucpVersion }],
27
+ "dev.ucp.shopping.cart": [{ version: ucpVersion }],
28
+ "dev.ucp.shopping.order": [{ version: ucpVersion }],
29
+ },
30
+ payment_handlers: handlers,
31
+ },
32
+ });
33
+ }
34
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../src/api/well-known/ucp/route.ts"],"names":[],"mappings":";;AAGA,kBAiCC;AAnCD,wDAA0D;AAEnD,KAAK,UAAU,GAAG,CAAC,GAAkB,EAAE,GAAmB;IAC/D,MAAM,OAAO,GAAG,IAAA,6BAAgB,EAAC,GAAG,CAAC,CAAA;IACrC,MAAM,sBAAsB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAQ,CAAA;IAC1E,MAAM,eAAe,GAAG,sBAAsB,CAAC,wBAAwB,EAAE,CAAA;IAEzE,MAAM,UAAU,GAAG,sBAAsB,CAAC,aAAa,EAAE,CAAA;IACzD,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,uBAAuB,EAAE,CAAA;IAEhE,GAAG,CAAC,IAAI,CAAC;QACP,GAAG,EAAE;YACH,OAAO,EAAE,UAAU;YAEnB,QAAQ,EAAE;gBACR,kBAAkB,EAAE;oBAClB;wBACE,OAAO,EAAE,UAAU;wBACnB,SAAS,EAAE,MAAM;wBACjB,QAAQ,EAAE,GAAG,OAAO,MAAM;qBAC3B;iBACF;aACF;YAED,YAAY,EAAE;gBACZ,iCAAiC,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;gBAC5D,iCAAiC,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;gBAC5D,2BAA2B,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;gBACtD,uBAAuB,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;gBAClD,wBAAwB,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;aACpD;YAED,gBAAgB,EAAE,QAAQ;SAC3B;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @financedistrict/medusa-plugin-agentic-commerce
3
+ *
4
+ * Agentic commerce plugin for Medusa v2 — adds UCP and ACP protocol support,
5
+ * enabling AI agents to browse, checkout, and pay at any Medusa storefront.
6
+ *
7
+ * This is the core protocol plugin. Payment handling is pluggable via the
8
+ * PaymentHandlerAdapter interface — install a payment handler plugin
9
+ * (e.g., @financedistrict/medusa-plugin-prism-payment for x402 stablecoins)
10
+ * and reference it in your config.
11
+ *
12
+ * Usage in medusa-config.ts:
13
+ *
14
+ * ```ts
15
+ * export default defineConfig({
16
+ * modules: [
17
+ * // 1. Register your payment handler adapter (e.g., Prism for x402 stablecoins)
18
+ * {
19
+ * resolve: "@financedistrict/medusa-plugin-prism-payment/modules/prism-payment-handler",
20
+ * options: {
21
+ * api_url: process.env.PRISM_API_URL,
22
+ * api_key: process.env.PRISM_API_KEY,
23
+ * },
24
+ * },
25
+ * // 2. Register the core agentic commerce module
26
+ * {
27
+ * resolve: "@financedistrict/medusa-plugin-agentic-commerce/modules/agentic-commerce",
28
+ * options: {
29
+ * store_name: "My Store",
30
+ * storefront_url: process.env.STOREFRONT_URL,
31
+ * api_key: process.env.AGENTIC_COMMERCE_API_KEY,
32
+ * payment_handler_adapters: ["prismPaymentHandler"],
33
+ * },
34
+ * },
35
+ * ],
36
+ * })
37
+ * ```
38
+ */
39
+ export { default as AgenticCommerceModule, AGENTIC_COMMERCE_MODULE } from "./modules/agentic-commerce";
40
+ export type { PaymentHandlerAdapter, CheckoutPrepareInput } from "./types/payment-handler-adapter";
41
+ export { PaymentHandlerRegistry } from "./lib/payment-handler-registry";
42
+ export { default as AgenticCommerceService } from "./modules/agentic-commerce/service";
43
+ export type { AgenticCommerceOptions } from "./modules/agentic-commerce/service";
44
+ export { getPublicBaseUrl } from "./lib/public-url";
45
+ export { formatAcpError, formatUcpError } from "./lib/error-formatters";
46
+ export type { AcpErrorResponse, UcpErrorResponse } from "./lib/error-formatters";
47
+ export { CHECKOUT_SESSION_CART_FIELDS, CART_VALIDATION_FIELDS } from "./lib/cart-fields";
48
+ export { ORDER_FIELDS } from "./lib/order-fields";
49
+ export { medusaToAcpAddress, acpAddressToMedusa, medusaToUcpAddress, ucpAddressToMedusa, } from "./lib/address-translator";
50
+ export { resolveAcpStatus, resolveUcpStatus } from "./lib/status-maps";
51
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAMH,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAMtG,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAClG,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AAMvE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,oCAAoC,CAAA;AACtF,YAAY,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAA;AAMhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ /**
3
+ * @financedistrict/medusa-plugin-agentic-commerce
4
+ *
5
+ * Agentic commerce plugin for Medusa v2 — adds UCP and ACP protocol support,
6
+ * enabling AI agents to browse, checkout, and pay at any Medusa storefront.
7
+ *
8
+ * This is the core protocol plugin. Payment handling is pluggable via the
9
+ * PaymentHandlerAdapter interface — install a payment handler plugin
10
+ * (e.g., @financedistrict/medusa-plugin-prism-payment for x402 stablecoins)
11
+ * and reference it in your config.
12
+ *
13
+ * Usage in medusa-config.ts:
14
+ *
15
+ * ```ts
16
+ * export default defineConfig({
17
+ * modules: [
18
+ * // 1. Register your payment handler adapter (e.g., Prism for x402 stablecoins)
19
+ * {
20
+ * resolve: "@financedistrict/medusa-plugin-prism-payment/modules/prism-payment-handler",
21
+ * options: {
22
+ * api_url: process.env.PRISM_API_URL,
23
+ * api_key: process.env.PRISM_API_KEY,
24
+ * },
25
+ * },
26
+ * // 2. Register the core agentic commerce module
27
+ * {
28
+ * resolve: "@financedistrict/medusa-plugin-agentic-commerce/modules/agentic-commerce",
29
+ * options: {
30
+ * store_name: "My Store",
31
+ * storefront_url: process.env.STOREFRONT_URL,
32
+ * api_key: process.env.AGENTIC_COMMERCE_API_KEY,
33
+ * payment_handler_adapters: ["prismPaymentHandler"],
34
+ * },
35
+ * },
36
+ * ],
37
+ * })
38
+ * ```
39
+ */
40
+ var __importDefault = (this && this.__importDefault) || function (mod) {
41
+ return (mod && mod.__esModule) ? mod : { "default": mod };
42
+ };
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.resolveUcpStatus = exports.resolveAcpStatus = exports.ucpAddressToMedusa = exports.medusaToUcpAddress = exports.acpAddressToMedusa = exports.medusaToAcpAddress = exports.ORDER_FIELDS = exports.CART_VALIDATION_FIELDS = exports.CHECKOUT_SESSION_CART_FIELDS = exports.formatUcpError = exports.formatAcpError = exports.getPublicBaseUrl = exports.AgenticCommerceService = exports.PaymentHandlerRegistry = exports.AGENTIC_COMMERCE_MODULE = exports.AgenticCommerceModule = void 0;
45
+ // =====================================================
46
+ // Module exports
47
+ // =====================================================
48
+ var agentic_commerce_1 = require("./modules/agentic-commerce");
49
+ Object.defineProperty(exports, "AgenticCommerceModule", { enumerable: true, get: function () { return __importDefault(agentic_commerce_1).default; } });
50
+ Object.defineProperty(exports, "AGENTIC_COMMERCE_MODULE", { enumerable: true, get: function () { return agentic_commerce_1.AGENTIC_COMMERCE_MODULE; } });
51
+ var payment_handler_registry_1 = require("./lib/payment-handler-registry");
52
+ Object.defineProperty(exports, "PaymentHandlerRegistry", { enumerable: true, get: function () { return payment_handler_registry_1.PaymentHandlerRegistry; } });
53
+ // =====================================================
54
+ // Service exports (for type usage)
55
+ // =====================================================
56
+ var service_1 = require("./modules/agentic-commerce/service");
57
+ Object.defineProperty(exports, "AgenticCommerceService", { enumerable: true, get: function () { return __importDefault(service_1).default; } });
58
+ // =====================================================
59
+ // Utility exports
60
+ // =====================================================
61
+ var public_url_1 = require("./lib/public-url");
62
+ Object.defineProperty(exports, "getPublicBaseUrl", { enumerable: true, get: function () { return public_url_1.getPublicBaseUrl; } });
63
+ var error_formatters_1 = require("./lib/error-formatters");
64
+ Object.defineProperty(exports, "formatAcpError", { enumerable: true, get: function () { return error_formatters_1.formatAcpError; } });
65
+ Object.defineProperty(exports, "formatUcpError", { enumerable: true, get: function () { return error_formatters_1.formatUcpError; } });
66
+ var cart_fields_1 = require("./lib/cart-fields");
67
+ Object.defineProperty(exports, "CHECKOUT_SESSION_CART_FIELDS", { enumerable: true, get: function () { return cart_fields_1.CHECKOUT_SESSION_CART_FIELDS; } });
68
+ Object.defineProperty(exports, "CART_VALIDATION_FIELDS", { enumerable: true, get: function () { return cart_fields_1.CART_VALIDATION_FIELDS; } });
69
+ var order_fields_1 = require("./lib/order-fields");
70
+ Object.defineProperty(exports, "ORDER_FIELDS", { enumerable: true, get: function () { return order_fields_1.ORDER_FIELDS; } });
71
+ // Address translators (useful for payment handler adapters)
72
+ var address_translator_1 = require("./lib/address-translator");
73
+ Object.defineProperty(exports, "medusaToAcpAddress", { enumerable: true, get: function () { return address_translator_1.medusaToAcpAddress; } });
74
+ Object.defineProperty(exports, "acpAddressToMedusa", { enumerable: true, get: function () { return address_translator_1.acpAddressToMedusa; } });
75
+ Object.defineProperty(exports, "medusaToUcpAddress", { enumerable: true, get: function () { return address_translator_1.medusaToUcpAddress; } });
76
+ Object.defineProperty(exports, "ucpAddressToMedusa", { enumerable: true, get: function () { return address_translator_1.ucpAddressToMedusa; } });
77
+ // Status maps
78
+ var status_maps_1 = require("./lib/status-maps");
79
+ Object.defineProperty(exports, "resolveAcpStatus", { enumerable: true, get: function () { return status_maps_1.resolveAcpStatus; } });
80
+ Object.defineProperty(exports, "resolveUcpStatus", { enumerable: true, get: function () { return status_maps_1.resolveUcpStatus; } });
81
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;;;;;;AAEH,wDAAwD;AACxD,iBAAiB;AACjB,wDAAwD;AAExD,+DAAsG;AAA7F,0IAAA,OAAO,OAAyB;AAAE,2HAAA,uBAAuB,OAAA;AAOlE,2EAAuE;AAA9D,kIAAA,sBAAsB,OAAA;AAE/B,wDAAwD;AACxD,mCAAmC;AACnC,wDAAwD;AAExD,8DAAsF;AAA7E,kIAAA,OAAO,OAA0B;AAG1C,wDAAwD;AACxD,kBAAkB;AAClB,wDAAwD;AAExD,+CAAmD;AAA1C,8GAAA,gBAAgB,OAAA;AACzB,2DAAuE;AAA9D,kHAAA,cAAc,OAAA;AAAE,kHAAA,cAAc,OAAA;AAEvC,iDAAwF;AAA/E,2HAAA,4BAA4B,OAAA;AAAE,qHAAA,sBAAsB,OAAA;AAC7D,mDAAiD;AAAxC,4GAAA,YAAY,OAAA;AAErB,4DAA4D;AAC5D,+DAKiC;AAJ/B,wHAAA,kBAAkB,OAAA;AAClB,wHAAA,kBAAkB,OAAA;AAClB,wHAAA,kBAAkB,OAAA;AAClB,wHAAA,kBAAkB,OAAA;AAGpB,cAAc;AACd,iDAAsE;AAA7D,+GAAA,gBAAgB,OAAA;AAAE,+GAAA,gBAAgB,OAAA"}
@@ -0,0 +1,16 @@
1
+ import { MedusaContainer } from "@medusajs/framework/types";
2
+ /**
3
+ * Scheduled job: syncs the product feed every 15 minutes.
4
+ *
5
+ * For each region/country combination, generates an XML product feed
6
+ * and sends it via the agenticCommerce module service.
7
+ *
8
+ * Currently logs to console — will POST to agent platforms (e.g., OpenAI)
9
+ * when their feed endpoint becomes available.
10
+ */
11
+ export default function syncProductFeed(container: MedusaContainer): Promise<void>;
12
+ export declare const config: {
13
+ name: string;
14
+ schedule: string;
15
+ };
16
+ //# sourceMappingURL=sync-product-feed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-product-feed.d.ts","sourceRoot":"","sources":["../../../../src/jobs/sync-product-feed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAE3D;;;;;;;;GAQG;AACH,wBAA8B,eAAe,CAC3C,SAAS,EAAE,eAAe,iBAsE3B;AAED,eAAO,MAAM,MAAM;;;CAGlB,CAAA"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ exports.default = syncProductFeed;
5
+ /**
6
+ * Scheduled job: syncs the product feed every 15 minutes.
7
+ *
8
+ * For each region/country combination, generates an XML product feed
9
+ * and sends it via the agenticCommerce module service.
10
+ *
11
+ * Currently logs to console — will POST to agent platforms (e.g., OpenAI)
12
+ * when their feed endpoint becomes available.
13
+ */
14
+ async function syncProductFeed(container) {
15
+ const query = container.resolve("query");
16
+ const agenticCommerceService = container.resolve("agenticCommerce");
17
+ const storefrontUrl = agenticCommerceService.getStorefrontUrl();
18
+ const storeName = agenticCommerceService.getStoreName();
19
+ // Get all regions with countries
20
+ const { data: regions } = await query.graph({
21
+ entity: "region",
22
+ fields: ["id", "currency_code", "countries.iso_2"],
23
+ });
24
+ for (const region of regions) {
25
+ // Fetch published products with pricing
26
+ const { data: products } = await query.graph({
27
+ entity: "product",
28
+ fields: [
29
+ "id", "title", "description", "handle", "thumbnail", "status",
30
+ "variants.id", "variants.title", "variants.sku", "variants.prices.*",
31
+ "categories.name",
32
+ "images.url",
33
+ ],
34
+ filters: { status: "published" },
35
+ });
36
+ // Build XML items
37
+ const items = products.map((product) => {
38
+ const variant = product.variants?.[0];
39
+ const price = variant?.prices?.find((p) => p.currency_code === region.currency_code) || variant?.prices?.[0];
40
+ const priceAmount = price ? (price.amount / 100).toFixed(2) : "0.00";
41
+ const currency = price?.currency_code?.toUpperCase() || "EUR";
42
+ const category = product.categories?.[0]?.name || "Merchandise";
43
+ const imageUrl = product.thumbnail || product.images?.[0]?.url || "";
44
+ // Escape XML special characters
45
+ const escXml = (s) => s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
46
+ return ` <item>
47
+ <title><![CDATA[${product.title || ""}]]></title>
48
+ <link>${escXml(storefrontUrl)}/products/${escXml(product.handle || "")}</link>
49
+ <description><![CDATA[${product.description || ""}]]></description>
50
+ <g:id>${escXml(variant?.id || product.id)}</g:id>
51
+ <g:price>${priceAmount} ${currency}</g:price>
52
+ <g:availability>in stock</g:availability>
53
+ <g:condition>new</g:condition>
54
+ <g:brand>${escXml(storeName)}</g:brand>
55
+ <g:product_type>${escXml(category)}</g:product_type>
56
+ <g:image_link>${escXml(imageUrl)}</g:image_link>
57
+ <g:link>${escXml(storefrontUrl)}/products/${escXml(product.handle || "")}</g:link>
58
+ <enable_search>true</enable_search>
59
+ <enable_checkout>true</enable_checkout>
60
+ </item>`;
61
+ });
62
+ const xml = `<?xml version="1.0" encoding="UTF-8"?>
63
+ <rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
64
+ <channel>
65
+ <title>${storeName} Product Feed</title>
66
+ <link>${storefrontUrl}</link>
67
+ <description>Product feed for ${storeName}</description>
68
+ ${items.join("\n")}
69
+ </channel>
70
+ </rss>`;
71
+ await agenticCommerceService.sendProductFeed(xml, region.id);
72
+ }
73
+ }
74
+ exports.config = {
75
+ name: "sync-product-feed",
76
+ schedule: "*/15 * * * *", // Every 15 minutes
77
+ };
78
+ //# sourceMappingURL=sync-product-feed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-product-feed.js","sourceRoot":"","sources":["../../../../src/jobs/sync-product-feed.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Bidirectional address translation between Medusa internal format
3
+ * and protocol-specific formats (ACP, UCP).
4
+ */
5
+ export type MedusaAddress = {
6
+ first_name?: string;
7
+ last_name?: string;
8
+ address_1?: string;
9
+ address_2?: string;
10
+ city?: string;
11
+ province?: string;
12
+ postal_code?: string;
13
+ country_code?: string;
14
+ phone?: string;
15
+ };
16
+ export type AcpAddress = {
17
+ name?: string;
18
+ line_one?: string;
19
+ line_two?: string;
20
+ city?: string;
21
+ state?: string;
22
+ postal_code?: string;
23
+ country?: string;
24
+ phone_number?: string;
25
+ };
26
+ export type UcpAddress = {
27
+ name?: string;
28
+ line1?: string;
29
+ line2?: string;
30
+ city?: string;
31
+ state?: string;
32
+ postal_code?: string;
33
+ country?: string;
34
+ phone?: string;
35
+ };
36
+ export declare function medusaToAcpAddress(addr: MedusaAddress): AcpAddress;
37
+ export declare function acpAddressToMedusa(addr: AcpAddress): MedusaAddress;
38
+ export declare function medusaToUcpAddress(addr: MedusaAddress): UcpAddress;
39
+ export declare function ucpAddressToMedusa(addr: UcpAddress): MedusaAddress;
40
+ //# sourceMappingURL=address-translator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address-translator.d.ts","sourceRoot":"","sources":["../../../../src/lib/address-translator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,CAYlE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,CAoBlE;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,UAAU,CAYlE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,CAoBlE"}