@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.
Files changed (140) hide show
  1. package/README.md +1 -1
  2. package/dist/adapter-interface/interface.d.mts +2 -2
  3. package/dist/adapter-interface/interface.d.ts +2 -2
  4. package/dist/adapters/express.d.mts +2 -2
  5. package/dist/adapters/express.d.ts +2 -2
  6. package/dist/adapters/express.js +11 -33
  7. package/dist/adapters/express.js.map +1 -1
  8. package/dist/adapters/express.mjs +11 -33
  9. package/dist/adapters/express.mjs.map +1 -1
  10. package/dist/adapters/mcp.d.mts +2 -2
  11. package/dist/adapters/mcp.d.ts +2 -2
  12. package/dist/adapters/mcp.js +28 -65
  13. package/dist/adapters/mcp.js.map +1 -1
  14. package/dist/adapters/mcp.mjs +27 -64
  15. package/dist/adapters/mcp.mjs.map +1 -1
  16. package/dist/adapters/nextjs.d.mts +2 -2
  17. package/dist/adapters/nextjs.d.ts +2 -2
  18. package/dist/adapters/nextjs.js +9 -30
  19. package/dist/adapters/nextjs.js.map +1 -1
  20. package/dist/adapters/nextjs.mjs +9 -30
  21. package/dist/adapters/nextjs.mjs.map +1 -1
  22. package/dist/adapters/sdk.d.mts +2 -2
  23. package/dist/adapters/sdk.d.ts +2 -2
  24. package/dist/adapters/sdk.js +8 -124
  25. package/dist/adapters/sdk.js.map +1 -1
  26. package/dist/adapters/sdk.mjs +8 -122
  27. package/dist/adapters/sdk.mjs.map +1 -1
  28. package/dist/agent/index.d.mts +2 -2
  29. package/dist/agent/index.d.ts +2 -2
  30. package/dist/agent/index.js +1 -1
  31. package/dist/agent/index.js.map +1 -1
  32. package/dist/agent/index.mjs +1 -1
  33. package/dist/agent/index.mjs.map +1 -1
  34. package/dist/bin/astrasync-claude-hook.js +63 -41
  35. package/dist/bin/astrasync-codex-hook.js +63 -41
  36. package/dist/bin/astrasync-guard.js +63 -41
  37. package/dist/bin/astrasync.js +75 -48
  38. package/dist/browser/background.js +63 -41
  39. package/dist/browser/background.js.map +1 -1
  40. package/dist/browser/background.mjs +63 -41
  41. package/dist/browser/background.mjs.map +1 -1
  42. package/dist/browser/browser-adapter.d.mts +2 -2
  43. package/dist/browser/browser-adapter.d.ts +2 -2
  44. package/dist/claude-code/claude-code-adapter.d.mts +2 -2
  45. package/dist/claude-code/claude-code-adapter.d.ts +2 -2
  46. package/dist/cli/index.d.mts +2 -2
  47. package/dist/cli/index.d.ts +2 -2
  48. package/dist/cli/index.js +33 -6
  49. package/dist/cli/index.js.map +1 -1
  50. package/dist/cli/index.mjs +33 -6
  51. package/dist/cli/index.mjs.map +1 -1
  52. package/dist/codex/index.d.mts +2 -2
  53. package/dist/codex/index.d.ts +2 -2
  54. package/dist/codex/index.js +63 -41
  55. package/dist/codex/index.js.map +1 -1
  56. package/dist/codex/index.mjs +63 -41
  57. package/dist/codex/index.mjs.map +1 -1
  58. package/dist/cursor/cursor-adapter.d.mts +2 -2
  59. package/dist/cursor/cursor-adapter.d.ts +2 -2
  60. package/dist/cursor/extension.d.mts +2 -2
  61. package/dist/cursor/extension.d.ts +2 -2
  62. package/dist/cursor/extension.js +63 -41
  63. package/dist/cursor/extension.js.map +1 -1
  64. package/dist/cursor/extension.mjs +63 -41
  65. package/dist/cursor/extension.mjs.map +1 -1
  66. package/dist/edge-config.d.mts +1 -1
  67. package/dist/edge-config.d.ts +1 -1
  68. package/dist/edge-config.js +1 -1
  69. package/dist/edge-config.js.map +1 -1
  70. package/dist/edge-config.mjs +1 -1
  71. package/dist/edge-config.mjs.map +1 -1
  72. package/dist/edge-core/index.d.mts +1 -3
  73. package/dist/edge-core/index.d.ts +1 -3
  74. package/dist/edge-core/index.js +11 -33
  75. package/dist/edge-core/index.js.map +1 -1
  76. package/dist/edge-core/index.mjs +11 -33
  77. package/dist/edge-core/index.mjs.map +1 -1
  78. package/dist/{express-DaqL11tx.d.ts → express-B5lWuemA.d.ts} +1 -1
  79. package/dist/{express-CR6F3njD.d.mts → express-Dm-snUuY.d.mts} +1 -1
  80. package/dist/gateway/gateway.d.mts +2 -2
  81. package/dist/gateway/gateway.d.ts +2 -2
  82. package/dist/gateway/gateway.js +63 -41
  83. package/dist/gateway/gateway.js.map +1 -1
  84. package/dist/gateway/gateway.mjs +63 -41
  85. package/dist/gateway/gateway.mjs.map +1 -1
  86. package/dist/git-trigger/git-hooks.d.mts +2 -2
  87. package/dist/git-trigger/git-hooks.d.ts +2 -2
  88. package/dist/{index-Cub7lK-T.d.mts → index-B5k_vUmK.d.mts} +1 -1
  89. package/dist/{index-BfIxCYIZ.d.ts → index-BOzM6xUq.d.mts} +1 -2
  90. package/dist/{index-CwAh7Tln.d.mts → index-dRfxUdFA.d.ts} +1 -2
  91. package/dist/{index-B5Ts1WtM.d.ts → index-y8xToocF.d.ts} +1 -1
  92. package/dist/index.d.mts +10 -10
  93. package/dist/index.d.ts +10 -10
  94. package/dist/index.js +30 -217
  95. package/dist/index.js.map +1 -1
  96. package/dist/index.mjs +30 -210
  97. package/dist/index.mjs.map +1 -1
  98. package/dist/local-evaluator/evaluator.d.mts +2 -2
  99. package/dist/local-evaluator/evaluator.d.ts +2 -2
  100. package/dist/local-evaluator/evaluator.js +22 -7
  101. package/dist/local-evaluator/evaluator.js.map +1 -1
  102. package/dist/local-evaluator/evaluator.mjs +22 -7
  103. package/dist/local-evaluator/evaluator.mjs.map +1 -1
  104. package/dist/{mcp-BgBJu4Jl.d.mts → mcp-DgsyQiQq.d.mts} +53 -52
  105. package/dist/{mcp--DgKOwfu.d.ts → mcp-OosmAcKf.d.ts} +53 -52
  106. package/dist/{nextjs-DlX6xwbU.d.mts → nextjs-B1sBdEav.d.mts} +1 -1
  107. package/dist/{nextjs-DL6uE1ye.d.ts → nextjs-DoRmhV_Z.d.ts} +1 -1
  108. package/dist/registration/index.d.mts +5 -1
  109. package/dist/registration/index.d.ts +5 -1
  110. package/dist/registration/index.js +1 -1
  111. package/dist/registration/index.js.map +1 -1
  112. package/dist/registration/index.mjs +1 -1
  113. package/dist/registration/index.mjs.map +1 -1
  114. package/dist/sdk-B83N3xKc.d.mts +142 -0
  115. package/dist/sdk-H_9BTNBS.d.ts +142 -0
  116. package/dist/transport/index.d.mts +2 -2
  117. package/dist/transport/index.d.ts +2 -2
  118. package/dist/transport/index.js +1 -1
  119. package/dist/transport/index.js.map +1 -1
  120. package/dist/transport/index.mjs +1 -1
  121. package/dist/transport/index.mjs.map +1 -1
  122. package/dist/{types-DwSfO7Sb.d.ts → types-BK2POWNc.d.ts} +23 -50
  123. package/dist/{types-C0zfSXMB.d.mts → types-CJjZvPr9.d.mts} +23 -50
  124. package/dist/{types-C7Rb-w0d.d.mts → types-CXf3q4kZ.d.ts} +14 -3
  125. package/dist/{types-nIh3HtuA.d.ts → types-DQmop7ZW.d.mts} +14 -3
  126. package/dist/ui/index.d.mts +2 -17
  127. package/dist/ui/index.d.ts +2 -17
  128. package/dist/ui/index.js +1 -43
  129. package/dist/ui/index.js.map +1 -1
  130. package/dist/ui/index.mjs +1 -42
  131. package/dist/ui/index.mjs.map +1 -1
  132. package/dist/verify.d.mts +3 -4
  133. package/dist/verify.d.ts +3 -4
  134. package/dist/verify.js +8 -28
  135. package/dist/verify.js.map +1 -1
  136. package/dist/verify.mjs +8 -28
  137. package/dist/verify.mjs.map +1 -1
  138. package/package.json +1 -1
  139. package/dist/sdk-Bbh9B_dw.d.mts +0 -215
  140. 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-C7Rb-w0d.mjs';
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-C0zfSXMB.mjs';
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-nIh3HtuA.js';
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-DwSfO7Sb.js';
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-C7Rb-w0d.mjs';
5
- import '../types-C0zfSXMB.mjs';
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-nIh3HtuA.js';
5
- import '../types-DwSfO7Sb.js';
4
+ import '../types-CXf3q4kZ.js';
5
+ import '../types-BK2POWNc.js';
6
6
  import '../metadata-capture.js';
