@astrasyncai/verification-gateway 5.14.0 → 5.15.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/README.md +27 -17
- package/dist/adapters/express.d.mts +1 -1
- package/dist/adapters/express.d.ts +1 -1
- package/dist/adapters/express.js +477 -240
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +477 -240
- package/dist/adapters/express.mjs.map +1 -1
- package/dist/adapters/mcp.d.mts +1 -1
- package/dist/adapters/mcp.d.ts +1 -1
- package/dist/adapters/mcp.js +20 -6
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +20 -6
- package/dist/adapters/mcp.mjs.map +1 -1
- package/dist/adapters/nextjs.d.mts +1 -1
- package/dist/adapters/nextjs.d.ts +1 -1
- package/dist/adapters/nextjs.js +460 -239
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +460 -239
- package/dist/adapters/nextjs.mjs.map +1 -1
- package/dist/adapters/sdk.d.mts +18 -10
- package/dist/adapters/sdk.d.ts +18 -10
- package/dist/adapters/sdk.js +80 -23
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +80 -23
- package/dist/adapters/sdk.mjs.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/index.mjs +1 -1
- package/dist/agent/index.mjs.map +1 -1
- package/dist/bin/astrasync-claude-hook.js +55 -11
- package/dist/bin/astrasync-codex-hook.js +55 -11
- package/dist/bin/astrasync-guard.js +55 -11
- package/dist/bin/astrasync.js +288 -33
- package/dist/browser/background.js +50 -6
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +60 -6
- package/dist/browser/background.mjs.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +1 -1
- package/dist/cli/index.mjs.map +1 -1
- package/dist/codex/index.js +55 -11
- package/dist/codex/index.js.map +1 -1
- package/dist/codex/index.mjs +65 -11
- package/dist/codex/index.mjs.map +1 -1
- package/dist/cursor/extension.js +55 -11
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +65 -11
- package/dist/cursor/extension.mjs.map +1 -1
- package/dist/edge-config.d.mts +31 -2
- package/dist/edge-config.d.ts +31 -2
- package/dist/edge-config.js +35 -5
- package/dist/edge-config.js.map +1 -1
- package/dist/edge-config.mjs +32 -4
- package/dist/edge-config.mjs.map +1 -1
- package/dist/edge-core/index.d.mts +11 -2
- package/dist/edge-core/index.d.ts +11 -2
- package/dist/edge-core/index.js +93 -10
- package/dist/edge-core/index.js.map +1 -1
- package/dist/edge-core/index.mjs +91 -10
- package/dist/edge-core/index.mjs.map +1 -1
- package/dist/gateway/gateway.js +50 -6
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +60 -6
- package/dist/gateway/gateway.mjs.map +1 -1
- package/dist/git-trigger/git-hooks.d.mts +1 -1
- package/dist/git-trigger/git-hooks.d.ts +1 -1
- package/dist/index.d.mts +1314 -34
- package/dist/index.d.ts +1314 -34
- package/dist/index.js +5116 -2612
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5063 -2614
- package/dist/index.mjs.map +1 -1
- package/dist/registration/index.d.mts +28 -2
- package/dist/registration/index.d.ts +28 -2
- package/dist/registration/index.js +18 -3
- package/dist/registration/index.js.map +1 -1
- package/dist/registration/index.mjs +15 -2
- package/dist/registration/index.mjs.map +1 -1
- package/dist/transport/index.d.mts +7 -5
- package/dist/transport/index.d.ts +7 -5
- package/dist/transport/index.js +61 -5
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/index.mjs +67 -11
- package/dist/transport/index.mjs.map +1 -1
- package/dist/{types-C_b4QTyO.d.ts → types-DtJjlW4O.d.ts} +104 -10
- package/dist/{types-BCkwBA84.d.mts → types-Dxf9DBpr.d.mts} +106 -12
- package/dist/{types-BCkwBA84.d.ts → types-Dxf9DBpr.d.ts} +106 -12
- package/dist/{types-DlshIIR-.d.mts → types-Eg6VoBNH.d.mts} +104 -10
- package/dist/ui/index.d.mts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/verify.d.mts +1 -1
- package/dist/verify.d.ts +1 -1
- package/dist/verify.js +20 -6
- package/dist/verify.js.map +1 -1
- package/dist/verify.mjs +20 -6
- package/dist/verify.mjs.map +1 -1
- package/package.json +1 -1
package/dist/transport/index.js
CHANGED
|
@@ -530,6 +530,7 @@ function bufferToBase64(bytes) {
|
|
|
530
530
|
}
|
|
531
531
|
|
|
532
532
|
// src/transport/rfc9421-verify.ts
|
|
533
|
+
var import_crypto = require("crypto");
|
|
533
534
|
var import_http_message_signatures = require("http-message-signatures");
|
|
534
535
|
|
|
535
536
|
// src/transport/nonce-store.ts
|
|
@@ -601,6 +602,16 @@ async function verifyRFC9421(request, options) {
|
|
|
601
602
|
normalizeRequest(request)
|
|
602
603
|
);
|
|
603
604
|
if (result === true) {
|
|
605
|
+
const digestError = checkContentDigest(request);
|
|
606
|
+
if (digestError) {
|
|
607
|
+
return {
|
|
608
|
+
ok: false,
|
|
609
|
+
kid: resolvedKid,
|
|
610
|
+
registry: resolver.name,
|
|
611
|
+
algorithm: resolvedAlg,
|
|
612
|
+
error: digestError
|
|
613
|
+
};
|
|
614
|
+
}
|
|
604
615
|
return {
|
|
605
616
|
ok: true,
|
|
606
617
|
kid: resolvedKid,
|
|
@@ -625,6 +636,21 @@ async function verifyRFC9421(request, options) {
|
|
|
625
636
|
};
|
|
626
637
|
}
|
|
627
638
|
}
|
|
639
|
+
function checkContentDigest(request) {
|
|
640
|
+
if (request.body === void 0) return null;
|
|
641
|
+
const raw = Object.entries(request.headers).find(
|
|
642
|
+
([k]) => k.toLowerCase() === "content-digest"
|
|
643
|
+
)?.[1];
|
|
644
|
+
if (!raw) return null;
|
|
645
|
+
const header = Array.isArray(raw) ? raw.join(", ") : raw;
|
|
646
|
+
const entries = [...header.matchAll(/(sha-256|sha-512)=:([A-Za-z0-9+/=]+):/g)];
|
|
647
|
+
if (entries.length === 0) return null;
|
|
648
|
+
for (const [, alg, value] of entries) {
|
|
649
|
+
const expected = (0, import_crypto.createHash)(alg === "sha-256" ? "sha256" : "sha512").update(request.body, "utf8").digest("base64");
|
|
650
|
+
if (expected !== value) return "content-digest does not match the body";
|
|
651
|
+
}
|
|
652
|
+
return null;
|
|
653
|
+
}
|
|
628
654
|
function normalizeRequest(request) {
|
|
629
655
|
return {
|
|
630
656
|
method: request.method.toUpperCase(),
|
|
@@ -726,7 +752,7 @@ async function getCrypto() {
|
|
|
726
752
|
}
|
|
727
753
|
|
|
728
754
|
// src/version.ts
|
|
729
|
-
var SDK_VERSION = "5.
|
|
755
|
+
var SDK_VERSION = "5.15.0";
|
|
730
756
|
|
|
731
757
|
// src/http.ts
|
|
732
758
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -874,8 +900,9 @@ function extractBearer(authHeader) {
|
|
|
874
900
|
function extractPaymentToken(body) {
|
|
875
901
|
const paymentData = body.payment_data;
|
|
876
902
|
if (!paymentData) return void 0;
|
|
877
|
-
const
|
|
878
|
-
const
|
|
903
|
+
const instrument = paymentData.instrument;
|
|
904
|
+
const raw = coerceString3(instrument?.credential?.token) ?? coerceString3(paymentData.token);
|
|
905
|
+
const provider = coerceString3(paymentData.provider) ?? coerceString3(paymentData.handler_id);
|
|
879
906
|
if (!raw) return { raw: void 0, type: null, provider };
|
|
880
907
|
const type = classifyPaymentToken(raw);
|
|
881
908
|
return { raw, type, provider };
|
|
@@ -1738,8 +1765,10 @@ async function getSubtle() {
|
|
|
1738
1765
|
// src/transport/mpp.ts
|
|
1739
1766
|
var import_mppx = require("mppx");
|
|
1740
1767
|
function extractMPPFromRequest(request) {
|
|
1741
|
-
const
|
|
1742
|
-
|
|
1768
|
+
const alt = readHeader3(request.headers, "payment-authorization");
|
|
1769
|
+
const authHeader = readHeader3(request.headers, "authorization");
|
|
1770
|
+
const auth = authHeader && /^\s*Payment\s+/i.test(authHeader) ? authHeader : alt ? /^\s*Payment\s+/i.test(alt) ? alt : `Payment ${alt.trim()}` : void 0;
|
|
1771
|
+
if (!auth) return null;
|
|
1743
1772
|
try {
|
|
1744
1773
|
const credential = import_mppx.Credential.deserialize(auth);
|
|
1745
1774
|
return {
|
|
@@ -1926,6 +1955,16 @@ function verifyMPP(input) {
|
|
|
1926
1955
|
var import_schemas = require("@x402/core/schemas");
|
|
1927
1956
|
var import_utils = require("@x402/core/utils");
|
|
1928
1957
|
function extractX402FromRequest(request) {
|
|
1958
|
+
const v2Header = readHeader4(request.headers, "payment-signature");
|
|
1959
|
+
if (v2Header) {
|
|
1960
|
+
try {
|
|
1961
|
+
const decoded = (0, import_utils.safeBase64Decode)(v2Header);
|
|
1962
|
+
const parsed = decoded ? tryParsePayload(JSON.parse(decoded)) : null;
|
|
1963
|
+
if (parsed) return buildPayloadContext(parsed, "header");
|
|
1964
|
+
} catch {
|
|
1965
|
+
}
|
|
1966
|
+
return { kind: "error", version: 2, source: "header", error: { type: "invalid-x402-payload" } };
|
|
1967
|
+
}
|
|
1929
1968
|
const headerValue = readHeader4(request.headers, "x-payment");
|
|
1930
1969
|
if (request.body && typeof request.body === "object") {
|
|
1931
1970
|
const parsed = tryParsePayload(request.body);
|
|
@@ -1952,6 +1991,21 @@ function extractX402FromRequest(request) {
|
|
|
1952
1991
|
}
|
|
1953
1992
|
function extractX402FromResponse(response) {
|
|
1954
1993
|
if (response.status !== 402) return null;
|
|
1994
|
+
const v2Header = readHeader4(response.headers, "payment-required");
|
|
1995
|
+
if (v2Header) {
|
|
1996
|
+
try {
|
|
1997
|
+
const decoded = (0, import_utils.safeBase64Decode)(v2Header);
|
|
1998
|
+
const parsed = decoded ? tryParseRequired(JSON.parse(decoded)) : null;
|
|
1999
|
+
if (parsed) return buildRequiredContext(parsed, "header");
|
|
2000
|
+
} catch {
|
|
2001
|
+
}
|
|
2002
|
+
return {
|
|
2003
|
+
kind: "error",
|
|
2004
|
+
version: 2,
|
|
2005
|
+
source: "header",
|
|
2006
|
+
error: { type: "invalid-x402-required" }
|
|
2007
|
+
};
|
|
2008
|
+
}
|
|
1955
2009
|
if (response.body && typeof response.body === "object") {
|
|
1956
2010
|
const parsed = tryParseRequired(response.body);
|
|
1957
2011
|
if (parsed) return buildRequiredContext(parsed, "body");
|
|
@@ -2465,6 +2519,8 @@ function resolvePaymentToken(input) {
|
|
|
2465
2519
|
const mppMethod = input.mpp?.context.credential?.challenge?.method;
|
|
2466
2520
|
if (mppMethod === "tempo") return { present: true, type: "tempo-tx" };
|
|
2467
2521
|
if (mppMethod === "stripe") return { present: true, type: "stripe-spt" };
|
|
2522
|
+
if (input.x402?.paymentPayload) return { present: true, type: "x402-payload" };
|
|
2523
|
+
if (input.ap2?.triple.payment) return { present: true, type: "ap2-payment-mandate" };
|
|
2468
2524
|
return void 0;
|
|
2469
2525
|
}
|
|
2470
2526
|
function runConstraintEval(input) {
|