@astrasyncai/verification-gateway 5.14.0 → 5.15.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 (98) hide show
  1. package/README.md +27 -17
  2. package/dist/adapters/express.d.mts +1 -1
  3. package/dist/adapters/express.d.ts +1 -1
  4. package/dist/adapters/express.js +477 -240
  5. package/dist/adapters/express.js.map +1 -1
  6. package/dist/adapters/express.mjs +477 -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 +20 -6
  11. package/dist/adapters/mcp.js.map +1 -1
  12. package/dist/adapters/mcp.mjs +20 -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 +460 -239
  17. package/dist/adapters/nextjs.js.map +1 -1
  18. package/dist/adapters/nextjs.mjs +460 -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 +80 -23
  23. package/dist/adapters/sdk.js.map +1 -1
  24. package/dist/adapters/sdk.mjs +80 -23
  25. package/dist/adapters/sdk.mjs.map +1 -1
  26. package/dist/agent/index.js +1 -1
  27. package/dist/agent/index.js.map +1 -1
  28. package/dist/agent/index.mjs +1 -1
  29. package/dist/agent/index.mjs.map +1 -1
  30. package/dist/bin/astrasync-claude-hook.js +55 -11
  31. package/dist/bin/astrasync-codex-hook.js +55 -11
  32. package/dist/bin/astrasync-guard.js +55 -11
  33. package/dist/bin/astrasync.js +288 -33
  34. package/dist/browser/background.js +50 -6
  35. package/dist/browser/background.js.map +1 -1
  36. package/dist/browser/background.mjs +60 -6
  37. package/dist/browser/background.mjs.map +1 -1
  38. package/dist/cli/index.js +1 -1
  39. package/dist/cli/index.js.map +1 -1
  40. package/dist/cli/index.mjs +1 -1
  41. package/dist/cli/index.mjs.map +1 -1
  42. package/dist/codex/index.js +55 -11
  43. package/dist/codex/index.js.map +1 -1
  44. package/dist/codex/index.mjs +65 -11
  45. package/dist/codex/index.mjs.map +1 -1
  46. package/dist/cursor/extension.js +55 -11
  47. package/dist/cursor/extension.js.map +1 -1
  48. package/dist/cursor/extension.mjs +65 -11
  49. package/dist/cursor/extension.mjs.map +1 -1
  50. package/dist/edge-config.d.mts +31 -2
  51. package/dist/edge-config.d.ts +31 -2
  52. package/dist/edge-config.js +35 -5
  53. package/dist/edge-config.js.map +1 -1
  54. package/dist/edge-config.mjs +32 -4
  55. package/dist/edge-config.mjs.map +1 -1
  56. package/dist/edge-core/index.d.mts +11 -2
  57. package/dist/edge-core/index.d.ts +11 -2
  58. package/dist/edge-core/index.js +93 -10
  59. package/dist/edge-core/index.js.map +1 -1
  60. package/dist/edge-core/index.mjs +91 -10
  61. package/dist/edge-core/index.mjs.map +1 -1
  62. package/dist/gateway/gateway.js +50 -6
  63. package/dist/gateway/gateway.js.map +1 -1
  64. package/dist/gateway/gateway.mjs +60 -6
  65. package/dist/gateway/gateway.mjs.map +1 -1
  66. package/dist/git-trigger/git-hooks.d.mts +1 -1
  67. package/dist/git-trigger/git-hooks.d.ts +1 -1
  68. package/dist/index.d.mts +1314 -34
  69. package/dist/index.d.ts +1314 -34
  70. package/dist/index.js +5116 -2612
  71. package/dist/index.js.map +1 -1
  72. package/dist/index.mjs +5063 -2614
  73. package/dist/index.mjs.map +1 -1
  74. package/dist/registration/index.d.mts +28 -2
  75. package/dist/registration/index.d.ts +28 -2
  76. package/dist/registration/index.js +18 -3
  77. package/dist/registration/index.js.map +1 -1
  78. package/dist/registration/index.mjs +15 -2
  79. package/dist/registration/index.mjs.map +1 -1
  80. package/dist/transport/index.d.mts +7 -5
  81. package/dist/transport/index.d.ts +7 -5
  82. package/dist/transport/index.js +61 -5
  83. package/dist/transport/index.js.map +1 -1
  84. package/dist/transport/index.mjs +67 -11
  85. package/dist/transport/index.mjs.map +1 -1
  86. package/dist/{types-C_b4QTyO.d.ts → types-DtJjlW4O.d.ts} +104 -10
  87. package/dist/{types-BCkwBA84.d.mts → types-Dxf9DBpr.d.mts} +106 -12
  88. package/dist/{types-BCkwBA84.d.ts → types-Dxf9DBpr.d.ts} +106 -12
  89. package/dist/{types-DlshIIR-.d.mts → types-Eg6VoBNH.d.mts} +104 -10
  90. package/dist/ui/index.d.mts +1 -1
  91. package/dist/ui/index.d.ts +1 -1
  92. package/dist/verify.d.mts +1 -1
  93. package/dist/verify.d.ts +1 -1
  94. package/dist/verify.js +20 -6
  95. package/dist/verify.js.map +1 -1
  96. package/dist/verify.mjs +20 -6
  97. package/dist/verify.mjs.map +1 -1
  98. package/package.json +1 -1
