@astrasyncai/verification-gateway 2.4.8 → 2.4.10

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 (89) hide show
  1. package/dist/adapter-interface/interface.d.mts +2 -2
  2. package/dist/adapter-interface/interface.d.ts +2 -2
  3. package/dist/adapters/express.d.mts +2 -2
  4. package/dist/adapters/express.d.ts +2 -2
  5. package/dist/adapters/express.js +81 -31
  6. package/dist/adapters/express.js.map +1 -1
  7. package/dist/adapters/express.mjs +81 -31
  8. package/dist/adapters/express.mjs.map +1 -1
  9. package/dist/adapters/mcp.d.mts +1 -1
  10. package/dist/adapters/mcp.d.ts +1 -1
  11. package/dist/adapters/mcp.js +64 -26
  12. package/dist/adapters/mcp.js.map +1 -1
  13. package/dist/adapters/mcp.mjs +64 -26
  14. package/dist/adapters/mcp.mjs.map +1 -1
  15. package/dist/adapters/nextjs.d.mts +2 -2
  16. package/dist/adapters/nextjs.d.ts +2 -2
  17. package/dist/adapters/nextjs.js +89 -32
  18. package/dist/adapters/nextjs.js.map +1 -1
  19. package/dist/adapters/nextjs.mjs +89 -32
  20. package/dist/adapters/nextjs.mjs.map +1 -1
  21. package/dist/adapters/sdk.d.mts +2 -2
  22. package/dist/adapters/sdk.d.ts +2 -2
  23. package/dist/adapters/sdk.js +65 -25
  24. package/dist/adapters/sdk.js.map +1 -1
  25. package/dist/adapters/sdk.mjs +65 -25
  26. package/dist/adapters/sdk.mjs.map +1 -1
  27. package/dist/agent/index.d.mts +2 -2
  28. package/dist/agent/index.d.ts +2 -2
  29. package/dist/browser/background.js +60 -25
  30. package/dist/browser/background.js.map +1 -1
  31. package/dist/browser/background.mjs +60 -25
  32. package/dist/browser/background.mjs.map +1 -1
  33. package/dist/browser/browser-adapter.d.mts +2 -2
  34. package/dist/browser/browser-adapter.d.ts +2 -2
  35. package/dist/cli/index.d.mts +2 -2
  36. package/dist/cli/index.d.ts +2 -2
  37. package/dist/cursor/cursor-adapter.d.mts +2 -2
  38. package/dist/cursor/cursor-adapter.d.ts +2 -2
  39. package/dist/cursor/extension.d.mts +2 -2
  40. package/dist/cursor/extension.d.ts +2 -2
  41. package/dist/cursor/extension.js +60 -25
  42. package/dist/cursor/extension.js.map +1 -1
  43. package/dist/cursor/extension.mjs +60 -25
  44. package/dist/cursor/extension.mjs.map +1 -1
  45. package/dist/{express-DvVjR2H4.d.mts → express-4WStX3PV.d.mts} +1 -1
  46. package/dist/{express-714gJbaW.d.ts → express-C1ePFB7n.d.ts} +1 -1
  47. package/dist/gateway/gateway.d.mts +2 -2
  48. package/dist/gateway/gateway.d.ts +2 -2
  49. package/dist/gateway/gateway.js +60 -25
  50. package/dist/gateway/gateway.js.map +1 -1
  51. package/dist/gateway/gateway.mjs +60 -25
  52. package/dist/gateway/gateway.mjs.map +1 -1
  53. package/dist/git-trigger/git-hooks.d.mts +2 -2
  54. package/dist/git-trigger/git-hooks.d.ts +2 -2
  55. package/dist/{index-DYFS9QVb.d.mts → index-ChPX4WHl.d.mts} +1 -1
  56. package/dist/{index-DO0oG8ED.d.ts → index-Cjm-zBeZ.d.ts} +1 -1
  57. package/dist/{index-2WAlxs2G.d.ts → index-CzJMCgEy.d.ts} +1 -1
  58. package/dist/{index-P9t7M_dJ.d.mts → index-D8IEntil.d.mts} +1 -1
  59. package/dist/index.d.mts +22 -11
  60. package/dist/index.d.ts +22 -11
  61. package/dist/index.js +133 -42
  62. package/dist/index.js.map +1 -1
  63. package/dist/index.mjs +132 -42
  64. package/dist/index.mjs.map +1 -1
  65. package/dist/local-evaluator/evaluator.d.mts +2 -2
  66. package/dist/local-evaluator/evaluator.d.ts +2 -2
  67. package/dist/{nextjs-CZ-MwSOT.d.ts → nextjs-BIORS__0.d.ts} +1 -1
  68. package/dist/{nextjs-BCoH7EqF.d.mts → nextjs-CjzHdaXA.d.mts} +1 -1
  69. package/dist/registration/index.d.mts +76 -1
  70. package/dist/registration/index.d.ts +76 -1
  71. package/dist/registration/index.js +27 -2
  72. package/dist/registration/index.js.map +1 -1
  73. package/dist/registration/index.mjs +25 -1
  74. package/dist/registration/index.mjs.map +1 -1
  75. package/dist/{sdk-wwhFDXWX.d.mts → sdk-Chhz-FcT.d.mts} +9 -4
  76. package/dist/{sdk-kiA49vqJ.d.ts → sdk-CqTEQAc6.d.ts} +9 -4
  77. package/dist/transport/index.d.mts +2 -2
  78. package/dist/transport/index.d.ts +2 -2
  79. package/dist/{types-DOAb89cm.d.mts → types-DNK2BgIf.d.mts} +1 -1
  80. package/dist/{types-aucqzfUa.d.ts → types-DoWIuzfj.d.ts} +1 -1
  81. package/dist/{types-BwDmjIdr.d.mts → types-L15pYd2c.d.mts} +21 -4
  82. package/dist/{types-BwDmjIdr.d.ts → types-L15pYd2c.d.ts} +21 -4
  83. package/dist/ui/index.d.mts +1 -1
  84. package/dist/ui/index.d.ts +1 -1
  85. package/dist/ui/index.js +1 -1
  86. package/dist/ui/index.js.map +1 -1
  87. package/dist/ui/index.mjs +1 -1
  88. package/dist/ui/index.mjs.map +1 -1
  89. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { RequestHandler, Request } from 'express';
