@absol-labs/agent 0.9.1 → 0.11.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 (293) hide show
  1. package/README.md +184 -26
  2. package/dist/capability/invocation-capability.d.ts +18 -6
  3. package/dist/capability/invocation-capability.d.ts.map +1 -1
  4. package/dist/capability/invocation-capability.js.map +1 -1
  5. package/dist/cli/amounts.d.ts +26 -0
  6. package/dist/cli/amounts.d.ts.map +1 -0
  7. package/dist/cli/amounts.js +71 -0
  8. package/dist/cli/amounts.js.map +1 -0
  9. package/dist/cli/args.d.ts +32 -0
  10. package/dist/cli/args.d.ts.map +1 -0
  11. package/dist/cli/args.js +119 -0
  12. package/dist/cli/args.js.map +1 -0
  13. package/dist/cli/attesters.d.ts +51 -0
  14. package/dist/cli/attesters.d.ts.map +1 -0
  15. package/dist/cli/attesters.js +58 -0
  16. package/dist/cli/attesters.js.map +1 -0
  17. package/dist/cli/bin.d.ts +3 -0
  18. package/dist/cli/bin.d.ts.map +1 -0
  19. package/dist/cli/bin.js +5 -0
  20. package/dist/cli/bin.js.map +1 -0
  21. package/dist/cli/commands/claim.d.ts +13 -0
  22. package/dist/cli/commands/claim.d.ts.map +1 -0
  23. package/dist/cli/commands/claim.js +102 -0
  24. package/dist/cli/commands/claim.js.map +1 -0
  25. package/dist/cli/commands/close.d.ts +3 -0
  26. package/dist/cli/commands/close.d.ts.map +1 -0
  27. package/dist/cli/commands/close.js +55 -0
  28. package/dist/cli/commands/close.js.map +1 -0
  29. package/dist/cli/commands/discover.d.ts +3 -0
  30. package/dist/cli/commands/discover.d.ts.map +1 -0
  31. package/dist/cli/commands/discover.js +183 -0
  32. package/dist/cli/commands/discover.js.map +1 -0
  33. package/dist/cli/commands/invoke.d.ts +3 -0
  34. package/dist/cli/commands/invoke.d.ts.map +1 -0
  35. package/dist/cli/commands/invoke.js +142 -0
  36. package/dist/cli/commands/invoke.js.map +1 -0
  37. package/dist/cli/commands/mcp.d.ts +3 -0
  38. package/dist/cli/commands/mcp.d.ts.map +1 -0
  39. package/dist/cli/commands/mcp.js +113 -0
  40. package/dist/cli/commands/mcp.js.map +1 -0
  41. package/dist/cli/commands/open.d.ts +3 -0
  42. package/dist/cli/commands/open.d.ts.map +1 -0
  43. package/dist/cli/commands/open.js +331 -0
  44. package/dist/cli/commands/open.js.map +1 -0
  45. package/dist/cli/commands/reclaim-unverified.d.ts +3 -0
  46. package/dist/cli/commands/reclaim-unverified.d.ts.map +1 -0
  47. package/dist/cli/commands/reclaim-unverified.js +172 -0
  48. package/dist/cli/commands/reclaim-unverified.js.map +1 -0
  49. package/dist/cli/commands/reclaim.d.ts +33 -0
  50. package/dist/cli/commands/reclaim.d.ts.map +1 -0
  51. package/dist/cli/commands/reclaim.js +308 -0
  52. package/dist/cli/commands/reclaim.js.map +1 -0
  53. package/dist/cli/commands/status.d.ts +3 -0
  54. package/dist/cli/commands/status.d.ts.map +1 -0
  55. package/dist/cli/commands/status.js +43 -0
  56. package/dist/cli/commands/status.js.map +1 -0
  57. package/dist/cli/commands/streams.d.ts +3 -0
  58. package/dist/cli/commands/streams.d.ts.map +1 -0
  59. package/dist/cli/commands/streams.js +257 -0
  60. package/dist/cli/commands/streams.js.map +1 -0
  61. package/dist/cli/commands/watch.d.ts +3 -0
  62. package/dist/cli/commands/watch.d.ts.map +1 -0
  63. package/dist/cli/commands/watch.js +55 -0
  64. package/dist/cli/commands/watch.js.map +1 -0
  65. package/dist/cli/config.d.ts +61 -0
  66. package/dist/cli/config.d.ts.map +1 -0
  67. package/dist/cli/config.js +140 -0
  68. package/dist/cli/config.js.map +1 -0
  69. package/dist/cli/context.d.ts +29 -0
  70. package/dist/cli/context.d.ts.map +1 -0
  71. package/dist/cli/context.js +2 -0
  72. package/dist/cli/context.js.map +1 -0
  73. package/dist/cli/deps.d.ts +191 -0
  74. package/dist/cli/deps.d.ts.map +1 -0
  75. package/dist/cli/deps.js +277 -0
  76. package/dist/cli/deps.js.map +1 -0
  77. package/dist/cli/descriptor.d.ts +61 -0
  78. package/dist/cli/descriptor.d.ts.map +1 -0
  79. package/dist/cli/descriptor.js +78 -0
  80. package/dist/cli/descriptor.js.map +1 -0
  81. package/dist/cli/errors.d.ts +48 -0
  82. package/dist/cli/errors.d.ts.map +1 -0
  83. package/dist/cli/errors.js +129 -0
  84. package/dist/cli/errors.js.map +1 -0
  85. package/dist/cli/escape-hatch.d.ts +50 -0
  86. package/dist/cli/escape-hatch.d.ts.map +1 -0
  87. package/dist/cli/escape-hatch.js +45 -0
  88. package/dist/cli/escape-hatch.js.map +1 -0
  89. package/dist/cli/index.d.ts +8 -0
  90. package/dist/cli/index.d.ts.map +1 -0
  91. package/dist/cli/index.js +7 -0
  92. package/dist/cli/index.js.map +1 -0
  93. package/dist/cli/listings.d.ts +15 -0
  94. package/dist/cli/listings.d.ts.map +1 -0
  95. package/dist/cli/listings.js +56 -0
  96. package/dist/cli/listings.js.map +1 -0
  97. package/dist/cli/mandate.d.ts +66 -0
  98. package/dist/cli/mandate.d.ts.map +1 -0
  99. package/dist/cli/mandate.js +61 -0
  100. package/dist/cli/mandate.js.map +1 -0
  101. package/dist/cli/output.d.ts +33 -0
  102. package/dist/cli/output.d.ts.map +1 -0
  103. package/dist/cli/output.js +34 -0
  104. package/dist/cli/output.js.map +1 -0
  105. package/dist/cli/preflight.d.ts +38 -0
  106. package/dist/cli/preflight.d.ts.map +1 -0
  107. package/dist/cli/preflight.js +72 -0
  108. package/dist/cli/preflight.js.map +1 -0
  109. package/dist/cli/privy.d.ts +83 -0
  110. package/dist/cli/privy.d.ts.map +1 -0
  111. package/dist/cli/privy.js +230 -0
  112. package/dist/cli/privy.js.map +1 -0
  113. package/dist/cli/progress.d.ts +36 -0
  114. package/dist/cli/progress.d.ts.map +1 -0
  115. package/dist/cli/progress.js +40 -0
  116. package/dist/cli/progress.js.map +1 -0
  117. package/dist/cli/run.d.ts +25 -0
  118. package/dist/cli/run.d.ts.map +1 -0
  119. package/dist/cli/run.js +173 -0
  120. package/dist/cli/run.js.map +1 -0
  121. package/dist/cli/scan-range.d.ts +55 -0
  122. package/dist/cli/scan-range.d.ts.map +1 -0
  123. package/dist/cli/scan-range.js +57 -0
  124. package/dist/cli/scan-range.js.map +1 -0
  125. package/dist/cli/spend-policy.d.ts +60 -0
  126. package/dist/cli/spend-policy.d.ts.map +1 -0
  127. package/dist/cli/spend-policy.js +65 -0
  128. package/dist/cli/spend-policy.js.map +1 -0
  129. package/dist/cli/status.d.ts +90 -0
  130. package/dist/cli/status.d.ts.map +1 -0
  131. package/dist/cli/status.js +252 -0
  132. package/dist/cli/status.js.map +1 -0
  133. package/dist/cli/timeout.d.ts +30 -0
  134. package/dist/cli/timeout.d.ts.map +1 -0
  135. package/dist/cli/timeout.js +55 -0
  136. package/dist/cli/timeout.js.map +1 -0
  137. package/dist/cli/version.d.ts +12 -0
  138. package/dist/cli/version.d.ts.map +1 -0
  139. package/dist/cli/version.js +22 -0
  140. package/dist/cli/version.js.map +1 -0
  141. package/dist/cli/wallet.d.ts +164 -0
  142. package/dist/cli/wallet.d.ts.map +1 -0
  143. package/dist/cli/wallet.js +234 -0
  144. package/dist/cli/wallet.js.map +1 -0
  145. package/dist/frameworks/crewai.d.ts +10 -0
  146. package/dist/frameworks/crewai.d.ts.map +1 -1
  147. package/dist/frameworks/crewai.js +12 -2
  148. package/dist/frameworks/crewai.js.map +1 -1
  149. package/dist/gateway/caller-auth-gateway.d.ts +38 -3
  150. package/dist/gateway/caller-auth-gateway.d.ts.map +1 -1
  151. package/dist/gateway/caller-auth-gateway.js +25 -1
  152. package/dist/gateway/caller-auth-gateway.js.map +1 -1
  153. package/dist/gateway/http-server.d.ts +53 -0
  154. package/dist/gateway/http-server.d.ts.map +1 -1
  155. package/dist/gateway/http-server.js +189 -4
  156. package/dist/gateway/http-server.js.map +1 -1
  157. package/dist/gateway/server-entry.d.ts +1 -0
  158. package/dist/gateway/server-entry.js +1 -0
  159. package/dist/gateway/server-entry.js.map +1 -1
  160. package/dist/gateway/x402-mode.d.ts +123 -0
  161. package/dist/gateway/x402-mode.d.ts.map +1 -0
  162. package/dist/gateway/x402-mode.js +212 -0
  163. package/dist/gateway/x402-mode.js.map +1 -0
  164. package/dist/index.d.ts +6 -4
  165. package/dist/index.d.ts.map +1 -1
  166. package/dist/index.js +8 -3
  167. package/dist/index.js.map +1 -1
  168. package/dist/mandates/env.d.ts +3 -2
  169. package/dist/mandates/env.d.ts.map +1 -1
  170. package/dist/mandates/env.js +3 -2
  171. package/dist/mandates/env.js.map +1 -1
  172. package/dist/mcp/http-server.d.ts +1 -0
  173. package/dist/mcp/http-server.js +1 -0
  174. package/dist/mcp/http-server.js.map +1 -1
  175. package/dist/mcp/server.d.ts +49 -0
  176. package/dist/mcp/server.d.ts.map +1 -1
  177. package/dist/mcp/server.js +533 -25
  178. package/dist/mcp/server.js.map +1 -1
  179. package/dist/mcp/service-invoker.d.ts +97 -0
  180. package/dist/mcp/service-invoker.d.ts.map +1 -0
  181. package/dist/mcp/service-invoker.js +167 -0
  182. package/dist/mcp/service-invoker.js.map +1 -0
  183. package/dist/mcp/stdio.d.ts +1 -0
  184. package/dist/mcp/stdio.js +1 -0
  185. package/dist/mcp/stdio.js.map +1 -1
  186. package/dist/sdk/client.d.ts +25 -1
  187. package/dist/sdk/client.d.ts.map +1 -1
  188. package/dist/sdk/client.js +20 -1
  189. package/dist/sdk/client.js.map +1 -1
  190. package/dist/sdk/invoke.d.ts +19 -4
  191. package/dist/sdk/invoke.d.ts.map +1 -1
  192. package/dist/sdk/invoke.js +69 -5
  193. package/dist/sdk/invoke.js.map +1 -1
  194. package/dist/x402/delivery-oracle.d.ts +108 -0
  195. package/dist/x402/delivery-oracle.d.ts.map +1 -0
  196. package/dist/x402/delivery-oracle.js +174 -0
  197. package/dist/x402/delivery-oracle.js.map +1 -0
  198. package/dist/x402/facilitator-server-entry.d.ts +3 -0
  199. package/dist/x402/facilitator-server-entry.d.ts.map +1 -0
  200. package/dist/x402/facilitator-server-entry.js +27 -0
  201. package/dist/x402/facilitator-server-entry.js.map +1 -0
  202. package/dist/x402/facilitator-server.d.ts +73 -0
  203. package/dist/x402/facilitator-server.d.ts.map +1 -0
  204. package/dist/x402/facilitator-server.js +305 -0
  205. package/dist/x402/facilitator-server.js.map +1 -0
  206. package/dist/x402/facilitator.d.ts +69 -17
  207. package/dist/x402/facilitator.d.ts.map +1 -1
  208. package/dist/x402/facilitator.js +76 -33
  209. package/dist/x402/facilitator.js.map +1 -1
  210. package/dist/x402/payment-requirements.d.ts +106 -0
  211. package/dist/x402/payment-requirements.d.ts.map +1 -0
  212. package/dist/x402/payment-requirements.js +138 -0
  213. package/dist/x402/payment-requirements.js.map +1 -0
  214. package/dist/x402/relayer.d.ts +41 -0
  215. package/dist/x402/relayer.d.ts.map +1 -0
  216. package/dist/x402/relayer.js +64 -0
  217. package/dist/x402/relayer.js.map +1 -0
  218. package/dist/x402/resource-index.d.ts +75 -0
  219. package/dist/x402/resource-index.d.ts.map +1 -0
  220. package/dist/x402/resource-index.js +126 -0
  221. package/dist/x402/resource-index.js.map +1 -0
  222. package/dist/x402/verified-delivery-facilitator.d.ts +285 -0
  223. package/dist/x402/verified-delivery-facilitator.d.ts.map +1 -0
  224. package/dist/x402/verified-delivery-facilitator.js +423 -0
  225. package/dist/x402/verified-delivery-facilitator.js.map +1 -0
  226. package/dist/zktls/t2-delivery-proof.d.ts +6 -6
  227. package/docs/agent-layer.md +14 -9
  228. package/docs/cli.md +705 -0
  229. package/docs/crewai.md +6 -2
  230. package/docs/eliza.md +6 -1
  231. package/docs/mcp-hosted.md +7 -5
  232. package/docs/mcp-reference.md +175 -0
  233. package/docs/quickstart.md +36 -9
  234. package/docs/threat-model.md +4 -3
  235. package/docs/x402.md +648 -0
  236. package/package.json +33 -10
  237. package/src/capability/invocation-capability.ts +17 -1
  238. package/src/cli/amounts.ts +102 -0
  239. package/src/cli/args.ts +150 -0
  240. package/src/cli/attesters.ts +86 -0
  241. package/src/cli/bin.ts +5 -0
  242. package/src/cli/commands/claim.ts +126 -0
  243. package/src/cli/commands/close.ts +69 -0
  244. package/src/cli/commands/discover.ts +228 -0
  245. package/src/cli/commands/invoke.ts +178 -0
  246. package/src/cli/commands/mcp.ts +135 -0
  247. package/src/cli/commands/open.ts +397 -0
  248. package/src/cli/commands/reclaim-unverified.ts +218 -0
  249. package/src/cli/commands/reclaim.ts +377 -0
  250. package/src/cli/commands/status.ts +56 -0
  251. package/src/cli/commands/streams.ts +344 -0
  252. package/src/cli/commands/watch.ts +70 -0
  253. package/src/cli/config.ts +208 -0
  254. package/src/cli/context.ts +30 -0
  255. package/src/cli/deps.ts +528 -0
  256. package/src/cli/descriptor.ts +133 -0
  257. package/src/cli/errors.ts +162 -0
  258. package/src/cli/escape-hatch.ts +92 -0
  259. package/src/cli/index.ts +27 -0
  260. package/src/cli/listings.ts +77 -0
  261. package/src/cli/mandate.ts +126 -0
  262. package/src/cli/output.ts +63 -0
  263. package/src/cli/preflight.ts +88 -0
  264. package/src/cli/privy.ts +396 -0
  265. package/src/cli/progress.ts +75 -0
  266. package/src/cli/run.ts +209 -0
  267. package/src/cli/scan-range.ts +76 -0
  268. package/src/cli/spend-policy.ts +139 -0
  269. package/src/cli/status.ts +381 -0
  270. package/src/cli/timeout.ts +64 -0
  271. package/src/cli/version.ts +21 -0
  272. package/src/cli/wallet.ts +372 -0
  273. package/src/frameworks/crewai.ts +13 -2
  274. package/src/gateway/caller-auth-gateway.ts +77 -6
  275. package/src/gateway/http-server.ts +280 -6
  276. package/src/gateway/server-entry.ts +1 -0
  277. package/src/gateway/x402-mode.ts +350 -0
  278. package/src/index.ts +40 -5
  279. package/src/mandates/env.ts +3 -2
  280. package/src/mcp/http-server.ts +1 -0
  281. package/src/mcp/server.ts +706 -30
  282. package/src/mcp/service-invoker.ts +285 -0
  283. package/src/mcp/stdio.ts +1 -0
  284. package/src/sdk/client.ts +33 -1
  285. package/src/sdk/invoke.ts +90 -12
  286. package/src/x402/delivery-oracle.ts +285 -0
  287. package/src/x402/facilitator-server-entry.ts +35 -0
  288. package/src/x402/facilitator-server.ts +445 -0
  289. package/src/x402/facilitator.ts +125 -46
  290. package/src/x402/payment-requirements.ts +231 -0
  291. package/src/x402/relayer.ts +122 -0
  292. package/src/x402/resource-index.ts +228 -0
  293. package/src/x402/verified-delivery-facilitator.ts +744 -0