7
7
 
8
8
  /**
@@ -501,9 +501,9 @@ var LocalEvaluator = class {
501
501
  if (scopeBlock) {
502
502
  return { recommendation: "DENY", reason: scopeBlock };
503
503
  }
504
- const limitViolation = this.checkLimits(context);
505
- if (limitViolation) {
506
- return { recommendation: "DENY", reason: limitViolation };
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
- if (limits.maxTransactionAmount !== void 0 && context.transactionValue !== void 0) {
572
- if (context.transactionValue > limits.maxTransactionAmount) {
573
- return `Transaction value ${context.transactionValue} exceeds limit ${limits.maxTransactionAmount}`;
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 `Rate limit exceeded: ${entry.count}/${limits.maxRequestsPerHour} requests per hour`;
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({ path: `${path}.blockedPatterns`, message: "blockedPatterns must be an array of strings" });
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({ path: `${path}.requiresApproval`, message: "requiresApproval must be a boolean" });
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({ path: `${path}.maxTransactionAmount`, message: "maxTransactionAmount must be a number" });
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({ path: `${path}.maxRequestsPerHour`, message: "maxRequestsPerHour must be a number" });
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({ path: `${path}.${range}`, message: `${range} is required and must be an object with min and max` });
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/access-levels.ts
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 = "4.5.1";
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-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."
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 with access level: ${result.accessLevel}`,
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
  };