@astrasyncai/verification-gateway 3.4.0 → 3.6.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 +102 -0
- package/dist/adapter-interface/interface.d.mts +2 -2
- package/dist/adapter-interface/interface.d.ts +2 -2
- package/dist/adapters/express.d.mts +2 -2
- package/dist/adapters/express.d.ts +2 -2
- package/dist/adapters/express.js +113 -20
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +113 -20
- 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 +96 -20
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +96 -20
- package/dist/adapters/mcp.mjs.map +1 -1
- package/dist/adapters/nextjs.d.mts +2 -2
- package/dist/adapters/nextjs.d.ts +2 -2
- package/dist/adapters/nextjs.js +101 -20
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +101 -20
- package/dist/adapters/nextjs.mjs.map +1 -1
- package/dist/adapters/sdk.d.mts +2 -2
- package/dist/adapters/sdk.d.ts +2 -2
- package/dist/adapters/sdk.js +19 -16
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +19 -16
- package/dist/adapters/sdk.mjs.map +1 -1
- package/dist/agent/index.d.mts +2 -2
- package/dist/agent/index.d.ts +2 -2
- package/dist/browser/background.js +22 -16
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +22 -16
- package/dist/browser/background.mjs.map +1 -1
- package/dist/browser/browser-adapter.d.mts +2 -2
- package/dist/browser/browser-adapter.d.ts +2 -2
- package/dist/cli/index.d.mts +2 -2
- package/dist/cli/index.d.ts +2 -2
- package/dist/cursor/cursor-adapter.d.mts +2 -2
- package/dist/cursor/cursor-adapter.d.ts +2 -2
- package/dist/cursor/extension.d.mts +2 -2
- package/dist/cursor/extension.d.ts +2 -2
- package/dist/cursor/extension.js +22 -16
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +22 -16
- package/dist/cursor/extension.mjs.map +1 -1
- package/dist/{express-CeFvNWDD.d.mts → express-BnMO-H3y.d.mts} +1 -1
- package/dist/{express-RIh05wW2.d.ts → express-DQhDzNAt.d.ts} +1 -1
- package/dist/gateway/gateway.d.mts +2 -2
- package/dist/gateway/gateway.d.ts +2 -2
- package/dist/gateway/gateway.js +22 -16
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +22 -16
- package/dist/gateway/gateway.mjs.map +1 -1
- package/dist/git-trigger/git-hooks.d.mts +2 -2
- package/dist/git-trigger/git-hooks.d.ts +2 -2
- package/dist/{index-DgVBEiwI.d.mts → index-BT_aRn-I.d.mts} +1 -1
- package/dist/{index-BYu1FKMy.d.ts → index-D8-dvUFA.d.ts} +1 -1
- package/dist/{index-Bw4FeHMY.d.mts → index-WHKq2v17.d.mts} +5 -1
- package/dist/{index-C-K0WCrk.d.ts → index-rftma0ln.d.ts} +5 -1
- package/dist/index.d.mts +55 -9
- package/dist/index.d.ts +55 -9
- package/dist/index.js +184 -34
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +182 -34
- 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/{nextjs-xciaMpsZ.d.mts → nextjs-DFKYhxe6.d.mts} +1 -1
- package/dist/{nextjs--xR9zbSJ.d.ts → nextjs-DPj7ZNlq.d.ts} +1 -1
- package/dist/{sdk-FP7xT9F8.d.ts → sdk-CAcHgB5x.d.ts} +1 -1
- package/dist/{sdk-CJYCLMI0.d.mts → sdk-Cy3wAmDt.d.mts} +1 -1
- package/dist/transport/index.d.mts +2 -2
- package/dist/transport/index.d.ts +2 -2
- package/dist/transport/index.js +22 -4
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/index.mjs +22 -4
- package/dist/transport/index.mjs.map +1 -1
- package/dist/{types-Cj92yKeA.d.mts → types-B-ubjHER.d.mts} +1 -1
- package/dist/{types-DOeL-dIw.d.ts → types-Bgn5gxHQ.d.ts} +1 -1
- package/dist/{types-Cwrvo30g.d.mts → types-CKe8O0lR.d.mts} +65 -3
- package/dist/{types-Cwrvo30g.d.ts → types-CKe8O0lR.d.ts} +65 -3
- package/dist/ui/index.d.mts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/package.json +1 -1
package/dist/gateway/gateway.mjs
CHANGED
|
@@ -3503,7 +3503,7 @@ function getTrustLevel(score) {
|
|
|
3503
3503
|
}
|
|
3504
3504
|
|
|
3505
3505
|
// src/version.ts
|
|
3506
|
-
var SDK_VERSION = "3.
|
|
3506
|
+
var SDK_VERSION = "3.6.0";
|
|
3507
3507
|
|
|
3508
3508
|
// src/well-known.ts
|
|
3509
3509
|
var CACHE_TTL_MS = 60 * 60 * 1e3;
|
|
@@ -3521,10 +3521,10 @@ var DEFAULT_CONFIG = {
|
|
|
3521
3521
|
// through (`hasMinimumAccess('guidance', 'guidance') === true`).
|
|
3522
3522
|
defaultAccessLevel: "none",
|
|
3523
3523
|
// minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
|
|
3524
|
-
//
|
|
3525
|
-
//
|
|
3526
|
-
//
|
|
3527
|
-
// Set cacheTtl: 0 to disable caching entirely.
|
|
3524
|
+
// cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
|
|
3525
|
+
// default; the caller's explicit value is honoured for cacheable results.
|
|
3526
|
+
// Denials and step-up escalations are NEVER cached (3.6.0) regardless of
|
|
3527
|
+
// cacheTtl. Set cacheTtl: 0 to disable caching entirely.
|
|
3528
3528
|
debug: false
|
|
3529
3529
|
};
|
|
3530
3530
|
var initCheckPerformed = false;
|
|
@@ -3611,10 +3611,9 @@ function getCachedResult(request, counterpartyId) {
|
|
|
3611
3611
|
}
|
|
3612
3612
|
return null;
|
|
3613
3613
|
}
|
|
3614
|
-
var
|
|
3615
|
-
var DEFAULT_STEP_UP_TTL_SECONDS = 300;
|
|
3614
|
+
var DEFAULT_CACHE_TTL_SECONDS = 60;
|
|
3616
3615
|
function cacheResult(request, result, configuredTtl, counterpartyId) {
|
|
3617
|
-
const ttlSeconds = configuredTtl && configuredTtl > 0 ? configuredTtl :
|
|
3616
|
+
const ttlSeconds = configuredTtl && configuredTtl > 0 ? configuredTtl : DEFAULT_CACHE_TTL_SECONDS;
|
|
3618
3617
|
const key = getCacheKey(request, counterpartyId);
|
|
3619
3618
|
verificationCache.set(key, {
|
|
3620
3619
|
result,
|
|
@@ -3756,7 +3755,7 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
3756
3755
|
};
|
|
3757
3756
|
}
|
|
3758
3757
|
}
|
|
3759
|
-
async function verify(config, request) {
|
|
3758
|
+
async function verify(config, request, options) {
|
|
3760
3759
|
const mergedConfig = { ...DEFAULT_CONFIG, ...config };
|
|
3761
3760
|
const urls = mergedConfig.apiBaseUrl ? getCachedWellKnownUrls(mergedConfig.apiBaseUrl) : void 0;
|
|
3762
3761
|
if (!initCheckPerformed && !mergedConfig.disableInitChecks && mergedConfig.apiBaseUrl) {
|
|
@@ -3772,7 +3771,7 @@ async function verify(config, request) {
|
|
|
3772
3771
|
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access-level decisions (the SDK reads access.accessLevel from the verify-access response). To gate access to an endpoint, configure the endpoint's trust_score_requirement server-side."
|
|
3773
3772
|
);
|
|
3774
3773
|
}
|
|
3775
|
-
if (mergedConfig.cacheTtl !== 0) {
|
|
3774
|
+
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
|
|
3776
3775
|
const cached = getCachedResult(request, mergedConfig.counterpartyId);
|
|
3777
3776
|
if (cached) {
|
|
3778
3777
|
if (mergedConfig.debug) {
|
|
@@ -3792,6 +3791,8 @@ async function verify(config, request) {
|
|
|
3792
3791
|
console.log("[VerificationGateway] Calling verify-access API");
|
|
3793
3792
|
}
|
|
3794
3793
|
const apiResponse = await callVerifyAccessAPI(mergedConfig, enrichedRequest);
|
|
3794
|
+
const rawServerDenialReasons = apiResponse.denialReasons;
|
|
3795
|
+
const serverDenialReasons = Array.isArray(rawServerDenialReasons) && rawServerDenialReasons.length > 0 ? rawServerDenialReasons : void 0;
|
|
3795
3796
|
if (!apiResponse.success) {
|
|
3796
3797
|
return createGuidanceResponse(mergedConfig, apiResponse.error, {
|
|
3797
3798
|
source: "api_error",
|
|
@@ -3813,7 +3814,10 @@ async function verify(config, request) {
|
|
|
3813
3814
|
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
3814
3815
|
// the gate check — belt-and-braces.
|
|
3815
3816
|
accessLevel: "none",
|
|
3816
|
-
|
|
3817
|
+
// 3.6.0: the server now emits top-level denialReasons on every deny
|
|
3818
|
+
// path — prefer it verbatim; the failure-message reconstruction remains
|
|
3819
|
+
// as the fallback for older backends.
|
|
3820
|
+
denialReasons: serverDenialReasons ?? (aggregatedFailures && aggregatedFailures.length > 0 ? aggregatedFailures.map((f) => f.message) : apiResponse.access?.reason ? [apiResponse.access.reason] : ["Access denied"]),
|
|
3817
3821
|
failures: aggregatedFailures,
|
|
3818
3822
|
requiresStepUp: apiResponse.access?.requiresStepUp,
|
|
3819
3823
|
requiresApproval: apiResponse.access?.requiresApproval,
|
|
@@ -3890,9 +3894,7 @@ async function verify(config, request) {
|
|
|
3890
3894
|
if (result.recommendation === "deny") {
|
|
3891
3895
|
result.policyAllowed = false;
|
|
3892
3896
|
result.accessLevel = "none";
|
|
3893
|
-
result.denialReasons = result.recommendationReasons
|
|
3894
|
-
"Access denied by AstraSync recommendation"
|
|
3895
|
-
];
|
|
3897
|
+
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
|
|
3896
3898
|
result.guidance = result.runtimeChallenge ? {
|
|
3897
3899
|
message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
|
|
3898
3900
|
registrationUrl: urls?.registrationUrl ?? "",
|
|
@@ -3904,14 +3906,18 @@ async function verify(config, request) {
|
|
|
3904
3906
|
};
|
|
3905
3907
|
} else if (result.recommendation === "step_up_required") {
|
|
3906
3908
|
result.requiresStepUp = true;
|
|
3907
|
-
result.denialReasons = result.recommendationReasons
|
|
3909
|
+
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Step-up verification required"];
|
|
3908
3910
|
}
|
|
3909
|
-
|
|
3911
|
+
const escalates = result.requiresStepUp === true || result.requiresApproval === true || result.recommendation === "step_up_required";
|
|
3912
|
+
if (mergedConfig.cacheTtl !== 0 && result.recommendation !== "deny" && !escalates) {
|
|
3910
3913
|
cacheResult(request, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
|
|
3911
3914
|
}
|
|
3912
3915
|
return result;
|
|
3913
3916
|
}
|
|
3914
3917
|
|
|
3918
|
+
// src/adapters/stepup-poll.ts
|
|
3919
|
+
var FALLBACK_MAX_WAIT_MS = 5 * 60 * 1e3;
|
|
3920
|
+
|
|
3915
3921
|
// src/adapters/express.ts
|
|
3916
3922
|
var DEFAULT_ROUTES_REFRESH_MS = 5 * 60 * 1e3;
|
|
3917
3923
|
|