httpcat-cli 0.2.13 → 0.3.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 (63) hide show
  1. package/README.md +9 -9
  2. package/bun.lock +13 -1308
  3. package/dist/agent/tools.d.ts.map +1 -1
  4. package/dist/agent/tools.js +87 -5
  5. package/dist/agent/tools.js.map +1 -1
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +403 -46
  8. package/dist/client.js.map +1 -1
  9. package/dist/commands/account.d.ts.map +1 -1
  10. package/dist/commands/account.js +1 -0
  11. package/dist/commands/account.js.map +1 -1
  12. package/dist/commands/balances.d.ts.map +1 -1
  13. package/dist/commands/balances.js +39 -14
  14. package/dist/commands/balances.js.map +1 -1
  15. package/dist/commands/buy.d.ts.map +1 -1
  16. package/dist/commands/buy.js +29 -15
  17. package/dist/commands/buy.js.map +1 -1
  18. package/dist/commands/chat.d.ts.map +1 -1
  19. package/dist/commands/chat.js +34 -21
  20. package/dist/commands/chat.js.map +1 -1
  21. package/dist/commands/info.d.ts.map +1 -1
  22. package/dist/commands/info.js +12 -9
  23. package/dist/commands/info.js.map +1 -1
  24. package/dist/commands/positions.js +4 -4
  25. package/dist/commands/positions.js.map +1 -1
  26. package/dist/commands/sell.d.ts.map +1 -1
  27. package/dist/commands/sell.js +18 -11
  28. package/dist/commands/sell.js.map +1 -1
  29. package/dist/config.d.ts.map +1 -1
  30. package/dist/config.js +77 -10
  31. package/dist/config.js.map +1 -1
  32. package/dist/index.js +354 -118
  33. package/dist/index.js.map +1 -1
  34. package/dist/interactive/art.d.ts.map +1 -1
  35. package/dist/interactive/art.js +38 -0
  36. package/dist/interactive/art.js.map +1 -1
  37. package/dist/interactive/shell.d.ts.map +1 -1
  38. package/dist/interactive/shell.js +511 -111
  39. package/dist/interactive/shell.js.map +1 -1
  40. package/dist/mcp/chat-state.d.ts.map +1 -1
  41. package/dist/mcp/chat-state.js +2 -1
  42. package/dist/mcp/chat-state.js.map +1 -1
  43. package/dist/mcp/server.js +1 -1
  44. package/dist/mcp/tools.d.ts.map +1 -1
  45. package/dist/mcp/tools.js +108 -1
  46. package/dist/mcp/tools.js.map +1 -1
  47. package/dist/mcp/types.d.ts.map +1 -1
  48. package/dist/utils/constants.d.ts.map +1 -1
  49. package/dist/utils/constants.js +44 -2
  50. package/dist/utils/constants.js.map +1 -1
  51. package/dist/utils/errors.d.ts.map +1 -1
  52. package/dist/utils/errors.js +3 -3
  53. package/dist/utils/errors.js.map +1 -1
  54. package/dist/utils/privateKeyPrompt.d.ts.map +1 -1
  55. package/dist/utils/privateKeyPrompt.js +31 -7
  56. package/dist/utils/privateKeyPrompt.js.map +1 -1
  57. package/dist/utils/status.d.ts.map +1 -0
  58. package/dist/utils/status.js +67 -0
  59. package/dist/utils/status.js.map +1 -0
  60. package/dist/utils/token-resolver.d.ts.map +1 -1
  61. package/dist/utils/token-resolver.js +9 -0
  62. package/dist/utils/token-resolver.js.map +1 -1
  63. package/package.json +5 -4
package/dist/client.js CHANGED
@@ -1,28 +1,261 @@
1
- import { wrapFetchWithPayment, createSigner } from "x402-fetch";
1
+ import { wrapFetchWithPayment } from "@x402/fetch";
2
+ import { x402Client } from "@x402/core/client";
3
+ import { ExactEvmScheme } from "@x402/evm";
4
+ import { privateKeyToAccount } from "viem/accounts";
5
+ import { randomBytes } from "crypto";
2
6
  import { config } from "./config.js";
