@astrasyncai/verification-gateway 5.18.1 → 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 (113) hide show
  1. package/CHANGELOG.md +149 -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 +46 -6
  46. package/dist/bin/astrasync.js +77 -5
  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 +541 -29
  82. package/dist/index.d.ts +541 -29
  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.js +1 -1
  88. package/dist/registration/index.js.map +1 -1
  89. package/dist/registration/index.mjs +1 -1
  90. package/dist/registration/index.mjs.map +1 -1
  91. package/dist/transport/index.js +3 -2
  92. package/dist/transport/index.js.map +1 -1
  93. package/dist/transport/index.mjs +3 -2
  94. package/dist/transport/index.mjs.map +1 -1
  95. package/dist/{types-3ObBpsnf.d.mts → types-BoGjyon0.d.mts} +81 -2
  96. package/dist/{types-Cns4l8gX.d.mts → types-DqWPkiYl.d.mts} +90 -12
  97. package/dist/{types-Cns4l8gX.d.ts → types-DqWPkiYl.d.ts} +90 -12
  98. package/dist/{types-BoxZEYPS.d.ts → types-eWyZuz-3.d.ts} +81 -2
  99. package/dist/ui/index.d.mts +1 -1
  100. package/dist/ui/index.d.ts +1 -1
  101. package/dist/verify.d.mts +23 -2
  102. package/dist/verify.d.ts +23 -2
  103. package/dist/verify.js +23 -4
  104. package/dist/verify.js.map +1 -1
  105. package/dist/verify.mjs +23 -4
  106. package/dist/verify.mjs.map +1 -1
  107. package/dist/webhooks.d.mts +16 -3
  108. package/dist/webhooks.d.ts +16 -3
  109. package/dist/webhooks.js +24 -13
  110. package/dist/webhooks.js.map +1 -1
  111. package/dist/webhooks.mjs +24 -13
  112. package/dist/webhooks.mjs.map +1 -1
  113. 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.18.1";
437
+ var SDK_VERSION = "5.19.0";
438
438
 
439
439
  // src/http.ts
440
440
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -700,7 +700,12 @@ function getCacheKey(request, counterpartyId) {
700
700
  // its start_checkout quote was served the cached quote-leg grant (no
701
701
  // settlementOutcome) and never reached the backend. Same F-A1-07 bug class.
702
702
  request.commercePhase || "",
703
- request.checkoutSessionId || ""
703
+ request.checkoutSessionId || "",
704
+ // 5.19.0: a route_config purpose claim is checked server-side against
705
+ // the stored rule for this method + path, so it changes the verdict.
706
+ request.purposeSource || "",
707
+ request.requestMethod || "",
708
+ request.requestPath || ""
704
709
  ].join("|");
705
710
  }
