@portel/photon-core 1.4.0 → 2.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 (169) hide show
  1. package/README.md +123 -0
  2. package/dist/auto-ui.d.ts +103 -0
  3. package/dist/auto-ui.d.ts.map +1 -0
  4. package/dist/auto-ui.js +275 -0
  5. package/dist/auto-ui.js.map +1 -0
  6. package/dist/base.d.ts +9 -2
  7. package/dist/base.d.ts.map +1 -1
  8. package/dist/base.js +23 -10
  9. package/dist/base.js.map +1 -1
  10. package/dist/cli-ui-renderer.d.ts +31 -0
  11. package/dist/cli-ui-renderer.d.ts.map +1 -0
  12. package/dist/cli-ui-renderer.js +224 -0
  13. package/dist/cli-ui-renderer.js.map +1 -0
  14. package/dist/dependency-manager.d.ts.map +1 -1
  15. package/dist/dependency-manager.js +0 -1
  16. package/dist/dependency-manager.js.map +1 -1
  17. package/dist/design-system/index.d.ts +21 -0
  18. package/dist/design-system/index.d.ts.map +1 -0
  19. package/dist/design-system/index.js +27 -0
  20. package/dist/design-system/index.js.map +1 -0
  21. package/dist/design-system/tokens.d.ts +149 -0
  22. package/dist/design-system/tokens.d.ts.map +1 -0
  23. package/dist/design-system/tokens.js +413 -0
  24. package/dist/design-system/tokens.js.map +1 -0
  25. package/dist/design-system/transaction-ui.d.ts +70 -0
  26. package/dist/design-system/transaction-ui.d.ts.map +1 -0
  27. package/dist/design-system/transaction-ui.js +982 -0
  28. package/dist/design-system/transaction-ui.js.map +1 -0
  29. package/dist/generator.d.ts +58 -8
  30. package/dist/generator.d.ts.map +1 -1
  31. package/dist/generator.js +9 -4
  32. package/dist/generator.js.map +1 -1
  33. package/dist/index.d.ts +10 -7
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +48 -44
  36. package/dist/index.js.map +1 -1
  37. package/dist/io.d.ts +395 -0
  38. package/dist/io.d.ts.map +1 -0
  39. package/dist/io.js +304 -0
  40. package/dist/io.js.map +1 -0
  41. package/dist/path-resolver.d.ts.map +1 -1
  42. package/dist/path-resolver.js +2 -1
  43. package/dist/path-resolver.js.map +1 -1
  44. package/dist/rendering/components.d.ts +29 -0
  45. package/dist/rendering/components.d.ts.map +1 -0
  46. package/dist/rendering/components.js +773 -0
  47. package/dist/rendering/components.js.map +1 -0
  48. package/dist/rendering/field-analyzer.d.ts +48 -0
  49. package/dist/rendering/field-analyzer.d.ts.map +1 -0
  50. package/dist/rendering/field-analyzer.js +270 -0
  51. package/dist/rendering/field-analyzer.js.map +1 -0
  52. package/dist/rendering/field-renderers.d.ts +64 -0
  53. package/dist/rendering/field-renderers.d.ts.map +1 -0
  54. package/dist/rendering/field-renderers.js +317 -0
  55. package/dist/rendering/field-renderers.js.map +1 -0
  56. package/dist/rendering/index.d.ts +28 -0
  57. package/dist/rendering/index.d.ts.map +1 -0
  58. package/dist/rendering/index.js +60 -0
  59. package/dist/rendering/index.js.map +1 -0
  60. package/dist/rendering/layout-selector.d.ts +48 -0
  61. package/dist/rendering/layout-selector.d.ts.map +1 -0
  62. package/dist/rendering/layout-selector.js +347 -0
  63. package/dist/rendering/layout-selector.js.map +1 -0
  64. package/dist/rendering/template-engine.d.ts +41 -0
  65. package/dist/rendering/template-engine.d.ts.map +1 -0
  66. package/dist/rendering/template-engine.js +236 -0
  67. package/dist/rendering/template-engine.js.map +1 -0
  68. package/dist/schema-extractor.d.ts +30 -0
  69. package/dist/schema-extractor.d.ts.map +1 -1
  70. package/dist/schema-extractor.js +205 -12
  71. package/dist/schema-extractor.js.map +1 -1
  72. package/dist/stateful.d.ts +63 -0
  73. package/dist/stateful.d.ts.map +1 -1
  74. package/dist/stateful.js +222 -0
  75. package/dist/stateful.js.map +1 -1
  76. package/dist/types.d.ts +9 -1
  77. package/dist/types.d.ts.map +1 -1
  78. package/dist/types.js.map +1 -1
  79. package/dist/ucp/ap2/handlers.d.ts +242 -0
  80. package/dist/ucp/ap2/handlers.d.ts.map +1 -0
  81. package/dist/ucp/ap2/handlers.js +482 -0
  82. package/dist/ucp/ap2/handlers.js.map +1 -0
  83. package/dist/ucp/ap2/mandates.d.ts +95 -0
  84. package/dist/ucp/ap2/mandates.d.ts.map +1 -0
  85. package/dist/ucp/ap2/mandates.js +234 -0
  86. package/dist/ucp/ap2/mandates.js.map +1 -0
  87. package/dist/ucp/ap2/types.d.ts +305 -0
  88. package/dist/ucp/ap2/types.d.ts.map +1 -0
  89. package/dist/ucp/ap2/types.js +8 -0
  90. package/dist/ucp/ap2/types.js.map +1 -0
  91. package/dist/ucp/capabilities/checkout.d.ts +118 -0
  92. package/dist/ucp/capabilities/checkout.d.ts.map +1 -0
  93. package/dist/ucp/capabilities/checkout.js +344 -0
  94. package/dist/ucp/capabilities/checkout.js.map +1 -0
  95. package/dist/ucp/capabilities/identity.d.ts +130 -0
  96. package/dist/ucp/capabilities/identity.d.ts.map +1 -0
  97. package/dist/ucp/capabilities/identity.js +290 -0
  98. package/dist/ucp/capabilities/identity.js.map +1 -0
  99. package/dist/ucp/capabilities/order.d.ts +142 -0
  100. package/dist/ucp/capabilities/order.d.ts.map +1 -0
  101. package/dist/ucp/capabilities/order.js +383 -0
  102. package/dist/ucp/capabilities/order.js.map +1 -0
  103. package/dist/ucp/index.d.ts +18 -0
  104. package/dist/ucp/index.d.ts.map +1 -0
  105. package/dist/ucp/index.js +19 -0
  106. package/dist/ucp/index.js.map +1 -0
  107. package/dist/ucp/manifest.d.ts +62 -0
  108. package/dist/ucp/manifest.d.ts.map +1 -0
  109. package/dist/ucp/manifest.js +180 -0
  110. package/dist/ucp/manifest.js.map +1 -0
  111. package/dist/ucp/types.d.ts +327 -0
  112. package/dist/ucp/types.d.ts.map +1 -0
  113. package/dist/ucp/types.js +8 -0
  114. package/dist/ucp/types.js.map +1 -0
  115. package/package.json +3 -4
  116. package/src/auto-ui.ts +413 -0
  117. package/src/base.ts +22 -9
  118. package/src/cli-ui-renderer.ts +264 -0
  119. package/src/dependency-manager.ts +0 -1
  120. package/src/design-system/index.ts +30 -0
  121. package/src/design-system/tokens.ts +451 -0
  122. package/src/design-system/transaction-ui.ts +1038 -0
  123. package/src/generator.ts +68 -8
  124. package/src/index.ts +159 -101
  125. package/src/io.ts +493 -0
  126. package/src/path-resolver.ts +2 -1
  127. package/src/rendering/components.ts +785 -0
  128. package/src/rendering/field-analyzer.ts +299 -0
  129. package/src/rendering/field-renderers.ts +356 -0
  130. package/src/rendering/index.ts +63 -0
  131. package/src/rendering/layout-selector.ts +390 -0
  132. package/src/rendering/template-engine.ts +254 -0
  133. package/src/schema-extractor.ts +225 -12
  134. package/src/stateful.ts +301 -0
  135. package/src/types.ts +10 -1
  136. package/src/ucp/ap2/handlers.ts +779 -0
  137. package/src/ucp/ap2/mandates.ts +354 -0
  138. package/src/ucp/ap2/types.ts +441 -0
  139. package/src/ucp/capabilities/checkout.ts +497 -0
  140. package/src/ucp/capabilities/identity.ts +425 -0
  141. package/src/ucp/capabilities/order.ts +549 -0
  142. package/src/ucp/index.ts +27 -0
  143. package/src/ucp/manifest.ts +257 -0
  144. package/src/ucp/types.ts +454 -0
  145. package/dist/cli-formatter.d.ts +0 -92
  146. package/dist/cli-formatter.d.ts.map +0 -1
  147. package/dist/cli-formatter.js +0 -486
  148. package/dist/cli-formatter.js.map +0 -1
  149. package/dist/elicit.d.ts +0 -93
  150. package/dist/elicit.d.ts.map +0 -1
  151. package/dist/elicit.js +0 -373
  152. package/dist/elicit.js.map +0 -1
  153. package/dist/mcp-client.d.ts +0 -218
  154. package/dist/mcp-client.d.ts.map +0 -1
  155. package/dist/mcp-client.js +0 -424
  156. package/dist/mcp-client.js.map +0 -1
  157. package/dist/mcp-sdk-transport.d.ts +0 -88
  158. package/dist/mcp-sdk-transport.d.ts.map +0 -1
  159. package/dist/mcp-sdk-transport.js +0 -360
  160. package/dist/mcp-sdk-transport.js.map +0 -1
  161. package/dist/photon-config.d.ts +0 -86
  162. package/dist/photon-config.d.ts.map +0 -1
  163. package/dist/photon-config.js +0 -156
  164. package/dist/photon-config.js.map +0 -1
  165. package/src/cli-formatter.ts +0 -579
  166. package/src/elicit.ts +0 -438
  167. package/src/mcp-client.ts +0 -561
  168. package/src/mcp-sdk-transport.ts +0 -449
  169. package/src/photon-config.ts +0 -201
