@astrasyncai/verification-gateway 5.8.0 → 5.10.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 +1 -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 +56 -7
  5. package/dist/adapters/express.js.map +1 -1
  6. package/dist/adapters/express.mjs +56 -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 +20 -2
  11. package/dist/adapters/mcp.js.map +1 -1
  12. package/dist/adapters/mcp.mjs +20 -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 +56 -7
  17. package/dist/adapters/nextjs.js.map +1 -1
  18. package/dist/adapters/nextjs.mjs +56 -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 +20 -2
  23. package/dist/adapters/sdk.js.map +1 -1
  24. package/dist/adapters/sdk.mjs +20 -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 +32 -6
  31. package/dist/bin/astrasync-codex-hook.js +32 -6
  32. package/dist/bin/astrasync-guard.js +32 -6
  33. package/dist/bin/astrasync.js +33 -6
  34. package/dist/browser/background.js +32 -6
  35. package/dist/browser/background.js.map +1 -1
  36. package/dist/browser/background.mjs +32 -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 +32 -6
  43. package/dist/codex/index.js.map +1 -1
  44. package/dist/codex/index.mjs +32 -6
  45. package/dist/codex/index.mjs.map +1 -1
  46. package/dist/cursor/extension.js +32 -6
  47. package/dist/cursor/extension.js.map +1 -1
  48. package/dist/cursor/extension.mjs +32 -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 +129 -17
  59. package/dist/edge-core/index.js.map +1 -1
  60. package/dist/edge-core/index.mjs +129 -17
  61. package/dist/edge-core/index.mjs.map +1 -1
  62. package/dist/gateway/gateway.js +32 -6
  63. package/dist/gateway/gateway.js.map +1 -1
  64. package/dist/gateway/gateway.mjs +32 -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 +73 -6
  69. package/dist/index.d.ts +73 -6
  70. package/dist/index.js +66 -7
  71. package/dist/index.js.map +1 -1
  72. package/dist/index.mjs +64 -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 +20 -2
  103. package/dist/verify.js.map +1 -1
  104. package/dist/verify.mjs +20 -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.8.0";
22
+ var SDK_VERSION = "5.10.0";
23
23
 
24
24
  // src/http.ts
25
25
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -430,6 +430,24 @@ async function callVerifyAccessAPI(config, request) {
430
430
  }
431
431
  };
432
432
  }