@@ -36,7 +36,7 @@ var SDK_VERSION;
36
36
  var init_version = __esm({
37
37
  "src/version.ts"() {
38
38
  "use strict";
39
- SDK_VERSION = "5.14.0";
39
+ SDK_VERSION = "5.15.0";
40
40
  }
41
41
  });
42
42
 
@@ -5341,6 +5341,7 @@ async function callVerifyAccessAPI(config, request2) {
5341
5341
  if (requestData.invocationProtocol) body.invocationProtocol = requestData.invocationProtocol;
5342
5342
  if (requestData.commercePhase) body.commercePhase = requestData.commercePhase;
5343
5343
  if (requestData.checkoutSessionId) body.checkoutSessionId = requestData.checkoutSessionId;
5344
+ if (requestData.checkoutJwt) body.checkoutJwt = requestData.checkoutJwt;
5344
5345
  if (requestData.checkoutItems) body.checkoutItems = requestData.checkoutItems;
5345
5346
  if (requestData.buyerEmail) body.buyerEmail = requestData.buyerEmail;
5346
5347
  if (requestData.commerceArtifacts) body.commerceArtifacts = requestData.commerceArtifacts;
@@ -5491,7 +5492,8 @@ async function verify(config, request2, options) {
5491
5492
  "[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."
5492
5493
  );
5493
5494
  }
