@ucptools/validator 1.0.1 → 1.2.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 (162) 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/generator/profile-builder.d.ts.map +1 -1
  43. package/dist/generator/profile-builder.js +158 -115
  44. package/dist/generator/profile-builder.js.map +1 -1
  45. package/dist/lib/analytics.d.ts +349 -0
  46. package/dist/lib/analytics.d.ts.map +1 -0
  47. package/dist/lib/analytics.js +198 -0
  48. package/dist/lib/analytics.js.map +1 -0
  49. package/dist/security/security-scanner.d.ts.map +1 -1
  50. package/dist/security/security-scanner.js +130 -2
  51. package/dist/security/security-scanner.js.map +1 -1
  52. package/dist/security/types.d.ts +32 -0
  53. package/dist/security/types.d.ts.map +1 -1
  54. package/dist/security/types.js.map +1 -1
  55. package/dist/services/analytics.d.ts +114 -0
  56. package/dist/services/analytics.d.ts.map +1 -0
  57. package/dist/services/analytics.js +862 -0
  58. package/dist/services/analytics.js.map +1 -0
  59. package/dist/services/badge.d.ts +31 -0
  60. package/dist/services/badge.d.ts.map +1 -0
  61. package/dist/services/badge.js +152 -0
  62. package/dist/services/badge.js.map +1 -0
  63. package/dist/services/cron.d.ts +127 -0
  64. package/dist/services/cron.d.ts.map +1 -0
  65. package/dist/services/cron.js +693 -0
  66. package/dist/services/cron.js.map +1 -0
  67. package/dist/services/directory.d.ts +2 -0
  68. package/dist/services/directory.d.ts.map +1 -1
  69. package/dist/services/directory.js +45 -27
  70. package/dist/services/directory.js.map +1 -1
  71. package/dist/services/email.d.ts +127 -0
  72. package/dist/services/email.d.ts.map +1 -0
  73. package/dist/services/email.js +876 -0
  74. package/dist/services/email.js.map +1 -0
  75. package/dist/services/hosted-profiles.d.ts +77 -0
  76. package/dist/services/hosted-profiles.d.ts.map +1 -0
  77. package/dist/services/hosted-profiles.js +433 -0
  78. package/dist/services/hosted-profiles.js.map +1 -0
  79. package/dist/services/latency.d.ts +67 -0
  80. package/dist/services/latency.d.ts.map +1 -0
  81. package/dist/services/latency.js +274 -0
  82. package/dist/services/latency.js.map +1 -0
  83. package/dist/services/manifest-compliance.d.ts +64 -0
  84. package/dist/services/manifest-compliance.d.ts.map +1 -0
  85. package/dist/services/manifest-compliance.js +271 -0
  86. package/dist/services/manifest-compliance.js.map +1 -0
  87. package/dist/services/monitoring-diff.d.ts +31 -0
  88. package/dist/services/monitoring-diff.d.ts.map +1 -0
  89. package/dist/services/monitoring-diff.js +189 -0
  90. package/dist/services/monitoring-diff.js.map +1 -0
  91. package/dist/services/notifications.d.ts +46 -0
  92. package/dist/services/notifications.d.ts.map +1 -0
  93. package/dist/services/notifications.js +88 -0
  94. package/dist/services/notifications.js.map +1 -0
  95. package/dist/services/posthog.d.ts +43 -0
  96. package/dist/services/posthog.d.ts.map +1 -0
  97. package/dist/services/posthog.js +110 -0
  98. package/dist/services/posthog.js.map +1 -0
  99. package/dist/services/stripe.d.ts +93 -0
  100. package/dist/services/stripe.d.ts.map +1 -0
  101. package/dist/services/stripe.js +490 -0
  102. package/dist/services/stripe.js.map +1 -0
  103. package/dist/services/validation-history.d.ts +99 -0
  104. package/dist/services/validation-history.d.ts.map +1 -0
  105. package/dist/services/validation-history.js +344 -0
  106. package/dist/services/validation-history.js.map +1 -0
  107. package/dist/services/validation-logging.d.ts +103 -0
  108. package/dist/services/validation-logging.d.ts.map +1 -0
  109. package/dist/services/validation-logging.js +210 -0
  110. package/dist/services/validation-logging.js.map +1 -0
  111. package/dist/services/validation.d.ts +119 -0
  112. package/dist/services/validation.d.ts.map +1 -0
  113. package/dist/services/validation.js +1185 -0
  114. package/dist/services/validation.js.map +1 -0
  115. package/dist/simulator/agent-simulator.d.ts.map +1 -1
  116. package/dist/simulator/agent-simulator.js +229 -9
  117. package/dist/simulator/agent-simulator.js.map +1 -1
  118. package/dist/simulator/types.d.ts +26 -0
  119. package/dist/simulator/types.d.ts.map +1 -1
  120. package/dist/simulator/types.js.map +1 -1
  121. package/dist/types/acp-validation.d.ts +87 -0
  122. package/dist/types/acp-validation.d.ts.map +1 -0
  123. package/dist/types/acp-validation.js +40 -0
  124. package/dist/types/acp-validation.js.map +1 -0
  125. package/dist/types/analytics.d.ts +182 -0
  126. package/dist/types/analytics.d.ts.map +1 -0
  127. package/dist/types/analytics.js +7 -0
  128. package/dist/types/analytics.js.map +1 -0
  129. package/dist/types/generator.d.ts +4 -0
  130. package/dist/types/generator.d.ts.map +1 -1
  131. package/dist/types/ucp-profile.d.ts +32 -2
  132. package/dist/types/ucp-profile.d.ts.map +1 -1
  133. package/dist/types/ucp-profile.js +31 -1
  134. package/dist/types/ucp-profile.js.map +1 -1
  135. package/dist/types/validation.d.ts +14 -0
  136. package/dist/types/validation.d.ts.map +1 -1
  137. package/dist/types/validation.js +19 -0
  138. package/dist/types/validation.js.map +1 -1
  139. package/dist/validator/acp/index.d.ts +31 -0
  140. package/dist/validator/acp/index.d.ts.map +1 -0
  141. package/dist/validator/acp/index.js +574 -0
  142. package/dist/validator/acp/index.js.map +1 -0
  143. package/dist/validator/network-validator.d.ts.map +1 -1
  144. package/dist/validator/network-validator.js +23 -13
  145. package/dist/validator/network-validator.js.map +1 -1
  146. package/dist/validator/rules-validator.d.ts +8 -0
  147. package/dist/validator/rules-validator.d.ts.map +1 -1
  148. package/dist/validator/rules-validator.js +159 -43
  149. package/dist/validator/rules-validator.js.map +1 -1
  150. package/dist/validator/structural-validator.d.ts.map +1 -1
  151. package/dist/validator/structural-validator.js +283 -53
  152. package/dist/validator/structural-validator.js.map +1 -1
  153. package/dist/validator/utils.d.ts +62 -0
  154. package/dist/validator/utils.d.ts.map +1 -0
  155. package/dist/validator/utils.js +151 -0
  156. package/dist/validator/utils.js.map +1 -0
  157. package/package.json +45 -12
  158. package/.claude/settings.local.json +0 -60
  159. package/.vercel/README.txt +0 -11
  160. package/.vercel/project.json +0 -1
  161. package/publish-output.txt +0 -0
  162. package/tsconfig.json +0 -20
