@astrasyncai/verification-gateway 4.3.0 → 4.4.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 (83) hide show
  1. package/dist/adapters/express.js +91 -19
  2. package/dist/adapters/express.js.map +1 -1
  3. package/dist/adapters/express.mjs +91 -19
  4. package/dist/adapters/express.mjs.map +1 -1
  5. package/dist/adapters/mcp.js +52 -13
  6. package/dist/adapters/mcp.js.map +1 -1
  7. package/dist/adapters/mcp.mjs +52 -13
  8. package/dist/adapters/mcp.mjs.map +1 -1
  9. package/dist/adapters/nextjs.js +89 -17
  10. package/dist/adapters/nextjs.js.map +1 -1
  11. package/dist/adapters/nextjs.mjs +89 -17
  12. package/dist/adapters/nextjs.mjs.map +1 -1
  13. package/dist/adapters/sdk.js +24 -6
  14. package/dist/adapters/sdk.js.map +1 -1
  15. package/dist/adapters/sdk.mjs +24 -6
  16. package/dist/adapters/sdk.mjs.map +1 -1
  17. package/dist/agent/index.js +24 -3
  18. package/dist/agent/index.js.map +1 -1
  19. package/dist/agent/index.mjs +24 -3
  20. package/dist/agent/index.mjs.map +1 -1
  21. package/dist/bin/astrasync-claude-hook.js +22 -4
  22. package/dist/bin/astrasync-codex-hook.js +22 -4
  23. package/dist/bin/astrasync-guard.js +26 -8
  24. package/dist/bin/astrasync.js +66 -23
  25. package/dist/browser/background.js +22 -4
  26. package/dist/browser/background.js.map +1 -1
  27. package/dist/browser/background.mjs +22 -4
  28. package/dist/browser/background.mjs.map +1 -1
  29. package/dist/cli/index.js +23 -2
  30. package/dist/cli/index.js.map +1 -1
  31. package/dist/cli/index.mjs +23 -2
  32. package/dist/cli/index.mjs.map +1 -1
  33. package/dist/codex/index.js +22 -4
  34. package/dist/codex/index.js.map +1 -1
  35. package/dist/codex/index.mjs +22 -4
  36. package/dist/codex/index.mjs.map +1 -1
  37. package/dist/cursor/extension.js +22 -4
  38. package/dist/cursor/extension.js.map +1 -1
  39. package/dist/cursor/extension.mjs +22 -4
  40. package/dist/cursor/extension.mjs.map +1 -1
  41. package/dist/edge-config.js +24 -1
  42. package/dist/edge-config.js.map +1 -1
  43. package/dist/edge-config.mjs +22 -1
  44. package/dist/edge-config.mjs.map +1 -1
  45. package/dist/edge-core/index.js +96 -11
  46. package/dist/edge-core/index.js.map +1 -1
  47. package/dist/edge-core/index.mjs +96 -11
  48. package/dist/edge-core/index.mjs.map +1 -1
  49. package/dist/gateway/gateway.js +22 -4
  50. package/dist/gateway/gateway.js.map +1 -1
  51. package/dist/gateway/gateway.mjs +22 -4
  52. package/dist/gateway/gateway.mjs.map +1 -1
  53. package/dist/index.d.mts +51 -2
  54. package/dist/index.d.ts +51 -2
  55. package/dist/index.js +151 -26
  56. package/dist/index.js.map +1 -1
  57. package/dist/index.mjs +147 -26
  58. package/dist/index.mjs.map +1 -1
  59. package/dist/metadata-capture.d.mts +17 -0
  60. package/dist/metadata-capture.d.ts +17 -0
  61. package/dist/metadata-capture.js +25 -4
  62. package/dist/metadata-capture.js.map +1 -1
  63. package/dist/metadata-capture.mjs +25 -4
  64. package/dist/metadata-capture.mjs.map +1 -1
  65. package/dist/platform-signatures.d.mts +18 -1
  66. package/dist/platform-signatures.d.ts +18 -1
  67. package/dist/platform-signatures.js +35 -2
  68. package/dist/platform-signatures.js.map +1 -1
  69. package/dist/platform-signatures.mjs +35 -2
  70. package/dist/platform-signatures.mjs.map +1 -1
  71. package/dist/registration/index.js +25 -4
  72. package/dist/registration/index.js.map +1 -1
  73. package/dist/registration/index.mjs +25 -4
  74. package/dist/registration/index.mjs.map +1 -1
  75. package/dist/transport/index.js +22 -1
  76. package/dist/transport/index.js.map +1 -1
  77. package/dist/transport/index.mjs +22 -1
  78. package/dist/transport/index.mjs.map +1 -1
  79. package/dist/verify.js +29 -11
  80. package/dist/verify.js.map +1 -1
  81. package/dist/verify.mjs +29 -11
  82. package/dist/verify.mjs.map +1 -1
  83. package/package.json +1 -1
@@ -31,6 +31,27 @@ __export(mcp_exports, {
31
31
  });
32
32
  module.exports = __toCommonJS(mcp_exports);
33
33
 
