@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 { P as PDLSSContext, V as VerificationDecision, A as AgentAction, I as InterceptResult } from '../types-CfSJLS4i.mjs';
2
+ import { P as PDLSSContext, V as VerificationDecision, A as AgentAction, I as InterceptResult } from '../types-CoDjpbVY.mjs';
3
3
  import '../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 { P as PDLSSContext, V as VerificationDecision, A as AgentAction, I as InterceptResult } from '../types-DhhJxKIC.js';
2
+ import { P as PDLSSContext, V as VerificationDecision, A as AgentAction, I as InterceptResult } from '../types-3UV7IZx7.js';
3
3
  import '../gateway/gateway.js';
4
- import '../types-CGPU7HLi.js';
4
+ import '../types-CNBaZKxY.js';
5
5
  import '../metadata-capture.js';
6
6
 
7
7
  /**
@@ -1,8 +1,8 @@
1
1
  import { VSCodeAPI } from './cursor-adapter.mjs';
2
2
  import '../adapter-interface/interface.mjs';
3
3
  import '../gateway/gateway.mjs';
4
- import '../types-CfSJLS4i.mjs';
5
- import '../types-Cx9hTpKI.mjs';
4
+ import '../types-CoDjpbVY.mjs';
5
+ import '../types-CSHcByFX.mjs';
6
6
  import '../metadata-capture.mjs';
7
7
 
8
8
  /**
@@ -1,8 +1,8 @@
1
1
  import { VSCodeAPI } from './cursor-adapter.js';
2
2
  import '../adapter-interface/interface.js';
3
3
  import '../gateway/gateway.js';
4
- import '../types-DhhJxKIC.js';
5
- import '../types-CGPU7HLi.js';
4
+ import '../types-3UV7IZx7.js';
5
+ import '../types-CNBaZKxY.js';
6
6
  import '../metadata-capture.js';
7
7
 
8
8
  /**
@@ -3975,7 +3975,7 @@ function verifyLocal(evaluator, context) {
3975
3975
  return evaluator.evaluate(context);
3976
3976
  }
3977
3977
 
3978
- // src/access-levels.ts
3978
+ // src/trust-levels.ts
3979
3979
  function getTrustLevel(score) {
3980
3980
  if (score >= 80) return "PLATINUM";
3981
3981
  if (score >= 60) return "GOLD";
@@ -3984,7 +3984,7 @@ function getTrustLevel(score) {
3984
3984
  }
3985
3985
 
3986
3986
  // src/version.ts
3987
- var SDK_VERSION = "4.6.0";
3987
+ var SDK_VERSION = "5.0.0";
3988
3988
 
3989
3989
  // src/http.ts
3990
3990
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -4014,11 +4014,6 @@ function getCachedWellKnownUrls(apiBaseUrl) {
4014
4014
  // src/verify.ts
4015
4015
  var DEFAULT_CONFIG = {
4016
4016
  apiBaseUrl: "https://astrasync.ai/api",
4017
- // v2.3.9 (defect #30): default for unconfigured callers is `'none'` (no
4018
- // access). Pre-rename this defaulted to `'guidance'`, which combined with
4019
- // a route gated at `'guidance'` to silently let unverified traffic
4020
- // through (`hasMinimumAccess('guidance', 'guidance') === true`).
4021
- defaultAccessLevel: "none",
4022
4017
  // minTrustScore + minTrustScoreForFull deprecated in v2.3.0 — server decides.
4023
4018
  // cacheTtl deliberately unset. When undefined, cacheResult applies the 60s
4024
4019
  // default; the caller's explicit value is honoured for cacheable results.
@@ -4141,6 +4136,14 @@ function cacheResult(request, result, configuredTtl, counterpartyId) {
4141
4136
  expiresAt: Date.now() + ttlSeconds * 1e3
4142
4137
  });
4143
4138
  }
4139
+ function mcpGuidance(urls) {
4140
+ if (!urls?.mcpEndpoint) return void 0;
4141
+ return {
4142
+ endpoint: urls.mcpEndpoint,
4143
+ discoveryUrl: urls.mcpDiscoveryUrl,
4144
+ 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."
4145
+ };
4146
+ }
4144
4147
  function createGuidanceResponse(_config, reason, options = {}) {
4145
4148
  const source = options.source ?? "no_credentials";
4146
4149
  const isApiError = source === "api_error";
@@ -4167,11 +4170,17 @@ function createGuidanceResponse(_config, reason, options = {}) {
4167
4170
  registrationUrl: urls?.registrationUrl ?? "",
4168
4171
  documentationUrl: urls?.documentationUrl ?? "",
4169
4172
  steps: [
4173
+ // MCP steering leads when the hosted bridge is advertised — the
4174
+ // connector is the agent-actionable path (keyless, human-approved).
4175
+ ...urls?.mcpEndpoint ? [
4176
+ `Fastest path (inside an MCP host): add the AstraSync MCP connector at ${urls.mcpEndpoint} \u2014 keyless, human-approved registration`
4177
+ ] : [],
4170
4178
  "Register for an AstraSync account",
4171
4179
  "Create and register your agent",
4172
4180
  "Add your ASTRA-ID to request headers",
4173
4181
  "Retry your request"
4174
- ]
4182
+ ],
4183
+ ...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
4175
4184
  };
4176
4185
  return {
4177
4186
  // Round-18 G4: createGuidanceResponse fires for unverified-agent path or
@@ -4179,13 +4188,6 @@ function createGuidanceResponse(_config, reason, options = {}) {
4179
4188
  // policy is not evaluated (we never reached the gate).
4180
4189
  identityVerified: false,
4181
4190
  policyAllowed: false,
4182
- // v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
4183
- // Adapters additionally short-circuit on `!identityVerified ||
4184
- // !policyAllowed` before the gate check, but the access level still has
4185
- // to be honest at the data layer so downstream consumers (SDK adapters
4186
- // in other languages, custom integrations) inherit the correct
4187
- // semantics.
4188
- accessLevel: "none",
4189
4191
  guidance,
4190
4192
  denialReasons: reason ? [reason] : ["No valid agent credentials provided"],
4191
4193
  // Round-10 (#47, O5): on API-error fallback, surface a typed failure so
@@ -4279,7 +4281,6 @@ async function callVerifyAccessAPI(config, request) {
4279
4281
  attemptId: typeof data?.attemptId === "string" ? data.attemptId : void 0,
4280
4282
  access: {
4281
4283
  allowed: false,
4282
- accessLevel: "none",
4283
4284
  reason: "endpoint_deactivated",
4284
4285
  failures: [
4285
4286
  {
@@ -4342,7 +4343,7 @@ async function verify(config, request, options) {
4342
4343
  if (!deprecationWarningShown && (config.minTrustScore !== void 0 || config.minTrustScoreForFull !== void 0)) {
4343
4344
  deprecationWarningShown = true;
4344
4345
  console.warn(
4345
- "[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."
4346
+ "[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."
4346
4347
  );
4347
4348
  }
4348
4349
  if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
@@ -4388,14 +4389,6 @@ async function verify(config, request, options) {
4388
4389
  const result2 = {
4389
4390
  identityVerified: idVerifiedFromBackend,
4390
4391
  policyAllowed: false,
4391
- // v2.3.9 (defect #30): denials grant `'none'`, NEVER a positive band.
4392
- // Pre-rename this hardcoded `'guidance'`, which conflated with the
4393
- // colocated `guidance: {...}` help-payload object below and let
4394
- // denied requests pass any route gated at `'guidance'` because
4395
- // `hasMinimumAccess('guidance', 'guidance') === true`. Adapters now
4396
- // ALSO short-circuit on `!identityVerified || !policyAllowed` before
4397
- // the gate check — belt-and-braces.
4398
- accessLevel: "none",
4399
4392
  // 3.6.0: the server now emits top-level denialReasons on every deny
4400
4393
  // path — prefer it verbatim; the failure-message reconstruction remains
4401
4394
  // as the fallback for older backends.
@@ -4406,7 +4399,10 @@ async function verify(config, request, options) {
4406
4399
  guidance: {
4407
4400
  message: apiResponse.access?.reason || "Access denied by PDLSS policy",
4408
4401
  registrationUrl: urls?.registrationUrl ?? "",
4409
- documentationUrl: urls?.documentationUrl ?? ""
4402
+ documentationUrl: urls?.documentationUrl ?? "",
4403
+ // 5.1.0: anonymous callers land on this branch — steer MCP-hosted
4404
+ // agents to the connector (this is what the edge deny body surfaces).
4405
+ ...mcpGuidance(urls) && { mcp: mcpGuidance(urls) }
4410
4406
  },
4411
4407
  verifiedAt: /* @__PURE__ */ new Date(),
