httpcat-cli 0.3.0 → 0.3.1

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 (322) hide show
  1. package/.github/workflows/ci.yml +3 -0
  2. package/.github/workflows/rc-publish.yml +6 -0
  3. package/.github/workflows/release.yml +102 -0
  4. package/.github/workflows/sync-version.yml +31 -2
  5. package/README.md +1408 -109
  6. package/additions.txt +3 -0
  7. package/bun.lock +260 -25
  8. package/dist/agent/autonomous-trader.d.ts.map +1 -0
  9. package/dist/agent/autonomous-trader.js +362 -0
  10. package/dist/agent/autonomous-trader.js.map +1 -0
  11. package/dist/agent/ax-agent.d.ts.map +1 -1
  12. package/dist/agent/ax-agent.js +356 -18
  13. package/dist/agent/ax-agent.js.map +1 -1
  14. package/dist/agent/event-client.d.ts.map +1 -0
  15. package/dist/agent/event-client.js +82 -0
  16. package/dist/agent/event-client.js.map +1 -0
  17. package/dist/agent/log-stream.d.ts.map +1 -0
  18. package/dist/agent/log-stream.js +95 -0
  19. package/dist/agent/log-stream.js.map +1 -0
  20. package/dist/agent/memory/conversation-session.d.ts.map +1 -0
  21. package/dist/agent/memory/conversation-session.js +232 -0
  22. package/dist/agent/memory/conversation-session.js.map +1 -0
  23. package/dist/agent/memory/conversation-store.d.ts.map +1 -0
  24. package/dist/agent/memory/conversation-store.js +214 -0
  25. package/dist/agent/memory/conversation-store.js.map +1 -0
  26. package/dist/agent/memory/database-schema.d.ts.map +1 -0
  27. package/dist/agent/memory/database-schema.js +355 -0
  28. package/dist/agent/memory/database-schema.js.map +1 -0
  29. package/dist/agent/memory/decision-tracker.d.ts.map +1 -0
  30. package/dist/agent/memory/decision-tracker.js +274 -0
  31. package/dist/agent/memory/decision-tracker.js.map +1 -0
  32. package/dist/agent/memory/memory-manager.d.ts.map +1 -0
  33. package/dist/agent/memory/memory-manager.js +187 -0
  34. package/dist/agent/memory/memory-manager.js.map +1 -0
  35. package/dist/agent/memory/types.d.ts.map +1 -0
  36. package/dist/agent/memory/types.js +5 -0
  37. package/dist/agent/memory/types.js.map +1 -0
  38. package/dist/agent/message-formatter.d.ts.map +1 -0
  39. package/dist/agent/message-formatter.js +76 -0
  40. package/dist/agent/message-formatter.js.map +1 -0
  41. package/dist/agent/position-db.d.ts.map +1 -0
  42. package/dist/agent/position-db.js +154 -0
  43. package/dist/agent/position-db.js.map +1 -0
  44. package/dist/agent/simple-chat-ui-static.d.ts.map +1 -0
  45. package/dist/agent/simple-chat-ui-static.js +129 -0
  46. package/dist/agent/simple-chat-ui-static.js.map +1 -0
  47. package/dist/agent/simple-chat-ui.d.ts.map +1 -0
  48. package/dist/agent/simple-chat-ui.js +90 -0
  49. package/dist/agent/simple-chat-ui.js.map +1 -0
  50. package/dist/agent/tools.d.ts.map +1 -1
  51. package/dist/agent/tools.js +297 -4
  52. package/dist/agent/tools.js.map +1 -1
  53. package/dist/agent/ui.d.ts.map +1 -0
  54. package/dist/agent/ui.js +84 -0
  55. package/dist/agent/ui.js.map +1 -0
  56. package/dist/agent/unified-runtime.d.ts.map +1 -0
  57. package/dist/agent/unified-runtime.js +397 -0
  58. package/dist/agent/unified-runtime.js.map +1 -0
  59. package/dist/client.d.ts.map +1 -1
  60. package/dist/client.js +272 -21
  61. package/dist/client.js.map +1 -1
  62. package/dist/commands/account.d.ts.map +1 -1
  63. package/dist/commands/account.js +187 -33
  64. package/dist/commands/account.js.map +1 -1
  65. package/dist/commands/agent.d.ts.map +1 -0
  66. package/dist/commands/agent.js +125 -0
  67. package/dist/commands/agent.js.map +1 -0
  68. package/dist/commands/approve.d.ts.map +1 -0
  69. package/dist/commands/approve.js +505 -0
  70. package/dist/commands/approve.js.map +1 -0
  71. package/dist/commands/automation.d.ts.map +1 -0
  72. package/dist/commands/automation.js +346 -0
  73. package/dist/commands/automation.js.map +1 -0
  74. package/dist/commands/balances.d.ts.map +1 -1
  75. package/dist/commands/balances.js +226 -73
  76. package/dist/commands/balances.js.map +1 -1
  77. package/dist/commands/buy.d.ts.map +1 -1
  78. package/dist/commands/buy.js +149 -146
  79. package/dist/commands/buy.js.map +1 -1
  80. package/dist/commands/call.d.ts.map +1 -0
  81. package/dist/commands/call.js +51 -0
  82. package/dist/commands/call.js.map +1 -0
  83. package/dist/commands/cex.d.ts.map +1 -0
  84. package/dist/commands/cex.js +958 -0
  85. package/dist/commands/cex.js.map +1 -0
  86. package/dist/commands/chat.d.ts.map +1 -1
  87. package/dist/commands/chat.js +169 -411
  88. package/dist/commands/chat.js.map +1 -1
  89. package/dist/commands/claim.d.ts.map +1 -1
  90. package/dist/commands/claim.js +313 -29
  91. package/dist/commands/claim.js.map +1 -1
  92. package/dist/commands/create.d.ts.map +1 -1
  93. package/dist/commands/create.js +151 -43
  94. package/dist/commands/create.js.map +1 -1
  95. package/dist/commands/gasless-swap.d.ts.map +1 -0
  96. package/dist/commands/gasless-swap.js +232 -0
  97. package/dist/commands/gasless-swap.js.map +1 -0
  98. package/dist/commands/health.d.ts.map +1 -1
  99. package/dist/commands/health.js +63 -7
  100. package/dist/commands/health.js.map +1 -1
  101. package/dist/commands/info.d.ts.map +1 -1
  102. package/dist/commands/info.js +131 -47
  103. package/dist/commands/info.js.map +1 -1
  104. package/dist/commands/launchpad.d.ts.map +1 -0
  105. package/dist/commands/launchpad.js +708 -0
  106. package/dist/commands/launchpad.js.map +1 -0
  107. package/dist/commands/list.d.ts.map +1 -1
  108. package/dist/commands/list.js +57 -23
  109. package/dist/commands/list.js.map +1 -1
  110. package/dist/commands/market.d.ts.map +1 -0
  111. package/dist/commands/market.js +960 -0
  112. package/dist/commands/market.js.map +1 -0
  113. package/dist/commands/mcp-install.d.ts.map +1 -0
  114. package/dist/commands/mcp-install.js +387 -0
  115. package/dist/commands/mcp-install.js.map +1 -0
  116. package/dist/commands/opps.d.ts.map +1 -0
  117. package/dist/commands/opps.js +409 -0
  118. package/dist/commands/opps.js.map +1 -0
  119. package/dist/commands/perps.d.ts.map +1 -0
  120. package/dist/commands/perps.js +248 -0
  121. package/dist/commands/perps.js.map +1 -0
  122. package/dist/commands/portfolio.d.ts.map +1 -0
  123. package/dist/commands/portfolio.js +679 -0
  124. package/dist/commands/portfolio.js.map +1 -0
  125. package/dist/commands/positions.d.ts.map +1 -1
  126. package/dist/commands/positions.js +76 -47
  127. package/dist/commands/positions.js.map +1 -1
  128. package/dist/commands/predict.d.ts.map +1 -0
  129. package/dist/commands/predict.js +280 -0
  130. package/dist/commands/predict.js.map +1 -0
  131. package/dist/commands/predictions.d.ts.map +1 -0
  132. package/dist/commands/predictions.js +486 -0
  133. package/dist/commands/predictions.js.map +1 -0
  134. package/dist/commands/risk.d.ts.map +1 -0
  135. package/dist/commands/risk.js +225 -0
  136. package/dist/commands/risk.js.map +1 -0
  137. package/dist/commands/security.d.ts.map +1 -0
  138. package/dist/commands/security.js +244 -0
  139. package/dist/commands/security.js.map +1 -0
  140. package/dist/commands/sell.d.ts.map +1 -1
  141. package/dist/commands/sell.js +67 -34
  142. package/dist/commands/sell.js.map +1 -1
  143. package/dist/commands/send.d.ts.map +1 -0
  144. package/dist/commands/send.js +733 -0
  145. package/dist/commands/send.js.map +1 -0
  146. package/dist/commands/sign.d.ts.map +1 -0
  147. package/dist/commands/sign.js +1048 -0
  148. package/dist/commands/sign.js.map +1 -0
  149. package/dist/commands/swap.d.ts.map +1 -0
  150. package/dist/commands/swap.js +744 -0
  151. package/dist/commands/swap.js.map +1 -0
  152. package/dist/commands/system.d.ts.map +1 -0
  153. package/dist/commands/system.js +417 -0
  154. package/dist/commands/system.js.map +1 -0
  155. package/dist/commands/tools/index.d.ts.map +1 -0
  156. package/dist/commands/tools/index.js +2040 -0
  157. package/dist/commands/tools/index.js.map +1 -0
  158. package/dist/commands/trade.d.ts.map +1 -0
  159. package/dist/commands/trade.js +237 -0
  160. package/dist/commands/trade.js.map +1 -0
  161. package/dist/commands/transactions.d.ts.map +1 -1
  162. package/dist/commands/transactions.js +29 -17
  163. package/dist/commands/transactions.js.map +1 -1
  164. package/dist/commands/update.d.ts.map +1 -0
  165. package/dist/commands/update.js +429 -0
  166. package/dist/commands/update.js.map +1 -0
  167. package/dist/config.d.ts.map +1 -1
  168. package/dist/config.js +351 -40
  169. package/dist/config.js.map +1 -1
  170. package/dist/index.js +4524 -924
  171. package/dist/index.js.map +1 -1
  172. package/dist/interactive/art.d.ts.map +1 -1
  173. package/dist/interactive/art.js +33 -1
  174. package/dist/interactive/art.js.map +1 -1
  175. package/dist/interactive/shell.d.ts.map +1 -1
  176. package/dist/interactive/shell.js +467 -2652
  177. package/dist/interactive/shell.js.map +1 -1
  178. package/dist/mcp/context.d.ts.map +1 -0
  179. package/dist/mcp/context.js +211 -0
  180. package/dist/mcp/context.js.map +1 -0
  181. package/dist/mcp/onboarding.d.ts.map +1 -0
  182. package/dist/mcp/onboarding.js +266 -0
  183. package/dist/mcp/onboarding.js.map +1 -0
  184. package/dist/mcp/resources.d.ts.map +1 -0
  185. package/dist/mcp/resources.js +222 -0
  186. package/dist/mcp/resources.js.map +1 -0
  187. package/dist/mcp/server.d.ts.map +1 -1
  188. package/dist/mcp/server.js +51 -1
  189. package/dist/mcp/server.js.map +1 -1
  190. package/dist/mcp/tools.d.ts.map +1 -1
  191. package/dist/mcp/tools.js +4119 -169
  192. package/dist/mcp/tools.js.map +1 -1
  193. package/dist/mcp/types.d.ts.map +1 -1
  194. package/dist/types/agent-info.d.ts.map +1 -0
  195. package/dist/types/agent-info.js +11 -0
  196. package/dist/types/agent-info.js.map +1 -0
  197. package/dist/ui/components/ScrollableList.d.ts.map +1 -0
  198. package/dist/ui/components/ScrollableList.js +72 -0
  199. package/dist/ui/components/ScrollableList.js.map +1 -0
  200. package/dist/ui/components/ThemeProvider.d.ts.map +1 -0
  201. package/dist/ui/components/ThemeProvider.js +87 -0
  202. package/dist/ui/components/ThemeProvider.js.map +1 -0
  203. package/dist/ui/components/ThemedBox.d.ts.map +1 -0
  204. package/dist/ui/components/ThemedBox.js +24 -0
  205. package/dist/ui/components/ThemedBox.js.map +1 -0
  206. package/dist/ui/components/agent/ChatHeader.d.ts.map +1 -0
  207. package/dist/ui/components/agent/ChatHeader.js +39 -0
  208. package/dist/ui/components/agent/ChatHeader.js.map +1 -0
  209. package/dist/ui/components/agent/Header.d.ts.map +1 -0
  210. package/dist/ui/components/agent/Header.js +14 -0
  211. package/dist/ui/components/agent/Header.js.map +1 -0
  212. package/dist/ui/components/agent/Input.d.ts.map +1 -0
  213. package/dist/ui/components/agent/Input.js +23 -0
  214. package/dist/ui/components/agent/Input.js.map +1 -0
  215. package/dist/ui/components/agent/Output.d.ts.map +1 -0
  216. package/dist/ui/components/agent/Output.js +23 -0
  217. package/dist/ui/components/agent/Output.js.map +1 -0
  218. package/dist/ui/components/chat/TokenChatUI.d.ts.map +1 -0
  219. package/dist/ui/components/chat/TokenChatUI.js +133 -0
  220. package/dist/ui/components/chat/TokenChatUI.js.map +1 -0
  221. package/dist/ui/components/shell/ShellHeader.d.ts.map +1 -0
  222. package/dist/ui/components/shell/ShellHeader.js +31 -0
  223. package/dist/ui/components/shell/ShellHeader.js.map +1 -0
  224. package/dist/ui/components/shell/ShellInput.d.ts.map +1 -0
  225. package/dist/ui/components/shell/ShellInput.js +151 -0
  226. package/dist/ui/components/shell/ShellInput.js.map +1 -0
  227. package/dist/ui/components/shell/ShellOutput.d.ts.map +1 -0
  228. package/dist/ui/components/shell/ShellOutput.js +8 -0
  229. package/dist/ui/components/shell/ShellOutput.js.map +1 -0
  230. package/dist/ui/hooks/useChatWebSocket.d.ts.map +1 -0
  231. package/dist/ui/hooks/useChatWebSocket.js +76 -0
  232. package/dist/ui/hooks/useChatWebSocket.js.map +1 -0
  233. package/dist/ui/hooks/useCommandHistory.d.ts.map +1 -0
  234. package/dist/ui/hooks/useCommandHistory.js +70 -0
  235. package/dist/ui/hooks/useCommandHistory.js.map +1 -0
  236. package/dist/ui/hooks/useDebounce.d.ts.map +1 -0
  237. package/dist/ui/hooks/useDebounce.js +17 -0
  238. package/dist/ui/hooks/useDebounce.js.map +1 -0
  239. package/dist/ui/hooks/useLogStream.d.ts.map +1 -0
  240. package/dist/ui/hooks/useLogStream.js +20 -0
  241. package/dist/ui/hooks/useLogStream.js.map +1 -0
  242. package/dist/ui/hooks/useVirtualScroll.d.ts.map +1 -0
  243. package/dist/ui/hooks/useVirtualScroll.js +70 -0
  244. package/dist/ui/hooks/useVirtualScroll.js.map +1 -0
  245. package/dist/utils/admin.d.ts.map +1 -0
  246. package/dist/utils/admin.js +144 -0
  247. package/dist/utils/admin.js.map +1 -0
  248. package/dist/utils/autoSetup.d.ts.map +1 -0
  249. package/dist/utils/autoSetup.js +252 -0
  250. package/dist/utils/autoSetup.js.map +1 -0
  251. package/dist/utils/build-constants.d.ts.map +1 -0
  252. package/dist/utils/build-constants.js +10 -0
  253. package/dist/utils/build-constants.js.map +1 -0
  254. package/dist/utils/constants.d.ts.map +1 -1
  255. package/dist/utils/errors.d.ts.map +1 -1
  256. package/dist/utils/errors.js +10 -1
  257. package/dist/utils/errors.js.map +1 -1
  258. package/dist/utils/formatting.d.ts.map +1 -1
  259. package/dist/utils/formatting.js +46 -9
  260. package/dist/utils/formatting.js.map +1 -1
  261. package/dist/utils/llm-cli-config.d.ts.map +1 -0
  262. package/dist/utils/llm-cli-config.js +963 -0
  263. package/dist/utils/llm-cli-config.js.map +1 -0
  264. package/dist/utils/llm-cli-detector.d.ts.map +1 -0
  265. package/dist/utils/llm-cli-detector.js +202 -0
  266. package/dist/utils/llm-cli-detector.js.map +1 -0
  267. package/dist/utils/loading.d.ts.map +1 -1
  268. package/dist/utils/loading.js +25 -3
  269. package/dist/utils/loading.js.map +1 -1
  270. package/dist/utils/maintenance.d.ts.map +1 -0
  271. package/dist/utils/maintenance.js +17 -0
  272. package/dist/utils/maintenance.js.map +1 -0
  273. package/dist/utils/mcp-config.d.ts.map +1 -0
  274. package/dist/utils/mcp-config.js +77 -0
  275. package/dist/utils/mcp-config.js.map +1 -0
  276. package/dist/utils/privateKeyPrompt.d.ts.map +1 -1
  277. package/dist/utils/privateKeyPrompt.js +308 -129
  278. package/dist/utils/privateKeyPrompt.js.map +1 -1
  279. package/dist/utils/process-cleanup.d.ts.map +1 -0
  280. package/dist/utils/process-cleanup.js +136 -0
  281. package/dist/utils/process-cleanup.js.map +1 -0
  282. package/dist/utils/retry.d.ts.map +1 -0
  283. package/dist/utils/retry.js +56 -0
  284. package/dist/utils/retry.js.map +1 -0
  285. package/dist/utils/rpc-helpers.d.ts.map +1 -0
  286. package/dist/utils/rpc-helpers.js +70 -0
  287. package/dist/utils/rpc-helpers.js.map +1 -0
  288. package/dist/utils/rpc-transport.d.ts.map +1 -0
  289. package/dist/utils/rpc-transport.js +87 -0
  290. package/dist/utils/rpc-transport.js.map +1 -0
  291. package/dist/utils/shell-setup.d.ts.map +1 -0
  292. package/dist/utils/shell-setup.js +531 -0
  293. package/dist/utils/shell-setup.js.map +1 -0
  294. package/dist/utils/status.d.ts.map +1 -1
  295. package/dist/utils/status.js +34 -5
  296. package/dist/utils/status.js.map +1 -1
  297. package/dist/utils/token-resolver.d.ts.map +1 -1
  298. package/dist/utils/token-resolver.js +51 -8
  299. package/dist/utils/token-resolver.js.map +1 -1
  300. package/dist/utils/x402-caller.d.ts.map +1 -0
  301. package/dist/utils/x402-caller.js +17 -0
  302. package/dist/utils/x402-caller.js.map +1 -0
  303. package/docs/README.md +28 -0
  304. package/docs/agent/README.md +18 -0
  305. package/docs/api/README.md +41 -0
  306. package/docs/cli/README.md +42 -0
  307. package/docs/guides/README.md +26 -0
  308. package/docs/implementation/README.md +18 -0
  309. package/docs/planning/README.md +19 -0
  310. package/docs/testing/README.md +15 -0
  311. package/docs/ux/README.md +16 -0
  312. package/issues.txt +2 -0
  313. package/package.json +24 -9
  314. package/scripts/cat-spin.sh +417 -0
  315. package/scripts/deprecate-rc-versions.js +58 -0
  316. package/scripts/inject-build-constants.js +43 -0
  317. package/scripts/monitor-foobar.js +117 -0
  318. package/swap.logs +61 -0
  319. package/swapping.txt +108 -0
  320. package/test.txt +12 -0
  321. package/tests/fixtures/test-data.json +16 -0
  322. package/Screenshot 2025-12-21 at 8.56.02/342/200/257PM.png +0 -0
