@astrasyncai/verification-gateway 5.18.0 → 5.19.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 (115) hide show
  1. package/CHANGELOG.md +178 -0
  2. package/README.md +168 -4
  3. package/dist/adapters/express.d.mts +9 -1
  4. package/dist/adapters/express.d.ts +9 -1
  5. package/dist/adapters/express.js +96 -37
  6. package/dist/adapters/express.js.map +1 -1
  7. package/dist/adapters/express.mjs +96 -37
  8. package/dist/adapters/express.mjs.map +1 -1
  9. package/dist/adapters/http-pdlss.d.mts +7 -1
  10. package/dist/adapters/http-pdlss.d.ts +7 -1
  11. package/dist/adapters/http-pdlss.js +18 -2
  12. package/dist/adapters/http-pdlss.js.map +1 -1
  13. package/dist/adapters/http-pdlss.mjs +16 -1
  14. package/dist/adapters/http-pdlss.mjs.map +1 -1
  15. package/dist/adapters/kit-express.d.mts +93 -1
  16. package/dist/adapters/kit-express.d.ts +93 -1
  17. package/dist/adapters/kit-express.js +181 -2
  18. package/dist/adapters/kit-express.js.map +1 -1
  19. package/dist/adapters/kit-express.mjs +180 -2
  20. package/dist/adapters/kit-express.mjs.map +1 -1
  21. package/dist/adapters/mcp.d.mts +80 -9
  22. package/dist/adapters/mcp.d.ts +80 -9
  23. package/dist/adapters/mcp.js +153 -5
  24. package/dist/adapters/mcp.js.map +1 -1
  25. package/dist/adapters/mcp.mjs +151 -5
  26. package/dist/adapters/mcp.mjs.map +1 -1
  27. package/dist/adapters/nextjs.d.mts +1 -1
  28. package/dist/adapters/nextjs.d.ts +1 -1
  29. package/dist/adapters/nextjs.js +41 -4
  30. package/dist/adapters/nextjs.js.map +1 -1
  31. package/dist/adapters/nextjs.mjs +41 -4
  32. package/dist/adapters/nextjs.mjs.map +1 -1
  33. package/dist/adapters/sdk.d.mts +44 -1
  34. package/dist/adapters/sdk.d.ts +44 -1
  35. package/dist/adapters/sdk.js +76 -2
  36. package/dist/adapters/sdk.js.map +1 -1
  37. package/dist/adapters/sdk.mjs +76 -2
  38. package/dist/adapters/sdk.mjs.map +1 -1
  39. package/dist/agent/index.js +1 -1
  40. package/dist/agent/index.js.map +1 -1
  41. package/dist/agent/index.mjs +1 -1
  42. package/dist/agent/index.mjs.map +1 -1
  43. package/dist/bin/astrasync-claude-hook.js +46 -6
  44. package/dist/bin/astrasync-codex-hook.js +46 -6
  45. package/dist/bin/astrasync-guard.js +375 -117
  46. package/dist/bin/astrasync.js +417 -117
  47. package/dist/browser/background.js +46 -6
  48. package/dist/browser/background.js.map +1 -1
  49. package/dist/browser/background.mjs +46 -6
  50. package/dist/browser/background.mjs.map +1 -1
  51. package/dist/cli/index.js +1 -1
  52. package/dist/cli/index.js.map +1 -1
  53. package/dist/cli/index.mjs +1 -1
  54. package/dist/cli/index.mjs.map +1 -1
  55. package/dist/codex/index.js +46 -6
  56. package/dist/codex/index.js.map +1 -1
  57. package/dist/codex/index.mjs +46 -6
  58. package/dist/codex/index.mjs.map +1 -1
  59. package/dist/cursor/extension.js +46 -6
  60. package/dist/cursor/extension.js.map +1 -1
  61. package/dist/cursor/extension.mjs +46 -6
  62. package/dist/cursor/extension.mjs.map +1 -1
  63. package/dist/edge-config.d.mts +1 -1
  64. package/dist/edge-config.d.ts +1 -1
  65. package/dist/edge-config.js +1 -1
  66. package/dist/edge-config.js.map +1 -1
  67. package/dist/edge-config.mjs +1 -1
  68. package/dist/edge-config.mjs.map +1 -1
  69. package/dist/edge-core/index.d.mts +1 -1
  70. package/dist/edge-core/index.d.ts +1 -1
  71. package/dist/edge-core/index.js +21 -2
  72. package/dist/edge-core/index.js.map +1 -1
  73. package/dist/edge-core/index.mjs +21 -2
  74. package/dist/edge-core/index.mjs.map +1 -1
  75. package/dist/gateway/gateway.js +46 -6
  76. package/dist/gateway/gateway.js.map +1 -1
  77. package/dist/gateway/gateway.mjs +46 -6
  78. package/dist/gateway/gateway.mjs.map +1 -1
  79. package/dist/git-trigger/git-hooks.d.mts +1 -1
  80. package/dist/git-trigger/git-hooks.d.ts +1 -1
  81. package/dist/index.d.mts +542 -30
  82. package/dist/index.d.ts +542 -30
  83. package/dist/index.js +1171 -183
  84. package/dist/index.js.map +1 -1
  85. package/dist/index.mjs +1157 -173
  86. package/dist/index.mjs.map +1 -1
  87. package/dist/registration/index.d.mts +1 -1
  88. package/dist/registration/index.d.ts +1 -1
  89. package/dist/registration/index.js +1 -1
  90. package/dist/registration/index.js.map +1 -1
  91. package/dist/registration/index.mjs +1 -1
  92. package/dist/registration/index.mjs.map +1 -1
  93. package/dist/transport/index.js +3 -2
  94. package/dist/transport/index.js.map +1 -1
  95. package/dist/transport/index.mjs +3 -2
  96. package/dist/transport/index.mjs.map +1 -1
  97. package/dist/{types-3ObBpsnf.d.mts → types-BoGjyon0.d.mts} +81 -2
  98. package/dist/{types-Cns4l8gX.d.mts → types-DqWPkiYl.d.mts} +90 -12
  99. package/dist/{types-Cns4l8gX.d.ts → types-DqWPkiYl.d.ts} +90 -12
  100. package/dist/{types-BoxZEYPS.d.ts → types-eWyZuz-3.d.ts} +81 -2
  101. package/dist/ui/index.d.mts +1 -1
  102. package/dist/ui/index.d.ts +1 -1
  103. package/dist/verify.d.mts +23 -2
  104. package/dist/verify.d.ts +23 -2
  105. package/dist/verify.js +23 -4
  106. package/dist/verify.js.map +1 -1
  107. package/dist/verify.mjs +23 -4
  108. package/dist/verify.mjs.map +1 -1
  109. package/dist/webhooks.d.mts +16 -3
  110. package/dist/webhooks.d.ts +16 -3
  111. package/dist/webhooks.js +24 -13
  112. package/dist/webhooks.js.map +1 -1
  113. package/dist/webhooks.mjs +24 -13
  114. package/dist/webhooks.mjs.map +1 -1
  115. package/package.json +1 -1
