@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
@@ -3969,7 +3969,7 @@ function verifyLocal(evaluator, context) {
3969
3969
  return evaluator.evaluate(context);
3970
3970
  }
3971
3971
 
3972
- // src/access-levels.ts
3972
+ // src/trust-levels.ts
3973
3973
  function getTrustLevel(score) {
3974
3974
  if (score >= 80) return "PLATINUM";
3975
3975
  if (score >= 60) return "GOLD";
@@ -3978,7 +3978,7 @@ function getTrustLevel(score) {
3978
3978
  }
3979
3979
 
3980
3980
  // src/version.ts
3981
- var SDK_VERSION = "4.6.0";
3981
+ var SDK_VERSION = "5.0.0";
3982
3982
 
3983
3983
  // src/http.ts
3984
3984
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -4008,11 +4008,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
4008
4008
  // src/verify.ts
4009
4009
  var DEFAULT_CONFIG = {
4010
4010
  apiBaseUrl: "https://astrasync.ai/api",
4011
- // v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
4012
- // access). Pre-rename this defaulted to `'guidance'`, which combined with
4013
- // a route gated at `'guidance'` to silently let unverified traffic
4014
- // through (`hasMinimumAccess('guidance', 'guidance') === true`).
4015
- defaultAccessLevel: "none",
4016
4011
  // minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
4017
4012
  // cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
4018
4013
  // default; the caller's explicit value is honoured for cacheable results.
@@ -4135,6 +4130,14 @@ function cacheResult(request, result, configuredTtl, counterpartyId) {
4135
4130
  expiresAt: Date.now() + ttlSeconds * 1e3
4136
4131
  });
4137
4132
  }
4133
+ function mcpGuidance(urls) {
4134
+ if (!urls?.mcpEndpoint) return void 0;
4135
+ return {
4136
+ endpoint: urls.mcpEndpoint,
4137
+ discoveryUrl: urls.mcpDiscoveryUrl,
4138
+ 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."
4139
+ };
4140
+ }
4138
4141
  function createGuidanceResponse(_config, reason, options = {}) {
4139
4142
  const source = options.source ?? "no_credentials";
4140
4143
  const isApiError = source === "api_error";
@@ -4161,11 +4164,17 @@ function createGuidanceResponse(_config, reason, options = {}) {
4161
4164
  registrationUrl: urls?.registrationUrl ?? "",
4162
4165
  documentationUrl: urls?.documentationUrl ?? "",
4163
4166
  steps: [
4167
+ // MCP steering leads when the hosted bridge is advertised — the
4168
+ // connector is the agent-actionable path (keyless, human-approved).
4169
+ ...urls?.mcpEndpoint ? [
4170
+ `Fastest path (inside an MCP host): add the AstraSync MCP connector at ${urls.mcpEndpoint} \u2014 keyless, human-approved registration`
4171
+ ] : [],
4164
4172
  "Register for an AstraSync account",
4165
4173
  "Create and register your agent",
4166
4174
  "Add your ASTRA-ID to request headers",
4167
4175
  "Retry your request"
4168
- ]
4176
+ ],
4177
+ ...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
4169
4178
  };
