@astrasyncai/verification-gateway 5.18.1 → 5.20.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/CHANGELOG.md +232 -0
- package/README.md +217 -4
- package/dist/adapter-interface/interface.d.mts +2 -2
- package/dist/adapter-interface/interface.d.ts +2 -2
- package/dist/adapters/express.d.mts +9 -1
- package/dist/adapters/express.d.ts +9 -1
- package/dist/adapters/express.js +160 -52
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +160 -52
- package/dist/adapters/express.mjs.map +1 -1
- package/dist/adapters/http-pdlss.d.mts +7 -1
- package/dist/adapters/http-pdlss.d.ts +7 -1
- package/dist/adapters/http-pdlss.js +18 -2
- package/dist/adapters/http-pdlss.js.map +1 -1
- package/dist/adapters/http-pdlss.mjs +16 -1
- package/dist/adapters/http-pdlss.mjs.map +1 -1
- package/dist/adapters/kit-express.d.mts +93 -1
- package/dist/adapters/kit-express.d.ts +93 -1
- package/dist/adapters/kit-express.js +181 -2
- package/dist/adapters/kit-express.js.map +1 -1
- package/dist/adapters/kit-express.mjs +180 -2
- package/dist/adapters/kit-express.mjs.map +1 -1
- package/dist/adapters/mcp.d.mts +102 -9
- package/dist/adapters/mcp.d.ts +102 -9
- package/dist/adapters/mcp.js +242 -19
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +240 -19
- 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 +97 -14
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +97 -14
- package/dist/adapters/nextjs.mjs.map +1 -1
- package/dist/adapters/sdk.d.mts +101 -2
- package/dist/adapters/sdk.d.ts +101 -2
- package/dist/adapters/sdk.js +199 -12
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +199 -12
- package/dist/adapters/sdk.mjs.map +1 -1
- package/dist/agent/index.d.mts +1 -1
- package/dist/agent/index.d.ts +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 +94 -16
- package/dist/bin/astrasync-codex-hook.js +94 -16
- package/dist/bin/astrasync-guard.js +94 -16
- package/dist/bin/astrasync.js +127 -16
- package/dist/browser/background.js +94 -16
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +94 -16
- 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 +94 -16
- package/dist/codex/index.js.map +1 -1
- package/dist/codex/index.mjs +94 -16
- package/dist/codex/index.mjs.map +1 -1
- package/dist/cursor/extension.js +94 -16
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +94 -16
- package/dist/cursor/extension.mjs.map +1 -1
- package/dist/edge-config.d.mts +1 -1
- package/dist/edge-config.d.ts +1 -1
- package/dist/edge-config.js +1 -1
- package/dist/edge-config.js.map +1 -1
- package/dist/edge-config.mjs +1 -1
- package/dist/edge-config.mjs.map +1 -1
- package/dist/edge-core/index.d.mts +1 -1
- package/dist/edge-core/index.d.ts +1 -1
- package/dist/edge-core/index.js +69 -12
- package/dist/edge-core/index.js.map +1 -1
- package/dist/edge-core/index.mjs +69 -12
- package/dist/edge-core/index.mjs.map +1 -1
- package/dist/gateway/gateway.d.mts +2 -2
- package/dist/gateway/gateway.d.ts +2 -2
- package/dist/gateway/gateway.js +94 -16
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +94 -16
- 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 +706 -34
- package/dist/index.d.ts +706 -34
- package/dist/index.js +1391 -205
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1374 -195
- package/dist/index.mjs.map +1 -1
- package/dist/local-evaluator/evaluator.d.mts +2 -2
- package/dist/local-evaluator/evaluator.d.ts +2 -2
- package/dist/registration/index.d.mts +11 -2
- package/dist/registration/index.d.ts +11 -2
- package/dist/registration/index.js +1 -1
- package/dist/registration/index.js.map +1 -1
- package/dist/registration/index.mjs +1 -1
- package/dist/registration/index.mjs.map +1 -1
- package/dist/transport/index.d.mts +1 -1
- package/dist/transport/index.d.ts +1 -1
- package/dist/transport/index.js +3 -2
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/index.mjs +3 -2
- package/dist/transport/index.mjs.map +1 -1
- package/dist/{types-BRz2U0Pn.d.ts → types-B_HLhZ9n.d.ts} +1 -1
- package/dist/{types-BfILnheI.d.mts → types-CU17R4Nr.d.mts} +11 -0
- package/dist/{types-BfILnheI.d.ts → types-CU17R4Nr.d.ts} +11 -0
- package/dist/{types-Cns4l8gX.d.mts → types-CxjqmPl-.d.mts} +115 -13
- package/dist/{types-Cns4l8gX.d.ts → types-CxjqmPl-.d.ts} +115 -13
- package/dist/{types-3ObBpsnf.d.mts → types-D37aSQ9c.d.mts} +106 -3
- package/dist/{types-CfBpm3w5.d.mts → types-Djpz-L0w.d.mts} +1 -1
- package/dist/{types-BoxZEYPS.d.ts → types-Dn8tXnei.d.ts} +106 -3
- package/dist/ui/index.d.mts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/verify.d.mts +50 -4
- package/dist/verify.d.ts +50 -4
- package/dist/verify.js +93 -14
- package/dist/verify.js.map +1 -1
- package/dist/verify.mjs +91 -14
- package/dist/verify.mjs.map +1 -1
- package/dist/webhooks.d.mts +16 -3
- package/dist/webhooks.d.ts +16 -3
- package/dist/webhooks.js +24 -13
- package/dist/webhooks.js.map +1 -1
- package/dist/webhooks.mjs +24 -13
- package/dist/webhooks.mjs.map +1 -1
- package/package.json +1 -1
package/dist/edge-core/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/version.ts
|
|
2
|
-
var SDK_VERSION = "5.
|
|
2
|
+
var SDK_VERSION = "5.20.0";
|
|
3
3
|
|
|
4
4
|
// src/http.ts
|
|
5
5
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -507,7 +507,12 @@ function getCacheKey(request, counterpartyId) {
|
|
|
507
507
|
// its start_checkout quote was served the cached quote-leg grant (no
|
|
508
508
|
// settlementOutcome) and never reached the backend. Same F-A1-07 bug class.
|
|
509
509
|
request.commercePhase || "",
|
|
510
|
-
request.checkoutSessionId || ""
|
|
510
|
+
request.checkoutSessionId || "",
|
|
511
|
+
// 5.19.0: a route_config purpose claim is checked server-side against
|
|
512
|
+
// the stored rule for this method + path, so it changes the verdict.
|
|
513
|
+
request.purposeSource || "",
|
|
514
|
+
request.requestMethod || "",
|
|
515
|
+
request.requestPath || ""
|
|
511
516
|
].join("|");
|
|
512
517
|
}
|
|
513
518
|
function getCachedResult(request, counterpartyId) {
|
|
@@ -699,6 +704,9 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
699
704
|
if (requestData.enableRuntimeChallenge)
|
|
700
705
|
body.enableRuntimeChallenge = requestData.enableRuntimeChallenge;
|
|
701
706
|
if (requestData.routePolicy) body.routePolicy = requestData.routePolicy;
|
|
707
|
+
if (config.actingProof?.connectorToken) {
|
|
708
|
+
body.actingProof = { connectorToken: config.actingProof.connectorToken };
|
|
709
|
+
}
|
|
702
710
|
if (requestData.approvalHeldByRoute) body.approvalHeldByRoute = true;
|
|
703
711
|
if (requestData.createSession) body.createSession = requestData.createSession;
|
|
704
712
|
if (requestData.durationRequired) body.durationRequired = requestData.durationRequired;
|
|
@@ -715,6 +723,11 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
715
723
|
if (requestData.buyerEmail) body.buyerEmail = requestData.buyerEmail;
|
|
716
724
|
if (requestData.commerceArtifacts) body.commerceArtifacts = requestData.commerceArtifacts;
|
|
717
725
|
if (requestData.attemptId) body.attemptId = requestData.attemptId;
|
|
726
|
+
if (requestData.purposeSource) body.purposeSource = requestData.purposeSource;
|
|
727
|
+
if (requestData.agentArtifacts) body.agentArtifacts = requestData.agentArtifacts;
|
|
728
|
+
if (requestData.metadata) body.metadata = requestData.metadata;
|
|
729
|
+
if (requestData.requestMethod) body.requestMethod = requestData.requestMethod;
|
|
730
|
+
if (requestData.requestPath) body.requestPath = requestData.requestPath;
|
|
718
731
|
if (requestData.considerationSet) body.considerationSet = requestData.considerationSet;
|
|
719
732
|
body.sdkVersion = SDK_VERSION;
|
|
720
733
|
if (requestData.callerMetadata || requestData.clientIp || requestData.userAgent) {
|
|
@@ -861,22 +874,43 @@ async function verify(config, request, options) {
|
|
|
861
874
|
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access decisions (verified ID + runtime challenge + PDLSS + trust score). To gate access to an endpoint, configure the endpoint's trust_score_requirement server-side."
|
|
862
875
|
);
|
|
863
876
|
}
|
|
864
|
-
const uncacheable = Boolean(request.commerceArtifacts);
|
|
877
|
+
const uncacheable = Boolean(request.commerceArtifacts) || Boolean(mergedConfig.actingProof);
|
|
865
878
|
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache && !uncacheable) {
|
|
866
879
|
const cached = getCachedResult(request, mergedConfig.counterpartyId);
|
|
867
880
|
if (cached) {
|
|
868
881
|
if (mergedConfig.debug) {
|
|
869
882
|
console.log("[VerificationGateway] Returning cached result");
|
|
870
883
|
}
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
884
|
+
return sharedVerdict(cached, request);
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache && !uncacheable) {
|
|
888
|
+
const key = getCacheKey(request, mergedConfig.counterpartyId);
|
|
889
|
+
const pending = inflightVerifies.get(key);
|
|
890
|
+
if (pending) return sharedVerdict(await pending, request);
|
|
891
|
+
const flight = verifyViaApi(mergedConfig, request, urls, uncacheable);
|
|
892
|
+
inflightVerifies.set(key, flight);
|
|
893
|
+
try {
|
|
894
|
+
return await flight;
|
|
895
|
+
} finally {
|
|
896
|
+
inflightVerifies.delete(key);
|
|
878
897
|
}
|
|
879
898
|
}
|
|
899
|
+
return verifyViaApi(mergedConfig, request, urls, uncacheable);
|
|
900
|
+
}
|
|
901
|
+
var inflightVerifies = /* @__PURE__ */ new Map();
|
|
902
|
+
var sharedVerdicts = /* @__PURE__ */ new WeakSet();
|
|
903
|
+
function sharedVerdict(source, request) {
|
|
904
|
+
const hit = { ...source };
|
|
905
|
+
if (request.attemptId) {
|
|
906
|
+
hit.attemptId = request.attemptId;
|
|
907
|
+
} else {
|
|
908
|
+
delete hit.attemptId;
|
|
909
|
+
}
|
|
910
|
+
sharedVerdicts.add(hit);
|
|
911
|
+
return hit;
|
|
912
|
+
}
|
|
913
|
+
async function verifyViaApi(mergedConfig, request, urls, uncacheable) {
|
|
880
914
|
const enrichedRequest = { ...request };
|
|
881
915
|
if (!enrichedRequest.counterpartyUrl && mergedConfig.counterpartyUrl) {
|
|
882
916
|
enrichedRequest.counterpartyUrl = mergedConfig.counterpartyUrl;
|
|
@@ -904,9 +938,18 @@ async function verify(config, request, options) {
|
|
|
904
938
|
if (!apiResponse.access?.allowed) {
|
|
905
939
|
const aggregatedFailures = apiResponse.access?.failures;
|
|
906
940
|
const idVerifiedFromBackend = apiResponse.verificationContext?.idVerified === true && !aggregatedFailures?.some((f) => REJECTED_IDENTITY_DIMENSIONS.has(f.dimension));
|
|
941
|
+
const denyAgent = idVerifiedFromBackend && apiResponse.agent ? {
|
|
942
|
+
astraId: apiResponse.agent.astraId,
|
|
943
|
+
name: apiResponse.agent.name,
|
|
944
|
+
trustScore: apiResponse.agent.trustScore,
|
|
945
|
+
trustLevel: getTrustLevel(apiResponse.agent.trustScore),
|
|
946
|
+
blockchainAnchored: apiResponse.agent.blockchainStatus === "anchored",
|
|
947
|
+
status: apiResponse.agent.agentStatus
|
|
948
|
+
} : void 0;
|
|
907
949
|
const result2 = {
|
|
908
950
|
identityVerified: idVerifiedFromBackend,
|
|
909
951
|
policyAllowed: false,
|
|
952
|
+
...denyAgent && { agent: denyAgent },
|
|
910
953
|
// 3.6.0: the server now emits top-level denialReasons on every deny
|
|
911
954
|
// path — prefer it verbatim; the failure-message reconstruction remains
|
|
912
955
|
// as the fallback for older backends.
|
|
@@ -946,7 +989,9 @@ async function verify(config, request, options) {
|
|
|
946
989
|
fulfilment: apiResponse.fulfilment,
|
|
947
990
|
mandates: apiResponse.mandates,
|
|
948
991
|
kyaToken: apiResponse.kyaToken,
|
|
949
|
-
aep: apiResponse.aep
|
|
992
|
+
aep: apiResponse.aep,
|
|
993
|
+
// 5.20.0 (round 29.1): non-fatal integration warnings (e.g. events_url_missing).
|
|
994
|
+
warnings: apiResponse.warnings
|
|
950
995
|
};
|
|
951
996
|
return result2;
|
|
952
997
|
}
|
|
@@ -1014,7 +1059,9 @@ async function verify(config, request, options) {
|
|
|
1014
1059
|
// 5.15.0: merchant-lane AP2 mandates + KYAPay identity token.
|
|
1015
1060
|
mandates: apiResponse.mandates,
|
|
1016
1061
|
kyaToken: apiResponse.kyaToken,
|
|
1017
|
-
aep: apiResponse.aep
|
|
1062
|
+
aep: apiResponse.aep,
|
|
1063
|
+
// 5.20.0 (round 29.1): non-fatal integration warnings (e.g. events_url_missing).
|
|
1064
|
+
warnings: apiResponse.warnings
|
|
1018
1065
|
};
|
|
1019
1066
|
if (result.recommendation === "deny") {
|
|
1020
1067
|
result.policyAllowed = false;
|
|
@@ -1040,8 +1087,18 @@ async function verify(config, request, options) {
|
|
|
1040
1087
|
cacheResult(request, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
|
|
1041
1088
|
}
|
|
1042
1089
|
}
|
|
1090
|
+
notifyVerificationListeners(request, result);
|
|
1043
1091
|
return result;
|
|
1044
1092
|
}
|
|
1093
|
+
var verificationListeners = /* @__PURE__ */ new Set();
|
|
1094
|
+
function notifyVerificationListeners(request, result) {
|
|
1095
|
+
for (const listener of verificationListeners) {
|
|
1096
|
+
try {
|
|
1097
|
+
listener(result, request);
|
|
1098
|
+
} catch {
|
|
1099
|
+
}
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1045
1102
|
|
|
1046
1103
|
// src/edge-core/request.ts
|
|
1047
1104
|
function headerValue(req, name) {
|