@absol-labs/agent 0.12.0-rc.1 → 0.12.0-rc.2

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 (113) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/commands/claim.d.ts +32 -0
  3. package/dist/cli/commands/claim.d.ts.map +1 -1
  4. package/dist/cli/commands/claim.js +115 -27
  5. package/dist/cli/commands/claim.js.map +1 -1
  6. package/dist/cli/commands/pay.d.ts +15 -0
  7. package/dist/cli/commands/pay.d.ts.map +1 -1
  8. package/dist/cli/commands/pay.js +131 -7
  9. package/dist/cli/commands/pay.js.map +1 -1
  10. package/dist/cli/commands/reclaim.d.ts.map +1 -1
  11. package/dist/cli/commands/reclaim.js +20 -4
  12. package/dist/cli/commands/reclaim.js.map +1 -1
  13. package/dist/cli/commands/refund.d.ts +19 -1
  14. package/dist/cli/commands/refund.d.ts.map +1 -1
  15. package/dist/cli/commands/refund.js +200 -27
  16. package/dist/cli/commands/refund.js.map +1 -1
  17. package/dist/cli/commands/status.d.ts.map +1 -1
  18. package/dist/cli/commands/status.js +11 -1
  19. package/dist/cli/commands/status.js.map +1 -1
  20. package/dist/cli/commands/watch.d.ts.map +1 -1
  21. package/dist/cli/commands/watch.js +2 -0
  22. package/dist/cli/commands/watch.js.map +1 -1
  23. package/dist/cli/context.d.ts +19 -0
  24. package/dist/cli/context.d.ts.map +1 -1
  25. package/dist/cli/deps.d.ts +20 -0
  26. package/dist/cli/deps.d.ts.map +1 -1
  27. package/dist/cli/deps.js +14 -0
  28. package/dist/cli/deps.js.map +1 -1
  29. package/dist/cli/progress.d.ts +13 -1
  30. package/dist/cli/progress.d.ts.map +1 -1
  31. package/dist/cli/progress.js +7 -1
  32. package/dist/cli/progress.js.map +1 -1
  33. package/dist/cli/run.d.ts.map +1 -1
  34. package/dist/cli/run.js +26 -14
  35. package/dist/cli/run.js.map +1 -1
  36. package/dist/cli/status.d.ts +103 -0
  37. package/dist/cli/status.d.ts.map +1 -1
  38. package/dist/cli/status.js +310 -41
  39. package/dist/cli/status.js.map +1 -1
  40. package/dist/cli/wallet.d.ts +1 -1
  41. package/dist/cli/wallet.d.ts.map +1 -1
  42. package/dist/cli/wallet.js +28 -4
  43. package/dist/cli/wallet.js.map +1 -1
  44. package/dist/gateway/http-server.d.ts +17 -0
  45. package/dist/gateway/http-server.d.ts.map +1 -1
  46. package/dist/gateway/http-server.js +76 -9
  47. package/dist/gateway/http-server.js.map +1 -1
  48. package/dist/gateway/x402-opener-mode.d.ts +39 -2
  49. package/dist/gateway/x402-opener-mode.d.ts.map +1 -1
  50. package/dist/gateway/x402-opener-mode.js +169 -36
  51. package/dist/gateway/x402-opener-mode.js.map +1 -1
  52. package/dist/mcp/server.d.ts +12 -0
  53. package/dist/mcp/server.d.ts.map +1 -1
  54. package/dist/mcp/server.js +28 -9
  55. package/dist/mcp/server.js.map +1 -1
  56. package/dist/mcp/x402-tools.d.ts +8 -3
  57. package/dist/mcp/x402-tools.d.ts.map +1 -1
  58. package/dist/mcp/x402-tools.js +126 -6
  59. package/dist/mcp/x402-tools.js.map +1 -1
  60. package/dist/sdk/client.d.ts +13 -0
  61. package/dist/sdk/client.d.ts.map +1 -1
  62. package/dist/sdk/client.js +15 -0
  63. package/dist/sdk/client.js.map +1 -1
  64. package/dist/x402-buyer/pay.d.ts +22 -0
  65. package/dist/x402-buyer/pay.d.ts.map +1 -1
  66. package/dist/x402-buyer/pay.js +33 -3
  67. package/dist/x402-buyer/pay.js.map +1 -1
  68. package/dist/x402-opener/facilitator-entry.js +4 -1
  69. package/dist/x402-opener/facilitator-entry.js.map +1 -1
  70. package/dist/x402-opener/facilitator-server.d.ts +29 -0
  71. package/dist/x402-opener/facilitator-server.d.ts.map +1 -1
  72. package/dist/x402-opener/facilitator-server.js +67 -1
  73. package/dist/x402-opener/facilitator-server.js.map +1 -1
  74. package/dist/x402-opener/refund-relay.d.ts +30 -4
  75. package/dist/x402-opener/refund-relay.d.ts.map +1 -1
  76. package/dist/x402-opener/refund-relay.js +123 -22
  77. package/dist/x402-opener/refund-relay.js.map +1 -1
  78. package/dist/x402-opener/scheme.d.ts +79 -0
  79. package/dist/x402-opener/scheme.d.ts.map +1 -1
  80. package/dist/x402-opener/scheme.js +326 -40
  81. package/dist/x402-opener/scheme.js.map +1 -1
  82. package/dist/x402-opener/terms.d.ts +61 -1
  83. package/dist/x402-opener/terms.d.ts.map +1 -1
  84. package/dist/x402-opener/terms.js +94 -2
  85. package/dist/x402-opener/terms.js.map +1 -1
  86. package/docs/cli.md +87 -9
  87. package/docs/mcp-reference.md +18 -2
  88. package/docs/quickstart.md +3 -3
  89. package/docs/x402.md +150 -10
  90. package/package.json +3 -3
  91. package/src/cli/commands/claim.ts +167 -32
  92. package/src/cli/commands/pay.ts +150 -8
  93. package/src/cli/commands/reclaim.ts +25 -5
  94. package/src/cli/commands/refund.ts +231 -33
  95. package/src/cli/commands/status.ts +11 -1
  96. package/src/cli/commands/watch.ts +4 -0
  97. package/src/cli/context.ts +16 -0
  98. package/src/cli/deps.ts +37 -0
  99. package/src/cli/progress.ts +21 -2
  100. package/src/cli/run.ts +26 -13
  101. package/src/cli/status.ts +440 -43
  102. package/src/cli/wallet.ts +44 -7
  103. package/src/gateway/http-server.ts +96 -8
  104. package/src/gateway/x402-opener-mode.ts +234 -37
  105. package/src/mcp/server.ts +43 -11
  106. package/src/mcp/x402-tools.ts +171 -7
  107. package/src/sdk/client.ts +25 -0
  108. package/src/x402-buyer/pay.ts +41 -3
  109. package/src/x402-opener/facilitator-entry.ts +4 -1
  110. package/src/x402-opener/facilitator-server.ts +101 -1
  111. package/src/x402-opener/refund-relay.ts +150 -20
  112. package/src/x402-opener/scheme.ts +459 -41
  113. package/src/x402-opener/terms.ts +155 -2
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,21 @@ export class VerifiedStreamAgentClient {
59
59
  await this.authorizeExistingStreamAction(input);
60
60
  return await this.sdkClient.claim(input.streamId);
61
61
  }
