@agent-score/commerce 2.3.0 → 2.5.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 (80) hide show
  1. package/README.md +6 -6
  2. package/dist/challenge/index.d.mts +9 -5
  3. package/dist/challenge/index.d.ts +9 -5
  4. package/dist/challenge/index.js +11 -4
  5. package/dist/challenge/index.js.map +1 -1
  6. package/dist/challenge/index.mjs +11 -4
  7. package/dist/challenge/index.mjs.map +1 -1
  8. package/dist/{checkout-ChyOi7aU.d.ts → checkout-McfNpZJf.d.ts} +80 -12
  9. package/dist/{checkout-Ceo1_rVJ.d.mts → checkout-o17dIxHi.d.mts} +80 -12
  10. package/dist/core.d.mts +27 -7
  11. package/dist/core.d.ts +27 -7
  12. package/dist/core.js +25 -11
  13. package/dist/core.js.map +1 -1
  14. package/dist/core.mjs +25 -11
  15. package/dist/core.mjs.map +1 -1
  16. package/dist/discovery/index.d.mts +26 -10
  17. package/dist/discovery/index.d.ts +26 -10
  18. package/dist/discovery/index.js +58 -10
  19. package/dist/discovery/index.js.map +1 -1
  20. package/dist/discovery/index.mjs +58 -10
  21. package/dist/discovery/index.mjs.map +1 -1
  22. package/dist/gate-CWP10xPQ.d.mts +339 -0
  23. package/dist/gate-CWP10xPQ.d.ts +339 -0
  24. package/dist/identity/express.d.mts +26 -1
  25. package/dist/identity/express.d.ts +26 -1
  26. package/dist/identity/express.js +599 -25
  27. package/dist/identity/express.js.map +1 -1
  28. package/dist/identity/express.mjs +595 -24
  29. package/dist/identity/express.mjs.map +1 -1
  30. package/dist/identity/fastify.d.mts +12 -2
  31. package/dist/identity/fastify.d.ts +12 -2
  32. package/dist/identity/fastify.js +607 -25
  33. package/dist/identity/fastify.js.map +1 -1
  34. package/dist/identity/fastify.mjs +603 -24
  35. package/dist/identity/fastify.mjs.map +1 -1
  36. package/dist/identity/hono.d.mts +26 -1
  37. package/dist/identity/hono.d.ts +26 -1
  38. package/dist/identity/hono.js +588 -25
  39. package/dist/identity/hono.js.map +1 -1
  40. package/dist/identity/hono.mjs +584 -24
  41. package/dist/identity/hono.mjs.map +1 -1
  42. package/dist/identity/nextjs.d.mts +3 -0
  43. package/dist/identity/nextjs.d.ts +3 -0
  44. package/dist/identity/nextjs.js +593 -25
  45. package/dist/identity/nextjs.js.map +1 -1
  46. package/dist/identity/nextjs.mjs +589 -24
  47. package/dist/identity/nextjs.mjs.map +1 -1
  48. package/dist/identity/policy.js.map +1 -1
  49. package/dist/identity/policy.mjs.map +1 -1
  50. package/dist/identity/web.d.mts +24 -1
  51. package/dist/identity/web.d.ts +24 -1
  52. package/dist/identity/web.js +593 -25
  53. package/dist/identity/web.js.map +1 -1
  54. package/dist/identity/web.mjs +589 -24
  55. package/dist/identity/web.mjs.map +1 -1
  56. package/dist/index.d.mts +129 -14
  57. package/dist/index.d.ts +129 -14
  58. package/dist/index.js +978 -99
  59. package/dist/index.js.map +1 -1
  60. package/dist/index.mjs +956 -99
  61. package/dist/index.mjs.map +1 -1
  62. package/dist/{default_rails-DtR_E9N9.d.ts → network_kind-BIJM2peR.d.ts} +22 -8
  63. package/dist/{default_rails-K25PtWrL.d.mts → network_kind-C0EMkdzz.d.mts} +22 -8
  64. package/dist/payment/index.d.mts +16 -26
  65. package/dist/payment/index.d.ts +16 -26
  66. package/dist/payment/index.js +62 -57
  67. package/dist/payment/index.js.map +1 -1
  68. package/dist/payment/index.mjs +62 -57
  69. package/dist/payment/index.mjs.map +1 -1
  70. package/dist/{pricing-B3-aKxSz.d.ts → pricing-CytRwhC2.d.ts} +1 -1
  71. package/dist/{pricing-BReyZiqN.d.mts → pricing-KHDqMLd7.d.mts} +1 -1
  72. package/dist/{rail_spec-B1239jPp.d.mts → rail_spec-BFZmW9RN.d.mts} +3 -4
  73. package/dist/{rail_spec-B1239jPp.d.ts → rail_spec-BFZmW9RN.d.ts} +3 -4
  74. package/dist/stripe-multichain/index.d.mts +2 -9
  75. package/dist/stripe-multichain/index.d.ts +2 -9
  76. package/dist/stripe-multichain/index.js.map +1 -1
  77. package/dist/stripe-multichain/index.mjs.map +1 -1
  78. package/dist/{wwwauthenticate-D_FMnPgU.d.mts → wwwauthenticate-CVaGUMjU.d.mts} +8 -6
  79. package/dist/{wwwauthenticate-D_FMnPgU.d.ts → wwwauthenticate-CVaGUMjU.d.ts} +8 -6
  80. package/package.json +14 -13
