@astrasyncai/verification-gateway 5.19.0 → 5.20.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 (111) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +51 -2
  3. package/dist/adapter-interface/interface.d.mts +2 -2
  4. package/dist/adapter-interface/interface.d.ts +2 -2
  5. package/dist/adapters/express.d.mts +1 -1
  6. package/dist/adapters/express.d.ts +1 -1
  7. package/dist/adapters/express.js +65 -16
  8. package/dist/adapters/express.js.map +1 -1
  9. package/dist/adapters/express.mjs +65 -16
  10. package/dist/adapters/express.mjs.map +1 -1
  11. package/dist/adapters/mcp.d.mts +23 -1
  12. package/dist/adapters/mcp.d.ts +23 -1
  13. package/dist/adapters/mcp.js +91 -16
  14. package/dist/adapters/mcp.js.map +1 -1
  15. package/dist/adapters/mcp.mjs +91 -16
  16. package/dist/adapters/mcp.mjs.map +1 -1
  17. package/dist/adapters/nextjs.d.mts +1 -1
  18. package/dist/adapters/nextjs.d.ts +1 -1
  19. package/dist/adapters/nextjs.js +57 -11
  20. package/dist/adapters/nextjs.js.map +1 -1
  21. package/dist/adapters/nextjs.mjs +57 -11
  22. package/dist/adapters/nextjs.mjs.map +1 -1
  23. package/dist/adapters/sdk.d.mts +58 -2
  24. package/dist/adapters/sdk.d.ts +58 -2
  25. package/dist/adapters/sdk.js +124 -11
  26. package/dist/adapters/sdk.js.map +1 -1
  27. package/dist/adapters/sdk.mjs +124 -11
  28. package/dist/adapters/sdk.mjs.map +1 -1
  29. package/dist/agent/index.d.mts +1 -1
  30. package/dist/agent/index.d.ts +1 -1
  31. package/dist/agent/index.js +1 -1
  32. package/dist/agent/index.js.map +1 -1
  33. package/dist/agent/index.mjs +1 -1
  34. package/dist/agent/index.mjs.map +1 -1
  35. package/dist/bin/astrasync-claude-hook.js +49 -11
  36. package/dist/bin/astrasync-codex-hook.js +49 -11
  37. package/dist/bin/astrasync-guard.js +49 -11
  38. package/dist/bin/astrasync.js +51 -12
  39. package/dist/browser/background.js +49 -11
  40. package/dist/browser/background.js.map +1 -1
  41. package/dist/browser/background.mjs +49 -11
  42. package/dist/browser/background.mjs.map +1 -1
  43. package/dist/cli/index.js +1 -1
  44. package/dist/cli/index.js.map +1 -1
  45. package/dist/cli/index.mjs +1 -1
  46. package/dist/cli/index.mjs.map +1 -1
  47. package/dist/codex/index.js +49 -11
  48. package/dist/codex/index.js.map +1 -1
  49. package/dist/codex/index.mjs +49 -11
  50. package/dist/codex/index.mjs.map +1 -1
  51. package/dist/cursor/extension.js +49 -11
  52. package/dist/cursor/extension.js.map +1 -1
  53. package/dist/cursor/extension.mjs +49 -11
  54. package/dist/cursor/extension.mjs.map +1 -1
  55. package/dist/edge-config.d.mts +1 -1
  56. package/dist/edge-config.d.ts +1 -1
  57. package/dist/edge-config.js +1 -1
  58. package/dist/edge-config.js.map +1 -1
  59. package/dist/edge-config.mjs +1 -1
  60. package/dist/edge-config.mjs.map +1 -1
  61. package/dist/edge-core/index.d.mts +1 -1
  62. package/dist/edge-core/index.d.ts +1 -1
  63. package/dist/edge-core/index.js +49 -11
  64. package/dist/edge-core/index.js.map +1 -1
  65. package/dist/edge-core/index.mjs +49 -11
  66. package/dist/edge-core/index.mjs.map +1 -1
  67. package/dist/gateway/gateway.d.mts +2 -2
  68. package/dist/gateway/gateway.d.ts +2 -2
  69. package/dist/gateway/gateway.js +49 -11
  70. package/dist/gateway/gateway.js.map +1 -1
  71. package/dist/gateway/gateway.mjs +49 -11
  72. package/dist/gateway/gateway.mjs.map +1 -1
  73. package/dist/git-trigger/git-hooks.d.mts +1 -1
  74. package/dist/git-trigger/git-hooks.d.ts +1 -1
  75. package/dist/index.d.mts +168 -8
  76. package/dist/index.d.ts +168 -8
  77. package/dist/index.js +229 -31
  78. package/dist/index.js.map +1 -1
  79. package/dist/index.mjs +226 -31
  80. package/dist/index.mjs.map +1 -1
  81. package/dist/local-evaluator/evaluator.d.mts +2 -2
  82. package/dist/local-evaluator/evaluator.d.ts +2 -2
  83. package/dist/registration/index.d.mts +11 -2
  84. package/dist/registration/index.d.ts +11 -2
  85. package/dist/registration/index.js +1 -1
  86. package/dist/registration/index.js.map +1 -1
  87. package/dist/registration/index.mjs +1 -1
  88. package/dist/registration/index.mjs.map +1 -1
  89. package/dist/transport/index.d.mts +1 -1
  90. package/dist/transport/index.d.ts +1 -1
  91. package/dist/transport/index.js +1 -1
  92. package/dist/transport/index.js.map +1 -1
  93. package/dist/transport/index.mjs +1 -1
  94. package/dist/transport/index.mjs.map +1 -1
  95. package/dist/{types-BRz2U0Pn.d.ts → types-B_HLhZ9n.d.ts} +1 -1
  96. package/dist/{types-BfILnheI.d.mts → types-CU17R4Nr.d.mts} +11 -0
  97. package/dist/{types-BfILnheI.d.ts → types-CU17R4Nr.d.ts} +11 -0
  98. package/dist/{types-DqWPkiYl.d.mts → types-CxjqmPl-.d.mts} +25 -1
  99. package/dist/{types-DqWPkiYl.d.ts → types-CxjqmPl-.d.ts} +25 -1
  100. package/dist/{types-BoGjyon0.d.mts → types-D37aSQ9c.d.mts} +25 -1
  101. package/dist/{types-CfBpm3w5.d.mts → types-Djpz-L0w.d.mts} +1 -1
  102. package/dist/{types-eWyZuz-3.d.ts → types-Dn8tXnei.d.ts} +25 -1
  103. package/dist/ui/index.d.mts +1 -1
  104. package/dist/ui/index.d.ts +1 -1
  105. package/dist/verify.d.mts +28 -3
  106. package/dist/verify.d.ts +28 -3
  107. package/dist/verify.js +71 -11
  108. package/dist/verify.js.map +1 -1
  109. package/dist/verify.mjs +69 -11
  110. package/dist/verify.mjs.map +1 -1
  111. package/package.json +1 -1
