@astrasyncai/verification-gateway 3.8.0 → 3.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 (108) hide show
  1. package/dist/adapter-interface/interface.d.mts +2 -2
  2. package/dist/adapter-interface/interface.d.ts +2 -2
  3. package/dist/adapters/express.d.mts +2 -2
  4. package/dist/adapters/express.d.ts +2 -2
  5. package/dist/adapters/express.js +2 -1
  6. package/dist/adapters/express.js.map +1 -1
  7. package/dist/adapters/express.mjs +2 -1
  8. package/dist/adapters/express.mjs.map +1 -1
  9. package/dist/adapters/http-pdlss.d.mts +81 -0
  10. package/dist/adapters/http-pdlss.d.ts +81 -0
  11. package/dist/adapters/http-pdlss.js +117 -0
  12. package/dist/adapters/http-pdlss.js.map +1 -0
  13. package/dist/adapters/http-pdlss.mjs +87 -0
  14. package/dist/adapters/http-pdlss.mjs.map +1 -0
  15. package/dist/adapters/mcp.d.mts +1 -1
  16. package/dist/adapters/mcp.d.ts +1 -1
  17. package/dist/adapters/mcp.js +2 -1
  18. package/dist/adapters/mcp.js.map +1 -1
  19. package/dist/adapters/mcp.mjs +2 -1
  20. package/dist/adapters/mcp.mjs.map +1 -1
  21. package/dist/adapters/nextjs.d.mts +2 -2
  22. package/dist/adapters/nextjs.d.ts +2 -2
  23. package/dist/adapters/nextjs.js +2 -1
  24. package/dist/adapters/nextjs.js.map +1 -1
  25. package/dist/adapters/nextjs.mjs +2 -1
  26. package/dist/adapters/nextjs.mjs.map +1 -1
  27. package/dist/adapters/sdk.d.mts +2 -2
  28. package/dist/adapters/sdk.d.ts +2 -2
  29. package/dist/adapters/sdk.js +2 -1
  30. package/dist/adapters/sdk.js.map +1 -1
  31. package/dist/adapters/sdk.mjs +2 -1
  32. package/dist/adapters/sdk.mjs.map +1 -1
  33. package/dist/agent/index.d.mts +2 -2
  34. package/dist/agent/index.d.ts +2 -2
  35. package/dist/bin/astrasync-claude-hook.js +14 -1
  36. package/dist/bin/astrasync-guard.js +14 -1
  37. package/dist/bin/astrasync.js +31 -1
  38. package/dist/browser/background.js +14 -1
  39. package/dist/browser/background.js.map +1 -1
  40. package/dist/browser/background.mjs +14 -1
  41. package/dist/browser/background.mjs.map +1 -1
  42. package/dist/browser/browser-adapter.d.mts +2 -2
  43. package/dist/browser/browser-adapter.d.ts +2 -2
  44. package/dist/claude-code/claude-code-adapter.d.mts +2 -2
  45. package/dist/claude-code/claude-code-adapter.d.ts +2 -2
  46. package/dist/cli/index.d.mts +2 -2
  47. package/dist/cli/index.d.ts +2 -2
  48. package/dist/cursor/cursor-adapter.d.mts +2 -2
  49. package/dist/cursor/cursor-adapter.d.ts +2 -2
  50. package/dist/cursor/extension.d.mts +2 -2
  51. package/dist/cursor/extension.d.ts +2 -2
  52. package/dist/cursor/extension.js +14 -1
  53. package/dist/cursor/extension.js.map +1 -1
  54. package/dist/cursor/extension.mjs +14 -1
  55. package/dist/cursor/extension.mjs.map +1 -1
  56. package/dist/edge-config.d.mts +130 -0
  57. package/dist/edge-config.d.ts +130 -0
  58. package/dist/edge-config.js +162 -0
  59. package/dist/edge-config.js.map +1 -0
  60. package/dist/edge-config.mjs +131 -0
  61. package/dist/edge-config.mjs.map +1 -0
  62. package/dist/{express-Di_hnZZS.d.mts → express-DXUyvv7t.d.mts} +1 -1
  63. package/dist/{express-C8nJGi5P.d.ts → express-sGXhDdd0.d.ts} +1 -1
  64. package/dist/gateway/gateway.d.mts +2 -2
  65. package/dist/gateway/gateway.d.ts +2 -2
  66. package/dist/gateway/gateway.js +14 -1
  67. package/dist/gateway/gateway.js.map +1 -1
  68. package/dist/gateway/gateway.mjs +14 -1
  69. package/dist/gateway/gateway.mjs.map +1 -1
  70. package/dist/git-trigger/git-hooks.d.mts +2 -2
  71. package/dist/git-trigger/git-hooks.d.ts +2 -2
  72. package/dist/{index-CuCkjT7B.d.ts → index-C61VL_OW.d.ts} +1 -1
  73. package/dist/{index-CBQr4FGs.d.ts → index-CMg-vjEK.d.ts} +1 -1
  74. package/dist/{index-CXcvO9Au.d.mts → index-Dalih3EB.d.mts} +1 -1
  75. package/dist/{index-DALAqct7.d.mts → index-DmmdehNu.d.mts} +1 -1
  76. package/dist/index.d.mts +26 -82
  77. package/dist/index.d.ts +26 -82
  78. package/dist/index.js +226 -10
  79. package/dist/index.js.map +1 -1
  80. package/dist/index.mjs +215 -10
  81. package/dist/index.mjs.map +1 -1
  82. package/dist/local-evaluator/evaluator.d.mts +2 -2
  83. package/dist/local-evaluator/evaluator.d.ts +2 -2
  84. package/dist/{nextjs-IyXWW2KL.d.ts → nextjs-DwUW-Nm1.d.ts} +1 -1
  85. package/dist/{nextjs-BMAe8ode.d.mts → nextjs-F_2pbPIA.d.mts} +1 -1
  86. package/dist/platform-signatures.d.mts +47 -0
  87. package/dist/platform-signatures.d.ts +47 -0
  88. package/dist/platform-signatures.js +89 -0
  89. package/dist/platform-signatures.js.map +1 -0
  90. package/dist/platform-signatures.mjs +63 -0
  91. package/dist/platform-signatures.mjs.map +1 -0
  92. package/dist/{sdk-ThdA_NtL.d.ts → sdk-CfHANs4A.d.ts} +1 -1
  93. package/dist/{sdk-Cn4KcZ5G.d.mts → sdk-Clob2-0A.d.mts} +1 -1
  94. package/dist/transport/index.d.mts +2 -2
  95. package/dist/transport/index.d.ts +2 -2
  96. package/dist/{types-DedAJbNI.d.mts → types-ACMsV07B.d.mts} +76 -1
  97. package/dist/{types-DedAJbNI.d.ts → types-ACMsV07B.d.ts} +76 -1
  98. package/dist/{types-CSFci5zD.d.mts → types-BtqUvK8v.d.mts} +1 -1
  99. package/dist/{types-D1kyMiml.d.ts → types-DmSDgPpG.d.ts} +1 -1
  100. package/dist/ui/index.d.mts +1 -1
  101. package/dist/ui/index.d.ts +1 -1
  102. package/dist/verify.d.mts +144 -0
  103. package/dist/verify.d.ts +144 -0
  104. package/dist/verify.js +593 -0
  105. package/dist/verify.js.map +1 -0
  106. package/dist/verify.mjs +557 -0
  107. package/dist/verify.mjs.map +1 -0
  108. package/package.json +21 -1
