@astrasyncai/verification-gateway 4.5.1 → 5.0.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 +1 -1
- 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 +11 -33
- package/dist/adapters/express.js.map +1 -1
- package/dist/adapters/express.mjs +11 -33
- package/dist/adapters/express.mjs.map +1 -1
- package/dist/adapters/mcp.d.mts +2 -2
- package/dist/adapters/mcp.d.ts +2 -2
- package/dist/adapters/mcp.js +28 -65
- package/dist/adapters/mcp.js.map +1 -1
- package/dist/adapters/mcp.mjs +27 -64
- 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 +9 -30
- package/dist/adapters/nextjs.js.map +1 -1
- package/dist/adapters/nextjs.mjs +9 -30
- 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 +8 -124
- package/dist/adapters/sdk.js.map +1 -1
- package/dist/adapters/sdk.mjs +8 -122
- 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/agent/index.js +1 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/index.mjs +1 -1
- package/dist/agent/index.mjs.map +1 -1
- package/dist/bin/astrasync-claude-hook.js +63 -41
- package/dist/bin/astrasync-codex-hook.js +63 -41
- package/dist/bin/astrasync-guard.js +63 -41
- package/dist/bin/astrasync.js +75 -48
- package/dist/browser/background.js +63 -41
- package/dist/browser/background.js.map +1 -1
- package/dist/browser/background.mjs +63 -41
- 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 +2 -2
- package/dist/claude-code/claude-code-adapter.d.ts +2 -2
- package/dist/cli/index.d.mts +2 -2
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.js +33 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.mjs +33 -6
- package/dist/cli/index.mjs.map +1 -1
- package/dist/codex/index.d.mts +2 -2
- package/dist/codex/index.d.ts +2 -2
- package/dist/codex/index.js +63 -41
- package/dist/codex/index.js.map +1 -1
- package/dist/codex/index.mjs +63 -41
- package/dist/codex/index.mjs.map +1 -1
- 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 +63 -41
- package/dist/cursor/extension.js.map +1 -1
- package/dist/cursor/extension.mjs +63 -41
- package/dist/cursor/extension.mjs.map +1 -1
- package/dist/edge-config.d.mts +1 -1
- package/dist/edge-config.d.ts +1 -1
- package/dist/edge-config.js +1 -1
- package/dist/edge-config.js.map +1 -1
- package/dist/edge-config.mjs +1 -1
- package/dist/edge-config.mjs.map +1 -1
- package/dist/edge-core/index.d.mts +1 -3
- package/dist/edge-core/index.d.ts +1 -3
- package/dist/edge-core/index.js +11 -33
- package/dist/edge-core/index.js.map +1 -1
- package/dist/edge-core/index.mjs +11 -33
- package/dist/edge-core/index.mjs.map +1 -1
- package/dist/{express-DaqL11tx.d.ts → express-B5lWuemA.d.ts} +1 -1
- package/dist/{express-CR6F3njD.d.mts → express-Dm-snUuY.d.mts} +1 -1
- package/dist/gateway/gateway.d.mts +2 -2
- package/dist/gateway/gateway.d.ts +2 -2
- package/dist/gateway/gateway.js +63 -41
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/gateway.mjs +63 -41
- 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-Cub7lK-T.d.mts → index-B5k_vUmK.d.mts} +1 -1
- package/dist/{index-BfIxCYIZ.d.ts → index-BOzM6xUq.d.mts} +1 -2
- package/dist/{index-CwAh7Tln.d.mts → index-dRfxUdFA.d.ts} +1 -2
- package/dist/{index-B5Ts1WtM.d.ts → index-y8xToocF.d.ts} +1 -1
- package/dist/index.d.mts +10 -10
- package/dist/index.d.ts +10 -10
- package/dist/index.js +30 -217
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +30 -210
- 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/local-evaluator/evaluator.js +22 -7
- package/dist/local-evaluator/evaluator.js.map +1 -1
- package/dist/local-evaluator/evaluator.mjs +22 -7
- package/dist/local-evaluator/evaluator.mjs.map +1 -1
- package/dist/{mcp-BgBJu4Jl.d.mts → mcp-DgsyQiQq.d.mts} +53 -52
- package/dist/{mcp--DgKOwfu.d.ts → mcp-OosmAcKf.d.ts} +53 -52
- package/dist/{nextjs-DlX6xwbU.d.mts → nextjs-B1sBdEav.d.mts} +1 -1
- package/dist/{nextjs-DL6uE1ye.d.ts → nextjs-DoRmhV_Z.d.ts} +1 -1
- package/dist/registration/index.d.mts +5 -1
- package/dist/registration/index.d.ts +5 -1
- package/dist/registration/index.js +1 -1
- package/dist/registration/index.js.map +1 -1
- package/dist/registration/index.mjs +1 -1
- package/dist/registration/index.mjs.map +1 -1
- package/dist/sdk-B83N3xKc.d.mts +142 -0
- package/dist/sdk-H_9BTNBS.d.ts +142 -0
- package/dist/transport/index.d.mts +2 -2
- package/dist/transport/index.d.ts +2 -2
- package/dist/transport/index.js +1 -1
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/index.mjs +1 -1
- package/dist/transport/index.mjs.map +1 -1
- package/dist/{types-DwSfO7Sb.d.ts → types-BK2POWNc.d.ts} +23 -50
- package/dist/{types-C0zfSXMB.d.mts → types-CJjZvPr9.d.mts} +23 -50
- package/dist/{types-C7Rb-w0d.d.mts → types-CXf3q4kZ.d.ts} +14 -3
- package/dist/{types-nIh3HtuA.d.ts → types-DQmop7ZW.d.mts} +14 -3
- package/dist/ui/index.d.mts +2 -17
- package/dist/ui/index.d.ts +2 -17
- package/dist/ui/index.js +1 -43
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/index.mjs +1 -42
- package/dist/ui/index.mjs.map +1 -1
- package/dist/verify.d.mts +3 -4
- package/dist/verify.d.ts +3 -4
- package/dist/verify.js +8 -28
- package/dist/verify.js.map +1 -1
- package/dist/verify.mjs +8 -28
- package/dist/verify.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/sdk-Bbh9B_dw.d.mts +0 -215
- package/dist/sdk-C6SASmsh.d.ts +0 -215
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PlatformAdapter, AdapterConfig } from '../adapter-interface/interface.mjs';
|
|
2
|
-
import { P as PDLSSContext, V as VerificationDecision, A as AgentAction, I as InterceptResult } from '../types-
|
|
2
|
+
import { P as PDLSSContext, V as VerificationDecision, A as AgentAction, I as InterceptResult } from '../types-DQmop7ZW.mjs';
|
|
3
3
|
import '../gateway/gateway.mjs';
|
|
4
|
-
import '../types-
|
|
4
|
+
import '../types-CJjZvPr9.mjs';
|
|
5
5
|
import '../metadata-capture.mjs';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PlatformAdapter, AdapterConfig } from '../adapter-interface/interface.js';
|
|
2
|
-
import { P as PDLSSContext, V as VerificationDecision, A as AgentAction, I as InterceptResult } from '../types-
|
|
2
|
+
import { P as PDLSSContext, V as VerificationDecision, A as AgentAction, I as InterceptResult } from '../types-CXf3q4kZ.js';
|
|
3
3
|
import '../gateway/gateway.js';
|
|
4
|
-
import '../types-
|
|
4
|
+
import '../types-BK2POWNc.js';
|
|
5
5
|
import '../metadata-capture.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { VSCodeAPI } from './cursor-adapter.mjs';
|
|
2
2
|
import '../adapter-interface/interface.mjs';
|
|
3
3
|
import '../gateway/gateway.mjs';
|
|
4
|
-
import '../types-
|
|
5
|
-
import '../types-
|
|
4
|
+
import '../types-DQmop7ZW.mjs';
|
|
5
|
+
import '../types-CJjZvPr9.mjs';
|
|
6
6
|
import '../metadata-capture.mjs';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { VSCodeAPI } from './cursor-adapter.js';
|
|
2
2
|
import '../adapter-interface/interface.js';
|
|
3
3
|
import '../gateway/gateway.js';
|
|
4
|
-
import '../types-
|
|
5
|
-
import '../types-
|
|
4
|
+
import '../types-CXf3q4kZ.js';
|
|
5
|
+
import '../types-BK2POWNc.js';
|
|
6
6
|
import '../metadata-capture.js';
|
|
7
7
|
|
|
8
8
|
/**
|
package/dist/cursor/extension.js
CHANGED
|
@@ -501,9 +501,9 @@ var LocalEvaluator = class {
|
|
|
501
501
|
if (scopeBlock) {
|
|
502
502
|
return { recommendation: "DENY", reason: scopeBlock };
|
|
503
503
|
}
|
|
504
|
-
const
|
|
505
|
-
if (
|
|
506
|
-
return
|
|
504
|
+
const limitDecision = this.checkLimits(context);
|
|
505
|
+
if (limitDecision) {
|
|
506
|
+
return limitDecision;
|
|
507
507
|
}
|
|
508
508
|
if (context.purpose === "sub_agent.spawn" && this.policy.selfInstantiation) {
|
|
509
509
|
if (!this.policy.selfInstantiation.allowed) {
|
|
@@ -568,9 +568,21 @@ var LocalEvaluator = class {
|
|
|
568
568
|
checkLimits(context) {
|
|
569
569
|
const limits = this.policy.limits;
|
|
570
570
|
if (!limits) return null;
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
571
|
+
const value = context.transactionValue;
|
|
572
|
+
if (value !== void 0 && value > 0 && (limits.autonomousThreshold !== void 0 || limits.maxTransactionAmount !== void 0)) {
|
|
573
|
+
const autonomousThreshold = limits.autonomousThreshold ?? 0;
|
|
574
|
+
const hardLimit = limits.maxTransactionAmount ?? limits.autonomousThreshold ?? 0;
|
|
575
|
+
if (value > autonomousThreshold) {
|
|
576
|
+
if (value >= hardLimit) {
|
|
577
|
+
return {
|
|
578
|
+
recommendation: "DENY",
|
|
579
|
+
reason: `Transaction value ${value} at or above Hard Limit ${hardLimit}`
|
|
580
|
+
};
|
|
581
|
+
}
|
|
582
|
+
return {
|
|
583
|
+
recommendation: "MANUAL_REVIEW",
|
|
584
|
+
reason: `Transaction value ${value} is in the human-approval band (${autonomousThreshold}, ${hardLimit})`
|
|
585
|
+
};
|
|
574
586
|
}
|
|
575
587
|
}
|
|
576
588
|
if (limits.maxRequestsPerHour !== void 0) {
|
|
@@ -583,7 +595,10 @@ var LocalEvaluator = class {
|
|
|
583
595
|
} else {
|
|
584
596
|
entry.count++;
|
|
585
597
|
if (entry.count > limits.maxRequestsPerHour) {
|
|
586
|
-
return
|
|
598
|
+
return {
|
|
599
|
+
recommendation: "DENY",
|
|
600
|
+
reason: `Rate limit exceeded: ${entry.count}/${limits.maxRequestsPerHour} requests per hour`
|
|
601
|
+
};
|
|
587
602
|
}
|
|
588
603
|
}
|
|
589
604
|
}
|
|
@@ -3792,10 +3807,16 @@ function validatePurpose(purpose, path) {
|
|
|
3792
3807
|
errors.push({ path: `${path}.targets`, message: "targets must be an array of strings" });
|
|
3793
3808
|
}
|
|
3794
3809
|
if (p.blockedPatterns !== void 0 && !isStringArray(p.blockedPatterns)) {
|
|
3795
|
-
errors.push({
|
|
3810
|
+
errors.push({
|
|
3811
|
+
path: `${path}.blockedPatterns`,
|
|
3812
|
+
message: "blockedPatterns must be an array of strings"
|
|
3813
|
+
});
|
|
3796
3814
|
}
|
|
3797
3815
|
if (p.requiresApproval !== void 0 && typeof p.requiresApproval !== "boolean") {
|
|
3798
|
-
errors.push({
|
|
3816
|
+
errors.push({
|
|
3817
|
+
path: `${path}.requiresApproval`,
|
|
3818
|
+
message: "requiresApproval must be a boolean"
|
|
3819
|
+
});
|
|
3799
3820
|
}
|
|
3800
3821
|
return errors;
|
|
3801
3822
|
}
|
|
@@ -3818,11 +3839,29 @@ function validateLimits(limits, path) {
|
|
|
3818
3839
|
return [{ path, message: "limits must be an object" }];
|
|
3819
3840
|
}
|
|
3820
3841
|
const l = limits;
|
|
3842
|
+
if (l.autonomousThreshold !== void 0 && typeof l.autonomousThreshold !== "number") {
|
|
3843
|
+
errors.push({
|
|
3844
|
+
path: `${path}.autonomousThreshold`,
|
|
3845
|
+
message: "autonomousThreshold must be a number"
|
|
3846
|
+
});
|
|
3847
|
+
}
|
|
3821
3848
|
if (l.maxTransactionAmount !== void 0 && typeof l.maxTransactionAmount !== "number") {
|
|
3822
|
-
errors.push({
|
|
3849
|
+
errors.push({
|
|
3850
|
+
path: `${path}.maxTransactionAmount`,
|
|
3851
|
+
message: "maxTransactionAmount must be a number"
|
|
3852
|
+
});
|
|
3853
|
+
}
|
|
3854
|
+
if (typeof l.autonomousThreshold === "number" && typeof l.maxTransactionAmount === "number" && l.autonomousThreshold > l.maxTransactionAmount) {
|
|
3855
|
+
errors.push({
|
|
3856
|
+
path: `${path}.autonomousThreshold`,
|
|
3857
|
+
message: "autonomousThreshold (Autonomous Limit) must be <= maxTransactionAmount (Hard Limit)"
|
|
3858
|
+
});
|
|
3823
3859
|
}
|
|
3824
3860
|
if (l.maxRequestsPerHour !== void 0 && typeof l.maxRequestsPerHour !== "number") {
|
|
3825
|
-
errors.push({
|
|
3861
|
+
errors.push({
|
|
3862
|
+
path: `${path}.maxRequestsPerHour`,
|
|
3863
|
+
message: "maxRequestsPerHour must be a number"
|
|
3864
|
+
});
|
|
3826
3865
|
}
|
|
3827
3866
|
if (l.currency !== void 0 && typeof l.currency !== "string") {
|
|
3828
3867
|
errors.push({ path: `${path}.currency`, message: "currency must be a string" });
|
|
@@ -3837,7 +3876,10 @@ function validateRiskThresholds(thresholds, path) {
|
|
|
3837
3876
|
const t = thresholds;
|
|
3838
3877
|
for (const range of ["autoAllow", "requireApproval", "autoBlock"]) {
|
|
3839
3878
|
if (!t[range] || typeof t[range] !== "object") {
|
|
3840
|
-
errors.push({
|
|
3879
|
+
errors.push({
|
|
3880
|
+
path: `${path}.${range}`,
|
|
3881
|
+
message: `${range} is required and must be an object with min and max`
|
|
3882
|
+
});
|
|
3841
3883
|
continue;
|
|
3842
3884
|
}
|
|
3843
3885
|
const r = t[range];
|
|
@@ -3933,7 +3975,7 @@ function verifyLocal(evaluator, context) {
|
|
|
3933
3975
|
return evaluator.evaluate(context);
|
|
3934
3976
|
}
|
|
3935
3977
|
|
|
3936
|
-
// src/
|
|
3978
|
+
// src/trust-levels.ts
|
|
3937
3979
|
function getTrustLevel(score) {
|
|
3938
3980
|
if (score >= 80) return "PLATINUM";
|
|
3939
3981
|
if (score >= 60) return "GOLD";
|
|
@@ -3942,7 +3984,7 @@ function getTrustLevel(score) {
|
|
|
3942
3984
|
}
|
|
3943
3985
|
|
|
3944
3986
|
// src/version.ts
|
|
3945
|
-
var SDK_VERSION = "
|
|
3987
|
+
var SDK_VERSION = "5.0.0";
|
|
3946
3988
|
|
|
3947
3989
|
// src/http.ts
|
|
3948
3990
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -3972,11 +4014,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
|
|
|
3972
4014
|
// src/verify.ts
|
|
3973
4015
|
var DEFAULT_CONFIG = {
|
|
3974
4016
|
apiBaseUrl: "https://astrasync.ai/api",
|
|
3975
|
-
// v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
|
|
3976
|
-
// access). Pre-rename this defaulted to `'guidance'`, which combined with
|
|
3977
|
-
// a route gated at `'guidance'` to silently let unverified traffic
|
|
3978
|
-
// through (`hasMinimumAccess('guidance', 'guidance') === true`).
|
|
3979
|
-
defaultAccessLevel: "none",
|
|
3980
4017
|
// minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
|
|
3981
4018
|
// cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
|
|
3982
4019
|
// default; the caller's explicit value is honoured for cacheable results.
|
|
@@ -4137,13 +4174,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
4137
4174
|
// policy is not evaluated (we never reached the gate).
|
|
4138
4175
|
identityVerified: false,
|
|
4139
4176
|
policyAllowed: false,
|
|
4140
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
4141
|
-
// Adapters additionally short-circuit on `!identityVerified ||
|
|
4142
|
-
// !policyAllowed` before the gate check, but the access level still has
|
|
4143
|
-
// to be honest at the data layer so downstream consumers (SDK adapters
|
|
4144
|
-
// in other languages, custom integrations) inherit the correct
|
|
4145
|
-
// semantics.
|
|
4146
|
-
accessLevel: "none",
|
|
4147
4177
|
guidance,
|
|
4148
4178
|
denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
|
|
4149
4179
|
// Round-10 (#47, O5): on API-error fallback, surface a typed failure so
|
|
@@ -4166,6 +4196,11 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
4166
4196
|
// 4.0.0: typed marker so adapters render the misconfig envelope (503 +
|
|
4167
4197
|
// MERCHANT_VERIFICATION_MISCONFIGURED) without string-matching.
|
|
4168
4198
|
...isMisconfig && { misconfigured: true },
|
|
4199
|
+
// 4.6.0: a transient api_error is retryable — mark it so consumers surface
|
|
4200
|
+
// "temporarily unavailable, retry" (recommendation 'error') instead of
|
|
4201
|
+
// coercing the absent recommendation to a policy 'deny'. Misconfig is
|
|
4202
|
+
// deterministic and intentionally NOT marked retryable.
|
|
4203
|
+
...isApiError && { retryable: true },
|
|
4169
4204
|
correlationId: options.correlationId,
|
|
4170
4205
|
attemptId: options.attemptId,
|
|
4171
4206
|
verifiedAt: /* @__PURE__ */ new Date()
|
|
@@ -4232,7 +4267,6 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
4232
4267
|
attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
|
|
4233
4268
|
access: {
|
|
4234
4269
|
allowed: false,
|
|
4235
|
-
accessLevel: "none",
|
|
4236
4270
|
reason: "endpoint_deactivated",
|
|
4237
4271
|
failures: [
|
|
4238
4272
|
{
|
|
@@ -4295,7 +4329,7 @@ async function verify(config, request, options) {
|
|
|
4295
4329
|
if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
|
|
4296
4330
|
deprecationWarningShown = true;
|
|
4297
4331
|
console.warn(
|
|
4298
|
-
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access
|
|
4332
|
+
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access decisions (verified ID + runtime challenge + PDLSS + trust score). To gate access to an endpoint, configure the endpoint's trust_score_requirement server-side."
|
|
4299
4333
|
);
|
|
4300
4334
|
}
|
|
4301
4335
|
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
|
|
@@ -4341,14 +4375,6 @@ async function verify(config, request, options) {
|
|
|
4341
4375
|
const result2 = {
|
|
4342
4376
|
identityVerified: idVerifiedFromBackend,
|
|
4343
4377
|
policyAllowed: false,
|
|
4344
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
4345
|
-
// Pre-rename this hardcoded `'guidance'`, which conflated with the
|
|
4346
|
-
// colocated `guidance: {...}` help-payload object below and let
|
|
4347
|
-
// denied requests pass any route gated at `'guidance'` because
|
|
4348
|
-
// `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
|
|
4349
|
-
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
4350
|
-
// the gate check — belt-and-braces.
|
|
4351
|
-
accessLevel: "none",
|
|
4352
4378
|
// 3.6.0: the server now emits top-level denialReasons on every deny
|
|
4353
4379
|
// path — prefer it verbatim; the failure-message reconstruction remains
|
|
4354
4380
|
// as the fallback for older backends.
|
|
@@ -4397,7 +4423,6 @@ async function verify(config, request, options) {
|
|
|
4397
4423
|
trustScore: apiResponse.organization.trustScore
|
|
4398
4424
|
} : void 0;
|
|
4399
4425
|
const verificationContext = apiResponse.verificationContext;
|
|
4400
|
-
const accessLevel = apiResponse.access?.accessLevel ?? "standard";
|
|
4401
4426
|
const result = {
|
|
4402
4427
|
// 4.5.0 (probe F1): read idVerified from verificationContext with the
|
|
4403
4428
|
// SAME absent⇒false default as the deny branch. The previous `!== false`
|
|
@@ -4409,7 +4434,6 @@ async function verify(config, request, options) {
|
|
|
4409
4434
|
// this load-bearing must never be defaulted on.
|
|
4410
4435
|
identityVerified: apiResponse.verificationContext?.idVerified === true,
|
|
4411
4436
|
policyAllowed: true,
|
|
4412
|
-
accessLevel,
|
|
4413
4437
|
agent,
|
|
4414
4438
|
developer,
|
|
4415
4439
|
organization,
|
|
@@ -4436,7 +4460,6 @@ async function verify(config, request, options) {
|
|
|
4436
4460
|
};
|
|
4437
4461
|
if (result.recommendation === "deny") {
|
|
4438
4462
|
result.policyAllowed = false;
|
|
4439
|
-
result.accessLevel = "none";
|
|
4440
4463
|
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
|
|
4441
4464
|
result.guidance = result.runtimeChallenge ? {
|
|
4442
4465
|
message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
|
|
@@ -4549,7 +4572,6 @@ function toGatewayConfig(config) {
|
|
|
4549
4572
|
return {
|
|
4550
4573
|
apiBaseUrl: config.apiBaseUrl || "https://api.astrasync.ai",
|
|
4551
4574
|
apiKey: config.apiKey,
|
|
4552
|
-
defaultAccessLevel: config.defaultAccessLevel,
|
|
4553
4575
|
minTrustScore: config.minTrustScore,
|
|
4554
4576
|
minTrustScoreForFull: config.minTrustScoreForFull,
|
|
4555
4577
|
cacheTtl: config.cacheTtl,
|
|
@@ -4577,7 +4599,7 @@ function toDecision(result) {
|
|
|
4577
4599
|
if (result.identityVerified && result.policyAllowed) {
|
|
4578
4600
|
return {
|
|
4579
4601
|
recommendation: "ALLOW",
|
|
4580
|
-
reason: `Verified
|
|
4602
|
+
reason: result.agent?.trustScore ? `Verified (trust score ${result.agent.trustScore})` : "Verified",
|
|
4581
4603
|
trustScore: result.agent?.trustScore,
|
|
4582
4604
|
sessionId: "sessionId" in result ? result.sessionId : void 0
|
|
4583
4605
|
};
|