From fedfd9ae95bfc89677a2e2d6c46cba1d69ec4a80 Mon Sep 17 00:00:00 2001 From: Matias Date: Tue, 24 Feb 2026 12:31:41 -0300 Subject: [PATCH 1/2] f: update package-lock.json --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 32e79c6..75d4ce4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@blockrun/clawrouter", - "version": "0.10.4", + "version": "0.10.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@blockrun/clawrouter", - "version": "0.10.4", + "version": "0.10.6", "license": "MIT", "dependencies": { "viem": "^2.39.3" From 0f841358fab32a083f6b327a799d23033ff0f63f Mon Sep 17 00:00:00 2001 From: Matias Date: Tue, 24 Feb 2026 17:04:34 -0300 Subject: [PATCH 2/2] feat: add custom paymentFetch option to proxy --- src/proxy.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/proxy.ts b/src/proxy.ts index 4f28248..6654d63 100644 --- a/src/proxy.ts +++ b/src/proxy.ts @@ -814,6 +814,18 @@ export type ProxyOptions = { /** Port to listen on (default: 8402) */ port?: number; routingConfig?: Partial; + /** + * Custom payment-enabled fetch function. When provided, replaces the built-in + * x402 payment handler. Use this to integrate alternative payment systems + * (e.g., spend limits, budget enforcement, or custom payment flows). + * + * If not provided, uses built-in createPaymentFetch with walletKey. + */ + paymentFetch?: ( + input: RequestInfo | URL, + init?: RequestInit, + preAuth?: PreAuthParams, + ) => Promise; /** Request timeout in ms (default: 180000 = 3 minutes). Covers on-chain tx + LLM response. */ requestTimeoutMs?: number; /** Skip balance checks (for testing only). Default: false */ @@ -1069,9 +1081,10 @@ export async function startProxy(options: ProxyOptions): Promise { }; } - // Create x402 payment-enabled fetch from wallet private key + // Create x402 payment-enabled fetch from wallet private key (or use custom paymentFetch) const account = privateKeyToAccount(options.walletKey as `0x${string}`); - const { fetch: payFetch } = createPaymentFetch(options.walletKey as `0x${string}`); + const payFetch = + options.paymentFetch ?? createPaymentFetch(options.walletKey as `0x${string}`).fetch; // Create balance monitor for pre-request checks const balanceMonitor = new BalanceMonitor(account.address);