2
- import { i as VerificationResult, d as ExpressMiddlewareOptions, b as AstraSyncCredentials } from './types-BwDmjIdr.mjs';
2
+ import { i as VerificationResult, d as ExpressMiddlewareOptions, b as AstraSyncCredentials } from './types-L15pYd2c.mjs';
3
3
 
4
4
  /**
5
5
  * AstraSync Universal Verification Gateway - Express Middleware
@@ -1,5 +1,5 @@
1
1
  import { RequestHandler, Request } from 'express';
2
- import { i as VerificationResult, d as ExpressMiddlewareOptions, b as AstraSyncCredentials } from './types-BwDmjIdr.js';
2
+ import { i as VerificationResult, d as ExpressMiddlewareOptions, b as AstraSyncCredentials } from './types-L15pYd2c.js';
3
3
 
4
4
  /**
5
5
  * AstraSync Universal Verification Gateway - Express Middleware
@@ -1,5 +1,5 @@
1
- import { a as AstraSyncGatewayConfig, P as PDLSSContext, V as VerificationDecision } from '../types-DOAb89cm.mjs';
2
- import '../types-BwDmjIdr.mjs';
1
+ import { a as AstraSyncGatewayConfig, P as PDLSSContext, V as VerificationDecision } from '../types-DNK2BgIf.mjs';
2
+ import '../types-L15pYd2c.mjs';
3
3
 
4
4
  /**
5
5
  * AstraSyncGateway — Primary API surface for agent verification.
@@ -1,5 +1,5 @@
1
- import { a as AstraSyncGatewayConfig, P as PDLSSContext, V as VerificationDecision } from '../types-aucqzfUa.js';
2
- import '../types-BwDmjIdr.js';
1
+ import { a as AstraSyncGatewayConfig, P as PDLSSContext, V as VerificationDecision } from '../types-DoWIuzfj.js';
2
+ import '../types-L15pYd2c.js';
3
3
 
4
4
  /**
5
5
  * AstraSyncGateway — Primary API surface for agent verification.
@@ -3055,7 +3055,7 @@ function getTrustLevel(score) {
3055
3055
  }
3056
3056
 
3057
3057
  // src/version.ts
3058
- var SDK_VERSION = "2.4.7";
3058
+ var SDK_VERSION = "2.4.10";
3059
3059
 
3060
3060
  // src/verify.ts
3061
3061
  var DEFAULT_CONFIG = {
@@ -3066,8 +3066,10 @@ var DEFAULT_CONFIG = {
3066
3066
  // through (`hasMinimumAccess('guidance', 'guidance') === true`).
3067
3067
  defaultAccessLevel: "none",
3068
3068
  // minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
3069
- cacheTtl: 300,
3070
- // 5 minutes
3069
+ // Round-18.5 F4: cacheTtl deliberately unset. When undefined, cacheResult
3070
+ // applies the split default (60s autonomous / 300s step-up). When the
3071
+ // caller sets cacheTtl explicitly, that value is honoured uniformly.
3072
+ // Set cacheTtl: 0 to disable caching entirely.
3071
3073
  debug: false
3072
3074
  };
3073
3075
  var initCheckPerformed = false;
@@ -3094,11 +3096,28 @@ async function performInitCheck(apiBaseUrl, debug) {
3094
3096
  }
3095
3097
  }
3096
3098
  var verificationCache = /* @__PURE__ */ new Map();