@@ -0,0 +1,574 @@
1
+ "use strict";
2
+ /**
3
+ * ACP Readiness Checker
4
+ *
5
+ * Checks how ready a merchant's site is for the Agentic Commerce Protocol (ACP).
6
+ * Unlike UCP validation (which checks a specific /.well-known/ucp file), ACP readiness
7
+ * is assessed by analyzing the merchant's site for:
8
+ *
9
+ * 1. Platform (Shopify/Etsy = built-in ChatGPT Shopping integration)
10
+ * 2. Payment infrastructure (Stripe detection = easier ACP integration via SPT)
11
+ * 3. Policy pages (required in ACP checkout session `links` array: terms, privacy, return)
12
+ * 4. Security (HTTPS with TLS 1.2+ required by ACP spec for all endpoints)
13
+ *
14
+ * Note: ACP is a server-to-server REST API (5 checkout endpoints + delegate_payment).
15
+ * We cannot validate the actual API without merchant credentials, so this checker
16
+ * assesses surface-level readiness signals from the merchant's public site.
17
+ *
18
+ * Note: ACP product data comes from merchant-submitted feeds (CSV/JSON),
19
+ * not crawled homepage markup. Product data scoring is handled by the Feed Analyzer.
20
+ *
21
+ * Based on ACP spec v2026-01-30:
22
+ * https://github.com/agentic-commerce-protocol/agentic-commerce-protocol
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.checkAcpReadiness = checkAcpReadiness;
26
+ /**
27
+ * Check a domain's ACP readiness
28
+ */
29
+ async function checkAcpReadiness(domain, options = {}) {
30
+ const timeoutMs = options.timeoutMs || 15000;
31
+ const findings = [];
32
+ let platformDetected = null;
33
+ let stripeDetected = false;
34
+ // Fetch the homepage
35
+ let html = '';
36
+ let statusCode = 0;
37
+ let isHttps = false;
38
+ let fetchError = null;
39
+ try {
40
+ const controller = new AbortController();
41
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
42
+ const url = `https://${domain}`;
43
+ const response = await fetch(url, {
44
+ signal: controller.signal,
45
+ headers: {
46
+ 'User-Agent': 'UCPtools-ACP-Checker/1.0 (https://ucptools.dev)',
47
+ 'Accept': 'text/html,application/xhtml+xml',
48
+ },
49
+ redirect: 'follow',
50
+ });
51
+ clearTimeout(timer);
52
+ statusCode = response.status;
53
+ isHttps = response.url.startsWith('https://');
54
+ html = await response.text();
55
+ }
56
+ catch (error) {
57
+ if (error.name === 'AbortError') {
58
+ fetchError = 'timeout';
59
+ findings.push({
60
+ severity: 'error',
61
+ code: 'ACP_SITE_TIMEOUT',
62
+ category: 'security',
63
+ message: `Site did not respond within ${timeoutMs / 1000}s`,
64
+ hint: 'Ensure your server responds quickly — ACP checkout sessions require low-latency responses',
65
+ });
66
+ }
67
+ else {
68
+ fetchError = error.message || 'unreachable';
69
+ findings.push({
70
+ severity: 'error',
71
+ code: 'ACP_SITE_UNREACHABLE',
72
+ category: 'security',
73
+ message: `Could not reach ${domain} over HTTPS`,
74
+ hint: 'ACP requires HTTPS with TLS 1.2+. Ensure your site is accessible via https://',
75
+ });
76
+ }
77
+ }
78
+ if (!fetchError) {
79
+ // === HTTPS Check ===
80
+ if (isHttps) {
81
+ findings.push({
82
+ severity: 'info',
83
+ code: 'ACP_HTTPS_OK',
84
+ category: 'security',
85
+ message: 'Site is served over HTTPS',
86
+ });
87
+ }
88
+ else {
89
+ findings.push({
90
+ severity: 'error',
91
+ code: 'ACP_HTTPS_MISSING',
92
+ category: 'security',
93
+ message: 'Site is not served over HTTPS',
94
+ hint: 'ACP spec requires all endpoints use HTTPS with TLS 1.2+',
95
+ });
96
+ }
97
+ // === Platform Detection ===
98
+ platformDetected = detectPlatform(html);
99
+ if (platformDetected === 'shopify') {
100
+ findings.push({
101
+ severity: 'info',
102
+ code: 'ACP_PLATFORM_SHOPIFY',
103
+ category: 'platform',
104
+ message: 'Shopify platform detected — built-in ChatGPT Shopping integration available',
105
+ hint: 'Shopify merchants can enable ChatGPT Shopping through the Shopify admin — no custom ACP integration needed',
106
+ });
107
+ }
108
+ else if (platformDetected === 'etsy') {
109
+ findings.push({
110
+ severity: 'info',
111
+ code: 'ACP_PLATFORM_ETSY',
112
+ category: 'platform',
113
+ message: 'Etsy platform detected — built-in ChatGPT Shopping integration',
114
+ });
115
+ }
116
+ else if (platformDetected) {
117
+ findings.push({
118
+ severity: 'info',
119
+ code: 'ACP_PLATFORM_OTHER',
120
+ category: 'platform',
121
+ message: `${platformDetected} platform detected — custom ACP integration required`,
122
+ hint: 'You\'ll need to build a ChatGPT merchant app with ACP checkout endpoints — apply at chatgpt.com/merchants',
123
+ });
124
+ }
125
+ else {
126
+ findings.push({
127
+ severity: 'info',
128
+ code: 'ACP_PLATFORM_UNKNOWN',
129
+ category: 'platform',
130
+ message: 'Platform not detected — custom ACP integration required',
131
+ hint: 'Build a ChatGPT merchant app with ACP checkout endpoints — apply at chatgpt.com/merchants',
132
+ });
133
+ }
134
+ // === Stripe Detection ===
135
+ stripeDetected = detectStripe(html);
136
+ if (stripeDetected) {
137
+ findings.push({
138
+ severity: 'info',
139
+ code: 'ACP_STRIPE_DETECTED',
140
+ category: 'payment',
141
+ message: 'Stripe payment infrastructure detected',
142
+ hint: 'Stripe is a primary ACP Delegated Payment partner — you can enable agentic payments with minimal code changes',
143
+ });
144
+ }
145
+ else {
146
+ findings.push({
147
+ severity: 'warn',
148
+ code: 'ACP_STRIPE_NOT_DETECTED',
149
+ category: 'payment',
150
+ message: 'Stripe not detected on this page',
151
+ hint: 'ACP Delegated Payment is supported by Stripe (SPT) and PayPal — Stripe is the easiest integration path',
152
+ });
153
+ }
154
+ // === Policy Pages ===
155
+ const policies = analyzePolicies(html, domain);
156
+ findings.push(...policies);
157
+ // === Checkout Readiness ===
158
+ const checkout = analyzeCheckoutReadiness(html);
159
+ findings.push(...checkout);
160
+ // === No Commerce Signals Detection ===
161
+ const hasAnyCommerceSignal = platformDetected || stripeDetected ||
162
+ findings.some(f => f.code === 'ACP_CHECKOUT_FORM_FOUND') ||
163
+ findings.some(f => ['ACP_TERMS_FOUND', 'ACP_PRIVACY_FOUND', 'ACP_RETURN_FOUND'].includes(f.code));
164
+ if (!hasAnyCommerceSignal) {
165
+ findings.push({
166
+ severity: 'info',
167
+ code: 'ACP_NO_COMMERCE_SIGNALS',
168
+ category: 'platform',
169
+ message: 'No e-commerce signals detected on this site',
170
+ hint: 'ACP readiness checks are designed for e-commerce sites with checkout functionality',
171
+ });
172
+ }
173
+ }
174
+ // Calculate scores
175
+ const scoreBreakdown = calculateScores(findings, platformDetected, stripeDetected);
176
+ const grade = calculateGrade(scoreBreakdown.total);
177
+ const label = getLabel(grade);
178
+ const recommendations = generateRecommendations(findings, platformDetected, stripeDetected);
179
+ return {
180
+ ok: scoreBreakdown.total >= 40,
181
+ domain,
182
+ score: scoreBreakdown.total,
183
+ grade,
184
+ label,
185
+ score_breakdown: scoreBreakdown,
186
+ findings,
187
+ platform_detected: platformDetected,
188
+ stripe_detected: stripeDetected,
189
+ checked_at: new Date().toISOString(),
190
+ recommendations,
191
+ };
192
+ }
193
+ // --- Detection Helpers ---
194
+ function detectPlatform(html) {
195
+ const lower = html.toLowerCase();
196
+ // Require 2+ corroborating structural signals per platform.
197
+ // Single mentions in content text (guides, comparisons) must NOT trigger detection.
198
+ // Shopify: CDN, template markers, JS globals
199
+ const shopifySignals = [
200
+ lower.includes('cdn.shopify.com'),
201
+ lower.includes('myshopify.com'),
202
+ /Shopify\.theme/i.test(html),
203
+ lower.includes('shopify-section'),
204
+ /Shopify\.shop\s*=/i.test(html),
205
+ ];
206
+ if (shopifySignals.filter(Boolean).length >= 2)
207
+ return 'shopify';
208
+ // Etsy: CDN + listing/shop URLs
209
+ const etsySignals = [
210
+ lower.includes('etsystatic.com'),
211
+ lower.includes('etsy.me'),
212
+ /etsy\.com\/listing/i.test(html),
213
+ /etsy\.com\/shop/i.test(html),
214
+ ];
215
+ if (etsySignals.filter(Boolean).length >= 2)
216
+ return 'etsy';
217
+ // WooCommerce: plugin paths, WC CSS classes, REST API
218
+ const wooSignals = [
219
+ lower.includes('wp-content/plugins/woocommerce'),
220
+ lower.includes('wc-block-'),
221
+ /class="[^"]*woocommerce[^"]*"/i.test(html),
222
+ lower.includes('wc_ajax'),
223
+ lower.includes('wp-json/wc/'),
224
+ ];
225
+ if (wooSignals.filter(Boolean).length >= 2)
226
+ return 'WooCommerce';
227
+ // BigCommerce: CDN + structural markers
228
+ const bigcommerceSignals = [
229
+ lower.includes('cdn11.bigcommerce.com'),
230
+ lower.includes('bigcommerce.com/s-'),
231
+ /data-content-region/i.test(html),
232
+ ];
233
+ if (bigcommerceSignals.filter(Boolean).length >= 2)
234
+ return 'BigCommerce';
235
+ // Magento: framework-specific markers
236
+ const magentoSignals = [
237
+ lower.includes('mage-init'),
238
+ lower.includes('requirejs/require'),
239
+ lower.includes('/static/version'),
240
+ lower.includes('catalog/product/view'),
241
+ ];
242
+ if (magentoSignals.filter(Boolean).length >= 2)
243
+ return 'Magento';
244
+ // Squarespace: CDN domains + structural CSS
245
+ const squarespaceSignals = [
246
+ lower.includes('static1.squarespace.com'),
247
+ lower.includes('squarespace-cdn.com'),
248
+ /class="[^"]*sqs-block[^"]*"/i.test(html),
249
+ ];
250
+ if (squarespaceSignals.filter(Boolean).length >= 2)
251
+ return 'Squarespace';
252
+ // Wix: CDN domains + SDK
253
+ const wixSignals = [
254
+ lower.includes('parastorage.com'),
255
+ lower.includes('wixsite.com'),
256
+ lower.includes('static.wixstatic.com'),
257
+ lower.includes('wix-code-sdk'),
258
+ ];
259
+ if (wixSignals.filter(Boolean).length >= 2)
260
+ return 'Wix';
261
+ return null;
262
+ }
263
+ function detectStripe(html) {
264
+ // Only match actual Stripe.js integration signals, not generic CSS classes
265
+ if (html.includes('js.stripe.com'))
266
+ return true;
267
+ if (html.includes('Stripe(') && html.includes('data-stripe'))
268
+ return true;
269
+ if (html.includes('stripe-payment-element') || html.includes('stripe-card-element'))
270
+ return true;
271
+ return false;
272
+ }
273
+ function analyzePolicies(html, _domain) {
274
+ const findings = [];
275
+ const lower = html.toLowerCase();
276
+ // ACP spec requires links array with terms_of_use, privacy_policy, return_policy
277
+ // Anchor href patterns to terminal path segments to avoid false positives
278
+ const termsPatterns = [
279
+ /terms[- ]of[- ](use|service)/i,
280
+ /terms[- ]and[- ]conditions/i,
281
+ /href=["'][^"']*\/(terms-of-(use|service)|terms-and-conditions|tos)\/?["']/i,
282
+ /href=["'][^"']*\/terms\/?["']/i,
283
+ ];
284
+ const hasTOS = termsPatterns.some(p => p.test(html));
285
+ if (hasTOS) {
286
+ findings.push({
287
+ severity: 'info',
288
+ code: 'ACP_TERMS_FOUND',
289
+ category: 'policies',
290
+ message: 'Terms of Use/Service page detected',
291
+ });
292
+ }
293
+ else {
294
+ findings.push({
295
+ severity: 'warn',
296
+ code: 'ACP_TERMS_MISSING',
297
+ category: 'policies',
298
+ message: 'No Terms of Use/Service link found',
299
+ hint: 'ACP checkout sessions require a "terms_of_use" link in the response — ensure you have a terms page',
300
+ });
301
+ }
302
+ const privacyPatterns = [
303
+ /privacy[- ]policy/i,
304
+ /href=["'][^"']*\/(privacy-policy|privacy)\/?["']/i,
305
+ ];
306
+ const hasPrivacy = privacyPatterns.some(p => p.test(html));
307
+ if (hasPrivacy) {
308
+ findings.push({
309
+ severity: 'info',
310
+ code: 'ACP_PRIVACY_FOUND',
311
+ category: 'policies',
312
+ message: 'Privacy Policy page detected',
313
+ });
314
+ }
315
+ else {
316
+ findings.push({
317
+ severity: 'warn',
318
+ code: 'ACP_PRIVACY_MISSING',
319
+ category: 'policies',
320
+ message: 'No Privacy Policy link found',
321
+ hint: 'ACP checkout sessions include a "privacy_policy" link — ensure you have a privacy policy page',
322
+ });
323
+ }
324
+ const returnPatterns = [
325
+ /return[- ]policy/i,
326
+ /refund[- ]policy/i,
327
+ /returns[- ](&|and)[- ]exchanges/i,
328
+ /href=["'][^"']*\/(return-policy|refund-policy|returns|refunds)\/?["']/i,
329
+ ];
330
+ const hasReturn = returnPatterns.some(p => p.test(html));
331
+ if (hasReturn) {
332
+ findings.push({
333
+ severity: 'info',
334
+ code: 'ACP_RETURN_FOUND',
335
+ category: 'policies',
336
+ message: 'Return/Refund Policy page detected',
337
+ });
338
+ }
339
+ else {
340
+ findings.push({
341
+ severity: 'warn',
342
+ code: 'ACP_RETURN_MISSING',
343
+ category: 'policies',
344
+ message: 'No Return/Refund Policy link found',
345
+ hint: 'ACP checkout sessions include a "return_policy" link — ensure you have a return policy page',
346
+ });
347
+ }
348
+ return findings;
349
+ }
350
+ function analyzeCheckoutReadiness(html) {
351
+ const findings = [];
352
+ const lower = html.toLowerCase();
353
+ // Require structural HTML signals (attributes, form actions, platform-specific classes)
354
+ // NOT content text that merely mentions checkout/cart
355
+ const hasCheckout = /class="[^"]*add[_-]to[_-]cart[^"]*"/i.test(html) ||
356
+ /id="[^"]*add[_-]to[_-]cart[^"]*"/i.test(html) ||
357
+ /name="add_to_cart"/i.test(html) ||
358
+ lower.includes('action="/cart') ||
359
+ lower.includes('action="/checkout') ||
360
+ /data-action="[^"]*add[_-]to[_-]cart[^"]*"/i.test(html) ||
361
+ lower.includes('wc-block-cart') ||
362
+ lower.includes('shopify-buy-button');
363
+ if (hasCheckout) {
364
+ findings.push({
365
+ severity: 'info',
366
+ code: 'ACP_CHECKOUT_FORM_FOUND',
367
+ category: 'checkout',
368
+ message: 'E-commerce checkout functionality detected',
369
+ hint: 'Your site has checkout capabilities — the ACP Agentic Checkout Spec defines 5 REST endpoints you need to implement',
370
+ });
371
+ }
372
+ else {
373
+ findings.push({
374
+ severity: 'warn',
375
+ code: 'ACP_CHECKOUT_FORM_MISSING',
376
+ category: 'checkout',
377
+ message: 'No checkout functionality detected on homepage',
378
+ hint: 'ACP requires checkout endpoints (POST /checkout_sessions, etc.) — ensure your site has e-commerce functionality',
379
+ });
380
+ }
381
+ return findings;
382
+ }
383
+ // --- Scoring ---
384
+ function calculateScores(findings, platform, stripe) {
385
+ // Security: always calculated first (needed for early return)
386
+ let securityScore = 0;
387
+ let securityStatus = 'Issues';
388
+ let securityDetails = 'Security issues detected';
389
+ const hasHttps = findings.some(f => f.code === 'ACP_HTTPS_OK');
390
+ const isUnreachable = findings.some(f => f.code === 'ACP_SITE_UNREACHABLE' || f.code === 'ACP_SITE_TIMEOUT');
391
+ if (hasHttps) {
392
+ securityScore = 20;
393
+ securityStatus = 'OK';
394
+ securityDetails = 'HTTPS enabled with TLS';
395
+ }
396
+ else if (isUnreachable) {
397
+ securityStatus = 'Unreachable';
398
+ securityDetails = 'Site could not be reached';
399
+ }
400
+ // Check for policies (needed for no-commerce-signals check)
401
+ const hasTOS = findings.some(f => f.code === 'ACP_TERMS_FOUND');
402
+ const hasPrivacy = findings.some(f => f.code === 'ACP_PRIVACY_FOUND');
403
+ const hasReturn = findings.some(f => f.code === 'ACP_RETURN_FOUND');
404
+ const foundPolicies = [hasTOS, hasPrivacy, hasReturn].filter(Boolean).length;
405
+ // If no commerce signals at all, cap score to security only
406
+ const hasCheckoutSignal = findings.some(f => f.code === 'ACP_CHECKOUT_FORM_FOUND');
407
+ if (!platform && !stripe && !hasCheckoutSignal && foundPolicies === 0) {
408
+ return {
409
+ platform: { score: 0, maxScore: 25, status: 'Not detected', details: 'No e-commerce platform detected' },
410
+ payment: { score: 0, maxScore: 30, status: 'Not detected', details: 'No payment infrastructure detected' },
411
+ policies: { score: 0, maxScore: 25, status: 'Missing', details: 'No policy pages found' },
412
+ security: { score: securityScore, maxScore: 20, status: securityStatus, details: securityDetails },
413
+ total: securityScore,
414
+ maxTotal: 100,
415
+ };
416
+ }
417
+ // Platform: 0-25 points
418
+ let platformScore = 0;
419
+ let platformStatus = 'Not detected';
420
+ let platformDetails = 'Unknown platform — custom ACP integration required';
421
+ if (platform === 'shopify') {
422
+ platformScore = 25;
423
+ platformStatus = 'Auto-eligible';
424
+ platformDetails = 'Shopify — built-in ChatGPT Shopping integration';
425
+ }
426
+ else if (platform === 'etsy') {
427
+ platformScore = 25;
428
+ platformStatus = 'Integrated';
429
+ platformDetails = 'Etsy — built-in ChatGPT Shopping integration';
430
+ }
431
+ else if (platform) {
432
+ platformScore = 12;
433
+ platformStatus = 'Detected';
434
+ platformDetails = `${platform} — custom ACP integration needed`;
435
+ }
436
+ // Payment: 0-30 points
437
+ let paymentScore = 0;
438
+ let paymentStatus = 'Not detected';
439
+ let paymentDetails = 'No Stripe integration detected';
440
+ if (stripe) {
441
+ paymentScore = 30;
442
+ paymentStatus = 'Ready';
443
+ paymentDetails = 'Stripe detected — Shared Payment Token ready';
444
+ }
445
+ else if (platform === 'shopify' || platform === 'etsy') {
446
+ // Shopify/Etsy handle payment through their platform
447
+ paymentScore = 24;
448
+ paymentStatus = 'Platform-managed';
449
+ paymentDetails = 'Payment handled by platform';
450
+ }
451
+ // Policies: 0-25 points (hasTOS, hasPrivacy, hasReturn, foundPolicies already computed above)
452
+ let policyScore = 0;
453
+ let policyStatus = 'Missing';
454
+ let policyDetails = 'No policy pages found';
455
+ policyScore = foundPolicies * 8;
456
+ if (foundPolicies === 3) {
457
+ policyScore = 25; // Bonus point for having all three
458
+ policyStatus = 'Complete';
459
+ policyDetails = 'Terms, privacy, and return policies found';
460
+ }
461
+ else if (foundPolicies > 0) {
462
+ policyStatus = 'Partial';
463
+ const missing = [];
464
+ if (!hasTOS)
465
+ missing.push('terms');
466
+ if (!hasPrivacy)
467
+ missing.push('privacy');
468
+ if (!hasReturn)
469
+ missing.push('return');
470
+ policyDetails = `Missing: ${missing.join(', ')} policy`;
471
+ }
472
+ // Security: already computed above (securityScore, securityStatus, securityDetails)
473
+ const total = platformScore + paymentScore + policyScore + securityScore;
474
+ return {
475
+ platform: { score: platformScore, maxScore: 25, status: platformStatus, details: platformDetails },
476
+ payment: { score: paymentScore, maxScore: 30, status: paymentStatus, details: paymentDetails },
477
+ policies: { score: policyScore, maxScore: 25, status: policyStatus, details: policyDetails },
478
+ security: { score: securityScore, maxScore: 20, status: securityStatus, details: securityDetails },
479
+ total,
480
+ maxTotal: 100,
481
+ };
482
+ }
483
+ function calculateGrade(score) {
484
+ if (score >= 80)
485
+ return 'A';
486
+ if (score >= 60)
487
+ return 'B';
488
+ if (score >= 40)
489
+ return 'C';
490
+ if (score >= 20)
491
+ return 'D';
492
+ return 'F';
493
+ }
494
+ function getLabel(grade) {
495
+ switch (grade) {
496
+ case 'A': return 'ACP Ready';
497
+ case 'B': return 'Mostly Ready';
498
+ case 'C': return 'Partially Ready';
499
+ case 'D': return 'Significant Gaps';
500
+ case 'F': return 'Not Ready';
501
+ }
502
+ }
503
+ function generateRecommendations(findings, platform, stripe) {
504
+ // Short-circuit for non-commerce sites
505
+ const hasAnyCommerceSignal = findings.some(f => ['ACP_PLATFORM_SHOPIFY', 'ACP_PLATFORM_ETSY', 'ACP_PLATFORM_OTHER',
506
+ 'ACP_STRIPE_DETECTED', 'ACP_CHECKOUT_FORM_FOUND'].includes(f.code));
507
+ if (!hasAnyCommerceSignal) {
508
+ return [{
509
+ priority: 'low',
510
+ title: 'Not an e-commerce site',
511
+ description: 'No e-commerce platform, payment processor, or checkout functionality was detected.',
512
+ action: 'ACP readiness is designed for online stores. If this is a store, ensure your homepage includes platform-specific markup.',
513
+ }];
514
+ }
515
+ const recs = [];
516
+ // Platform-specific recommendations
517
+ if (platform === 'shopify') {
518
+ recs.push({
519
+ priority: 'high',
520
+ title: 'Enable ChatGPT Shopping in Shopify',
521
+ description: 'As a Shopify merchant, you have a built-in ChatGPT Shopping integration. Enable it through your Shopify admin panel.',
522
+ action: 'Go to Shopify Admin → Sales Channels to enable ChatGPT integration',
523
+ link: 'https://chatgpt.com/merchants/',
524
+ });
525
+ }
526
+ else if (platform !== 'etsy') {
527
+ recs.push({
528
+ priority: 'critical',
529
+ title: 'Build a ChatGPT Merchant App',
530
+ description: 'OpenAI now uses merchant apps in ChatGPT for commerce. Apply for the merchant program and build a dedicated shopping experience powered by ACP.',
531
+ action: 'Apply at chatgpt.com/merchants and build your ChatGPT merchant app with ACP checkout endpoints',
532
+ link: 'https://chatgpt.com/merchants/',
533
+ });
534
+ }
535
+ // Payment recommendations
536
+ if (!stripe && platform !== 'shopify' && platform !== 'etsy') {
537
+ recs.push({
538
+ priority: 'high',
539
+ title: 'Set up Stripe or PayPal for delegated payments',
540
+ description: 'ACP Delegated Payment is supported by Stripe (via Shared Payment Tokens) and PayPal. Merchants already on Stripe can enable agentic payments with minimal code.',
541
+ action: 'Set up Stripe Connect and enable operator payment delegation, or integrate PayPal\'s ACP support',
542
+ link: 'https://docs.stripe.com/agentic-commerce',
543
+ });
544
+ }
545
+ // Product feed recommendation (ACP uses merchant-submitted feeds, not crawled data)
546
+ recs.push({
547
+ priority: 'medium',
548
+ title: 'Prepare your product feed',
549
+ description: 'ChatGPT merchant apps use product feeds (CSV/JSON) — not crawled website data. Submit your feed through chatgpt.com/merchants.',
550
+ action: 'Prepare a product feed with titles, prices, images, and availability, then submit via the merchant portal',
551
+ link: 'https://developers.openai.com/commerce/guides/get-started/',
552
+ });
553
+ // Policy recommendations
554
+ const missingPolicies = findings.filter(f => f.category === 'policies' && f.severity === 'warn');
555
+ if (missingPolicies.length > 0) {
556
+ recs.push({
557
+ priority: 'medium',
558
+ title: 'Add missing policy pages',
559
+ description: 'ACP checkout responses must include links to terms of use, privacy policy, and return policy.',
560
+ action: `Create and link the missing policy page(s): ${missingPolicies.map(f => f.code.replace('ACP_', '').replace('_MISSING', '')).join(', ').toLowerCase()}`,
561
+ });
562
+ }
563
+ // HTTPS recommendation
564
+ if (findings.some(f => f.code === 'ACP_HTTPS_MISSING')) {
565
+ recs.push({
566
+ priority: 'critical',
567
+ title: 'Enable HTTPS',
568
+ description: 'ACP requires all endpoints to use HTTPS with TLS 1.2 or higher. Your site is not accessible via HTTPS.',
569
+ action: 'Install an SSL certificate and redirect all HTTP traffic to HTTPS',
570
+ });
571
+ }
572
+ return recs;
573
+ }
574
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/validator/acp/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"network-validator.d.ts","sourceRoot":"","sources":["../../src/validator/network-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAiC,MAAM,wBAAwB,CAAC;AAQ7F,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,UAAU,EACnB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,eAAe,EAAE,CAAC,CA8B5B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC;IAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,CAwCzF;AAmTD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
1
+ {"version":3,"file":"network-validator.d.ts","sourceRoot":"","sources":["../../src/validator/network-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAiC,MAAM,wBAAwB,CAAC;AAS7F,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,UAAU,EACnB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,eAAe,EAAE,CAAC,CA6B5B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC;IAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,CAwCzF;AA6TD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}