@ucptools/validator 1.0.1 → 1.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 (152) hide show
  1. package/dist/auth/config.d.ts +20 -0
  2. package/dist/auth/config.d.ts.map +1 -0
  3. package/dist/auth/config.js +114 -0
  4. package/dist/auth/config.js.map +1 -0
  5. package/dist/auth/index.d.ts +5 -0
  6. package/dist/auth/index.d.ts.map +1 -0
  7. package/dist/auth/index.js +17 -0
  8. package/dist/auth/index.js.map +1 -0
  9. package/dist/auth/middleware.d.ts +45 -0
  10. package/dist/auth/middleware.d.ts.map +1 -0
  11. package/dist/auth/middleware.js +170 -0
  12. package/dist/auth/middleware.js.map +1 -0
  13. package/dist/auth/service.d.ts +80 -0
  14. package/dist/auth/service.d.ts.map +1 -0
  15. package/dist/auth/service.js +298 -0
  16. package/dist/auth/service.js.map +1 -0
  17. package/dist/cli/index.js +96 -0
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/cli/mock-server.d.ts +20 -0
  20. package/dist/cli/mock-server.d.ts.map +1 -0
  21. package/dist/cli/mock-server.js +261 -0
  22. package/dist/cli/mock-server.js.map +1 -0
  23. package/dist/db/index.d.ts +8 -2
  24. package/dist/db/index.d.ts.map +1 -1
  25. package/dist/db/index.js +22 -5
  26. package/dist/db/index.js.map +1 -1
  27. package/dist/db/schema.d.ts +3570 -128
  28. package/dist/db/schema.d.ts.map +1 -1
  29. package/dist/db/schema.js +377 -17
  30. package/dist/db/schema.js.map +1 -1
  31. package/dist/db/utils.d.ts +252 -0
  32. package/dist/db/utils.d.ts.map +1 -0
  33. package/dist/db/utils.js +295 -0
  34. package/dist/db/utils.js.map +1 -0
  35. package/dist/feed-analyzer/feed-analyzer.d.ts.map +1 -1
  36. package/dist/feed-analyzer/feed-analyzer.js +218 -4
  37. package/dist/feed-analyzer/feed-analyzer.js.map +1 -1
  38. package/dist/feed-analyzer/types.d.ts +82 -1
  39. package/dist/feed-analyzer/types.d.ts.map +1 -1
  40. package/dist/feed-analyzer/types.js +13 -0
  41. package/dist/feed-analyzer/types.js.map +1 -1
  42. package/dist/lib/analytics.d.ts +337 -0
  43. package/dist/lib/analytics.d.ts.map +1 -0
  44. package/dist/lib/analytics.js +188 -0
  45. package/dist/lib/analytics.js.map +1 -0
  46. package/dist/security/security-scanner.d.ts.map +1 -1
  47. package/dist/security/security-scanner.js +130 -2
  48. package/dist/security/security-scanner.js.map +1 -1
  49. package/dist/security/types.d.ts +32 -0
  50. package/dist/security/types.d.ts.map +1 -1
  51. package/dist/security/types.js.map +1 -1
  52. package/dist/services/analytics.d.ts +114 -0
  53. package/dist/services/analytics.d.ts.map +1 -0
  54. package/dist/services/analytics.js +862 -0
  55. package/dist/services/analytics.js.map +1 -0
  56. package/dist/services/badge.d.ts +31 -0
  57. package/dist/services/badge.d.ts.map +1 -0
  58. package/dist/services/badge.js +152 -0
  59. package/dist/services/badge.js.map +1 -0
  60. package/dist/services/cron.d.ts +125 -0
  61. package/dist/services/cron.d.ts.map +1 -0
  62. package/dist/services/cron.js +613 -0
  63. package/dist/services/cron.js.map +1 -0
  64. package/dist/services/directory.d.ts +2 -0
  65. package/dist/services/directory.d.ts.map +1 -1
  66. package/dist/services/directory.js +45 -27
  67. package/dist/services/directory.js.map +1 -1
  68. package/dist/services/email.d.ts +112 -0
  69. package/dist/services/email.d.ts.map +1 -0
  70. package/dist/services/email.js +772 -0
  71. package/dist/services/email.js.map +1 -0
  72. package/dist/services/hosted-profiles.d.ts +77 -0
  73. package/dist/services/hosted-profiles.d.ts.map +1 -0
  74. package/dist/services/hosted-profiles.js +433 -0
  75. package/dist/services/hosted-profiles.js.map +1 -0
  76. package/dist/services/latency.d.ts +67 -0
  77. package/dist/services/latency.d.ts.map +1 -0
  78. package/dist/services/latency.js +274 -0
  79. package/dist/services/latency.js.map +1 -0
  80. package/dist/services/manifest-compliance.d.ts +64 -0
  81. package/dist/services/manifest-compliance.d.ts.map +1 -0
  82. package/dist/services/manifest-compliance.js +271 -0
  83. package/dist/services/manifest-compliance.js.map +1 -0
  84. package/dist/services/monitoring-diff.d.ts +31 -0
  85. package/dist/services/monitoring-diff.d.ts.map +1 -0
  86. package/dist/services/monitoring-diff.js +189 -0
  87. package/dist/services/monitoring-diff.js.map +1 -0
  88. package/dist/services/notifications.d.ts +46 -0
  89. package/dist/services/notifications.d.ts.map +1 -0
  90. package/dist/services/notifications.js +88 -0
  91. package/dist/services/notifications.js.map +1 -0
  92. package/dist/services/stripe.d.ts +93 -0
  93. package/dist/services/stripe.d.ts.map +1 -0
  94. package/dist/services/stripe.js +490 -0
  95. package/dist/services/stripe.js.map +1 -0
  96. package/dist/services/validation-history.d.ts +99 -0
  97. package/dist/services/validation-history.d.ts.map +1 -0
  98. package/dist/services/validation-history.js +344 -0
  99. package/dist/services/validation-history.js.map +1 -0
  100. package/dist/services/validation-logging.d.ts +103 -0
  101. package/dist/services/validation-logging.d.ts.map +1 -0
  102. package/dist/services/validation-logging.js +210 -0
  103. package/dist/services/validation-logging.js.map +1 -0
  104. package/dist/services/validation.d.ts +119 -0
  105. package/dist/services/validation.d.ts.map +1 -0
  106. package/dist/services/validation.js +1185 -0
  107. package/dist/services/validation.js.map +1 -0
  108. package/dist/simulator/agent-simulator.d.ts.map +1 -1
  109. package/dist/simulator/agent-simulator.js +229 -9
  110. package/dist/simulator/agent-simulator.js.map +1 -1
  111. package/dist/simulator/types.d.ts +26 -0
  112. package/dist/simulator/types.d.ts.map +1 -1
  113. package/dist/simulator/types.js.map +1 -1
  114. package/dist/types/acp-validation.d.ts +87 -0
  115. package/dist/types/acp-validation.d.ts.map +1 -0
  116. package/dist/types/acp-validation.js +40 -0
  117. package/dist/types/acp-validation.js.map +1 -0
  118. package/dist/types/analytics.d.ts +182 -0
  119. package/dist/types/analytics.d.ts.map +1 -0
  120. package/dist/types/analytics.js +7 -0
  121. package/dist/types/analytics.js.map +1 -0
  122. package/dist/types/ucp-profile.d.ts +10 -2
  123. package/dist/types/ucp-profile.d.ts.map +1 -1
  124. package/dist/types/ucp-profile.js.map +1 -1
  125. package/dist/types/validation.d.ts +8 -0
  126. package/dist/types/validation.d.ts.map +1 -1
  127. package/dist/types/validation.js +10 -0
  128. package/dist/types/validation.js.map +1 -1
  129. package/dist/validator/acp/index.d.ts +31 -0
  130. package/dist/validator/acp/index.d.ts.map +1 -0
  131. package/dist/validator/acp/index.js +574 -0
  132. package/dist/validator/acp/index.js.map +1 -0
  133. package/dist/validator/network-validator.d.ts.map +1 -1
  134. package/dist/validator/network-validator.js +4 -4
  135. package/dist/validator/network-validator.js.map +1 -1
  136. package/dist/validator/rules-validator.d.ts +8 -0
  137. package/dist/validator/rules-validator.d.ts.map +1 -1
  138. package/dist/validator/rules-validator.js +92 -43
  139. package/dist/validator/rules-validator.js.map +1 -1
  140. package/dist/validator/structural-validator.d.ts.map +1 -1
  141. package/dist/validator/structural-validator.js +187 -53
  142. package/dist/validator/structural-validator.js.map +1 -1
  143. package/dist/validator/utils.d.ts +51 -0
  144. package/dist/validator/utils.d.ts.map +1 -0
  145. package/dist/validator/utils.js +132 -0
  146. package/dist/validator/utils.js.map +1 -0
  147. package/package.json +44 -12
  148. package/.claude/settings.local.json +0 -60
  149. package/.vercel/README.txt +0 -11
  150. package/.vercel/project.json +0 -1
  151. package/publish-output.txt +0 -0
  152. package/tsconfig.json +0 -20
