@agent-score/commerce 2.0.1 → 2.1.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 (116) hide show
  1. package/README.md +26 -11
  2. package/dist/_core-kI7FRAiZ.d.mts +10 -0
  3. package/dist/_core-kI7FRAiZ.d.ts +10 -0
  4. package/dist/challenge/index.d.mts +3 -3
  5. package/dist/challenge/index.d.ts +3 -3
  6. package/dist/challenge/index.js +21 -14
  7. package/dist/challenge/index.js.map +1 -1
  8. package/dist/challenge/index.mjs +21 -14
  9. package/dist/challenge/index.mjs.map +1 -1
  10. package/dist/{checkout-B1JuEcbx.d.ts → checkout-BH-I_Ns8.d.ts} +19 -12
  11. package/dist/{checkout-BN5i1Fi7.d.mts → checkout-Bd_4aQ6c.d.mts} +19 -12
  12. package/dist/core.js +1 -1
  13. package/dist/core.js.map +1 -1
  14. package/dist/core.mjs +1 -1
  15. package/dist/core.mjs.map +1 -1
  16. package/dist/default_rails-BWAquZeu.d.mts +188 -0
  17. package/dist/default_rails-BxBzcCA1.d.ts +188 -0
  18. package/dist/discovery/index.d.mts +5 -5
  19. package/dist/discovery/index.d.ts +5 -5
  20. package/dist/discovery/index.js +14 -1
  21. package/dist/discovery/index.js.map +1 -1
  22. package/dist/discovery/index.mjs +14 -1
  23. package/dist/discovery/index.mjs.map +1 -1
  24. package/dist/identity/express.d.mts +7 -3
  25. package/dist/identity/express.d.ts +7 -3
  26. package/dist/identity/express.js +39 -96
  27. package/dist/identity/express.js.map +1 -1
  28. package/dist/identity/express.mjs +37 -87
  29. package/dist/identity/express.mjs.map +1 -1
  30. package/dist/identity/fastify.d.mts +4 -4
  31. package/dist/identity/fastify.d.ts +4 -4
  32. package/dist/identity/fastify.js +60 -96
  33. package/dist/identity/fastify.js.map +1 -1
  34. package/dist/identity/fastify.mjs +58 -87
  35. package/dist/identity/fastify.mjs.map +1 -1
  36. package/dist/identity/hono.d.mts +11 -3
  37. package/dist/identity/hono.d.ts +11 -3
  38. package/dist/identity/hono.js +39 -93
  39. package/dist/identity/hono.js.map +1 -1
  40. package/dist/identity/hono.mjs +37 -84
  41. package/dist/identity/hono.mjs.map +1 -1
  42. package/dist/identity/nextjs.d.mts +10 -3
  43. package/dist/identity/nextjs.d.ts +10 -3
  44. package/dist/identity/nextjs.js +49 -93
  45. package/dist/identity/nextjs.js.map +1 -1
  46. package/dist/identity/nextjs.mjs +46 -84
  47. package/dist/identity/nextjs.mjs.map +1 -1
  48. package/dist/identity/policy.js +220 -129
  49. package/dist/identity/policy.js.map +1 -1
  50. package/dist/identity/policy.mjs +222 -131
  51. package/dist/identity/policy.mjs.map +1 -1
  52. package/dist/identity/web.d.mts +9 -3
  53. package/dist/identity/web.d.ts +9 -3
  54. package/dist/identity/web.js +45 -93
  55. package/dist/identity/web.js.map +1 -1
  56. package/dist/identity/web.mjs +42 -84
  57. package/dist/identity/web.mjs.map +1 -1
  58. package/dist/index.d.mts +554 -90
  59. package/dist/index.d.ts +554 -90
  60. package/dist/index.js +951 -152
  61. package/dist/index.js.map +1 -1
  62. package/dist/index.mjs +939 -152
  63. package/dist/index.mjs.map +1 -1
  64. package/dist/middleware/express.d.mts +10 -0
  65. package/dist/middleware/express.d.ts +10 -0
  66. package/dist/middleware/express.js +128 -0
  67. package/dist/middleware/express.js.map +1 -0
  68. package/dist/middleware/express.mjs +91 -0
  69. package/dist/middleware/express.mjs.map +1 -0
  70. package/dist/middleware/fastify.d.mts +10 -0
  71. package/dist/middleware/fastify.d.ts +10 -0
  72. package/dist/middleware/fastify.js +127 -0
  73. package/dist/middleware/fastify.js.map +1 -0
  74. package/dist/middleware/fastify.mjs +90 -0
  75. package/dist/middleware/fastify.mjs.map +1 -0
  76. package/dist/middleware/hono.d.mts +10 -0
  77. package/dist/middleware/hono.d.ts +10 -0
  78. package/dist/middleware/hono.js +122 -0
  79. package/dist/middleware/hono.js.map +1 -0
  80. package/dist/middleware/hono.mjs +85 -0
  81. package/dist/middleware/hono.mjs.map +1 -0
  82. package/dist/middleware/nextjs.d.mts +22 -0
  83. package/dist/middleware/nextjs.d.ts +22 -0
  84. package/dist/middleware/nextjs.js +143 -0
  85. package/dist/middleware/nextjs.js.map +1 -0
  86. package/dist/middleware/nextjs.mjs +105 -0
  87. package/dist/middleware/nextjs.mjs.map +1 -0
  88. package/dist/middleware/web.d.mts +25 -0
  89. package/dist/middleware/web.d.ts +25 -0
  90. package/dist/middleware/web.js +128 -0
  91. package/dist/middleware/web.js.map +1 -0
  92. package/dist/middleware/web.mjs +91 -0
  93. package/dist/middleware/web.mjs.map +1 -0
  94. package/dist/payment/index.d.mts +21 -6
  95. package/dist/payment/index.d.ts +21 -6
  96. package/dist/payment/index.js +136 -9
  97. package/dist/payment/index.js.map +1 -1
  98. package/dist/payment/index.mjs +127 -9
  99. package/dist/payment/index.mjs.map +1 -1
  100. package/dist/{pricing-CxzwyiO6.d.mts → pricing-4n5Ota0D.d.mts} +14 -4
  101. package/dist/{pricing-CQ9DIFaw.d.ts → pricing-DHfH3ogG.d.ts} +14 -4
  102. package/dist/{rail_spec-XP0wKgJV.d.mts → rail_spec-D6qzh3J0.d.mts} +1 -1
  103. package/dist/{rail_spec-XP0wKgJV.d.ts → rail_spec-D6qzh3J0.d.ts} +1 -1
  104. package/dist/stripe-multichain/index.d.mts +150 -47
  105. package/dist/stripe-multichain/index.d.ts +150 -47
  106. package/dist/stripe-multichain/index.js +19749 -42
  107. package/dist/stripe-multichain/index.js.map +1 -1
  108. package/dist/stripe-multichain/index.mjs +19758 -27
  109. package/dist/stripe-multichain/index.mjs.map +1 -1
  110. package/dist/{x402_server-hgQzWQwB.d.mts → x402_server-Ciz2mls2.d.mts} +1 -1
  111. package/dist/{x402_server-hgQzWQwB.d.ts → x402_server-Ciz2mls2.d.ts} +1 -1
  112. package/package.json +43 -5
  113. package/dist/_response-BFYN3b6i.d.mts +0 -142
  114. package/dist/_response-_iPD5AIj.d.ts +0 -142
  115. package/dist/solana-Cds87OTu.d.mts +0 -67
  116. package/dist/solana-Cds87OTu.d.ts +0 -67