5494
- if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
5495
+ const uncacheable = Boolean(request2.commerceArtifacts);
5496
+ if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache && !uncacheable) {
5495
5497
  const cached = getCachedResult(request2, mergedConfig.counterpartyId);
5496
5498
  if (cached) {
5497
5499
  if (mergedConfig.debug) {
@@ -5572,7 +5574,10 @@ async function verify(config, request2, options) {
5572
5574
  // MERCHANT caller only (bridge callers strip it before the agent plane).
5573
5575
  settlementToken: apiResponse.settlementToken,
5574
5576
  // 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
5575
- fulfilment: apiResponse.fulfilment
5577
+ fulfilment: apiResponse.fulfilment,
5578
+ mandates: apiResponse.mandates,
5579
+ kyaToken: apiResponse.kyaToken,
5580
+ aep: apiResponse.aep
5576
5581
  };
5577
5582
  return result2;
5578
5583
  }
@@ -5582,7 +5587,10 @@ async function verify(config, request2, options) {
5582
5587
  trustScore: apiResponse.agent.trustScore,
5583
5588
  trustLevel: getTrustLevel(apiResponse.agent.trustScore),
5584
5589
  blockchainAnchored: apiResponse.agent.blockchainStatus === "anchored",
5585
- status: apiResponse.agent.agentStatus
5590
+ status: apiResponse.agent.agentStatus,
5591
+ ...apiResponse.agent.protocolIdentities && {
5592
+ protocolIdentities: apiResponse.agent.protocolIdentities
5593
+ }
5586
5594
  } : void 0;
5587
5595
  const developer = apiResponse.developer ? {
5588
5596
  astradId: apiResponse.developer.kyaOwnerId,
@@ -5633,7 +5641,11 @@ async function verify(config, request2, options) {
5633
5641
  settlementOutcome: apiResponse.settlementOutcome,
5634
5642
  settlementToken: apiResponse.settlementToken,
5635
5643
  // 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
5636
- fulfilment: apiResponse.fulfilment
5644
+ fulfilment: apiResponse.fulfilment,
5645
+ // 5.15.0: merchant-lane AP2 mandates + KYAPay identity token.
5646
+ mandates: apiResponse.mandates,
5647
+ kyaToken: apiResponse.kyaToken,
5648
+ aep: apiResponse.aep
5637
5649
  };
5638
5650
  if (result.recommendation === "deny") {
5639
5651
  result.policyAllowed = false;
@@ -5653,7 +5665,9 @@ async function verify(config, request2, options) {
5653
5665
  }
5654
5666
  const escalates = result.requiresStepUp === true || result.requiresApproval === true || result.recommendation === "step_up_required";
5655
5667
  if (mergedConfig.cacheTtl !== 0 && result.recommendation !== "deny" && !escalates) {
5656
- cacheResult(request2, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
5668
+ if (!uncacheable) {
5669
+ cacheResult(request2, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
5670
+ }
5657
5671
  }
5658
5672
  return result;
5659
5673
  }
@@ -5709,6 +5723,41 @@ var init_settlement = __esm({
5709
5723
  }
5710
5724
  });
5711
5725
 
5726
+ // src/metadata-capture.ts
5727
+ var MAX_TOTAL_BYTES;
5728
+ var init_metadata_capture = __esm({
5729
+ "src/metadata-capture.ts"() {
5730
+ "use strict";
5731
+ MAX_TOTAL_BYTES = 16 * 1024;
5732
+ }
5733
+ });
5734
+
5735
+ // src/edge-core/request.ts
5736
+ var init_request = __esm({
5737
+ "src/edge-core/request.ts"() {
5738
+ "use strict";
5739
+ init_metadata_capture();
5740
+ }
5741
+ });
5742
+
5743
+ // src/edge-core/detect.ts
5744
+ var init_detect = __esm({
5745
+ "src/edge-core/detect.ts"() {
5746
+ "use strict";
5747
+ init_request();
5748
+ }
5749
+ });
5750
+
5751
+ // src/adapters/commerce-detect.ts
5752
+ var MAX_BODY_BYTES;
5753
+ var init_commerce_detect = __esm({
5754
+ "src/adapters/commerce-detect.ts"() {
5755
+ "use strict";
5756
+ init_detect();
5757
+ MAX_BODY_BYTES = 64 * 1024;
5758
+ }
5759
+ });
5760
+
5712
5761
  // src/transport/http.ts
5713
5762
  var init_http2 = __esm({
5714
5763
  "src/transport/http.ts"() {
@@ -5737,12 +5786,10 @@ var init_pdlss_pre_check = __esm({
5737
5786
  }
5738
5787
  });
5739
5788
 
5740
- // src/metadata-capture.ts
5741
- var MAX_TOTAL_BYTES;
5742
- var init_metadata_capture = __esm({
5743
- "src/metadata-capture.ts"() {
5789
+ // src/route-pattern.ts
5790
+ var init_route_pattern = __esm({
5791
+ "src/route-pattern.ts"() {
5744
5792
  "use strict";
5745
- MAX_TOTAL_BYTES = 16 * 1024;
5746
5793
  }
5747
5794
  });
5748
5795
 
@@ -5752,6 +5799,8 @@ var init_edge_config = __esm({
5752
5799
  "src/edge-config.ts"() {
5753
5800
  "use strict";
5754
5801
  init_http();
5802
+ init_route_pattern();
5803
+ init_route_pattern();
5755
5804
  DEFAULT_EDGE_CONFIG = Object.freeze({
5756
5805
  version: 1,
5757
5806
  mode: "observe",
@@ -5772,22 +5821,6 @@ var init_platform_signatures = __esm({
5772
5821
  }
5773
5822
  });
5774
5823
 
5775
- // src/edge-core/request.ts
5776
- var init_request = __esm({
5777
- "src/edge-core/request.ts"() {
5778
- "use strict";
5779
- init_metadata_capture();
5780
- }
5781
- });
5782
-
5783
- // src/edge-core/detect.ts
5784
- var init_detect = __esm({
5785
- "src/edge-core/detect.ts"() {
5786
- "use strict";
5787
- init_request();
5788
- }
5789
- });
5790
-
5791
5824
  // src/edge-core/classify.ts
5792
5825
  var init_classify = __esm({
5793
5826
  "src/edge-core/classify.ts"() {
@@ -6058,6 +6091,7 @@ var DEFAULT_ROUTES_REFRESH_MS;
6058
6091
  var init_express = __esm({
6059
6092
  "src/adapters/express.ts"() {
6060
6093
  "use strict";
6094
+ init_commerce_detect();
6061
6095
  init_stepup_poll();
6062
6096
  init_verify();
6063
6097
  init_http2();
@@ -6069,6 +6103,7 @@ var init_express = __esm({
6069
6103
  init_metadata_capture();
6070
6104
  init_anonymous_beacon();
6071
6105
  init_failure_posture();
6106
+ init_route_pattern();
6072
6107
  DEFAULT_ROUTES_REFRESH_MS = 5 * 60 * 1e3;
6073
6108
  }
6074
6109
  });
@@ -6078,6 +6113,7 @@ var DEFAULT_ROUTES_REFRESH_MS2;
6078
6113
  var init_nextjs = __esm({
6079
6114
  "src/adapters/nextjs.ts"() {
6080
6115
  "use strict";
6116
+ init_commerce_detect();
6081
6117
  init_stepup_poll();
6082
6118
  init_verify();
6083
6119
  init_http2();
@@ -6088,6 +6124,7 @@ var init_nextjs = __esm({
6088
6124
  init_http_pdlss();
6089
6125
  init_approval_gate();
6090
6126
  init_verified_hop();
6127
+ init_route_pattern();
6091
6128
  DEFAULT_ROUTES_REFRESH_MS2 = 5 * 60 * 1e3;
6092
6129
  }
6093
6130
  });
@@ -6099,6 +6136,7 @@ var init_sdk = __esm({
6099
6136
  init_verify();
6100
6137
  init_trust_levels();
6101
6138
  init_http();
6139
+ init_errors();
6102
6140
  }
6103
6141
  });
6104
6142
 
@@ -6489,6 +6527,215 @@ var init_runtime_signatures = __esm({
6489
6527
  }
6490
6528
  });
6491
6529
 
6530
+ // src/ucp/agent-header.ts
6531
+ var init_agent_header = __esm({
6532
+ "src/ucp/agent-header.ts"() {
6533
+ "use strict";
6534
+ }
6535
+ });
6536
+
6537
+ // src/ucp/profile.ts
6538
+ var UCP_VERSION, SPEC, SCHEMAS;
6539
+ var init_profile = __esm({
6540
+ "src/ucp/profile.ts"() {
6541
+ "use strict";
6542
+ UCP_VERSION = "2026-08-25";
6543
+ SPEC = `https://ucp.dev/${UCP_VERSION}/specification`;
6544
+ SCHEMAS = `https://ucp.dev/${UCP_VERSION}/schemas`;
6545
+ }
6546
+ });
6547
+
6548
+ // src/ucp/negotiate.ts
6549
+ var init_negotiate = __esm({
6550
+ "src/ucp/negotiate.ts"() {
6551
+ "use strict";
6552
+ }
6553
+ });
6554
+
6555
+ // src/ucp/messages.ts
6556
+ var init_messages = __esm({
6557
+ "src/ucp/messages.ts"() {
6558
+ "use strict";
6559
+ }
6560
+ });
6561
+
6562
+ // src/http-signatures/sign.ts
6563
+ var import_http_message_signatures2;
6564
+ var init_sign = __esm({
6565
+ "src/http-signatures/sign.ts"() {
6566
+ "use strict";
6567
+ import_http_message_signatures2 = require("http-message-signatures");
6568
+ }
6569
+ });
6570
+
6571
+ // src/ucp/signatures.ts
6572
+ var import_http_message_signatures3;
6573
+ var init_signatures = __esm({
6574
+ "src/ucp/signatures.ts"() {
6575
+ "use strict";
6576
+ import_http_message_signatures3 = require("http-message-signatures");
6577
+ init_sign();
6578
+ init_rfc9421_verify();
6579
+ }
6580
+ });
6581
+
6582
+ // src/mandates/sd-jwt.ts
6583
+ var import_jose2;
6584
+ var init_sd_jwt = __esm({
6585
+ "src/mandates/sd-jwt.ts"() {
6586
+ "use strict";
6587
+ import_jose2 = require("jose");
6588
+ }
6589
+ });
6590
+
6591
+ // src/mandates/ap2.ts
6592
+ var init_ap22 = __esm({
6593
+ "src/mandates/ap2.ts"() {
6594
+ "use strict";
6595
+ init_sd_jwt();
6596
+ }
6597
+ });
6598
+
6599
+ // src/mandates/index.ts
6600
+ var init_mandates = __esm({
6601
+ "src/mandates/index.ts"() {
6602
+ "use strict";
6603
+ init_sd_jwt();
6604
+ init_ap22();
6605
+ }
6606
+ });
6607
+
6608
+ // src/idempotency/index.ts
6609
+ var DEFAULT_IDEMPOTENCY_TTL_MS;
6610
+ var init_idempotency = __esm({
6611
+ "src/idempotency/index.ts"() {
6612
+ "use strict";
6613
+ DEFAULT_IDEMPOTENCY_TTL_MS = 24 * 60 * 60 * 1e3;
6614
+ }
6615
+ });
6616
+
6617
+ // src/ucp/jcs.ts
6618
+ var init_jcs = __esm({
6619
+ "src/ucp/jcs.ts"() {
6620
+ "use strict";
6621
+ }
6622
+ });
6623
+
6624
+ // src/ucp/report-amount.ts
6625
+ var init_report_amount = __esm({
6626
+ "src/ucp/report-amount.ts"() {
6627
+ "use strict";
6628
+ }
6629
+ });
6630
+
6631
+ // src/ucp/checkout-kit.ts
6632
+ var import_jose3;
6633
+ var init_checkout_kit = __esm({
6634
+ "src/ucp/checkout-kit.ts"() {
6635
+ "use strict";
6636
+ import_jose3 = require("jose");
6637
+ init_mandates();
6638
+ init_idempotency();
6639
+ init_jcs();
6640
+ init_agent_header();
6641
+ init_negotiate();
6642
+ init_messages();
6643
+ init_profile();
6644
+ init_signatures();
6645
+ init_report_amount();
6646
+ }
6647
+ });
6648
+
6649
+ // src/ucp/index.ts
6650
+ var init_ucp2 = __esm({
6651
+ "src/ucp/index.ts"() {
6652
+ "use strict";
6653
+ init_agent_header();
6654
+ init_profile();
6655
+ init_negotiate();
6656
+ init_messages();
6657
+ init_signatures();
6658
+ init_checkout_kit();
6659
+ init_jcs();
6660
+ }
6661
+ });
6662
+
6663
+ // src/payments/x402.ts
6664
+ var init_x4022 = __esm({
6665
+ "src/payments/x402.ts"() {
6666
+ "use strict";
6667
+ }
6668
+ });
6669
+
6670
+ // src/payments/mpp.ts
6671
+ var init_mpp2 = __esm({
6672
+ "src/payments/mpp.ts"() {
6673
+ "use strict";
6674
+ }
6675
+ });
6676
+
6677
+ // src/payments/kyapay.ts
6678
+ var import_jose4;
6679
+ var init_kyapay = __esm({
6680
+ "src/payments/kyapay.ts"() {
6681
+ "use strict";
6682
+ import_jose4 = require("jose");
6683
+ }
6684
+ });
6685
+
6686
+ // src/payments/index.ts
6687
+ var init_payments = __esm({
6688
+ "src/payments/index.ts"() {
6689
+ "use strict";
6690
+ init_x4022();
6691
+ init_mpp2();
6692
+ init_kyapay();
6693
+ }
6694
+ });
6695
+
6696
+ // src/aep/core.ts
6697
+ var ED25519_PKCS8_PREFIX, ED25519_SPKI_PREFIX;
6698
+ var init_core = __esm({
6699
+ "src/aep/core.ts"() {
6700
+ "use strict";
6701
+ ED25519_PKCS8_PREFIX = Buffer.from("302e020100300506032b657004220420", "hex");
6702
+ ED25519_SPKI_PREFIX = Buffer.from("302a300506032b6570032100", "hex");
6703
+ }
6704
+ });
6705
+
6706
+ // src/aep/index.ts
6707
+ var init_aep = __esm({
6708
+ "src/aep/index.ts"() {
6709
+ "use strict";
6710
+ init_core();
6711
+ }
6712
+ });
6713
+
6714
+ // src/acp/checkout-kit.ts
6715
+ var init_checkout_kit2 = __esm({
6716
+ "src/acp/checkout-kit.ts"() {
6717
+ "use strict";
6718
+ init_idempotency();
6719
+ init_report_amount();
6720
+ }
6721
+ });
6722
+
6723
+ // src/acp/index.ts
6724
+ var init_acp2 = __esm({
6725
+ "src/acp/index.ts"() {
6726
+ "use strict";
6727
+ init_checkout_kit2();
6728
+ }
6729
+ });
6730
+
6731
+ // src/http-signatures/index.ts
6732
+ var init_http_signatures = __esm({
6733
+ "src/http-signatures/index.ts"() {
6734
+ "use strict";
6735
+ init_sign();
6736
+ }
6737
+ });
6738
+
6492
6739
  // src/index.ts
6493
6740
  var init_src = __esm({
6494
6741
  "src/index.ts"() {
@@ -6521,6 +6768,14 @@ var init_src = __esm({
6521
6768
  init_pdlss_parser();
6522
6769
  init_schema();
6523
6770
  init_version();
6771
+ init_route_pattern();
6772
+ init_ucp2();
6773
+ init_payments();
6774
+ init_aep();
6775
+ init_acp2();
6776
+ init_mandates();
6777
+ init_http_signatures();
6778
+ init_idempotency();
6524
6779
  }
6525
6780
  });
6526
6781
 
@@ -7661,8 +7916,8 @@ async function verifyFleetPolicy(jws, jwks, options) {
7661
7916
  let payloadBytes;
7662
7917
  let header;
7663
7918
  try {
7664
- const keySet = (0, import_jose2.createLocalJWKSet)(jwks);
7665
- const result = await (0, import_jose2.compactVerify)(jws, keySet, { algorithms: ["ES256"] });
7919
+ const keySet = (0, import_jose5.createLocalJWKSet)(jwks);
7920
+ const result = await (0, import_jose5.compactVerify)(jws, keySet, { algorithms: ["ES256"] });
7666
7921
  payloadBytes = result.payload;
7667
7922
  header = result.protectedHeader;
7668
7923
  } catch (err) {
@@ -7708,9 +7963,9 @@ async function resolveFleetJwks(pinned, chain, ownerId) {
7708
7963
  let lastSeq = 0;
7709
7964
  for (const link of chain) {
7710
7965
  try {
7711
- const { payload, protectedHeader } = await (0, import_jose2.compactVerify)(
7966
+ const { payload, protectedHeader } = await (0, import_jose5.compactVerify)(
7712
7967
  link,
7713
- (0, import_jose2.createLocalJWKSet)(trusted),
7968
+ (0, import_jose5.createLocalJWKSet)(trusted),
7714
7969
  { algorithms: ["ES256"] }
7715
7970
  );
7716
7971
  if (protectedHeader.typ !== FLEET_KEYS_TYP) continue;
@@ -7740,12 +7995,12 @@ async function pickNewestValid(candidates, jwks, options) {
7740
7995
  if (!best) throw lastError;
7741
7996
  return best;
7742
7997
  }
7743
- var import_crypto, import_jose2, FleetPolicyError;
7998
+ var import_crypto, import_jose5, FleetPolicyError;
7744
7999
  var init_policy_verify = __esm({
7745
8000
  "src/fleet/policy-verify.ts"() {
7746
8001
  "use strict";
7747
8002
  import_crypto = require("crypto");
7748
- import_jose2 = require("jose");
8003
+ import_jose5 = require("jose");
7749
8004
  init_pdlss_parser();
7750
8005
  init_types3();
7751
8006
  FleetPolicyError = class extends Error {
@@ -3988,7 +3988,7 @@ function getTrustLevel(score) {
3988
3988
  }
3989
3989
 
3990
3990
  // src/version.ts
3991
- var SDK_VERSION = "5.14.0";
3991
+ var SDK_VERSION = "5.15.0";
3992
3992
 
3993
3993
  // src/http.ts
3994
3994
  var SDK_USER_AGENT = `astrasync-sdk/${SDK_VERSION}`;
@@ -4307,6 +4307,7 @@ async function callVerifyAccessAPI(config, request) {
4307
4307
  if (requestData.invocationProtocol) body.invocationProtocol = requestData.invocationProtocol;
4308
4308
  if (requestData.commercePhase) body.commercePhase = requestData.commercePhase;
4309
4309
  if (requestData.checkoutSessionId) body.checkoutSessionId = requestData.checkoutSessionId;
4310
+ if (requestData.checkoutJwt) body.checkoutJwt = requestData.checkoutJwt;
4310
4311
  if (requestData.checkoutItems) body.checkoutItems = requestData.checkoutItems;
4311
4312
  if (requestData.buyerEmail) body.buyerEmail = requestData.buyerEmail;
4312
4313
  if (requestData.commerceArtifacts) body.commerceArtifacts = requestData.commerceArtifacts;
@@ -4457,7 +4458,8 @@ async function verify(config, request, options) {
4457
4458
  "[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."
4458
4459
  );
4459
4460
  }
4460
- if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache) {
4461
+ const uncacheable = Boolean(request.commerceArtifacts);
4462
+ if (mergedConfig.cacheTtl !== 0 && !options?.bypassCache && !uncacheable) {
4461
4463
  const cached = getCachedResult(request, mergedConfig.counterpartyId);
4462
4464
  if (cached) {
4463
4465
  if (mergedConfig.debug) {
@@ -4538,7 +4540,10 @@ async function verify(config, request, options) {
4538
4540
  // MERCHANT caller only (bridge callers strip it before the agent plane).
4539
4541
  settlementToken: apiResponse.settlementToken,
4540
4542
  // 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
4541
- fulfilment: apiResponse.fulfilment
4543
+ fulfilment: apiResponse.fulfilment,
4544
+ mandates: apiResponse.mandates,
4545
+ kyaToken: apiResponse.kyaToken,
4546
+ aep: apiResponse.aep
4542
4547
  };
4543
4548
  return result2;
4544
4549
  }
@@ -4548,7 +4553,10 @@ async function verify(config, request, options) {
4548
4553
  trustScore: apiResponse.agent.trustScore,
4549
4554
  trustLevel: getTrustLevel(apiResponse.agent.trustScore),
4550
4555
  blockchainAnchored: apiResponse.agent.blockchainStatus === "anchored",
4551
- status: apiResponse.agent.agentStatus
4556
+ status: apiResponse.agent.agentStatus,
4557
+ ...apiResponse.agent.protocolIdentities && {
4558
+ protocolIdentities: apiResponse.agent.protocolIdentities
4559
+ }
4552
4560
  } : void 0;
4553
4561
  const developer = apiResponse.developer ? {
4554
4562
  astradId: apiResponse.developer.kyaOwnerId,
@@ -4599,7 +4607,11 @@ async function verify(config, request, options) {
4599
4607
  settlementOutcome: apiResponse.settlementOutcome,
4600
4608
  settlementToken: apiResponse.settlementToken,
4601
4609
  // 5.6.0: fulfilment contact — merchant-only lane, same strip rule.
4602
- fulfilment: apiResponse.fulfilment
4610
+ fulfilment: apiResponse.fulfilment,
4611
+ // 5.15.0: merchant-lane AP2 mandates + KYAPay identity token.
4612
+ mandates: apiResponse.mandates,
4613
+ kyaToken: apiResponse.kyaToken,
4614
+ aep: apiResponse.aep
4603
4615
  };
4604
4616
  if (result.recommendation === "deny") {
4605
4617
  result.policyAllowed = false;
@@ -4619,7 +4631,9 @@ async function verify(config, request, options) {
4619
4631
  }
4620
4632
  const escalates = result.requiresStepUp === true || result.requiresApproval === true || result.recommendation === "step_up_required";
4621
4633
  if (mergedConfig.cacheTtl !== 0 && result.recommendation !== "deny" && !escalates) {
4622
- cacheResult(request, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
4634
+ if (!uncacheable) {
4635
+ cacheResult(request, result, mergedConfig.cacheTtl, mergedConfig.counterpartyId);
4636
+ }
4623
4637
  }
4624
4638
  return result;
4625
4639
  }
@@ -4630,6 +4644,9 @@ var FALLBACK_MAX_WAIT_MS = 5 * 60 * 1e3;
4630
4644
  // src/metadata-capture.ts
4631
4645
  var MAX_TOTAL_BYTES = 16 * 1024;
4632
4646
 
4647
+ // src/adapters/commerce-detect.ts
4648
+ var MAX_BODY_BYTES = 64 * 1024;
4649
+
4633
4650
  // src/edge-config.ts
4634
4651
  var DEFAULT_EDGE_CONFIG = Object.freeze({
4635
4652
  version: 1,
@@ -4939,6 +4956,33 @@ var import_node_crypto4 = require("crypto");
4939
4956
  // src/transport/registry/visa.ts
4940
4957
  var import_jose = require("jose");
4941
4958
 
4959
+ // src/ucp/profile.ts
4960
+ var UCP_VERSION = "2026-08-25";
4961
+ var SPEC = `https://ucp.dev/${UCP_VERSION}/specification`;
4962
+ var SCHEMAS = `https://ucp.dev/${UCP_VERSION}/schemas`;
4963
+
4964
+ // src/ucp/signatures.ts
4965
+ var import_http_message_signatures3 = require("http-message-signatures");
4966
+
4967
+ // src/http-signatures/sign.ts
4968
+ var import_http_message_signatures2 = require("http-message-signatures");
4969
+
4970
+ // src/ucp/checkout-kit.ts
4971
+ var import_jose3 = require("jose");
4972
+
4973
+ // src/mandates/sd-jwt.ts
4974
+ var import_jose2 = require("jose");
4975
+
4976
+ // src/idempotency/index.ts
4977
+ var DEFAULT_IDEMPOTENCY_TTL_MS = 24 * 60 * 60 * 1e3;
4978
+
4979
+ // src/payments/kyapay.ts
4980
+ var import_jose4 = require("jose");
4981
+
4982
+ // src/aep/core.ts
4983
+ var ED25519_PKCS8_PREFIX = Buffer.from("302e020100300506032b657004220420", "hex");
4984
+ var ED25519_SPKI_PREFIX = Buffer.from("302a300506032b6570032100", "hex");
4985
+
4942
4986
  // src/gateway/modes/online.ts
4943
4987
  function toGatewayConfig(config) {
4944
4988
  return {