@@ -434,7 +434,7 @@ function routePolicyOf(route) {
434
434
  }
435
435
 
436
436
  // src/version.ts
437
- var SDK_VERSION = "5.19.0";
437
+ var SDK_VERSION = "5.20.0";
438
438
 
439
439
  // src/http.ts
440
440
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -897,6 +897,9 @@ async function callVerifyAccessAPI(config, request) {
897
897
  if (requestData.enableRuntimeChallenge)
898
898
  body.enableRuntimeChallenge = requestData.enableRuntimeChallenge;
899
899
  if (requestData.routePolicy) body.routePolicy = requestData.routePolicy;
900
+ if (config.actingProof?.connectorToken) {
901
+ body.actingProof = { connectorToken: config.actingProof.connectorToken };
902
+ }
900
903
  if (requestData.approvalHeldByRoute) body.approvalHeldByRoute = true;
901
904
  if (requestData.createSession) body.createSession = requestData.createSession;
902
905
  if (requestData.durationRequired) body.durationRequired = requestData.durationRequired;
@@ -1064,22 +1067,43 @@ async function verify(config, request, options) {
1064
1067
  "[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."
1065
1068
  );
1066
1069
  }
1067
- const uncacheable = Boolean(request.commerceArtifacts);
1070
+ const uncacheable = Boolean(request.commerceArtifacts) || Boolean(mergedConfig.actingProof);
1068
1071
  if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache && !uncacheable) {
1069
1072
  const cached = getCachedResult(request, mergedConfig.counterpartyId);
1070
1073
  if (cached) {
1071
1074
  if (mergedConfig.debug) {
1072
1075
  console.log("[VerificationGateway] Returning cached result");
1073
1076
  }
1074
- const hit = { ...cached };
1075
- if (request.attemptId) {
1076
- hit.attemptId = request.attemptId;
1077
- } else {
1078
- delete hit.attemptId;
1079
- }
1080
- return hit;
1077
+ return sharedVerdict(cached, request);
1081
1078
  }
1082
1079
  }
