@astrasyncai/verification-gateway 3.5.0 → 3.7.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 +16 -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 +96 -20
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +96 -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/bin/astrasync-claude-hook.js +4791 -0
- package/dist/bin/astrasync-guard.js +5990 -0
- package/dist/bin/astrasync.js +6840 -330
- 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/claude-code/claude-code-adapter.d.mts +96 -0
- package/dist/claude-code/claude-code-adapter.d.ts +96 -0
- package/dist/claude-code/claude-code-adapter.js +277 -0
- package/dist/claude-code/claude-code-adapter.js.map +1 -0
- package/dist/claude-code/claude-code-adapter.mjs +249 -0
- package/dist/claude-code/claude-code-adapter.mjs.map +1 -0
- 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-BH5ADAyb.d.mts → express-BnMO-H3y.d.mts} +1 -1
- package/dist/{express-jUzLIoep.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-aZHAWujT.d.mts → index-BT_aRn-I.d.mts} +1 -1
- package/dist/{index-DlCnmpJH.d.ts → index-D8-dvUFA.d.ts} +1 -1
- package/dist/{index-BR2nmxBU.d.mts → index-WHKq2v17.d.mts} +1 -1
- package/dist/{index-DEixUCu0.d.ts → index-rftma0ln.d.ts} +1 -1
- package/dist/index.d.mts +55 -9
- package/dist/index.d.ts +55 -9
- package/dist/index.js +145 -30
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +143 -30
- 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-LTeoPqMH.d.mts → nextjs-DFKYhxe6.d.mts} +1 -1
- package/dist/{nextjs-DfXOd0Au.d.ts → nextjs-DPj7ZNlq.d.ts} +1 -1
- package/dist/{sdk-LmvyDVpL.d.ts → sdk-CAcHgB5x.d.ts} +1 -1
- package/dist/{sdk-DKhwVL9X.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/{types-C8HyQEaz.d.mts → types-B-ubjHER.d.mts} +1 -1
- package/dist/{types-xofemo0G.d.ts → types-Bgn5gxHQ.d.ts} +1 -1
- package/dist/{types-DrDIouvO.d.mts → types-CKe8O0lR.d.mts} +41 -1
- package/dist/{types-DrDIouvO.d.ts → types-CKe8O0lR.d.ts} +41 -1
- package/dist/ui/index.d.mts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/package.json +9 -2
|
@@ -3767,7 +3767,7 @@ function getTrustLevel(score) {
|
|
|
3767
3767
|
}
|
|
3768
3768
|
|
|
3769
3769
|
// src/version.ts
|
|
3770
|
-
var SDK_VERSION = "3.
|
|
3770
|
+
var SDK_VERSION = "3.7.0";
|
|
3771
3771
|
|
|
3772
3772
|
// src/well-known.ts
|
|
3773
3773
|
var CACHE_TTL_MS = 60 * 60 * 1e3;
|
|
@@ -3785,10 +3785,10 @@ var DEFAULT_CONFIG = {
|
|
|
3785
3785
|
// through (`hasMinimumAccess('guidance', 'guidance') === true`).
|
|
3786
3786
|
defaultAccessLevel: "none",
|
|
3787
3787
|
// minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
|
|
3788
|
-
//
|
|
3789
|
-
//
|
|
3790
|
-
//
|
|
3791
|
-
// Set cacheTtl: 0 to disable caching entirely.
|
|
3788
|
+
// cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
|
|
3789
|
+
// default; the caller's explicit value is honoured for cacheable results.
|
|
3790
|
+
// Denials and step-up escalations are NEVER cached (3.6.0) regardless of
|
|
3791
|
+
// cacheTtl. Set cacheTtl: 0 to disable caching entirely.
|
|
3792
3792
|
debug: false
|
|
3793
3793
|
};
|
|
3794
3794
|
var initCheckPerformed = false;
|
|
@@ -3875,10 +3875,9 @@ function getCachedResult(request, counterpartyId) {
|
|
|
3875
3875
|
}
|
|
3876
3876
|
return null;
|
|
3877
3877
|
}
|
|
3878
|
-
var
|
|
3879
|
-
var DEFAULT_STEP_UP_TTL_SECONDS = 300;
|
|
3878
|
+
var DEFAULT_CACHE_TTL_SECONDS = 60;
|
|
3880
3879
|
function cacheResult(request, result, configuredTtl, counterpartyId) {
|
|
3881
|
-
const ttlSeconds = configuredTtl && configuredTtl > 0 ? configuredTtl :
|
|
3880
|
+
const ttlSeconds = configuredTtl && configuredTtl > 0 ? configuredTtl : DEFAULT_CACHE_TTL_SECONDS;
|
|
3882
3881
|
const key = getCacheKey(request, counterpartyId);
|
|
3883
3882
|
verificationCache.set(key, {
|
|
3884
3883
|
result,
|
|
@@ -4020,7 +4019,7 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
4020
4019
|
};
|
|
4021
4020
|
}
|
|
4022
4021
|
}
|
|
4023
|
-
async function verify(config, request) {
|
|
4022
|
+
async function verify(config, request, options) {
|
|
4024
4023
|
const mergedConfig = { ...DEFAULT_CONFIG, ...config };
|
|
4025
4024
|
const urls = mergedConfig.apiBaseUrl ? getCachedWellKnownUrls(mergedConfig.apiBaseUrl) : void 0;
|
|
4026
4025
|
if (!initCheckPerformed && !mergedConfig.disableInitChecks && mergedConfig.apiBaseUrl) {
|
|
@@ -4036,7 +4035,7 @@ async function verify(config, request) {
|
|
|
4036
4035
|
"[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."
|
|
4037
4036
|
);
|
|
4038
4037
|
}
|
|
4039
|
-
if (mergedConfig.cacheTtl !== 0) {
|
|
4038
|
+
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
|
|
4040
4039
|
const cached = getCachedResult(request, mergedConfig.counterpartyId);
|
|
4041
4040
|
if (cached) {
|
|
4042
4041
|
if (mergedConfig.debug) {
|
|
@@ -4056,6 +4055,8 @@ async function verify(config, request) {
|
|
|
4056
4055
|
console.log("[VerificationGateway] Calling verify-access API");
|
|
4057
4056
|
}
|
|
4058
4057
|
const apiResponse = await callVerifyAccessAPI(mergedConfig, enrichedRequest);
|
|
4058
|
+
const rawServerDenialReasons = apiResponse.denialReasons;
|
|
4059
|
+
const serverDenialReasons = Array.isArray(rawServerDenialReasons) && rawServerDenialReasons.length > 0 ? rawServerDenialReasons : void 0;
|
|
4059
4060
|
if (!apiResponse.success) {
|
|
4060
4061
|
return createGuidanceResponse(mergedConfig, apiResponse.error, {
|
|
4061
4062
|
source: "api_error",
|
|
@@ -4077,7 +4078,10 @@ async function verify(config, request) {
|
|
|
4077
4078
|
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
4078
4079
|
// the gate check — belt-and-braces.
|
|
4079
4080
|
accessLevel: "none",
|
|
4080
|
-
|
|
4081
|
+
// 3.6.0: the server now emits top-level denialReasons on every deny
|
|
4082
|
+
// path — prefer it verbatim; the failure-message reconstruction remains
|
|
4083
|
+
// as the fallback for older backends.
|
|
4084
|
+
denialReasons: serverDenialReasons ?? (aggregatedFailures && aggregatedFailures.length > 0 ? aggregatedFailures.map((f) => f.message) : apiResponse.access?.reason ? [apiResponse.access.reason] : ["Access denied"]),
|
|
4081
4085
|
failures: aggregatedFailures,
|
|
4082
4086
|
requiresStepUp: apiResponse.access?.requiresStepUp,
|
|
4083
4087
|
requiresApproval: apiResponse.access?.requiresApproval,
|
|
@@ -4154,9 +4158,7 @@ async function verify(config, request) {
|
|
|
4154
4158
|
if (result.recommendation === "deny") {
|
|
4155
4159
|
result.policyAllowed = false;
|
|
4156
4160
|
result.accessLevel = "none";
|
|
4157
|
-
result.denialReasons = result.recommendationReasons
|
|
4158
|
-
"Access denied by AstraSync recommendation"
|
|
4159
|
-
];
|
|
4161
|
+
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
|
|
4160
4162
|
result.guidance = result.runtimeChallenge ? {
|
|
4161
4163
|
message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
|
|
4162
4164
|
registrationUrl: urls?.registrationUrl ?? "",
|
|
@@ -4168,14 +4170,18 @@ async function verify(config, request) {
|
|
|
4168
4170
|
};
|
|
4169
4171
|
} else if (result.recommendation === "step_up_required") {
|
|
4170
4172
|
result.requiresStepUp = true;
|
|
4171
|
-
result.denialReasons = result.recommendationReasons
|
|
4173
|
+
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Step-up verification required"];
|
|
4172
4174
|
}
|
|
4173
|
-
|
|
4175
|
+
const escalates = result.requiresStepUp === true || result.requiresApproval === true || result.recommendation === "step_up_required";
|
|
4176
|
+
if (mergedConfig.cacheTtl !== 0 && result.recommendation !== "deny" && !escalates) {
|
|
4174
4177
|
cacheResult(request, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
|
|
4175
4178
|
}
|
|
4176
4179
|
return result;
|
|
4177
4180
|
}
|
|
4178
4181
|
|
|
4182
|
+
// src/adapters/stepup-poll.ts
|
|
4183
|
+
var FALLBACK_MAX_WAIT_MS = 5 * 60 * 1e3;
|
|
4184
|
+
|
|
4179
4185
|
// src/adapters/express.ts
|
|
4180
4186
|
var DEFAULT_ROUTES_REFRESH_MS = 5 * 60 * 1e3;
|
|
4181
4187
|
|