@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,184 @@
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.createIdempotencyMiddleware = createIdempotencyMiddleware;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ const utils_1 = require("@medusajs/framework/utils");
9
+ const IDEMPOTENCY_TTL = 60 * 60 * 24; // 24 hours in seconds
10
+ const PROCESSING_TTL = 60; // 1 minute lock while processing
11
+ function hashBody(body) {
12
+ const serialized = JSON.stringify(body || {});
13
+ return crypto_1.default.createHash("sha256").update(serialized).digest("hex");
14
+ }
15
+ function cacheKey(path, idempotencyKey, identity) {
16
+ return `idempotency:${identity}:${path}:${idempotencyKey}`;
17
+ }
18
+ function extractIdentity(req) {
19
+ // Scope by authenticated identity: API key or UCP-Agent header
20
+ const authHeader = req.headers["authorization"];
21
+ if (authHeader) {
22
+ return crypto_1.default.createHash("sha256").update(authHeader).digest("hex").slice(0, 16);
23
+ }
24
+ const ucpAgent = req.headers["ucp-agent"];
25
+ if (ucpAgent) {
26
+ return crypto_1.default.createHash("sha256").update(ucpAgent).digest("hex").slice(0, 16);
27
+ }
28
+ return "anonymous";
29
+ }
30
+ /**
31
+ * Idempotency middleware for agentic commerce endpoints.
32
+ *
33
+ * - ACP: Idempotency-Key header is REQUIRED on every POST (returns 400 if missing)
34
+ * - UCP: Idempotency-Key header is REQUIRED on POST/PUT (returns 400 if missing)
35
+ *
36
+ * Uses Medusa's cache module (in-memory dev, Redis production) with 24h TTL.
37
+ * Keys are scoped by authenticated identity + request path.
38
+ *
39
+ * Behavior:
40
+ * - New key: mark as "processing", run handler, cache response (skip 5xx)
41
+ * - Duplicate key + same body hash: return cached response with Idempotent-Replayed: true
42
+ * - Duplicate key + different body hash: 422 idempotency_conflict
43
+ * - Duplicate key still processing: 409 with Retry-After: 1
44
+ */
45
+ function createIdempotencyMiddleware(options) {
46
+ return async function idempotencyMiddleware(req, res, next) {
47
+ // Only apply to POST and PUT requests
48
+ if (req.method !== "POST" && req.method !== "PUT") {
49
+ next();
50
+ return;
51
+ }
52
+ const idempotencyKey = req.headers["idempotency-key"];
53
+ // If header missing and required, return 400
54
+ if (!idempotencyKey) {
55
+ if (options.required) {
56
+ if (options.protocol === "acp") {
57
+ res.status(400).json({
58
+ type: "invalid_request",
59
+ code: "idempotency_key_required",
60
+ message: "Idempotency-Key header is required for POST requests",
61
+ });
62
+ }
63
+ else {
64
+ res.status(400).json({
65
+ ucp: { version: "2026-01-11", status: "error" },
66
+ messages: [{
67
+ type: "error",
68
+ code: "idempotency_key_required",
69
+ content: "Idempotency-Key header is required for mutating requests",
70
+ severity: "error",
71
+ }],
72
+ });
73
+ }
74
+ return;
75
+ }
76
+ // Not required and not present — skip
77
+ next();
78
+ return;
79
+ }
80
+ let cacheModule;
81
+ try {
82
+ cacheModule = req.scope.resolve(utils_1.Modules.CACHE);
83
+ }
84
+ catch {
85
+ // Cache module not available — skip idempotency (dev fallback)
86
+ console.warn("[idempotency] Cache module not available, skipping idempotency check");
87
+ next();
88
+ return;
89
+ }
90
+ const identity = extractIdentity(req);
91
+ const key = cacheKey(req.path, idempotencyKey, identity);
92
+ const bodyHash = hashBody(req.body);
93
+ // Check for existing cached response
94
+ const cached = await cacheModule.get(key);
95
+ if (cached) {
96
+ // Body hash mismatch — conflict
97
+ if (cached.body_hash !== bodyHash) {
98
+ if (options.protocol === "acp") {
99
+ res.status(422).json({
100
+ type: "invalid_request",
101
+ code: "idempotency_conflict",
102
+ message: "Idempotency-Key has already been used with a different request body",
103
+ });
104
+ }
105
+ else {
106
+ res.status(422).json({
107
+ ucp: { version: "2026-01-11", status: "error" },
108
+ messages: [{
109
+ type: "error",
110
+ code: "idempotency_conflict",
111
+ content: "Idempotency-Key has already been used with a different request body",
112
+ severity: "error",
113
+ }],
114
+ });
115
+ }
116
+ return;
117
+ }
118
+ // Still processing — retry later
119
+ if (cached.status === "processing") {
120
+ if (options.protocol === "acp") {
121
+ res.status(409).set("Retry-After", "1").json({
122
+ type: "processing_error",
123
+ code: "idempotency_in_flight",
124
+ message: "A request with this Idempotency-Key is currently being processed",
125
+ });
126
+ }
127
+ else {
128
+ res.status(409).set("Retry-After", "1").json({
129
+ ucp: { version: "2026-01-11", status: "error" },
130
+ messages: [{
131
+ type: "error",
132
+ code: "idempotency_in_flight",
133
+ content: "A request with this Idempotency-Key is currently being processed",
134
+ severity: "error",
135
+ }],
136
+ });
137
+ }
138
+ return;
139
+ }
140
+ // Completed — replay cached response
141
+ if (cached.status === "completed" && cached.response_body) {
142
+ res
143
+ .status(cached.response_status || 200)
144
+ .set("Idempotent-Replayed", "true")
145
+ .set("Idempotency-Key", idempotencyKey)
146
+ .json(cached.response_body);
147
+ return;
148
+ }
149
+ }
150
+ // Mark as processing
151
+ const processingEntry = {
152
+ status: "processing",
153
+ body_hash: bodyHash,
154
+ };
155
+ await cacheModule.set(key, processingEntry, PROCESSING_TTL);
156
+ // Intercept res.json to cache the response (skip 5xx)
157
+ const originalJson = res.json.bind(res);
158
+ res.json = function (body) {
159
+ // Only cache successful responses (non-5xx)
160
+ if (res.statusCode < 500) {
161
+ const completedEntry = {
162
+ status: "completed",
163
+ body_hash: bodyHash,
164
+ response_status: res.statusCode,
165
+ response_body: body,
166
+ completed_at: new Date().toISOString(),
167
+ };
168
+ // Cache asynchronously — don't block response
169
+ cacheModule.set(key, completedEntry, IDEMPOTENCY_TTL).catch((err) => {
170
+ console.error("[idempotency] Failed to cache response:", err.message);
171
+ });
172
+ }
173
+ else {
174
+ // 5xx: clean up the processing entry so retries work
175
+ cacheModule.invalidate(key).catch(() => { });
176
+ }
177
+ // Set idempotency headers on response
178
+ res.set("Idempotency-Key", idempotencyKey);
179
+ return originalJson(body);
180
+ };
181
+ next();
182
+ };
183
+ }
184
+ //# sourceMappingURL=idempotency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../../../../../src/api/middleware/idempotency.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("@medusajs/framework/http").MiddlewaresConfig;
2
+ export default _default;
3
+ //# sourceMappingURL=middlewares.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewares.d.ts","sourceRoot":"","sources":["../../../../src/api/middlewares.ts"],"names":[],"mappings":";AAwOA,wBAmIE"}
@@ -0,0 +1,309 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const http_1 = require("@medusajs/framework/http");
4
+ const validation_schemas_1 = require("./validation-schemas");
5
+ const idempotency_1 = require("./middleware/idempotency");
6
+ const error_formatters_1 = require("../lib/error-formatters");
7
+ const error_formatters_2 = require("../lib/error-formatters");
8
+ // Supported ACP API versions
9
+ const SUPPORTED_ACP_VERSIONS = ["2026-01-30"];
10
+ const UCP_VERSION = "2026-01-11";
11
+ // --- ACP Auth Middleware ---
12
+ // Validates Bearer token + API-Version header + optional HMAC signature
13
+ async function validateAcpRequest(req, res, next) {
14
+ // Validate Bearer token
15
+ const apiKey = req.headers["authorization"]?.replace("Bearer ", "").trim();
16
+ if (!apiKey) {
17
+ res.status(401).json((0, error_formatters_1.formatAcpError)({
18
+ type: "invalid_request",
19
+ code: "unauthorized",
20
+ message: "Missing API key in Authorization header",
21
+ httpStatus: 401,
22
+ }));
23
+ return;
24
+ }
25
+ const agenticCommerceService = req.scope.resolve("agenticCommerce");
26
+ if (!agenticCommerceService.validateApiKey(apiKey)) {
27
+ res.status(401).json((0, error_formatters_1.formatAcpError)({
28
+ type: "invalid_request",
29
+ code: "unauthorized",
30
+ message: "Invalid API key",
31
+ httpStatus: 401,
32
+ }));
33
+ return;
34
+ }
35
+ // Validate API-Version header (required by ACP spec)
36
+ const apiVersion = req.headers["api-version"];
37
+ if (!apiVersion) {
38
+ res.status(400).json((0, error_formatters_1.formatAcpError)({
39
+ code: "missing_api_version",
40
+ message: "API-Version header is required for ACP requests",
41
+ httpStatus: 400,
42
+ }));
43
+ return;
44
+ }
45
+ if (!SUPPORTED_ACP_VERSIONS.includes(apiVersion)) {
46
+ res.status(400).json((0, error_formatters_1.formatAcpError)({
47
+ code: "unsupported_api_version",
48
+ message: `Unsupported API-Version: ${apiVersion}. Supported versions: ${SUPPORTED_ACP_VERSIONS.join(", ")}`,
49
+ httpStatus: 400,
50
+ }));
51
+ return;
52
+ }
53
+ // Optional HMAC signature verification for write operations
54
+ if (req.method !== "GET" && req.headers["signature"]) {
55
+ const signature = req.headers["signature"];
56
+ const body = JSON.stringify(req.body || {});
57
+ if (!agenticCommerceService.verifySignature(body, signature)) {
58
+ res.status(403).json((0, error_formatters_1.formatAcpError)({
59
+ code: "invalid_signature",
60
+ message: "Invalid request signature",
61
+ httpStatus: 403,
62
+ }));
63
+ return;
64
+ }
65
+ }
66
+ next();
67
+ }
68
+ // --- ACP Request-Id Middleware ---
69
+ // Echoes client's Request-Id if provided, otherwise generates new
70
+ async function acpRequestId(req, res, next) {
71
+ const clientRequestId = req.headers["request-id"];
72
+ res.set("Request-Id", clientRequestId || crypto.randomUUID());
73
+ next();
74
+ }
75
+ // --- UCP Auth Middleware ---
76
+ // Requires UCP-Agent header, validates Request-Id, optionally validates Bearer token
77
+ async function validateUcpRequest(req, res, next) {
78
+ const ucpAgent = req.headers["ucp-agent"];
79
+ if (!ucpAgent) {
80
+ res.status(400).json((0, error_formatters_2.formatUcpError)({
81
+ ucpVersion: UCP_VERSION,
82
+ code: "missing_ucp_agent",
83
+ content: "Missing UCP-Agent header for platform identification",
84
+ }));
85
+ return;
86
+ }
87
+ // Validate Request-Id header (required by UCP spec)
88
+ const requestId = req.headers["request-id"];
89
+ if (!requestId) {
90
+ res.status(400).json((0, error_formatters_2.formatUcpError)({
91
+ ucpVersion: UCP_VERSION,
92
+ code: "missing_request_id",
93
+ content: "Request-Id header is required for UCP requests",
94
+ }));
95
+ return;
96
+ }
97
+ // Echo Request-Id back
98
+ res.set("Request-Id", requestId);
99
+ // If a Bearer token is provided, validate it
100
+ const authHeader = req.headers["authorization"];
101
+ if (authHeader) {
102
+ const token = authHeader.replace("Bearer ", "").trim();
103
+ const agenticCommerceService = req.scope.resolve("agenticCommerce");
104
+ if (!agenticCommerceService.validateApiKey(token)) {
105
+ res.status(401).json((0, error_formatters_2.formatUcpError)({
106
+ ucpVersion: UCP_VERSION,
107
+ code: "unauthorized",
108
+ content: "Invalid Bearer token",
109
+ }));
110
+ return;
111
+ }
112
+ }
113
+ next();
114
+ }
115
+ // --- Adapter Resolution Middleware ---
116
+ // Resolves payment handler adapters from the request-scoped container.
117
+ // Must run before any route that accesses payment handlers.
118
+ // Module-scoped containers can't see other modules; the request scope can.
119
+ async function resolvePaymentAdapters(req, _res, next) {
120
+ try {
121
+ const agenticCommerceService = req.scope.resolve("agenticCommerce");
122
+ agenticCommerceService.resolveAdapters(req.scope);
123
+ }
124
+ catch {
125
+ // Silently skip — service may not be configured
126
+ }
127
+ next();
128
+ }
129
+ // --- .well-known route handlers ---
130
+ // Medusa's file-based routing ignores directories starting with "." so the
131
+ // actual route files live at src/api/well-known/. These method-specific
132
+ // middleware entries register proper Express routes at the standard
133
+ // /.well-known/ paths that proxy to the real handlers.
134
+ async function wellKnownUcpHandler(req, res) {
135
+ const agenticCommerceService = req.scope.resolve("agenticCommerce");
136
+ const paymentHandlers = agenticCommerceService.getPaymentHandlerService();
137
+ const ucpVersion = agenticCommerceService.getUcpVersion();
138
+ const handlers = await paymentHandlers.getUcpDiscoveryHandlers();
139
+ const baseUrl = `${req.protocol}://${req.get("host")}`;
140
+ res.json({
141
+ ucp: {
142
+ version: ucpVersion,
143
+ services: {
144
+ "dev.ucp.shopping": [{
145
+ version: ucpVersion,
146
+ transport: "rest",
147
+ endpoint: `${baseUrl}/ucp`,
148
+ }],
149
+ },
150
+ capabilities: {
151
+ "dev.ucp.shopping.catalog.search": [{ version: ucpVersion }],
152
+ "dev.ucp.shopping.catalog.lookup": [{ version: ucpVersion }],
153
+ "dev.ucp.shopping.checkout": [{ version: ucpVersion }],
154
+ "dev.ucp.shopping.cart": [{ version: ucpVersion }],
155
+ "dev.ucp.shopping.order": [{ version: ucpVersion }],
156
+ },
157
+ payment_handlers: handlers,
158
+ },
159
+ });
160
+ }
161
+ async function wellKnownAcpHandler(req, res) {
162
+ const agenticCommerceService = req.scope.resolve("agenticCommerce");
163
+ const paymentHandlers = agenticCommerceService.getPaymentHandlerService();
164
+ const acpVersion = agenticCommerceService.getAcpVersion();
165
+ const handlers = await paymentHandlers.getAcpDiscoveryHandlers();
166
+ const baseUrl = `${req.protocol}://${req.get("host")}`;
167
+ res.json({
168
+ protocol: {
169
+ name: "acp",
170
+ version: acpVersion,
171
+ supported_versions: [acpVersion],
172
+ },
173
+ api_base_url: `${baseUrl}/acp`,
174
+ transports: ["rest"],
175
+ capabilities: {
176
+ services: ["checkout", "orders"],
177
+ payment: { handlers },
178
+ supported_currencies: ["eur"],
179
+ supported_locales: ["en"],
180
+ },
181
+ });
182
+ }
183
+ exports.default = (0, http_1.defineMiddlewares)({
184
+ routes: [
185
+ // --- .well-known route aliases ---
186
+ // Registered as app.get() routes so they work at the standard RFC 8615 path.
187
+ // resolvePaymentAdapters runs first to ensure adapters are available.
188
+ {
189
+ matcher: "/.well-known/ucp",
190
+ method: "GET",
191
+ middlewares: [resolvePaymentAdapters, wellKnownUcpHandler],
192
+ },
193
+ {
194
+ matcher: "/.well-known/acp.json",
195
+ method: "GET",
196
+ middlewares: [resolvePaymentAdapters, wellKnownAcpHandler],
197
+ },
198
+ // --- ACP Auth + Adapter Resolution + Request-Id ---
199
+ {
200
+ matcher: "/acp/checkout_sessions*",
201
+ middlewares: [validateAcpRequest, resolvePaymentAdapters, acpRequestId],
202
+ },
203
+ {
204
+ matcher: "/acp/orders*",
205
+ middlewares: [validateAcpRequest, resolvePaymentAdapters, acpRequestId],
206
+ },
207
+ {
208
+ matcher: "/acp/product-feed*",
209
+ middlewares: [validateAcpRequest, resolvePaymentAdapters, acpRequestId],
210
+ },
211
+ // --- ACP Idempotency (required on all POSTs) ---
212
+ {
213
+ matcher: "/acp/checkout_sessions*",
214
+ method: "POST",
215
+ middlewares: [(0, idempotency_1.createIdempotencyMiddleware)({ required: true, protocol: "acp" })],
216
+ },
217
+ // --- ACP Zod Validation ---
218
+ {
219
+ matcher: "/acp/checkout_sessions",
220
+ method: "POST",
221
+ middlewares: [(0, http_1.validateAndTransformBody)(validation_schemas_1.CreateAcpCheckoutSessionSchema)],
222
+ },
223
+ {
224
+ matcher: "/acp/checkout_sessions/:id",
225
+ method: "POST",
226
+ middlewares: [(0, http_1.validateAndTransformBody)(validation_schemas_1.UpdateAcpCheckoutSessionSchema)],
227
+ },
228
+ {
229
+ matcher: "/acp/checkout_sessions/:id/complete",
230
+ method: "POST",
231
+ middlewares: [(0, http_1.validateAndTransformBody)(validation_schemas_1.CompleteAcpCheckoutSessionSchema)],
232
+ },
233
+ // --- UCP Auth + Adapter Resolution ---
234
+ {
235
+ matcher: "/ucp/catalog/*",
236
+ middlewares: [validateUcpRequest, resolvePaymentAdapters],
237
+ },
238
+ {
239
+ matcher: "/ucp/checkout-sessions*",
240
+ middlewares: [validateUcpRequest, resolvePaymentAdapters],
241
+ },
242
+ {
243
+ matcher: "/ucp/carts*",
244
+ middlewares: [validateUcpRequest, resolvePaymentAdapters],
245
+ },
246
+ {
247
+ matcher: "/ucp/orders*",
248
+ middlewares: [validateUcpRequest, resolvePaymentAdapters],
249
+ },
250
+ // --- UCP Idempotency (required on POST/PUT) ---
251
+ {
252
+ matcher: "/ucp/checkout-sessions*",
253
+ method: "POST",
254
+ middlewares: [(0, idempotency_1.createIdempotencyMiddleware)({ required: true, protocol: "ucp" })],
255
+ },
256
+ {
257
+ matcher: "/ucp/checkout-sessions*",
258
+ method: "PUT",
259
+ middlewares: [(0, idempotency_1.createIdempotencyMiddleware)({ required: true, protocol: "ucp" })],
260
+ },
261
+ {
262
+ matcher: "/ucp/carts*",
263
+ method: "POST",
264
+ middlewares: [(0, idempotency_1.createIdempotencyMiddleware)({ required: true, protocol: "ucp" })],
265
+ },
266
+ {
267
+ matcher: "/ucp/carts*",
268
+ method: "PUT",
269
+ middlewares: [(0, idempotency_1.createIdempotencyMiddleware)({ required: true, protocol: "ucp" })],
270
+ },
271
+ // --- UCP Zod Validation ---
272
+ {
273
+ matcher: "/ucp/checkout-sessions",
274
+ method: "POST",
275
+ middlewares: [(0, http_1.validateAndTransformBody)(validation_schemas_1.CreateUcpCheckoutSessionSchema)],
276
+ },
277
+ {
278
+ matcher: "/ucp/checkout-sessions/:id",
279
+ method: "PUT",
280
+ middlewares: [(0, http_1.validateAndTransformBody)(validation_schemas_1.UpdateUcpCheckoutSessionSchema)],
281
+ },
282
+ {
283
+ matcher: "/ucp/checkout-sessions/:id/complete",
284
+ method: "POST",
285
+ middlewares: [(0, http_1.validateAndTransformBody)(validation_schemas_1.CompleteUcpCheckoutSessionSchema)],
286
+ },
287
+ {
288
+ matcher: "/ucp/carts",
289
+ method: "POST",
290
+ middlewares: [(0, http_1.validateAndTransformBody)(validation_schemas_1.CreateUcpCartSchema)],
291
+ },
292
+ {
293
+ matcher: "/ucp/carts/:id",
294
+ method: "PUT",
295
+ middlewares: [(0, http_1.validateAndTransformBody)(validation_schemas_1.UpdateUcpCartSchema)],
296
+ },
297
+ {
298
+ matcher: "/ucp/catalog/search",
299
+ method: "POST",
300
+ middlewares: [(0, http_1.validateAndTransformBody)(validation_schemas_1.CatalogSearchSchema)],
301
+ },
302
+ {
303
+ matcher: "/ucp/catalog/lookup",
304
+ method: "POST",
305
+ middlewares: [(0, http_1.validateAndTransformBody)(validation_schemas_1.CatalogLookupSchema)],
306
+ },
307
+ ],
308
+ });
309
+ //# sourceMappingURL=middlewares.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewares.js","sourceRoot":"","sources":["../../../../src/api/middlewares.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/carts/[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,iBA8BjE"}
@@ -0,0 +1,39 @@
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
+ 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: "cart_canceled", content: "Cart has been cancelled.", severity: "info" },
25
+ ],
26
+ });
27
+ }
28
+ catch (error) {
29
+ const statusCode = error.message?.includes("not found") ? 404
30
+ : error.message?.includes("completed") ? 409
31
+ : 500;
32
+ res.status(statusCode).json((0, error_formatters_1.formatUcpError)({
33
+ ucpVersion: UCP_VERSION,
34
+ code: statusCode === 404 ? "not_found" : "internal_error",
35
+ content: error.message,
36
+ }));
37
+ }
38
+ }
39
+ //# sourceMappingURL=route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../../src/api/ucp/carts/[id]/cancel/route.ts"],"names":[],"mappings":";;;;;AAMA,oBA8BC;AAnCD,+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,IAAA,iCAA6B,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;YACjD,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,eAAe,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,MAAM,EAAE;aAC/F;SACF,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,gBAAgB;YACzD,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/carts/[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,iBA0DhE"}