@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,7 +1,7 @@
1
1
  import { PlatformAdapter, AdapterConfig } from '../adapter-interface/interface.mjs';
2
- import { A as AgentAction, I as InterceptResult, P as PDLSSContext, V as VerificationDecision } from '../types-CfSJLS4i.mjs';
2
+ import { A as AgentAction, I as InterceptResult, P as PDLSSContext, V as VerificationDecision } from '../types-CoDjpbVY.mjs';
3
3
  import { AstraSyncGateway } from '../gateway/gateway.mjs';
4
- import '../types-Cx9hTpKI.mjs';
4
+ import '../types-CSHcByFX.mjs';
5
5
  import '../metadata-capture.mjs';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  import { PlatformAdapter, AdapterConfig } from '../adapter-interface/interface.js';
2
- import { A as AgentAction, I as InterceptResult, P as PDLSSContext, V as VerificationDecision } from '../types-DhhJxKIC.js';
2
+ import { A as AgentAction, I as InterceptResult, P as PDLSSContext, V as VerificationDecision } from '../types-3UV7IZx7.js';
3
3
  import { AstraSyncGateway } from '../gateway/gateway.js';
4
- import '../types-CGPU7HLi.js';
4
+ import '../types-CNBaZKxY.js';
5
5
  import '../metadata-capture.js';
6
6
 
7
7
  /**
@@ -4018,7 +4018,7 @@ function verifyLocal(evaluator, context) {
4018
4018
  return evaluator.evaluate(context);
4019
4019
  }
4020
4020
 
4021
- // src/access-levels.ts
4021
+ // src/trust-levels.ts
4022
4022
  function getTrustLevel(score) {
4023
4023
  if (score >= 80) return "PLATINUM";
4024
4024
  if (score >= 60) return "GOLD";
@@ -4027,7 +4027,7 @@ function getTrustLevel(score) {
4027
4027
  }
4028
4028
 
4029
4029
  // src/version.ts
4030
- var SDK_VERSION = "4.6.0";
4030
+ var SDK_VERSION = "5.0.0";
4031
4031
 
4032
4032
  // src/http.ts
4033
4033
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -4057,11 +4057,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
4057
4057
  // src/verify.ts
4058
4058
  var DEFAULT_CONFIG = {
4059
4059
  apiBaseUrl: "https://astrasync.ai/api",
4060
- // v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
4061
- // access). Pre-rename this defaulted to `'guidance'`, which combined with
4062
- // a route gated at `'guidance'` to silently let unverified traffic
4063
- // through (`hasMinimumAccess('guidance', 'guidance') === true`).
4064
- defaultAccessLevel: "none",
4065
4060
  // minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
4066
4061
  // cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
4067
4062
  // default; the caller's explicit value is honoured for cacheable results.
@@ -4184,6 +4179,14 @@ function cacheResult(request, result, configuredTtl, counterpartyId) {
4184
4179
  expiresAt: Date.now() + ttlSeconds * 1e3
4185
4180
  });
4186
4181
  }
4182
+ function mcpGuidance(urls) {
4183
+ if (!urls?.mcpEndpoint) return void 0;
4184
+ return {
4185
+ endpoint: urls.mcpEndpoint,
4186
+ discoveryUrl: urls.mcpDiscoveryUrl,
4187
+ 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."
4188
+ };
4189
+ }
4187
4190
  function createGuidanceResponse(_config, reason, options = {}) {
4188
4191
  const source = options.source ?? "no_credentials";
4189
4192
  const isApiError = source === "api_error";
@@ -4210,11 +4213,17 @@ function createGuidanceResponse(_config, reason, options = {}) {
4210
4213
  registrationUrl: urls?.registrationUrl ?? "",
4211
4214
  documentationUrl: urls?.documentationUrl ?? "",
4212
4215
  steps: [
4216
+ // MCP steering leads when the hosted bridge is advertised — the
4217
+ // connector is the agent-actionable path (keyless, human-approved).
4218
+ ...urls?.mcpEndpoint ? [
4219
+ `Fastest path (inside an MCP host): add the AstraSync MCP connector at ${urls.mcpEndpoint} \u2014 keyless, human-approved registration`
4220
+ ] : [],
4213
4221
  "Register for an AstraSync account",
4214
4222
  "Create and register your agent",
4215
4223
  "Add your ASTRA-ID to request headers",
4216
4224
  "Retry your request"
4217
- ]
4225
+ ],
4226
+ ...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
4218
4227
  };
4219
4228
  return {
4220
4229
  // Round-18 G4: createGuidanceResponse fires for unverified-agent path or
@@ -4222,13 +4231,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
4222
4231
  // policy is not evaluated (we never reached the gate).
4223
4232
  identityVerified: false,
4224
4233
  policyAllowed: false,
4225
- // v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
4226
- // Adapters additionally short-circuit on `!identityVerified ||
4227
- // !policyAllowed` before the gate check, but the access level still has
4228
- // to be honest at the data layer so downstream consumers (SDK adapters
4229
- // in other languages, custom integrations) inherit the correct
4230
- // semantics.
4231
- accessLevel: "none",
4232
4234
  guidance,
4233
4235
  denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
4234
4236
  // Round-10 (#47, O5): on API-error fallback, surface a typed failure so
@@ -4322,7 +4324,6 @@ async function callVerifyAccessAPI(config, request) {
4322
4324
  attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
4323
4325
  access: {
4324
4326
  allowed: false,
4325
- accessLevel: "none",
4326
4327
  reason: "endpoint_deactivated",
4327
4328
  failures: [
4328
4329
  {
@@ -4385,7 +4386,7 @@ async function verify(config, request, options) {
4385
4386
  if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
4386
4387
  deprecationWarningShown = true;
4387
4388
  console.warn(
4388
- "[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."
4389
+ "[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."
4389
4390
  );
4390
4391
  }
4391
4392
  if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
@@ -4431,14 +4432,6 @@ async function verify(config, request, options) {
4431
4432
  const result2 = {
4432
4433
  identityVerified: idVerifiedFromBackend,
4433
4434
  policyAllowed: false,
4434
- // v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
4435
- // Pre-rename this hardcoded `'guidance'`, which conflated with the
4436
- // colocated `guidance: {...}` help-payload object below and let
4437
- // denied requests pass any route gated at `'guidance'` because
4438
- // `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
4439
- // ALSO short-circuit on `!identityVerified || !policyAllowed` before
4440
- // the gate check — belt-and-braces.
4441
- accessLevel: "none",
4442
4435
  // 3.6.0: the server now emits top-level denialReasons on every deny
4443
4436
  // path — prefer it verbatim; the failure-message reconstruction remains
4444
4437
  // as the fallback for older backends.
@@ -4449,7 +4442,10 @@ async function verify(config, request, options) {
4449
4442
  guidance: {
4450
4443
  message: apiResponse.access?.reason || "Access denied by PDLSS policy",
4451
4444
  registrationUrl: urls?.registrationUrl ?? "",
4452
- documentationUrl: urls?.documentationUrl ?? ""
4445
+ documentationUrl: urls?.documentationUrl ?? "",
4446
+ // 5.1.0: anonymous callers land on this branch — steer MCP-hosted
4447
+ // agents to the connector (this is what the edge deny body surfaces).
4448
+ ...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
4453
4449
  },
4454
4450
  verifiedAt: /* @__PURE__ */ new Date(),