@@ -1,7 +1,18 @@
1
1
  import { z } from "zod";
2
2
  import { signedSpendMandateSchema, } from "../mandates/mandate.js";
3
3
  import { VerifiedStreamAgentClient, } from "../sdk/client.js";
4
- export const X402_SCHEME = "streamproof-verified-stream";
4
+ /**
5
+ * Immutable wire constant for the Metrik-native 402 scheme. The value is
6
+ * historical (`streamproof-*` predates the Metrik rename) and MUST NOT change:
7
+ * the live gateway and deployed callers depend on it.
8
+ */
9
+ export const METRIK_STREAM_SCHEME = "streamproof-verified-stream";
10
+ /**
11
+ * Request header carrying the Metrik verified-stream payload. Deliberately NOT
12
+ * `x-payment`: that header belongs to the x402 protocol, which this flow does
13
+ * not implement.
14
+ */
15
+ export const METRIK_PAYMENT_HEADER = "x-metrik-payment";
5
16
  const addressSchema = z.string().regex(/^0x[0-9a-fA-F]{40}$/);
6
17
  const bytes32Schema = z.string().regex(/^0x[0-9a-fA-F]{64}$/);
7
18
  export const verifiedStreamRequirementsSchema = z.object({
@@ -13,12 +24,12 @@ export const verifiedStreamRequirementsSchema = z.object({
13
24
  maxDurationSeconds: z.number().int().positive(),
14
25
  maxBudgetUsdc: z.bigint().positive(),
15
26
  });
16
- export const x402StreamChallengeSchema = z.object({
17
- scheme: z.literal(X402_SCHEME),
27
+ export const streamChallengeSchema = z.object({
28
+ scheme: z.literal(METRIK_STREAM_SCHEME),
18
29
  requirements: verifiedStreamRequirementsSchema,
19
30
  });
20
- export const x402OpenPayloadSchema = z.object({
21
- challenge: x402StreamChallengeSchema,
31
+ export const streamOpenPayloadSchema = z.object({
32
+ challenge: streamChallengeSchema,
22
33
  signedMandate: signedSpendMandateSchema,
23
34
  });
24
35
  const warnedFacilitatorGaps = new Set();
@@ -30,9 +41,11 @@ function warnFacilitatorOnce(key, message) {
30
41
  warnedFacilitatorGaps.add(key);
31
42
  console.error(message);
32
43
  }
33
- export class X402PayloadError extends Error {
44
+ export class StreamPayloadError extends Error {
34
45
  constructor(message) {
35
46
  super(message);
47
+ // Unchanged on purpose: `error.name` is an observable value that existing
48
+ // consumers may match on. The class was renamed; its `name` was not.
36
49
  this.name = "X402PayloadError";
37
50
  }
38
51
  }
@@ -55,13 +68,14 @@ export class DeliveryProofUnavailableError extends Error {
55
68
  * facilitator denies the open in this case (fail-closed, buyer-favoring) rather
56
69
  * than proceeding on an unverified assumption of "0 spent / none revoked".
57
70
  */
58
- export class X402SpendControlUnavailableError extends Error {
71
+ export class SpendControlUnavailableError extends Error {
59
72
  constructor(message) {
60
73
  super(message);
74
+ // Unchanged on purpose: see StreamPayloadError above.
61
75
  this.name = "X402SpendControlUnavailableError";
62
76
  }
63
77
  }
64
- export class VerifiedStreamX402Facilitator {
78
+ export class VerifiedStreamFacilitator {
65
79
  agentClient;
66
80
  deliveryProofs;
67
81
  sdkConfig;
@@ -87,19 +101,19 @@ export class VerifiedStreamX402Facilitator {
87
101
  // can NEVER verify the cap. `open()` therefore fails CLOSED (denies) until
88
102
  // both resolvers are wired; warn once so the reason is visible at deploy time.
89
103
  if (options.resolveSpentSoFarUsdc === undefined) {
90
- warnFacilitatorOnce("x402-spent", "[metrik] x402 facilitator: no resolveSpentSoFarUsdc wired — the mandate cumulative cap (maxTotalUsdc) cannot be verified, so open() will DENY every spend (fail-closed) until a resolver is wired.");
104
+ warnFacilitatorOnce("metrik-stream-spent", "[metrik] Metrik verified-stream facilitator: no resolveSpentSoFarUsdc wired — the mandate cumulative cap (maxTotalUsdc) cannot be verified, so open() will DENY every spend (fail-closed) until a resolver is wired.");
91
105
  }
92
106
  if (options.resolveRevokedMandateIds === undefined) {
93
- warnFacilitatorOnce("x402-revocation", "[metrik] x402 facilitator: no resolveRevokedMandateIds wired — revocation state cannot be verified, so open() will DENY every spend (fail-closed) until a resolver is wired.");
107
+ warnFacilitatorOnce("metrik-stream-revocation", "[metrik] Metrik verified-stream facilitator: no resolveRevokedMandateIds wired — revocation state cannot be verified, so open() will DENY every spend (fail-closed) until a resolver is wired.");
94
108
  }
95
109
  }
96
110
  challenge(req) {
97
111
  const requirements = verifiedStreamRequirementsSchema.parse(req);
98
112
  assertSettlementTarget(requirements, this.sdkConfig);
99
- return { scheme: X402_SCHEME, requirements };
113
+ return { scheme: METRIK_STREAM_SCHEME, requirements };
100
114
  }
101
115
  async open(payloadHeader) {
102
- const payload = parseX402PayloadHeader(payloadHeader);
116
+ const payload = parseStreamPayloadHeader(payloadHeader);
103
117
  assertSettlementTarget(payload.challenge.requirements, this.sdkConfig);
104
118
  // FAIL-CLOSED fund safety (B6). Both the cumulative-cap accounting and the
105
119
  // revocation state must be POSITIVELY verified before any spend. A missing
@@ -107,32 +121,32 @@ export class VerifiedStreamX402Facilitator {
107
121
  // returns a non-bigint/negative spend is treated as "state cannot be
108
122
  // verified" and DENIES the open — never a silent fail-open to 0/none.
109
123
  if (this.resolveSpentSoFarUsdc === undefined) {
110
- throw new X402SpendControlUnavailableError("cannot open verified stream: no resolveSpentSoFarUsdc wired — the mandate cumulative cap (maxTotalUsdc) cannot be verified (fail-closed)");
124
+ throw new SpendControlUnavailableError("cannot open verified stream: no resolveSpentSoFarUsdc wired — the mandate cumulative cap (maxTotalUsdc) cannot be verified (fail-closed)");
111
125
  }
112
126
  if (this.resolveRevokedMandateIds === undefined) {
113
- throw new X402SpendControlUnavailableError("cannot open verified stream: no resolveRevokedMandateIds wired — mandate revocation state cannot be verified (fail-closed)");
127
+ throw new SpendControlUnavailableError("cannot open verified stream: no resolveRevokedMandateIds wired — mandate revocation state cannot be verified (fail-closed)");
114
128
  }
115
129
  let spentSoFarUsdc;
116
130
  try {
117
131
  spentSoFarUsdc = await this.resolveSpentSoFarUsdc(payload.signedMandate);
118
132
  }
119
133
  catch (error) {
120
- throw new X402SpendControlUnavailableError(`cannot verify mandate cumulative cap (maxTotalUsdc): ${error instanceof Error ? error.message : String(error)} (fail-closed)`);
134
+ throw new SpendControlUnavailableError(`cannot verify mandate cumulative cap (maxTotalUsdc): ${error instanceof Error ? error.message : String(error)} (fail-closed)`);
121
135
  }
122
136
  if (typeof spentSoFarUsdc !== "bigint" || spentSoFarUsdc < 0n) {
123
- throw new X402SpendControlUnavailableError("cannot verify mandate cumulative cap (maxTotalUsdc): resolver returned an invalid spent-so-far value (fail-closed)");
137
+ throw new SpendControlUnavailableError("cannot verify mandate cumulative cap (maxTotalUsdc): resolver returned an invalid spent-so-far value (fail-closed)");
124
138
  }
125
139
  let revokedMandateIds;
126
140
  try {
127
141
  revokedMandateIds = await this.resolveRevokedMandateIds(payload.signedMandate);
128
142
  }
129
143
  catch (error) {
130
- throw new X402SpendControlUnavailableError(`cannot verify mandate revocation state: ${error instanceof Error ? error.message : String(error)} (fail-closed)`);
144
+ throw new SpendControlUnavailableError(`cannot verify mandate revocation state: ${error instanceof Error ? error.message : String(error)} (fail-closed)`);
131
145
  }
132
146
  if (revokedMandateIds === null ||
133
147
  revokedMandateIds === undefined ||
134
148
  typeof revokedMandateIds[Symbol.iterator] !== "function") {
135
- throw new X402SpendControlUnavailableError("cannot verify mandate revocation state: resolver returned a non-iterable value (fail-closed)");
149
+ throw new SpendControlUnavailableError("cannot verify mandate revocation state: resolver returned a non-iterable value (fail-closed)");
136
150
  }
137
151
  const result = await this.agentClient.openVerifiedStream({
138
152
  operator: payload.challenge.requirements.operator,
@@ -149,7 +163,7 @@ export class VerifiedStreamX402Facilitator {
149
163
  }
150
164
  async proveConsumedHttpsResponse(input) {
151
165
  if (this.deliveryProofs === undefined) {
152
- throw new DeliveryProofUnavailableError("zkTLS delivery proofs are not configured on this x402 facilitator");
166
+ throw new DeliveryProofUnavailableError("zkTLS delivery proofs are not configured on this Metrik verified-stream facilitator");
153
167
  }
154
168
  return await this.deliveryProofs.proveConsumedHttpsResponse({
155
169
  url: input.url,
@@ -184,33 +198,35 @@ export class VerifiedStreamX402Facilitator {
184
198
  });
185
199
  }
186
200
  }
187
- export function encodeX402PayloadHeader(payload) {
188
- const parsed = x402OpenPayloadSchema.parse(payload);
189
- const token = Buffer.from(stringifyX402Payload(parsed)).toString("base64url");
190
- return `${X402_SCHEME} ${token}`;
201
+ export function encodeStreamPayloadHeader(payload) {
202
+ const parsed = streamOpenPayloadSchema.parse(payload);
203
+ const token = Buffer.from(stringifyStreamPayload(parsed)).toString("base64url");
204
+ return `${METRIK_STREAM_SCHEME} ${token}`;
191
205
  }
192
- export function parseX402ChallengeJson(value) {
193
- const parsed = x402StreamChallengeSchema.safeParse(reviveBigInts(value));
206
+ export function parseStreamChallengeJson(value) {
207
+ const parsed = streamChallengeSchema.safeParse(reviveBigInts(value));
194
208
  if (!parsed.success) {
195
- throw new X402PayloadError(parsed.error.issues.map((issue) => issue.message).join("; "));
209
+ throw new StreamPayloadError(parsed.error.issues.map((issue) => issue.message).join("; "));
196
210
  }
197
211
  return parsed.data;
198
212
  }
199
- export function parseX402PayloadHeader(payloadHeader) {
213
+ export function parseStreamPayloadHeader(payloadHeader) {
200
214
  const [scheme, token] = payloadHeader.split(" ", 2);
201
- if (scheme !== X402_SCHEME || token === undefined || token.trim() === "") {
202
- throw new X402PayloadError("invalid x402 verified-stream payload header");
215
+ if (scheme !== METRIK_STREAM_SCHEME ||
216
+ token === undefined ||
217
+ token.trim() === "") {
218
+ throw new StreamPayloadError("invalid Metrik verified-stream payload header");
203
219
  }
204
220
  let decoded;
205
221
  try {
206
222
  decoded = JSON.parse(Buffer.from(token, "base64url").toString("utf8"));
207
223
  }
208
224
  catch (error) {
209
- throw new X402PayloadError(`invalid x402 verified-stream payload encoding: ${error instanceof Error ? error.message : String(error)}`);
225
+ throw new StreamPayloadError(`invalid Metrik verified-stream payload encoding: ${error instanceof Error ? error.message : String(error)}`);
210
226
  }
211
- const parsed = x402OpenPayloadSchema.safeParse(reviveBigInts(decoded));
227
+ const parsed = streamOpenPayloadSchema.safeParse(reviveBigInts(decoded));
212
228
  if (!parsed.success) {
213
- throw new X402PayloadError(parsed.error.issues.map((issue) => issue.message).join("; "));
229
+ throw new StreamPayloadError(parsed.error.issues.map((issue) => issue.message).join("; "));
214
230
  }
215
231
  return parsed.data;
216
232
  }
@@ -225,7 +241,7 @@ function assertSettlementTarget(requirements, sdkConfig) {
225
241
  throw new SettlementTargetMismatchError(`challenge escrow ${requirements.escrow} does not match configured escrow ${sdkConfig.escrow}`);
226
242
  }
227
243
  }
228
- function stringifyX402Payload(payload) {
244
+ function stringifyStreamPayload(payload) {
229
245
  return JSON.stringify(payload, (_key, value) => typeof value === "bigint" ? `${value.toString()}n` : value);
230
246
  }
231
247
  function reviveBigInts(value) {
@@ -240,4 +256,31 @@ function reviveBigInts(value) {
240
256
  }
241
257
  return value;
242
258
  }
259
+ /* -------------------------------------------------------------------------- */
260
+ /* Deprecated `x402`-flavoured aliases. */
261
+ /* */
262
+ /* These names are misleading — this flow is Metrik-native and not x402 (see */
263
+ /* `docs/x402.md`). They are retained as aliases bound to the SAME values and */
264
+ /* class objects as the canonical exports above, so existing consumers and */
265
+ /* `instanceof` checks keep working. Prefer the canonical names. */
266
+ /* -------------------------------------------------------------------------- */
267
+ export {
268
+ /** @deprecated Use {@link METRIK_STREAM_SCHEME}. This flow is not x402. */
269
+ METRIK_STREAM_SCHEME as X402_SCHEME,
270
+ /** @deprecated Use {@link VerifiedStreamFacilitator}. This flow is not x402. */
271
+ VerifiedStreamFacilitator as VerifiedStreamX402Facilitator,
272
+ /** @deprecated Use {@link StreamPayloadError}. Same class object. */
273
+ StreamPayloadError as X402PayloadError,
274
+ /** @deprecated Use {@link SpendControlUnavailableError}. Same class object. */
275
+ SpendControlUnavailableError as X402SpendControlUnavailableError,
276
+ /** @deprecated Use {@link streamChallengeSchema}. */
277
+ streamChallengeSchema as x402StreamChallengeSchema,
278
+ /** @deprecated Use {@link streamOpenPayloadSchema}. */
279
+ streamOpenPayloadSchema as x402OpenPayloadSchema,
280
+ /** @deprecated Use {@link encodeStreamPayloadHeader}. */
281
+ encodeStreamPayloadHeader as encodeX402PayloadHeader,
282
+ /** @deprecated Use {@link parseStreamPayloadHeader}. */
283
+ parseStreamPayloadHeader as parseX402PayloadHeader,
284
+ /** @deprecated Use {@link parseStreamChallengeJson}. */
285
+ parseStreamChallengeJson as parseX402ChallengeJson, };
243
286
  //# sourceMappingURL=facilitator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"facilitator.js","sourceRoot":"","sources":["../../src/x402/facilitator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,wBAAwB,GAEzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,yBAAyB,GAE1B,MAAM,kBAAkB,CAAC;AAQ1B,MAAM,CAAC,MAAM,WAAW,GAAG,6BAAsC,CAAC;AAElE,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAC9D,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvD,QAAQ,EAAE,aAAa;IACvB,UAAU,EAAE,aAAa;IACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,MAAM,EAAE,aAAa;IACrB,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC/C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAMH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAC9B,YAAY,EAAE,gCAAgC;CAC/C,CAAC,CAAC;AAMH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,SAAS,EAAE,yBAAyB;IACpC,aAAa,EAAE,wBAAwB;CACxC,CAAC,CAAC;AAmDH,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;AAEhD,uEAAuE;AACvE,SAAS,mBAAmB,CAAC,GAAW,EAAE,OAAe;IACvD,IAAI,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO;IACT,CAAC;IACD,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IACtD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC9C,CAAC;CACF;AAED,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IACtD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC9C,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,OAAO,gCAAiC,SAAQ,KAAK;IACzD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;IACjD,CAAC;CACF;AAED,MAAM,OAAO,6BAA6B;IACvB,WAAW,CAA4B;IACvC,cAAc,CAA2C;IACzD,SAAS,CAA0B;IACnC,UAAU,CAAe;IAC1C,+EAA+E;IAC/E,0EAA0E;IAC1E,8EAA8E;IAC9E,oCAAoC;IACnB,qBAAqB,CAExB;IACG,wBAAwB,CAI3B;IAEd,YAAY,OAAyC;QACnD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,CAAC,OAAO,CAAC,iBAAiB,IAAI,yBAAyB,CAAC,CACzE,OAAO,CAAC,SAAS,CAClB,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,UAAU;YACb,OAAO,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;QAC3D,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;QAEjE,0EAA0E;QAC1E,6EAA6E;QAC7E,yEAAyE;QACzE,6EAA6E;QAC7E,2EAA2E;QAC3E,+EAA+E;QAC/E,IAAI,OAAO,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;YAChD,mBAAmB,CACjB,YAAY,EACZ,oMAAoM,CACrM,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,wBAAwB,KAAK,SAAS,EAAE,CAAC;YACnD,mBAAmB,CACjB,iBAAiB,EACjB,8KAA8K,CAC/K,CAAC;QACJ,CAAC;IACH,CAAC;IAED,SAAS,CAAC,GAA+B;QACvC,MAAM,YAAY,GAAG,gCAAgC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjE,sBAAsB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,aAAqB;QAC9B,MAAM,OAAO,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;QACtD,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEvE,2EAA2E;QAC3E,2EAA2E;QAC3E,0EAA0E;QAC1E,qEAAqE;QACrE,sEAAsE;QACtE,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;YAC7C,MAAM,IAAI,gCAAgC,CACxC,0IAA0I,CAC3I,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,wBAAwB,KAAK,SAAS,EAAE,CAAC;YAChD,MAAM,IAAI,gCAAgC,CACxC,4HAA4H,CAC7H,CAAC;QACJ,CAAC;QAED,IAAI,cAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,cAAc,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,gCAAgC,CACxC,wDACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,gBAAgB,CACjB,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,GAAG,EAAE,EAAE,CAAC;YAC9D,MAAM,IAAI,gCAAgC,CACxC,oHAAoH,CACrH,CAAC;QACJ,CAAC;QAED,IAAI,iBAA0C,CAAC;QAC/C,IAAI,CAAC;YACH,iBAAiB,GAAG,MAAM,IAAI,CAAC,wBAAwB,CACrD,OAAO,CAAC,aAAa,CACtB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,gCAAgC,CACxC,2CACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,gBAAgB,CACjB,CAAC;QACJ,CAAC;QACD,IACE,iBAAiB,KAAK,IAAI;YAC1B,iBAAiB,KAAK,SAAS;YAC/B,OAAQ,iBAAqD,CAC3D,MAAM,CAAC,QAAQ,CAChB,KAAK,UAAU,EAChB,CAAC;YACD,MAAM,IAAI,gCAAgC,CACxC,8FAA8F,CAC/F,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;YACvD,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,QAAyB;YAClE,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,UAA2B;YACtE,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa;YACxD,iBAAiB,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,iBAAiB;YACnE,kBAAkB,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,kBAAkB;YACrE,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,cAAc;YACd,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;YAC7B,iBAAiB;SAClB,CAAC,CAAC;QAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,0BAA0B,CAC9B,KAA0C;QAE1C,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,IAAI,6BAA6B,CACrC,mEAAmE,CACpE,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAC;YAC1D,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/D,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAClE,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YACzD,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS;gBACnC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;YAC3C,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,GAAG,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC;YACrD,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/D,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS;gBACvC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACnD,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS;gBACjC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;YACvC,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/D,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrE,QAAQ,EAAE;gBACR,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,KAAsB;gBACjD,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,SAA0B;gBACzD,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrE,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrE,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS;oBAChC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aACtC;SACF,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAwB;IAC9D,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC9E,OAAO,GAAG,WAAW,IAAI,KAAK,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,MAAM,MAAM,GAAG,yBAAyB,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,gBAAgB,CACxB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7D,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,aAAqB;IAC1D,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACpD,IAAI,MAAM,KAAK,WAAW,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACzE,MAAM,IAAI,gBAAgB,CAAC,6CAA6C,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,gBAAgB,CACxB,kDACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,gBAAgB,CACxB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC7D,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,yBAAyB,CAChC,MAA+B;IAE/B,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,sBAAsB,CAC7B,YAAwC,EACxC,SAAkC;IAElC,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,6BAA6B,CACrC,qBAAqB,YAAY,CAAC,OAAO,oCAAoC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,CAClG,CAAC;IACJ,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;QACzE,MAAM,IAAI,6BAA6B,CACrC,oBAAoB,YAAY,CAAC,MAAM,qCAAqC,SAAS,CAAC,MAAM,EAAE,CAC/F,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAwB;IACpD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC7C,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAC3D,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CACzE,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"facilitator.js","sourceRoot":"","sources":["../../src/x402/facilitator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ import type { Address, Hex } from "viem";
2
+ import type { PaymentRequirements } from "x402/types";
3
+ /**
4
+ * Standard x402 `exact` payment requirements, built from an OPERATOR-SIGNED
5
+ * Metrik listing.
6
+ *
7
+ * This is the "additional way in" described in `docs/x402.md`: the Metrik
8
+ * verified-stream flow (`./facilitator.ts`) is unchanged and is still the only
9
+ * path with recoverable escrow. What this module adds is the ability for a
10
+ * seller's gateway to ALSO quote an ordinary, fully conformant x402 `exact`
11
+ * price for a single call, so an agent holding nothing but `x402-fetch` can pay
12
+ * without knowing Metrik exists.
13
+ *
14
+ * ## What is signed and what is not
15
+ *
16
+ * `payTo` is derived from the operator's EIP-712-signed service descriptor and
17
+ * from nothing else. It is never read from configuration and never read from a
18
+ * caller-supplied field, because `payTo` is the one field whose corruption
19
+ * silently redirects money.
20
+ *
21
+ * The PRICE is not signed. The descriptor schema (`@absol-labs/shared`) carries
22
+ * `minRatePerSecond` / `maxRatePerSecond` for metered streams and has no
23
+ * per-call price field, so a per-call x402 amount can only come from the seller
24
+ * running the gateway. That is legitimate — it is the seller's own price on the
25
+ * seller's own gateway — but a buyer CANNOT cross-check it against the registry
26
+ * the way they can cross-check `payTo`. Said plainly here so nobody assumes a
27
+ * guarantee that does not exist.
28
+ */
29
+ /** The only x402 protocol version implemented by the published `x402` package. */
30
+ export declare const X402_VERSION: 1;
31
+ /** The only x402 payment scheme implemented by the published `x402` package. */
32
+ export declare const X402_EXACT_SCHEME: "exact";
33
+ /** x402 v1 uses bare network names, not CAIP-2. Metrik settles on Base only. */
34
+ export declare const X402_NETWORK_BY_CHAIN_ID: Readonly<Record<number, "base" | "base-sepolia">>;
35
+ export interface X402AssetConfig {
36
+ readonly address: Address;
37
+ /** EIP-712 domain `name` of the asset, needed to sign EIP-3009 offline. */
38
+ readonly eip712Name: string;
39
+ /** EIP-712 domain `version` of the asset. */
40
+ readonly eip712Version: string;
41
+ readonly decimals: number;
42
+ }
43
+ /**
44
+ * USDC per Base chain. The EIP-712 domain values are what a client needs to
45
+ * sign `TransferWithAuthorization` WITHOUT an extra RPC round trip: the x402
46
+ * client falls back to reading `version()` on chain only when
47
+ * `PaymentRequirements.extra` omits it, so quoting them here removes a network
48
+ * dependency from the payer's hot path.
49
+ *
50
+ * Base Sepolia values read from the live contract on 2026-09-18
51
+ * (`name() == "USDC"`, `version() == "2"`).
52
+ */
53
+ export declare const X402_USDC_BY_CHAIN_ID: Readonly<Record<number, X402AssetConfig>>;
54
+ export declare class X402RequirementsError extends Error {
55
+ constructor(message: string);
56
+ }
57
+ /**
58
+ * The minimum a payee must prove. Both fields MUST be projected from the
59
+ * operator-signed descriptor (see `../discovery/registry.ts`, which recovers the
60
+ * EIP-712 signer and re-derives `serviceRef` from the signed content), never
61
+ * from an unsigned registry column and never from a request.
62
+ */
63
+ export interface SignedListingPayee {
64
+ readonly serviceRef: Hex;
65
+ readonly operator: Address;
66
+ }
67
+ export interface BuildMetrikPaymentRequirementsInput {
68
+ readonly listing: SignedListingPayee;
69
+ /** Absolute URL of the paid resource, as the buyer will request it. */
70
+ readonly resource: string;
71
+ /** Price for ONE call, in the asset's base units (micro-USDC at 6 decimals). */
72
+ readonly priceBaseUnits: bigint;
73
+ readonly chainId: number;
74
+ readonly description?: string;
75
+ readonly mimeType?: string;
76
+ /** How long the signed authorization stays valid. Default 60s. */
77
+ readonly maxTimeoutSeconds?: number;
78
+ readonly outputSchema?: Record<string, unknown>;
79
+ /** Override the settlement asset (defaults to USDC for `chainId`). */
80
+ readonly asset?: X402AssetConfig;
81
+ }
82
+ /** Default authorization validity window quoted to payers, in seconds. */
83
+ export declare const DEFAULT_X402_MAX_TIMEOUT_SECONDS = 60;
84
+ /**
85
+ * Builds standard-`exact` `PaymentRequirements` for one call of a Metrik-listed
86
+ * resource. Throws rather than emitting anything a conformant client would
87
+ * reject or a payer could be harmed by.
88
+ */
89
+ export declare function buildMetrikPaymentRequirements(input: BuildMetrikPaymentRequirementsInput): PaymentRequirements;
90
+ /**
91
+ * The HTTP `402` response body a resource server returns.
92
+ *
93
+ * NOTE on `error`: the shipped `x402ResponseSchema` types `error` as the closed
94
+ * `ErrorReasons` enum, which no real x402 server obeys — `x402-express` and
95
+ * friends put human-readable text there, and `x402-fetch` never reads the field
96
+ * at all. Metrik follows the real-world behaviour (free text) rather than the
97
+ * schema; `test/x402-facilitator-conformance.test.ts` pins that divergence so it
98
+ * is a recorded decision and not an accident.
99
+ */
100
+ export interface X402PaymentRequiredBody {
101
+ readonly x402Version: typeof X402_VERSION;
102
+ readonly error: string;
103
+ readonly accepts: readonly PaymentRequirements[];
104
+ }
105
+ export declare function buildX402PaymentRequiredBody(accepts: readonly PaymentRequirements[], error?: string): X402PaymentRequiredBody;
106
+ //# sourceMappingURL=payment-requirements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-requirements.d.ts","sourceRoot":"","sources":["../../src/x402/payment-requirements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAOzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,kFAAkF;AAClF,eAAO,MAAM,YAAY,EAAG,CAAU,CAAC;AAEvC,gFAAgF;AAChF,eAAO,MAAM,iBAAiB,EAAG,OAAgB,CAAC;AAElD,gFAAgF;AAChF,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC,CAIvC,CAAC;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAcxE,CAAC;AAEL,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gFAAgF;IAChF,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,sEAAsE;IACtE,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;CAClC;AAED,0EAA0E;AAC1E,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,mCAAmC,GACzC,mBAAmB,CAyErB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,WAAW,EAAE,OAAO,YAAY,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAClD;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,KAAK,SAAiC,GACrC,uBAAuB,CAOzB"}
@@ -0,0 +1,138 @@
1
+ import { getAddress, isAddress, isHex } from "viem";
2
+ /**
3
+ * Standard x402 `exact` payment requirements, built from an OPERATOR-SIGNED
4
+ * Metrik listing.
5
+ *
6
+ * This is the "additional way in" described in `docs/x402.md`: the Metrik
7
+ * verified-stream flow (`./facilitator.ts`) is unchanged and is still the only
8
+ * path with recoverable escrow. What this module adds is the ability for a
9
+ * seller's gateway to ALSO quote an ordinary, fully conformant x402 `exact`
10
+ * price for a single call, so an agent holding nothing but `x402-fetch` can pay
11
+ * without knowing Metrik exists.
12
+ *
13
+ * ## What is signed and what is not
14
+ *
15
+ * `payTo` is derived from the operator's EIP-712-signed service descriptor and
16
+ * from nothing else. It is never read from configuration and never read from a
17
+ * caller-supplied field, because `payTo` is the one field whose corruption
18
+ * silently redirects money.
19
+ *
20
+ * The PRICE is not signed. The descriptor schema (`@absol-labs/shared`) carries
21
+ * `minRatePerSecond` / `maxRatePerSecond` for metered streams and has no
22
+ * per-call price field, so a per-call x402 amount can only come from the seller
23
+ * running the gateway. That is legitimate — it is the seller's own price on the
24
+ * seller's own gateway — but a buyer CANNOT cross-check it against the registry
25
+ * the way they can cross-check `payTo`. Said plainly here so nobody assumes a
26
+ * guarantee that does not exist.
27
+ */
28
+ /** The only x402 protocol version implemented by the published `x402` package. */
29
+ export const X402_VERSION = 1;
30
+ /** The only x402 payment scheme implemented by the published `x402` package. */
31
+ export const X402_EXACT_SCHEME = "exact";
32
+ /** x402 v1 uses bare network names, not CAIP-2. Metrik settles on Base only. */
33
+ export const X402_NETWORK_BY_CHAIN_ID = Object.freeze({
34
+ 8453: "base",
35
+ 84532: "base-sepolia",
36
+ });
37
+ /**
38
+ * USDC per Base chain. The EIP-712 domain values are what a client needs to
39
+ * sign `TransferWithAuthorization` WITHOUT an extra RPC round trip: the x402
40
+ * client falls back to reading `version()` on chain only when
41
+ * `PaymentRequirements.extra` omits it, so quoting them here removes a network
42
+ * dependency from the payer's hot path.
43
+ *
44
+ * Base Sepolia values read from the live contract on 2026-09-18
45
+ * (`name() == "USDC"`, `version() == "2"`).
46
+ */
47
+ export const X402_USDC_BY_CHAIN_ID = Object.freeze({
48
+ 8453: Object.freeze({
49
+ address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
50
+ eip712Name: "USD Coin",
51
+ eip712Version: "2",
52
+ decimals: 6,
53
+ }),
54
+ 84532: Object.freeze({
55
+ address: "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
56
+ eip712Name: "USDC",
57
+ eip712Version: "2",
58
+ decimals: 6,
59
+ }),
60
+ });
61
+ export class X402RequirementsError extends Error {
62
+ constructor(message) {
63
+ super(message);
64
+ this.name = "X402RequirementsError";
65
+ }
66
+ }
67
+ /** Default authorization validity window quoted to payers, in seconds. */
68
+ export const DEFAULT_X402_MAX_TIMEOUT_SECONDS = 60;
69
+ /**
70
+ * Builds standard-`exact` `PaymentRequirements` for one call of a Metrik-listed
71
+ * resource. Throws rather than emitting anything a conformant client would
72
+ * reject or a payer could be harmed by.
73
+ */
74
+ export function buildMetrikPaymentRequirements(input) {
75
+ const network = X402_NETWORK_BY_CHAIN_ID[input.chainId];
76
+ if (network === undefined) {
77
+ throw new X402RequirementsError(`x402 v1 has no network name for chain ${input.chainId} (Metrik settles on Base: 8453, 84532)`);
78
+ }
79
+ const asset = input.asset ?? X402_USDC_BY_CHAIN_ID[input.chainId];
80
+ if (asset === undefined) {
81
+ throw new X402RequirementsError(`no default settlement asset known for chain ${input.chainId}`);
82
+ }
83
+ if (!isAddress(input.listing.operator)) {
84
+ throw new X402RequirementsError("listing.operator must be an EVM address (it becomes payTo)");
85
+ }
86
+ if (!isHex(input.listing.serviceRef, { strict: true }) ||
87
+ input.listing.serviceRef.length !== 66) {
88
+ throw new X402RequirementsError("listing.serviceRef must be a 32-byte hex value");
89
+ }
90
+ if (input.priceBaseUnits <= 0n) {
91
+ throw new X402RequirementsError("priceBaseUnits must be positive — a zero-priced x402 quote is not a payment");
92
+ }
93
+ let resource;
94
+ try {
95
+ resource = new URL(input.resource);
96
+ }
97
+ catch {
98
+ throw new X402RequirementsError(`resource must be an absolute URL`);
99
+ }
100
+ const maxTimeoutSeconds = input.maxTimeoutSeconds ?? DEFAULT_X402_MAX_TIMEOUT_SECONDS;
101
+ if (!Number.isInteger(maxTimeoutSeconds) || maxTimeoutSeconds <= 0) {
102
+ throw new X402RequirementsError("maxTimeoutSeconds must be a positive integer");
103
+ }
104
+ return {
105
+ scheme: X402_EXACT_SCHEME,
106
+ network,
107
+ maxAmountRequired: input.priceBaseUnits.toString(),
108
+ resource: resource.toString(),
109
+ description: input.description ??
110
+ "One call to a Metrik-listed service. Metrik's facilitator refuses to settle this payment while its oracle reports the service as failing.",
111
+ mimeType: input.mimeType ?? "application/json",
112
+ payTo: getAddress(input.listing.operator),
113
+ maxTimeoutSeconds,
114
+ asset: getAddress(asset.address),
115
+ extra: {
116
+ // Required by the x402 `exact` EVM binding so the payer can sign the
117
+ // EIP-3009 authorization offline.
118
+ name: asset.eip712Name,
119
+ version: asset.eip712Version,
120
+ // ADVISORY ONLY. The facilitator NEVER reads this to decide anything: it
121
+ // arrives inside a caller-supplied request body, so trusting it would let
122
+ // a caller pick which service's delivery record gets checked. The
123
+ // facilitator re-derives the service from `resource` against its own
124
+ // registry view. Published purely so a client can look the listing up.
125
+ metrikServiceRef: input.listing.serviceRef,
126
+ },
127
+ ...(input.outputSchema === undefined
128
+ ? {}
129
+ : { outputSchema: input.outputSchema }),
130
+ };
131
+ }
132
+ export function buildX402PaymentRequiredBody(accepts, error = "X-PAYMENT header is required") {
133
+ if (accepts.length === 0) {
134
+ throw new X402RequirementsError("a 402 must advertise at least one PaymentRequirements");
135
+ }
136
+ return { x402Version: X402_VERSION, error, accepts };
137
+ }
138
+ //# sourceMappingURL=payment-requirements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-requirements.js","sourceRoot":"","sources":["../../src/x402/payment-requirements.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { type Chain, type Hex } from "viem";
2
+ import type { PaymentSettler, PaymentVerifier } from "./verified-delivery-facilitator.js";
3
+ /**
4
+ * Chain wiring for the payment half of Metrik's x402 facilitator.
5
+ *
6
+ * Nothing here is Metrik-specific: verification and settlement are delegated
7
+ * VERBATIM to the real `x402/facilitator` implementation of the `exact` scheme.
8
+ * Metrik does not reimplement EIP-3009, and a change in the library's rules is
9
+ * inherited rather than drifted away from. The Metrik-specific part — the
10
+ * delivery gate — lives entirely in `./verified-delivery-facilitator.ts` and is
11
+ * layered ON TOP of whatever this returns.
12
+ */
13
+ export declare const X402_CHAINS: Readonly<Record<number, Chain>>;
14
+ export interface X402ChainOptions {
15
+ /** Default `84532` (Base Sepolia). */
16
+ readonly chainId?: number;
17
+ /** RPC endpoint. Required: the library's default public RPCs are not operable infrastructure. */
18
+ readonly rpcUrl: string;
19
+ }
20
+ /**
21
+ * Read-only verifier. Needs an RPC because the `exact` scheme checks the payer's
22
+ * on-chain balance; it holds no key and can broadcast nothing.
23
+ */
24
+ export declare function createX402PaymentVerifier(options: X402ChainOptions): PaymentVerifier;
25
+ export interface X402RelayerOptions extends X402ChainOptions {
26
+ /**
27
+ * The relayer's private key. This wallet BROADCASTS and pays gas; it never
28
+ * custodies payment funds (EIP-3009 moves value directly from payer to payee).
29
+ * Supplied by the operator through the environment, exactly like every other
30
+ * wallet in this package. Never committed, never defaulted.
31
+ */
32
+ readonly privateKey: Hex;
33
+ }
34
+ /**
35
+ * The settlement half. Constructing this is the ONLY place a key enters the
36
+ * facilitator, and there is no code path that broadcasts without one.
37
+ */
38
+ export declare function createX402PaymentSettler(options: X402RelayerOptions): PaymentSettler;
39
+ /** The relayer address, so an operator can check what they must fund with gas. */
40
+ export declare function relayerAddress(privateKey: Hex): `0x${string}`;
41
+ //# sourceMappingURL=relayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relayer.d.ts","sourceRoot":"","sources":["../../src/x402/relayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,KAAK,EACV,KAAK,GAAG,EACT,MAAM,MAAM,CAAC;AAWd,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EAChB,MAAM,oCAAoC,CAAC;AAE5C;;;;;;;;;GASG;AAEH,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAGtD,CAAC;AAEH,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,iGAAiG;IACjG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAUD;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gBAAgB,GACxB,eAAe,CAkBjB;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,kBAAkB,GAC1B,cAAc,CAoBhB;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,UAAU,EAAE,GAAG,GAAG,KAAK,MAAM,EAAE,CAE7D"}
@@ -0,0 +1,64 @@
1
+ import { createPublicClient, createWalletClient, http, publicActions, } from "viem";
2
+ import { privateKeyToAccount } from "viem/accounts";
3
+ import { base, baseSepolia } from "viem/chains";
4
+ import { settle as x402Settle, verify as x402Verify } from "x402/facilitator";
5
+ /**
6
+ * Chain wiring for the payment half of Metrik's x402 facilitator.
7
+ *
8
+ * Nothing here is Metrik-specific: verification and settlement are delegated
9
+ * VERBATIM to the real `x402/facilitator` implementation of the `exact` scheme.
10
+ * Metrik does not reimplement EIP-3009, and a change in the library's rules is
11
+ * inherited rather than drifted away from. The Metrik-specific part — the
12
+ * delivery gate — lives entirely in `./verified-delivery-facilitator.ts` and is
13
+ * layered ON TOP of whatever this returns.
14
+ */
15
+ export const X402_CHAINS = Object.freeze({
16
+ 8453: base,
17
+ 84532: baseSepolia,
18
+ });
19
+ function chainFor(chainId) {
20
+ const chain = X402_CHAINS[chainId];
21
+ if (chain === undefined) {
22
+ throw new Error(`unsupported x402 settlement chain: ${chainId}`);
23
+ }
24
+ return chain;
25
+ }
26
+ /**
27
+ * Read-only verifier. Needs an RPC because the `exact` scheme checks the payer's
28
+ * on-chain balance; it holds no key and can broadcast nothing.
29
+ */
30
+ export function createX402PaymentVerifier(options) {
31
+ const chain = chainFor(options.chainId ?? 84532);
32
+ const client = createPublicClient({
33
+ chain,
34
+ transport: http(options.rpcUrl),
35
+ });
36
+ return {
37
+ verify(payload, requirements) {
38
+ return x402Verify(client, payload, requirements);
39
+ },
40
+ };
41
+ }
42
+ /**
43
+ * The settlement half. Constructing this is the ONLY place a key enters the
44
+ * facilitator, and there is no code path that broadcasts without one.
45
+ */
46
+ export function createX402PaymentSettler(options) {
47
+ const chain = chainFor(options.chainId ?? 84532);
48
+ const account = privateKeyToAccount(options.privateKey);
49
+ const signer = createWalletClient({
50
+ account,
51
+ chain,
52
+ transport: http(options.rpcUrl),
53
+ }).extend(publicActions);
54
+ return {
55
+ settle(payload, requirements) {
56
+ return x402Settle(signer, payload, requirements);
57
+ },
58
+ };
59
+ }
60
+ /** The relayer address, so an operator can check what they must fund with gas. */
61
+ export function relayerAddress(privateKey) {
62
+ return privateKeyToAccount(privateKey).address;
63
+ }
64
+ //# sourceMappingURL=relayer.js.map