1080
+ if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache && !uncacheable) {
1081
+ const key = getCacheKey(request, mergedConfig.counterpartyId);
1082
+ const pending = inflightVerifies.get(key);
1083
+ if (pending) return sharedVerdict(await pending, request);
1084
+ const flight = verifyViaApi(mergedConfig, request, urls, uncacheable);
1085
+ inflightVerifies.set(key, flight);
1086
+ try {
1087
+ return await flight;
1088
+ } finally {
1089
+ inflightVerifies.delete(key);
1090
+ }
1091
+ }
1092
+ return verifyViaApi(mergedConfig, request, urls, uncacheable);
1093
+ }
1094
+ var inflightVerifies = /* @__PURE__ */ new Map();
1095
+ var sharedVerdicts = /* @__PURE__ */ new WeakSet();
1096
+ function sharedVerdict(source, request) {
1097
+ const hit = { ...source };
1098
+ if (request.attemptId) {
1099
+ hit.attemptId = request.attemptId;
1100
+ } else {
1101
+ delete hit.attemptId;
1102
+ }
1103
+ sharedVerdicts.add(hit);
1104
+ return hit;
1105
+ }
1106
+ async function verifyViaApi(mergedConfig, request, urls, uncacheable) {
1083
1107
  const enrichedRequest = { ...request };
1084
1108
  if (!enrichedRequest.counterpartyUrl && mergedConfig.counterpartyUrl) {
1085
1109
  enrichedRequest.counterpartyUrl = mergedConfig.counterpartyUrl;
@@ -1158,7 +1182,9 @@ async function verify(config, request, options) {
1158
1182
  fulfilment: apiResponse.fulfilment,
1159
1183
  mandates: apiResponse.mandates,
1160
1184
  kyaToken: apiResponse.kyaToken,
1161
- aep: apiResponse.aep
1185
+ aep: apiResponse.aep,
1186
+ // 5.20.0 (round 29.1): non-fatal integration warnings (e.g. events_url_missing).
1187
+ warnings: apiResponse.warnings
1162
1188
  };
1163
1189
  return result2;
1164
1190
  }
@@ -1226,7 +1252,9 @@ async function verify(config, request, options) {
1226
1252
  // 5.15.0: merchant-lane AP2 mandates + KYAPay identity token.
1227
1253
  mandates: apiResponse.mandates,
1228
1254
  kyaToken: apiResponse.kyaToken,
1229
- aep: apiResponse.aep
1255
+ aep: apiResponse.aep,
1256
+ // 5.20.0 (round 29.1): non-fatal integration warnings (e.g. events_url_missing).
1257
+ warnings: apiResponse.warnings
1230
1258
  };
1231
1259
  if (result.recommendation === "deny") {
1232
1260
  result.policyAllowed = false;
@@ -1252,8 +1280,18 @@ async function verify(config, request, options) {
1252
1280
  cacheResult(request, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
1253
1281
  }
1254
1282
  }
1283
+ notifyVerificationListeners(request, result);
1255
1284
  return result;
1256
1285
  }
1286
+ var verificationListeners = /* @__PURE__ */ new Set();
1287
+ function notifyVerificationListeners(request, result) {
1288
+ for (const listener of verificationListeners) {
1289
+ try {
1290
+ listener(result, request);
1291
+ } catch {
1292
+ }
1293
+ }
1294
+ }
1257
1295
  var refusedPolicyReads = /* @__PURE__ */ new Set();
1258
1296
  async function fetchRoutes(config, counterpartyId, options = {}) {
1259
1297
  if (!counterpartyId) return null;
@@ -1263,6 +1301,7 @@ async function fetchRoutes(config, counterpartyId, options = {}) {
1263
1301
  headers["X-API-Key"] = config.apiKey;
1264
1302
  }
1265
1303
  try {
1304
+ headers["X-AstraSync-SDK-Version"] = SDK_VERSION;
1266
1305
  const response = await sdkFetch(
1267
1306
  `${config.apiBaseUrl}/endpoints/${encodeURIComponent(counterpartyId)}/routes` + (options.codeGates?.length ? `?codeGates=${options.codeGates.map(encodeURIComponent).join(",")}` : ""),
1268
1307
  { method: "GET", headers }
@@ -1277,6 +1316,13 @@ async function fetchRoutes(config, counterpartyId, options = {}) {
1277
1316
  return null;
1278
1317
  }
1279
1318
  const body = await response.json();
1319
+ const type = body.data?.counterpartyType;
1320
+ if (typeof type === "string" && options.onEndpointType) {
1321
+ try {
1322
+ options.onEndpointType(type);
1323
+ } catch {
1324
+ }
1325
+ }
1280
1326
  return body.data?.routes ?? [];
1281
1327
  } catch {
1282
1328
  return null;