@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,5 +1,5 @@
1
1
  // src/version.ts
2
- var SDK_VERSION = "4.5.1";
2
+ var SDK_VERSION = "5.0.0";
3
3
 
4
4
  // src/http.ts
5
5
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -19,84 +19,13 @@ function withUserAgent(initHeaders) {
19
19
  }
20
20
  var sdkFetch = (input, init) => fetch(input, { ...init, headers: withUserAgent(init?.headers) });
21
21
 
22
- // src/access-levels.ts
23
- var ACCESS_LEVEL_HIERARCHY = {
24
- none: 0,
25
- restricted: 1,
26
- "read-only": 2,
27
- standard: 3,
28
- full: 4,
29
- internal: 5
30
- };
22
+ // src/trust-levels.ts
31
23
  function getTrustLevel(score) {
32
24
  if (score >= 80) return "PLATINUM";
33
25
  if (score >= 60) return "GOLD";
34
26
  if (score >= 40) return "SILVER";
35
27
  return "BRONZE";
36
28
  }
37
- function hasMinimumAccess(actual, required) {
38
- return ACCESS_LEVEL_HIERARCHY[actual] >= ACCESS_LEVEL_HIERARCHY[required];
39
- }
40
- function getCapabilities(accessLevel) {
41
- switch (accessLevel) {
42
- case "none":
43
- return {
44
- canRead: false,
45
- canWrite: false,
46
- canDelete: false,
47
- canAdmin: false,
48
- canAccessInternal: false
49
- };
50
- case "restricted":
51
- return {
52
- canRead: false,
53
- canWrite: false,
54
- canDelete: false,
55
- canAdmin: false,
56
- canAccessInternal: false
57
- };
58
- case "read-only":
59
- return {
60
- canRead: true,
61
- canWrite: false,
62
- canDelete: false,
63
- canAdmin: false,
64
- canAccessInternal: false
65
- };
66
- case "standard":
67
- return {
68
- canRead: true,
69
- canWrite: true,
70
- canDelete: false,
71
- canAdmin: false,
72
- canAccessInternal: false
73
- };
74
- case "full":
75
- return {
76
- canRead: true,
77
- canWrite: true,
78
- canDelete: true,
79
- canAdmin: false,
80
- canAccessInternal: false
81
- };
82
- case "internal":
83
- return {
84
- canRead: true,
85
- canWrite: true,
86
- canDelete: true,
87
- canAdmin: true,
88
- canAccessInternal: true
89
- };
90
- default:
91
- return {
92
- canRead: false,
93
- canWrite: false,
94
- canDelete: false,
95
- canAdmin: false,
96
- canAccessInternal: false
97
- };
98
- }
99
- }
100
29
 
101
30
  // src/well-known.ts
102
31
  var CACHE_TTL_MS = 60 * 60 * 1e3;
@@ -108,11 +37,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
108
37
  // src/verify.ts
