@astrasyncai/verification-gateway 2.4.8 → 2.4.9
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 +29 -15
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +29 -15
- 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 +30 -14
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +30 -14
- 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 +37 -16
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +37 -16
- 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 +31 -13
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +31 -13
- 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 +25 -12
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +25 -12
- 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 +25 -12
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +25 -12
- 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 +25 -12
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +25 -12
- 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 +80 -25
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +79 -25
- 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
package/dist/adapters/mcp.js
CHANGED
|
@@ -51,7 +51,7 @@ function hasMinimumAccess(actual, required) {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
// src/version.ts
|
|
54
|
-
var SDK_VERSION = "2.4.
|
|
54
|
+
var SDK_VERSION = "2.4.9";
|
|
55
55
|
|
|
56
56
|
// src/verify.ts
|
|
57
57
|
var DEFAULT_CONFIG = {
|
|
@@ -162,12 +162,17 @@ function createGuidanceResponse(config, reason, options = {}) {
|
|
|
162
162
|
]
|
|
163
163
|
};
|
|
164
164
|
return {
|
|
165
|
-
|
|
165
|
+
// Round-18 G4: createGuidanceResponse fires for unverified-agent path or
|
|
166
|
+
// API-error fallback. Identity is not verified (no agent resolved);
|
|
167
|
+
// policy is not evaluated (we never reached the gate).
|
|
168
|
+
identityVerified: false,
|
|
169
|
+
policyAllowed: false,
|
|
166
170
|
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
167
|
-
// Adapters additionally short-circuit on
|
|
168
|
-
// the gate check, but the access level still has
|
|
169
|
-
// data layer so downstream consumers (SDK adapters
|
|
170
|
-
// custom integrations) inherit the correct
|
|
171
|
+
// Adapters additionally short-circuit on `!identityVerified ||
|
|
172
|
+
// !policyAllowed` before the gate check, but the access level still has
|
|
173
|
+
// to be honest at the data layer so downstream consumers (SDK adapters
|
|
174
|
+
// in other languages, custom integrations) inherit the correct
|
|
175
|
+
// semantics.
|
|
171
176
|
accessLevel: "none",
|
|
172
177
|
guidance,
|
|
173
178
|
denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
|
|
@@ -311,15 +316,17 @@ async function verify(config, request) {
|
|
|
311
316
|
}
|
|
312
317
|
if (!apiResponse.access?.allowed) {
|
|
313
318
|
const aggregatedFailures = apiResponse.access?.failures;
|
|
319
|
+
const idVerifiedFromBackend = apiResponse.verificationContext?.idVerified === true;
|
|
314
320
|
const result2 = {
|
|
315
|
-
|
|
321
|
+
identityVerified: idVerifiedFromBackend,
|
|
322
|
+
policyAllowed: false,
|
|
316
323
|
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
317
324
|
// Pre-rename this hardcoded `'guidance'`, which conflated with the
|
|
318
325
|
// colocated `guidance: {...}` help-payload object below and let
|
|
319
326
|
// denied requests pass any route gated at `'guidance'` because
|
|
320
327
|
// `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
|
|
321
|
-
// ALSO short-circuit on
|
|
322
|
-
// belt-and-braces.
|
|
328
|
+
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
329
|
+
// the gate check — belt-and-braces.
|
|
323
330
|
accessLevel: "none",
|
|
324
331
|
denialReasons: aggregatedFailures && aggregatedFailures.length > 0 ? aggregatedFailures.map((f) => f.message) : apiResponse.access?.reason ? [apiResponse.access.reason] : ["Access denied"],
|
|
325
332
|
failures: aggregatedFailures,
|
|
@@ -363,7 +370,13 @@ async function verify(config, request) {
|
|
|
363
370
|
const verificationContext = apiResponse.verificationContext;
|
|
364
371
|
const accessLevel = apiResponse.access?.accessLevel ?? "standard";
|
|
365
372
|
const result = {
|
|
366
|
-
|
|
373
|
+
// Round-18 G4: backend allowed access. Identity is verified (we resolved
|
|
374
|
+
// the caller to an agent) and policy passed all gates. Read idVerified
|
|
375
|
+
// from verificationContext for symmetry with the deny branch; default true
|
|
376
|
+
// on success path since `access.allowed === true` implies identity was
|
|
377
|
+
// resolvable (anonymous-allow paths flow through createGuidanceResponse).
|
|
378
|
+
identityVerified: apiResponse.verificationContext?.idVerified !== false,
|
|
379
|
+
policyAllowed: true,
|
|
367
380
|
accessLevel,
|
|
368
381
|
agent,
|
|
369
382
|
developer,
|
|
@@ -386,7 +399,7 @@ async function verify(config, request) {
|
|
|
386
399
|
warningHeader: apiResponse.warningHeader
|
|
387
400
|
};
|
|
388
401
|
if (result.recommendation === "deny") {
|
|
389
|
-
result.
|
|
402
|
+
result.policyAllowed = false;
|
|
390
403
|
result.accessLevel = "none";
|
|
391
404
|
result.denialReasons = result.recommendationReasons || [
|
|
392
405
|
"Access denied by AstraSync recommendation"
|
|
@@ -576,13 +589,16 @@ function readSingleHeader(value) {
|
|
|
576
589
|
}
|
|
577
590
|
function defaultMcpDenied(result, req, res) {
|
|
578
591
|
const id = req.body?.id ?? null;
|
|
579
|
-
const status = result.
|
|
592
|
+
const status = !result.identityVerified ? 401 : 403;
|
|
580
593
|
res.setHeader("X-Astra-Gateway-Mode", "enforced");
|
|
581
594
|
res.status(status).json({
|
|
582
595
|
jsonrpc: "2.0",
|
|
583
596
|
id,
|
|
584
597
|
error: {
|
|
585
|
-
|
|
598
|
+
// JSON-RPC error codes:
|
|
599
|
+
// -32000 → unauthorized (no identity resolved)
|
|
600
|
+
// -32001 → insufficient access (identity OK, policy denied)
|
|
601
|
+
code: !result.identityVerified ? -32e3 : -32001,
|
|
586
602
|
message: result.denialReasons?.[0] ?? "Access denied",
|
|
587
603
|
data: {
|
|
588
604
|
accessLevel: result.accessLevel,
|
|
@@ -716,7 +732,7 @@ function createMcpMiddleware(options) {
|
|
|
716
732
|
req.agentVerification = result;
|
|
717
733
|
const sessionId = result.sessionId;
|
|
718
734
|
const correlationId = result.correlationId;
|
|
719
|
-
if (!result.
|
|
735
|
+
if (!result.identityVerified || !result.policyAllowed) {
|
|
720
736
|
if (shouldRecordDecisions && sessionId) {
|
|
721
737
|
recordDecision(config, sessionId, "denied", result.denialReasons?.[0]).catch(() => {
|
|
722
738
|
});
|