4412
4408
  // Extract sessionId so decisions can be recorded for denials too
@@ -4444,7 +4440,6 @@ async function verify(config, request, options) {
4444
4440
  trustScore: apiResponse.organization.trustScore
4445
4441
  } : void 0;
4446
4442
  const verificationContext = apiResponse.verificationContext;
4447
- const accessLevel = apiResponse.access?.accessLevel ?? "standard";
4448
4443
  const result = {
4449
4444
  // 4.5.0 (probe F1): read idVerified from verificationContext with the
4450
4445
  // SAME absent⇒false default as the deny branch. The previous `!== false`
@@ -4456,7 +4451,6 @@ async function verify(config, request, options) {
4456
4451
  // this load-bearing must never be defaulted on.
4457
4452
  identityVerified: apiResponse.verificationContext?.idVerified === true,
4458
4453
  policyAllowed: true,
4459
- accessLevel,
4460
4454
  agent,
4461
4455
  developer,
4462
4456
  organization,
@@ -4483,7 +4477,6 @@ async function verify(config, request, options) {
4483
4477
  };
4484
4478
  if (result.recommendation === "deny") {
4485
4479
  result.policyAllowed = false;
4486
- result.accessLevel = "none";
4487
4480
  result.denialReasons = serverDenialReasons ?? result.recommendationReasons ?? ["Access denied by AstraSync recommendation"];
4488
4481
  result.guidance = result.runtimeChallenge ? {
4489
4482
  message: `Verification failed: ${result.runtimeChallenge.reason || "runtime challenge failed"}`,
@@ -4596,7 +4589,6 @@ function toGatewayConfig(config) {
4596
4589
  return {
4597
4590
  apiBaseUrl: config.apiBaseUrl || "https://api.astrasync.ai",
4598
4591
  apiKey: config.apiKey,
4599
- defaultAccessLevel: config.defaultAccessLevel,
4600
4592
  minTrustScore: config.minTrustScore,
4601
4593
  minTrustScoreForFull: config.minTrustScoreForFull,
4602
4594
  cacheTtl: config.cacheTtl,
@@ -4624,7 +4616,7 @@ function toDecision(result) {
4624
4616
  if (result.identityVerified && result.policyAllowed) {
4625
4617
  return {
4626
4618
  recommendation: "ALLOW",
4627
- reason: `Verified with access level: ${result.accessLevel}`,
4619
+ reason: result.agent?.trustScore ? `Verified (trust score ${result.agent.trustScore})` : "Verified",
4628
4620
  trustScore: result.agent?.trustScore,
4629
4621
  sessionId: "sessionId" in result ? result.sessionId : void 0
4630
4622
  };