@astrasyncai/verification-gateway 5.14.0 → 5.16.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 (100) hide show
  1. package/README.md +36 -18
  2. package/dist/adapters/express.d.mts +1 -1
  3. package/dist/adapters/express.d.ts +1 -1
  4. package/dist/adapters/express.js +492 -240
  5. package/dist/adapters/express.js.map +1 -1
  6. package/dist/adapters/express.mjs +492 -240
  7. package/dist/adapters/express.mjs.map +1 -1
  8. package/dist/adapters/mcp.d.mts +1 -1
  9. package/dist/adapters/mcp.d.ts +1 -1
  10. package/dist/adapters/mcp.js +23 -6
  11. package/dist/adapters/mcp.js.map +1 -1
  12. package/dist/adapters/mcp.mjs +23 -6
  13. package/dist/adapters/mcp.mjs.map +1 -1
  14. package/dist/adapters/nextjs.d.mts +1 -1
  15. package/dist/adapters/nextjs.d.ts +1 -1
  16. package/dist/adapters/nextjs.js +475 -239
  17. package/dist/adapters/nextjs.js.map +1 -1
  18. package/dist/adapters/nextjs.mjs +475 -239
  19. package/dist/adapters/nextjs.mjs.map +1 -1
  20. package/dist/adapters/sdk.d.mts +18 -10
  21. package/dist/adapters/sdk.d.ts +18 -10
  22. package/dist/adapters/sdk.js +83 -23
  23. package/dist/adapters/sdk.js.map +1 -1
  24. package/dist/adapters/sdk.mjs +83 -23
  25. package/dist/adapters/sdk.mjs.map +1 -1
  26. package/dist/agent/index.d.mts +69 -54
  27. package/dist/agent/index.d.ts +69 -54
  28. package/dist/agent/index.js +24 -14
  29. package/dist/agent/index.js.map +1 -1
  30. package/dist/agent/index.mjs +24 -14
  31. package/dist/agent/index.mjs.map +1 -1
  32. package/dist/bin/astrasync-claude-hook.js +58 -11
  33. package/dist/bin/astrasync-codex-hook.js +58 -11
  34. package/dist/bin/astrasync-guard.js +177 -11
  35. package/dist/bin/astrasync.js +433 -38
  36. package/dist/browser/background.js +53 -6
  37. package/dist/browser/background.js.map +1 -1
  38. package/dist/browser/background.mjs +63 -6
  39. package/dist/browser/background.mjs.map +1 -1
  40. package/dist/cli/index.js +1 -1
  41. package/dist/cli/index.js.map +1 -1
  42. package/dist/cli/index.mjs +1 -1
  43. package/dist/cli/index.mjs.map +1 -1
  44. package/dist/codex/index.js +58 -11
  45. package/dist/codex/index.js.map +1 -1
  46. package/dist/codex/index.mjs +68 -11
  47. package/dist/codex/index.mjs.map +1 -1
  48. package/dist/cursor/extension.js +58 -11
  49. package/dist/cursor/extension.js.map +1 -1
  50. package/dist/cursor/extension.mjs +68 -11
  51. package/dist/cursor/extension.mjs.map +1 -1
  52. package/dist/edge-config.d.mts +31 -2
  53. package/dist/edge-config.d.ts +31 -2
  54. package/dist/edge-config.js +35 -5
  55. package/dist/edge-config.js.map +1 -1
  56. package/dist/edge-config.mjs +32 -4
  57. package/dist/edge-config.mjs.map +1 -1
  58. package/dist/edge-core/index.d.mts +11 -2
  59. package/dist/edge-core/index.d.ts +11 -2
  60. package/dist/edge-core/index.js +97 -11
  61. package/dist/edge-core/index.js.map +1 -1
  62. package/dist/edge-core/index.mjs +95 -11
  63. package/dist/edge-core/index.mjs.map +1 -1
  64. package/dist/gateway/gateway.js +53 -6
  65. package/dist/gateway/gateway.js.map +1 -1
  66. package/dist/gateway/gateway.mjs +63 -6
  67. package/dist/gateway/gateway.mjs.map +1 -1
  68. package/dist/git-trigger/git-hooks.d.mts +1 -1
  69. package/dist/git-trigger/git-hooks.d.ts +1 -1
  70. package/dist/index.d.mts +1407 -88
  71. package/dist/index.d.ts +1407 -88
  72. package/dist/index.js +5148 -2616
  73. package/dist/index.js.map +1 -1
  74. package/dist/index.mjs +5094 -2618
  75. package/dist/index.mjs.map +1 -1
  76. package/dist/registration/index.d.mts +28 -2
  77. package/dist/registration/index.d.ts +28 -2
  78. package/dist/registration/index.js +18 -3
  79. package/dist/registration/index.js.map +1 -1
  80. package/dist/registration/index.mjs +15 -2
  81. package/dist/registration/index.mjs.map +1 -1
  82. package/dist/transport/index.d.mts +7 -5
  83. package/dist/transport/index.d.ts +7 -5
  84. package/dist/transport/index.js +61 -5
  85. package/dist/transport/index.js.map +1 -1
  86. package/dist/transport/index.mjs +67 -11
  87. package/dist/transport/index.mjs.map +1 -1
  88. package/dist/{types-BCkwBA84.d.mts → types-Blz520bR.d.mts} +116 -12
  89. package/dist/{types-BCkwBA84.d.ts → types-Blz520bR.d.ts} +116 -12
  90. package/dist/{types-C_b4QTyO.d.ts → types-Bm1QvGqI.d.ts} +114 -10
  91. package/dist/{types-DlshIIR-.d.mts → types-DBe4hgfT.d.mts} +114 -10
  92. package/dist/ui/index.d.mts +1 -1
  93. package/dist/ui/index.d.ts +1 -1
  94. package/dist/verify.d.mts +1 -1
  95. package/dist/verify.d.ts +1 -1
  96. package/dist/verify.js +23 -6
  97. package/dist/verify.js.map +1 -1
  98. package/dist/verify.mjs +23 -6
  99. package/dist/verify.mjs.map +1 -1
  100. package/package.json +1 -1