706
711
  function getCachedResult(request, counterpartyId) {
@@ -908,6 +913,11 @@ async function callVerifyAccessAPI(config, request) {
908
913
  if (requestData.buyerEmail) body.buyerEmail = requestData.buyerEmail;
909
914
  if (requestData.commerceArtifacts) body.commerceArtifacts = requestData.commerceArtifacts;
910
915
  if (requestData.attemptId) body.attemptId = requestData.attemptId;
916
+ if (requestData.purposeSource) body.purposeSource = requestData.purposeSource;
917
+ if (requestData.agentArtifacts) body.agentArtifacts = requestData.agentArtifacts;
918
+ if (requestData.metadata) body.metadata = requestData.metadata;
919
+ if (requestData.requestMethod) body.requestMethod = requestData.requestMethod;
920
+ if (requestData.requestPath) body.requestPath = requestData.requestPath;
911
921
  if (requestData.considerationSet) body.considerationSet = requestData.considerationSet;
912
922
  body.sdkVersion = SDK_VERSION;
913
923
  if (requestData.callerMetadata || requestData.clientIp || requestData.userAgent) {
@@ -1097,9 +1107,18 @@ async function verify(config, request, options) {
1097
1107
  if (!apiResponse.access?.allowed) {
1098
1108
  const aggregatedFailures = apiResponse.access?.failures;
1099
1109
  const idVerifiedFromBackend = apiResponse.verificationContext?.idVerified === true && !aggregatedFailures?.some((f) => REJECTED_IDENTITY_DIMENSIONS.has(f.dimension));
1110
+ const denyAgent = idVerifiedFromBackend && apiResponse.agent ? {
1111
+ astraId: apiResponse.agent.astraId,
1112
+ name: apiResponse.agent.name,
1113
+ trustScore: apiResponse.agent.trustScore,
1114
+ trustLevel: getTrustLevel(apiResponse.agent.trustScore),
1115
+ blockchainAnchored: apiResponse.agent.blockchainStatus === "anchored",
1116
+ status: apiResponse.agent.agentStatus
1117
+ } : void 0;
1100
1118
  const result2 = {
1101
1119
  identityVerified: idVerifiedFromBackend,
1102
1120
  policyAllowed: false,
1121
+ ...denyAgent && { agent: denyAgent },
1103
1122
  // 3.6.0: the server now emits top-level denialReasons on every deny
1104
1123
  // path — prefer it verbatim; the failure-message reconstruction remains
1105
1124
  // as the fallback for older backends.
@@ -1236,7 +1255,7 @@ async function verify(config, request, options) {
1236
1255
  return result;
1237
1256
  }
1238
1257
  var refusedPolicyReads = /* @__PURE__ */ new Set();
1239
- async function fetchRoutes(config, counterpartyId) {
1258
+ async function fetchRoutes(config, counterpartyId, options = {}) {
1240
1259
  if (!counterpartyId) return null;
1241
1260
  const headers = { "Content-Type": "application/json" };
1242
1261
  if (config.apiKey) {
@@ -1245,7 +1264,7 @@ async function fetchRoutes(config, counterpartyId) {
1245
1264
  }
1246
1265
  try {
1247
1266
  const response = await sdkFetch(
1248
- `${config.apiBaseUrl}/endpoints/${encodeURIComponent(counterpartyId)}/routes`,
1267
+ `${config.apiBaseUrl}/endpoints/${encodeURIComponent(counterpartyId)}/routes` + (options.codeGates?.length ? `?codeGates=${options.codeGates.map(encodeURIComponent).join(",")}` : ""),
1249
1268
  { method: "GET", headers }
1250
1269
  );
1251
1270
  if (!response.ok) {
@@ -2078,6 +2097,20 @@ function resolveHttpPdlss(input) {
2078
2097
  }
2079
2098
  return { purpose, action, purposeSource, actionSource };
2080
2099
  }
2100
+ function wirePurposeSource(source) {
2101
+ switch (source) {
2102
+ case "route_config":
2103
+ return "route_config";
2104
+ case "header":
2105
+ case "legacy_header":
2106
+ case "query":
2107
+ return "header";
2108
+ case "custom_extractor":
2109
+ return "body";
2110
+ default:
2111
+ return "default";
2112
+ }
2113
+ }
2081
2114
 
2082
2115
  // src/adapters/approval-gate.ts
2083
2116
  var APPROVAL_REASON = "Transaction is above the autonomous limit and requires human approval. The agent owner can approve or deny this transaction in the AstraSync dashboard.";
@@ -2509,6 +2542,10 @@ function createMiddleware(options) {
2509
2542
  ...commerceArtifacts && { commerceArtifacts },
2510
2543
  purpose,
2511
2544
  action: pdlssPair.action,
2545
+ // 5.19.0: route purpose claim + request line (checked server-side).
2546
+ purposeSource: wirePurposeSource(pdlssPair.purposeSource),
2547
+ requestMethod: request.method,
2548
+ requestPath: pathname,
2512
2549
  resource: pathname,
2513
2550
  counterpartyUrl,
2514
2551
  counterpartyType: config.counterpartyType || "website",