@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.
- package/dist/adapters/express.js +91 -19
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +91 -19
- package/dist/adapters/express.mjs.map +1 -1
- package/dist/adapters/mcp.js +52 -13
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +52 -13
- package/dist/adapters/mcp.mjs.map +1 -1
- package/dist/adapters/nextjs.js +89 -17
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +89 -17
- package/dist/adapters/nextjs.mjs.map +1 -1
- package/dist/adapters/sdk.js +24 -6
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +24 -6
- package/dist/adapters/sdk.mjs.map +1 -1
- package/dist/agent/index.js +24 -3
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/index.mjs +24 -3
- package/dist/agent/index.mjs.map +1 -1
- package/dist/bin/astrasync-claude-hook.js +22 -4
- package/dist/bin/astrasync-codex-hook.js +22 -4
- package/dist/bin/astrasync-guard.js +26 -8
- package/dist/bin/astrasync.js +66 -23
- package/dist/browser/background.js +22 -4
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +22 -4
- package/dist/browser/background.mjs.map +1 -1
- package/dist/cli/index.js +23 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +23 -2
- package/dist/cli/index.mjs.map +1 -1
- package/dist/codex/index.js +22 -4
- package/dist/codex/index.js.map +1 -1
- package/dist/codex/index.mjs +22 -4
- package/dist/codex/index.mjs.map +1 -1
- package/dist/cursor/extension.js +22 -4
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +22 -4
- package/dist/cursor/extension.mjs.map +1 -1
- package/dist/edge-config.js +24 -1
- package/dist/edge-config.js.map +1 -1
- package/dist/edge-config.mjs +22 -1
- package/dist/edge-config.mjs.map +1 -1
- package/dist/edge-core/index.js +96 -11
- package/dist/edge-core/index.js.map +1 -1
- package/dist/edge-core/index.mjs +96 -11
- package/dist/edge-core/index.mjs.map +1 -1
- package/dist/gateway/gateway.js +22 -4
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +22 -4
- package/dist/gateway/gateway.mjs.map +1 -1
- package/dist/index.d.mts +51 -2
- package/dist/index.d.ts +51 -2
- package/dist/index.js +151 -26
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +147 -26
- package/dist/index.mjs.map +1 -1
- package/dist/metadata-capture.d.mts +17 -0
- package/dist/metadata-capture.d.ts +17 -0
- package/dist/metadata-capture.js +25 -4
- package/dist/metadata-capture.js.map +1 -1
- package/dist/metadata-capture.mjs +25 -4
- package/dist/metadata-capture.mjs.map +1 -1
- package/dist/platform-signatures.d.mts +18 -1
- package/dist/platform-signatures.d.ts +18 -1
- package/dist/platform-signatures.js +35 -2
- package/dist/platform-signatures.js.map +1 -1
- package/dist/platform-signatures.mjs +35 -2
- package/dist/platform-signatures.mjs.map +1 -1
- package/dist/registration/index.js +25 -4
- package/dist/registration/index.js.map +1 -1
- package/dist/registration/index.mjs +25 -4
- package/dist/registration/index.mjs.map +1 -1
- package/dist/transport/index.js +22 -1
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/index.mjs +22 -1
- package/dist/transport/index.mjs.map +1 -1
- package/dist/verify.js +29 -11
- package/dist/verify.js.map +1 -1
- package/dist/verify.mjs +29 -11
- package/dist/verify.mjs.map +1 -1
- package/package.json +1 -1
package/dist/adapters/mcp.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 = [
|
|
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
|
-
|
|
852
|
+
{
|
|
821
853
|
const addr = lower["cloudfront-viewer-address"]?.trim();
|
|
822
|
-
|
|
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
|
|
917
|
+
const res = await sdkFetch(resolvePollUrl(config, approval.pollUrl), {
|
|
879
918
|
method: "GET",
|
|
880
919
|
signal: AbortSignal.timeout(POLL_REQUEST_TIMEOUT_MS)
|
|
881
920
|
});
|