package/dist/index.js CHANGED
@@ -37,35 +37,46 @@ __export(src_exports, {
37
37
  AstraSyncError: () => AstraSyncError,
38
38
  AuthenticationError: () => AuthenticationError,
39
39
  ChallengeHandler: () => ChallengeHandler,
40
+ DEFAULT_EDGE_CONFIG: () => DEFAULT_EDGE_CONFIG,
40
41
  DEFAULT_TRUST_THRESHOLDS: () => DEFAULT_TRUST_THRESHOLDS,
41
42
  KYDRequiredError: () => KYDRequiredError,
43
+ PLATFORM_AGENT_SIGNATURES: () => PLATFORM_AGENT_SIGNATURES,
42
44
  RegistrationDeniedError: () => RegistrationDeniedError,
43
45
  RegistrationExpiredError: () => RegistrationExpiredError,
44
46
  RegistrationTimeoutError: () => RegistrationTimeoutError,
45
47
  TRUST_LEVEL_RANGES: () => TRUST_LEVEL_RANGES,
46
- VERSION: () => VERSION,
48
+ VERSION: () => SDK_VERSION,
49
+ _resetEdgeConfigCache: () => _resetEdgeConfigCache,
47
50
  agent: () => agent_exports,
48
51
  authorizeSettlement: () => authorizeSettlement,
49
52
  awaitStepUpApproval: () => awaitStepUpApproval,
50
53
  buildGuidance: () => buildGuidance,
51
54
  clearCache: () => clearCache,
52
55
  createMcpMiddleware: () => createMcpMiddleware,
56
+ degradeToObserve: () => degradeToObserve,
57
+ detectPlatformFingerprint: () => detectPlatformFingerprint,
53
58
  determineAccessLevel: () => determineAccessLevel,
54
59
  express: () => express_exports,
55
60
  extractCredentials: () => extractCredentials,
56
61
  extractMcpCredentials: () => extractMcpCredentials,
62
+ fetchEdgeConfig: () => fetchEdgeConfig,
63
+ fetchRoutes: () => fetchRoutes,
57
64
  getAccessLevelForScore: () => getAccessLevelForScore,
58
65
  getCachedWellKnownUrls: () => getCachedWellKnownUrls,
59
66
  getCapabilities: () => getCapabilities,
67
+ getEdgeConfig: () => getEdgeConfig,
60
68
  getTrustLevel: () => getTrustLevel,
61
69
  getWellKnownUrls: () => getWellKnownUrls,
62
70
  hasCredentials: () => hasCredentials,
63
71
  hasMinimumAccess: () => hasMinimumAccess,
72
+ isEdgeConfig: () => isEdgeConfig,
73
+ matchEdgePathRule: () => matchEdgePathRule,
64
74
  nextjs: () => nextjs_exports,
65
75
  pollStepUpStatus: () => pollStepUpStatus,
66
76
  prefetchWellKnown: () => prefetchWellKnown,
67
77
  quickVerify: () => quickVerify,
68
78
  recordDecision: () => recordDecision2,
79
+ reportUnregisteredAttempt: () => reportUnregisteredAttempt,
69
80
  sdk: () => sdk_exports,
70
81
  setMcpMeta: () => setMcpMeta,
71
82
  transport: () => transport_exports,
@@ -195,7 +206,7 @@ function getCapabilities(accessLevel) {
195
206
  }
196
207
 
197
208
  // src/version.ts
198
- var SDK_VERSION = "3.7.1";
209
+ var SDK_VERSION = "3.9.0";
199
210
 
200
211
  // src/well-known.ts
201
212
  var CACHE_TTL_MS = 60 * 60 * 1e3;
@@ -482,6 +493,7 @@ async function callVerifyAccessAPI(config, request) {
482
493
  if (requestData.runtimeChallengeOptions)
483
494
  body.runtimeChallengeOptions = requestData.runtimeChallengeOptions;
484
495
  if (requestData.invocationProtocol) body.invocationProtocol = requestData.invocationProtocol;
496
+ if (requestData.commerceArtifacts) body.commerceArtifacts = requestData.commerceArtifacts;
485
497
  body.sdkVersion = SDK_VERSION;
486
498
  if (requestData.callerMetadata || requestData.clientIp || requestData.userAgent) {
487
499
  const meta = {
@@ -730,6 +742,21 @@ async function fetchRoutes(config, counterpartyId) {
730
742
  return null;
731
743
  }
732
744
  }
745
+ async function reportUnregisteredAttempt(config, data) {
746
+ const apiBaseUrl = config.apiBaseUrl || DEFAULT_CONFIG.apiBaseUrl;
747
+ const { counterpartyUrl, ...rest } = data;
748
+ const body = {
749
+ ...rest,
750
+ ...counterpartyUrl && { counterpartyUrl },
751
+ ...config.counterpartyId && { counterpartyId: config.counterpartyId }
752
+ };
753
+ await fetch(`${apiBaseUrl}/verification-activity/unregistered-attempt`, {
754
+ method: "POST",
755
+ headers: { "Content-Type": "application/json" },
756
+ body: JSON.stringify(body)
757
+ }).catch(() => {
758
+ });
759
+ }
733
760
  async function reportCounterpartyPreCheckFailure(config, data) {
734
761
  const apiBaseUrl = config.apiBaseUrl || DEFAULT_CONFIG.apiBaseUrl;
735
762
  await fetch(`${apiBaseUrl}/verification-activity/counterparty-pre-check-failure`, {
@@ -4495,7 +4522,7 @@ async function exportJwkFromKeyLike(keyLike) {
4495
4522
 
4496
4523
  // src/transport/registry/mastercard.ts
4497
4524
  function createMastercardRegistry(options = {}) {
4498
- const cache2 = /* @__PURE__ */ new Map();
4525
+ const cache3 = /* @__PURE__ */ new Map();
4499
4526
  const ttlSec = options.cacheTtlSec ?? 3600;
4500
4527
  const fetchFn = options.fetch ?? globalThis.fetch;
4501
4528
  let warned = false;
@@ -4512,7 +4539,7 @@ function createMastercardRegistry(options = {}) {
4512
4539
  }
4513
4540
  return null;
4514
4541
  }
4515
- const cached = cache2.get(kid);
4542
+ const cached = cache3.get(kid);
4516
4543
  if (cached && cached.expiresAt > Date.now()) return cached.jwk;
4517
4544
  try {
4518
4545
  const res = await fetchFn(options.registryUrl);
@@ -4521,7 +4548,7 @@ function createMastercardRegistry(options = {}) {
4521
4548
  const keys = body.keys ?? [];
4522
4549
  for (const k of keys) {
4523
4550
  if (k.kid === kid) {
4524
- cache2.set(kid, { jwk: k, expiresAt: Date.now() + ttlSec * 1e3 });
4551
+ cache3.set(kid, { jwk: k, expiresAt: Date.now() + ttlSec * 1e3 });
4525
4552
  return k;
4526
4553
  }
4527
4554
  }
@@ -4536,7 +4563,7 @@ function createMastercardRegistry(options = {}) {
4536
4563
  // src/transport/registry/web-bot-auth.ts
4537
4564
  var DIRECTORY_PATH = "/.well-known/http-message-signatures-directory";
4538
4565
  function createWebBotAuthRegistry(options = {}) {
4539
- const cache2 = /* @__PURE__ */ new Map();
4566
+ const cache3 = /* @__PURE__ */ new Map();
4540
4567
  const ttlSec = options.cacheTtlSec ?? 3600;
4541
4568
  const fetchFn = options.fetch ?? globalThis.fetch;
4542
4569
  return {
@@ -4545,7 +4572,7 @@ function createWebBotAuthRegistry(options = {}) {
4545
4572
  if (!kid) return null;
4546
4573
  const directoryUrl = resolveDirectoryUrl(options.directoryUrl, context?.origin);
4547
4574
  if (!directoryUrl) return null;
4548
- const cached = cache2.get(directoryUrl);
4575
+ const cached = cache3.get(directoryUrl);
4549
4576
  const now = Date.now();
4550
4577
  if (cached && cached.expiresAt > now) {
4551
4578
  return findKeyByKid(cached.keys, kid);
@@ -4555,7 +4582,7 @@ function createWebBotAuthRegistry(options = {}) {
4555
4582
  if (!res.ok) return null;
4556
4583
  const body = await res.json();
4557
4584
  const keys = body.keys ?? [];
4558
- cache2.set(directoryUrl, { keys, expiresAt: now + ttlSec * 1e3 });
4585
+ cache3.set(directoryUrl, { keys, expiresAt: now + ttlSec * 1e3 });
4559
4586
  return findKeyByKid(keys, kid);
4560
4587
  } catch {
4561
4588
  return null;
@@ -5724,8 +5751,186 @@ async function recordDecision2(config, params) {
5724
5751
  };
5725
5752
  }
5726
5753
 
5727
- // src/index.ts
5728
- var VERSION = "3.4.0";
5754
+ // src/edge-config.ts
5755
+ var DEFAULT_EDGE_CONFIG = Object.freeze({
5756
+ version: 1,
5757
+ mode: "observe",
5758
+ depth: "classify",
5759
+ pathRules: [],
5760
+ sampling: Object.freeze({ anonymousBeaconRate: 0.1 }),
5761
+ failurePosture: "open"
5762
+ });
5763
+ var EDGE_MODES = ["observe", "enforce"];
5764
+ var EDGE_DEPTHS = ["classify", "authenticate", "authorize"];
5765
+ function isEdgeConfig(value) {
5766
+ if (typeof value !== "object" || value === null) return false;
5767
+ const v = value;
5768
+ if (v.version !== 1) return false;
5769
+ if (!EDGE_MODES.includes(v.mode)) return false;
5770
+ if (!EDGE_DEPTHS.includes(v.depth)) return false;
5771
+ if (!Array.isArray(v.pathRules)) return false;
5772
+ for (const rule of v.pathRules) {
5773
+ if (typeof rule !== "object" || rule === null) return false;
5774
+ const r = rule;
5775
+ if (typeof r.pattern !== "string" || r.pattern.length === 0) return false;
5776
+ if (r.mode !== void 0 && !EDGE_MODES.includes(r.mode)) return false;
5777
+ if (r.depth !== void 0 && !EDGE_DEPTHS.includes(r.depth)) return false;
5778
+ }
5779
+ const sampling = v.sampling;
5780
+ if (typeof sampling !== "object" || sampling === null || typeof sampling.anonymousBeaconRate !== "number" || sampling.anonymousBeaconRate < 0 || sampling.anonymousBeaconRate > 1) {
5781
+ return false;
5782
+ }
5783
+ return v.failurePosture === "open";
5784
+ }
5785
+ async function fetchEdgeConfig(config, counterpartyId, opts) {
5786
+ if (!counterpartyId) return null;
5787
+ const headers = { Accept: "application/json" };
5788
+ if (config.apiKey) {
5789
+ headers["Authorization"] = `Bearer ${config.apiKey}`;
5790
+ headers["X-API-Key"] = config.apiKey;
5791
+ }
5792
+ if (opts?.etag) headers["If-None-Match"] = opts.etag;
5793
+ try {
5794
+ const response = await fetch(
5795
+ `${config.apiBaseUrl}/endpoints/${encodeURIComponent(counterpartyId)}/edge-config`,
5796
+ { method: "GET", headers, signal: AbortSignal.timeout(opts?.timeoutMs ?? 5e3) }
5797
+ );
5798
+ if (response.status === 304) return { notModified: true };
5799
+ if (!response.ok) return null;
5800
+ const body = await response.json();
5801
+ const edgeConfig = body.data?.edgeConfig;
5802
+ if (!isEdgeConfig(edgeConfig)) return null;
5803
+ return { edgeConfig, etag: response.headers.get("etag") ?? void 0 };
5804
+ } catch {
5805
+ return null;
5806
+ }
5807
+ }
5808
+ var DEFAULT_TTL_MS = 60 * 1e3;
5809
+ var DEFAULT_MAX_STALE_MS = 24 * 60 * 60 * 1e3;
5810
+ var cache2 = /* @__PURE__ */ new Map();
5811
+ var inflight2 = /* @__PURE__ */ new Map();
5812
+ function cacheKey(apiBaseUrl, counterpartyId) {
5813
+ return `${apiBaseUrl}|${counterpartyId}`;
5814
+ }
5815
+ function degradeToObserve(config) {
5816
+ if (config.mode !== "enforce" && !config.pathRules.some((r) => r.mode === "enforce")) {
5817
+ return config;
5818
+ }
5819
+ return {
5820
+ ...config,
5821
+ mode: "observe",
5822
+ pathRules: config.pathRules.map((r) => r.mode === "enforce" ? { ...r, mode: "observe" } : r)
5823
+ };
5824
+ }
5825
+ async function revalidate(config, counterpartyId) {
5826
+ const key = cacheKey(config.apiBaseUrl, counterpartyId);
5827
+ const existing = inflight2.get(key);
5828
+ if (existing) return existing;
5829
+ const promise = fetchEdgeConfig(config, counterpartyId, { etag: cache2.get(key)?.etag }).then((result) => {
5830
+ if (result === null) return;
5831
+ const now = Date.now();
5832
+ if ("notModified" in result) {
5833
+ const entry = cache2.get(key);
5834
+ if (entry) entry.lastSuccessAt = now;
5835
+ return;
5836
+ }
5837
+ cache2.set(key, { config: result.edgeConfig, etag: result.etag, lastSuccessAt: now });
5838
+ }).finally(() => {
5839
+ inflight2.delete(key);
5840
+ });
5841
+ inflight2.set(key, promise);
5842
+ return promise;
5843
+ }
5844
+ async function getEdgeConfig(config, counterpartyId, opts) {
5845
+ const ttlMs = opts?.ttlMs ?? DEFAULT_TTL_MS;
5846
+ const maxStaleMs = opts?.maxStaleMs ?? DEFAULT_MAX_STALE_MS;
5847
+ const key = cacheKey(config.apiBaseUrl, counterpartyId);
5848
+ const entry = cache2.get(key);
5849
+ if (entry) {
5850
+ const age = Date.now() - entry.lastSuccessAt;
5851
+ if (age > ttlMs) {
5852
+ revalidate(config, counterpartyId).catch(() => {
5853
+ });
5854
+ }
5855
+ return age > maxStaleMs ? degradeToObserve(entry.config) : entry.config;
5856
+ }
5857
+ await revalidate(config, counterpartyId).catch(() => {
5858
+ });
5859
+ return cache2.get(key)?.config ?? DEFAULT_EDGE_CONFIG;
5860
+ }
5861
+ function matchEdgePathRule(rules, path) {
5862
+ for (const rule of rules) {
5863
+ if (globToRegExp(rule.pattern).test(path)) return rule;
5864
+ }
5865
+ return void 0;
5866
+ }
5867
+ function globToRegExp(pattern) {
5868
+ const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*");
5869
+ return new RegExp(`^${escaped}$`, "i");
5870
+ }
5871
+ function _resetEdgeConfigCache() {
5872
+ cache2.clear();
5873
+ inflight2.clear();
5874
+ }
5875
+
5876
+ // src/platform-signatures.ts
5877
+ var PLATFORM_AGENT_SIGNATURES = [
5878
+ {
5879
+ vendor: "claude",
5880
+ displayName: "Anthropic Claude",
5881
+ uaPatterns: [/claude/i, /anthropic/i],
5882
+ agentCardPatterns: [/anthropic\.com/i, /claude\.ai/i]
5883
+ },
5884
+ {
5885
+ vendor: "chatgpt",
5886
+ displayName: "OpenAI ChatGPT",
5887
+ uaPatterns: [/chatgpt/i, /openai/i, /gpt-?\d/i],
5888
+ agentCardPatterns: [/openai\.com/i, /chatgpt\.com/i]
5889
+ },
5890
+ {
5891
+ vendor: "gemini",
5892
+ displayName: "Google Gemini",
5893
+ uaPatterns: [/gemini/i, /google-gemini/i, /bard/i],
5894
+ agentCardPatterns: [/gemini\.google\.com/i, /ai\.google\.dev/i]
5895
+ },
5896
+ {
5897
+ vendor: "cursor",
5898
+ displayName: "Cursor",
5899
+ uaPatterns: [/cursor/i],
5900
+ agentCardPatterns: [/cursor\.sh/i, /cursor\.com/i]
5901
+ },
5902
+ {
5903
+ vendor: "goose",
5904
+ displayName: "Block Goose",
5905
+ uaPatterns: [/goose/i, /block-goose/i],
5906
+ agentCardPatterns: [/block\.xyz\/goose/i, /goose\.tools/i]
5907
+ }
5908
+ ];
5909
+ function detectPlatformFingerprint(input) {
5910
+ const ua = input.userAgent ?? "";
5911
+ const cardUrl = input.agentCardUrl ?? "";
5912
+ for (const sig of PLATFORM_AGENT_SIGNATURES) {
5913
+ const uaMatch = sig.uaPatterns?.some((p) => p.test(ua));
5914
+ const cardMatch = sig.agentCardPatterns?.some((p) => p.test(cardUrl));
5915
+ if (uaMatch || cardMatch) {
5916
+ const uaBase = ua.split(/[\s/]/)[0]?.toLowerCase() ?? "";
5917
+ const cardHost = (() => {
5918
+ try {
5919
+ return cardUrl ? new URL(cardUrl).host : "";
5920
+ } catch {
5921
+ return "";
5922
+ }
5923
+ })();
5924
+ const fingerprintKey = `${sig.vendor}:${uaBase || cardHost || "unknown"}`;
5925
+ return {
5926
+ vendor: sig.vendor,
5927
+ fingerprintKey,
5928
+ displayName: sig.displayName
5929
+ };
5930
+ }
5931
+ }
5932
+ return void 0;
5933
+ }
5729
5934
  // Annotate the CommonJS export names for ESM import in node:
5730
5935
  0 && (module.exports = {
5731
5936
  ACCESS_LEVEL_DESCRIPTIONS,
@@ -5735,35 +5940,46 @@ var VERSION = "3.4.0";
5735
5940
  AstraSyncError,
5736
5941
  AuthenticationError,
5737
5942
  ChallengeHandler,
5943
+ DEFAULT_EDGE_CONFIG,
5738
5944
  DEFAULT_TRUST_THRESHOLDS,
5739
5945
  KYDRequiredError,
5946
+ PLATFORM_AGENT_SIGNATURES,
5740
5947
  RegistrationDeniedError,
5741
5948
  RegistrationExpiredError,
5742
5949
  RegistrationTimeoutError,
5743
5950
  TRUST_LEVEL_RANGES,
5744
5951
  VERSION,
5952
+ _resetEdgeConfigCache,
5745
5953
  agent,
5746
5954
  authorizeSettlement,
5747
5955
  awaitStepUpApproval,
5748
5956
  buildGuidance,
5749
5957
  clearCache,
5750
5958
  createMcpMiddleware,
5959
+ degradeToObserve,
5960
+ detectPlatformFingerprint,
5751
5961
  determineAccessLevel,
5752
5962
  express,
5753
5963
  extractCredentials,
5754
5964
  extractMcpCredentials,
5965
+ fetchEdgeConfig,
5966
+ fetchRoutes,
5755
5967
  getAccessLevelForScore,
5756
5968
  getCachedWellKnownUrls,
5757
5969
  getCapabilities,
5970
+ getEdgeConfig,
5758
5971
  getTrustLevel,
5759
5972
  getWellKnownUrls,
5760
5973
  hasCredentials,
5761
5974
  hasMinimumAccess,
5975
+ isEdgeConfig,
5976
+ matchEdgePathRule,
5762
5977
  nextjs,
5763
5978
  pollStepUpStatus,
5764
5979
  prefetchWellKnown,
5765
5980
  quickVerify,
5766
5981
  recordDecision,
5982
+ reportUnregisteredAttempt,
5767
5983
  sdk,
5768
5984
  setMcpMeta,
5769
5985
  transport,