4170
4179
  return {
4171
4180
  // Round-18 G4: createGuidanceResponse fires for unverified-agent path or
@@ -4173,13 +4182,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
4173
4182
  // policy is not evaluated (we never reached the gate).
4174
4183
  identityVerified: false,
4175
4184
  policyAllowed: false,
4176
- // v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
4177
- // Adapters additionally short-circuit on `!identityVerified ||
4178
- // !policyAllowed` before the gate check, but the access level still has
4179
- // to be honest at the data layer so downstream consumers (SDK adapters
4180
- // in other languages, custom integrations) inherit the correct
4181
- // semantics.
4182
- accessLevel: "none",
4183
4185
  guidance,
4184
4186
  denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
4185
4187
  // Round-10 (#47, O5): on API-error fallback, surface a typed failure so
@@ -4273,7 +4275,6 @@ async function callVerifyAccessAPI(config, request) {
4273
4275
  attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
4274
4276
  access: {
4275
4277
  allowed: false,
4276
- accessLevel: "none",
4277
4278
  reason: "endpoint_deactivated",
4278
4279
  failures: [
4279
4280
  {
@@ -4336,7 +4337,7 @@ async function verify(config, request, options) {
4336
4337
  if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
4337
4338
  deprecationWarningShown = true;
4338
4339
  console.warn(
4339
- "[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."
4340
+ "[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."
4340
4341
  );
4341
4342
  }
4342
4343
  if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
@@ -4382,14 +4383,6 @@ async function verify(config, request, options) {
4382
4383
  const result2 = {
4383
4384
  identityVerified: idVerifiedFromBackend,
4384
4385
  policyAllowed: false,
4385
- // v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
4386
- // Pre-rename this hardcoded `'guidance'`, which conflated with the
4387
- // colocated `guidance: {...}` help-payload object below and let
4388
- // denied requests pass any route gated at `'guidance'` because
4389
- // `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
4390
- // ALSO short-circuit on `!identityVerified || !policyAllowed` before
4391
- // the gate check — belt-and-braces.
4392
- accessLevel: "none",
4393
4386
  // 3.6.0: the server now emits top-level denialReasons on every deny
4394
4387
  // path — prefer it verbatim; the failure-message reconstruction remains
4395
4388
  // as the fallback for older backends.
@@ -4400,7 +4393,10 @@ async function verify(config, request, options) {
4400
4393
  guidance: {
4401
4394
  message: apiResponse.access?.reason || "Access denied by PDLSS policy",
4402
4395
  registrationUrl: urls?.registrationUrl ?? "",
4403
- documentationUrl: urls?.documentationUrl ?? ""
4396
+ documentationUrl: urls?.documentationUrl ?? "",
4397
+ // 5.1.0: anonymous callers land on this branch — steer MCP-hosted
4398
+ // agents to the connector (this is what the edge deny body surfaces).
4399
+ ...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
4404
4400
  },
4405
4401
  verifiedAt: /* @__PURE__ */ new Date(),
4406
4402
  // Extract sessionId so decisions can be recorded for denials too
@@ -4438,7 +4434,6 @@ async function verify(config, request, options) {
4438
4434
  trustScore: apiResponse.organization.trustScore
4439
4435
  } : void 0;
4440
4436
  const verificationContext = apiResponse.verificationContext;
4441
- const accessLevel = apiResponse.access?.accessLevel ?? "standard";
4442
4437
  const result = {
4443
4438
  // 4.5.0 (probe F1): read idVerified from verificationContext with the
4444
4439
  // SAME absent⇒false default as the deny branch. The previous `!== false`
@@ -4450,7 +4445,6 @@ async function verify(config, request, options) {
4450
4445
  // this load-bearing must never be defaulted on.
4451
4446
  identityVerified: apiResponse.verificationContext?.idVerified === true,
4452
4447
  policyAllowed: true,
4453
- accessLevel,
4454
4448
  agent,
4455
4449
  developer,
4456
4450
  organization,
@@ -4477,7 +4471,6 @@ async function verify(config, request, options) {
4477
4471
  };
4478
4472
  if (result.recommendation === "deny") {
4479
4473
  result.policyAllowed = false;
4480
- result.accessLevel = "none";
4481
4474
  result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
4482
4475
  result.guidance = result.runtimeChallenge ? {
4483
4476
  message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
@@ -4593,7 +4586,6 @@ function toGatewayConfig(config) {
4593
4586
  return {
4594
4587
  apiBaseUrl: config.apiBaseUrl || "https://api.astrasync.ai",
4595
4588
  apiKey: config.apiKey,
4596
- defaultAccessLevel: config.defaultAccessLevel,
4597
4589
  minTrustScore: config.minTrustScore,
4598
4590
  minTrustScoreForFull: config.minTrustScoreForFull,
4599
4591
  cacheTtl: config.cacheTtl,
@@ -4621,7 +4613,7 @@ function toDecision(result) {
4621
4613
  if (result.identityVerified && result.policyAllowed) {
4622
4614
  return {
4623
4615
  recommendation: "ALLOW",
4624
- reason: `Verified with access level: ${result.accessLevel}`,
4616
+ reason: result.agent?.trustScore ? `Verified (trust score ${result.agent.trustScore})` : "Verified",
4625
4617
  trustScore: result.agent?.trustScore,
4626
4618
  sessionId: "sessionId" in result ? result.sessionId : void 0
4627
4619
  };