@astrasyncai/verification-gateway 4.6.0 → 5.1.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 (135) 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 +25 -35
  6. package/dist/adapters/express.js.map +1 -1
  7. package/dist/adapters/express.mjs +25 -35
  8. package/dist/adapters/express.mjs.map +1 -1
  9. package/dist/adapters/mcp.d.mts +2 -2
  10. package/dist/adapters/mcp.d.ts +2 -2
  11. package/dist/adapters/mcp.js +42 -67
  12. package/dist/adapters/mcp.js.map +1 -1
  13. package/dist/adapters/mcp.mjs +41 -66
  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 +23 -32
  18. package/dist/adapters/nextjs.js.map +1 -1
  19. package/dist/adapters/nextjs.mjs +23 -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 +22 -126
  24. package/dist/adapters/sdk.js.map +1 -1
  25. package/dist/adapters/sdk.mjs +22 -124
  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/agent/index.js +1 -1
  30. package/dist/agent/index.js.map +1 -1
  31. package/dist/agent/index.mjs +1 -1
  32. package/dist/agent/index.mjs.map +1 -1
  33. package/dist/bin/astrasync-claude-hook.js +23 -31
  34. package/dist/bin/astrasync-codex-hook.js +23 -31
  35. package/dist/bin/astrasync-guard.js +23 -31
  36. package/dist/bin/astrasync.js +28 -36
  37. package/dist/browser/background.js +23 -31
  38. package/dist/browser/background.js.map +1 -1
  39. package/dist/browser/background.mjs +23 -31
  40. package/dist/browser/background.mjs.map +1 -1
  41. package/dist/browser/browser-adapter.d.mts +2 -2
  42. package/dist/browser/browser-adapter.d.ts +2 -2
  43. package/dist/claude-code/claude-code-adapter.d.mts +2 -2
  44. package/dist/claude-code/claude-code-adapter.d.ts +2 -2
  45. package/dist/cli/index.d.mts +2 -2
  46. package/dist/cli/index.d.ts +2 -2
  47. package/dist/cli/index.js +1 -1
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/cli/index.mjs +1 -1
  50. package/dist/cli/index.mjs.map +1 -1
  51. package/dist/codex/index.d.mts +2 -2
  52. package/dist/codex/index.d.ts +2 -2
  53. package/dist/codex/index.js +23 -31
  54. package/dist/codex/index.js.map +1 -1
  55. package/dist/codex/index.mjs +23 -31
  56. package/dist/codex/index.mjs.map +1 -1
  57. package/dist/cursor/cursor-adapter.d.mts +2 -2
  58. package/dist/cursor/cursor-adapter.d.ts +2 -2
  59. package/dist/cursor/extension.d.mts +2 -2
  60. package/dist/cursor/extension.d.ts +2 -2
  61. package/dist/cursor/extension.js +23 -31
  62. package/dist/cursor/extension.js.map +1 -1
  63. package/dist/cursor/extension.mjs +23 -31
  64. package/dist/cursor/extension.mjs.map +1 -1
  65. package/dist/edge-config.d.mts +1 -1
  66. package/dist/edge-config.d.ts +1 -1
  67. package/dist/edge-config.js +1 -1
  68. package/dist/edge-config.js.map +1 -1
  69. package/dist/edge-config.mjs +1 -1
  70. package/dist/edge-config.mjs.map +1 -1
  71. package/dist/edge-core/index.d.mts +12 -3
  72. package/dist/edge-core/index.d.ts +12 -3
  73. package/dist/edge-core/index.js +42 -36
  74. package/dist/edge-core/index.js.map +1 -1
  75. package/dist/edge-core/index.mjs +42 -36
  76. package/dist/edge-core/index.mjs.map +1 -1
  77. package/dist/{express-DBtPKXOL.d.mts → express-KkBZBMqi.d.mts} +1 -1
  78. package/dist/{express-D-8Ks2Uo.d.ts → express-xK8pRrmj.d.ts} +1 -1
  79. package/dist/gateway/gateway.d.mts +2 -2
  80. package/dist/gateway/gateway.d.ts +2 -2
  81. package/dist/gateway/gateway.js +23 -31
  82. package/dist/gateway/gateway.js.map +1 -1
  83. package/dist/gateway/gateway.mjs +23 -31
  84. package/dist/gateway/gateway.mjs.map +1 -1
  85. package/dist/git-trigger/git-hooks.d.mts +2 -2
  86. package/dist/git-trigger/git-hooks.d.ts +2 -2
  87. package/dist/{index-kGCGWd5x.d.mts → index-DIRzR5IS.d.mts} +1 -1
  88. package/dist/{index-DlZORQsb.d.ts → index-DLQ4Rcuc.d.ts} +1 -1
  89. package/dist/{index-CUfmJ1Dq.d.mts → index-GPDn_EGI.d.mts} +1 -1
  90. package/dist/{index-BND3kQev.d.ts → index-Hnz5VyMR.d.ts} +1 -1
  91. package/dist/index.d.mts +14 -10
  92. package/dist/index.d.ts +14 -10
  93. package/dist/index.js +44 -219
  94. package/dist/index.js.map +1 -1
  95. package/dist/index.mjs +44 -212
  96. package/dist/index.mjs.map +1 -1
  97. package/dist/local-evaluator/evaluator.d.mts +2 -2
  98. package/dist/local-evaluator/evaluator.d.ts +2 -2
  99. package/dist/local-evaluator/evaluator.js.map +1 -1
  100. package/dist/local-evaluator/evaluator.mjs.map +1 -1
  101. package/dist/{mcp-DToTlwIn.d.ts → mcp-DPpu4xQz.d.ts} +53 -52
  102. package/dist/{mcp-ZRN4kY3b.d.mts → mcp-Dju_Sr1o.d.mts} +53 -52
  103. package/dist/{nextjs-C0KASOy_.d.mts → nextjs-BuoDBN4g.d.mts} +1 -1
  104. package/dist/{nextjs-lwNvWYWT.d.ts → nextjs-rZKzY_8o.d.ts} +1 -1
  105. package/dist/registration/index.js +1 -1
  106. package/dist/registration/index.js.map +1 -1
  107. package/dist/registration/index.mjs +1 -1
  108. package/dist/registration/index.mjs.map +1 -1
  109. package/dist/sdk-CdO6TIEf.d.mts +142 -0
  110. package/dist/sdk-DxHuIJBm.d.ts +142 -0
  111. package/dist/transport/index.d.mts +2 -2
  112. package/dist/transport/index.d.ts +2 -2
  113. package/dist/transport/index.js +1 -1
  114. package/dist/transport/index.js.map +1 -1
  115. package/dist/transport/index.mjs +1 -1
  116. package/dist/transport/index.mjs.map +1 -1
  117. package/dist/{types-DhhJxKIC.d.ts → types-3UV7IZx7.d.ts} +1 -3
  118. package/dist/{types-CGPU7HLi.d.ts → types-CNBaZKxY.d.ts} +24 -50
  119. package/dist/{types-Cx9hTpKI.d.mts → types-CSHcByFX.d.mts} +24 -50
  120. package/dist/{types-CfSJLS4i.d.mts → types-CoDjpbVY.d.mts} +1 -3
  121. package/dist/ui/index.d.mts +2 -17
  122. package/dist/ui/index.d.ts +2 -17
  123. package/dist/ui/index.js +1 -43
  124. package/dist/ui/index.js.map +1 -1
  125. package/dist/ui/index.mjs +1 -42
  126. package/dist/ui/index.mjs.map +1 -1
  127. package/dist/verify.d.mts +3 -4
  128. package/dist/verify.d.ts +3 -4
  129. package/dist/verify.js +22 -30
  130. package/dist/verify.js.map +1 -1
  131. package/dist/verify.mjs +22 -30
  132. package/dist/verify.mjs.map +1 -1
  133. package/package.json +1 -1
  134. package/dist/sdk-B4aodEwj.d.ts +0 -215
  135. package/dist/sdk-B9dSwum7.d.mts +0 -215
