@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
package/dist/codex/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PlatformAdapter, AdapterConfig } from '../adapter-interface/interface.mjs';
|
|
2
|
-
import { A as AgentAction, I as InterceptResult, P as PDLSSContext, V as VerificationDecision } from '../types-
|
|
2
|
+
import { A as AgentAction, I as InterceptResult, P as PDLSSContext, V as VerificationDecision } from '../types-DQmop7ZW.mjs';
|
|
3
3
|
import { AstraSyncGateway } from '../gateway/gateway.mjs';
|
|
4
|
-
import '../types-
|
|
4
|
+
import '../types-CJjZvPr9.mjs';
|
|
5
5
|
import '../metadata-capture.mjs';
|
|
6
6
|
|
|
7
7
|
/**
|
package/dist/codex/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PlatformAdapter, AdapterConfig } from '../adapter-interface/interface.js';
|
|
2
|
-
import { A as AgentAction, I as InterceptResult, P as PDLSSContext, V as VerificationDecision } from '../types-
|
|
2
|
+
import { A as AgentAction, I as InterceptResult, P as PDLSSContext, V as VerificationDecision } from '../types-CXf3q4kZ.js';
|
|
3
3
|
import { AstraSyncGateway } from '../gateway/gateway.js';
|
|
4
|
-
import '../types-
|
|
4
|
+
import '../types-BK2POWNc.js';
|
|
5
5
|
import '../metadata-capture.js';
|
|
6
6
|
|
|
7
7
|
/**
|
package/dist/codex/index.js
CHANGED
|
@@ -544,9 +544,9 @@ var LocalEvaluator = class {
|
|
|
544
544
|
if (scopeBlock) {
|
|
545
545
|
return { recommendation: "DENY", reason: scopeBlock };
|
|
546
546
|
}
|
|
547
|
-
const
|
|
548
|
-
if (
|
|
549
|
-
return
|
|
547
|
+
const limitDecision = this.checkLimits(context);
|
|
548
|
+
if (limitDecision) {
|
|
549
|
+
return limitDecision;
|
|
550
550
|
}
|
|
551
551
|
if (context.purpose === "sub_agent.spawn" && this.policy.selfInstantiation) {
|
|
552
552
|
if (!this.policy.selfInstantiation.allowed) {
|
|
@@ -611,9 +611,21 @@ var LocalEvaluator = class {
|
|
|
611
611
|
checkLimits(context) {
|
|
612
612
|
const limits = this.policy.limits;
|
|
613
613
|
if (!limits) return null;
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
614
|
+
const value = context.transactionValue;
|
|
615
|
+
if (value !== void 0 && value > 0 && (limits.autonomousThreshold !== void 0 || limits.maxTransactionAmount !== void 0)) {
|
|
616
|
+
const autonomousThreshold = limits.autonomousThreshold ?? 0;
|
|
617
|
+
const hardLimit = limits.maxTransactionAmount ?? limits.autonomousThreshold ?? 0;
|
|
618
|
+
if (value > autonomousThreshold) {
|
|
619
|
+
if (value >= hardLimit) {
|
|
620
|
+
return {
|
|
621
|
+
recommendation: "DENY",
|
|
622
|
+
reason: `Transaction value ${value} at or above Hard Limit ${hardLimit}`
|
|
623
|
+
};
|
|
624
|
+
}
|
|
625
|
+
return {
|
|
626
|
+
recommendation: "MANUAL_REVIEW",
|
|
627
|
+
reason: `Transaction value ${value} is in the human-approval band (${autonomousThreshold}, ${hardLimit})`
|
|
628
|
+
};
|
|
617
629
|
}
|
|
618
630
|
}
|
|
619
631
|
if (limits.maxRequestsPerHour !== void 0) {
|
|
@@ -626,7 +638,10 @@ var LocalEvaluator = class {
|
|
|
626
638
|
} else {
|
|
627
639
|
entry.count++;
|
|
628
640
|
if (entry.count > limits.maxRequestsPerHour) {
|
|
629
|
-
return
|
|
641
|
+
return {
|
|
642
|
+
recommendation: "DENY",
|
|
643
|
+
reason: `Rate limit exceeded: ${entry.count}/${limits.maxRequestsPerHour} requests per hour`
|
|
644
|
+
};
|
|
630
645
|
}
|
|
631
646
|
}
|
|
632
647
|
}
|
|
@@ -3835,10 +3850,16 @@ function validatePurpose(purpose, path) {
|
|
|
3835
3850
|
errors.push({ path: `${path}.targets`, message: "targets must be an array of strings" });
|
|
3836
3851
|
}
|
|
3837
3852
|
if (p.blockedPatterns !== void 0 && !isStringArray(p.blockedPatterns)) {
|
|
3838
|
-
errors.push({
|
|
3853
|
+
errors.push({
|
|
3854
|
+
path: `${path}.blockedPatterns`,
|
|
3855
|
+
message: "blockedPatterns must be an array of strings"
|
|
3856
|
+
});
|
|
3839
3857
|
}
|
|
3840
3858
|
if (p.requiresApproval !== void 0 && typeof p.requiresApproval !== "boolean") {
|
|
3841
|
-
errors.push({
|
|
3859
|
+
errors.push({
|
|
3860
|
+
path: `${path}.requiresApproval`,
|
|
3861
|
+
message: "requiresApproval must be a boolean"
|
|
3862
|
+
});
|
|
3842
3863
|
}
|
|
3843
3864
|
return errors;
|
|
3844
3865
|
}
|
|
@@ -3861,11 +3882,29 @@ function validateLimits(limits, path) {
|
|
|
3861
3882
|
return [{ path, message: "limits must be an object" }];
|
|
3862
3883
|
}
|
|
3863
3884
|
const l = limits;
|
|
3885
|
+
if (l.autonomousThreshold !== void 0 && typeof l.autonomousThreshold !== "number") {
|
|
3886
|
+
errors.push({
|
|
3887
|
+
path: `${path}.autonomousThreshold`,
|
|
3888
|
+
message: "autonomousThreshold must be a number"
|
|
3889
|
+
});
|
|
3890
|
+
}
|
|
3864
3891
|
if (l.maxTransactionAmount !== void 0 && typeof l.maxTransactionAmount !== "number") {
|
|
3865
|
-
errors.push({
|
|
3892
|
+
errors.push({
|
|
3893
|
+
path: `${path}.maxTransactionAmount`,
|
|
3894
|
+
message: "maxTransactionAmount must be a number"
|
|
3895
|
+
});
|
|
3896
|
+
}
|
|
3897
|
+
if (typeof l.autonomousThreshold === "number" && typeof l.maxTransactionAmount === "number" && l.autonomousThreshold > l.maxTransactionAmount) {
|
|
3898
|
+
errors.push({
|
|
3899
|
+
path: `${path}.autonomousThreshold`,
|
|
3900
|
+
message: "autonomousThreshold (Autonomous Limit) must be <= maxTransactionAmount (Hard Limit)"
|
|
3901
|
+
});
|
|
3866
3902
|
}
|
|
3867
3903
|
if (l.maxRequestsPerHour !== void 0 && typeof l.maxRequestsPerHour !== "number") {
|
|
3868
|
-
errors.push({
|
|
3904
|
+
errors.push({
|
|
3905
|
+
path: `${path}.maxRequestsPerHour`,
|
|
3906
|
+
message: "maxRequestsPerHour must be a number"
|
|
3907
|
+
});
|
|
3869
3908
|
}
|
|
3870
3909
|
if (l.currency !== void 0 && typeof l.currency !== "string") {
|
|
3871
3910
|
errors.push({ path: `${path}.currency`, message: "currency must be a string" });
|
|
@@ -3880,7 +3919,10 @@ function validateRiskThresholds(thresholds, path) {
|
|
|
3880
3919
|
const t = thresholds;
|
|
3881
3920
|
for (const range of ["autoAllow", "requireApproval", "autoBlock"]) {
|
|
3882
3921
|
if (!t[range] || typeof t[range] !== "object") {
|
|
3883
|
-
errors.push({
|
|
3922
|
+
errors.push({
|
|
3923
|
+
path: `${path}.${range}`,
|
|
3924
|
+
message: `${range} is required and must be an object with min and max`
|
|
3925
|
+
});
|
|
3884
3926
|
continue;
|
|
3885
3927
|
}
|
|
3886
3928
|
const r = t[range];
|
|
@@ -3976,7 +4018,7 @@ function verifyLocal(evaluator, context) {
|
|
|
3976
4018
|
return evaluator.evaluate(context);
|
|
3977
4019
|
}
|
|
3978
4020
|
|
|
3979
|
-
// src/
|
|
4021
|
+
// src/trust-levels.ts
|
|
3980
4022
|
function getTrustLevel(score) {
|
|
3981
4023
|
if (score >= 80) return "PLATINUM";
|
|
3982
4024
|
if (score >= 60) return "GOLD";
|
|
@@ -3985,7 +4027,7 @@ function getTrustLevel(score) {
|
|
|
3985
4027
|
}
|
|
3986
4028
|
|
|
3987
4029
|
// src/version.ts
|
|
3988
|
-
var SDK_VERSION = "
|
|
4030
|
+
var SDK_VERSION = "5.0.0";
|
|
3989
4031
|
|
|
3990
4032
|
// src/http.ts
|
|
3991
4033
|
var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
|
|
@@ -4015,11 +4057,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
|
|
|
4015
4057
|
// src/verify.ts
|
|
4016
4058
|
var DEFAULT_CONFIG = {
|
|
4017
4059
|
apiBaseUrl: "https://astrasync.ai/api",
|
|
4018
|
-
// v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
|
|
4019
|
-
// access). Pre-rename this defaulted to `'guidance'`, which combined with
|
|
4020
|
-
// a route gated at `'guidance'` to silently let unverified traffic
|
|
4021
|
-
// through (`hasMinimumAccess('guidance', 'guidance') === true`).
|
|
4022
|
-
defaultAccessLevel: "none",
|
|
4023
4060
|
// minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
|
|
4024
4061
|
// cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
|
|
4025
4062
|
// default; the caller's explicit value is honoured for cacheable results.
|
|
@@ -4180,13 +4217,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
4180
4217
|
// policy is not evaluated (we never reached the gate).
|
|
4181
4218
|
identityVerified: false,
|
|
4182
4219
|
policyAllowed: false,
|
|
4183
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
4184
|
-
// Adapters additionally short-circuit on `!identityVerified ||
|
|
4185
|
-
// !policyAllowed` before the gate check, but the access level still has
|
|
4186
|
-
// to be honest at the data layer so downstream consumers (SDK adapters
|
|
4187
|
-
// in other languages, custom integrations) inherit the correct
|
|
4188
|
-
// semantics.
|
|
4189
|
-
accessLevel: "none",
|
|
4190
4220
|
guidance,
|
|
4191
4221
|
denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
|
|
4192
4222
|
// Round-10 (#47, O5): on API-error fallback, surface a typed failure so
|
|
@@ -4209,6 +4239,11 @@ function createGuidanceResponse(_config, reason, options = {}) {
|
|
|
4209
4239
|
// 4.0.0: typed marker so adapters render the misconfig envelope (503 +
|
|
4210
4240
|
// MERCHANT_VERIFICATION_MISCONFIGURED) without string-matching.
|
|
4211
4241
|
...isMisconfig && { misconfigured: true },
|
|
4242
|
+
// 4.6.0: a transient api_error is retryable — mark it so consumers surface
|
|
4243
|
+
// "temporarily unavailable, retry" (recommendation 'error') instead of
|
|
4244
|
+
// coercing the absent recommendation to a policy 'deny'. Misconfig is
|
|
4245
|
+
// deterministic and intentionally NOT marked retryable.
|
|
4246
|
+
...isApiError && { retryable: true },
|
|
4212
4247
|
correlationId: options.correlationId,
|
|
4213
4248
|
attemptId: options.attemptId,
|
|
4214
4249
|
verifiedAt: /* @__PURE__ */ new Date()
|
|
@@ -4275,7 +4310,6 @@ async function callVerifyAccessAPI(config, request) {
|
|
|
4275
4310
|
attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
|
|
4276
4311
|
access: {
|
|
4277
4312
|
allowed: false,
|
|
4278
|
-
accessLevel: "none",
|
|
4279
4313
|
reason: "endpoint_deactivated",
|
|
4280
4314
|
failures: [
|
|
4281
4315
|
{
|
|
@@ -4338,7 +4372,7 @@ async function verify(config, request, options) {
|
|
|
4338
4372
|
if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
|
|
4339
4373
|
deprecationWarningShown = true;
|
|
4340
4374
|
console.warn(
|
|
4341
|
-
"[VerificationGateway] minTrustScore / minTrustScoreForFull are deprecated in v2.3.0 and have no effect. Server is now the single source of truth for access
|
|
4375
|
+
"[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."
|
|
4342
4376
|
);
|
|
4343
4377
|
}
|
|
4344
4378
|
if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
|
|
@@ -4384,14 +4418,6 @@ async function verify(config, request, options) {
|
|
|
4384
4418
|
const result2 = {
|
|
4385
4419
|
identityVerified: idVerifiedFromBackend,
|
|
4386
4420
|
policyAllowed: false,
|
|
4387
|
-
// v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
|
|
4388
|
-
// Pre-rename this hardcoded `'guidance'`, which conflated with the
|
|
4389
|
-
// colocated `guidance: {...}` help-payload object below and let
|
|
4390
|
-
// denied requests pass any route gated at `'guidance'` because
|
|
4391
|
-
// `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
|
|
4392
|
-
// ALSO short-circuit on `!identityVerified || !policyAllowed` before
|
|
4393
|
-
// the gate check — belt-and-braces.
|
|
4394
|
-
accessLevel: "none",
|
|
4395
4421
|
// 3.6.0: the server now emits top-level denialReasons on every deny
|
|
4396
4422
|
// path — prefer it verbatim; the failure-message reconstruction remains
|
|
4397
4423
|
// as the fallback for older backends.
|
|
@@ -4440,7 +4466,6 @@ async function verify(config, request, options) {
|
|
|
4440
4466
|
trustScore: apiResponse.organization.trustScore
|
|
4441
4467
|
} : void 0;
|
|
4442
4468
|
const verificationContext = apiResponse.verificationContext;
|
|
4443
|
-
const accessLevel = apiResponse.access?.accessLevel ?? "standard";
|
|
4444
4469
|
const result = {
|
|
4445
4470
|
// 4.5.0 (probe F1): read idVerified from verificationContext with the
|
|
4446
4471
|
// SAME absent⇒false default as the deny branch. The previous `!== false`
|
|
@@ -4452,7 +4477,6 @@ async function verify(config, request, options) {
|
|
|
4452
4477
|
// this load-bearing must never be defaulted on.
|
|
4453
4478
|
identityVerified: apiResponse.verificationContext?.idVerified === true,
|
|
4454
4479
|
policyAllowed: true,
|
|
4455
|
-
accessLevel,
|
|
4456
4480
|
agent,
|
|
4457
4481
|
developer,
|
|
4458
4482
|
organization,
|
|
@@ -4479,7 +4503,6 @@ async function verify(config, request, options) {
|
|
|
4479
4503
|
};
|
|
4480
4504
|
if (result.recommendation === "deny") {
|
|
4481
4505
|
result.policyAllowed = false;
|
|
4482
|
-
result.accessLevel = "none";
|
|
4483
4506
|
result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
|
|
4484
4507
|
result.guidance = result.runtimeChallenge ? {
|
|
4485
4508
|
message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
|
|
@@ -4592,7 +4615,6 @@ function toGatewayConfig(config) {
|
|
|
4592
4615
|
return {
|
|
4593
4616
|
apiBaseUrl: config.apiBaseUrl || "https://api.astrasync.ai",
|
|
4594
4617
|
apiKey: config.apiKey,
|
|
4595
|
-
defaultAccessLevel: config.defaultAccessLevel,
|
|
4596
4618
|
minTrustScore: config.minTrustScore,
|
|
4597
4619
|
minTrustScoreForFull: config.minTrustScoreForFull,
|
|
4598
4620
|
cacheTtl: config.cacheTtl,
|
|
@@ -4620,7 +4642,7 @@ function toDecision(result) {
|
|
|
4620
4642
|
if (result.identityVerified && result.policyAllowed) {
|
|
4621
4643
|
return {
|
|
4622
4644
|
recommendation: "ALLOW",
|
|
4623
|
-
reason: `Verified
|
|
4645
|
+
reason: result.agent?.trustScore ? `Verified (trust score ${result.agent.trustScore})` : "Verified",
|
|
4624
4646
|
trustScore: result.agent?.trustScore,
|
|
4625
4647
|
sessionId: "sessionId" in result ? result.sessionId : void 0
|
|
4626
4648
|
};
|