@@ -4036,7 +4036,7 @@ function getTrustLevel(score) {
4036
4036
  }
4037
4037
 
4038
4038
  // src/version.ts
4039
- var SDK_VERSION = "5.14.0";
4039
+ var SDK_VERSION = "5.16.0";
4040
4040
 
4041
4041
  // src/http.ts
4042
4042
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -4173,6 +4173,8 @@ function getCacheKey(request, counterpartyId) {
4173
4173
  request.durationRequired ?? "",
4174
4174
  request.invocationProtocol || "",
4175
4175
  request.enableRuntimeChallenge ? "1" : "0",
4176
+ // 5.16.0: route policy changes the verdict (owners / challenge).
4177
+ request.routePolicy ? JSON.stringify(request.routePolicy) : "",
4176
4178
  // callerMetadata fields contribute to risk model; include the ones
4177
4179
  // backend reads. sourceIp/userAgent/forwardedFor change per-request
4178
4180
  // so their inclusion effectively forces a re-check for any varying
@@ -4345,6 +4347,7 @@ async function callVerifyAccessAPI(config, request) {
4345
4347
  if (requestData.subAgentDepth !== void 0) body.subAgentDepth = requestData.subAgentDepth;
4346
4348
  if (requestData.enableRuntimeChallenge)
4347
4349
  body.enableRuntimeChallenge = requestData.enableRuntimeChallenge;
4350
+ if (requestData.routePolicy) body.routePolicy = requestData.routePolicy;
4348
4351
  if (requestData.createSession) body.createSession = requestData.createSession;
4349
4352
  if (requestData.durationRequired) body.durationRequired = requestData.durationRequired;
4350
4353
  if (requestData.counterpartyType) body.counterpartyType = requestData.counterpartyType;
@@ -4355,6 +4358,7 @@ async function callVerifyAccessAPI(config, request) {
4355
4358
  if (requestData.invocationProtocol) body.invocationProtocol = requestData.invocationProtocol;
4356
4359
  if (requestData.commercePhase) body.commercePhase = requestData.commercePhase;
4357
4360
  if (requestData.checkoutSessionId) body.checkoutSessionId = requestData.checkoutSessionId;
4361
+ if (requestData.checkoutJwt) body.checkoutJwt = requestData.checkoutJwt;
4358
4362
  if (requestData.checkoutItems) body.checkoutItems = requestData.checkoutItems;
4359
4363
  if (requestData.buyerEmail) body.buyerEmail = requestData.buyerEmail;
4360
4364
  if (requestData.commerceArtifacts) body.commerceArtifacts = requestData.commerceArtifacts;
@@ -4505,7 +4509,8 @@ async function verify(config, request, options) {
4505
4509
  "[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."
4506
4510
  );
4507
4511
  }
4508
- if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
4512
+ const uncacheable = Boolean(request.commerceArtifacts);
4513
+ if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache && !uncacheable) {
4509
4514
  const cached = getCachedResult(request, mergedConfig.counterpartyId);
4510
4515
  if (cached) {
4511
4516
  if (mergedConfig.debug) {
@@ -4586,7 +4591,10 @@ async function verify(config, request, options) {
4586
4591
  // MERCHANT caller only (bridge callers strip it before the agent plane).
4587
4592
  settlementToken: apiResponse.settlementToken,
4588
4593
  // 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
4589
- fulfilment: apiResponse.fulfilment
4594
+ fulfilment: apiResponse.fulfilment,
4595
+ mandates: apiResponse.mandates,
4596
+ kyaToken: apiResponse.kyaToken,
4597
+ aep: apiResponse.aep
4590
4598
  };
4591
4599
  return result2;
4592
4600
  }
@@ -4596,7 +4604,10 @@ async function verify(config, request, options) {
4596
4604
  trustScore: apiResponse.agent.trustScore,
4597
4605
  trustLevel: getTrustLevel(apiResponse.agent.trustScore),
4598
4606
  blockchainAnchored: apiResponse.agent.blockchainStatus === "anchored",
4599
- status: apiResponse.agent.agentStatus
4607
+ status: apiResponse.agent.agentStatus,
4608
+ ...apiResponse.agent.protocolIdentities && {
4609
+ protocolIdentities: apiResponse.agent.protocolIdentities
4610
+ }
4600
4611
  } : void 0;
4601
4612
  const developer = apiResponse.developer ? {
4602
4613
  astradId: apiResponse.developer.kyaOwnerId,
@@ -4647,7 +4658,11 @@ async function verify(config, request, options) {
4647
4658
  settlementOutcome: apiResponse.settlementOutcome,
4648
4659
  settlementToken: apiResponse.settlementToken,
4649
4660
  // 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
4650
- fulfilment: apiResponse.fulfilment
4661
+ fulfilment: apiResponse.fulfilment,
4662
+ // 5.15.0: merchant-lane AP2 mandates + KYAPay identity token.
4663
+ mandates: apiResponse.mandates,
4664
+ kyaToken: apiResponse.kyaToken,
4665
+ aep: apiResponse.aep
4651
4666
  };
4652
4667
  if (result.recommendation === "deny") {
4653
4668
  result.policyAllowed = false;
@@ -4667,7 +4682,9 @@ async function verify(config, request, options) {
4667
4682
  }
4668
4683
  const escalates = result.requiresStepUp === true || result.requiresApproval === true || result.recommendation === "step_up_required";
4669
4684
  if (mergedConfig.cacheTtl !== 0 && result.recommendation !== "deny" && !escalates) {
4670
- cacheResult(request, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
4685
+ if (!uncacheable) {
4686
+ cacheResult(request, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
4687
+ }
4671
4688
  }
4672
4689
  return result;
4673
4690
  }
@@ -4678,6 +4695,9 @@ var FALLBACK_MAX_WAIT_MS = 5 * 60 * 1e3;
4678
4695
  // src/metadata-capture.ts
4679
4696
  var MAX_TOTAL_BYTES = 16 * 1024;
4680
4697
 
4698
+ // src/adapters/commerce-detect.ts
4699
+ var MAX_BODY_BYTES = 64 * 1024;
4700
+
4681
4701
  // src/edge-config.ts
4682
4702
  var DEFAULT_EDGE_CONFIG = Object.freeze({
4683
4703
  version: 1,
@@ -4987,6 +5007,33 @@ var import_node_crypto4 = require("crypto");
4987
5007
  // src/transport/registry/visa.ts
4988
5008
  var import_jose = require("jose");
4989
5009
 
5010
+ // src/ucp/profile.ts
5011
+ var UCP_VERSION = "2026-08-25";
5012
+ var SPEC = `https://ucp.dev/${UCP_VERSION}/specification`;
5013
+ var SCHEMAS = `https://ucp.dev/${UCP_VERSION}/schemas`;
5014
+
5015
+ // src/ucp/signatures.ts
5016
+ var import_http_message_signatures3 = require("http-message-signatures");
5017
+
5018
+ // src/http-signatures/sign.ts
5019
+ var import_http_message_signatures2 = require("http-message-signatures");
5020
+
5021
+ // src/ucp/checkout-kit.ts
5022
+ var import_jose3 = require("jose");
5023
+
5024
+ // src/mandates/sd-jwt.ts
5025
+ var import_jose2 = require("jose");
5026
+
5027
+ // src/idempotency/index.ts
5028
+ var DEFAULT_IDEMPOTENCY_TTL_MS = 24 * 60 * 60 * 1e3;
5029
+
5030
+ // src/payments/kyapay.ts
5031
+ var import_jose4 = require("jose");
5032
+
5033
+ // src/aep/core.ts
5034
+ var ED25519_PKCS8_PREFIX = Buffer.from("302e020100300506032b657004220420", "hex");
5035
+ var ED25519_SPKI_PREFIX = Buffer.from("302a300506032b6570032100", "hex");
5036
+
4990
5037
  // src/gateway/modes/online.ts
4991
5038
  function toGatewayConfig(config) {
4992
5039
  return {
@@ -5724,7 +5771,7 @@ async function sendHeartbeat(enrolment, request, timeoutMs = 1500) {
5724
5771
 
5725
5772
  // src/fleet/policy-verify.ts
5726
5773
  var import_crypto = require("crypto");
5727
- var import_jose2 = require("jose");
5774
+ var import_jose5 = require("jose");
5728
5775
 
5729
5776
  // src/fleet/types.ts
5730
5777
  var FLEET_POLICY_TYP = "fleet-policy+jwt";
@@ -5773,8 +5820,8 @@ async function verifyFleetPolicy(jws, jwks, options) {
5773
5820
  let payloadBytes;
5774
5821
  let header;
5775
5822
  try {
5776
- const keySet = (0, import_jose2.createLocalJWKSet)(jwks);
5777
- const result = await (0, import_jose2.compactVerify)(jws, keySet, { algorithms: ["ES256"] });
5823
+ const keySet = (0, import_jose5.createLocalJWKSet)(jwks);
5824
+ const result = await (0, import_jose5.compactVerify)(jws, keySet, { algorithms: ["ES256"] });
5778
5825
  payloadBytes = result.payload;
5779
5826
  header = result.protectedHeader;
5780
5827
  } catch (err) {
@@ -5820,9 +5867,9 @@ async function resolveFleetJwks(pinned, chain, ownerId) {
5820
5867
  let lastSeq = 0;
5821
5868
  for (const link of chain) {
5822
5869
  try {
5823
- const { payload, protectedHeader } = await (0, import_jose2.compactVerify)(
5870
+ const { payload, protectedHeader } = await (0, import_jose5.compactVerify)(
5824
5871
  link,
5825
- (0, import_jose2.createLocalJWKSet)(trusted),
5872
+ (0, import_jose5.createLocalJWKSet)(trusted),
5826
5873
  { algorithms: ["ES256"] }
5827
5874
  );
5828
5875
  if (protectedHeader.typ !== FLEET_KEYS_TYP) continue;