433
+ if (response.status === 400 && data?.error === "INVALID_AGENT_ID") {
434
+ const message = typeof data?.message === "string" ? data.message : "Agent identifier must be a canonical ASTRA-* id.";
435
+ return {
436
+ success: true,
437
+ attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
438
+ access: {
439
+ allowed: false,
440
+ reason: "invalid_agent_id",
441
+ failures: [
442
+ {
443
+ dimension: "identity.invalid_agent_id",
444
+ message,
445
+ guidance: typeof data?.guidance === "string" ? data.guidance : "Present your canonical ASTRA-* id (discover it via GET /api/agents/request-registration/{requestId} after owner approval)."
446
+ }
447
+ ]
448
+ }
449
+ };
450
+ }
433
451
  if (!response.ok) {
434
452
  if (response.status === 401) {
435
453
  return {
@@ -569,7 +587,7 @@ async function verify(config, request, options) {
569
587
  name: apiResponse.agent.name,
570
588
  trustScore: apiResponse.agent.trustScore,
571
589
  trustLevel: getTrustLevel(apiResponse.agent.trustScore),
572
- blockchainVerified: apiResponse.agent.blockchainStatus === "verified",
590
+ blockchainAnchored: apiResponse.agent.blockchainStatus === "anchored",
573
591
  status: apiResponse.agent.agentStatus
574
592
  } : void 0;
575
593
  const developer = apiResponse.developer ? {
@@ -1153,6 +1171,12 @@ var KEY_FORMAT_PREFIXES = [
1153
1171
  var MAX_HEADERS = 64;
1154
1172
  var MAX_HEADER_VALUE_BYTES = 1024;
1155
1173
  var MAX_TOTAL_BYTES = 16 * 1024;
1174
+ var DECLARED_SOURCE_MAX = 64;
1175
+ var DECLARED_SOURCE_PATTERN = /^[a-z0-9][a-z0-9 ._/-]{0,63}$/;
1176
+ function normalizeDeclaredSource(value) {
1177
+ const trimmed = value?.trim().slice(0, DECLARED_SOURCE_MAX).toLowerCase();
1178
+ return trimmed && DECLARED_SOURCE_PATTERN.test(trimmed) ? trimmed : void 0;
1179
+ }
1156
1180
  function byteLength(s) {
1157
1181
  let bytes = 0;
1158
1182
  for (let i = 0; i < s.length; i++) {
@@ -1332,11 +1356,16 @@ var DEFAULT_EDGE_CONFIG = Object.freeze({
1332
1356
  mode: "observe",
1333
1357
  depth: "classify",
1334
1358
  pathRules: [],
1335
- sampling: Object.freeze({ anonymousBeaconRate: 0.1 }),
1359
+ sampling: Object.freeze({ anonymousBeaconRate: 1 }),
1336
1360
  failurePosture: "open"
1337
1361
  });
1338
1362
  var EDGE_MODES = ["observe", "enforce"];
1339
1363
  var EDGE_DEPTHS = ["classify", "authenticate", "authorize"];
1364
+ function isSamplingShape(value) {
1365
+ if (typeof value !== "object" || value === null) return false;
1366
+ const rate = value.anonymousBeaconRate;
1367
+ return typeof rate === "number" && rate >= 0 && rate <= 1;
1368
+ }
1340
1369
  function isEdgeConfig(value) {
1341
1370
  if (typeof value !== "object" || value === null) return false;
1342
1371
  const v = value;
@@ -1350,10 +1379,13 @@ function isEdgeConfig(value) {
1350
1379
  if (typeof r.pattern !== "string" || r.pattern.length === 0) return false;
1351
1380
  if (r.mode !== void 0 && !EDGE_MODES.includes(r.mode)) return false;
1352
1381
  if (r.depth !== void 0 && !EDGE_DEPTHS.includes(r.depth)) return false;
1382
+ if (r.sampling !== void 0 && !isSamplingShape(r.sampling)) return false;
1353
1383
  }
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;
1384
+ if (!isSamplingShape(v.sampling)) return false;
1385
+ if (v.queryValueAllowlist !== void 0) {
1386
+ if (!Array.isArray(v.queryValueAllowlist) || v.queryValueAllowlist.length > 16 || !v.queryValueAllowlist.every((e) => typeof e === "string" && e.length > 0 && e.length <= 64)) {
1387
+ return false;
1388
+ }
1357
1389
  }
1358
1390
  return v.failurePosture === "open";
1359
1391
  }
@@ -1469,7 +1501,20 @@ var PLATFORM_AGENT_SIGNATURES = [
1469
1501
  {
1470
1502
  vendor: "gemini",
1471
1503
  displayName: "Google Gemini",
1472
- uaPatterns: [/gemini/i, /google-gemini/i, /bard/i],
1504
+ uaPatterns: [
1505
+ /gemini/i,
1506
+ /google-gemini/i,
1507
+ /bard/i,
1508
+ // Google's AI/agent fetcher tokens (VI uplift 1.3). These are the
1509
+ // AI-training/agent crawlers, NOT the Search crawler — googlebot IP
1510
+ // ranges attribute Search and are deliberately absent from
1511
+ // vendor-ip-ranges. Anchored tokens: none appears in stock browser
1512
+ // UAs, and `-` counts as a \b boundary so GoogleOther-Image/-Video
1513
+ // match too.
1514
+ /\bGoogle-Extended\b/i,
1515
+ /\bGoogleOther\b/i,
1516
+ /\bGoogle-CloudVertexBot\b/i
1517
+ ],
1473
1518
  agentCardPatterns: [/gemini\.google\.com/i, /ai\.google\.dev/i],
1474
1519
  apiKeyFormatPatterns: [/^aiza/i],
1475
1520
  headerPatterns: [/^x-goog-user-project/i, /^x-goog-api-client/i]
@@ -1515,6 +1560,16 @@ var PLATFORM_AGENT_SIGNATURES = [
1515
1560
  uaPatterns: [/\bcomet\/\d/i],
1516
1561
  headerPatterns: [/^sec-ch-ua: .*comet/i]
1517
1562
  },
1563
+ // The MCP bridge's own catalog fetches (VI uplift 1.5). Deliberately a
1564
+ // DISTINCT UA from `astrasync-sdk/`: bridge fetches are buyer-agent
1565
+ // traffic merchants should see (identified · unregistered), so this
1566
+ // vendor is kept OUT of the self-traffic filter and the edge's SELF
1567
+ // short-circuit.
1568
+ {
1569
+ vendor: "astrasync-bridge",
1570
+ displayName: "AstraSync MCP bridge (buyer-agent catalog fetch)",
1571
+ uaPatterns: [/^astrasync-bridge\//i]
1572
+ },
1518
1573
  // Our own SDK self-identifies (sdkFetch stamps this UA) — first-party
1519
1574
  // traffic must never pollute the unknown/anonymous pool it exists to audit.
1520
1575
  {
@@ -6534,6 +6589,7 @@ export {
6534
6589
  AuthenticationError,
6535
6590
  CAPTURE_SCHEMA_VERSION,
6536
6591
  ChallengeHandler,
6592
+ DECLARED_SOURCE_MAX,
6537
6593
  DEFAULT_EDGE_CONFIG,
6538
6594
  KYDRequiredError,
6539
6595
  MAX_HEADERS,
@@ -6578,6 +6634,7 @@ export {
6578
6634
  matchEdgePathRule,
6579
6635
  matchPlatformSignature,
6580
6636
  nextjs_exports as nextjs,
6637
+ normalizeDeclaredSource,
6581
6638
  parseVerifiedHop,
6582
6639
  pollStepUpStatus,
6583
6640
  prefetchWellKnown,