@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
|
@@ -3769,7 +3769,7 @@ function getTrustLevel(score) {
|
|
|
3769
3769
|
}
|
|
3770
3770
|
|
|
3771
3771
|
// src/version.ts
|
|
3772
|
-
var SDK_VERSION = "3.
|
|
3772
|
+
var SDK_VERSION = "3.7.0";
|
|
3773
3773
|
|
|
3774
3774
|
// src/well-known.ts
|
|
3775
3775
|
var CACHE_TTL_MS = 60 * 60 * 1e3;
|
|
@@ -3787,10 +3787,10 @@ var DEFAULT_CONFIG = {
|
|
|
3787
3787
|
// through (`hasMinimumAccess('guidance', 'guidance') === true`).
|
|
3788
3788
|
defaultAccessLevel: "none",
|
|
3789
3789
|
// minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
|
|
3790
|
-
//
|
|
3791
|
-
//
|
|
3792
|
-
//
|
|
3793
|
-
// Set cacheTtl: 0 to disable caching entirely.
|
|
3790
|
+
// cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
|
|
3791
|
+
// default; the caller's explicit value is honoured for cacheable results.
|
|
3792
|
+
// Denials and step-up escalations are NEVER cached (3.6.0) regardless of
|
|
3793
|
+
// cacheTtl. Set cacheTtl: 0 to disable caching entirely.
|
|
3794
3794
|
debug: false
|
|
3795
3795
|
};
|
|
3796
3796
|
var initCheckPerformed = false;
|
|
@@ -3877,10 +3877,9 @@ function getCachedResult(request, counterpartyId) {
|
|
|
3877
3877
|
}
|
|
3878
3878
|
return null;
|
|
3879
3879
|
}
|
|
3880
|
-
var
|
|
3881
|
-
var DEFAULT_STEP_UP_TTL_SECONDS = 300;
|
|
3880
|
+
var DEFAULT_CACHE_TTL_SECONDS = 60;
|
|
3882
3881
|
function cacheResult(request, result, configuredTtl, counterpartyId) {
|
|
3883
|
-
const ttlSeconds = configuredTtl && configuredTtl > 0 ? configuredTtl :
|
|
3882
|
+
const ttlSeconds = configuredTtl && configuredTtl > 0 ? configuredTtl : DEFAULT_CACHE_TTL_SECONDS;
|
|
3884
3883
|
const key = getCacheKey(request, counterpartyId);
|
|
3885
3884
|
verificationCache.set(key, {
|
|
3886
3885
|
result,
|
|
@@ -4022,7 +4021,7 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
4022
4021
|
};
|
|
4023
4022
|
}
|
|
4024
4023
|
}
|
|
4025
|
-
async function verify(config, request) {
|
|
4024
|
+
async function verify(config, request, options) {
|
|
4026
4025
|
const mergedConfig = { ...DEFAULT_CONFIG, ...config };
|
|
4027
4026
|
const urls = mergedConfig.apiBaseUrl ? getCachedWellKnownUrls(mergedConfig.apiBaseUrl) : void 0;
|
|
4028
4027
|
if (!initCheckPerformed && !mergedConfig.disableInitChecks && mergedConfig.apiBaseUrl) {
|
|
@@ -4038,7 +4037,7 @@ async function verify(config, request) {
|
|
|
4038
4037
|
"[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."
|
|
4039
4038
|
);
|
|
4040
4039
|
}
|
|
4041
|
-
if (mergedConfig.cacheTtl !== 0) {
|
|
4040
|
+
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
|
|
4042
4041
|
const cached = getCachedResult(request, mergedConfig.counterpartyId);
|
|
4043
4042
|
if (cached) {
|
|
4044
4043
|
if (mergedConfig.debug) {
|
|
@@ -4058,6 +4057,8 @@ async function verify(config, request) {
|
|
|
4058
4057
|
console.log("[VerificationGateway] Calling verify-access API");
|
|
4059
4058
|
}
|
|
4060
4059
|
const apiResponse = await callVerifyAccessAPI(mergedConfig, enrichedRequest);
|
|
4060
|
+
const rawServerDenialReasons = apiResponse.denialReasons;
|
|
4061
|
+
const serverDenialReasons = Array.isArray(rawServerDenialReasons) && rawServerDenialReasons.length > 0 ? rawServerDenialReasons : void 0;
|
|
4061
4062
|
if (!apiResponse.success) {
|
|
4062
4063
|
return createGuidanceResponse(mergedConfig, apiResponse.error, {
|
|
4063
4064
|
source: "api_error",
|
|
@@ -4079,7 +4080,10 @@ async function verify(config, request) {
|
|
|
4079
4080
|
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
4080
4081
|
// the gate check — belt-and-braces.
|
|
4081
4082
|
accessLevel: "none",
|
|
4082
|
-
|
|
4083
|
+
// 3.6.0: the server now emits top-level denialReasons on every deny
|
|
4084
|
+
// path — prefer it verbatim; the failure-message reconstruction remains
|
|
4085
|
+
// as the fallback for older backends.
|
|
4086
|
+
denialReasons: serverDenialReasons ?? (aggregatedFailures && aggregatedFailures.length > 0 ? aggregatedFailures.map((f) => f.message) : apiResponse.access?.reason ? [apiResponse.access.reason] : ["Access denied"]),
|
|
4083
4087
|
failures: aggregatedFailures,
|
|
4084
4088
|
requiresStepUp: apiResponse.access?.requiresStepUp,
|
|
4085
4089
|
requiresApproval: apiResponse.access?.requiresApproval,
|
|
@@ -4156,9 +4160,7 @@ async function verify(config, request) {
|
|
|
4156
4160
|
if (result.recommendation === "deny") {
|
|
4157
4161
|
result.policyAllowed = false;
|
|
4158
4162
|
result.accessLevel = "none";
|
|
4159
|
-
result.denialReasons = result.recommendationReasons
|
|
4160
|
-
"Access denied by AstraSync recommendation"
|
|
4161
|
-
];
|
|
4163
|
+
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
|
|
4162
4164
|
result.guidance = result.runtimeChallenge ? {
|
|
4163
4165
|
message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
|
|
4164
4166
|
registrationUrl: urls?.registrationUrl ?? "",
|
|
@@ -4170,14 +4172,18 @@ async function verify(config, request) {
|
|
|
4170
4172
|
};
|
|
4171
4173
|
} else if (result.recommendation === "step_up_required") {
|
|
4172
4174
|
result.requiresStepUp = true;
|
|
4173
|
-
result.denialReasons = result.recommendationReasons
|
|
4175
|
+
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Step-up verification required"];
|
|
4174
4176
|
}
|
|
4175
|
-
|
|
4177
|
+
const escalates = result.requiresStepUp === true || result.requiresApproval === true || result.recommendation === "step_up_required";
|
|
4178
|
+
if (mergedConfig.cacheTtl !== 0 && result.recommendation !== "deny" && !escalates) {
|
|
4176
4179
|
cacheResult(request, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
|
|
4177
4180
|
}
|
|
4178
4181
|
return result;
|
|
4179
4182
|
}
|
|
4180
4183
|
|
|
4184
|
+
// src/adapters/stepup-poll.ts
|
|
4185
|
+
var FALLBACK_MAX_WAIT_MS = 5 * 60 * 1e3;
|
|
4186
|
+
|
|
4181
4187
|
// src/adapters/express.ts
|
|
4182
4188
|
var DEFAULT_ROUTES_REFRESH_MS = 5 * 60 * 1e3;
|
|
4183
4189
|
|