@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,4 +1,4 @@
1
1
  import 'next/server';
2
- import '../types-C0zfSXMB.mjs';
3
- export { c as createMatcherConfig, a as createMiddleware } from '../nextjs-DlX6xwbU.mjs';
2
+ import '../types-CJjZvPr9.mjs';
3
+ export { c as createMatcherConfig, a as createMiddleware } from '../nextjs-B1sBdEav.mjs';
4
4
  import '../metadata-capture.mjs';
@@ -1,4 +1,4 @@
1
1
  import 'next/server';
2
- import '../types-DwSfO7Sb.js';
3
- export { c as createMatcherConfig, a as createMiddleware } from '../nextjs-DL6uE1ye.js';
2
+ import '../types-BK2POWNc.js';
3
+ export { c as createMatcherConfig, a as createMiddleware } from '../nextjs-DoRmhV_Z.js';
4
4
  import '../metadata-capture.js';
@@ -36,7 +36,7 @@ __export(nextjs_exports, {
36
36
  module.exports = __toCommonJS(nextjs_exports);
37
37
 
38
38
  // src/version.ts
39
- var SDK_VERSION = "4.5.1";
39
+ var SDK_VERSION = "5.0.0";
40
40
 
41
41
  // src/http.ts
42
42
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -114,7 +114,7 @@ async function awaitStepUpApproval(config, approval) {
114
114
  return "timeout";
115
115
  }
116
116
 
117
- // src/access-levels.ts
117
+ // src/trust-levels.ts
118
118
  function getTrustLevel(score) {
119
119
  if (score >= 80) return "PLATINUM";
120
120
  if (score >= 60) return "GOLD";
@@ -132,11 +132,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
132
132
  // src/verify.ts
133
133
  var DEFAULT_CONFIG = {
134
134
  apiBaseUrl: "https://astrasync.ai/api",
135
- // v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
136
- // access). Pre-rename this defaulted to `'guidance'`, which combined with
137
- // a route gated at `'guidance'` to silently let unverified traffic
138
- // through (`hasMinimumAccess('guidance', 'guidance') === true`).
139
- defaultAccessLevel: "none",
140
135
  // minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
141
136
  // cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
142
137
  // default; the caller's explicit value is honoured for cacheable results.
@@ -331,13 +326,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
331
326
  // policy is not evaluated (we never reached the gate).
332
327
  identityVerified: false,
333
328
  policyAllowed: false,
334
- // v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
335
- // Adapters additionally short-circuit on `!identityVerified ||
336
- // !policyAllowed` before the gate check, but the access level still has
337
- // to be honest at the data layer so downstream consumers (SDK adapters
338
- // in other languages, custom integrations) inherit the correct
339
- // semantics.
340
- accessLevel: "none",
341
329
  guidance,
342
330
  denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
343
331
  // Round-10 (#47, O5): on API-error fallback, surface a typed failure so
@@ -360,6 +348,11 @@ function createGuidanceResponse(_config, reason, options = {}) {
360
348
  // 4.0.0: typed marker so adapters render the misconfig envelope (503 +
361
349
  // MERCHANT_VERIFICATION_MISCONFIGURED) without string-matching.
362
350
  ...isMisconfig && { misconfigured: true },
351
+ // 4.6.0: a transient api_error is retryable — mark it so consumers surface
352
+ // "temporarily unavailable, retry" (recommendation 'error') instead of
353
+ // coercing the absent recommendation to a policy 'deny'. Misconfig is
354
+ // deterministic and intentionally NOT marked retryable.
355
+ ...isApiError && { retryable: true },
363
356
  correlationId: options.correlationId,
364
357
  attemptId: options.attemptId,
365
358
  verifiedAt: /* @__PURE__ */ new Date()
@@ -426,7 +419,6 @@ async function callVerifyAccessAPI(config, request) {
426
419
  attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
427
420
  access: {
428
421
  allowed: false,
429
- accessLevel: "none",
430
422
  reason: "endpoint_deactivated",
431
423
  failures: [
432
424
  {
@@ -489,7 +481,7 @@ async function verify(config, request, options) {
489
481
  if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
490
482
  deprecationWarningShown = true;
491
483
  console.warn(
492
- "[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."
484
+ "[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."
493
485
  );
494
486
  }
495
487
  if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
@@ -535,14 +527,6 @@ async function verify(config, request, options) {
535
527
  const result2 = {
536
528
  identityVerified: idVerifiedFromBackend,
537
529
  policyAllowed: false,
538
- // v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
539
- // Pre-rename this hardcoded `'guidance'`, which conflated with the
540
- // colocated `guidance: {...}` help-payload object below and let
541
- // denied requests pass any route gated at `'guidance'` because
542
- // `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
543
- // ALSO short-circuit on `!identityVerified || !policyAllowed` before
544
- // the gate check — belt-and-braces.
545
- accessLevel: "none",
546
530
  // 3.6.0: the server now emits top-level denialReasons on every deny
547
531
  // path — prefer it verbatim; the failure-message reconstruction remains
548
532
  // as the fallback for older backends.
@@ -591,7 +575,6 @@ async function verify(config, request, options) {
591
575
  trustScore: apiResponse.organization.trustScore
592
576
  } : void 0;
593
577
  const verificationContext = apiResponse.verificationContext;
594
- const accessLevel = apiResponse.access?.accessLevel ?? "standard";
595
578
  const result = {
596
579
  // 4.5.0 (probe F1): read idVerified from verificationContext with the
597
580
  // SAME absent⇒false default as the deny branch. The previous `!== false`
@@ -603,7 +586,6 @@ async function verify(config, request, options) {
603
586
  // this load-bearing must never be defaulted on.
604
587
  identityVerified: apiResponse.verificationContext?.idVerified === true,
605
588
  policyAllowed: true,
606
- accessLevel,
607
589
  agent,
608
590
  developer,
609
591
  organization,
@@ -630,7 +612,6 @@ async function verify(config, request, options) {
630
612
  };
631
613
  if (result.recommendation === "deny") {
632
614
  result.policyAllowed = false;
633
- result.accessLevel = "none";
634
615
  result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
635
616
  result.guidance = result.runtimeChallenge ? {
636
617
  message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
@@ -1765,7 +1746,7 @@ function createMiddleware(options) {
1765
1746
  beaconPassThrough?.(request, pathname);
1766
1747
  return NextResponse.next();
1767
1748
  }
1768
- if (routeConfig.minAccessLevel === "none") {
1749
+ if (routeConfig.observe) {
1769
1750
  beaconPassThrough?.(request, pathname);
1770
1751
  return NextResponse.next();
1771
1752
  }
@@ -1795,7 +1776,6 @@ function createMiddleware(options) {
1795
1776
  const preCheckResult = {
1796
1777
  identityVerified: false,
1797
1778
  policyAllowed: false,
1798
- accessLevel: "none",
1799
1779
  denialReasons: preCheckFailures.map((f) => f.message),
1800
1780
  guidance: {
1801
1781
  message: "Request exceeds counterparty-defined PDLSS limits.",
@@ -1933,7 +1913,6 @@ function createMiddleware(options) {
1933
1913
  }
1934
1914
  response.headers.set("X-AstraSync-Identity-Verified", result.identityVerified.toString());
1935
1915
  response.headers.set("X-AstraSync-Policy-Allowed", result.policyAllowed.toString());
1936
- response.headers.set("X-AstraSync-Access-Level", result.accessLevel);
1937
1916
  if (result.agent) {
1938
1917
  response.headers.set("X-AstraSync-Agent-Id", result.agent.astraId);
1939
1918
  }