4455
4451
  // Extract sessionId so decisions can be recorded for denials too
@@ -4487,7 +4483,6 @@ async function verify(config, request, options) {
4487
4483
  trustScore: apiResponse.organization.trustScore
4488
4484
  } : void 0;
4489
4485
  const verificationContext = apiResponse.verificationContext;
4490
- const accessLevel = apiResponse.access?.accessLevel ?? "standard";
4491
4486
  const result = {
4492
4487
  // 4.5.0 (probe F1): read idVerified from verificationContext with the
4493
4488
  // SAME absent⇒false default as the deny branch. The previous `!== false`
@@ -4499,7 +4494,6 @@ async function verify(config, request, options) {
4499
4494
  // this load-bearing must never be defaulted on.
4500
4495
  identityVerified: apiResponse.verificationContext?.idVerified === true,
4501
4496
  policyAllowed: true,
4502
- accessLevel,
4503
4497
  agent,
4504
4498
  developer,
4505
4499
  organization,
@@ -4526,7 +4520,6 @@ async function verify(config, request, options) {
4526
4520
  };
4527
4521
  if (result.recommendation === "deny") {
4528
4522
  result.policyAllowed = false;
4529
- result.accessLevel = "none";
4530
4523
  result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
4531
4524
  result.guidance = result.runtimeChallenge ? {
4532
4525
  message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
@@ -4639,7 +4632,6 @@ function toGatewayConfig(config) {
4639
4632
  return {
4640
4633
  apiBaseUrl: config.apiBaseUrl || "https://api.astrasync.ai",
4641
4634
  apiKey: config.apiKey,
4642
- defaultAccessLevel: config.defaultAccessLevel,
4643
4635
  minTrustScore: config.minTrustScore,
4644
4636
  minTrustScoreForFull: config.minTrustScoreForFull,
4645
4637
  cacheTtl: config.cacheTtl,
@@ -4667,7 +4659,7 @@ function toDecision(result) {
4667
4659
  if (result.identityVerified && result.policyAllowed) {
4668
4660
  return {
4669
4661
  recommendation: "ALLOW",
4670
- reason: `Verified with access level: ${result.accessLevel}`,
4662
+ reason: result.agent?.trustScore ? `Verified (trust score ${result.agent.trustScore})` : "Verified",
4671
4663
  trustScore: result.agent?.trustScore,
4672
4664
  sessionId: "sessionId" in result ? result.sessionId : void 0
4673
4665
  };