@@ -1,5 +1,5 @@
1
1
  import { RequestHandler, Request } from 'express';
2
- import { x as VerificationResult, k as ExpressMiddlewareOptions, c as AstraSyncCredentials } from './types-Cx9hTpKI.mjs';
2
+ import { w as VerificationResult, j as ExpressMiddlewareOptions, b as AstraSyncCredentials } from './types-CSHcByFX.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 { x as VerificationResult, k as ExpressMiddlewareOptions, c as AstraSyncCredentials } from './types-CGPU7HLi.js';
2
+ import { w as VerificationResult, j as ExpressMiddlewareOptions, b as AstraSyncCredentials } from './types-CNBaZKxY.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-CfSJLS4i.mjs';
2
- import '../types-Cx9hTpKI.mjs';
1
+ import { a as AstraSyncGatewayConfig, P as PDLSSContext, V as VerificationDecision } from '../types-CoDjpbVY.mjs';
2
+ import '../types-CSHcByFX.mjs';
3
3
  import '../metadata-capture.mjs';
4
4
 
5
5
  /**
@@ -1,5 +1,5 @@
1
- import { a as AstraSyncGatewayConfig, P as PDLSSContext, V as VerificationDecision } from '../types-DhhJxKIC.js';
2
- import '../types-CGPU7HLi.js';
1
+ import { a as AstraSyncGatewayConfig, P as PDLSSContext, V as VerificationDecision } from '../types-3UV7IZx7.js';
2
+ import '../types-CNBaZKxY.js';
3
3
  import '../metadata-capture.js';
4
4
 
5
5
  /**
@@ -3731,7 +3731,7 @@ function verifyLocal(evaluator, context) {
3731
3731
  return evaluator.evaluate(context);
3732
3732
  }
3733
3733
 
3734
- // src/access-levels.ts
3734
+ // src/trust-levels.ts
3735
3735
  function getTrustLevel(score) {
3736
3736
  if (score >= 80) return "PLATINUM";
3737
3737
  if (score >= 60) return "GOLD";
@@ -3740,7 +3740,7 @@ function getTrustLevel(score) {
3740
3740
  }
3741
3741
 
3742
3742
  // src/version.ts
3743
- var SDK_VERSION = "4.6.0";
3743
+ var SDK_VERSION = "5.0.0";
3744
3744
 
3745
3745
  // src/http.ts
3746
3746
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -3770,11 +3770,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
3770
3770
  // src/verify.ts
3771
3771
  var DEFAULT_CONFIG = {
3772
3772
  apiBaseUrl: "https://astrasync.ai/api",
3773
- // v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
3774
- // access). Pre-rename this defaulted to `'guidance'`, which combined with
3775
- // a route gated at `'guidance'` to silently let unverified traffic
3776
- // through (`hasMinimumAccess('guidance', 'guidance') === true`).
3777
- defaultAccessLevel: "none",
3778
3773
  // minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
3779
3774
  // cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
3780
3775
  // default; the caller's explicit value is honoured for cacheable results.
@@ -3897,6 +3892,14 @@ function cacheResult(request, result, configuredTtl, counterpartyId) {
3897
3892
  expiresAt: Date.now() + ttlSeconds * 1e3
3898
3893
  });
3899
3894
  }
3895
+ function mcpGuidance(urls) {
3896
+ if (!urls?.mcpEndpoint) return void 0;
3897
+ return {
3898
+ endpoint: urls.mcpEndpoint,
3899
+ discoveryUrl: urls.mcpDiscoveryUrl,
3900
+ message: "If you are operating inside an MCP-capable host (Claude, ChatGPT, Cursor, or any MCP client), add the AstraSync MCP connector instead of integrating these URLs by hand: registration through the connector is KEYLESS and HUMAN-APPROVED \u2014 your human approves in an in-chat card, and you never see, hold, or transmit an API key, password, or private key."
3901
+ };
3902
+ }
3900
3903
  function createGuidanceResponse(_config, reason, options = {}) {
3901
3904
  const source = options.source ?? "no_credentials";
3902
3905
  const isApiError = source === "api_error";
@@ -3923,11 +3926,17 @@ function createGuidanceResponse(_config, reason, options = {}) {
3923
3926
  registrationUrl: urls?.registrationUrl ?? "",
3924
3927
  documentationUrl: urls?.documentationUrl ?? "",
3925
3928
  steps: [
3929
+ // MCP steering leads when the hosted bridge is advertised — the
3930
+ // connector is the agent-actionable path (keyless, human-approved).
3931
+ ...urls?.mcpEndpoint ? [
3932
+ `Fastest path (inside an MCP host): add the AstraSync MCP connector at ${urls.mcpEndpoint} \u2014 keyless, human-approved registration`
3933
+ ] : [],
3926
3934
  "Register for an AstraSync account",
3927
3935
  "Create and register your agent",
3928
3936
  "Add your ASTRA-ID to request headers",
3929
3937
  "Retry your request"
3930
- ]
3938
+ ],
3939
+ ...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
3931
3940
  };
3932
3941
  return {
3933
3942
  // Round-18 G4: createGuidanceResponse fires for unverified-agent path or
@@ -3935,13 +3944,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
3935
3944
  // policy is not evaluated (we never reached the gate).
3936
3945
  identityVerified: false,
3937
3946
  policyAllowed: false,
3938
- // v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
3939
- // Adapters additionally short-circuit on `!identityVerified ||
3940
- // !policyAllowed` before the gate check, but the access level still has
3941
- // to be honest at the data layer so downstream consumers (SDK adapters
3942
- // in other languages, custom integrations) inherit the correct
3943
- // semantics.
3944
- accessLevel: "none",
3945
3947
  guidance,
3946
3948
  denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
3947
3949
  // Round-10 (#47, O5): on API-error fallback, surface a typed failure so
@@ -4035,7 +4037,6 @@ async function callVerifyAccessAPI(config, request) {
4035
4037
  attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
4036
4038
  access: {
4037
4039
  allowed: false,
4038
- accessLevel: "none",
4039
4040
  reason: "endpoint_deactivated",
4040
4041
  failures: [
4041
4042
  {
@@ -4098,7 +4099,7 @@ async function verify(config, request, options) {
4098
4099
  if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
4099
4100
  deprecationWarningShown = true;
4100
4101
  console.warn(
4101
- "[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."
4102
+ "[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."
4102
4103
  );
4103
4104
  }
4104
4105
  if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
@@ -4144,14 +4145,6 @@ async function verify(config, request, options) {
4144
4145
  const result2 = {
4145
4146
  identityVerified: idVerifiedFromBackend,
4146
4147
  policyAllowed: false,
4147
- // v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
4148
- // Pre-rename this hardcoded `'guidance'`, which conflated with the
4149
- // colocated `guidance: {...}` help-payload object below and let
4150
- // denied requests pass any route gated at `'guidance'` because
4151
- // `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
4152
- // ALSO short-circuit on `!identityVerified || !policyAllowed` before
4153
- // the gate check — belt-and-braces.
4154
- accessLevel: "none",
4155
4148
  // 3.6.0: the server now emits top-level denialReasons on every deny
4156
4149
  // path — prefer it verbatim; the failure-message reconstruction remains
4157
4150
  // as the fallback for older backends.
@@ -4162,7 +4155,10 @@ async function verify(config, request, options) {
4162
4155
  guidance: {
4163
4156
  message: apiResponse.access?.reason || "Access denied by PDLSS policy",
4164
4157
  registrationUrl: urls?.registrationUrl ?? "",
4165
- documentationUrl: urls?.documentationUrl ?? ""
4158
+ documentationUrl: urls?.documentationUrl ?? "",
4159
+ // 5.1.0: anonymous callers land on this branch — steer MCP-hosted
4160
+ // agents to the connector (this is what the edge deny body surfaces).
4161
+ ...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
4166
4162
  },
4167
4163
  verifiedAt: /* @__PURE__ */ new Date(),
