@astrasyncai/verification-gateway 5.7.0 → 5.9.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 (106) hide show
  1. package/README.md +37 -1
  2. package/dist/adapters/express.d.mts +1 -1
  3. package/dist/adapters/express.d.ts +1 -1
  4. package/dist/adapters/express.js +41 -7
  5. package/dist/adapters/express.js.map +1 -1
  6. package/dist/adapters/express.mjs +41 -7
  7. package/dist/adapters/express.mjs.map +1 -1
  8. package/dist/adapters/mcp.d.mts +1 -1
  9. package/dist/adapters/mcp.d.ts +1 -1
  10. package/dist/adapters/mcp.js +2 -2
  11. package/dist/adapters/mcp.js.map +1 -1
  12. package/dist/adapters/mcp.mjs +2 -2
  13. package/dist/adapters/mcp.mjs.map +1 -1
  14. package/dist/adapters/nextjs.d.mts +1 -1
  15. package/dist/adapters/nextjs.d.ts +1 -1
  16. package/dist/adapters/nextjs.js +41 -7
  17. package/dist/adapters/nextjs.js.map +1 -1
  18. package/dist/adapters/nextjs.mjs +41 -7
  19. package/dist/adapters/nextjs.mjs.map +1 -1
  20. package/dist/adapters/sdk.d.mts +1 -1
  21. package/dist/adapters/sdk.d.ts +1 -1
  22. package/dist/adapters/sdk.js +2 -2
  23. package/dist/adapters/sdk.js.map +1 -1
  24. package/dist/adapters/sdk.mjs +2 -2
  25. package/dist/adapters/sdk.mjs.map +1 -1
  26. package/dist/agent/index.js +1 -1
  27. package/dist/agent/index.js.map +1 -1
  28. package/dist/agent/index.mjs +1 -1
  29. package/dist/agent/index.mjs.map +1 -1
  30. package/dist/bin/astrasync-claude-hook.js +14 -6
  31. package/dist/bin/astrasync-codex-hook.js +14 -6
  32. package/dist/bin/astrasync-guard.js +14 -6
  33. package/dist/bin/astrasync.js +15 -6
  34. package/dist/browser/background.js +14 -6
  35. package/dist/browser/background.js.map +1 -1
  36. package/dist/browser/background.mjs +14 -6
  37. package/dist/browser/background.mjs.map +1 -1
  38. package/dist/cli/index.js +12 -4
  39. package/dist/cli/index.js.map +1 -1
  40. package/dist/cli/index.mjs +12 -4
  41. package/dist/cli/index.mjs.map +1 -1
  42. package/dist/codex/index.js +14 -6
  43. package/dist/codex/index.js.map +1 -1
  44. package/dist/codex/index.mjs +14 -6
  45. package/dist/codex/index.mjs.map +1 -1
  46. package/dist/cursor/extension.js +14 -6
  47. package/dist/cursor/extension.js.map +1 -1
  48. package/dist/cursor/extension.mjs +14 -6
  49. package/dist/cursor/extension.mjs.map +1 -1
  50. package/dist/edge-config.d.mts +24 -1
  51. package/dist/edge-config.d.ts +24 -1
  52. package/dist/edge-config.js +13 -5
  53. package/dist/edge-config.js.map +1 -1
  54. package/dist/edge-config.mjs +13 -5
  55. package/dist/edge-config.mjs.map +1 -1
  56. package/dist/edge-core/index.d.mts +14 -6
  57. package/dist/edge-core/index.d.ts +14 -6
  58. package/dist/edge-core/index.js +110 -16
  59. package/dist/edge-core/index.js.map +1 -1
  60. package/dist/edge-core/index.mjs +110 -16
  61. package/dist/edge-core/index.mjs.map +1 -1
  62. package/dist/gateway/gateway.js +14 -6
  63. package/dist/gateway/gateway.js.map +1 -1
  64. package/dist/gateway/gateway.mjs +14 -6
  65. package/dist/gateway/gateway.mjs.map +1 -1
  66. package/dist/git-trigger/git-hooks.d.mts +1 -1
  67. package/dist/git-trigger/git-hooks.d.ts +1 -1
  68. package/dist/index.d.mts +80 -6
  69. package/dist/index.d.ts +80 -6
  70. package/dist/index.js +54 -7
  71. package/dist/index.js.map +1 -1
  72. package/dist/index.mjs +52 -7
  73. package/dist/index.mjs.map +1 -1
  74. package/dist/metadata-capture.d.mts +18 -1
  75. package/dist/metadata-capture.d.ts +18 -1
  76. package/dist/metadata-capture.js +10 -0
  77. package/dist/metadata-capture.js.map +1 -1
  78. package/dist/metadata-capture.mjs +8 -0
  79. package/dist/metadata-capture.mjs.map +1 -1
  80. package/dist/platform-signatures.d.mts +1 -1
  81. package/dist/platform-signatures.d.ts +1 -1
  82. package/dist/platform-signatures.js +24 -1
  83. package/dist/platform-signatures.js.map +1 -1
  84. package/dist/platform-signatures.mjs +24 -1
  85. package/dist/platform-signatures.mjs.map +1 -1
  86. package/dist/registration/index.js +1 -1
  87. package/dist/registration/index.js.map +1 -1
  88. package/dist/registration/index.mjs +1 -1
  89. package/dist/registration/index.mjs.map +1 -1
  90. package/dist/transport/index.js +1 -1
  91. package/dist/transport/index.js.map +1 -1
  92. package/dist/transport/index.mjs +1 -1
  93. package/dist/transport/index.mjs.map +1 -1
  94. package/dist/{types-BK_pRNSs.d.mts → types-CTmUpNpS.d.mts} +25 -2
  95. package/dist/{types-BK_pRNSs.d.ts → types-CTmUpNpS.d.ts} +25 -2
  96. package/dist/{types-CwY5IY-0.d.ts → types-CtFXmDzm.d.ts} +17 -2
  97. package/dist/{types-BCmHFdkJ.d.mts → types-DQrn_kei.d.mts} +17 -2
  98. package/dist/ui/index.d.mts +1 -1
  99. package/dist/ui/index.d.ts +1 -1
  100. package/dist/verify.d.mts +13 -1
  101. package/dist/verify.d.ts +13 -1
  102. package/dist/verify.js +2 -2
  103. package/dist/verify.js.map +1 -1
  104. package/dist/verify.mjs +2 -2
  105. package/dist/verify.mjs.map +1 -1
  106. package/package.json +3 -3
