@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
@@ -3994,7 +3994,7 @@ function getTrustLevel(score) {
3994
3994
  }
3995
3995
 
3996
3996
  // src/version.ts
3997
- var SDK_VERSION = "5.14.0";
3997
+ var SDK_VERSION = "5.16.0";
3998
3998
 
3999
3999
  // src/http.ts
4000
4000
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -4131,6 +4131,8 @@ function getCacheKey(request, counterpartyId) {
4131
4131
  request.durationRequired ?? "",
4132
4132
  request.invocationProtocol || "",
4133
4133
  request.enableRuntimeChallenge ? "1" : "0",
4134
+ // 5.16.0: route policy changes the verdict (owners / challenge).
4135
+ request.routePolicy ? JSON.stringify(request.routePolicy) : "",
4134
4136
  // callerMetadata fields contribute to risk model; include the ones
4135
4137
  // backend reads. sourceIp/userAgent/forwardedFor change per-request
4136
4138
  // so their inclusion effectively forces a re-check for any varying
@@ -4303,6 +4305,7 @@ async function callVerifyAccessAPI(config, request) {
4303
4305
  if (requestData.subAgentDepth !== void 0) body.subAgentDepth = requestData.subAgentDepth;
4304
4306
  if (requestData.enableRuntimeChallenge)
4305
4307
  body.enableRuntimeChallenge = requestData.enableRuntimeChallenge;
4308
+ if (requestData.routePolicy) body.routePolicy = requestData.routePolicy;
4306
4309
  if (requestData.createSession) body.createSession = requestData.createSession;
4307
4310
  if (requestData.durationRequired) body.durationRequired = requestData.durationRequired;
4308
4311
  if (requestData.counterpartyType) body.counterpartyType = requestData.counterpartyType;
@@ -4313,6 +4316,7 @@ async function callVerifyAccessAPI(config, request) {
4313
4316
  if (requestData.invocationProtocol) body.invocationProtocol = requestData.invocationProtocol;
4314
4317
  if (requestData.commercePhase) body.commercePhase = requestData.commercePhase;
4315
4318
  if (requestData.checkoutSessionId) body.checkoutSessionId = requestData.checkoutSessionId;
4319
+ if (requestData.checkoutJwt) body.checkoutJwt = requestData.checkoutJwt;
4316
4320
  if (requestData.checkoutItems) body.checkoutItems = requestData.checkoutItems;
4317
4321
  if (requestData.buyerEmail) body.buyerEmail = requestData.buyerEmail;
4318
4322
  if (requestData.commerceArtifacts) body.commerceArtifacts = requestData.commerceArtifacts;
@@ -4463,7 +4467,8 @@ async function verify(config, request, options) {
4463
4467
  "[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."
4464
4468
  );
4465
4469
  }
4466
- if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
4470
+ const uncacheable = Boolean(request.commerceArtifacts);
4471
+ if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache && !uncacheable) {
4467
4472
  const cached = getCachedResult(request, mergedConfig.counterpartyId);
4468
4473
  if (cached) {
4469
4474
  if (mergedConfig.debug) {
@@ -4544,7 +4549,10 @@ async function verify(config, request, options) {
4544
4549
  // MERCHANT caller only (bridge callers strip it before the agent plane).
4545
4550
  settlementToken: apiResponse.settlementToken,
4546
4551
  // 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
4547
- fulfilment: apiResponse.fulfilment
4552
+ fulfilment: apiResponse.fulfilment,
4553
+ mandates: apiResponse.mandates,
4554
+ kyaToken: apiResponse.kyaToken,
4555
+ aep: apiResponse.aep
4548
4556
  };
4549
4557
  return result2;
4550
4558
  }
@@ -4554,7 +4562,10 @@ async function verify(config, request, options) {
4554
4562
  trustScore: apiResponse.agent.trustScore,
4555
4563
  trustLevel: getTrustLevel(apiResponse.agent.trustScore),
4556
4564
  blockchainAnchored: apiResponse.agent.blockchainStatus === "anchored",
4557
- status: apiResponse.agent.agentStatus
4565
+ status: apiResponse.agent.agentStatus,
4566
+ ...apiResponse.agent.protocolIdentities && {
4567
+ protocolIdentities: apiResponse.agent.protocolIdentities
4568
+ }
4558
4569
  } : void 0;
4559
4570
  const developer = apiResponse.developer ? {
4560
4571
  astradId: apiResponse.developer.kyaOwnerId,
@@ -4605,7 +4616,11 @@ async function verify(config, request, options) {
4605
4616
  settlementOutcome: apiResponse.settlementOutcome,
4606
4617
  settlementToken: apiResponse.settlementToken,
4607
4618
  // 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
4608
- fulfilment: apiResponse.fulfilment
4619
+ fulfilment: apiResponse.fulfilment,
4620
+ // 5.15.0: merchant-lane AP2 mandates + KYAPay identity token.
4621
+ mandates: apiResponse.mandates,
4622
+ kyaToken: apiResponse.kyaToken,
4623
+ aep: apiResponse.aep
4609
4624
  };
4610
4625
  if (result.recommendation === "deny") {
4611
4626
  result.policyAllowed = false;
@@ -4625,7 +4640,9 @@ async function verify(config, request, options) {
4625
4640
  }
4626
4641
  const escalates = result.requiresStepUp === true || result.requiresApproval === true || result.recommendation === "step_up_required";
4627
4642
  if (mergedConfig.cacheTtl !== 0 && result.recommendation !== "deny" && !escalates) {
4628
- cacheResult(request, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
4643
+ if (!uncacheable) {
4644
+ cacheResult(request, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
4645
+ }
4629
4646
  }
4630
4647
  return result;
4631
4648
  }
@@ -4636,6 +4653,9 @@ var FALLBACK_MAX_WAIT_MS = 5 * 60 * 1e3;
4636
4653
  // src/metadata-capture.ts
4637
4654
  var MAX_TOTAL_BYTES = 16 * 1024;
4638
4655
 
4656
+ // src/adapters/commerce-detect.ts
4657
+ var MAX_BODY_BYTES = 64 * 1024;
4658
+
4639
4659
  // src/edge-config.ts
4640
4660
  var DEFAULT_EDGE_CONFIG = Object.freeze({
4641
4661
  version: 1,
@@ -4945,6 +4965,33 @@ var import_node_crypto4 = require("crypto");
4945
4965
  // src/transport/registry/visa.ts
4946
4966
  var import_jose = require("jose");
4947
4967
 
4968
+ // src/ucp/profile.ts
4969
+ var UCP_VERSION = "2026-08-25";
4970
+ var SPEC = `https://ucp.dev/${UCP_VERSION}/specification`;
4971
+ var SCHEMAS = `https://ucp.dev/${UCP_VERSION}/schemas`;
4972
+
4973
+ // src/ucp/signatures.ts
4974
+ var import_http_message_signatures3 = require("http-message-signatures");
4975
+
4976
+ // src/http-signatures/sign.ts
4977
+ var import_http_message_signatures2 = require("http-message-signatures");
4978
+
4979
+ // src/ucp/checkout-kit.ts
4980
+ var import_jose3 = require("jose");
4981
+
4982
+ // src/mandates/sd-jwt.ts
4983
+ var import_jose2 = require("jose");
4984
+
4985
+ // src/idempotency/index.ts
4986
+ var DEFAULT_IDEMPOTENCY_TTL_MS = 24 * 60 * 60 * 1e3;
4987
+
4988
+ // src/payments/kyapay.ts
4989
+ var import_jose4 = require("jose");
4990
+
4991
+ // src/aep/core.ts
4992
+ var ED25519_PKCS8_PREFIX = Buffer.from("302e020100300506032b657004220420", "hex");
4993
+ var ED25519_SPKI_PREFIX = Buffer.from("302a300506032b6570032100", "hex");
4994
+
4948
4995
  // src/gateway/modes/online.ts
4949
4996
  function toGatewayConfig(config) {
4950
4997
  return {
@@ -5656,7 +5703,7 @@ async function sendHeartbeat(enrolment, request, timeoutMs = 1500) {
5656
5703
 
5657
5704
  // src/fleet/policy-verify.ts
5658
5705
  var import_crypto = require("crypto");
5659
- var import_jose2 = require("jose");
5706
+ var import_jose5 = require("jose");
5660
5707
 
5661
5708
  // src/fleet/types.ts
5662
5709
  var FLEET_POLICY_TYP = "fleet-policy+jwt";
@@ -5705,8 +5752,8 @@ async function verifyFleetPolicy(jws, jwks, options) {
5705
5752
  let payloadBytes;
5706
5753
  let header;
5707
5754
  try {
5708
- const keySet = (0, import_jose2.createLocalJWKSet)(jwks);
5709
- const result = await (0, import_jose2.compactVerify)(jws, keySet, { algorithms: ["ES256"] });
5755
+ const keySet = (0, import_jose5.createLocalJWKSet)(jwks);
5756
+ const result = await (0, import_jose5.compactVerify)(jws, keySet, { algorithms: ["ES256"] });
5710
5757
  payloadBytes = result.payload;
5711
5758
  header = result.protectedHeader;
5712
5759
  } catch (err) {
@@ -5752,9 +5799,9 @@ async function resolveFleetJwks(pinned, chain, ownerId) {
5752
5799
  let lastSeq = 0;
5753
5800
  for (const link of chain) {
5754
5801
  try {
5755
- const { payload, protectedHeader } = await (0, import_jose2.compactVerify)(
5802
+ const { payload, protectedHeader } = await (0, import_jose5.compactVerify)(
5756
5803
  link,
5757
- (0, import_jose2.createLocalJWKSet)(trusted),
5804
+ (0, import_jose5.createLocalJWKSet)(trusted),
5758
5805
  { algorithms: ["ES256"] }
5759
5806
  );
5760
5807
  if (protectedHeader.typ !== FLEET_KEYS_TYP) continue;