httpcat-cli 0.2.12 → 0.2.13-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 (78) hide show
  1. package/README.md +355 -22
  2. package/Screenshot 2025-12-21 at 8.56.02/342/200/257PM.png +0 -0
  3. package/bun.lock +15 -1305
  4. package/cat-spin.sh +417 -0
  5. package/dist/agent/ax-agent.d.ts.map +1 -0
  6. package/dist/agent/ax-agent.js +459 -0
  7. package/dist/agent/ax-agent.js.map +1 -0
  8. package/dist/agent/llm-factory.d.ts.map +1 -0
  9. package/dist/agent/llm-factory.js +82 -0
  10. package/dist/agent/llm-factory.js.map +1 -0
  11. package/dist/agent/setup-wizard.d.ts.map +1 -0
  12. package/dist/agent/setup-wizard.js +114 -0
  13. package/dist/agent/setup-wizard.js.map +1 -0
  14. package/dist/agent/tools.d.ts.map +1 -0
  15. package/dist/agent/tools.js +394 -0
  16. package/dist/agent/tools.js.map +1 -0
  17. package/dist/client.d.ts.map +1 -1
  18. package/dist/client.js +403 -46
  19. package/dist/client.js.map +1 -1
  20. package/dist/commands/account.d.ts.map +1 -1
  21. package/dist/commands/account.js +1 -0
  22. package/dist/commands/account.js.map +1 -1
  23. package/dist/commands/balances.d.ts.map +1 -1
  24. package/dist/commands/balances.js +39 -14
  25. package/dist/commands/balances.js.map +1 -1
  26. package/dist/commands/buy.d.ts.map +1 -1
  27. package/dist/commands/buy.js +22 -14
  28. package/dist/commands/buy.js.map +1 -1
  29. package/dist/commands/chat.d.ts.map +1 -1
  30. package/dist/commands/chat.js +60 -62
  31. package/dist/commands/chat.js.map +1 -1
  32. package/dist/commands/create.d.ts.map +1 -1
  33. package/dist/commands/create.js +133 -5
  34. package/dist/commands/create.js.map +1 -1
  35. package/dist/commands/info.d.ts.map +1 -1
  36. package/dist/commands/info.js +12 -9
  37. package/dist/commands/info.js.map +1 -1
  38. package/dist/commands/positions.d.ts.map +1 -1
  39. package/dist/commands/positions.js +51 -54
  40. package/dist/commands/positions.js.map +1 -1
  41. package/dist/commands/sell.d.ts.map +1 -1
  42. package/dist/commands/sell.js +14 -10
  43. package/dist/commands/sell.js.map +1 -1
  44. package/dist/config.d.ts.map +1 -1
  45. package/dist/config.js +160 -10
  46. package/dist/config.js.map +1 -1
  47. package/dist/index.js +558 -45
  48. package/dist/index.js.map +1 -1
  49. package/dist/interactive/cat-spin.d.ts.map +1 -0
  50. package/dist/interactive/cat-spin.js +448 -0
  51. package/dist/interactive/cat-spin.js.map +1 -0
  52. package/dist/interactive/shell.d.ts.map +1 -1
  53. package/dist/interactive/shell.js +1651 -157
  54. package/dist/interactive/shell.js.map +1 -1
  55. package/dist/mcp/server.js +1 -1
  56. package/dist/mcp/tools.d.ts.map +1 -1
  57. package/dist/mcp/tools.js +109 -7
  58. package/dist/mcp/tools.js.map +1 -1
  59. package/dist/mcp/types.d.ts.map +1 -1
  60. package/dist/utils/constants.d.ts.map +1 -1
  61. package/dist/utils/constants.js +44 -2
  62. package/dist/utils/constants.js.map +1 -1
  63. package/dist/utils/errors.d.ts.map +1 -1
  64. package/dist/utils/errors.js +3 -3
  65. package/dist/utils/errors.js.map +1 -1
  66. package/dist/utils/loading.d.ts.map +1 -1
  67. package/dist/utils/loading.js +30 -0
  68. package/dist/utils/loading.js.map +1 -1
  69. package/dist/utils/privateKeyPrompt.d.ts.map +1 -1
  70. package/dist/utils/privateKeyPrompt.js +31 -7
  71. package/dist/utils/privateKeyPrompt.js.map +1 -1
  72. package/dist/utils/status.d.ts.map +1 -0
  73. package/dist/utils/status.js +67 -0
  74. package/dist/utils/status.js.map +1 -0
  75. package/dist/utils/token-resolver.d.ts.map +1 -1
  76. package/dist/utils/token-resolver.js +41 -0
  77. package/dist/utils/token-resolver.js.map +1 -1
  78. package/package.json +5 -3