@@ -1,3 +1,45 @@
1
+ // src/payment/amounts.ts
2
+ function usdToAtomic(usd, opts) {
3
+ const { decimals } = opts;
4
+ if (!Number.isInteger(decimals) || decimals < 0) {
5
+ throw new RangeError(`decimals must be a non-negative integer, got ${decimals}`);
6
+ }
7
+ if (typeof usd === "number") {
8
+ if (!Number.isFinite(usd)) {
9
+ throw new RangeError(`usd must be finite, got ${usd}`);
10
+ }
11
+ if (usd < 0) {
12
+ throw new RangeError(`usd must be non-negative, got ${usd}`);
13
+ }
14
+ }
15
+ const s = (typeof usd === "number" ? usd.toString() : usd).trim();
16
+ if (s.startsWith("-")) {
17
+ throw new RangeError(`usd must be non-negative, got ${s}`);
18
+ }
19
+ if (s === "NaN" || s === "Infinity") {
20
+ throw new RangeError(`usd must be finite, got ${s}`);
21
+ }
22
+ const match = /^(\d*)(?:\.(\d*))?$/.exec(s);
23
+ if (!match || match[1] === "" && (match[2] === void 0 || match[2] === "")) {
24
+ throw new SyntaxError(`invalid usd value: ${JSON.stringify(usd)}`);
25
+ }
26
+ const intPart = match[1] || "0";
27
+ const fracPart = match[2] ?? "";
28
+ if (fracPart.length <= decimals) {
29
+ return BigInt(intPart + fracPart.padEnd(decimals, "0"));
30
+ }
31
+ const kept = fracPart.slice(0, decimals);
32
+ const roundDigit = fracPart[decimals];
33
+ let result = BigInt(intPart + kept);
34
+ if (roundDigit >= "5") {
35
+ result += 1n;
36
+ }
37
+ return result;
38
+ }
39
+ function formatUsdCents(cents, decimals = 2) {
40
+ return (cents / 100).toFixed(decimals);
41
+ }
42
+
1
43
  // src/payment/networks.ts