4168
4164
  // Extract sessionId so decisions can be recorded for denials too
@@ -4200,7 +4196,6 @@ async function verify(config, request, options) {
4200
4196
  trustScore: apiResponse.organization.trustScore
4201
4197
  } : void 0;
4202
4198
  const verificationContext = apiResponse.verificationContext;
4203
- const accessLevel = apiResponse.access?.accessLevel ?? "standard";
4204
4199
  const result = {
4205
4200
  // 4.5.0 (probe F1): read idVerified from verificationContext with the
4206
4201
  // SAME absent⇒false default as the deny branch. The previous `!== false`
@@ -4212,7 +4207,6 @@ async function verify(config, request, options) {
4212
4207
  // this load-bearing must never be defaulted on.
4213
4208
  identityVerified: apiResponse.verificationContext?.idVerified === true,
4214
4209
  policyAllowed: true,
4215
- accessLevel,
4216
4210
  agent,
4217
4211
  developer,
4218
4212
  organization,
@@ -4239,7 +4233,6 @@ async function verify(config, request, options) {
4239
4233
  };
4240
4234
  if (result.recommendation === "deny") {
4241
4235
  result.policyAllowed = false;
4242
- result.accessLevel = "none";
4243
4236
  result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
4244
4237
  result.guidance = result.runtimeChallenge ? {
4245
4238
  message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
@@ -4352,7 +4345,6 @@ function toGatewayConfig(config) {
4352
4345
  return {
4353
4346
  apiBaseUrl: config.apiBaseUrl || "https://api.astrasync.ai",
4354
4347
  apiKey: config.apiKey,
4355
- defaultAccessLevel: config.defaultAccessLevel,
4356
4348
  minTrustScore: config.minTrustScore,
4357
4349
  minTrustScoreForFull: config.minTrustScoreForFull,
4358
4350
  cacheTtl: config.cacheTtl,
@@ -4380,7 +4372,7 @@ function toDecision(result) {
4380
4372
  if (result.identityVerified && result.policyAllowed) {
4381
4373
  return {
4382
4374
  recommendation: "ALLOW",
4383
- reason: `Verified with access level: ${result.accessLevel}`,
4375
+ reason: result.agent?.trustScore ? `Verified (trust score ${result.agent.trustScore})` : "Verified",
4384
4376
  trustScore: result.agent?.trustScore,
4385
4377
  sessionId: "sessionId" in result ? result.sessionId : void 0
4386
4378
  };