package/dist/index.mjs CHANGED
@@ -19,7 +19,7 @@ function getTrustLevel(score) {
19
19
  }
20
20
 
21
21
  // src/version.ts
22
- var SDK_VERSION = "5.7.0";
22
+ var SDK_VERSION = "5.9.0";
23
23
 
24
24
  // src/http.ts
25
25
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -569,7 +569,7 @@ async function verify(config, request, options) {
569
569
  name: apiResponse.agent.name,
570
570
  trustScore: apiResponse.agent.trustScore,
571
571
  trustLevel: getTrustLevel(apiResponse.agent.trustScore),
572
- blockchainVerified: apiResponse.agent.blockchainStatus === "verified",
572
+ blockchainAnchored: apiResponse.agent.blockchainStatus === "anchored",
573
573
  status: apiResponse.agent.agentStatus
574
574
  } : void 0;
575
575
  const developer = apiResponse.developer ? {
@@ -1153,6 +1153,12 @@ var KEY_FORMAT_PREFIXES = [
1153
1153
  var MAX_HEADERS = 64;
1154
1154
  var MAX_HEADER_VALUE_BYTES = 1024;
1155
1155
  var MAX_TOTAL_BYTES = 16 * 1024;
1156
+ var DECLARED_SOURCE_MAX = 64;
1157
+ var DECLARED_SOURCE_PATTERN = /^[a-z0-9][a-z0-9 ._/-]{0,63}$/;
1158
+ function normalizeDeclaredSource(value) {
1159
+ const trimmed = value?.trim().slice(0, DECLARED_SOURCE_MAX).toLowerCase();
1160
+ return trimmed && DECLARED_SOURCE_PATTERN.test(trimmed) ? trimmed : void 0;
1161
+ }
1156
1162
  function byteLength(s) {
1157
1163
  let bytes = 0;
1158
1164
  for (let i = 0; i < s.length; i++) {
@@ -1332,11 +1338,16 @@ var DEFAULT_EDGE_CONFIG = Object.freeze({
1332
1338
  mode: "observe",
1333
1339
  depth: "classify",
1334
1340
  pathRules: [],
1335
- sampling: Object.freeze({ anonymousBeaconRate: 0.1 }),
1341
+ sampling: Object.freeze({ anonymousBeaconRate: 1 }),
1336
1342
  failurePosture: "open"
1337
1343
  });
1338
1344
  var EDGE_MODES = ["observe", "enforce"];
1339
1345
  var EDGE_DEPTHS = ["classify", "authenticate", "authorize"];
1346
+ function isSamplingShape(value) {
1347
+ if (typeof value !== "object" || value === null) return false;
1348
+ const rate = value.anonymousBeaconRate;
1349
+ return typeof rate === "number" && rate >= 0 && rate <= 1;
1350
+ }
1340
1351
  function isEdgeConfig(value) {
1341
1352
  if (typeof value !== "object" || value === null) return false;
1342
1353
  const v = value;
@@ -1350,10 +1361,13 @@ function isEdgeConfig(value) {
1350
1361
  if (typeof r.pattern !== "string" || r.pattern.length === 0) return false;
1351
1362
  if (r.mode !== void 0 && !EDGE_MODES.includes(r.mode)) return false;
1352
1363
  if (r.depth !== void 0 && !EDGE_DEPTHS.includes(r.depth)) return false;
1364
+ if (r.sampling !== void 0 && !isSamplingShape(r.sampling)) return false;
1353
1365
  }
1354
- const sampling = v.sampling;
1355
- if (typeof sampling !== "object" || sampling === null || typeof sampling.anonymousBeaconRate !== "number" || sampling.anonymousBeaconRate < 0 || sampling.anonymousBeaconRate > 1) {
1356
- return false;
1366
+ if (!isSamplingShape(v.sampling)) return false;
1367
+ if (v.queryValueAllowlist !== void 0) {
1368
+ if (!Array.isArray(v.queryValueAllowlist) || v.queryValueAllowlist.length > 16 || !v.queryValueAllowlist.every((e) => typeof e === "string" && e.length > 0 && e.length <= 64)) {
1369
+ return false;
1370
+ }
1357
1371
  }
1358
1372
  return v.failurePosture === "open";
1359
1373
  }
@@ -1469,7 +1483,20 @@ var PLATFORM_AGENT_SIGNATURES = [
1469
1483
  {
1470
1484
  vendor: "gemini",
1471
1485
  displayName: "Google Gemini",
1472
- uaPatterns: [/gemini/i, /google-gemini/i, /bard/i],
1486
+ uaPatterns: [
1487
+ /gemini/i,
1488
+ /google-gemini/i,
1489
+ /bard/i,
1490
+ // Google's AI/agent fetcher tokens (VI uplift 1.3). These are the
1491
+ // AI-training/agent crawlers, NOT the Search crawler — googlebot IP
1492
+ // ranges attribute Search and are deliberately absent from
1493
+ // vendor-ip-ranges. Anchored tokens: none appears in stock browser
1494
+ // UAs, and `-` counts as a \b boundary so GoogleOther-Image/-Video
1495
+ // match too.
1496
+ /\bGoogle-Extended\b/i,
1497
+ /\bGoogleOther\b/i,
1498
+ /\bGoogle-CloudVertexBot\b/i
1499
+ ],
1473
1500
  agentCardPatterns: [/gemini\.google\.com/i, /ai\.google\.dev/i],
1474
1501
  apiKeyFormatPatterns: [/^aiza/i],
1475
1502
  headerPatterns: [/^x-goog-user-project/i, /^x-goog-api-client/i]
@@ -1515,6 +1542,16 @@ var PLATFORM_AGENT_SIGNATURES = [
1515
1542
  uaPatterns: [/\bcomet\/\d/i],
1516
1543
  headerPatterns: [/^sec-ch-ua: .*comet/i]
1517
1544
  },
1545
+ // The MCP bridge's own catalog fetches (VI uplift 1.5). Deliberately a
1546
+ // DISTINCT UA from `astrasync-sdk/`: bridge fetches are buyer-agent
1547
+ // traffic merchants should see (identified · unregistered), so this
1548
+ // vendor is kept OUT of the self-traffic filter and the edge's SELF
1549
+ // short-circuit.
1550
+ {
1551
+ vendor: "astrasync-bridge",
1552
+ displayName: "AstraSync MCP bridge (buyer-agent catalog fetch)",
1553
+ uaPatterns: [/^astrasync-bridge\//i]
1554
+ },
1518
1555
  // Our own SDK self-identifies (sdkFetch stamps this UA) — first-party
1519
1556
  // traffic must never pollute the unknown/anonymous pool it exists to audit.
1520
1557
  {
@@ -1959,6 +1996,8 @@ function createMiddleware(options) {
1959
1996
  }
1960
1997
  }
1961
1998
  }
1999
+ const attemptHeader = req.headers["x-astra-attempt-id"];
2000
+ const inboundAttemptId = typeof attemptHeader === "string" && /^att_[0-9a-f]{32}$/.test(attemptHeader) ? attemptHeader : void 0;
1962
2001
  const verificationRequest = {
1963
2002
  credentials,
1964
2003
  purpose,
@@ -1971,6 +2010,7 @@ function createMiddleware(options) {
1971
2010
  durationRequired: astraCreds?.pdlss?.duration?.maxSessionDuration,
1972
2011
  ...txValue !== void 0 && { transactionValue: txValue },
1973
2012
  ...txCurrency && { currency: txCurrency },
2013
+ ...inboundAttemptId && { attemptId: inboundAttemptId },
1974
2014
  callerMetadata: {
1975
2015
  sourceIp: originalClientIp,
1976
2016
  userAgent: req.headers["user-agent"],
@@ -2475,6 +2515,8 @@ function createMiddleware2(options) {
2475
2515
  }
2476
2516
  const forwardedFor = request.headers.get("x-forwarded-for") || void 0;
2477
2517
  const originalClientIp = forwardedFor?.split(",")[0]?.trim();
2518
+ const attemptHeader = request.headers.get("x-astra-attempt-id");
2519
+ const inboundAttemptId = attemptHeader && /^att_[0-9a-f]{32}$/.test(attemptHeader) ? attemptHeader : void 0;
2478
2520
  const verificationRequest = {
2479
2521
  credentials,
2480
2522
  purpose,
@@ -2484,6 +2526,7 @@ function createMiddleware2(options) {
2484
2526
  counterpartyType: config.counterpartyType || "website",
2485
2527
  enableRuntimeChallenge,
2486
2528
  durationRequired: astraCreds?.pdlss?.duration?.maxSessionDuration,
2529
+ ...inboundAttemptId && { attemptId: inboundAttemptId },
2487
2530
  callerMetadata: {
2488
2531
  sourceIp: originalClientIp,
2489
2532
  userAgent: request.headers.get("user-agent") || void 0,
@@ -6528,6 +6571,7 @@ export {
6528
6571
  AuthenticationError,
6529
6572
  CAPTURE_SCHEMA_VERSION,
6530
6573
  ChallengeHandler,
6574
+ DECLARED_SOURCE_MAX,
6531
6575
  DEFAULT_EDGE_CONFIG,
6532
6576
  KYDRequiredError,
6533
6577
  MAX_HEADERS,
@@ -6572,6 +6616,7 @@ export {
6572
6616
  matchEdgePathRule,
6573
6617
  matchPlatformSignature,
6574
6618
  nextjs_exports as nextjs,
6619
+ normalizeDeclaredSource,
6575
6620
  parseVerifiedHop,
6576
6621
  pollStepUpStatus,
6577
6622
  prefetchWellKnown,