3097
- function getCacheKey(credentials) {
3098
- return `${credentials.astraId || ""}-${credentials.apiKey || ""}-${credentials.jwt || ""}`;
3099
- }
3100
- function getCachedResult(credentials) {
3101
- const key = getCacheKey(credentials);
3099
+ function getCacheKey(request) {
3100
+ const c = request.credentials;
3101
+ return [
3102
+ c.astraId || "",
3103
+ c.apiKey || "",
3104
+ c.jwt || "",
3105
+ request.purpose || "",
3106
+ request.action || "",
3107
+ request.resourceType || "",
3108
+ request.resource || "",
3109
+ request.jurisdiction || "",
3110
+ request.transactionValue ?? "",
3111
+ request.currency || "",
3112
+ request.counterpartyUrl || "",
3113
+ request.counterpartyType || "",
3114
+ request.isSubAgentRequest ? "1" : "0",
3115
+ request.parentAgentId || "",
3116
+ request.subAgentDepth ?? ""
3117
+ ].join("|");
3118
+ }
3119
+ function getCachedResult(request) {
3120
+ const key = getCacheKey(request);
3102
3121
  const cached = verificationCache.get(key);
3103
3122
  if (cached && cached.expiresAt > Date.now()) {
3104
3123
  return cached.result;
@@ -3108,8 +3127,11 @@ function getCachedResult(credentials) {
3108
3127
  }
3109
3128
  return null;
3110
3129
  }
3111
- function cacheResult(credentials, result, ttlSeconds) {
3112
- const key = getCacheKey(credentials);
3130
+ var DEFAULT_AUTONOMOUS_TTL_SECONDS = 60;
3131
+ var DEFAULT_STEP_UP_TTL_SECONDS = 300;
3132
+ function cacheResult(request, result, configuredTtl) {
3133
+ const ttlSeconds = configuredTtl && configuredTtl > 0 ? configuredTtl : result.requiresStepUp ? DEFAULT_STEP_UP_TTL_SECONDS : DEFAULT_AUTONOMOUS_TTL_SECONDS;
3134
+ const key = getCacheKey(request);
3113
3135
  verificationCache.set(key, {
3114
3136
  result,
3115
3137
  expiresAt: Date.now() + ttlSeconds * 1e3
@@ -3138,12 +3160,17 @@ function createGuidanceResponse(config, reason, options = {}) {
3138
3160
  ]
3139
3161
  };
3140
3162
  return {
3141
- verified: false,
3163
+ // Round-18 G4: createGuidanceResponse fires for unverified-agent path or
3164
+ // API-error fallback. Identity is not verified (no agent resolved);
3165
+ // policy is not evaluated (we never reached the gate).
3166
+ identityVerified: false,
3167
+ policyAllowed: false,
3142
3168
  // v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
3143
- // Adapters additionally short-circuit on `verified === false` before
3144
- // the gate check, but the access level still has to be honest at the
3145
- // data layer so downstream consumers (SDK adapters in other languages,
3146
- // custom integrations) inherit the correct semantics.
3169
+ // Adapters additionally short-circuit on `!identityVerified ||
3170
+ // !policyAllowed` before the gate check, but the access level still has
3171
+ // to be honest at the data layer so downstream consumers (SDK adapters
3172
+ // in other languages, custom integrations) inherit the correct
3173
+ // semantics.
3147
3174
  accessLevel: "none",
3148
3175
  guidance,
3149
3176
  denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
@@ -3259,8 +3286,8 @@ async function verify(config, request) {
3259
3286
  "[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."
3260
3287
  );
3261
3288
  }
3262
- if (mergedConfig.cacheTtl && mergedConfig.cacheTtl > 0) {
3263
- const cached = getCachedResult(request.credentials);
3289
+ if (mergedConfig.cacheTtl !== 0) {
3290
+ const cached = getCachedResult(request);
3264
3291
  if (cached) {
3265
3292
  if (mergedConfig.debug) {
3266
3293
  console.log("[VerificationGateway] Returning cached result");
@@ -3287,15 +3314,17 @@ async function verify(config, request) {
3287
3314
  }
3288
3315
  if (!apiResponse.access?.allowed) {
3289
3316
  const aggregatedFailures = apiResponse.access?.failures;
3317
+ const idVerifiedFromBackend = apiResponse.verificationContext?.idVerified === true;
3290
3318
  const result2 = {
3291
- verified: false,
3319
+ identityVerified: idVerifiedFromBackend,
3320
+ policyAllowed: false,
3292
3321
  // v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
3293
3322
  // Pre-rename this hardcoded `'guidance'`, which conflated with the
3294
3323
  // colocated `guidance: {...}` help-payload object below and let
3295
3324
  // denied requests pass any route gated at `'guidance'` because
3296
3325
  // `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
3297
- // ALSO short-circuit on `verified === false` before the gate check —
3298
- // belt-and-braces.
3326
+ // ALSO short-circuit on `!identityVerified || !policyAllowed` before
3327
+ // the gate check — belt-and-braces.
3299
3328
  accessLevel: "none",
3300
3329
  denialReasons: aggregatedFailures && aggregatedFailures.length > 0 ? aggregatedFailures.map((f) => f.message) : apiResponse.access?.reason ? [apiResponse.access.reason] : ["Access denied"],
3301
3330
  failures: aggregatedFailures,
@@ -3339,7 +3368,13 @@ async function verify(config, request) {
3339
3368
  const verificationContext = apiResponse.verificationContext;
3340
3369
  const accessLevel = apiResponse.access?.accessLevel ?? "standard";
3341
3370
  const result = {
3342
- verified: true,
3371
+ // Round-18 G4: backend allowed access. Identity is verified (we resolved
3372
+ // the caller to an agent) and policy passed all gates. Read idVerified
3373
+ // from verificationContext for symmetry with the deny branch; default true
3374
+ // on success path since `access.allowed === true` implies identity was
3375
+ // resolvable (anonymous-allow paths flow through createGuidanceResponse).
3376
+ identityVerified: apiResponse.verificationContext?.idVerified !== false,
3377
+ policyAllowed: true,
3343
3378
  accessLevel,
3344
3379
  agent,
3345
3380
  developer,
@@ -3362,7 +3397,7 @@ async function verify(config, request) {
3362
3397
  warningHeader: apiResponse.warningHeader
3363
3398
  };
3364
3399
  if (result.recommendation === "deny") {
3365
- result.verified = false;
3400
+ result.policyAllowed = false;
3366
3401
  result.accessLevel = "none";
3367
3402
  result.denialReasons = result.recommendationReasons || [
3368
3403
  "Access denied by AstraSync recommendation"
@@ -3381,8 +3416,8 @@ async function verify(config, request) {
3381
3416
  }
3382
3417
  result.denialReasons = result.recommendationReasons || ["Step-up verification required"];
3383
3418
  }
3384
- if (mergedConfig.cacheTtl && mergedConfig.cacheTtl > 0 && result.recommendation !== "deny") {
3385
- cacheResult(request.credentials, result, mergedConfig.cacheTtl);
3419
+ if (mergedConfig.cacheTtl !== 0 && result.recommendation !== "deny") {
3420
+ cacheResult(request, result, mergedConfig.cacheTtl);
3386
3421
  }
3387
3422
  return result;
3388
3423
  }
@@ -3454,7 +3489,7 @@ function toVerificationRequest(context, astraId) {
3454
3489
  };
3455
3490
  }
3456
3491
  function toDecision(result) {
3457
- if (result.verified) {
3492
+ if (result.identityVerified && result.policyAllowed) {
3458
3493
  return {
3459
3494
  recommendation: "ALLOW",
3460
3495
  reason: `Verified with access level: ${result.accessLevel}`,