2
44
  var networks = {
3
45
  base: {
@@ -128,8 +170,7 @@ function buildPaymentRequestBlob({
128
170
  const decimalsResolved = decimals ?? railDef?.decimals ?? 6;
129
171
  const currencyResolved = currency ?? railDef?.currency ?? "usd";
130
172
  const chainIdResolved = chainId ?? railDef?.chainId;
131
- const amountNum = typeof amountUsd === "string" ? Number(amountUsd) : amountUsd;
132
- const amountRaw = BigInt(Math.round(amountNum * 10 ** decimalsResolved)).toString();
173
+ const amountRaw = usdToAtomic(amountUsd, { decimals: decimalsResolved }).toString();
133
174
  const blob = { amount: amountRaw, currency: currencyResolved, decimals: decimalsResolved };
134
175
  if (recipient) blob.recipient = recipient;
135
176
  const methodDetails = {};
@@ -996,6 +1037,18 @@ async function extractSolanaSignerFromCredential(credential) {
996
1037
  }
997
1038
  }
998
1039
  async function extractPaymentSigner(request, x402PaymentHeader) {
1040
+ if (x402PaymentHeader) {
1041
+ try {
1042
+ const decoded = atob(x402PaymentHeader);
1043
+ const parsed = JSON.parse(decoded);
1044
+ const from = parsed?.payload?.authorization?.from;
1045
+ if (typeof from === "string" && /^0x[0-9a-fA-F]{40}$/.test(from)) {
1046
+ return { address: from.toLowerCase(), network: "evm" };
1047
+ }
1048
+ } catch (err) {
1049
+ console.warn("[gate] x402 signer extraction failed:", err instanceof Error ? err.message : err);
1050
+ }
1051
+ }
999
1052
  const authHeader = request.headers.get("authorization");
1000
1053
  if (authHeader) {
1001
1054
  try {
@@ -1015,18 +1068,6 @@ async function extractPaymentSigner(request, x402PaymentHeader) {
1015
1068
  console.warn("[gate] MPP signer extraction failed:", err instanceof Error ? err.message : err);
1016
1069
  }
1017
1070
  }
1018
- if (x402PaymentHeader) {
1019
- try {
1020
- const decoded = atob(x402PaymentHeader);
1021
- const parsed = JSON.parse(decoded);
1022
- const from = parsed?.payload?.authorization?.from;
1023
- if (typeof from === "string" && /^0x[0-9a-fA-F]{40}$/.test(from)) {
1024
- return { address: from.toLowerCase(), network: "evm" };
1025
- }
1026
- } catch (err) {
1027
- console.warn("[gate] x402 signer extraction failed:", err instanceof Error ? err.message : err);
1028
- }
1029
- }
1030
1071
  return null;
1031
1072
  }
1032
1073
  async function extractPaymentSignerFromAuth(authHeader, x402PaymentHeader) {
@@ -1058,48 +1099,6 @@ function settlementOverrideHeader(overrides) {
1058
1099
  return { name: SETTLEMENT_OVERRIDES_HEADER, value: JSON.stringify(overrides) };
1059
1100
  }
1060
1101
 
1061
- // src/payment/amounts.ts
1062
- function usdToAtomic(usd, opts) {
1063
- const { decimals } = opts;
1064
- if (!Number.isInteger(decimals) || decimals < 0) {
1065
- throw new RangeError(`decimals must be a non-negative integer, got ${decimals}`);
1066
- }
1067
- if (typeof usd === "number") {
1068
- if (!Number.isFinite(usd)) {
1069
- throw new RangeError(`usd must be finite, got ${usd}`);
1070
- }
1071
- if (usd < 0) {
1072
- throw new RangeError(`usd must be non-negative, got ${usd}`);
1073
- }
1074
- }
1075
- const s = (typeof usd === "number" ? usd.toString() : usd).trim();
1076
- if (s.startsWith("-")) {
1077
- throw new RangeError(`usd must be non-negative, got ${s}`);
1078
- }
1079
- if (s === "NaN" || s === "Infinity") {
1080
- throw new RangeError(`usd must be finite, got ${s}`);
1081
- }
1082
- const match = /^(\d*)(?:\.(\d*))?$/.exec(s);
1083
- if (!match || match[1] === "" && (match[2] === void 0 || match[2] === "")) {
1084
- throw new SyntaxError(`invalid usd value: ${JSON.stringify(usd)}`);
1085
- }
1086
- const intPart = match[1] || "0";
1087
- const fracPart = match[2] ?? "";
1088
- if (fracPart.length <= decimals) {
1089
- return BigInt(intPart + fracPart.padEnd(decimals, "0"));
1090
- }
1091
- const kept = fracPart.slice(0, decimals);
1092
- const roundDigit = fracPart[decimals];
1093
- let result = BigInt(intPart + kept);
1094
- if (roundDigit >= "5") {
1095
- result += 1n;
1096
- }
1097
- return result;
1098
- }
1099
- function formatUsdCents(cents, decimals = 2) {
1100
- return (cents / 100).toFixed(decimals);
1101
- }
1102
-
1103
1102
  // src/payment/zero-settle.ts
1104
1103
  var EVM_RE = /^0x[0-9a-fA-F]{40}$/;
1105
1104
  var SOLANA_BASE58_RE = /^[1-9A-HJ-NP-Za-km-z]{32,44}$/;
@@ -1279,7 +1278,13 @@ function buildMppxComposeRails(opts) {
1279
1278
  function buildDefaultCheckoutRails(opts) {
1280
1279
  const out = {};
1281
1280
  if (opts.tempo) {
1282
- out.tempo = { recipient: "", ...RAIL_SPEC_DEFAULTS.tempo, ...opts.tempo };
1281
+ const merged = { recipient: "", ...RAIL_SPEC_DEFAULTS.tempo, ...opts.tempo };
1282
+ if (merged.testnet) {
1283
+ if (opts.tempo.network === void 0) merged.network = "tempo-testnet";
1284
+ if (opts.tempo.chainId === void 0) merged.chainId = 42431;
1285
+ if (opts.tempo.token === void 0) merged.token = USDC.tempo.testnet.address;
1286
+ }
1287
+ out.tempo = merged;
1283
1288
  }
1284
1289
  if (opts.x402Base) {
1285
1290
  const merged = { recipient: "", ...RAIL_SPEC_DEFAULTS.x402Base, ...opts.x402Base };