@astrasyncai/verification-gateway 2.4.8 → 2.4.10
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/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 +81 -31
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +81 -31
- 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 +64 -26
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +64 -26
- 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 +89 -32
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +89 -32
- 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 +65 -25
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +65 -25
- 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 +60 -25
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +60 -25
- 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 +60 -25
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +60 -25
- package/dist/cursor/extension.mjs.map +1 -1
- package/dist/{express-DvVjR2H4.d.mts → express-4WStX3PV.d.mts} +1 -1
- package/dist/{express-714gJbaW.d.ts → express-C1ePFB7n.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 +60 -25
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +60 -25
- 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-DYFS9QVb.d.mts → index-ChPX4WHl.d.mts} +1 -1
- package/dist/{index-DO0oG8ED.d.ts → index-Cjm-zBeZ.d.ts} +1 -1
- package/dist/{index-2WAlxs2G.d.ts → index-CzJMCgEy.d.ts} +1 -1
- package/dist/{index-P9t7M_dJ.d.mts → index-D8IEntil.d.mts} +1 -1
- package/dist/index.d.mts +22 -11
- package/dist/index.d.ts +22 -11
- package/dist/index.js +133 -42
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +132 -42
- 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-CZ-MwSOT.d.ts → nextjs-BIORS__0.d.ts} +1 -1
- package/dist/{nextjs-BCoH7EqF.d.mts → nextjs-CjzHdaXA.d.mts} +1 -1
- package/dist/registration/index.d.mts +76 -1
- package/dist/registration/index.d.ts +76 -1
- package/dist/registration/index.js +27 -2
- package/dist/registration/index.js.map +1 -1
- package/dist/registration/index.mjs +25 -1
- package/dist/registration/index.mjs.map +1 -1
- package/dist/{sdk-wwhFDXWX.d.mts → sdk-Chhz-FcT.d.mts} +9 -4
- package/dist/{sdk-kiA49vqJ.d.ts → sdk-CqTEQAc6.d.ts} +9 -4
- package/dist/transport/index.d.mts +2 -2
- package/dist/transport/index.d.ts +2 -2
- package/dist/{types-DOAb89cm.d.mts → types-DNK2BgIf.d.mts} +1 -1
- package/dist/{types-aucqzfUa.d.ts → types-DoWIuzfj.d.ts} +1 -1
- package/dist/{types-BwDmjIdr.d.mts → types-L15pYd2c.d.mts} +21 -4
- package/dist/{types-BwDmjIdr.d.ts → types-L15pYd2c.d.ts} +21 -4
- package/dist/ui/index.d.mts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +1 -1
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/index.mjs +1 -1
- package/dist/ui/index.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -3293,7 +3293,7 @@ function getTrustLevel(score) {
|
|
|
3293
3293
|
}
|
|
3294
3294
|
|
|
3295
3295
|
// src/version.ts
|
|
3296
|
-
var SDK_VERSION = "2.4.
|
|
3296
|
+
var SDK_VERSION = "2.4.10";
|
|
3297
3297
|
|
|
3298
3298
|
// src/verify.ts
|
|
3299
3299
|
var DEFAULT_CONFIG = {
|
|
@@ -3304,8 +3304,10 @@ var DEFAULT_CONFIG = {
|
|
|
3304
3304
|
// through (`hasMinimumAccess('guidance', 'guidance') === true`).
|
|
3305
3305
|
defaultAccessLevel: "none",
|
|
3306
3306
|
// minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
|
|
3307
|
-
|
|
3308
|
-
//
|
|
3307
|
+
// Round-18.5 F4: cacheTtl deliberately unset. When undefined, cacheResult
|
|
3308
|
+
// applies the split default (60s autonomous / 300s step-up). When the
|
|
3309
|
+
// caller sets cacheTtl explicitly, that value is honoured uniformly.
|
|
3310
|
+
// Set cacheTtl: 0 to disable caching entirely.
|
|
3309
3311
|
debug: false
|
|
3310
3312
|
};
|
|
3311
3313
|
var initCheckPerformed = false;
|
|
@@ -3332,11 +3334,28 @@ async function performInitCheck(apiBaseUrl, debug) {
|
|
|
3332
3334
|
}
|
|
3333
3335
|
}
|
|
3334
3336
|
var verificationCache = /* @__PURE__ */ new Map();
|
|
3335
|
-
function getCacheKey(
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3337
|
+
function getCacheKey(request) {
|
|
3338
|
+
const c = request.credentials;
|
|
3339
|
+
return [
|
|
3340
|
+
c.astraId || "",
|
|
3341
|
+
c.apiKey || "",
|
|
3342
|
+
c.jwt || "",
|
|
3343
|
+
request.purpose || "",
|
|
3344
|
+
request.action || "",
|
|
3345
|
+
request.resourceType || "",
|
|
3346
|
+
request.resource || "",
|
|
3347
|
+
request.jurisdiction || "",
|
|
3348
|
+
request.transactionValue ?? "",
|
|
3349
|
+
request.currency || "",
|
|
3350
|
+
request.counterpartyUrl || "",
|
|
3351
|
+
request.counterpartyType || "",
|
|
3352
|
+
request.isSubAgentRequest ? "1" : "0",
|
|
3353
|
+
request.parentAgentId || "",
|
|
3354
|
+
request.subAgentDepth ?? ""
|
|
3355
|
+
].join("|");
|
|
3356
|
+
}
|
|
3357
|
+
function getCachedResult(request) {
|
|
3358
|
+
const key = getCacheKey(request);
|
|
3340
3359
|
const cached = verificationCache.get(key);
|
|
3341
3360
|
if (cached && cached.expiresAt > Date.now()) {
|
|
3342
3361
|
return cached.result;
|
|
@@ -3346,8 +3365,11 @@ function getCachedResult(credentials) {
|
|
|
3346
3365
|
}
|
|
3347
3366
|
return null;
|
|
3348
3367
|
}
|
|
3349
|
-
|
|
3350
|
-
|
|
3368
|
+
var DEFAULT_AUTONOMOUS_TTL_SECONDS = 60;
|
|
3369
|
+
var DEFAULT_STEP_UP_TTL_SECONDS = 300;
|
|
3370
|
+
function cacheResult(request, result, configuredTtl) {
|
|
3371
|
+
const ttlSeconds = configuredTtl && configuredTtl > 0 ? configuredTtl : result.requiresStepUp ? DEFAULT_STEP_UP_TTL_SECONDS : DEFAULT_AUTONOMOUS_TTL_SECONDS;
|
|
3372
|
+
const key = getCacheKey(request);
|
|
3351
3373
|
verificationCache.set(key, {
|
|
3352
3374
|
result,
|
|
3353
3375
|
expiresAt: Date.now() + ttlSeconds * 1e3
|
|
@@ -3376,12 +3398,17 @@ function createGuidanceResponse(config, reason, options = {}) {
|
|
|
3376
3398
|
]
|
|
3377
3399
|
};
|
|
3378
3400
|
return {
|
|
3379
|
-
|
|
3401
|
+
// Round-18 G4: createGuidanceResponse fires for unverified-agent path or
|
|
3402
|
+
// API-error fallback. Identity is not verified (no agent resolved);
|
|
3403
|
+
// policy is not evaluated (we never reached the gate).
|
|
3404
|
+
identityVerified: false,
|
|
3405
|
+
policyAllowed: false,
|
|
3380
3406
|
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
3381
|
-
// Adapters additionally short-circuit on
|
|
3382
|
-
// the gate check, but the access level still has
|
|
3383
|
-
// data layer so downstream consumers (SDK adapters
|
|
3384
|
-
// custom integrations) inherit the correct
|
|
3407
|
+
// Adapters additionally short-circuit on `!identityVerified ||
|
|
3408
|
+
// !policyAllowed` before the gate check, but the access level still has
|
|
3409
|
+
// to be honest at the data layer so downstream consumers (SDK adapters
|
|
3410
|
+
// in other languages, custom integrations) inherit the correct
|
|
3411
|
+
// semantics.
|
|
3385
3412
|
accessLevel: "none",
|
|
3386
3413
|
guidance,
|
|
3387
3414
|
denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
|
|
@@ -3497,8 +3524,8 @@ async function verify(config, request) {
|
|
|
3497
3524
|
"[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."
|
|
3498
3525
|
);
|
|
3499
3526
|
}
|
|
3500
|
-
if (mergedConfig.cacheTtl
|
|
3501
|
-
const cached = getCachedResult(request
|
|
3527
|
+
if (mergedConfig.cacheTtl !== 0) {
|
|
3528
|
+
const cached = getCachedResult(request);
|
|
3502
3529
|
if (cached) {
|
|
3503
3530
|
if (mergedConfig.debug) {
|
|
3504
3531
|
console.log("[VerificationGateway] Returning cached result");
|
|
@@ -3525,15 +3552,17 @@ async function verify(config, request) {
|
|
|
3525
3552
|
}
|
|
3526
3553
|
if (!apiResponse.access?.allowed) {
|
|
3527
3554
|
const aggregatedFailures = apiResponse.access?.failures;
|
|
3555
|
+
const idVerifiedFromBackend = apiResponse.verificationContext?.idVerified === true;
|
|
3528
3556
|
const result2 = {
|
|
3529
|
-
|
|
3557
|
+
identityVerified: idVerifiedFromBackend,
|
|
3558
|
+
policyAllowed: false,
|
|
3530
3559
|
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
3531
3560
|
// Pre-rename this hardcoded `'guidance'`, which conflated with the
|
|
3532
3561
|
// colocated `guidance: {...}` help-payload object below and let
|
|
3533
3562
|
// denied requests pass any route gated at `'guidance'` because
|
|
3534
3563
|
// `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
|
|
3535
|
-
// ALSO short-circuit on
|
|
3536
|
-
// belt-and-braces.
|
|
3564
|
+
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
3565
|
+
// the gate check — belt-and-braces.
|
|
3537
3566
|
accessLevel: "none",
|
|
3538
3567
|
denialReasons: aggregatedFailures && aggregatedFailures.length > 0 ? aggregatedFailures.map((f) => f.message) : apiResponse.access?.reason ? [apiResponse.access.reason] : ["Access denied"],
|
|
3539
3568
|
failures: aggregatedFailures,
|
|
@@ -3577,7 +3606,13 @@ async function verify(config, request) {
|
|
|
3577
3606
|
const verificationContext = apiResponse.verificationContext;
|
|
3578
3607
|
const accessLevel = apiResponse.access?.accessLevel ?? "standard";
|
|
3579
3608
|
const result = {
|
|
3580
|
-
|
|
3609
|
+
// Round-18 G4: backend allowed access. Identity is verified (we resolved
|
|
3610
|
+
// the caller to an agent) and policy passed all gates. Read idVerified
|
|
3611
|
+
// from verificationContext for symmetry with the deny branch; default true
|
|
3612
|
+
// on success path since `access.allowed === true` implies identity was
|
|
3613
|
+
// resolvable (anonymous-allow paths flow through createGuidanceResponse).
|
|
3614
|
+
identityVerified: apiResponse.verificationContext?.idVerified !== false,
|
|
3615
|
+
policyAllowed: true,
|
|
3581
3616
|
accessLevel,
|
|
3582
3617
|
agent,
|
|
3583
3618
|
developer,
|
|
@@ -3600,7 +3635,7 @@ async function verify(config, request) {
|
|
|
3600
3635
|
warningHeader: apiResponse.warningHeader
|
|
3601
3636
|
};
|
|
3602
3637
|
if (result.recommendation === "deny") {
|
|
3603
|
-
result.
|
|
3638
|
+
result.policyAllowed = false;
|
|
3604
3639
|
result.accessLevel = "none";
|
|
3605
3640
|
result.denialReasons = result.recommendationReasons || [
|
|
3606
3641
|
"Access denied by AstraSync recommendation"
|
|
@@ -3619,8 +3654,8 @@ async function verify(config, request) {
|
|
|
3619
3654
|
}
|
|
3620
3655
|
result.denialReasons = result.recommendationReasons || ["Step-up verification required"];
|
|
3621
3656
|
}
|
|
3622
|
-
if (mergedConfig.cacheTtl
|
|
3623
|
-
cacheResult(request
|
|
3657
|
+
if (mergedConfig.cacheTtl !== 0 && result.recommendation !== "deny") {
|
|
3658
|
+
cacheResult(request, result, mergedConfig.cacheTtl);
|
|
3624
3659
|
}
|
|
3625
3660
|
return result;
|
|
3626
3661
|
}
|
|
@@ -3695,7 +3730,7 @@ function toVerificationRequest(context, astraId) {
|
|
|
3695
3730
|
};
|
|
3696
3731
|
}
|
|
3697
3732
|
function toDecision(result) {
|
|
3698
|
-
if (result.
|
|
3733
|
+
if (result.identityVerified && result.policyAllowed) {
|
|
3699
3734
|
return {
|
|
3700
3735
|
recommendation: "ALLOW",
|
|
3701
3736
|
reason: `Verified with access level: ${result.accessLevel}`,
|