@@ -3988,7 +3988,7 @@ function getTrustLevel(score) {
3988
3988
  }
3989
3989
 
3990
3990
  // src/version.ts
3991
- var SDK_VERSION = "5.18.0";
3991
+ var SDK_VERSION = "5.19.0";
3992
3992
 
3993
3993
  // src/http.ts
3994
3994
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -4143,7 +4143,12 @@ function getCacheKey(request, counterpartyId) {
4143
4143
  // its start_checkout quote was served the cached quote-leg grant (no
4144
4144
  // settlementOutcome) and never reached the backend. Same F-A1-07 bug class.
4145
4145
  request.commercePhase || "",
4146
- request.checkoutSessionId || ""
4146
+ request.checkoutSessionId || "",
4147
+ // 5.19.0: a route_config purpose claim is checked server-side against
4148
+ // the stored rule for this method + path, so it changes the verdict.
4149
+ request.purposeSource || "",
4150
+ request.requestMethod || "",
4151
+ request.requestPath || ""
4147
4152
  ].join("|");
4148
4153
  }
4149
4154
  function getCachedResult(request, counterpartyId) {
@@ -4317,6 +4322,11 @@ async function callVerifyAccessAPI(config, request) {
4317
4322
  if (requestData.buyerEmail) body.buyerEmail = requestData.buyerEmail;
4318
4323
  if (requestData.commerceArtifacts) body.commerceArtifacts = requestData.commerceArtifacts;
4319
4324
  if (requestData.attemptId) body.attemptId = requestData.attemptId;
4325
+ if (requestData.purposeSource) body.purposeSource = requestData.purposeSource;
4326
+ if (requestData.agentArtifacts) body.agentArtifacts = requestData.agentArtifacts;
4327
+ if (requestData.metadata) body.metadata = requestData.metadata;
4328
+ if (requestData.requestMethod) body.requestMethod = requestData.requestMethod;
4329
+ if (requestData.requestPath) body.requestPath = requestData.requestPath;
4320
4330
  if (requestData.considerationSet) body.considerationSet = requestData.considerationSet;
4321
4331
  body.sdkVersion = SDK_VERSION;
4322
4332
  if (requestData.callerMetadata || requestData.clientIp || requestData.userAgent) {
@@ -4506,9 +4516,18 @@ async function verify(config, request, options) {
4506
4516
  if (!apiResponse.access?.allowed) {
4507
4517
  const aggregatedFailures = apiResponse.access?.failures;
4508
4518
  const idVerifiedFromBackend = apiResponse.verificationContext?.idVerified === true && !aggregatedFailures?.some((f) => REJECTED_IDENTITY_DIMENSIONS.has(f.dimension));
4519
+ const denyAgent = idVerifiedFromBackend && apiResponse.agent ? {
4520
+ astraId: apiResponse.agent.astraId,
4521
+ name: apiResponse.agent.name,
4522
+ trustScore: apiResponse.agent.trustScore,
4523
+ trustLevel: getTrustLevel(apiResponse.agent.trustScore),
4524
+ blockchainAnchored: apiResponse.agent.blockchainStatus === "anchored",
4525
+ status: apiResponse.agent.agentStatus
4526
+ } : void 0;
4509
4527
  const result2 = {
4510
4528
  identityVerified: idVerifiedFromBackend,
4511
4529
  policyAllowed: false,
4530
+ ...denyAgent && { agent: denyAgent },
4512
4531
  // 3.6.0: the server now emits top-level denialReasons on every deny
4513
4532
  // path — prefer it verbatim; the failure-message reconstruction remains
4514
4533
  // as the fallback for older backends.
@@ -4654,6 +4673,9 @@ var MAX_TOTAL_BYTES = 16 * 1024;
4654
4673
  // src/adapters/commerce-detect.ts
4655
4674
  var MAX_BODY_BYTES = 64 * 1024;
4656
4675
 
4676
+ // src/adapters/routes-cache.ts
4677
+ var DEFAULT_ROUTES_REFRESH_MS = 5 * 60 * 1e3;
4678
+
4657
4679
  // src/edge-config.ts
4658
4680
  var DEFAULT_EDGE_CONFIG = Object.freeze({
4659
4681
  version: 1,
@@ -4895,9 +4917,6 @@ var BeaconBuffer = class {
4895
4917
  };
4896
4918
  var beaconBuffer = new BeaconBuffer();
4897
4919
 
4898
- // src/adapters/express.ts
4899
- var DEFAULT_ROUTES_REFRESH_MS = 5 * 60 * 1e3;
4900
-
4901
4920
  // src/adapters/nextjs.ts
4902
4921
  var DEFAULT_ROUTES_REFRESH_MS2 = 5 * 60 * 1e3;
4903
4922
 
@@ -4983,6 +5002,25 @@ var import_jose2 = require("jose");
4983
5002
  // src/idempotency/index.ts
4984
5003
  var DEFAULT_IDEMPOTENCY_TTL_MS = 24 * 60 * 60 * 1e3;
4985
5004
 
5005
+ // src/ucp/approval-events.ts
5006
+ var MemorySeenEvents = class {
5007
+ constructor(max = 1e4) {
5008
+ this.max = max;
5009
+ this.ids = /* @__PURE__ */ new Set();
5010
+ }
5011
+ async has(eventId) {
5012
+ return this.ids.has(eventId);
5013
+ }
5014
+ async add(eventId) {
5015
+ if (this.ids.size >= this.max) {
5016
+ const first = this.ids.values().next().value;
5017
+ if (first !== void 0) this.ids.delete(first);
5018
+ }
5019
+ this.ids.add(eventId);
5020
+ }
5021
+ };
5022
+ var defaultSeen = new MemorySeenEvents();
5023
+
4986
5024
  // src/payments/kyapay.ts
4987
5025
  var import_jose4 = require("jose");
4988
5026
 
@@ -5022,7 +5060,9 @@ function toDecision(result) {
5022
5060
  if (result.identityVerified && result.policyAllowed) {
5023
5061
  return {
5024
5062
  recommendation: "ALLOW",
5025
- reason: result.agent?.trustScore ? `Verified (trust score ${result.agent.trustScore})` : "Verified",
5063
+ // 5.19.0: the score is on `trustScore` for the merchant; `reason` is
5064
+ // text a merchant may relay to the agent, so it never embeds the number.
5065
+ reason: "Verified",
5026
5066
  trustScore: result.agent?.trustScore,
5027
5067
  sessionId: "sessionId" in result ? result.sessionId : void 0
5028
5068
  };