@@ -6,6 +6,7 @@
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.validateStructure = validateStructure;
8
8
  const validation_js_1 = require("../types/validation.js");
9
+ const utils_js_1 = require("./utils.js");
9
10
  /**
10
11
  * Version format regex (YYYY-MM-DD)
11
12
  */
@@ -46,10 +47,21 @@ function validateStructure(profile) {
46
47
  issues.push(...validateServices(ucp));
47
48
  // Validate capabilities
48
49
  issues.push(...validateCapabilities(ucp));
49
- // Validate signing_keys if present
50
- if (profileObj.signing_keys !== undefined) {
50
+ // Validate signing_keys (required per UCP spec 2026-01-11)
51
+ if (profileObj.signing_keys === undefined) {
52
+ issues.push({
53
+ severity: 'error',
54
+ code: validation_js_1.ValidationErrorCodes.MISSING_SIGNING_KEYS,
55
+ path: '$.signing_keys',
56
+ message: 'Missing required "signing_keys" field',
57
+ hint: 'Add signing_keys array with at least one JWK public key for signature verification',
58
+ });
59
+ }
60
+ else {
51
61
  issues.push(...validateSigningKeys(profileObj.signing_keys));
52
62
  }
63
+ // Validate payment handlers (required per UCP spec 2026-01-11)
64
+ issues.push(...validatePaymentHandlers(profileObj));
53
65
  return issues;
54
66
  }
55
67
  /**
@@ -122,30 +134,35 @@ function validateServices(ucp) {
122
134
  hint: 'Add at least one service (e.g., "dev.ucp.shopping")',
123
135
  });
124
136
  }
125
- // Validate each service
126
- for (const [serviceName, service] of Object.entries(services)) {
127
- issues.push(...validateService(serviceName, service));
137
+ // Normalize services from both object and array formats (Google vs Shopify)
138
+ const normalizedServices = (0, utils_js_1.normalizeServices)(services);
139
+ if (normalizedServices.length === 0 && Object.keys(services).length > 0) {
140
+ // Services exist but couldn't be normalized - check for format issues
141
+ for (const [serviceName, serviceData] of Object.entries(services)) {
142
+ if (!serviceData) {
143
+ issues.push({
144
+ severity: 'error',
145
+ code: validation_js_1.ValidationErrorCodes.INVALID_SERVICE_STRUCTURE,
146
+ path: `$.ucp.services["${serviceName}"]`,
147
+ message: `Service "${serviceName}" is null or undefined`,
148
+ });
149
+ }
150
+ }
151
+ }
152
+ // Validate each normalized service
153
+ for (const { name, service } of normalizedServices) {
154
+ issues.push(...validateService(name, service));
128
155
  }
129
156
  return issues;
130
157
  }
131
158
  /**
132
- * Validate individual service definition
159
+ * Validate individual service definition (already normalized)
133
160
  */
134
161
  function validateService(name, service) {
135
162
  const issues = [];
136
163
  const path = `$.ucp.services["${name}"]`;
137
- if (!service || typeof service !== 'object') {
138
- issues.push({
139
- severity: 'error',
140
- code: validation_js_1.ValidationErrorCodes.INVALID_SERVICE_STRUCTURE,
141
- path,
142
- message: `Service "${name}" must be an object`,
143
- });
144
- return issues;
145
- }
146
- const svc = service;
147
164
  // Check required version
148
- if (!svc.version) {
165
+ if (!service.version) {
149
166
  issues.push({
150
167
  severity: 'error',
151
168
  code: validation_js_1.ValidationErrorCodes.INVALID_SERVICE_STRUCTURE,
@@ -153,7 +170,7 @@ function validateService(name, service) {
153
170
  message: `Service "${name}" missing required "version" field`,
154
171
  });
155
172
  }
156
- else if (typeof svc.version === 'string' && !VERSION_REGEX.test(svc.version)) {
173
+ else if (typeof service.version === 'string' && !VERSION_REGEX.test(service.version)) {
157
174
  issues.push({
158
175
  severity: 'error',
159
176
  code: validation_js_1.ValidationErrorCodes.INVALID_VERSION_FORMAT,
@@ -163,7 +180,7 @@ function validateService(name, service) {
163
180
  });
164
181
  }
165
182
  // Check required spec
166
- if (!svc.spec) {
183
+ if (!service.spec) {
167
184
  issues.push({
168
185
  severity: 'error',
169
186
  code: validation_js_1.ValidationErrorCodes.INVALID_SERVICE_STRUCTURE,
@@ -172,7 +189,7 @@ function validateService(name, service) {
172
189
  });
173
190
  }
174
191
  // Check for at least one transport
175
- const hasTransport = svc.rest || svc.mcp || svc.a2a || svc.embedded;
192
+ const hasTransport = service.rest || service.mcp || service.a2a || service.embedded;
176
193
  if (!hasTransport) {
177
194
  issues.push({
178
195
  severity: 'warn',
@@ -183,12 +200,12 @@ function validateService(name, service) {
183
200
  });
184
201
  }
185
202
  // Validate REST transport if present
186
- if (svc.rest) {
187
- issues.push(...validateRestTransport(svc.rest, `${path}.rest`));
203
+ if (service.rest) {
204
+ issues.push(...validateRestTransport(service.rest, `${path}.rest`));
188
205
  }
189
206
  // Validate MCP transport if present
190
- if (svc.mcp) {
191
- issues.push(...validateMcpTransport(svc.mcp, `${path}.mcp`));
207
+ if (service.mcp) {
208
+ issues.push(...validateMcpTransport(service.mcp, `${path}.mcp`));
192
209
  }
193
210
  return issues;
194
211
  }
@@ -273,36 +290,42 @@ function validateCapabilities(ucp) {
273
290
  });
274
291
  return issues;
275
292
  }
276
- if (!Array.isArray(ucp.capabilities)) {
277
- issues.push({
278
- severity: 'error',
279
- code: validation_js_1.ValidationErrorCodes.INVALID_CAPABILITY_STRUCTURE,
280
- path: '$.ucp.capabilities',
281
- message: 'Capabilities must be an array',
282
- });
283
- return issues;
284
- }
285
- if (ucp.capabilities.length === 0) {
286
- issues.push({
287
- severity: 'warn',
288
- code: validation_js_1.ValidationErrorCodes.MISSING_CAPABILITIES,
289
- path: '$.ucp.capabilities',
290
- message: 'Capabilities array is empty',
291
- hint: 'Add at least one capability (e.g., dev.ucp.shopping.checkout)',
292
- });
293
- }
294
- // Validate each capability
295
- for (let i = 0; i < ucp.capabilities.length; i++) {
296
- issues.push(...validateCapability(ucp.capabilities[i], i));
293
+ // Normalize capabilities from both array and object formats
294
+ const normalizedCapabilities = (0, utils_js_1.normalizeCapabilities)(ucp.capabilities);
295
+ if (normalizedCapabilities.length === 0) {
296
+ // Check if it was a non-empty object that failed to normalize
297
+ if (typeof ucp.capabilities === 'object' && !Array.isArray(ucp.capabilities) && Object.keys(ucp.capabilities).length > 0) {
298
+ issues.push({
299
+ severity: 'warn',
300
+ code: validation_js_1.ValidationErrorCodes.MISSING_CAPABILITIES,
301
+ path: '$.ucp.capabilities',
302
+ message: 'Capabilities object could not be normalized - check format',
303
+ hint: 'Capabilities should be either an array or an object with capability names as keys',
304
+ });
305
+ }
306
+ else {
307
+ issues.push({
308
+ severity: 'warn',
309
+ code: validation_js_1.ValidationErrorCodes.MISSING_CAPABILITIES,
310
+ path: '$.ucp.capabilities',
311
+ message: 'Capabilities array is empty',
312
+ hint: 'Add at least one capability (e.g., dev.ucp.shopping.checkout)',
313
+ });
314
+ }
315
+ }
316
+ // Validate each normalized capability
317
+ for (let i = 0; i < normalizedCapabilities.length; i++) {
318
+ const cap = normalizedCapabilities[i];
319
+ issues.push(...validateCapability(cap, i, cap.name));
297
320
  }
298
321
  return issues;
299
322
  }
300
323
  /**
301
324
  * Validate individual capability
302
325
  */
303
- function validateCapability(capability, index) {
326
+ function validateCapability(capability, index, capabilityName) {
304
327
  const issues = [];
305
- const path = `$.ucp.capabilities[${index}]`;
328
+ const path = capabilityName ? `$.ucp.capabilities["${capabilityName}"]` : `$.ucp.capabilities[${index}]`;
306
329
  if (!capability || typeof capability !== 'object') {
307
330
  issues.push({
308
331
  severity: 'error',
@@ -313,13 +336,15 @@ function validateCapability(capability, index) {
313
336
  return issues;
314
337
  }
315
338
  const cap = capability;
339
+ const capName = capabilityName ? `"${capabilityName}"` : (cap.name ? `"${cap.name}"` : `#${index + 1}`);
316
340
  // Check required fields
317
341
  if (!cap.name) {
318
342
  issues.push({
319
343
  severity: 'error',
320
344
  code: validation_js_1.ValidationErrorCodes.INVALID_CAPABILITY_STRUCTURE,
321
345
  path: `${path}.name`,
322
- message: 'Capability missing required "name" field',
346
+ message: `Capability #${index + 1} missing required "name" field`,
347
+ hint: 'Add a name like "checkout", "order", or "fulfillment"',
323
348
  });
324
349
  }
325
350
  if (!cap.version) {
@@ -327,7 +352,8 @@ function validateCapability(capability, index) {
327
352
  severity: 'error',
328
353
  code: validation_js_1.ValidationErrorCodes.INVALID_CAPABILITY_STRUCTURE,
329
354
  path: `${path}.version`,
330
- message: 'Capability missing required "version" field',
355
+ message: `Capability ${capName} missing required "version" field`,
356
+ hint: 'Add version in format "YYYY-MM-DD" (e.g., "2026-01-11")',
331
357
  });
332
358
  }
333
359
  else if (typeof cap.version === 'string' && !VERSION_REGEX.test(cap.version)) {
@@ -335,8 +361,8 @@ function validateCapability(capability, index) {
335
361
  severity: 'error',
336
362
  code: validation_js_1.ValidationErrorCodes.INVALID_VERSION_FORMAT,
337
363
  path: `${path}.version`,
338
- message: `Invalid version format: "${cap.version}"`,
339
- hint: 'Use format "YYYY-MM-DD"',
364
+ message: `Capability ${capName} has invalid version format: "${cap.version}"`,
365
+ hint: 'Use format "YYYY-MM-DD" (e.g., "2026-01-11")',
340
366
  });
341
367
  }
342
368
  if (!cap.spec) {
@@ -344,7 +370,8 @@ function validateCapability(capability, index) {
344
370
  severity: 'error',
345
371
  code: validation_js_1.ValidationErrorCodes.INVALID_CAPABILITY_STRUCTURE,
346
372
  path: `${path}.spec`,
347
- message: 'Capability missing required "spec" field',
373
+ message: `Capability ${capName} missing required "spec" field`,
374
+ hint: 'Add spec URL like "https://ucp.dev/specs/checkout/1.0"',
348
375
  });
349
376
  }
350
377
  if (!cap.schema) {
@@ -352,7 +379,8 @@ function validateCapability(capability, index) {
352
379
  severity: 'error',
353
380
  code: validation_js_1.ValidationErrorCodes.INVALID_CAPABILITY_STRUCTURE,
354
381
  path: `${path}.schema`,
355
- message: 'Capability missing required "schema" field',
382
+ message: `Capability ${capName} missing required "schema" field`,
383
+ hint: 'Add schema URL pointing to JSON Schema for this capability',
356
384
  });
357
385
  }
358
386
  return issues;
@@ -412,4 +440,110 @@ function validateJwk(jwk, path) {
412
440
  }
413
441
  return issues;
414
442
  }
443
+ /**
444
+ * Validate payment handlers (required per UCP spec 2026-01-11)
445
+ * Supports both formats:
446
+ * - Google format: { payment: { handlers: [...] } }
447
+ * - Shopify format: { payment_handlers: { [name]: [...] } }
448
+ */
449
+ function validatePaymentHandlers(profile) {
450
+ const issues = [];
451
+ // Check for payment handlers in both Google and Shopify formats
452
+ const hasPaymentObject = profile.payment && typeof profile.payment === 'object';
453
+ const hasPaymentHandlers = profile.payment_handlers && typeof profile.payment_handlers === 'object';
454
+ if (!hasPaymentObject && !hasPaymentHandlers) {
455
+ issues.push({
456
+ severity: 'error',
457
+ code: validation_js_1.ValidationErrorCodes.MISSING_PAYMENT_HANDLERS,
458
+ path: '$.payment',
459
+ message: 'Missing required "payment" object',
460
+ hint: 'Add payment object with handlers array per UCP spec, or payment_handlers for Shopify format',
461
+ });
462
+ return issues;
463
+ }
464
+ // Normalize handlers from both formats
465
+ const normalizedHandlers = normalizePaymentHandlers(profile);
466
+ if (normalizedHandlers.length === 0) {
467
+ const path = hasPaymentHandlers ? '$.payment_handlers' : '$.payment.handlers';
468
+ issues.push({
469
+ severity: 'error',
470
+ code: validation_js_1.ValidationErrorCodes.MISSING_PAYMENT_HANDLERS,
471
+ path,
472
+ message: 'Payment handlers must be a non-empty array or object',
473
+ hint: 'Add at least one payment handler configuration',
474
+ });
475
+ return issues;
476
+ }
477
+ // Validate each handler - use relaxed requirements for Shopify format
478
+ // Google spec requires: id, name, version, spec, config_schema, instrument_schemas
479
+ // Shopify provides: id, version, spec, schema, config
480
+ const coreFields = ['id', 'version', 'spec'];
481
+ normalizedHandlers.forEach((handler, idx) => {
482
+ const handlerPath = `$.payment_handlers[${idx}]`;
483
+ if (!handler || typeof handler !== 'object') {
484
+ issues.push({
485
+ severity: 'error',
486
+ code: validation_js_1.ValidationErrorCodes.PAYMENT_HANDLER_MISSING_FIELD,
487
+ path: handlerPath,
488
+ message: `Payment handler ${idx + 1} must be an object`,
489
+ });
490
+ return;
491
+ }
492
+ const handlerObj = handler;
493
+ // Check core required fields (common to both formats)
494
+ coreFields.forEach(field => {
495
+ if (!handlerObj[field]) {
496
+ issues.push({
497
+ severity: 'error',
498
+ code: validation_js_1.ValidationErrorCodes.PAYMENT_HANDLER_MISSING_FIELD,
499
+ path: `${handlerPath}.${field}`,
500
+ message: `Payment handler ${idx + 1} missing required field: ${field}`,
501
+ hint: `Add "${field}" to payment handler configuration`,
502
+ });
503
+ }
504
+ });
505
+ // Additional fields are warnings (different formats have different requirements)
506
+ if (!handlerObj.schema && !handlerObj.config_schema) {
507
+ issues.push({
508
+ severity: 'warn',
509
+ code: validation_js_1.ValidationErrorCodes.PAYMENT_HANDLER_MISSING_FIELD,
510
+ path: `${handlerPath}.schema`,
511
+ message: `Payment handler ${idx + 1} missing schema/config_schema field`,
512
+ hint: 'Add "schema" or "config_schema" for full spec compliance',
513
+ });
514
+ }
515
+ });
516
+ return issues;
517
+ }
518
+ /**
519
+ * Normalize payment handlers from both Google and Shopify formats
520
+ * - Google: { payment: { handlers: [...] } }
521
+ * - Shopify: { payment_handlers: { [name]: [{...}, ...] } }
522
+ */
523
+ function normalizePaymentHandlers(profile) {
524
+ // Try Shopify format first (payment_handlers at root)
525
+ if (profile.payment_handlers && typeof profile.payment_handlers === 'object') {
526
+ const handlers = [];
527
+ const paymentHandlers = profile.payment_handlers;
528
+ for (const [_name, entries] of Object.entries(paymentHandlers)) {
529
+ if (Array.isArray(entries)) {
530
+ handlers.push(...entries);
531
+ }
532
+ }
533
+ if (handlers.length > 0) {
534
+ return handlers;
535
+ }
536
+ }
537
+ // Try Google format (payment.handlers)
538
+ if (profile.payment && typeof profile.payment === 'object') {
539
+ const payment = profile.payment;
540
+ if (Array.isArray(payment.handlers)) {
541
+ return payment.handlers;
542
+ }
543
+ if (payment.handlers && typeof payment.handlers === 'object') {
544
+ return Object.values(payment.handlers);
545
+ }
546
+ }
547
+ return [];
548
+ }
415
549
  //# sourceMappingURL=structural-validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"structural-validator.js","sourceRoot":"","sources":["../../src/validator/structural-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structural-validator.js","sourceRoot":"","sources":["../../src/validator/structural-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Validator Utilities
3
+ * Helper functions for normalizing UCP profile data
4
+ */
5
+ import type { UcpCapability, UcpService, UcpCapabilities } from '../types/ucp-profile.js';
6
+ /**
7
+ * Capability entry in the object-keyed format (Shopify style)
8
+ * Where capabilities is: { [name]: CapabilityEntry[] }
9
+ */
10
+ export interface CapabilityEntry {
11
+ version: string;
12
+ spec?: string;
13
+ schema?: string;
14
+ extends?: string;
15
+ config?: Record<string, unknown>;
16
+ }
17
+ /**
18
+ * Service entry in array format (Shopify style)
19
+ * Where services is: { [name]: ServiceEntry[] }
20
+ */
21
+ export interface ServiceEntry {
22
+ version: string;
23
+ spec?: string;
24
+ transport?: string;
25
+ endpoint?: string;
26
+ schema?: string;
27
+ rest?: UcpService['rest'];
28
+ mcp?: UcpService['mcp'];
29
+ a2a?: UcpService['a2a'];
30
+ embedded?: UcpService['embedded'];
31
+ }
32
+ /**
33
+ * Capabilities can be in two formats:
34
+ * 1. Array format: [{ name, version, spec, schema, ... }, ...]
35
+ * 2. Object format (Shopify): { [name]: [{ version, spec, schema, ... }, ...] }
36
+ *
37
+ * This function normalizes both to our standard array format.
38
+ */
39
+ export declare function normalizeCapabilities(capabilities: UcpCapabilities | unknown): UcpCapability[];
40
+ /**
41
+ * Services can be in two formats:
42
+ * 1. Object format (our format): { [name]: { version, rest?, mcp?, ... } }
43
+ * 2. Array format (Shopify): { [name]: [{ version, transport, endpoint, ... }, ...] }
44
+ *
45
+ * This function normalizes services and returns individual service objects.
46
+ */
47
+ export declare function normalizeServices(services: Record<string, UcpService | UcpService[] | ServiceEntry[]> | undefined): Array<{
48
+ name: string;
49
+ service: UcpService;
50
+ }>;
51
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/validator/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1F;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1B,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IACxB,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IACxB,QAAQ,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;CACnC;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,eAAe,GAAG,OAAO,GACtC,aAAa,EAAE,CA0CjB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,EAAE,GAAG,YAAY,EAAE,CAAC,GAAG,SAAS,GAC/E,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC,CAuB9C"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ /**
3
+ * Validator Utilities
4
+ * Helper functions for normalizing UCP profile data
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.normalizeCapabilities = normalizeCapabilities;
8
+ exports.normalizeServices = normalizeServices;
9
+ /**
10
+ * Capabilities can be in two formats:
11
+ * 1. Array format: [{ name, version, spec, schema, ... }, ...]
12
+ * 2. Object format (Shopify): { [name]: [{ version, spec, schema, ... }, ...] }
13
+ *
14
+ * This function normalizes both to our standard array format.
15
+ */
16
+ function normalizeCapabilities(capabilities) {
17
+ if (!capabilities) {
18
+ return [];
19
+ }
20
+ // Already an array - validate it looks like capabilities and return
21
+ if (Array.isArray(capabilities)) {
22
+ // Check if array items look like UcpCapability (have name property)
23
+ if (capabilities.length === 0 || (capabilities[0] && 'name' in capabilities[0])) {
24
+ return capabilities;
25
+ }
26
+ // Array but not capabilities format - return empty
27
+ return [];
28
+ }
29
+ // Object format - convert to array
30
+ if (typeof capabilities === 'object') {
31
+ const normalized = [];
32
+ for (const [name, entries] of Object.entries(capabilities)) {
33
+ // Each capability name can have multiple version entries
34
+ if (Array.isArray(entries)) {
35
+ for (const entry of entries) {
36
+ if (entry && typeof entry === 'object') {
37
+ normalized.push({
38
+ name,
39
+ version: entry.version || '',
40
+ spec: entry.spec || '',
41
+ schema: entry.schema || '',
42
+ extends: entry.extends,
43
+ config: entry.config,
44
+ });
45
+ }
46
+ }
47
+ }
48
+ }
49
+ return normalized;
50
+ }
51
+ // Unknown format - return empty array
52
+ return [];
53
+ }
54
+ /**
55
+ * Services can be in two formats:
56
+ * 1. Object format (our format): { [name]: { version, rest?, mcp?, ... } }
57
+ * 2. Array format (Shopify): { [name]: [{ version, transport, endpoint, ... }, ...] }
58
+ *
59
+ * This function normalizes services and returns individual service objects.
60
+ */
61
+ function normalizeServices(services) {
62
+ if (!services) {
63
+ return [];
64
+ }
65
+ const normalized = [];
66
+ for (const [serviceName, serviceData] of Object.entries(services)) {
67
+ if (Array.isArray(serviceData)) {
68
+ // Array format - convert each entry to UcpService
69
+ for (const entry of serviceData) {
70
+ const service = convertServiceEntry(entry);
71
+ if (service) {
72
+ normalized.push({ name: serviceName, service });
73
+ }
74
+ }
75
+ }
76
+ else if (serviceData && typeof serviceData === 'object') {
77
+ // Already UcpService format
78
+ normalized.push({ name: serviceName, service: serviceData });
79
+ }
80
+ }
81
+ return normalized;
82
+ }
83
+ /**
84
+ * Convert a Shopify-style service entry to our UcpService format
85
+ */
86
+ function convertServiceEntry(entry) {
87
+ if (!entry || typeof entry !== 'object') {
88
+ return null;
89
+ }
90
+ const service = {
91
+ version: entry.version || '',
92
+ spec: entry.spec || '',
93
+ };
94
+ // Handle transport-based entries (Shopify format)
95
+ if (entry.transport) {
96
+ switch (entry.transport) {
97
+ case 'rest':
98
+ service.rest = {
99
+ schema: entry.schema || '',
100
+ endpoint: entry.endpoint || '',
101
+ };
102
+ break;
103
+ case 'mcp':
104
+ service.mcp = {
105
+ schema: entry.schema || '',
106
+ endpoint: entry.endpoint || '',
107
+ };
108
+ break;
109
+ case 'a2a':
110
+ service.a2a = {
111
+ agentCard: entry.endpoint || '',
112
+ };
113
+ break;
114
+ case 'embedded':
115
+ service.embedded = {
116
+ schema: entry.schema || '',
117
+ };
118
+ break;
119
+ }
120
+ }
121
+ // Handle direct transport properties (our format)
122
+ if (entry.rest)
123
+ service.rest = entry.rest;
124
+ if (entry.mcp)
125
+ service.mcp = entry.mcp;
126
+ if (entry.a2a)
127
+ service.a2a = entry.a2a;
128
+ if (entry.embedded)
129
+ service.embedded = entry.embedded;
130
+ return service;
131
+ }
132
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/validator/utils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAuCH,sDA4CC;AASD,8CAyBC;AArFD;;;;;;GAMG;AACH,SAAgB,qBAAqB,CACnC,YAAuC;IAEvC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,oEAAoE;IACpE,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,oEAAoE;QACpE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,MAAM,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,OAAO,YAA+B,CAAC;QACzC,CAAC;QACD,mDAAmD;QACnD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,mCAAmC;IACnC,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,UAAU,GAAoB,EAAE,CAAC;QAEvC,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAuC,CAAC,EAAE,CAAC;YACtF,yDAAyD;YACzD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,KAAK,MAAM,KAAK,IAAI,OAA4B,EAAE,CAAC;oBACjD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBACvC,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI;4BACJ,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;4BAC5B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;4BACtB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;4BAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,MAAM,EAAE,KAAK,CAAC,MAAM;yBACrB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,sCAAsC;IACtC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAC/B,QAAgF;IAEhF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAiD,EAAE,CAAC;IAEpE,KAAK,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClE,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,kDAAkD;YAClD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAqB,CAAC,CAAC;gBAC3D,IAAI,OAAO,EAAE,CAAC;oBACZ,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC1D,4BAA4B;YAC5B,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAyB,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,KAAmB;IAC9C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAe;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;KACvB,CAAC;IAEF,kDAAkD;IAClD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC;YACxB,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,GAAG;oBACb,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;oBAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;iBAC/B,CAAC;gBACF,MAAM;YACR,KAAK,KAAK;gBACR,OAAO,CAAC,GAAG,GAAG;oBACZ,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;oBAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;iBAC/B,CAAC;gBACF,MAAM;YACR,KAAK,KAAK;gBACR,OAAO,CAAC,GAAG,GAAG;oBACZ,SAAS,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;iBAChC,CAAC;gBACF,MAAM;YACR,KAAK,UAAU;gBACb,OAAO,CAAC,QAAQ,GAAG;oBACjB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;iBAC3B,CAAC;gBACF,MAAM;QACV,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,IAAI,KAAK,CAAC,IAAI;QAAE,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAC1C,IAAI,KAAK,CAAC,GAAG;QAAE,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACvC,IAAI,KAAK,CAAC,GAAG;QAAE,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACvC,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAEtD,OAAO,OAAO,CAAC;AACjB,CAAC"}