34
+ // src/version.ts
35
+ var SDK_VERSION = "4.4.0";
36
+
37
+ // src/http.ts
38
+ var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
39
+ function withUserAgent(initHeaders) {
40
+ if (!initHeaders) return { "user-agent": SDK_USER_AGENT };
41
+ if (initHeaders instanceof Headers) {
42
+ const copy = new Headers(initHeaders);
43
+ if (!copy.has("user-agent")) copy.set("user-agent", SDK_USER_AGENT);
44
+ return copy;
45
+ }
46
+ if (Array.isArray(initHeaders)) {
47
+ const has2 = initHeaders.some(([name]) => name.toLowerCase() === "user-agent");
48
+ return has2 ? initHeaders : [...initHeaders, ["user-agent", SDK_USER_AGENT]];
49
+ }
50
+ const has = Object.keys(initHeaders).some((name) => name.toLowerCase() === "user-agent");
51
+ return has ? initHeaders : { "user-agent": SDK_USER_AGENT, ...initHeaders };
52
+ }
53
+ var sdkFetch = (input, init) => fetch(input, { ...init, headers: withUserAgent(init?.headers) });
54
+
34
55
  // src/access-levels.ts
35
56
  function getTrustLevel(score) {
36
57
  if (score >= 80) return "PLATINUM";
@@ -39,9 +60,6 @@ function getTrustLevel(score) {
39
60
  return "BRONZE";
40
61
  }
41
62
 
42
- // src/version.ts
43
- var SDK_VERSION = "4.1.0";
44
-
45
63
  // src/well-known.ts
46
64
  var CACHE_TTL_MS = 60 * 60 * 1e3;
47
65
  var cache = /* @__PURE__ */ new Map();
@@ -52,7 +70,7 @@ function wellKnownUrl(apiBaseUrl) {
52
70
  }
53
71
  async function fetchWellKnown(apiBaseUrl) {
54
72
  const url = wellKnownUrl(apiBaseUrl);
55
- const response = await fetch(url, {
73
+ const response = await sdkFetch(url, {
56
74
  method: "GET",
57
75
  headers: { Accept: "application/json" },
58
76
  signal: AbortSignal.timeout(5e3)
@@ -122,7 +140,7 @@ async function performInitCheck(apiBaseUrl, debug, strictInit, apiKey) {
122
140
  initCheckPerformed = true;
123
141
  try {
124
142
  const probeUrl = `${apiBaseUrl}/agents/verify-access`;
125
- const response = await fetch(probeUrl, { method: "HEAD" });
143
+ const response = await sdkFetch(probeUrl, { method: "HEAD" });
126
144
  const contentType = response.headers.get("content-type") ?? "";
127
145
  if (contentType.startsWith("text/html")) {
128
146
  const message = `[VerificationGateway] apiBaseUrl '${apiBaseUrl}' returned HTML (content-type: ${contentType}). This usually means apiBaseUrl is pointing at a marketing site instead of the API. Expected: 'https://astrasync.ai/api' (prod) or 'https://staging.astrasync.ai/api' (staging).`;
@@ -136,7 +154,7 @@ async function performInitCheck(apiBaseUrl, debug, strictInit, apiKey) {
136
154
  );
137
155
  }
138
156
  if (apiKey) {
139
- const selfCheck = await fetch(`${apiBaseUrl}/agents/verify-access/self-check`, {
157
+ const selfCheck = await sdkFetch(`${apiBaseUrl}/agents/verify-access/self-check`, {
140
158
  headers: { Authorization: `Bearer ${apiKey}` }
141
159
  });
142
160
  if (selfCheck.status === 401) {
@@ -383,7 +401,7 @@ async function callVerifyAccessAPI(config, request) {
383
401
  headers["X-API-Key"] = config.apiKey;
384
402
  }
385
403
  try {
386
- const response = await fetch(`${config.apiBaseUrl}/agents/verify-access`, {
404
+ const response = await sdkFetch(`${config.apiBaseUrl}/agents/verify-access`, {
387
405
  method: "POST",
388
406
  headers,
389
407
  body: JSON.stringify(body),
@@ -626,7 +644,7 @@ async function recordDecision(config, sessionId, decision, reason) {
626
644
  headers["Authorization"] = `Bearer ${config.apiKey}`;
627
645
  headers["X-API-Key"] = config.apiKey;
628
646
  }
629
- await fetch(`${config.apiBaseUrl}/agents/verify-access/${sessionId}/decision`, {
647
+ await sdkFetch(`${config.apiBaseUrl}/agents/verify-access/${sessionId}/decision`, {
630
648
  method: "POST",
631
649
  headers,
632
650
  body: JSON.stringify({ decision, reason })
@@ -671,7 +689,13 @@ var PLATFORM_HEADER_NAMES = /* @__PURE__ */ new Set([
671
689
  "x-agent-card-url",
672
690
  "x-agent-provider"
673
691
  ]);
674
- var PLATFORM_HEADER_PREFIXES = ["x-goog-", "x-stainless-", "x-anthropic-", "x-openai-"];
692
+ var PLATFORM_HEADER_PREFIXES = [
693
+ "x-goog-",
694
+ "x-stainless-",
695
+ "x-anthropic-",
696
+ "x-openai-",
697
+ "sec-ch-"
698
+ ];
675
699
  var KEY_FORMAT_PREFIXES = [
676
700
  "sk-ant-api03",
677
701
  "sk-ant-api",
@@ -743,6 +767,7 @@ function sanitizeHeaders(raw) {
743
767
  const headers = {};
744
768
  const platformHeaders = {};
745
769
  let apiKeyFormat;
770
+ let cookieCount;
746
771
  let totalBytes = 0;
747
772
  let count = 0;
748
773
  if (!raw) return { headers };
@@ -757,6 +782,9 @@ function sanitizeHeaders(raw) {
757
782
  if (fmt && !apiKeyFormat) apiKeyFormat = fmt;
758
783
  continue;
759
784
  }
785
+ if (name === "cookie") {
786
+ cookieCount = joined.split(";").filter((s) => s.trim().length > 0).length;
787
+ }
760
788
  if (isSecretHeader(name)) continue;
761
789
  let value = joined;
762
790
  if (byteLength(value) > MAX_HEADER_VALUE_BYTES) {
@@ -772,6 +800,7 @@ function sanitizeHeaders(raw) {
772
800
  const result = { headers };
773
801
  if (apiKeyFormat) result.apiKeyFormat = apiKeyFormat;
774
802
  if (Object.keys(platformHeaders).length > 0) result.platformHeaders = platformHeaders;
803
+ if (cookieCount !== void 0) result.cookieCount = cookieCount;
775
804
  return result;
776
805
  }
777
806
  var CONNECTION_HEADER_SOURCES = [
@@ -783,6 +812,9 @@ var CONNECTION_HEADER_SOURCES = [
783
812
  ["region", ["x-vercel-ip-country-region", "cloudfront-viewer-country-region"]],
784
813
  ["countryRegionName", ["cloudfront-viewer-country-region-name"]],
785
814
  ["city", ["x-vercel-ip-city", "cloudfront-viewer-city"]],
815
+ ["latitude", ["x-vercel-ip-latitude", "cloudfront-viewer-latitude"]],
816
+ ["longitude", ["x-vercel-ip-longitude", "cloudfront-viewer-longitude"]],
817
+ ["postalCode", ["x-vercel-ip-postal-code", "cloudfront-viewer-postal-code"]],
786
818
  ["asn", ["cloudfront-viewer-asn"]],
787
819
  ["tlsVersion", ["cloudfront-viewer-tls"]],
788
820
  ["httpVersion", ["cloudfront-viewer-http-version"]],
@@ -817,19 +849,25 @@ function deriveConnectionFromHeaders(headers) {
817
849
  }
818
850
  }
819
851
  }
820
- if (!connection.ip) {
852
+ {
821
853
  const addr = lower["cloudfront-viewer-address"]?.trim();
822
- if (addr) connection.ip = addr.replace(/:\d+$/, "");
854
+ const portMatch = addr?.match(/:(\d+)$/);
855
+ if (portMatch) connection.sourcePort = portMatch[1];
856
+ if (!connection.ip && addr) connection.ip = addr.replace(/:\d+$/, "");
823
857
  }
824
858
  if (!connection.ip) {
825
859
  const xff = lower["x-forwarded-for"];
826
860
  const client = xff?.split(",")[0]?.trim();
827
861
  if (client) connection.ip = client;
828
862
  }
863
+ if (!connection.tlsCipher) {
864
+ const cipher = connection.tlsVersion?.split(":")[1];
865
+ if (cipher) connection.tlsCipher = cipher;
866
+ }
829
867
  return Object.keys(connection).length > 0 ? connection : void 0;
830
868
  }
831
869
  function buildSdkObservedMetadata(rawHeaders) {
832
- const { headers, apiKeyFormat, platformHeaders } = sanitizeHeaders(rawHeaders);
870
+ const { headers, apiKeyFormat, platformHeaders, cookieCount } = sanitizeHeaders(rawHeaders);
833
871
  const flat = {};
834
872
  if (rawHeaders) {
835
873
  for (const name of Object.keys(rawHeaders)) {
@@ -844,6 +882,7 @@ function buildSdkObservedMetadata(rawHeaders) {
844
882
  ...apiKeyFormat && { apiKeyFormat },
845
883
  ...platformHeaders && { platformHeaders },
846
884
  ...connection && { connection },
885
+ ...cookieCount !== void 0 && { cookieCount },
847
886
  schemaVersion: CAPTURE_SCHEMA_VERSION
848
887
  };
849
888
  }
@@ -875,7 +914,7 @@ function resolvePollUrl(config, pollUrl) {
875
914
  async function pollStepUpStatus(config, approval) {
876
915
  if (!approval.pollUrl) return null;
877
916
  try {
878
- const res = await fetch(resolvePollUrl(config, approval.pollUrl), {
917
+ const res = await sdkFetch(resolvePollUrl(config, approval.pollUrl), {
879
918
  method: "GET",
880
919
  signal: AbortSignal.timeout(POLL_REQUEST_TIMEOUT_MS)
881
920
  });