@@ -0,0 +1,266 @@
1
+ /**
2
+ * MCP Server Onboarding
3
+ *
4
+ * This module handles interactive onboarding when the MCP server starts
5
+ * without a configured wallet. Since MCP uses stdio transport, all prompts
6
+ * must work via stdin/stdout/stderr.
7
+ *
8
+ * Flow:
9
+ * 1. Check if wallet is configured
10
+ * 2. If not, prompt user via stdio for wallet setup
11
+ * 3. Support both seed phrase generation and private key import
12
+ * 4. Save to config file using ConfigManager
13
+ */
14
+ import { createInterface } from "readline";
15
+ import { config } from "../config.js";
16
+ import { generateSeedPhrase, validateSeedPhrase, seedPhraseToPrivateKey, getAddressFromPrivateKey, } from "../utils/wallet.js";
17
+ import { encryptData } from "../utils/wallet.js";
18
+ /**
19
+ * Check if wallet is configured and run onboarding if needed
20
+ *
21
+ * This function is called when the MCP server starts. If no wallet is configured,
22
+ * it runs an interactive onboarding flow via stdio.
23
+ *
24
+ * @returns Promise that resolves when onboarding is complete (or skipped if already configured)
25
+ * @throws Error if onboarding is cancelled or fails
26
+ */
27
+ export async function checkAndOnboard() {
28
+ // Check if already configured
29
+ if (config.isConfigured()) {
30
+ return; // Already configured, skip onboarding
31
+ }
32
+ // Check if import mode is enabled via environment variable
33
+ if (process.env.HTTPCAT_IMPORT_MODE === "true") {
34
+ // Write to stderr (stdout is used for MCP protocol)
35
+ process.stderr.write("\n");
36
+ process.stderr.write("⚠️ No wallet configured for httpcat MCP server.\n");
37
+ process.stderr.write("Starting onboarding...\n\n");
38
+ // Prompt user for setup method
39
+ const setupMethod = await promptChoice("How would you like to set up your wallet?", [
40
+ { value: "generate", label: "Generate new wallet (seed phrase)" },
41
+ { value: "import_seed", label: "Import existing seed phrase" },
42
+ { value: "import_key", label: "Import existing private key" },
43
+ ], "generate");
44
+ let seedPhrase;
45
+ let privateKey;
46
+ let accountIndex = 0;
47
+ if (setupMethod === "generate") {
48
+ // Generate new seed phrase
49
+ process.stderr.write("\n");
50
+ process.stderr.write("Generating new seed phrase...\n");
51
+ seedPhrase = generateSeedPhrase();
52
+ process.stderr.write("\n");
53
+ process.stderr.write("⚠️ IMPORTANT: Save this seed phrase in a safe place!\n");
54
+ process.stderr.write(" You will need it to recover your wallet.\n");
55
+ process.stderr.write("\n");
56
+ process.stderr.write("Seed phrase:\n");
57
+ process.stderr.write("─".repeat(60) + "\n");
58
+ process.stderr.write(seedPhrase + "\n");
59
+ process.stderr.write("─".repeat(60) + "\n");
60
+ process.stderr.write("\n");
61
+ const confirmed = await promptYesNo("Have you saved the seed phrase? (yes/no): ", false);
62
+ if (!confirmed) {
63
+ throw new Error("Onboarding cancelled - seed phrase not confirmed");
64
+ }
65
+ accountIndex = 1; // First seed-derived account
66
+ }
67
+ else if (setupMethod === "import_seed") {
68
+ // Import existing seed phrase
69
+ process.stderr.write("\n");
70
+ process.stderr.write("Enter your seed phrase (12 or 24 words):\n");
71
+ const inputSeedPhrase = await promptInput("Seed phrase: ");
72
+ if (!validateSeedPhrase(inputSeedPhrase)) {
73
+ throw new Error("Invalid seed phrase format");
74
+ }
75
+ seedPhrase = inputSeedPhrase;
76
+ accountIndex = 1; // First seed-derived account
77
+ }
78
+ else {
79
+ // Import existing private key
80
+ process.stderr.write("\n");
81
+ process.stderr.write("Enter your private key (0x...):\n");
82
+ const inputKey = await promptInput("Private key: ");
83
+ // Validate private key format
84
+ if (!inputKey.startsWith("0x") || inputKey.length !== 66) {
85
+ throw new Error("Invalid private key format: must start with 0x and be 66 characters long");
86
+ }
87
+ privateKey = inputKey;
88
+ accountIndex = 0; // Custom account
89
+ }
90
+ // Prompt for password (optional)
91
+ process.stderr.write("\n");
92
+ const usePassword = await promptYesNo("Would you like to password-protect your wallet? (yes/no): ", false);
93
+ let password = "";
94
+ if (usePassword) {
95
+ process.stderr.write("Enter password (leave empty for no password):\n");
96
+ const password1 = await promptInput("Password: ", true);
97
+ const password2 = await promptInput("Confirm password: ", true);
98
+ if (password1 !== password2) {
99
+ throw new Error("Passwords do not match");
100
+ }
101
+ password = password1;
102
+ }
103
+ // Save to config
104
+ await saveWalletConfig(seedPhrase, privateKey, password, accountIndex);
105
+ process.stderr.write("\n");
106
+ process.stderr.write("✅ Wallet configured successfully!\n");
107
+ process.stderr.write("\n");
108
+ }
109
+ else {
110
+ // Auto-generate seed phrase for new users (silent mode for MCP)
111
+ const { autoSetupWallet } = await import("../utils/autoSetup.js");
112
+ // For MCP, we want minimal output - just write to stderr
113
+ process.stderr.write("\n");
114
+ process.stderr.write("⚠️ No wallet configured. Auto-generating wallet...\n");
115
+ process.stderr.write(" (Set HTTPCAT_IMPORT_MODE=true to use import flow)\n\n");
116
+ const address = await autoSetupWallet();
117
+ process.stderr.write("\n");
118
+ process.stderr.write(`✅ Wallet configured successfully!\n`);
119
+ process.stderr.write(` Address: ${address}\n`);
120
+ process.stderr.write("\n");
121
+ }
122
+ }
123
+ /**
124
+ * Save wallet configuration to config file
125
+ */
126
+ async function saveWalletConfig(seedPhrase, privateKey, password, accountIndex) {
127
+ if (seedPhrase) {
128
+ // Save seed phrase
129
+ if (password) {
130
+ const encrypted = encryptData(seedPhrase, password);
131
+ config.setEncryptedSeedPhrase(encrypted, password);
132
+ }
133
+ else {
134
+ config.setEncryptedSeedPhrase(seedPhrase, "");
135
+ }
136
+ // Create account entry for seed-derived account
137
+ const seedPrivateKey = seedPhraseToPrivateKey(seedPhrase, 0);
138
+ const address = getAddressFromPrivateKey(seedPrivateKey);
139
+ const accounts = config.getAllAccounts();
140
+ const accountExists = accounts.some((acc) => acc.index === accountIndex);
141
+ if (!accountExists) {
142
+ config.addAccount({
143
+ type: "seed",
144
+ index: accountIndex,
145
+ address,
146
+ });
147
+ }
148
+ }
149
+ if (privateKey) {
150
+ // Save private key
151
+ // setEncryptedPrivateKey expects the raw private key, not encrypted
152
+ config.setEncryptedPrivateKey(privateKey, password || "");
153
+ // Create account entry for custom account
154
+ const address = getAddressFromPrivateKey(privateKey);
155
+ const accounts = config.getAllAccounts();
156
+ const accountExists = accounts.some((acc) => acc.index === accountIndex);
157
+ if (!accountExists) {
158
+ config.addAccount({
159
+ type: "custom",
160
+ index: accountIndex,
161
+ address,
162
+ encryptedPrivateKey: password
163
+ ? encryptData(privateKey, password)
164
+ : privateKey,
165
+ });
166
+ }
167
+ }
168
+ // Set password if provided
169
+ if (password) {
170
+ config.setPassword(password);
171
+ }
172
+ // Set active account
173
+ config.setActiveAccount(accountIndex);
174
+ }
175
+ /**
176
+ * Prompt user for a choice from a list of options
177
+ */
178
+ function promptChoice(question, options, defaultValue) {
179
+ return new Promise((resolve) => {
180
+ const rl = createInterface({
181
+ input: process.stdin,
182
+ output: process.stderr, // Use stderr for prompts
183
+ });
184
+ process.stderr.write(question + "\n");
185
+ options.forEach((opt, index) => {
186
+ const marker = defaultValue === opt.value ? "→" : " ";
187
+ process.stderr.write(` ${marker} ${index + 1}. ${opt.label}\n`);
188
+ });
189
+ process.stderr.write("Choice: ");
190
+ rl.question("", (answer) => {
191
+ rl.close();
192
+ const choice = answer.trim();
193
+ if (!choice && defaultValue) {
194
+ resolve(defaultValue);
195
+ return;
196
+ }
197
+ const index = parseInt(choice, 10) - 1;
198
+ if (index >= 0 && index < options.length) {
199
+ resolve(options[index].value);
200
+ }
201
+ else {
202
+ // Try to match by value
203
+ const option = options.find((opt) => opt.value === choice);
204
+ if (option) {
205
+ resolve(option.value);
206
+ }
207
+ else if (defaultValue) {
208
+ resolve(defaultValue);
209
+ }
210
+ else {
211
+ // Default to first option
212
+ resolve(options[0].value);
213
+ }
214
+ }
215
+ });
216
+ });
217
+ }
218
+ /**
219
+ * Prompt user for yes/no answer
220
+ */
221
+ function promptYesNo(question, defaultValue) {
222
+ return new Promise((resolve) => {
223
+ const rl = createInterface({
224
+ input: process.stdin,
225
+ output: process.stderr,
226
+ });
227
+ const defaultText = defaultValue ? "yes" : "no";
228
+ process.stderr.write(question);
229
+ rl.question("", (answer) => {
230
+ rl.close();
231
+ const trimmed = answer.trim().toLowerCase();
232
+ if (!trimmed) {
233
+ resolve(defaultValue);
234
+ return;
235
+ }
236
+ resolve(trimmed === "yes" || trimmed === "y");
237
+ });
238
+ });
239
+ }
240
+ /**
241
+ * Prompt user for text input
242
+ */
243
+ function promptInput(prompt, mask = false) {
244
+ return new Promise((resolve) => {
245
+ const rl = createInterface({
246
+ input: process.stdin,
247
+ output: process.stderr,
248
+ });
249
+ process.stderr.write(prompt);
250
+ // For password input, we need to mask the input
251
+ // This is a simplified version - in production you might want to use a library
252
+ if (mask) {
253
+ // Disable echo
254
+ process.stdin.setRawMode?.(true);
255
+ }
256
+ rl.question("", (answer) => {
257
+ rl.close();
258
+ if (mask) {
259
+ process.stdin.setRawMode?.(false);
260
+ process.stderr.write("\n");
261
+ }
262
+ resolve(answer.trim());
263
+ });
264
+ });
265
+ }
266
+ //# sourceMappingURL=onboarding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/mcp/onboarding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/mcp/resources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA0BH;;GAEG;AACH,wBAAgB,aAAa,IAAI,KAAK,CAAC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,CAqBD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACxD,QAAQ,EAAE,KAAK,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACH,CAAC,CA6CD;AAsHD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE1D"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * MCP Resources Implementation
3
+ *
4
+ * This module provides MCP Resources for static data that can be accessed
5
+ * by LLM clients. Resources are read-only data sources that provide context
6
+ * about the httpcat ecosystem.
7
+ *
8
+ * Resources include:
9
+ * - Token lists (cached from API)
10
+ * - Market information
11
+ * - Network status
12
+ * - Documentation snippets
13
+ */
14
+ import { HttpcatClient } from "../client.js";
15
+ import { config } from "../config.js";
16
+ import { listTokens } from "../commands/list.js";
17
+ import { getNetworkConfig } from "../utils/constants.js";
18
+ const resourceCache = new Map();
19
+ const DEFAULT_TTL = 5 * 60 * 1000; // 5 minutes
20
+ /**
21
+ * Get resource URI prefix
22
+ */
23
+ function getResourceUriPrefix() {
24
+ return "httpcat://";
25
+ }
26
+ /**
27
+ * List all available resources
28
+ */
29
+ export function listResources() {
30
+ return [
31
+ {
32
+ uri: `${getResourceUriPrefix()}tokens/list`,
33
+ name: "Token List",
34
+ description: "List of all tokens on the platform with market data",
35
+ mimeType: "application/json",
36
+ },
37
+ {
38
+ uri: `${getResourceUriPrefix()}network/status`,
39
+ name: "Network Status",
40
+ description: "Current network status and configuration",
41
+ mimeType: "application/json",
42
+ },
43
+ {
44
+ uri: `${getResourceUriPrefix()}ecosystem/info`,
45
+ name: "Ecosystem Information",
46
+ description: "Information about the httpcat ecosystem and token economics",
47
+ mimeType: "application/json",
48
+ },
49
+ ];
50
+ }
51
+ /**
52
+ * Read a resource by URI
53
+ */
54
+ export async function readResource(uri) {
55
+ // Check cache first
56
+ const cached = resourceCache.get(uri);
57
+ if (cached && Date.now() - cached.timestamp < cached.ttl) {
58
+ return {
59
+ contents: [
60
+ {
61
+ uri,
62
+ mimeType: "application/json",
63
+ text: JSON.stringify(cached.data, null, 2),
64
+ },
65
+ ],
66
+ };
67
+ }
68
+ // Fetch fresh data based on URI
69
+ let data;
70
+ const prefix = getResourceUriPrefix();
71
+ if (uri.startsWith(`${prefix}tokens/list`)) {
72
+ data = await fetchTokenList();
73
+ }
74
+ else if (uri.startsWith(`${prefix}network/status`)) {
75
+ data = await fetchNetworkStatus();
76
+ }
77
+ else if (uri.startsWith(`${prefix}ecosystem/info`)) {
78
+ data = await fetchEcosystemInfo();
79
+ }
80
+ else {
81
+ throw new Error(`Unknown resource URI: ${uri}`);
82
+ }
83
+ // Cache the data
84
+ resourceCache.set(uri, {
85
+ data,
86
+ timestamp: Date.now(),
87
+ ttl: DEFAULT_TTL,
88
+ });
89
+ return {
90
+ contents: [
91
+ {
92
+ uri,
93
+ mimeType: "application/json",
94
+ text: JSON.stringify(data, null, 2),
95
+ },
96
+ ],
97
+ };
98
+ }
99
+ /**
100
+ * Fetch token list from API
101
+ */
102
+ async function fetchTokenList() {
103
+ try {
104
+ const client = await createClient();
105
+ const result = await listTokens(client, 1, 100, "mcap");
106
+ return {
107
+ tokens: result.tokens || [],
108
+ total: result.total || 0,
109
+ page: result.page || 1,
110
+ limit: result.limit || 100,
111
+ timestamp: new Date().toISOString(),
112
+ };
113
+ }
114
+ catch (error) {
115
+ // Return empty list on error
116
+ return {
117
+ tokens: [],
118
+ total: 0,
119
+ page: 1,
120
+ limit: 100,
121
+ error: error.message,
122
+ timestamp: new Date().toISOString(),
123
+ };
124
+ }
125
+ }
126
+ /**
127
+ * Fetch network status
128
+ */
129
+ async function fetchNetworkStatus() {
130
+ const network = config.get("network");
131
+ const networkDisplayName = config.caip2ToNetwork(network);
132
+ const isTestnet = config.isTestnet(network);
133
+ const agentUrl = config.getAgentUrl();
134
+ try {
135
+ const networkConfig = await getNetworkConfig(network);
136
+ return {
137
+ network: networkDisplayName,
138
+ chainId: networkConfig.chain.id,
139
+ isTestnet,
140
+ agentUrl,
141
+ rpcUrl: config.getRpcUrl() || "default",
142
+ alchemyApiKey: config.getAlchemyApiKey() ? "configured" : "not configured",
143
+ timestamp: new Date().toISOString(),
144
+ };
145
+ }
146
+ catch (error) {
147
+ return {
148
+ network: networkDisplayName,
149
+ chainId: "unknown",
150
+ isTestnet,
151
+ agentUrl,
152
+ error: error.message,
153
+ timestamp: new Date().toISOString(),
154
+ };
155
+ }
156
+ }
157
+ /**
158
+ * Fetch ecosystem information
159
+ */
160
+ async function fetchEcosystemInfo() {
161
+ return {
162
+ platform: "402.cat",
163
+ description: "A platform for creating and trading tokens on bonding curves with x402 payments",
164
+ tokenEconomics: {
165
+ creationCost: "0.01 USDC",
166
+ buyFee: "1%",
167
+ sellFee: "1%",
168
+ creatorFeeShare: "80%",
169
+ platformFeeShare: "20%",
170
+ },
171
+ bondingCurve: {
172
+ description: "Tokens start on a bonding curve and graduate to AMM when they reach $100k market cap",
173
+ graduationThreshold: "$100,000 USDC",
174
+ },
175
+ networks: {
176
+ mainnet: {
177
+ name: "Base",
178
+ chainId: "eip155:8453",
179
+ buyAmounts: ["50", "100", "200"],
180
+ currency: "USDC",
181
+ },
182
+ testnet: {
183
+ name: "Base Sepolia",
184
+ chainId: "eip155:84532",
185
+ buyAmounts: ["0.05", "0.10", "0.20"],
186
+ currency: "USDC",
187
+ },
188
+ },
189
+ features: [
190
+ "Token creation on bonding curves",
191
+ "Token trading (buy/sell)",
192
+ "Perpetual futures trading",
193
+ "Prediction markets",
194
+ "Chat rooms per token",
195
+ "Fee claiming for creators",
196
+ "Universal token swaps",
197
+ "MEV-protected swaps",
198
+ "Gasless swaps",
199
+ ],
200
+ timestamp: new Date().toISOString(),
201
+ };
202
+ }
203
+ /**
204
+ * Create client for API calls
205
+ */
206
+ async function createClient() {
207
+ const privateKey = config.getPrivateKey();
208
+ return await HttpcatClient.create(privateKey);
209
+ }
210
+ /**
211
+ * Clear resource cache (useful for testing or forced refresh)
212
+ */
213
+ export function clearResourceCache() {
214
+ resourceCache.clear();
215
+ }
216
+ /**
217
+ * Clear a specific resource from cache
218
+ */
219
+ export function clearResourceCacheForUri(uri) {
220
+ resourceCache.delete(uri);
221
+ }
222
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/mcp/resources.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAQA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA8CpD"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAeA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAiGpD"}
@@ -1,8 +1,23 @@
1
1
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
- import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
3
+ import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
4
4
  import { getTools, handleTool } from "./tools.js";