7
+ import { getUSDCAddress } from "./utils/constants.js";
3
8
  export class HttpcatClient {
4
9
  fetchWithPayment;
5
10
  agentUrl;
6
11
  network;
7
- constructor(fetchWithPayment, agentUrl, network) {
12
+ signer;
13
+ networkCaip2;
14
+ constructor(fetchWithPayment, agentUrl, network, signer, networkCaip2) {
8
15
  this.fetchWithPayment = fetchWithPayment;
9
16
  this.agentUrl = agentUrl;
10
17
  this.network = network;
18
+ this.signer = signer;
19
+ this.networkCaip2 = networkCaip2;
11
20
  }
12
21
  static async create(privateKey) {
13
22
  const pk = privateKey || config.getPrivateKey();
14
23
  const network = config.get("network");
15
24
  const agentUrl = config.getAgentUrl(); // Use getAgentUrl() to respect environment
16
25
  const maxPayment = config.get("defaultMaxPayment");
17
- // Create signer using x402-fetch's createSigner
18
- if (network !== "base-sepolia") {
19
- throw new Error(`Unsupported network: ${network}. Only base-sepolia (testnet) is currently supported`);
26
+ // Validate network (support both V1 and V2 formats during migration)
27
+ const isBaseSepolia = network === "base-sepolia" || network === "eip155:84532";
28
+ if (!isBaseSepolia) {
29
+ throw new Error(`Unsupported network: ${network}. Only base-sepolia (eip155:84532) is currently supported`);
30
+ }
31
+ // Convert network to CAIP-2 format if needed
32
+ const networkCaip2 = network === "base-sepolia" ? "eip155:84532" : network;
33
+ // Create signer using viem
34
+ const signer = privateKeyToAccount(pk);
35
+ if (process.env.DEBUG) {
36
+ console.log(`[HttpcatClient.create] Network: ${network}`);
37
+ console.log(`[HttpcatClient.create] Network CAIP-2: ${networkCaip2}`);
38
+ console.log(`[HttpcatClient.create] Max payment: ${maxPayment} USDC`);
39
+ console.log(`[HttpcatClient.create] Signer address: ${await signer.address}`);
40
+ }
41
+ // Create x402Client and register EVM scheme (V2 pattern)
42
+ // According to @x402/fetch README: https://github.com/coinbase/x402/blob/main/typescript/packages/http/fetch/README.md
43
+ // We should use ExactEvmScheme directly and register it with the client
44
+ const evmScheme = new ExactEvmScheme(signer);
45
+ const client = new x402Client();
46
+ // TypeScript type definitions may be incomplete, but the runtime API supports register()
47
+ client.register(networkCaip2, evmScheme);
48
+ if (process.env.DEBUG) {
49
+ console.log(`[HttpcatClient.create] x402Client created and EVM scheme registered for network: ${networkCaip2}`);
20
50
  }
21
- const signer = await createSigner(network, pk);
22
51
  // Wrap fetch with payment handling
23
- const maxValue = BigInt(parseFloat(maxPayment) * 10 ** 6); // Convert to USDC units (6 decimals)
24
- const fetchWithPayment = wrapFetchWithPayment(fetch, signer, maxValue);
25
- return new HttpcatClient(fetchWithPayment, agentUrl, network);
52
+ // According to README, wrapFetchWithPayment only takes 2 parameters: (fetch, client)
53
+ const fetchWithPayment = wrapFetchWithPayment(fetch, client);
54
+ if (process.env.DEBUG) {
55
+ console.log(`[HttpcatClient.create] fetch wrapped with payment handling`);
56
+ }
57
+ return new HttpcatClient(fetchWithPayment, agentUrl, network, signer, networkCaip2);
58
+ }
59
+ /**
60
+ * Handle 402 Payment Required response and retry with payment signature
61
+ * This is a fallback implementation when wrapFetchWithPayment doesn't work
62
+ */
63
+ async handle402AndRetry(response, url, originalOptions) {
64
+ if (process.env.DEBUG) {
65
+ console.log(`[HttpcatClient.handle402AndRetry] Received 402 Payment Required - processing payment...`);
66
+ }
67
+ // Parse payment requirements from 402 response
68
+ const responseText = await response.text();
69
+ let paymentInfo;
70
+ try {
71
+ paymentInfo = JSON.parse(responseText);
72
+ }
73
+ catch (e) {
74
+ throw new Error(`Failed to parse 402 response: ${e instanceof Error ? e.message : "Unknown error"}`);
75
+ }
76
+ if (!paymentInfo.accepts || !paymentInfo.accepts[0]) {
77
+ throw new Error("No payment requirements in 402 response");
78
+ }
79
+ const requirement = paymentInfo.accepts[0];
80
+ // Extract payment details from requirement
81
+ const network = requirement.network; // Already in CAIP-2 format from V2 server
82
+ const maxAmount = requirement.maxAmountRequired; // Hex string
83
+ const payTo = requirement.payTo; // Platform address
84
+ const asset = requirement.asset; // USDC address
85
+ const resource = requirement.resource; // Full resource URL
86
+ if (process.env.DEBUG) {
87
+ console.log(`[HttpcatClient.handle402AndRetry] Payment requirements:`, {
88
+ network,
89
+ maxAmount,
90
+ payTo,
91
+ asset,
92
+ resource,
93
+ });
94
+ }
95
+ // Create payment signature
96
+ const paymentHeader = await this.createPaymentSignature({
97
+ network,
98
+ maxAmount,
99
+ payTo,
100
+ asset,
101
+ resource,
102
+ });
103
+ if (process.env.DEBUG) {
104
+ console.log(`[HttpcatClient.handle402AndRetry] Payment signature created, retrying request...`);
105
+ }
106
+ // Retry request with payment header
107
+ // Use raw fetch (not fetchWithPayment) to avoid any caching or reuse of payment state
108
+ // Each request needs a fresh payment authorization
109
+ const retryOptions = {
110
+ ...originalOptions,
111
+ headers: {
112
+ ...originalOptions.headers,
113
+ "PAYMENT-SIGNATURE": paymentHeader,
114
+ },
115
+ };
116
+ if (process.env.DEBUG) {
117
+ console.log(`[HttpcatClient.handle402AndRetry] Retrying with PAYMENT-SIGNATURE header`);
118
+ }
119
+ // Use raw fetch for retry to ensure we don't reuse any cached payment state
120
+ // Add a small delay before retrying to give the facilitator time to process
121
+ // any previous settlements and avoid invalid_transaction_state errors
122
+ await new Promise((resolve) => setTimeout(resolve, 500)); // 500ms delay
123
+ const retryResponse = await fetch(url, retryOptions);
124
+ if (process.env.DEBUG) {
125
+ console.log(`[HttpcatClient.handle402AndRetry] Retry response status: ${retryResponse.status}`);
126
+ }
127
+ // If still 402 or any other error, throw HttpcatError so retry logic can catch it
128
+ if (!retryResponse.ok) {
129
+ const errorBody = (await retryResponse.json().catch(() => ({})));
130
+ if (process.env.DEBUG) {
131
+ console.log(`[HttpcatClient.handle402AndRetry] Payment retry failed:`, JSON.stringify(errorBody, null, 2));
132
+ }
133
+ // Properly serialize error message
134
+ let errorMessage = "Payment failed";
135
+ if (errorBody?.error) {
136
+ if (typeof errorBody.error === "string") {
137
+ errorMessage = `Payment failed: ${errorBody.error}`;
138
+ }
139
+ else if (errorBody.error?.message) {
140
+ errorMessage = `Payment failed: ${errorBody.error.message}`;
141
+ }
142
+ else {
143
+ errorMessage = `Payment failed: ${JSON.stringify(errorBody.error)}`;
144
+ }
145
+ }
146
+ else if (errorBody?.message) {
147
+ errorMessage = `Payment failed: ${errorBody.message}`;
148
+ }
149
+ // Throw as HttpcatError with response status so retry logic can catch it
150
+ // If it's a 402, the retry logic will retry with a fresh authorization
151
+ throw new HttpcatError(errorMessage, retryResponse.status, errorBody);
152
+ }
153
+ if (process.env.DEBUG) {
154
+ console.log(`[HttpcatClient.handle402AndRetry] Payment successful, request completed`);
155
+ }
156
+ return retryResponse;
157
+ }
158
+ /**
159
+ * Create payment signature for x402 V2 protocol
160
+ */
161
+ async createPaymentSignature(paymentInfo) {
162
+ // Network is already in CAIP-2 format from server
163
+ const networkCaip2 = paymentInfo.network;
164
+ // Determine chain ID and USDC address from network
165
+ let chainId;
166
+ const usdcAddress = getUSDCAddress(networkCaip2);
167
+ if (networkCaip2 === "eip155:84532") {
168
+ chainId = 84532;
169
+ }
170
+ else if (networkCaip2 === "eip155:8453") {
171
+ chainId = 8453;
172
+ }
173
+ else {
174
+ throw new Error(`Unsupported network: ${networkCaip2}`);
175
+ }
176
+ // Create EIP-3009 authorization
177
+ const validAfter = Math.floor(Date.now() / 1000);
178
+ const validBefore = validAfter + 300; // 5 minutes
179
+ // Create random 32-byte nonce as hex string (bytes32 for EIP-712)
180
+ // randomBytes(32) gives 32 bytes, which is 64 hex characters
181
+ // IMPORTANT: Each payment authorization MUST have a unique nonce
182
+ // EIP-3009 authorizations are single-use - reusing a nonce will cause invalid_transaction_state
183
+ const nonceBytes = randomBytes(32);
184
+ const nonceHex = nonceBytes.toString("hex");
185
+ // Ensure exactly 64 hex characters (32 bytes)
186
+ const nonce = `0x${nonceHex.padStart(64, "0")}`;
187
+ if (process.env.DEBUG) {
188
+ console.log(`[HttpcatClient.createPaymentSignature] Generated fresh nonce: ${nonce}`);
189
+ }
190
+ const fromAddress = await this.signer.address;
191
+ // Keep values as strings/hex strings as received from server
192
+ // paymentInfo.maxAmount is already a hex string like "0xc544"
193
+ // For EIP-712 signing, viem accepts BigInt for uint256 types
194
+ const authorization = {
195
+ from: fromAddress,
196
+ to: paymentInfo.payTo,
197
+ value: paymentInfo.maxAmount, // Keep as hex string
198
+ validAfter: validAfter.toString(),
199
+ validBefore: validBefore.toString(),
200
+ nonce: nonce,
201
+ };
202
+ // Sign the authorization using EIP-712
203
+ const domain = {
204
+ name: "USDC",
205
+ version: "2",
206
+ chainId: chainId,
207
+ verifyingContract: usdcAddress,
208
+ };
209
+ const types = {
210
+ TransferWithAuthorization: [
211
+ { name: "from", type: "address" },
212
+ { name: "to", type: "address" },
213
+ { name: "value", type: "uint256" },
214
+ { name: "validAfter", type: "uint256" },
215
+ { name: "validBefore", type: "uint256" },
216
+ { name: "nonce", type: "bytes32" },
217
+ ],
218
+ };
219
+ if (process.env.DEBUG) {
220
+ console.log(`[HttpcatClient.createPaymentSignature] Signing with:`, {
221
+ domain,
222
+ message: authorization,
223
+ });
224
+ }
225
+ // For viem signTypedData, uint256 values need to be BigInt
226
+ // Convert hex strings to BigInt for signing
227
+ const signature = await this.signer.signTypedData({
228
+ domain,
229
+ types,
230
+ primaryType: "TransferWithAuthorization",
231
+ message: {
232
+ from: authorization.from,
233
+ to: authorization.to,
234
+ value: BigInt(authorization.value), // Convert hex string to BigInt for signing
235
+ validAfter: BigInt(authorization.validAfter),
236
+ validBefore: BigInt(authorization.validBefore),
237
+ nonce: authorization.nonce,
238
+ },
239
+ });
240
+ // Build x402 V2 payment header
241
+ // Keep original string values in the payload (not converted)
242
+ const paymentPayload = {
243
+ x402Version: 2, // V2 version
244
+ scheme: "exact",
245
+ network: networkCaip2, // CAIP-2 format
246
+ payload: {
247
+ signature: signature,
248
+ authorization: {
249
+ from: authorization.from,
250
+ to: authorization.to,
251
+ value: authorization.value, // Keep as original hex string
252
+ validAfter: authorization.validAfter, // Keep as string
253
+ validBefore: authorization.validBefore, // Keep as string
254
+ nonce: authorization.nonce, // Already a hex string
255
+ },
256
+ },
257
+ };
258
+ return Buffer.from(JSON.stringify(paymentPayload)).toString("base64");
26
259
  }
27
260
  async invoke(entrypoint, input) {
28
261
  const endpoint = `${this.agentUrl}/entrypoints/${entrypoint}/invoke`;
@@ -31,7 +264,7 @@ export class HttpcatClient {
31
264
  console.log(`[HttpcatClient.invoke] Entrypoint: ${entrypoint}`);
32
265
  console.log(`[HttpcatClient.invoke] Input object:`, JSON.stringify(input, null, 2));
33
266
  console.log(`[HttpcatClient.invoke] Input type:`, typeof input);
34
- if (input && typeof input === 'object') {
267
+ if (input && typeof input === "object") {
35
268
  console.log(`[HttpcatClient.invoke] Input keys:`, Object.keys(input));
36
269
  console.log(`[HttpcatClient.invoke] Input.tokenId:`, input.tokenId);
37
270
  }
@@ -40,29 +273,87 @@ export class HttpcatClient {
40
273
  try {
41
274
  const requestBody = { input };
42
275
  const requestBodyString = JSON.stringify(requestBody);
43
- if (process.env.DEBUG) {
44
- console.log(`[HttpcatClient.invoke] Request body:`, requestBodyString);
45
- }
46
- response = await this.fetchWithPayment(endpoint, {
276
+ const requestOptions = {
47
277
  method: "POST",
48
278
  headers: {
49
279
  "Content-Type": "application/json",
50
280
  },
51
281
  body: requestBodyString,
52
- });
282
+ };
283
+ if (process.env.DEBUG) {
284
+ console.log(`[HttpcatClient.invoke] Request URL:`, endpoint);
285
+ console.log(`[HttpcatClient.invoke] Request method:`, requestOptions.method);
286
+ console.log(`[HttpcatClient.invoke] Request headers:`, JSON.stringify(requestOptions.headers, null, 2));
287
+ console.log(`[HttpcatClient.invoke] Request body:`, requestBodyString);
288
+ }
289
+ // Make the initial request - use raw fetch first to detect 402s
290
+ // This ensures we always get a fresh 402 response and can handle it manually
291
+ // with a guaranteed fresh nonce, avoiding any caching issues with wrapFetchWithPayment
292
+ if (process.env.DEBUG) {
293
+ console.log(`[HttpcatClient.invoke] Making initial request to detect 402...`);
294
+ }
295
+ // Make initial request with raw fetch to detect 402
296
+ let initialResponse = await fetch(endpoint, requestOptions);
297
+ // If we get a 402, handle it manually with a fresh authorization
298
+ if (initialResponse.status === 402) {
299
+ if (process.env.DEBUG) {
300
+ console.log(`[HttpcatClient.invoke] 402 detected - handling manually with fresh authorization`);
301
+ }
302
+ response = await this.handle402AndRetry(initialResponse, endpoint, requestOptions);
303
+ }
304
+ else {
305
+ // Not a 402, use the response as-is
306
+ response = initialResponse;
307
+ }
308
+ if (process.env.DEBUG) {
309
+ console.log(`[HttpcatClient.invoke] Response received - status:`, response.status);
310
+ console.log(`[HttpcatClient.invoke] Response headers:`, Object.fromEntries(response.headers.entries()));
311
+ // Check for payment-related headers
312
+ const paymentSig = response.headers.get("PAYMENT-SIGNATURE");
313
+ const paymentResp = response.headers.get("PAYMENT-RESPONSE");
314
+ if (paymentSig) {
315
+ console.log(`[HttpcatClient.invoke] PAYMENT-SIGNATURE header present in response`);
316
+ }
317
+ if (paymentResp) {
318
+ console.log(`[HttpcatClient.invoke] PAYMENT-RESPONSE header:`, paymentResp);
319
+ }
320
+ }
321
+ // If we got a 402 and wrapFetchWithPayment didn't handle it, handle it manually
322
+ if (response.status === 402) {
323
+ if (process.env.DEBUG) {
324
+ console.log(`[HttpcatClient.invoke] ⚠️ 402 response received - wrapFetchWithPayment didn't handle it, using manual fallback`);
325
+ }
326
+ // Clone the response before consuming it
327
+ const clonedResponse = response.clone();
328
+ response = await this.handle402AndRetry(clonedResponse, endpoint, requestOptions);
329
+ }
53
330
  }
54
331
  catch (error) {
55
332
  // Handle network errors (fetch failed, connection refused, DNS errors, etc.)
56
333
  const errorMessage = error instanceof Error ? error.message : String(error);
57
334
  const errorStack = error instanceof Error ? error.stack : undefined;
58
- const isNetworkError = errorMessage.includes('fetch failed') ||
59
- errorMessage.includes('ECONNREFUSED') ||
60
- errorMessage.includes('ENOTFOUND') ||
61
- errorMessage.includes('ETIMEDOUT') ||
62
- errorMessage.includes('network') ||
63
- errorMessage.includes('connection') ||
64
- errorMessage.includes('getaddrinfo') ||
65
- errorMessage.includes('socket hang up');
335
+ // Check if this is a payment parsing error from @x402/fetch
336
+ // This happens when the library can't parse the 402 response format
337
+ // We should treat this as a 402 error so retry logic can handle it
338
+ if (errorMessage.includes("Failed to parse payment requirements") ||
339
+ errorMessage.includes("Invalid payment required response") ||
340
+ errorMessage.includes("payment required")) {
341
+ throw new HttpcatError(`Payment required: ${errorMessage}`, 402, {
342
+ endpoint,
343
+ method: "POST",
344
+ originalError: errorMessage,
345
+ agentUrl: this.agentUrl,
346
+ suggestion: "The server requires payment. The x402 library will automatically handle payment on retry.",
347
+ });
348
+ }
349
+ const isNetworkError = errorMessage.includes("fetch failed") ||
350
+ errorMessage.includes("ECONNREFUSED") ||
351
+ errorMessage.includes("ENOTFOUND") ||
352
+ errorMessage.includes("ETIMEDOUT") ||
353
+ errorMessage.includes("network") ||
354
+ errorMessage.includes("connection") ||
355
+ errorMessage.includes("getaddrinfo") ||
356
+ errorMessage.includes("socket hang up");
66
357
  // Log full error details for debugging
67
358
  const errorDetails = {
68
359
  endpoint,
@@ -74,30 +365,66 @@ export class HttpcatClient {
74
365
  errorDetails.stack = errorStack;
75
366
  }
76
367
  // Check if it's a known error type
77
- if (error instanceof TypeError && errorMessage.includes('fetch')) {
78
- errorDetails.errorType = 'TypeError';
79
- errorDetails.suggestion = "This might be a Node.js fetch compatibility issue. Try updating Node.js or check x402-fetch configuration.";
368
+ if (error instanceof TypeError && errorMessage.includes("fetch")) {
369
+ errorDetails.errorType = "TypeError";
370
+ errorDetails.suggestion =
371
+ "This might be a Node.js fetch compatibility issue. Try updating Node.js or check @x402/fetch configuration.";
80
372
  }
81
373
  else if (isNetworkError) {
82
- errorDetails.suggestion = "Check if the agent is running and the URL is correct. Try: httpcat health";
374
+ errorDetails.suggestion =
375
+ "Check if the agent is running and the URL is correct. Try: httpcat health";
83
376
  }
84
377
  else {
85
- errorDetails.suggestion = "Check the error details above for more information.";
378
+ errorDetails.suggestion =
379
+ "Check the error details above for more information.";
86
380
  }
87
- if (isNetworkError || (error instanceof TypeError && errorMessage.includes('fetch'))) {
381
+ if (isNetworkError ||
382
+ (error instanceof TypeError && errorMessage.includes("fetch"))) {
88
383
  throw new HttpcatError(`Network error: Unable to connect to agent at ${this.agentUrl}. Error: ${errorMessage}`, 0, // 0 indicates network error (not HTTP status)
89
384
  errorDetails);
90
385
  }
91
386
  // Re-throw other errors as-is
92
387
  throw error;
93
388
  }
94
- // Extract payment info from headers
95
- const paymentHeader = response.headers.get("x-payment-response");
389
+ // Extract payment info from headers (V2 uses PAYMENT-RESPONSE header)
390
+ const paymentHeader = response.headers.get("PAYMENT-RESPONSE") ||
391
+ response.headers.get("x-payment-response");
96
392
  const payment = paymentHeader
97
393
  ? { txHash: paymentHeader }
98
394
  : undefined;
99
395
  // Parse response
100
396
  const responseText = await response.text();
397
+ if (process.env.DEBUG) {
398
+ console.log(`[HttpcatClient.invoke] Response body (first 500 chars):`, responseText.substring(0, 500));
399
+ if (response.status === 402) {
400
+ console.log(`[HttpcatClient.invoke] 402 Payment Required response detected`);
401
+ try {
402
+ const parsed = JSON.parse(responseText);
403
+ console.log(`[HttpcatClient.invoke] 402 response body:`, JSON.stringify(parsed, null, 2));
404
+ }
405
+ catch (e) {
406
+ console.log(`[HttpcatClient.invoke] 402 response is not JSON`);
407
+ }
408
+ }
409
+ }
410
+ // Special handling for 402 responses: Check if body contains successful output
411
+ // This handles a framework bug where 402 is returned even after successful processing
412
+ if (!response.ok && response.status === 402) {
413
+ try {
414
+ const parsed = JSON.parse(responseText);
415
+ // If response has output field, treat as success despite 402 status
416
+ if (parsed.output && typeof parsed.output === "object") {
417
+ console.warn(`[HttpcatClient] Received 402 status but response contains successful output. This is a known framework issue.`);
418
+ return {
419
+ data: parsed.output,
420
+ payment,
421
+ };
422
+ }
423
+ }
424
+ catch {
425
+ // Not JSON or no output - will fall through to error handling below
426
+ }
427
+ }
101
428
  // Check if response is OK first
102
429
  if (!response.ok) {
103
430
  // Try to parse as JSON for structured error, otherwise use plain text
@@ -107,24 +434,26 @@ export class HttpcatClient {
107
434
  errorDetails = JSON.parse(responseText);
108
435
  // Extract message from nested error structures
109
436
  // Handle various error formats
110
- if (typeof errorDetails === 'string') {
437
+ if (typeof errorDetails === "string") {
111
438
  errorMessage = errorDetails;
112
439
  }
113
440
  else if (errorDetails.error) {
114
- if (typeof errorDetails.error === 'string') {
441
+ if (typeof errorDetails.error === "string") {
115
442
  errorMessage = errorDetails.error;
116
443
  }
117
444
  else if (errorDetails.error.message) {
118
445
  errorMessage = errorDetails.error.message;
119
446
  }
120
- else if (typeof errorDetails.error === 'object') {
447
+ else if (typeof errorDetails.error === "object") {
121
448
  // Try to stringify the error object
122
449
  const errorStr = JSON.stringify(errorDetails.error);
123
- if (errorStr !== '{}') {
450
+ if (errorStr !== "{}") {
124
451
  errorMessage = errorStr;
125
452
  }
126
453
  else {
127
- errorMessage = errorDetails.message || `Request failed with status ${response.status}`;
454
+ errorMessage =
455
+ errorDetails.message ||
456
+ `Request failed with status ${response.status}`;
128
457
  }
129
458
  }
130
459
  else {
@@ -140,13 +469,31 @@ export class HttpcatClient {
140
469
  else {
141
470
  // Last resort: try to stringify the whole object
142
471
  const errorStr = JSON.stringify(errorDetails);
143
- if (errorStr !== '{}' && errorStr.length < 500) {
472
+ if (errorStr !== "{}" && errorStr.length < 500) {
144
473
  errorMessage = errorStr;
145
474
  }
146
475
  else {
147
476
  errorMessage = `Request failed with status ${response.status}`;
148
477
  }
149
478
  }
479
+ // Check for payment header errors (support both V1 and V2)
480
+ // V2 uses PAYMENT-SIGNATURE, V1 uses X-PAYMENT
481
+ if (errorMessage.includes("PAYMENT-SIGNATURE header is required") ||
482
+ errorMessage.includes("X-PAYMENT header is required") ||
483
+ errorMessage.includes("Missing payment authorization") ||
484
+ errorMessage.includes("payment authorization")) {
485
+ // This is a 402 error - wrapFetchWithPayment should handle it automatically
486
+ // but if it doesn't, we'll treat it as a 402
487
+ if (response.status !== 402) {
488
+ // Force 402 status for payment-related errors
489
+ throw new HttpcatError(errorMessage, 402, {
490
+ ...errorDetails,
491
+ endpoint,
492
+ method: "POST",
493
+ suggestion: "Payment required. The x402 library should handle this automatically.",
494
+ });
495
+ }
496
+ }
150
497
  // For 500 errors, try to extract more context
151
498
  if (response.status >= 500 && errorDetails.error) {
152
499
  // If error is an object, try to stringify it for more info
@@ -187,26 +534,36 @@ export class HttpcatClient {
187
534
  const url = path.startsWith("http") ? path : `${this.agentUrl}${path}`;
188
535
  let response;
189
536
  try {
190
- response = await this.fetchWithPayment(url, {
537
+ const requestOptions = {
191
538
  method: "GET",
192
- });
539
+ };
540
+ if (process.env.DEBUG) {
541
+ console.log(`[HttpcatClient.get] Request URL:`, url);
542
+ console.log(`[HttpcatClient.get] Request method:`, requestOptions.method);
543
+ console.log(`[HttpcatClient.get] Request headers:`, JSON.stringify(requestOptions.headers || {}, null, 2));
544
+ }
545
+ response = await this.fetchWithPayment(url, requestOptions);
546
+ if (process.env.DEBUG) {
547
+ console.log(`[HttpcatClient.get] Response status:`, response.status);
548
+ console.log(`[HttpcatClient.get] Response headers:`, Object.fromEntries(response.headers.entries()));
549
+ }
193
550
  }
194
551
  catch (error) {
195
552
  // Handle network errors
196
553
  const errorMessage = error instanceof Error ? error.message : String(error);
197
- const isNetworkError = errorMessage.includes('fetch failed') ||
198
- errorMessage.includes('ECONNREFUSED') ||
199
- errorMessage.includes('ENOTFOUND') ||
200
- errorMessage.includes('ETIMEDOUT') ||
201
- errorMessage.includes('network') ||
202
- errorMessage.includes('connection');
554
+ const isNetworkError = errorMessage.includes("fetch failed") ||
555
+ errorMessage.includes("ECONNREFUSED") ||
556
+ errorMessage.includes("ENOTFOUND") ||
557
+ errorMessage.includes("ETIMEDOUT") ||
558
+ errorMessage.includes("network") ||
559
+ errorMessage.includes("connection");
203
560
  if (isNetworkError) {
204
561
  throw new HttpcatError(`Network error: Unable to connect to agent at ${this.agentUrl}`, 0, // 0 indicates network error (not HTTP status)
205
562
  {
206
563
  url,
207
564
  method: "GET",
208
565
  originalError: errorMessage,
209
- suggestion: "Check if the agent is running and the URL is correct. Try: httpcat health"
566
+ suggestion: "Check if the agent is running and the URL is correct. Try: httpcat health",
210
567
  });
211
568
  }
212
569
  // Re-throw other errors as-is
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/commands/account.ts"],"names":[],"mappings":"AAQA,OAAO,EAAgB,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAGL,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAOhD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,eAAe,CAAC,CA4E1B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqD7E;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAiCnC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAejD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAyGhD"}
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/commands/account.ts"],"names":[],"mappings":"AAOA,OAAO,EAAgB,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAGL,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAOhD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,eAAe,CAAC,CA4E1B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqD7E;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAiCnC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAejD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAyGhD"}
@@ -1,4 +1,5 @@
1
1
  import chalk from "chalk";
2
+ // USDC balance checking is handled via checkBalance from balances.ts
2
3
  import { config } from "../config.js";
3
4
  import { HttpcatClient } from "../client.js";
4
5
  import { formatAddress, createTable } from "../utils/formatting.js";