@@ -0,0 +1,383 @@
1
+ /**
2
+ * UCP Order Management Capability Implementation
3
+ *
4
+ * Provides order tracking, returns, and webhook handling.
5
+ */
6
+ import * as crypto from 'crypto';
7
+ /**
8
+ * In-memory order storage (for development/testing)
9
+ */
10
+ export class MemoryOrderStorage {
11
+ orders = new Map();
12
+ async get(orderId) {
13
+ return this.orders.get(orderId) || null;
14
+ }
15
+ async set(order) {
16
+ this.orders.set(order.id, order);
17
+ }
18
+ async list(params) {
19
+ let orders = Array.from(this.orders.values());
20
+ if (params?.merchantId) {
21
+ orders = orders.filter(o => o.merchantId === params.merchantId);
22
+ }
23
+ if (params?.status?.length) {
24
+ orders = orders.filter(o => params.status.includes(o.status));
25
+ }
26
+ // Sort by creation date descending
27
+ orders.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
28
+ const total = orders.length;
29
+ const offset = params?.offset || 0;
30
+ const limit = params?.limit || 50;
31
+ return {
32
+ orders: orders.slice(offset, offset + limit),
33
+ total
34
+ };
35
+ }
36
+ async delete(orderId) {
37
+ this.orders.delete(orderId);
38
+ }
39
+ }
40
+ /**
41
+ * Default webhook dispatcher using fetch
42
+ */
43
+ export class HttpWebhookDispatcher {
44
+ async dispatch(webhook, payload) {
45
+ try {
46
+ // Generate signature
47
+ const signature = this.generateSignature(payload, webhook.secret);
48
+ const response = await fetch(webhook.url, {
49
+ method: 'POST',
50
+ headers: {
51
+ 'Content-Type': 'application/json',
52
+ 'X-UCP-Signature': signature,
53
+ 'X-UCP-Event': payload.type
54
+ },
55
+ body: JSON.stringify(payload)
56
+ });
57
+ return response.ok;
58
+ }
59
+ catch (error) {
60
+ console.error(`Webhook dispatch failed: ${error}`);
61
+ return false;
62
+ }
63
+ }
64
+ generateSignature(payload, secret) {
65
+ const hmac = crypto.createHmac('sha256', secret);
66
+ hmac.update(JSON.stringify(payload));
67
+ return `sha256=${hmac.digest('hex')}`;
68
+ }
69
+ }
70
+ export class OrderService {
71
+ storage;
72
+ webhooks = [];
73
+ dispatcher;
74
+ config;
75
+ constructor(config, storage, dispatcher) {
76
+ this.config = config;
77
+ this.storage = storage || new MemoryOrderStorage();
78
+ this.dispatcher = dispatcher || new HttpWebhookDispatcher();
79
+ }
80
+ // --------------------------------------------------------------------------
81
+ // Order Retrieval
82
+ // --------------------------------------------------------------------------
83
+ /**
84
+ * Get order by ID
85
+ */
86
+ async getOrder(orderId) {
87
+ const order = await this.storage.get(orderId);
88
+ if (!order) {
89
+ throw new Error(`Order not found: ${orderId}`);
90
+ }
91
+ return order;
92
+ }
93
+ /**
94
+ * List orders with optional filters
95
+ */
96
+ async listOrders(params) {
97
+ const offset = params?.cursor ? parseInt(params.cursor, 10) : 0;
98
+ const limit = params?.limit || 20;
99
+ const result = await this.storage.list({
100
+ merchantId: this.config.merchantId,
101
+ status: params?.status,
102
+ limit: limit + 1, // Fetch one extra to check for more
103
+ offset
104
+ });
105
+ const hasMore = result.orders.length > limit;
106
+ const orders = hasMore ? result.orders.slice(0, limit) : result.orders;
107
+ return {
108
+ orders,
109
+ nextCursor: hasMore ? String(offset + limit) : undefined
110
+ };
111
+ }
112
+ // --------------------------------------------------------------------------
113
+ // Order Updates
114
+ // --------------------------------------------------------------------------
115
+ /**
116
+ * Update order status
117
+ */
118
+ async updateStatus(orderId, status, reason) {
119
+ const order = await this.getOrder(orderId);
120
+ const previousStatus = order.status;
121
+ order.status = status;
122
+ order.updatedAt = new Date().toISOString();
123
+ if (reason && status === 'cancelled') {
124
+ order.adjustments.push({
125
+ id: `adj_${crypto.randomUUID()}`,
126
+ type: 'refund',
127
+ amount: order.totals.total,
128
+ reason,
129
+ createdAt: new Date().toISOString()
130
+ });
131
+ }
132
+ await this.storage.set(order);
133
+ // Dispatch webhook
134
+ await this.dispatchWebhook('order.updated', {
135
+ order,
136
+ previousStatus,
137
+ newStatus: status
138
+ });
139
+ return order;
140
+ }
141
+ /**
142
+ * Cancel order
143
+ */
144
+ async cancelOrder(orderId, reason) {
145
+ const order = await this.getOrder(orderId);
146
+ if (!['pending', 'confirmed', 'processing'].includes(order.status)) {
147
+ throw new Error(`Cannot cancel order in ${order.status} status`);
148
+ }
149
+ return this.updateStatus(orderId, 'cancelled', reason || 'Cancelled by customer');
150
+ }
151
+ // --------------------------------------------------------------------------
152
+ // Shipment Tracking
153
+ // --------------------------------------------------------------------------
154
+ /**
155
+ * Add shipment to order
156
+ */
157
+ async addShipment(orderId, shipment) {
158
+ const order = await this.getOrder(orderId);
159
+ const newShipment = {
160
+ ...shipment,
161
+ id: `ship_${crypto.randomUUID()}`,
162
+ events: [{
163
+ timestamp: new Date().toISOString(),
164
+ status: 'label_created',
165
+ description: 'Shipping label created'
166
+ }]
167
+ };
168
+ order.shipments.push(newShipment);
169
+ order.status = 'shipped';
170
+ order.updatedAt = new Date().toISOString();
171
+ await this.storage.set(order);
172
+ // Dispatch webhook
173
+ await this.dispatchWebhook('shipment.created', {
174
+ order,
175
+ shipment: newShipment
176
+ });
177
+ return order;
178
+ }
179
+ /**
180
+ * Update shipment status
181
+ */
182
+ async updateShipment(orderId, shipmentId, update) {
183
+ const order = await this.getOrder(orderId);
184
+ const shipment = order.shipments.find(s => s.id === shipmentId);
185
+ if (!shipment) {
186
+ throw new Error(`Shipment not found: ${shipmentId}`);
187
+ }
188
+ shipment.status = update.status;
189
+ shipment.events.push({
190
+ timestamp: new Date().toISOString(),
191
+ status: update.status,
192
+ location: update.location,
193
+ description: update.description
194
+ });
195
+ // Update order status if delivered
196
+ if (update.status === 'delivered') {
197
+ const allDelivered = order.shipments.every(s => s.status === 'delivered');
198
+ if (allDelivered) {
199
+ order.status = 'delivered';
200
+ }
201
+ }
202
+ order.updatedAt = new Date().toISOString();
203
+ await this.storage.set(order);
204
+ // Dispatch webhook
205
+ const eventType = update.status === 'delivered' ? 'delivery.completed' : 'shipment.updated';
206
+ await this.dispatchWebhook(eventType, {
207
+ order,
208
+ shipment
209
+ });
210
+ return order;
211
+ }
212
+ /**
213
+ * Get shipment tracking info
214
+ */
215
+ async trackShipment(orderId, shipmentId) {
216
+ const order = await this.getOrder(orderId);
217
+ if (shipmentId) {
218
+ const shipment = order.shipments.find(s => s.id === shipmentId);
219
+ if (!shipment) {
220
+ throw new Error(`Shipment not found: ${shipmentId}`);
221
+ }
222
+ return [shipment];
223
+ }
224
+ return order.shipments;
225
+ }
226
+ // --------------------------------------------------------------------------
227
+ // Returns & Refunds
228
+ // --------------------------------------------------------------------------
229
+ /**
230
+ * Initiate return request
231
+ */
232
+ async initiateReturn(orderId, params) {
233
+ const order = await this.getOrder(orderId);
234
+ if (order.status !== 'delivered') {
235
+ throw new Error('Can only return delivered orders');
236
+ }
237
+ // Validate items
238
+ for (const item of params.items) {
239
+ const lineItem = order.lineItems.find(li => li.id === item.lineItemId);
240
+ if (!lineItem) {
241
+ throw new Error(`Line item not found: ${item.lineItemId}`);
242
+ }
243
+ if (item.quantity > lineItem.quantity) {
244
+ throw new Error(`Return quantity exceeds order quantity for ${lineItem.label}`);
245
+ }
246
+ }
247
+ // Calculate refund amount
248
+ const refundAmount = {
249
+ amount: params.items.reduce((sum, item) => {
250
+ const lineItem = order.lineItems.find(li => li.id === item.lineItemId);
251
+ return sum + (lineItem.unitPrice.amount * item.quantity);
252
+ }, 0),
253
+ currency: order.totals.total.currency
254
+ };
255
+ const returnRequest = {
256
+ id: `ret_${crypto.randomUUID()}`,
257
+ status: 'requested',
258
+ items: params.items,
259
+ createdAt: new Date().toISOString(),
260
+ updatedAt: new Date().toISOString(),
261
+ refundAmount
262
+ };
263
+ order.returns.push(returnRequest);
264
+ order.updatedAt = new Date().toISOString();
265
+ await this.storage.set(order);
266
+ // Dispatch webhook
267
+ await this.dispatchWebhook('return.requested', {
268
+ order,
269
+ return: returnRequest
270
+ });
271
+ return returnRequest;
272
+ }
273
+ /**
274
+ * Approve return request
275
+ */
276
+ async approveReturn(orderId, returnId, params) {
277
+ const order = await this.getOrder(orderId);
278
+ const returnRequest = order.returns.find(r => r.id === returnId);
279
+ if (!returnRequest) {
280
+ throw new Error(`Return request not found: ${returnId}`);
281
+ }
282
+ if (returnRequest.status !== 'requested') {
283
+ throw new Error(`Cannot approve return in ${returnRequest.status} status`);
284
+ }
285
+ returnRequest.status = 'approved';
286
+ returnRequest.updatedAt = new Date().toISOString();
287
+ returnRequest.returnLabel = params?.returnLabel;
288
+ order.updatedAt = new Date().toISOString();
289
+ await this.storage.set(order);
290
+ // Dispatch webhook
291
+ await this.dispatchWebhook('return.approved', {
292
+ order,
293
+ return: returnRequest
294
+ });
295
+ return returnRequest;
296
+ }
297
+ /**
298
+ * Process refund for return
299
+ */
300
+ async processRefund(orderId, returnId) {
301
+ const order = await this.getOrder(orderId);
302
+ const returnRequest = order.returns.find(r => r.id === returnId);
303
+ if (!returnRequest) {
304
+ throw new Error(`Return request not found: ${returnId}`);
305
+ }
306
+ if (returnRequest.status !== 'received' && returnRequest.status !== 'approved') {
307
+ throw new Error(`Cannot process refund for return in ${returnRequest.status} status`);
308
+ }
309
+ const adjustment = {
310
+ id: `adj_${crypto.randomUUID()}`,
311
+ type: 'refund',
312
+ amount: returnRequest.refundAmount,
313
+ reason: `Return refund for ${returnRequest.items.length} item(s)`,
314
+ createdAt: new Date().toISOString(),
315
+ lineItemIds: returnRequest.items.map(i => i.lineItemId)
316
+ };
317
+ returnRequest.status = 'refunded';
318
+ returnRequest.updatedAt = new Date().toISOString();
319
+ order.adjustments.push(adjustment);
320
+ order.updatedAt = new Date().toISOString();
321
+ // Check if fully refunded
322
+ const totalRefunded = order.adjustments
323
+ .filter(a => a.type === 'refund')
324
+ .reduce((sum, a) => sum + a.amount.amount, 0);
325
+ if (totalRefunded >= order.totals.total.amount) {
326
+ order.status = 'refunded';
327
+ }
328
+ await this.storage.set(order);
329
+ // Dispatch webhook
330
+ await this.dispatchWebhook('refund.created', {
331
+ order,
332
+ adjustment
333
+ });
334
+ return adjustment;
335
+ }
336
+ // --------------------------------------------------------------------------
337
+ // Webhooks
338
+ // --------------------------------------------------------------------------
339
+ /**
340
+ * Register webhook
341
+ */
342
+ async registerWebhook(params) {
343
+ const webhook = {
344
+ id: `wh_${crypto.randomUUID()}`,
345
+ url: params.url,
346
+ events: params.events,
347
+ secret: params.secret,
348
+ active: true,
349
+ createdAt: new Date().toISOString()
350
+ };
351
+ this.webhooks.push(webhook);
352
+ return webhook;
353
+ }
354
+ /**
355
+ * List webhooks
356
+ */
357
+ async listWebhooks() {
358
+ return this.webhooks.filter(w => w.active);
359
+ }
360
+ /**
361
+ * Delete webhook
362
+ */
363
+ async deleteWebhook(webhookId) {
364
+ const index = this.webhooks.findIndex(w => w.id === webhookId);
365
+ if (index !== -1) {
366
+ this.webhooks[index].active = false;
367
+ }
368
+ }
369
+ /**
370
+ * Dispatch webhook to registered endpoints
371
+ */
372
+ async dispatchWebhook(type, data) {
373
+ const payload = {
374
+ id: `evt_${crypto.randomUUID()}`,
375
+ type,
376
+ timestamp: new Date().toISOString(),
377
+ data
378
+ };
379
+ const relevantWebhooks = this.webhooks.filter(w => w.active && w.events.includes(type));
380
+ await Promise.all(relevantWebhooks.map(w => this.dispatcher.dispatch(w, payload)));
381
+ }
382
+ }
383
+ //# sourceMappingURL=order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/ucp/capabilities/order.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Universal Commerce Protocol (UCP) Module
3
+ *
4
+ * Provides UCP support for Photon, enabling agentic commerce
5
+ * with checkout, identity, order management, and AP2 payments.
6
+ */
7
+ export * from './types.js';
8
+ export * from './ap2/types.js';
9
+ export * from './ap2/mandates.js';
10
+ export * from './ap2/handlers.js';
11
+ export * from './manifest.js';
12
+ export { CheckoutService, MemorySessionStorage } from './capabilities/checkout.js';
13
+ export type { SessionStorage, CheckoutConfig, TaxCalculator, DiscountValidator, FulfillmentProvider } from './capabilities/checkout.js';
14
+ export { OrderService, MemoryOrderStorage, HttpWebhookDispatcher } from './capabilities/order.js';
15
+ export type { OrderStorage, WebhookDispatcher, OrderServiceConfig } from './capabilities/order.js';
16
+ export { IdentityService, MemoryTokenStorage } from './capabilities/identity.js';
17
+ export type { TokenStorage, IdentityServiceConfig } from './capabilities/identity.js';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ucp/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,YAAY,CAAC;AAG3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,eAAe,CAAC;AAG9B,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACnF,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAExI,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAClG,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAEnG,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACjF,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Universal Commerce Protocol (UCP) Module
3
+ *
4
+ * Provides UCP support for Photon, enabling agentic commerce
5
+ * with checkout, identity, order management, and AP2 payments.
6
+ */
7
+ // Core UCP Types
8
+ export * from './types.js';
9
+ // AP2 Payment Types & Helpers
10
+ export * from './ap2/types.js';
11
+ export * from './ap2/mandates.js';
12
+ export * from './ap2/handlers.js';
13
+ // Manifest Generation
14
+ export * from './manifest.js';
15
+ // Capabilities
16
+ export { CheckoutService, MemorySessionStorage } from './capabilities/checkout.js';
17
+ export { OrderService, MemoryOrderStorage, HttpWebhookDispatcher } from './capabilities/order.js';
18
+ export { IdentityService, MemoryTokenStorage } from './capabilities/identity.js';
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ucp/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iBAAiB;AACjB,cAAc,YAAY,CAAC;AAE3B,8BAA8B;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAElC,sBAAsB;AACtB,cAAc,eAAe,CAAC;AAE9B,eAAe;AACf,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGnF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGlG,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * UCP Manifest Generator
3
+ *
4
+ * Auto-generates /.well-known/ucp manifest from Photon class metadata.
5
+ */
6
+ import { UCPManifest, UCPCapability, UCPMetadata, UCPMethodMetadata } from './types.js';
7
+ export interface GenerateManifestParams {
8
+ merchantId: string;
9
+ merchantName: string;
10
+ merchantLogo?: string;
11
+ supportUrl?: string;
12
+ capabilities: UCPCapability[];
13
+ paymentHandlers?: string[];
14
+ supportedCurrencies?: string[];
15
+ supportedCountries?: string[];
16
+ baseUrl?: string;
17
+ mcpServerName?: string;
18
+ }
19
+ /**
20
+ * Generate UCP manifest from parameters
21
+ */
22
+ export declare function generateUCPManifest(params: GenerateManifestParams): UCPManifest;
23
+ /**
24
+ * Parse UCP metadata from JSDoc annotations
25
+ *
26
+ * Supports:
27
+ * - @ucp - Enable UCP for class
28
+ * - @capability checkout|identity|order|payment_token_exchange
29
+ * - @ucp.merchant.id <id>
30
+ * - @ucp.merchant.name <name>
31
+ * - @ucp.operation <capability>.<operation>
32
+ */
33
+ export declare function parseUCPAnnotations(jsdoc: string): UCPMetadata | null;
34
+ /**
35
+ * Parse UCP operation from method JSDoc
36
+ */
37
+ export declare function parseUCPMethodAnnotation(jsdoc: string): UCPMethodMetadata | null;
38
+ export interface ExtractManifestParams {
39
+ className: string;
40
+ classJsdoc: string;
41
+ methods: {
42
+ name: string;
43
+ jsdoc: string;
44
+ }[];
45
+ baseUrl?: string;
46
+ }
47
+ /**
48
+ * Extract UCP manifest from class schema
49
+ */
50
+ export declare function extractManifestFromSchema(params: ExtractManifestParams): UCPManifest | null;
51
+ /**
52
+ * Generate the /.well-known/ucp response
53
+ */
54
+ export declare function generateWellKnownResponse(manifest: UCPManifest): string;
55
+ /**
56
+ * Validate UCP manifest
57
+ */
58
+ export declare function validateManifest(manifest: UCPManifest): {
59
+ valid: boolean;
60
+ errors: string[];
61
+ };
62
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/ucp/manifest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,EACX,aAAa,EAEb,WAAW,EACX,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,sBAAsB,GAAG,WAAW,CAsE/E;AAMD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAwBrE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAQhF;AAMD,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,qBAAqB,GAAG,WAAW,GAAG,IAAI,CAoC3F;AAMD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,CAEvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA4B5F"}