5
+ import { checkAndOnboard } from "./onboarding.js";
6
+ import { listResources, readResource } from "./resources.js";
7
+ import { listPrompts, getPrompt } from "./context.js";
5
8
  export async function startMcpServer() {
9
+ // Check if wallet is configured, run onboarding if needed
10
+ // This must happen before creating the server to ensure we have a wallet
11
+ try {
12
+ await checkAndOnboard();
13
+ }
14
+ catch (error) {
15
+ // If onboarding fails or is cancelled, exit with error
16
+ // Write to stderr since stdout is used for MCP protocol
17
+ process.stderr.write(`\n❌ Onboarding failed: ${error.message}\n`);
18
+ process.stderr.write("MCP server cannot start without a configured wallet.\n");
19
+ process.exit(1);
20
+ }
6
21
  // Create MCP server
7
22
  const server = new Server({
8
23
  name: "httpcat-cli",
@@ -10,6 +25,8 @@ export async function startMcpServer() {
10
25
  }, {
11
26
  capabilities: {
12
27
  tools: {},
28
+ resources: {},
29
+ prompts: {},
13
30
  },
14
31
  });
15
32
  // List tools handler
@@ -26,6 +43,39 @@ export async function startMcpServer() {
26
43
  }
27
44
  return await handleTool(name, args);
28
45
  });