@@ -599,7 +599,8 @@ function isSolanaMppRailSpec(s) {
599
599
  return s.network?.startsWith("solana:") ?? false;
600
600
  }
601
601
  function solanaNetworkFromCAIP2(caip2) {
602
- if (caip2 === networks.solana.devnet.caip2) return "devnet";
602
+ if (caip2 === "devnet" || caip2 === networks.solana.devnet.caip2) return "devnet";
603
+ if (caip2 === "localnet") return "localnet";
603
604
  return "mainnet-beta";
604
605
  }
605
606
  function solanaDefaultRpcUrl(network) {
@@ -886,6 +887,13 @@ function clampKey(key) {
886
887
  return key;
887
888
  }
888
889
 
890
+ // src/_headers.ts
891
+ function normalizeHeadersToLowercase(headers) {
892
+ const out = {};
893
+ for (const [k, v] of Object.entries(headers)) out[k.toLowerCase()] = v;
894
+ return out;
895
+ }
896
+
889
897
  // src/signer.ts
890
898
  var TOKEN_PROGRAM = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
891
899
  var TOKEN_2022_PROGRAM = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
@@ -968,13 +976,8 @@ async function extractPaymentSignerFromAuth(authHeader, x402PaymentHeader) {
968
976
  function readX402PaymentHeader(request) {
969
977
  return request.headers.get("payment-signature") ?? request.headers.get("x-payment") ?? void 0;
970
978
  }
971
- function lowerHeaders(headers) {
972
- const out = {};
973
- for (const [k, v] of Object.entries(headers)) out[k.toLowerCase()] = v;
974
- return out;
975
- }
976
979
  async function extractSignerForPrecheck(headers) {
977
- const lower = lowerHeaders(headers);
980
+ const lower = normalizeHeadersToLowercase(headers);
978
981
  const x402 = lower["payment-signature"] ?? lower["x-payment"];
979
982
  if (x402) {
980
983
  const signer = await extractPaymentSignerFromAuth(void 0, x402);
@@ -1031,8 +1034,8 @@ function usdToAtomic(usd, opts) {
1031
1034
  }
1032
1035
  return result;
1033
1036
  }
1034
- function formatUsdCents(cents) {
1035
- return (cents / 100).toFixed(2);
1037
+ function formatUsdCents(cents, decimals = 2) {
1038
+ return (cents / 100).toFixed(decimals);
1036
1039
  }
1037
1040
 
1038
1041
  // src/payment/zero-settle.ts
@@ -1168,13 +1171,122 @@ async function loadSolanaFeePayer(opts) {
1168
1171
  }
1169
1172
  return kit.createKeyPairSignerFromPrivateKeyBytes(bytes);
1170
1173
  }
1174
+
1175
+ // src/payment/compose_rails.ts
1176
+ function buildMppxComposeRails(opts) {
1177
+ const rails2 = [];
1178
+ if (opts.tempoRecipient) {
1179
+ rails2.push(["tempo/charge", {
1180
+ amount: opts.amountUsd,
1181
+ currency: opts.tempoTokenAddress ?? USDC.tempo.mainnet.address,
1182
+ decimals: 6,
1183
+ recipient: opts.tempoRecipient
1184
+ }]);
1185
+ }
1186
+ if (opts.solanaRecipient) {
1187
+ const atomic = usdToAtomic(opts.amountUsd, { decimals: 6 });
1188
+ rails2.push(["solana/charge", {
1189
+ amount: atomic.toString(),
1190
+ currency: opts.solanaTokenMint ?? USDC.solana.mainnet.mint,
1191
+ decimals: 6,
1192
+ recipient: opts.solanaRecipient,
1193
+ network: opts.solanaNetwork ?? "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"
1194
+ }]);
1195
+ }
1196
+ if (opts.includeStripe !== false) {
1197
+ rails2.push(["stripe/charge", { amount: opts.amountUsd, currency: "usd", decimals: 2 }]);
1198
+ }
1199
+ return rails2;
1200
+ }
1201
+
1202
+ // src/payment/default_rails.ts
1203
+ function buildDefaultCheckoutRails(opts) {
1204
+ const out = {};
1205
+ if (opts.tempo) {
1206
+ out.tempo = { recipient: "", ...RAIL_SPEC_DEFAULTS.tempo, ...opts.tempo };
1207
+ }
1208
+ if (opts.x402Base) {
1209
+ const merged = { recipient: "", ...RAIL_SPEC_DEFAULTS.x402Base, ...opts.x402Base };
1210
+ if (merged.network === networks.base.sepolia.caip2) {
1211
+ if (opts.x402Base.chainId === void 0) merged.chainId = networks.base.sepolia.chainId;
1212
+ if (opts.x402Base.token === void 0) merged.token = USDC.base.sepolia.address;
1213
+ } else if (merged.network === networks.base.mainnet.caip2) {
1214
+ if (opts.x402Base.chainId === void 0) merged.chainId = networks.base.mainnet.chainId;
1215
+ if (opts.x402Base.token === void 0) merged.token = USDC.base.mainnet.address;
1216
+ }
1217
+ out.x402_base = merged;
1218
+ }
1219
+ if (opts.solanaMpp) {
1220
+ const merged = { recipient: "", ...RAIL_SPEC_DEFAULTS.solanaMpp, ...opts.solanaMpp };
1221
+ const isDevnet = merged.network === "devnet" || merged.network === networks.solana.devnet.caip2;
1222
+ if (isDevnet && opts.solanaMpp.token === void 0) {
1223
+ merged.token = USDC.solana.devnet.mint;
1224
+ }
1225
+ out.solana_mpp = merged;
1226
+ }
1227
+ if (opts.stripe) {
1228
+ out.stripe = { ...RAIL_SPEC_DEFAULTS.stripe, ...opts.stripe };
1229
+ }
1230
+ return out;
1231
+ }
1232
+
1233
+ // src/payment/payment_header.ts
1234
+ function toTitleCase(name) {
1235
+ return name.replace(/(^|-)([a-z])/g, (_m, sep, c) => sep + c.toUpperCase());
1236
+ }
1237
+ function readHeader(headers, name) {
1238
+ if (typeof headers.get === "function") {
1239
+ return headers.get(name);
1240
+ }
1241
+ const rec = headers;
1242
+ const v = rec[name] ?? rec[name.toLowerCase()] ?? rec[toTitleCase(name)];
1243
+ if (typeof v === "string") return v;
1244
+ if (Array.isArray(v) && typeof v[0] === "string") return v[0];
1245
+ return null;
1246
+ }
1247
+ function asHeaders(input) {
1248
+ return typeof input.headers === "object" && input instanceof Request ? input.headers : input;
1249
+ }
1250
+ function hasPaymentHeader(input) {
1251
+ const headers = asHeaders(input);
1252
+ return Boolean(
1253
+ readHeader(headers, "payment-signature") || readHeader(headers, "x-payment") || readHeader(headers, "authorization")?.startsWith("Payment ")
1254
+ );
1255
+ }
1256
+ function hasX402Header(input) {
1257
+ const headers = asHeaders(input);
1258
+ return Boolean(readHeader(headers, "payment-signature") || readHeader(headers, "x-payment"));
1259
+ }
1260
+ function hasMppxHeader(input) {
1261
+ const headers = asHeaders(input);
1262
+ return Boolean(readHeader(headers, "authorization")?.startsWith("Payment "));
1263
+ }
1264
+
1265
+ // src/payment/network_kind.ts
1266
+ function readNetwork(input) {
1267
+ if (typeof input === "string") return input;
1268
+ if (input && typeof input === "object") {
1269
+ const network = input.network;
1270
+ return typeof network === "string" ? network : "";
1271
+ }
1272
+ return "";
1273
+ }
1274
+ function isEvmNetwork(input) {
1275
+ return readNetwork(input).startsWith("eip155:");
1276
+ }
1277
+ function isSolanaNetwork(input) {
1278
+ return readNetwork(input).startsWith("solana:");
1279
+ }
1171
1280
  export {
1172
1281
  RAIL_SPEC_DEFAULTS,
1173
1282
  SETTLEMENT_OVERRIDES_HEADER,
1174
1283
  USDC,
1175
1284
  X402_SUPPORTED_BASE_NETWORKS,
1176
1285
  aliasAmountFields,
1286
+ asHeaders,
1287
+ buildDefaultCheckoutRails,
1177
1288
  buildIdempotencyKey,
1289
+ buildMppxComposeRails,
1178
1290
  buildPaymentDirective,
1179
1291
  buildPaymentHeaders,
1180
1292
  buildPaymentRequestBlob,
@@ -1190,6 +1302,11 @@ export {
1190
1302
  extractPaymentSignerFromAuth,
1191
1303
  extractSignerForPrecheck,
1192
1304
  formatUsdCents,
1305
+ hasMppxHeader,
1306
+ hasPaymentHeader,
1307
+ hasX402Header,
1308
+ isEvmNetwork,
1309
+ isSolanaNetwork,
1193
1310
  lazyMppxServer,
1194
1311
  lazyX402Server,
1195
1312
  loadSolanaFeePayer,
@@ -1201,6 +1318,7 @@ export {
1201
1318
  paymentRequiredHeader,
1202
1319
  processX402Settle,
1203
1320
  rails,
1321
+ readHeader,
1204
1322
  readX402PaymentHeader,
1205
1323
  registerX402SchemesV1V2,
1206
1324
  resolveRecipient,