@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
@@ -3986,7 +3986,7 @@ function getTrustLevel(score) {
3986
3986
  }
3987
3987
 
3988
3988
  // src/version.ts
3989
- var SDK_VERSION = "5.14.0";
3989
+ var SDK_VERSION = "5.16.0";
3990
3990
 
3991
3991
  // src/http.ts
3992
3992
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -4123,6 +4123,8 @@ function getCacheKey(request, counterpartyId) {
4123
4123
  request.durationRequired ?? "",
4124
4124
  request.invocationProtocol || "",
4125
4125
  request.enableRuntimeChallenge ? "1" : "0",
4126
+ // 5.16.0: route policy changes the verdict (owners / challenge).
4127
+ request.routePolicy ? JSON.stringify(request.routePolicy) : "",
4126
4128
  // callerMetadata fields contribute to risk model; include the ones
4127
4129
  // backend reads. sourceIp/userAgent/forwardedFor change per-request
4128
4130
  // so their inclusion effectively forces a re-check for any varying
@@ -4295,6 +4297,7 @@ async function callVerifyAccessAPI(config, request) {
4295
4297
  if (requestData.subAgentDepth !== void 0) body.subAgentDepth = requestData.subAgentDepth;
4296
4298
  if (requestData.enableRuntimeChallenge)
4297
4299
  body.enableRuntimeChallenge = requestData.enableRuntimeChallenge;
4300
+ if (requestData.routePolicy) body.routePolicy = requestData.routePolicy;
4298
4301
  if (requestData.createSession) body.createSession = requestData.createSession;
4299
4302
  if (requestData.durationRequired) body.durationRequired = requestData.durationRequired;
4300
4303
  if (requestData.counterpartyType) body.counterpartyType = requestData.counterpartyType;
@@ -4305,6 +4308,7 @@ async function callVerifyAccessAPI(config, request) {
4305
4308
  if (requestData.invocationProtocol) body.invocationProtocol = requestData.invocationProtocol;
4306
4309
  if (requestData.commercePhase) body.commercePhase = requestData.commercePhase;
4307
4310
  if (requestData.checkoutSessionId) body.checkoutSessionId = requestData.checkoutSessionId;
4311
+ if (requestData.checkoutJwt) body.checkoutJwt = requestData.checkoutJwt;
4308
4312
  if (requestData.checkoutItems) body.checkoutItems = requestData.checkoutItems;
4309
4313
  if (requestData.buyerEmail) body.buyerEmail = requestData.buyerEmail;
4310
4314
  if (requestData.commerceArtifacts) body.commerceArtifacts = requestData.commerceArtifacts;
@@ -4455,7 +4459,8 @@ async function verify(config, request, options) {
4455
4459
  "[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."
4456
4460
  );
4457
4461
  }
4458
- if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
4462
+ const uncacheable = Boolean(request.commerceArtifacts);
4463
+ if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache && !uncacheable) {
4459
4464
  const cached = getCachedResult(request, mergedConfig.counterpartyId);
4460
4465
  if (cached) {
4461
4466
  if (mergedConfig.debug) {
@@ -4536,7 +4541,10 @@ async function verify(config, request, options) {
4536
4541
  // MERCHANT caller only (bridge callers strip it before the agent plane).
4537
4542
  settlementToken: apiResponse.settlementToken,
4538
4543
  // 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
4539
- fulfilment: apiResponse.fulfilment
4544
+ fulfilment: apiResponse.fulfilment,
4545
+ mandates: apiResponse.mandates,
4546
+ kyaToken: apiResponse.kyaToken,
4547
+ aep: apiResponse.aep
4540
4548
  };
4541
4549
  return result2;
4542
4550
  }
@@ -4546,7 +4554,10 @@ async function verify(config, request, options) {
4546
4554
  trustScore: apiResponse.agent.trustScore,
4547
4555
  trustLevel: getTrustLevel(apiResponse.agent.trustScore),
4548
4556
  blockchainAnchored: apiResponse.agent.blockchainStatus === "anchored",
4549
- status: apiResponse.agent.agentStatus
4557
+ status: apiResponse.agent.agentStatus,
4558
+ ...apiResponse.agent.protocolIdentities && {
4559
+ protocolIdentities: apiResponse.agent.protocolIdentities
4560
+ }
4550
4561
  } : void 0;
4551
4562
  const developer = apiResponse.developer ? {
4552
4563
  astradId: apiResponse.developer.kyaOwnerId,
@@ -4597,7 +4608,11 @@ async function verify(config, request, options) {
4597
4608
  settlementOutcome: apiResponse.settlementOutcome,
4598
4609
  settlementToken: apiResponse.settlementToken,
4599
4610
  // 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
4600
- fulfilment: apiResponse.fulfilment
4611
+ fulfilment: apiResponse.fulfilment,
4612
+ // 5.15.0: merchant-lane AP2 mandates + KYAPay identity token.
4613
+ mandates: apiResponse.mandates,
4614
+ kyaToken: apiResponse.kyaToken,
4615
+ aep: apiResponse.aep
4601
4616
  };
4602
4617
  if (result.recommendation === "deny") {
4603
4618
  result.policyAllowed = false;
@@ -4617,7 +4632,9 @@ async function verify(config, request, options) {
4617
4632
  }
4618
4633
  const escalates = result.requiresStepUp === true || result.requiresApproval === true || result.recommendation === "step_up_required";
4619
4634
  if (mergedConfig.cacheTtl !== 0 && result.recommendation !== "deny" && !escalates) {
4620
- cacheResult(request, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
4635
+ if (!uncacheable) {
4636
+ cacheResult(request, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
4637
+ }
4621
4638
  }
4622
4639
  return result;
4623
4640
  }
@@ -4628,6 +4645,9 @@ var FALLBACK_MAX_WAIT_MS = 5 * 60 * 1e3;
4628
4645
  // src/metadata-capture.ts
4629
4646
  var MAX_TOTAL_BYTES = 16 * 1024;
4630
4647
 
4648
+ // src/adapters/commerce-detect.ts
4649
+ var MAX_BODY_BYTES = 64 * 1024;
4650
+
4631
4651
  // src/edge-config.ts
4632
4652
  var DEFAULT_EDGE_CONFIG = Object.freeze({
4633
4653
  version: 1,
@@ -4940,6 +4960,43 @@ import { createHash as createHash3, webcrypto } from "crypto";
4940
4960
  // src/transport/registry/visa.ts
4941
4961
  import { createRemoteJWKSet } from "jose";
4942
4962
 
4963
+ // src/ucp/profile.ts
4964
+ var UCP_VERSION = "2026-08-25";
4965
+ var SPEC = `https://ucp.dev/${UCP_VERSION}/specification`;
4966
+ var SCHEMAS = `https://ucp.dev/${UCP_VERSION}/schemas`;
4967
+
4968
+ // src/ucp/signatures.ts
4969
+ import { httpbis as httpbis3, createSigner as createSigner2 } from "http-message-signatures";
4970
+
4971
+ // src/http-signatures/sign.ts
4972
+ import { httpbis as httpbis2, createSigner } from "http-message-signatures";
4973
+
4974
+ // src/ucp/checkout-kit.ts
4975
+ import { CompactSign as CompactSign2 } from "jose";
4976
+
4977
+ // src/mandates/sd-jwt.ts
4978
+ import {
4979
+ CompactSign,
4980
+ compactVerify,
4981
+ importJWK,
4982
+ decodeProtectedHeader
4983
+ } from "jose";
4984
+
4985
+ // src/idempotency/index.ts
4986
+ var DEFAULT_IDEMPOTENCY_TTL_MS = 24 * 60 * 60 * 1e3;
4987
+
4988
+ // src/payments/kyapay.ts
4989
+ import {
4990
+ createLocalJWKSet,
4991
+ createRemoteJWKSet as createRemoteJWKSet2,
4992
+ decodeProtectedHeader as decodeProtectedHeader2,
4993
+ jwtVerify
4994
+ } from "jose";
4995
+
4996
+ // src/aep/core.ts
4997
+ var ED25519_PKCS8_PREFIX = Buffer.from("302e020100300506032b657004220420", "hex");
4998
+ var ED25519_SPKI_PREFIX = Buffer.from("302a300506032b6570032100", "hex");
4999
+
4943
5000
  // src/gateway/modes/online.ts
4944
5001
  function toGatewayConfig(config) {
4945
5002
  return {