46
+ // List resources handler
47
+ server.setRequestHandler(ListResourcesRequestSchema, async () => {
48
+ return {
49
+ resources: listResources(),
50
+ };
51
+ });
52
+ // Read resource handler
53
+ server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
54
+ const { uri } = request.params;
55
+ return await readResource(uri);
56
+ });
57
+ // List prompts handler
58
+ server.setRequestHandler(ListPromptsRequestSchema, async () => {
59
+ return {
60
+ prompts: listPrompts(),
61
+ };
62
+ });
63
+ // Get prompt handler
64
+ server.setRequestHandler(GetPromptRequestSchema, async (request) => {
65
+ const { name, arguments: args } = request.params;
66
+ const promptText = getPrompt(name, args);
67
+ return {
68
+ messages: [
69
+ {
70
+ role: "user",
71
+ content: {
72
+ type: "text",
73
+ text: promptText,
74
+ },
75
+ },
76
+ ],
77
+ };
78
+ });
29
79
  // Set up stdio transport
30
80
  const transport = new StdioServerTransport();
31
81
  await server.connect(transport);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,oBAAoB;IACpB,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;QACE,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,QAAQ;KAClB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;SACV;KACF,CACF,CAAC;IAEF,qBAAqB;IACrB,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAC1D,OAAO;YACL,KAAK,EAAE,QAAQ,EAAE;SAClB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEjD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,yBAAyB;IACzB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAsH1D,wBAAgB,QAAQ,IAAI,IAAI,EAAE,CAiWjC;AAOD,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,GACR,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAkQ7D"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AA2R1D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,QAAQ,IAAI,IAAI,EAAE,CAy6FjC;AAOD,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,GACR,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAwrD7D"}