@@ -0,0 +1,114 @@
1
+ import inquirer from "inquirer";
2
+ import chalk from "chalk";
3
+ import { config } from "../config.js";
4
+ import { printCat } from "../interactive/art.js";
5
+ /**
6
+ * Setup wizard for AI agent API keys
7
+ * Similar pattern to privateKeyPrompt.ts with cat-themed UX
8
+ */
9
+ export async function setupAIAgentWizard() {
10
+ console.log();
11
+ // Show wizard cat
12
+ printCat("wizard");
13
+ console.log(chalk.bold.cyan("🐱 Let's set up your cat...\n"));
14
+ // Check if already configured
15
+ const existingConfig = config.getAIAgentConfig();
16
+ if (existingConfig) {
17
+ const providerName = existingConfig.provider === "openai" ? "OpenAI" : "Anthropic";
18
+ console.log(chalk.yellow("📋 Current configuration:"));
19
+ console.log(chalk.dim(` Provider: ${providerName}`));
20
+ console.log(chalk.dim(` Model: ${existingConfig.model || "default"}`));
21
+ console.log();
22
+ console.log(chalk.cyan("You can update your configuration below.\n"));
23
+ }
24
+ // Security messaging
25
+ console.log(chalk.dim("🔒 Security & Privacy:"));
26
+ console.log(chalk.dim(" • Your API keys are stored locally and encrypted"));
27
+ console.log(chalk.dim(" • They are never sent to any server except the LLM provider"));
28
+ console.log(chalk.dim(" • Stored in: "), chalk.cyan(config.getConfigPath()));
29
+ console.log();
30
+ // Ask which provider (default to existing if configured)
31
+ const providerChoice = await inquirer.prompt([
32
+ {
33
+ type: "list",
34
+ name: "provider",
35
+ message: "Which AI provider would you like to use?",
36
+ choices: [
37
+ {
38
+ name: "OpenAI (GPT-4, GPT-3.5) - Recommended",
39
+ value: "openai",
40
+ },
41
+ {
42
+ name: "Anthropic (Claude) - Great for complex tasks",
43
+ value: "anthropic",
44
+ },
45
+ ],
46
+ default: existingConfig?.provider || "openai",
47
+ },
48
+ ]);
49
+ // Helper function to validate API key format
50
+ const validateApiKey = (input, provider) => {
51
+ if (!input || input.trim().length === 0) {
52
+ return "API key is required";
53
+ }
54
+ const trimmed = input.trim();
55
+ if (provider === "openai") {
56
+ // OpenAI keys can start with "sk-" (legacy) or "sk-proj-" (newer project keys)
57
+ // Newer project keys are much longer, so we just check prefix and minimum length
58
+ if (!trimmed.startsWith("sk-") && !trimmed.startsWith("sk-proj-")) {
59
+ return "Invalid OpenAI API key format. Keys should start with 'sk-' or 'sk-proj-'";
60
+ }
61
+ if (trimmed.length < 20) {
62
+ return "Invalid OpenAI API key length. Keys should be at least 20 characters long.";
63
+ }
64
+ }
65
+ else if (provider === "anthropic") {
66
+ // Anthropic keys should start with "sk-ant-"
67
+ if (!trimmed.startsWith("sk-ant-")) {
68
+ return "Invalid Anthropic API key format. Keys should start with 'sk-ant-'";
69
+ }
70
+ if (trimmed.length < 40) {
71
+ return "Invalid Anthropic API key length. Keys should be at least 40 characters long.";
72
+ }
73
+ }
74
+ return true;
75
+ };
76
+ // Ask for API key
77
+ const apiKeyAnswer = await inquirer.prompt([
78
+ {
79
+ type: "password",
80
+ name: "apiKey",
81
+ message: `Enter your ${providerChoice.provider === "openai" ? "OpenAI" : "Anthropic"} API key:`,
82
+ mask: "•",
83
+ validate: (input) => {
84
+ return validateApiKey(input, providerChoice.provider);
85
+ },
86
+ },
87
+ ]);
88
+ // Ask for model (with defaults)
89
+ const defaultModel = providerChoice.provider === "openai" ? "gpt-4" : "claude-3-5-sonnet-20241022";
90
+ const modelAnswer = await inquirer.prompt([
91
+ {
92
+ type: "input",
93
+ name: "model",
94
+ message: `Model name [${defaultModel}]:`,
95
+ default: defaultModel,
96
+ },
97
+ ]);
98
+ // Save to config
99
+ config.setAIAgentConfig({
100
+ provider: providerChoice.provider,
101
+ apiKey: apiKeyAnswer.apiKey.trim(),
102
+ model: modelAnswer.model.trim() || defaultModel,
103
+ });
104
+ console.log();
105
+ console.log(chalk.green("✅ Cat configured successfully!"));
106
+ console.log(chalk.dim(` Provider: ${providerChoice.provider === "openai" ? "OpenAI" : "Anthropic"}`));
107
+ console.log(chalk.dim(` Model: ${modelAnswer.model.trim() || defaultModel}`));
108
+ console.log();
109
+ console.log(chalk.cyan("🐱 You can now use the cat (or 'agent') with:"));
110
+ console.log(chalk.dim(" agent \"your question here\" (or 'cat \"your question here\"')"));
111
+ console.log(chalk.dim(" agent --chat (or 'cat --chat')"));
112
+ console.log();
113
+ }
114
+ //# sourceMappingURL=setup-wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../../src/agent/setup-wizard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/agent/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAyE7C;;;GAGG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACjF,OAAO,CAAC,MAAM,CAAC,CAqMjB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChD,OAAO,CAAC,MAAM,CAAC,CA+CjB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE,GAChC,OAAO,CAAC,MAAM,CAAC,CAsCjB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAA;CAAE,GAC5E,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,EAAE,GACP,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,EAAE,GACP,OAAO,CAAC,MAAM,CAAC,CAkBjB"}
@@ -0,0 +1,394 @@
1
+ import { HttpcatClient } from "../client.js";
2
+ import { buyToken } from "../commands/buy.js";
3
+ import { sellToken } from "../commands/sell.js";
4
+ import { getTokenInfo } from "../commands/info.js";
5
+ import { listTokens } from "../commands/list.js";
6
+ import { getPositions } from "../commands/positions.js";
7
+ import { checkBalance } from "../commands/balances.js";
8
+ import { config } from "../config.js";
9
+ import { privateKeyToAccount } from "viem/accounts";
10
+ // Helper to get private key
11
+ function getPrivateKey() {
12
+ return config.getPrivateKey();
13
+ }
14
+ // Helper to check if test mode
15
+ function isTestMode(client) {
16
+ const network = client.getNetwork();
17
+ return network === "eip155:84532" || network === "eip155:11155111" || network.includes("sepolia");
18
+ }
19
+ // Helper to safely serialize errors to strings
20
+ function serializeError(error) {
21
+ if (!error) {
22
+ return "Unknown error";
23
+ }
24
+ // If it's already a string, return it
25
+ if (typeof error === "string") {
26
+ return error;
27
+ }
28
+ // Try to get error message first (most common case)
29
+ if (error.message && typeof error.message === "string") {
30
+ return error.message;
31
+ }
32
+ // Try to stringify the error object, handling circular references
33
+ try {
34
+ // Use a replacer function to handle circular references
35
+ const seen = new WeakSet();
36
+ const serialized = JSON.stringify(error, (key, value) => {
37
+ if (typeof value === "object" && value !== null) {
38
+ if (seen.has(value)) {
39
+ return "[Circular]";
40
+ }
41
+ seen.add(value);
42
+ }
43
+ return value;
44
+ });
45
+ // If we got something meaningful, return it
46
+ if (serialized && serialized !== "{}" && serialized !== "null") {
47
+ return serialized;
48
+ }
49
+ }
50
+ catch {
51
+ // JSON.stringify failed, fall through to toString
52
+ }
53
+ // Last resort: try toString
54
+ try {
55
+ const str = String(error);
56
+ if (str && str !== "[object Object]") {
57
+ return str;
58
+ }
59
+ }
60
+ catch {
61
+ // toString also failed
62
+ }
63
+ // Final fallback
64
+ return "An error occurred (unable to serialize error details)";
65
+ }
66
+ /**
67
+ * Tool: Buy tokens
68
+ * Args: { tokenIdentifier: string, amount: string, repeat?: number, delay?: number }
69
+ */
70
+ export async function toolBuyToken(client, args) {
71
+ try {
72
+ // Validate required arguments
73
+ if (!args || typeof args !== "object") {
74
+ return JSON.stringify({
75
+ success: false,
76
+ error: "Invalid arguments: args must be an object",
77
+ });
78
+ }
79
+ if (!args.tokenIdentifier || typeof args.tokenIdentifier !== "string") {
80
+ return JSON.stringify({
81
+ success: false,
82
+ error: "Invalid arguments: tokenIdentifier is required and must be a string",
83
+ });
84
+ }
85
+ if (!args.amount || typeof args.amount !== "string") {
86
+ return JSON.stringify({
87
+ success: false,
88
+ error: "Invalid arguments: amount is required and must be a string",
89
+ });
90
+ }
91
+ const privateKey = getPrivateKey();
92
+ const isTest = isTestMode(client);
93
+ // Handle repeat mode
94
+ if (args.repeat && args.repeat > 1) {
95
+ const results = [];
96
+ let totalSpent = 0;
97
+ let stoppedEarly = false;
98
+ let stopReason = "";
99
+ for (let i = 1; i <= args.repeat; i++) {
100
+ try {
101
+ // Retry logic: try up to 10 times with exponential backoff on 402 errors
102
+ // Client is recreated on each attempt to ensure fresh signature for new nonce
103
+ let result = null;
104
+ let lastError = null;
105
+ const maxRetries = 10;
106
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
107
+ try {
108
+ // Recreate client inside the operation to ensure fresh signature
109
+ // for each attempt (including retries). This fixes the issue where x402-fetch
110
+ // generates a new nonce but reuses the same signature, causing subsequent buys to fail
111
+ result = await (async () => {
112
+ // Recreate client for each attempt to ensure fresh signature for new nonce
113
+ const client = await HttpcatClient.create(privateKey);
114
+ return buyToken(client, args.tokenIdentifier, args.amount, isTest, true, // silent
115
+ privateKey);
116
+ })();
117
+ // Success! Break out of retry loop
118
+ break;
119
+ }
120
+ catch (error) {
121
+ lastError = error;
122
+ // Only retry on 402 errors (payment required)
123
+ const is402Error = error?.message?.includes("402") ||
124
+ error?.status === 402 ||
125
+ (typeof error === "string" && error.includes("402"));
126
+ if (is402Error && attempt < maxRetries) {
127
+ // Exponential backoff: 1s, 2s, 4s, 8s, 16s, 32s, 64s, 128s, 256s, 512s (capped at 10s)
128
+ const backoffMs = Math.min(Math.pow(2, attempt - 1) * 1000, 10000);
129
+ await new Promise((resolve) => setTimeout(resolve, backoffMs));
130
+ continue; // Retry
131
+ }
132
+ else {
133
+ // Not a 402 error, or max retries reached - throw the error
134
+ throw error;
135
+ }
136
+ }
137
+ }
138
+ // If we exhausted retries, throw the last error
139
+ if (!result) {
140
+ if (lastError) {
141
+ throw lastError;
142
+ }
143
+ else {
144
+ throw new Error(`Failed to complete buy ${i}/${args.repeat} after ${maxRetries} attempts`);
145
+ }
146
+ }
147
+ results.push(result);
148
+ totalSpent += parseFloat(result.amountSpent);
149
+ // Check if token graduated
150
+ if (result.graduationReached) {
151
+ stoppedEarly = true;
152
+ stopReason = "Token graduated";
153
+ break;
154
+ }
155
+ // Wait for transaction confirmations if present
156
+ // This ensures both the buy transaction and payment transaction are confirmed
157
+ // before the next buy, preventing nonce/signature conflicts
158
+ if (i < args.repeat) {
159
+ try {
160
+ const { createPublicClient, http } = await import("viem");
161
+ const { baseSepolia } = await import("viem/chains");
162
+ const publicClient = createPublicClient({
163
+ chain: baseSepolia,
164
+ transport: http(config.getRpcUrl()),
165
+ });
166
+ // Wait for payment transaction first (if present)
167
+ // This is critical to ensure the payment nonce is consumed before next request
168
+ if (result.paymentTxHash) {
169
+ await publicClient.waitForTransactionReceipt({
170
+ hash: result.paymentTxHash,
171
+ });
172
+ }
173
+ // Wait for buy transaction (if present)
174
+ if (result.txHash) {
175
+ await publicClient.waitForTransactionReceipt({
176
+ hash: result.txHash,
177
+ });
178
+ }
179
+ }
180
+ catch (txError) {
181
+ // If we can't wait for confirmation, continue with delay
182
+ }
183
+ }
184
+ // Apply delay between iterations (except after the last one)
185
+ // For bonding curve buys, we need a minimum delay to allow backend
186
+ // to process the transaction and update balance state
187
+ if (i < args.repeat) {
188
+ const MIN_DELAY_MS = 2000; // 2 seconds minimum for backend processing
189
+ const delay = args.delay || 0;
190
+ const totalDelay = Math.max(delay, MIN_DELAY_MS);
191
+ if (totalDelay > 0) {
192
+ await new Promise((resolve) => setTimeout(resolve, totalDelay));
193
+ }
194
+ }
195
+ }
196
+ catch (error) {
197
+ // Handle insufficient funds gracefully
198
+ const errorMsg = serializeError(error);
199
+ if (errorMsg.includes("402") || errorMsg.includes("Insufficient")) {
200
+ stoppedEarly = true;
201
+ stopReason = "Insufficient funds";
202
+ break;
203
+ }
204
+ throw error;
205
+ }
206
+ }
207
+ const lastResult = results[results.length - 1];
208
+ return JSON.stringify({
209
+ success: true,
210
+ totalBuys: results.length,
211
+ requestedBuys: args.repeat,
212
+ totalSpent: totalSpent.toFixed(2),
213
+ tokensReceived: lastResult.tokensReceived,
214
+ newPrice: lastResult.newPrice,
215
+ graduationProgress: lastResult.graduationProgress,
216
+ graduationReached: lastResult.graduationReached,
217
+ stoppedEarly,
218
+ stopReason: stoppedEarly ? stopReason : undefined,
219
+ });
220
+ }
221
+ else {
222
+ // Single buy
223
+ const result = await buyToken(client, args.tokenIdentifier, args.amount, isTest, true, // silent
224
+ privateKey);
225
+ return JSON.stringify({
226
+ success: true,
227
+ tokensReceived: result.tokensReceived,
228
+ amountSpent: result.amountSpent,
229
+ newPrice: result.newPrice,
230
+ graduationProgress: result.graduationProgress,
231
+ graduationReached: result.graduationReached,
232
+ txHash: result.txHash,
233
+ });
234
+ }
235
+ }
236
+ catch (error) {
237
+ return JSON.stringify({
238
+ success: false,
239
+ error: serializeError(error),
240
+ });
241
+ }
242
+ }
243
+ /**
244
+ * Tool: Sell tokens
245
+ * Args: { tokenIdentifier: string, amount: string | number | "all" }
246
+ */
247
+ export async function toolSellToken(client, args) {
248
+ try {
249
+ // Validate required arguments
250
+ if (!args || typeof args !== "object") {
251
+ return JSON.stringify({
252
+ success: false,
253
+ error: "Invalid arguments: args must be an object",
254
+ });
255
+ }
256
+ if (!args.tokenIdentifier || typeof args.tokenIdentifier !== "string") {
257
+ return JSON.stringify({
258
+ success: false,
259
+ error: "Invalid arguments: tokenIdentifier is required and must be a string",
260
+ });
261
+ }
262
+ if (!args.amount || typeof args.amount !== "string") {
263
+ return JSON.stringify({
264
+ success: false,
265
+ error: "Invalid arguments: amount is required and must be a string",
266
+ });
267
+ }
268
+ const privateKey = getPrivateKey();
269
+ const result = await sellToken(client, args.tokenIdentifier, args.amount, true, // silent
270
+ privateKey);
271
+ return JSON.stringify({
272
+ success: true,
273
+ tokensSold: result.tokensSold,
274
+ usdcReceived: result.usdcReceived,
275
+ newPrice: result.newPrice,
276
+ txHash: result.txHash,
277
+ });
278
+ }
279
+ catch (error) {
280
+ return JSON.stringify({
281
+ success: false,
282
+ error: serializeError(error),
283
+ });
284
+ }
285
+ }
286
+ /**
287
+ * Tool: Get token info
288
+ * Args: { tokenIdentifier: string }
289
+ */
290
+ export async function toolGetTokenInfo(client, args) {
291
+ try {
292
+ // Validate required arguments
293
+ if (!args || typeof args !== "object") {
294
+ return JSON.stringify({
295
+ success: false,
296
+ error: "Invalid arguments: args must be an object",
297
+ });
298
+ }
299
+ if (!args.tokenIdentifier || typeof args.tokenIdentifier !== "string") {
300
+ return JSON.stringify({
301
+ success: false,
302
+ error: "Invalid arguments: tokenIdentifier is required and must be a string",
303
+ });
304
+ }
305
+ const account = privateKeyToAccount(getPrivateKey());
306
+ const info = await getTokenInfo(client, args.tokenIdentifier, account.address, true);
307
+ return JSON.stringify({
308
+ success: true,
309
+ name: info.name,
310
+ symbol: info.symbol,
311
+ address: info.address,
312
+ status: info.status,
313
+ price: info.price,
314
+ mcap: info.mcap,
315
+ graduationProgress: info.graduationProgress,
316
+ totalSupply: info.totalSupply,
317
+ userPosition: info.userPosition,
318
+ });
319
+ }
320
+ catch (error) {
321
+ return JSON.stringify({
322
+ success: false,
323
+ error: serializeError(error),
324
+ });
325
+ }
326
+ }
327
+ /**
328
+ * Tool: List tokens
329
+ * Args: { page?: number, limit?: number, sortBy?: "mcap" | "created" | "name" }
330
+ */
331
+ export async function toolListTokens(client, args) {
332
+ try {
333
+ const result = await listTokens(client, args.page || 1, args.limit || 20, args.sortBy || "mcap");
334
+ return JSON.stringify({
335
+ success: true,
336
+ tokens: result.tokens,
337
+ total: result.total,
338
+ page: result.page,
339
+ pages: result.pages,
340
+ });
341
+ }
342
+ catch (error) {
343
+ return JSON.stringify({
344
+ success: false,
345
+ error: serializeError(error),
346
+ });
347
+ }
348
+ }
349
+ /**
350
+ * Tool: Get positions
351
+ * Args: {}
352
+ */
353
+ export async function toolGetPositions(client, args) {
354
+ try {
355
+ const account = privateKeyToAccount(getPrivateKey());
356
+ const result = await getPositions(client, account.address);
357
+ return JSON.stringify({
358
+ success: true,
359
+ positions: result.positions,
360
+ total: result.total,
361
+ summary: result.summary,
362
+ });
363
+ }
364
+ catch (error) {
365
+ return JSON.stringify({
366
+ success: false,
367
+ error: serializeError(error),
368
+ });
369
+ }
370
+ }
371
+ /**
372
+ * Tool: Check balance
373
+ * Args: {}
374
+ */
375
+ export async function toolCheckBalance(client, args) {
376
+ try {
377
+ const balance = await checkBalance(getPrivateKey(), true);
378
+ return JSON.stringify({
379
+ success: true,
380
+ ethBalance: balance.ethBalance,
381
+ usdcBalance: balance.usdcBalance,
382
+ address: balance.address,
383
+ ethFormatted: balance.ethFormatted,
384
+ usdcFormatted: balance.usdcFormatted,
385
+ });
386
+ }
387
+ catch (error) {
388
+ return JSON.stringify({
389
+ success: false,
390
+ error: serializeError(error),
391
+ });
392
+ }
393
+ }
394
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/agent/tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAGhC,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,GAAG;IACzC,MAAM,EAAE,CAAC,CAAC;CACX;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO;WAUM,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;IAqBvD,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG,EACtC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,WAAW,CAAA;KAAE,CAAC;IA8K9C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAmErC,WAAW,IAAI,MAAM;IAIrB,UAAU,IAAI,MAAM;CAGrB;AAED,qBAAa,YAAa,SAAQ,KAAK;IACD,MAAM,EAAE,MAAM;IAAS,OAAO,CAAC,EAAE,GAAG;gBAA5D,OAAO,EAAE,MAAM,EAAS,MAAM,EAAE,MAAM,EAAS,OAAO,CAAC,EAAE,GAAG,YAAA;CAIzE"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAIhC,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,GAAG;IACzC,MAAM,EAAE,CAAC,CAAC;CACX;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO;WAcM,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;IA6D7D;;;OAGG;YACW,iBAAiB;IAmI/B;;OAEG;YACW,sBAAsB;IAsH9B,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG,EACtC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,WAAW,CAAA;KAAE,CAAC;IAgW9C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IA2FrC,WAAW,IAAI,MAAM;IAIrB,UAAU,IAAI,MAAM;CAGrB;AAED,qBAAa,YAAa,SAAQ,KAAK;IACD,MAAM,EAAE,MAAM;IAAS,OAAO,CAAC,EAAE,GAAG;gBAA5D,OAAO,EAAE,MAAM,EAAS,MAAM,EAAE,MAAM,EAAS,OAAO,CAAC,EAAE,GAAG,YAAA;CAIzE"}