109
38
  var DEFAULT_CONFIG = {
110
39
  apiBaseUrl: "https://astrasync.ai/api",
111
- // v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
112
- // access). Pre-rename this defaulted to `'guidance'`, which combined with
113
- // a route gated at `'guidance'` to silently let unverified traffic
114
- // through (`hasMinimumAccess('guidance', 'guidance') === true`).
115
- defaultAccessLevel: "none",
116
40
  // minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
117
41
  // cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
118
42
  // default; the caller's explicit value is honoured for cacheable results.
@@ -276,13 +200,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
276
200
  // policy is not evaluated (we never reached the gate).
277
201
  identityVerified: false,
278
202
  policyAllowed: false,
279
- // v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
280
- // Adapters additionally short-circuit on `!identityVerified ||
281
- // !policyAllowed` before the gate check, but the access level still has
282
- // to be honest at the data layer so downstream consumers (SDK adapters
283
- // in other languages, custom integrations) inherit the correct
284
- // semantics.
285
- accessLevel: "none",
286
203
  guidance,
287
204
  denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
288
205
  // Round-10 (#47, O5): on API-error fallback, surface a typed failure so
@@ -305,6 +222,11 @@ function createGuidanceResponse(_config, reason, options = {}) {
305
222
  // 4.0.0: typed marker so adapters render the misconfig envelope (503 +
306
223
  // MERCHANT_VERIFICATION_MISCONFIGURED) without string-matching.
307
224
  ...isMisconfig && { misconfigured: true },
225
+ // 4.6.0: a transient api_error is retryable — mark it so consumers surface
226
+ // "temporarily unavailable, retry" (recommendation 'error') instead of
227
+ // coercing the absent recommendation to a policy 'deny'. Misconfig is
228
+ // deterministic and intentionally NOT marked retryable.
229
+ ...isApiError && { retryable: true },
308
230
  correlationId: options.correlationId,
309
231
  attemptId: options.attemptId,
310
232
  verifiedAt: /* @__PURE__ */ new Date()
@@ -371,7 +293,6 @@ async function callVerifyAccessAPI(config, request) {
371
293
  attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
372
294
  access: {
373
295
  allowed: false,
374
- accessLevel: "none",
375
296
  reason: "endpoint_deactivated",
376
297
  failures: [
377
298
  {
@@ -434,7 +355,7 @@ async function verify(config, request, options) {
434
355
  if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
435
356
  deprecationWarningShown = true;
436
357
  console.warn(
437
- "[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."
358
+ "[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."
438
359
  );
439
360
  }
440
361
  if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
@@ -480,14 +401,6 @@ async function verify(config, request, options) {
480
401
  const result2 = {
481
402
  identityVerified: idVerifiedFromBackend,
482
403
  policyAllowed: false,
483
- // v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
484
- // Pre-rename this hardcoded `'guidance'`, which conflated with the
485
- // colocated `guidance: {...}` help-payload object below and let
486
- // denied requests pass any route gated at `'guidance'` because
487
- // `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
488
- // ALSO short-circuit on `!identityVerified || !policyAllowed` before
489
- // the gate check — belt-and-braces.
490
- accessLevel: "none",
491
404
  // 3.6.0: the server now emits top-level denialReasons on every deny
492
405
  // path — prefer it verbatim; the failure-message reconstruction remains
493
406
  // as the fallback for older backends.
@@ -536,7 +449,6 @@ async function verify(config, request, options) {
536
449
  trustScore: apiResponse.organization.trustScore
537
450
  } : void 0;
538
451
  const verificationContext = apiResponse.verificationContext;
539
- const accessLevel = apiResponse.access?.accessLevel ?? "standard";
540
452
  const result = {
541
453
  // 4.5.0 (probe F1): read idVerified from verificationContext with the
542
454
  // SAME absent⇒false default as the deny branch. The previous `!== false`
@@ -548,7 +460,6 @@ async function verify(config, request, options) {
548
460
  // this load-bearing must never be defaulted on.
549
461
  identityVerified: apiResponse.verificationContext?.idVerified === true,
550
462
  policyAllowed: true,
551
- accessLevel,
552
463
  agent,
553
464
  developer,
554
465
  organization,
@@ -575,7 +486,6 @@ async function verify(config, request, options) {
575
486
  };
576
487
  if (result.recommendation === "deny") {
577
488
  result.policyAllowed = false;
578
- result.accessLevel = "none";
579
489
  result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
580
490
  result.guidance = result.runtimeChallenge ? {
581
491
  message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
@@ -604,7 +514,6 @@ async function quickVerify(config, credentials) {
604
514
  return {
605
515
  identityVerified: result.identityVerified,
606
516
  policyAllowed: result.policyAllowed,
607
- accessLevel: result.accessLevel,
608
517
  reason: result.denialReasons?.[0]
609
518
  };
610
519
  }
@@ -615,7 +524,6 @@ var VerificationGatewayClient = class {
615
524
  this.config = {
616
525
  apiBaseUrl: options.apiBaseUrl,
617
526
  apiKey: options.apiKey,
618
- defaultAccessLevel: options.defaultAccessLevel,
619
527
  minTrustScore: options.minTrustScore,
620
528
  minTrustScoreForFull: options.minTrustScoreForFull,
621
529
  cacheTtl: options.cacheTtl,
@@ -664,26 +572,6 @@ var VerificationGatewayClient = class {
664
572
  async quickVerify(credentials) {
665
573
  return this.executeWithRetry(() => quickVerify(this.config, credentials));
666
574
  }
667
- /**
668
- * Check if an agent has a specific access level.
669
- *
670
- * @deprecated 3.2.0 — the access-level band is informational only; it no
671
- * longer gates in the middleware adapters (post-3.1.0 feedback #1). This
672
- * explicit opt-in query still works, but prefer gating on the server-side
673
- * policy decision (identity + policy + trust) or per-route `minTrustScore`.
674
- * Explicit per-route condition→constraint rules are the Phase-2 successor.
675
- */
676
- async hasAccess(credentials, requiredLevel) {
677
- const result = await this.quickVerify(credentials);
678
- return hasMinimumAccess(result.accessLevel, requiredLevel);
679
- }
680
- /**
681
- * Get capabilities for a verified agent
682
- */
683
- async getCapabilities(credentials) {
684
- const result = await this.quickVerify(credentials);
685
- return getCapabilities(result.accessLevel);
686
- }
687
575
  /**
688
576
  * Verify a specific ASTRA-ID
689
577
  */
@@ -745,9 +633,7 @@ async function verifyOnce(options) {
745
633
  export {
746
634
  VerificationGatewayClient,
747
635
  createClient,
748
- getCapabilities,
749
636
  getTrustLevel,
750
- hasMinimumAccess,
751
637
  verifyOnce
752
638
  };
753
639
  //# sourceMappingURL=sdk.mjs.map