62
+ /**
63
+ * Operator-only, StreamEscrowV3 only: redeem the stream's on-chain proven
64
+ * high-water (`claimProven`) without a fresh proof. Authorized exactly like
65
+ * {@link claimStream} — it pays the same party from the same escrow, only an
66
+ * amount already proven against a signed checkpoint root and recorded
67
+ * on-chain, so it can never pay more than a proof claim could have.
68
+ */
69
+ async claimProvenStream(input) {
70
+ const claimProven = this.sdkClient.claimProven?.bind(this.sdkClient);
71
+ if (claimProven === undefined) {
72
+ throw new Error("this SDK client cannot send claimProven (StreamEscrowV3 only)");
73
+ }
74
+ await this.authorizeExistingStreamAction(input);
75
+ return await claimProven(input.streamId);
76
+ }
62
77
  async closeStream(input) {
63
78
  await this.authorizeBuyerRecovery(input);
64
79
  return await this.sdkClient.close(input.streamId);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/sdk/client.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,15 @@ import { type HireRequest, type MandateDecision, type SignedSpendMandate } from
21
21
  * | `maxDurationSeconds` | `maxDuration` (the stream's window) |
22
22
  * | `allowedOperators` | `operator` (who the stream pays) |
23
23
  *
24
+ * An UPFRONT ("minimum charge") opener quote is mapped the same way, with
25
+ * `budgetUsdc = price` — the WHOLE payment, of which `upfrontAmount` is
26
+ * non-refundable (paid to the seller at settlement) and only the rest is
27
+ * escrowed. So the per-stream and total caps always count the upfront part as
28
+ * spent, and nothing a refund returns is ever credited back. Its size is also
29
+ * capped separately, before signing, by the SDK's `maxUpfrontAmount` (default
30
+ * 0.10 USDC; pass {@link PayX402WithMandateInput.maxUpfrontAmount} to tighten
31
+ * it, `0n` to refuse every upfront charge).
32
+ *
24
33
  * The check runs inside the SDK's `onQuote` hook — after every SDK protection
25
34
  * (scheme, network, USDC domain, EIP-3009 only, registered factory, on-chain
26
35
  * `predict`, authorization lifetime) and BEFORE anything is signed — so a
@@ -62,6 +71,12 @@ export interface PayX402WithMandateInput {
62
71
  readonly maxRatePerSecond?: bigint;
63
72
  /** Refuse a quote the seller can fully earn in fewer verified seconds. */
64
73
  readonly minDurationSeconds?: number;
74
+ /**
75
+ * Ceiling on the NON-REFUNDABLE upfront part of an upfront-opener quote, base
76
+ * units (the SDK's `maxUpfrontAmount`). Default the SDK's 0.10 USDC; `0n`
77
+ * refuses any upfront charge. Never above the price ceiling in effect.
78
+ */
79
+ readonly maxUpfrontAmount?: bigint;
65
80
  /** Passed through to the SDK (transport, fetch, publicClient, ...). */
66
81
  readonly sdkOptions?: Pick<PayWithX402Options, "publicClient" | "transport" | "fetch" | "allowInsecureHttp" | "maxAuthorizationSeconds" | "allowLegacyFactory">;
67
82
  /** Test seam: the SDK payer. Default `payWithX402`. */
@@ -111,12 +126,19 @@ export declare class X402PostSignatureError extends Error {
111
126
  /** The stream the payment opened, when it could be identified. */
112
127
  readonly streamId: `0x${string}` | null;
113
128
  readonly opener: `0x${string}`;
129
+ /**
130
+ * `true` when the chain shows (or the signed quote implies) an UPFRONT-ONLY
131
+ * payment: no stream, the whole price was a non-refundable charge, nothing
132
+ * to recover.
133
+ */
134
+ readonly upfrontOnly: boolean;
114
135
  constructor(context: {
115
136
  readonly state: X402PostSignatureState;
116
137
  readonly approved: HireRequest;
117
138
  readonly quote: X402QuoteSummary;
118
139
  readonly authorization: SignedTransferAuthorization | null;
119
140
  readonly streamId: `0x${string}` | null;
141
+ readonly upfrontOnly?: boolean;
120
142
  readonly cause: unknown;
121
143
  });
122
144
  /** Only an authorization that provably can never move funds frees its reservation. */
@@ -1 +1 @@
1
- {"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../../src/x402-buyer/pay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../../src/x402-buyer/pay.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,15 @@ import { checkMandate, verifySignedMandate, } from "../mandates/mandate.js";
21
21
  * | `maxDurationSeconds` | `maxDuration` (the stream's window) |
22
22
  * | `allowedOperators` | `operator` (who the stream pays) |
23
23
  *
24
+ * An UPFRONT ("minimum charge") opener quote is mapped the same way, with
25
+ * `budgetUsdc = price` — the WHOLE payment, of which `upfrontAmount` is
26
+ * non-refundable (paid to the seller at settlement) and only the rest is
27
+ * escrowed. So the per-stream and total caps always count the upfront part as
28
+ * spent, and nothing a refund returns is ever credited back. Its size is also
29
+ * capped separately, before signing, by the SDK's `maxUpfrontAmount` (default
30
+ * 0.10 USDC; pass {@link PayX402WithMandateInput.maxUpfrontAmount} to tighten
31
+ * it, `0n` to refuse every upfront charge).
32
+ *
24
33
  * The check runs inside the SDK's `onQuote` hook — after every SDK protection
25
34
  * (scheme, network, USDC domain, EIP-3009 only, registered factory, on-chain
26
35
  * `predict`, authorization lifetime) and BEFORE anything is signed — so a
@@ -82,9 +91,18 @@ export class X402PostSignatureError extends Error {
82
91
  /** The stream the payment opened, when it could be identified. */
83
92
  streamId;
84
93
  opener;
94
+ /**
95
+ * `true` when the chain shows (or the signed quote implies) an UPFRONT-ONLY
96
+ * payment: no stream, the whole price was a non-refundable charge, nothing
97
+ * to recover.
98
+ */
99
+ upfrontOnly;
85
100
  constructor(context) {
101
+ const upfrontOnly = context.upfrontOnly === true || context.quote.upfrontOnly === true;
86
102
  const what = context.state === "used"
87
- ? `the payment SETTLED (the authorization was used)${context.streamId === null ? ", but its stream could not be identified" : ` into stream ${context.streamId}`}`
103
+ ? upfrontOnly
104
+ ? "the payment SETTLED (the authorization was used) as an UPFRONT-ONLY charge: the whole price went to the seller, no stream was opened and there is nothing to refund"
105
+ : `the payment SETTLED (the authorization was used)${context.streamId === null ? ", but its stream could not be identified" : ` into stream ${context.streamId}`}`
88
106
  : context.state === "possibly-used"
89
107
  ? "the payment MAY HAVE SETTLED: whether the authorization was used could not be established, so treat it as spent"
90
108
  : context.state === "unused-but-valid"
@@ -98,6 +116,7 @@ export class X402PostSignatureError extends Error {
98
116
  this.authorization = context.authorization;
99
117
  this.streamId = context.streamId;
100
118
  this.opener = getAddress(context.quote.payTo);
119
+ this.upfrontOnly = upfrontOnly;
101
120
  }
102
121
  /** Only an authorization that provably can never move funds frees its reservation. */
103
122
  get releasable() {
@@ -174,6 +193,8 @@ export async function payX402WithMandate(input) {
174
193
  }
175
194
  const maxAmount = smaller(smaller(mandate.maxPerStreamUsdc, remaining), input.maxAmount);
176
195
  const maxRatePerSecond = smaller(mandate.maxRatePerSecondUsdc, input.maxRatePerSecond);
196
+ // A negative maxUpfrontAmount is refused by the SDK (InvalidInputError)
197
+ // before the seller is contacted.
177
198
  // 3. The per-quote mandate check, before signing.
178
199
  let denial = null;
179
200
  let approved = null;
@@ -203,6 +224,9 @@ export async function payX402WithMandate(input) {
203
224
  network: input.network,
204
225
  maxAmount,
205
226
  maxRatePerSecond,
227
+ ...(input.maxUpfrontAmount === undefined
228
+ ? {}
229
+ : { maxUpfrontAmount: smaller(input.maxUpfrontAmount, maxAmount) }),
206
230
  ...(input.minDurationSeconds === undefined
207
231
  ? {}
208
232
  : { minDurationSeconds: input.minDurationSeconds }),
@@ -262,6 +286,7 @@ async function classifyPostSignatureFailure(input, context) {
262
286
  let used = typeof sdkError.authorizationUsed === "boolean"
263
287
  ? sdkError.authorizationUsed
264
288
  : null;
289
+ let upfrontOnly = sdkError.upfrontOnly === true;
265
290
  let streamId = typeof sdkError.streamId === "string" &&
266
291
  /^0x[0-9a-fA-F]{64}$/.test(sdkError.streamId)
267
292
  ? sdkError.streamId
@@ -296,16 +321,20 @@ async function classifyPostSignatureFailure(input, context) {
296
321
  publicClient: reader,
297
322
  });
298
323
  streamId = recovery.streamId;
324
+ // An upfront-only payment opens no stream: the opener's
325
+ // UpfrontCharged (streamId 0), read on-chain, proves it was used.
326
+ if (recovery.upfrontOnly)
327
+ upfrontOnly = true;
299
328
  }
300
329
  catch {
301
330
  streamId = null;
302
331
  }
303
- if (streamId !== null)
332
+ if (streamId !== null || upfrontOnly)
304
333
  used = true;
305
334
  }
306
335
  }
307
336
  const nowSeconds = BigInt(Math.floor(Date.now() / 1000));
308
- const state = streamId !== null || used === true
337
+ const state = streamId !== null || upfrontOnly || used === true
309
338
  ? "used"
310
339
  : used === false && authorization !== null
311
340
  ? authorization.validBefore <= nowSeconds
@@ -318,6 +347,7 @@ async function classifyPostSignatureFailure(input, context) {
318
347
  quote: context.quote,
319
348
  authorization,
320
349
  streamId,
350
+ upfrontOnly,
321
351
  cause: context.error,
322
352
  });
323
353
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pay.js","sourceRoot":"","sources":["../../src/x402-buyer/pay.ts"],"names":[],"mappings":"AACA,OAAO,EACL,0BAA0B,EAC1B,WAAW,EACX,uBAAuB,GAMxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAqB,MAAM,MAAM,CAAC;AAE/E,OAAO,EACL,YAAY,EACZ,mBAAmB,GAIpB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,kEAAkE;AAClE,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACtC,MAAM,CAEW;IACjB,KAAK,CAA0B;IAExC,YACE,MAAwC,EACxC,KAA8B,EAC9B,MAAe;QAEf,KAAK,CACH,8CAA8C,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,uBAAuB,CACzH,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAuB;IAEvB,IACE,KAAK,CAAC,QAAQ,KAAK,IAAI;QACvB,KAAK,CAAC,aAAa,KAAK,IAAI;QAC5B,KAAK,CAAC,WAAW,KAAK,IAAI,EAC1B,CAAC;QACD,OAAO;YACL,OAAO,EACL,4HAA4H;SAC/H,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACxD,OAAO,EAAE,OAAO,EAAE,eAAe,KAAK,CAAC,WAAW,kBAAkB,EAAE,CAAC;IACzE,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,KAAK,CAAC,MAAM;QACxB,iBAAiB,EAAE,KAAK,CAAC,aAAa;QACtC,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;KAC9C,CAAC;AACJ,CAAC;AAgED;;;;;;;;GAQG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACtC,KAAK,CAAyB;IAC9B,QAAQ,CAAc;IACtB,KAAK,CAAmB;IACxB,aAAa,CAAqC;IAC3D,kEAAkE;IACzD,QAAQ,CAAuB;IAC/B,MAAM,CAAgB;IAE/B,YAAY,OAOX;QACC,MAAM,IAAI,GACR,OAAO,CAAC,KAAK,KAAK,MAAM;YACtB,CAAC,CAAC,mDAAmD,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,gBAAgB,OAAO,CAAC,QAAQ,EAAE,EAAE;YAClK,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,eAAe;gBACjC,CAAC,CAAC,iHAAiH;gBACnH,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,kBAAkB;oBACpC,CAAC,CAAC,iEAAiE,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,QAAQ,EAAE,IAAI,iBAAiB,2GAA2G;oBAChP,CAAC,CAAC,iEAAiE,CAAC;QAC5E,KAAK,CACH,mBAAmB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,uBAAuB,OAAO,CAAC,KAAK,CAAC,KAAK,8BAA8B,IAAI,YAAY,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EACjO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CACzB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,sFAAsF;IACtF,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,KAAK,KAAK,gBAAgB,CAAC;IACzC,CAAC;CACF;AAED,SAAS,WAAW,CAClB,OAA2C,EAC3C,IAAY;IAEZ,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,OAAO,YAAY,OAAO;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC,CAAC;QACpE,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC1B,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2FAA2F;AAC3F,SAAS,uBAAuB,CAC9B,MAAc;IAEd,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,4BAA4B,CAAC,MAAM,CAElD,CAAC;QACF,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC;QAC5C,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACpC,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,IAAc,CAAC;YACrC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,EAAY,CAAC;YACjC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC;YACnC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAoB,CAAC;YAC7C,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAqB,CAAC;YAC/C,KAAK,EAAE,IAAI,CAAC,KAAsB;SACnC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAOD,SAAS,OAAO,CAAC,CAAS,EAAE,CAAqB;IAC/C,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAA8B;IAE9B,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC;IAC5C,8DAA8D;IAC9D,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,aAAa,EAAE;QAC7D,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS;YACvC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC;KACpD,CAAC,CAAC;IACH,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,IAAI,sBAAsB,CAC9B,OAAO,CAAC,MAAM,IAAI,mBAAmB,EACrC,IAAI,CACL,CAAC;IACJ,CAAC;IACD,IACE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE;QACvC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAClC,CAAC;QACD,MAAM,IAAI,sBAAsB,CAC9B,mBAAmB,EACnB,IAAI,EACJ,2BAA2B,KAAK,CAAC,aAAa,CAAC,KAAK,mBAAmB,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAC9F,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAC3D,MAAM,IAAI,sBAAsB,CAC9B,mBAAmB,EACnB,IAAI,EACJ,4BAA4B,KAAK,CAAC,aAAa,CAAC,OAAO,SAAS,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CACjH,CAAC;IACJ,CAAC;IAED,4DAA4D;IAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC;IAC9D,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;QACpB,MAAM,IAAI,sBAAsB,CAC9B,mBAAmB,EACnB,IAAI,EACJ,0CAA0C,CAC3C,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CACvB,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAC5C,KAAK,CAAC,SAAS,CAChB,CAAC;IACF,MAAM,gBAAgB,GAAG,OAAO,CAC9B,OAAO,CAAC,oBAAoB,EAC5B,KAAK,CAAC,gBAAgB,CACvB,CAAC;IAEF,kDAAkD;IAClD,IAAI,MAAM,GAAkC,IAAI,CAAC;IACjD,IAAI,QAAQ,GAAuB,IAAI,CAAC;IACxC,IAAI,aAAa,GAA4B,IAAI,CAAC;IAClD,mEAAmE;IACnE,4EAA4E;IAC5E,sEAAsE;IACtE,IAAI,iBAAiB,GAAuC,IAAI,CAAC;IACjE,MAAM,SAAS,GACb,KAAK,CAAC,UAAU,EAAE,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/D,MAAM,cAAc,GAAG,CAAC,KAAK,EAC3B,QAAgC,EAChC,IAAkB,EAClB,EAAE;QACF,MAAM,MAAM,GACV,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,mBAAmB,CAAC;YAC/C,CAAC,QAAQ,YAAY,OAAO;gBAC1B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;gBAC3C,CAAC,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,iBAAiB,GAAG,uBAAuB,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC;QAC3E,CAAC;QACD,OAAO,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC,CAAiB,CAAC;IACnB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,WAAW,CAAC;IACzC,IAAI,MAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE;YACxC,GAAG,KAAK,CAAC,UAAU;YACnB,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS;YACT,gBAAgB;YAChB,GAAG,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC;YACrD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACvB,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;gBAC9C,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;oBACzB,MAAM,GAAG,IAAI,sBAAsB,CACjC,qBAAqB,EACrB,KAAK,EACL,OAAO,CAAC,OAAO,CAChB,CAAC;oBACF,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,YAAY,CACjC,KAAK,CAAC,aAAa,EACnB,OAAO,EACP,KAAK,CAAC,cAAc,EACpB;oBACE,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS;wBACvC,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC;iBACpD,CACF,CAAC;gBACF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACtB,MAAM,GAAG,IAAI,sBAAsB,CACjC,QAAQ,CAAC,MAAM,IAAI,mBAAmB,EACtC,KAAK,CACN,CAAC;oBACF,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,iEAAiE;gBACjE,mDAAmD;gBACnD,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC7C,QAAQ,GAAG,OAAO,CAAC;gBACnB,aAAa,GAAG,KAAK,CAAC;gBACtB,MAAM,GAAG,IAAI,CAAC;gBACd,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,uBAAuB,EAAE,CAAC;YAC7C,qEAAqE;YACrE,oDAAoD;YACpD,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,MAAM,CAAC;YAClC,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,QAAQ,KAAK,IAAI,IAAI,aAAa,KAAK,IAAI;YAAE,MAAM,KAAK,CAAC;QAC7D,MAAM,MAAM,4BAA4B,CAAC,KAAK,EAAE;YAC9C,KAAK;YACL,QAAQ;YACR,KAAK,EAAE,aAAa;YACpB,iBAAiB;SAClB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,4BAA4B,CACzC,KAA8B,EAC9B,OAKC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAIxB,CAAC;IACF,MAAM,aAAa,GACjB,QAAQ,CAAC,aAAa,IAAI,OAAO,CAAC,iBAAiB,IAAI,IAAI,CAAC;IAC9D,IAAI,IAAI,GACN,OAAO,QAAQ,CAAC,iBAAiB,KAAK,SAAS;QAC7C,CAAC,CAAC,QAAQ,CAAC,iBAAiB;QAC5B,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,QAAQ,GACV,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ;QACrC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC3C,CAAC,CAAE,QAAQ,CAAC,QAA0B;QACtC,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,MAAM,GACV,KAAK,CAAC,WAAW;QACjB,KAAK,CAAC,UAAU,EAAE,YAAY;QAC7B,kBAAkB,CAAC;YAClB,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACzE,CAA6B,CAAC;IAEjC,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;oBAC/B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;oBACnC,GAAG,EAAE,qBAAqB;oBAC1B,YAAY,EAAE,oBAAoB;oBAClC,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;iBAChD,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,GAAG,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACxC,yDAAyD;YACzD,sEAAsE;YACtE,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC;oBAChD,aAAa;oBACb,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI;oBACtC,YAAY,EAAE,MAAsB;iBACrC,CAAC,CAAC;gBACH,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;YACD,IAAI,QAAQ,KAAK,IAAI;gBAAE,IAAI,GAAG,IAAI,CAAC;QACrC,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACzD,MAAM,KAAK,GACT,QAAQ,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI;QAChC,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,aAAa,KAAK,IAAI;YACxC,CAAC,CAAC,aAAa,CAAC,WAAW,IAAI,UAAU;gBACvC,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,kBAAkB;YACtB,CAAC,CAAC,eAAe,CAAC;IACxB,OAAO,IAAI,sBAAsB,CAAC;QAChC,KAAK;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,aAAa;QACb,QAAQ;QACR,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,qBAAqB,GAAG;IAC5B;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,oBAAoB;QAC1B,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;YACvC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;SACnC;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KACtC;CACO,CAAC"}
1
+ {"version":3,"file":"pay.js","sourceRoot":"","sources":["../../src/x402-buyer/pay.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,10 @@ async function main() {
13
13
  const { binding } = server;
14
14
  console.error(`[metrik-opener-facilitator] listening on port ${server.boundPort} — chain ${binding.chainId}, ` +
15
15
  `factory ${binding.factory}, escrow ${binding.escrow}, token ${binding.usdc}, relayer ${binding.relayer}. ` +
16
- "Every payment settles into a StreamEscrowV2 stream via deployAndSettle; nothing is ever transferred to payTo directly. " +
16
+ (binding.upfront === undefined
17
+ ? "Upfront (minimum-charge) opener: OFF. "
18
+ : `Upfront (minimum-charge) opener factory ${binding.upfront.factory} (implementation ${binding.upfront.implementation}): ON — its non-refundable upfrontAmount is paid to the seller at settlement, only price - upfrontAmount is escrowed and refundable. `) +
19
+ "Every payment settles through the opener factory's deployAndSettle (an escrow stream for the metered part); nothing is ever transferred to payTo directly. " +
17
20
  (server.refundRelayEnabled
18
21
  ? "Gasless refund relay ON at /streams/:streamId (close needs the payer's signature; reclaim is permissionless and pays only payerOf). There is no automatic refund: nothing is sent unless an endpoint is called."
19
22
  : "Gasless refund relay OFF (METRIK_OPENER_FACILITATOR_REFUND_RELAY=0): a gateway will refuse to quote through this facilitator."));
@@ -1 +1 @@
1
- {"version":3,"file":"facilitator-entry.js","sourceRoot":"","sources":["../../src/x402-opener/facilitator-entry.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,mCAAmC,EAAE,MAAM,yBAAyB,CAAC;AAE9E;;;;;;;GAOG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,MAAM,mCAAmC,EAAE,CAAC;IAC3D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAC3B,OAAO,CAAC,KAAK,CACX,iDAAiD,MAAM,CAAC,SAAS,YAAY,OAAO,CAAC,OAAO,IAAI;QAC9F,WAAW,OAAO,CAAC,OAAO,YAAY,OAAO,CAAC,MAAM,WAAW,OAAO,CAAC,IAAI,aAAa,OAAO,CAAC,OAAO,IAAI;QAC3G,yHAAyH;QACzH,CAAC,MAAM,CAAC,kBAAkB;YACxB,CAAC,CAAC,iNAAiN;YACnN,CAAC,CAAC,+HAA+H,CAAC,CACvI,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,EAAE;QAClC,OAAO,CAAC,KAAK,CACX,+BAA+B,MAAM,2BAA2B,CACjE,CAAC;QACF,MAAM;aACH,KAAK,EAAE;aACP,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAC3B,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,6EAA6E;IAC7E,OAAO,CAAC,KAAK,CACX,KAAK,YAAY,KAAK;QACpB,CAAC,CAAC,KAAK,CAAC,OAAO;QACf,CAAC,CAAC,oDAAoD,CACzD,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"facilitator-entry.js","sourceRoot":"","sources":["../../src/x402-opener/facilitator-entry.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,mCAAmC,EAAE,MAAM,yBAAyB,CAAC;AAE9E;;;;;;;GAOG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,MAAM,mCAAmC,EAAE,CAAC;IAC3D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAC3B,OAAO,CAAC,KAAK,CACX,iDAAiD,MAAM,CAAC,SAAS,YAAY,OAAO,CAAC,OAAO,IAAI;QAC9F,WAAW,OAAO,CAAC,OAAO,YAAY,OAAO,CAAC,MAAM,WAAW,OAAO,CAAC,IAAI,aAAa,OAAO,CAAC,OAAO,IAAI;QAC3G,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS;YAC5B,CAAC,CAAC,wCAAwC;YAC1C,CAAC,CAAC,2CAA2C,OAAO,CAAC,OAAO,CAAC,OAAO,oBAAoB,OAAO,CAAC,OAAO,CAAC,cAAc,uIAAuI,CAAC;QAChQ,6JAA6J;QAC7J,CAAC,MAAM,CAAC,kBAAkB;YACxB,CAAC,CAAC,iNAAiN;YACnN,CAAC,CAAC,+HAA+H,CAAC,CACvI,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,EAAE;QAClC,OAAO,CAAC,KAAK,CACX,+BAA+B,MAAM,2BAA2B,CACjE,CAAC;QACF,MAAM;aACH,KAAK,EAAE;aACP,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAC3B,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,6EAA6E;IAC7E,OAAO,CAAC,KAAK,CACX,KAAK,YAAY,KAAK;QACpB,CAAC,CAAC,KAAK,CAAC,OAAO;QACf,CAAC,CAAC,oDAAoD,CACzD,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -59,6 +59,13 @@ export interface OpenerFacilitatorOptions {
59
59
  readonly rpcUrl: string;
60
60
  readonly relayerPrivateKey: Hex;
61
61
  readonly factoryAddress: Address;
62
+ /**
63
+ * The `X402UpfrontStreamOpenerFactory` to settle ALSO (same escrow), or
64
+ * undefined for stream openers only. See {@link resolveUpfrontFactory}.
65
+ */
66
+ readonly upfrontFactoryAddress?: Address;
67
+ /** The implementation the upfront factory must report (the registry's). */
68
+ readonly upfrontImplementation?: Address;
62
69
  readonly escrowAddress: Address;
63
70
  readonly assetAllowlist: readonly Address[];
64
71
  /** Default: a {@link RegistryListingResolver} on the public registry. */
@@ -107,6 +114,10 @@ export interface OpenerFacilitatorEnvConfig {
107
114
  readonly authToken: string;
108
115
  readonly requireAuthOnVerify: boolean;
109
116
  readonly factoryAddress: Address;
117
+ /** The upfront opener factory also settled, when enabled. */
118
+ readonly upfrontFactoryAddress?: Address;
119
+ /** Its expected implementation, when the registry records it. */
120
+ readonly upfrontImplementation?: Address;
110
121
  readonly escrowAddress: Address;
111
122
  readonly assetAllowlist: readonly Address[];
112
123
  readonly registryUrl: string;
@@ -141,6 +152,12 @@ export interface OpenerRefundRelayEnvConfig {
141
152
  * registry entry; on a network the registry does not know (or one with no
142
153
  * opener factory) each must be given explicitly.
143
154
  * - `METRIK_OPENER_FACILITATOR_FACTORY_ADDRESS` — default the network's registered factory.
155
+ * - `METRIK_OPENER_FACILITATOR_UPFRONT_FACTORY_ADDRESS` — the
156
+ * `X402UpfrontStreamOpenerFactory` (upfront "minimum charge" listings) settled
157
+ * ALONGSIDE the stream factory. Default: the registry's upfront factory for
158
+ * the configured escrow, when it records one (Base Sepolia: bound to
159
+ * StreamEscrowV3); none otherwise. `off` disables it. It must be bound to the
160
+ * same escrow and token, or the facilitator refuses to start.
144
161
  * - `METRIK_OPENER_FACILITATOR_ESCROW_ADDRESS` — default the network's registered `StreamEscrowV2`.
145
162
  * - `METRIK_OPENER_FACILITATOR_ASSETS` — comma-separated allowlist; default the network's USDC.
146
163
  * - `METRIK_OPENER_FACILITATOR_REGISTRY_URL` — default the public listings registry.
@@ -171,6 +188,18 @@ export interface OpenerRefundRelayEnvConfig {
171
188
  * right-most `X-Forwarded-For` hop; default off. Enable only behind a proxy.
172
189
  */
173
190
  export declare function parseOpenerFacilitatorEnvConfig(env?: NodeJS.ProcessEnv): OpenerFacilitatorEnvConfig | undefined;
191
+ /**
192
+ * The upfront opener factory the facilitator also settles, from
193
+ * `METRIK_OPENER_FACILITATOR_UPFRONT_FACTORY_ADDRESS`: unset = the network
194
+ * registry's upfront factory OF THE CONFIGURED ESCROW'S deployment (so a
195
+ * facilitator pinned to a legacy escrow never picks up a factory bound to
196
+ * another one); `off`/`none`/`0`/`false` = disabled; an address = that factory
197
+ * (its implementation is pinned only when the registry records it).
198
+ */
199
+ export declare function resolveUpfrontFactory(raw: string | undefined, network: Network, escrowAddress: Address): {
200
+ readonly upfrontFactoryAddress: Address;
201
+ readonly upfrontImplementation?: Address;
202
+ } | undefined;
174
203
  /** Builds and starts the facilitator service entirely from the environment. */
175
204
  export declare function startOpenerFacilitatorServerFromEnv(env?: NodeJS.ProcessEnv): Promise<OpenerFacilitatorServer & {
176
205
  readonly boundPort: number;
@@ -1 +1 @@
1
- {"version":3,"file":"facilitator-server.d.ts","sourceRoot":"","sources":["../../src/x402-opener/facilitator-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"facilitator-server.d.ts","sourceRoot":"","sources":["../../src/x402-opener/facilitator-server.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { timingSafeEqual, createHash } from "node:crypto";
2
2
  import { createServer, } from "node:http";
3
- import { networkForCaip2 } from "@absol-labs/sdk";
3
+ import { networkForCaip2, networkOpenerFactories } from "@absol-labs/sdk";
4
4
  import { x402Facilitator } from "@x402/core/facilitator";
5
5
  import { createPublicClient, createWalletClient, getAddress, http, isAddress, isHex, } from "viem";
6
6
  import { privateKeyToAccount } from "viem/accounts";
@@ -348,6 +348,12 @@ export async function buildOpenerFacilitator(options) {
348
348
  advertiseRefundRelay: options.refundRelay !== undefined,
349
349
  network: options.network,
350
350
  factoryAddress: options.factoryAddress,
351
+ ...(options.upfrontFactoryAddress === undefined
352
+ ? {}
353
+ : { upfrontFactoryAddress: options.upfrontFactoryAddress }),
354
+ ...(options.upfrontImplementation === undefined
355
+ ? {}
356
+ : { upfrontImplementation: options.upfrontImplementation }),
351
357
  escrowAddress: options.escrowAddress,
352
358
  assetAllowlist: options.assetAllowlist,
353
359
  publicClient,
@@ -371,6 +377,9 @@ export async function buildOpenerFacilitator(options) {
371
377
  refundRelay = new OpenerRefundRelay({
372
378
  network: options.network,
373
379
  factoryAddress: options.factoryAddress,
380
+ ...(options.upfrontFactoryAddress === undefined
381
+ ? {}
382
+ : { upfrontFactoryAddress: options.upfrontFactoryAddress }),
374
383
  escrowAddress: options.escrowAddress,
375
384
  oracleUrl: relay.oracleUrl,
376
385
  publicClient,
@@ -420,6 +429,12 @@ export async function buildOpenerFacilitator(options) {
420
429
  * registry entry; on a network the registry does not know (or one with no
421
430
  * opener factory) each must be given explicitly.
422
431
  * - `METRIK_OPENER_FACILITATOR_FACTORY_ADDRESS` — default the network's registered factory.
432
+ * - `METRIK_OPENER_FACILITATOR_UPFRONT_FACTORY_ADDRESS` — the
433
+ * `X402UpfrontStreamOpenerFactory` (upfront "minimum charge" listings) settled
434
+ * ALONGSIDE the stream factory. Default: the registry's upfront factory for
435
+ * the configured escrow, when it records one (Base Sepolia: bound to
436
+ * StreamEscrowV3); none otherwise. `off` disables it. It must be bound to the
437
+ * same escrow and token, or the facilitator refuses to start.
423
438
  * - `METRIK_OPENER_FACILITATOR_ESCROW_ADDRESS` — default the network's registered `StreamEscrowV2`.
424
439
  * - `METRIK_OPENER_FACILITATOR_ASSETS` — comma-separated allowlist; default the network's USDC.
425
440
  * - `METRIK_OPENER_FACILITATOR_REGISTRY_URL` — default the public listings registry.
@@ -495,6 +510,7 @@ export function parseOpenerFacilitatorEnvConfig(env = process.env) {
495
510
  else {
496
511
  escrowAddress = requireAddress(env, "METRIK_OPENER_FACILITATOR_ESCROW_ADDRESS");
497
512
  }
513
+ const upfront = resolveUpfrontFactory(env.METRIK_OPENER_FACILITATOR_UPFRONT_FACTORY_ADDRESS, network, escrowAddress);
498
514
  const assetsRaw = env.METRIK_OPENER_FACILITATOR_ASSETS?.trim();
499
515
  let assetAllowlist;
500
516
  if (assetsRaw === undefined || assetsRaw.length === 0) {
@@ -542,6 +558,7 @@ export function parseOpenerFacilitatorEnvConfig(env = process.env) {
542
558
  minAmount: BigInt(positiveInt(env, "METRIK_OPENER_FACILITATOR_MIN_AMOUNT", 10_000)),
543
559
  settleRateLimitPerMinute: positiveInt(env, "METRIK_OPENER_FACILITATOR_SETTLE_RATE_LIMIT_PER_MINUTE", DEFAULT_SETTLE_RATE_LIMIT_PER_MINUTE),
544
560
  factoryAddress,
561
+ ...(upfront === undefined ? {} : upfront),
545
562
  escrowAddress,
546
563
  assetAllowlist,
547
564
  registryUrl,
@@ -549,6 +566,49 @@ export function parseOpenerFacilitatorEnvConfig(env = process.env) {
549
566
  receiptTimeoutMs: receiptTimeoutSeconds * 1000,
550
567
  };
551
568
  }
569
+ /**
570
+ * The upfront opener factory the facilitator also settles, from
571
+ * `METRIK_OPENER_FACILITATOR_UPFRONT_FACTORY_ADDRESS`: unset = the network
572
+ * registry's upfront factory OF THE CONFIGURED ESCROW'S deployment (so a
573
+ * facilitator pinned to a legacy escrow never picks up a factory bound to
574
+ * another one); `off`/`none`/`0`/`false` = disabled; an address = that factory
575
+ * (its implementation is pinned only when the registry records it).
576
+ */
577
+ export function resolveUpfrontFactory(raw, network, escrowAddress) {
578
+ const value = raw?.trim() ?? "";
579
+ const registered = networkForCaip2(network);
580
+ const forEscrow = registered === undefined
581
+ ? undefined
582
+ : networkOpenerFactories(registered).find((entry) => entry.kind === "upfront" &&
583
+ getAddress(entry.deployment.escrow.address) ===
584
+ getAddress(escrowAddress));
585
+ if (value.length === 0) {
586
+ if (forEscrow === undefined)
587
+ return undefined;
588
+ return {
589
+ upfrontFactoryAddress: getAddress(forEscrow.address),
590
+ ...(forEscrow.implementation === null
591
+ ? {}
592
+ : { upfrontImplementation: getAddress(forEscrow.implementation) }),
593
+ };
594
+ }
595
+ if (["off", "none", "0", "false", "no"].includes(value.toLowerCase())) {
596
+ return undefined;
597
+ }
598
+ if (!isAddress(value)) {
599
+ throw new Error("METRIK_OPENER_FACILITATOR_UPFRONT_FACTORY_ADDRESS must be an EVM address (or off)");
600
+ }
601
+ const known = registered === undefined
602
+ ? undefined
603
+ : networkOpenerFactories(registered).find((entry) => entry.kind === "upfront" &&
604
+ getAddress(entry.address) === getAddress(value));
605
+ return {
606
+ upfrontFactoryAddress: getAddress(value),
607
+ ...(known?.implementation == null
608
+ ? {}
609
+ : { upfrontImplementation: getAddress(known.implementation) }),
610
+ };
611
+ }
552
612
  function parseRefundRelayEnv(env, network) {
553
613
  const raw = env.METRIK_OPENER_FACILITATOR_REFUND_RELAY?.trim() ?? "";
554
614
  if (raw.length > 0 &&
@@ -608,6 +668,12 @@ export async function startOpenerFacilitatorServerFromEnv(env = process.env) {
608
668
  rpcUrl: config.rpcUrl,
609
669
  relayerPrivateKey: config.relayerPrivateKey,
610
670
  factoryAddress: config.factoryAddress,
671
+ ...(config.upfrontFactoryAddress === undefined
672
+ ? {}
673
+ : { upfrontFactoryAddress: config.upfrontFactoryAddress }),
674
+ ...(config.upfrontImplementation === undefined
675
+ ? {}
676
+ : { upfrontImplementation: config.upfrontImplementation }),
611
677
  escrowAddress: config.escrowAddress,
612
678
  assetAllowlist: config.assetAllowlist,
613
679
  registryUrl: config.registryUrl,