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,70 @@
1
+ /**
2
+ * Hook for managing command history with up/down arrow navigation
3
+ * Similar to bash history
4
+ */
5
+ import { useState } from 'react';
6
+ const MAX_HISTORY = 100;
7
+ export function useCommandHistory() {
8
+ const [history, setHistory] = useState([]);
9
+ const [index, setIndex] = useState(-1);
10
+ const [tempInput, setTempInput] = useState('');
11
+ const [currentInput, setCurrentInput] = useState('');
12
+ const navigateUp = () => {
13
+ if (history.length === 0)
14
+ return;
15
+ if (index === -1) {
16
+ // Save current input before navigating
17
+ setTempInput(currentInput);
18
+ setIndex(history.length - 1);
19
+ }
20
+ else if (index > 0) {
21
+ setIndex(index - 1);
22
+ }
23
+ };
24
+ const navigateDown = () => {
25
+ if (index === -1)
26
+ return;
27
+ if (index < history.length - 1) {
28
+ setIndex(index + 1);
29
+ }
30
+ else {
31
+ // Back to current input
32
+ setIndex(-1);
33
+ }
34
+ };
35
+ const addCommand = (command) => {
36
+ const trimmed = command.trim();
37
+ if (!trimmed)
38
+ return;
39
+ // Don't add duplicate consecutive commands
40
+ if (history.length > 0 && history[history.length - 1] === trimmed) {
41
+ setIndex(-1);
42
+ setTempInput('');
43
+ setCurrentInput('');
44
+ return;
45
+ }
46
+ setHistory((prev) => [...prev.slice(-MAX_HISTORY + 1), trimmed]);
47
+ setIndex(-1);
48
+ setTempInput('');
49
+ setCurrentInput('');
50
+ };
51
+ const setCurrentCommand = (command) => {
52
+ setCurrentInput(command);
53
+ };
54
+ const reset = () => {
55
+ setIndex(-1);
56
+ setTempInput('');
57
+ setCurrentInput('');
58
+ };
59
+ // Determine current command based on history navigation
60
+ const currentCommand = index === -1 ? currentInput : history[index];
61
+ return {
62
+ currentCommand,
63
+ addCommand,
64
+ navigateUp,
65
+ navigateDown,
66
+ setCurrentCommand,
67
+ reset,
68
+ };
69
+ }
70
+ //# sourceMappingURL=useCommandHistory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCommandHistory.js","sourceRoot":"","sources":["../../../src/ui/hooks/useCommandHistory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,WAAW,GAAG,GAAG,CAAC;AAWxB,MAAM,UAAU,iBAAiB;IAC/B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAErD,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEjC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,uCAAuC;YACvC,YAAY,CAAC,YAAY,CAAC,CAAC;YAC3B,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACrB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO;QAEzB,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,wBAAwB;YACxB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,2CAA2C;QAC3C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;YAClE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACb,YAAY,CAAC,EAAE,CAAC,CAAC;YACjB,eAAe,CAAC,EAAE,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QAED,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,YAAY,CAAC,EAAE,CAAC,CAAC;QACjB,eAAe,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,OAAe,EAAE,EAAE;QAC5C,eAAe,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,YAAY,CAAC,EAAE,CAAC,CAAC;QACjB,eAAe,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,wDAAwD;IACxD,MAAM,cAAc,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAEpE,OAAO;QACL,cAAc;QACd,UAAU;QACV,UAAU;QACV,YAAY;QACZ,iBAAiB;QACjB,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDebounce.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useDebounce.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CAczD"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Debounce hook to reduce re-renders
3
+ */
4
+ import { useState, useEffect } from 'react';
5
+ export function useDebounce(value, delay) {
6
+ const [debouncedValue, setDebouncedValue] = useState(value);
7
+ useEffect(() => {
8
+ const handler = setTimeout(() => {
9
+ setDebouncedValue(value);
10
+ }, delay);
11
+ return () => {
12
+ clearTimeout(handler);
13
+ };
14
+ }, [value, delay]);
15
+ return debouncedValue;
16
+ }
17
+ //# sourceMappingURL=useDebounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDebounce.js","sourceRoot":"","sources":["../../../src/ui/hooks/useDebounce.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,UAAU,WAAW,CAAI,KAAQ,EAAE,KAAa;IACpD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAI,KAAK,CAAC,CAAC;IAE/D,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAEnB,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLogStream.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useLogStream.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvE,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,EAAE,CAiB/D"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Hook for subscribing to LogStream messages
3
+ * Automatically subscribes on mount and unsubscribes on unmount
4
+ */
5
+ import { useState, useEffect } from 'react';
6
+ export function useLogStream(logStream) {
7
+ const [messages, setMessages] = useState([]);
8
+ useEffect(() => {
9
+ // Subscribe to new messages
10
+ const unsubscribe = logStream.subscribe((msg) => {
11
+ setMessages((prev) => [...prev, msg]);
12
+ });
13
+ // Load existing history
14
+ setMessages(logStream.getHistory());
15
+ // Cleanup subscription on unmount
16
+ return unsubscribe;
17
+ }, [logStream]);
18
+ return messages;
19
+ }
20
+ //# sourceMappingURL=useLogStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLogStream.js","sourceRoot":"","sources":["../../../src/ui/hooks/useLogStream.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5C,MAAM,UAAU,YAAY,CAAC,SAAoB;IAC/C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAe,EAAE,CAAC,CAAC;IAE3D,SAAS,CAAC,GAAG,EAAE;QACb,4BAA4B;QAC5B,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9C,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,wBAAwB;QACxB,WAAW,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;QAEpC,kCAAkC;QAClC,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVirtualScroll.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useVirtualScroll.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,YAAY,EAAE,CAAC,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,KAAK,EAAE,CAAC,EAAE,EACV,cAAc,GAAE,MAAW,GAC1B,mBAAmB,CAAC,CAAC,CAAC,CA0ExB"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Hook for virtual scrolling with auto-scroll support
3
+ * Manages scroll offset and visible items
4
+ */
5
+ import { useState, useEffect } from 'react';
6
+ export function useVirtualScroll(items, viewportHeight = 20) {
7
+ const [scrollOffset, setScrollOffset] = useState(0);
8
+ const [autoScrollEnabled, setAutoScrollEnabled] = useState(true);
9
+ // Auto-scroll to bottom when new items added
10
+ useEffect(() => {
11
+ if (autoScrollEnabled && items.length > 0) {
12
+ const maxOffset = Math.max(0, items.length - viewportHeight);
13
+ setScrollOffset(maxOffset);
14
+ }
15
+ }, [items.length, viewportHeight, autoScrollEnabled]);
16
+ const maxOffset = Math.max(0, items.length - viewportHeight);
17
+ const scrollUp = () => {
18
+ setAutoScrollEnabled(false);
19
+ setScrollOffset((prev) => Math.max(0, prev - 1));
20
+ };
21
+ const scrollDown = () => {
22
+ setScrollOffset((prev) => {
23
+ const next = Math.min(maxOffset, prev + 1);
24
+ if (next === maxOffset) {
25
+ setAutoScrollEnabled(true);
26
+ }
27
+ return next;
28
+ });
29
+ };
30
+ const scrollPageUp = () => {
31
+ setAutoScrollEnabled(false);
32
+ setScrollOffset((prev) => Math.max(0, prev - viewportHeight));
33
+ };
34
+ const scrollPageDown = () => {
35
+ setScrollOffset((prev) => {
36
+ const next = Math.min(maxOffset, prev + viewportHeight);
37
+ if (next === maxOffset) {
38
+ setAutoScrollEnabled(true);
39
+ }
40
+ return next;
41
+ });
42
+ };
43
+ const scrollToTop = () => {
44
+ setAutoScrollEnabled(false);
45
+ setScrollOffset(0);
46
+ };
47
+ const scrollToBottom = () => {
48
+ setScrollOffset(maxOffset);
49
+ setAutoScrollEnabled(true);
50
+ };
51
+ // Calculate visible items
52
+ const visibleItems = items.slice(scrollOffset, scrollOffset + viewportHeight);
53
+ // Calculate scroll percentage
54
+ const scrollPercentage = maxOffset > 0 ? Math.round((scrollOffset / maxOffset) * 100) : 100;
55
+ return {
56
+ visibleItems,
57
+ scrollPercentage,
58
+ scrollOffset,
59
+ setScrollOffset,
60
+ scrollUp,
61
+ scrollDown,
62
+ scrollPageUp,
63
+ scrollPageDown,
64
+ scrollToTop,
65
+ scrollToBottom,
66
+ isAutoScrollEnabled: autoScrollEnabled,
67
+ setAutoScrollEnabled,
68
+ };
69
+ }
70
+ //# sourceMappingURL=useVirtualScroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVirtualScroll.js","sourceRoot":"","sources":["../../../src/ui/hooks/useVirtualScroll.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/utils/admin.ts"],"names":[],"mappings":"AA+BA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAUvD;AAqDD;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAwB3C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAmB5C"}
@@ -0,0 +1,144 @@
1
+ import { config } from "../config.js";
2
+ import { BUILD_AUTHORIZED_WALLETS, BUILD_ADMIN_COMMANDS } from "./build-constants.js";
3
+ /**
4
+ * Get authorized wallet addresses from build-time constants, environment variable, or config
5
+ * @returns Array of authorized wallet addresses (case-insensitive comparison)
6
+ */
7
+ function getAuthorizedWallets() {
8
+ // Priority: build-time constant > environment variable > config file
9
+ let walletsStr = BUILD_AUTHORIZED_WALLETS || process.env.AUTHORIZED_WALLETS;
10
+ // Fall back to config file if neither build constant nor env var is set
11
+ if (!walletsStr) {
12
+ try {
13
+ walletsStr = config.get("authorizedWallets");
14
+ }
15
+ catch {
16
+ // Config might not be initialized or field doesn't exist
17
+ }
18
+ }
19
+ if (!walletsStr) {
20
+ return [];
21
+ }
22
+ // Parse comma-separated list, trim whitespace, filter empty strings
23
+ return walletsStr
24
+ .split(",")
25
+ .map((addr) => addr.trim())
26
+ .filter((addr) => addr.length > 0);
27
+ }
28
+ /**
29
+ * Check if an address is an authorized/admin address
30
+ * @param address - The address to check (will be normalized to lowercase)
31
+ * @returns true if the address is in the authorized wallets list
32
+ */
33
+ export function isAdminAddress(address) {
34
+ if (!address)
35
+ return false;
36
+ const authorizedWallets = getAuthorizedWallets();
37
+ if (authorizedWallets.length === 0) {
38
+ return false;
39
+ }
40
+ const normalizedAddress = address.toLowerCase();
41
+ return authorizedWallets.some((walletAddr) => walletAddr.toLowerCase() === normalizedAddress);
42
+ }
43
+ /**
44
+ * Default admin-only commands when HTTPCAT_ADMIN_COMMANDS is not set.
45
+ * These commands will be hidden from non-admin users by default.
46
+ */
47
+ const DEFAULT_ADMIN_COMMANDS = [
48
+ "account",
49
+ "env",
50
+ "agent",
51
+ "cat",
52
+ "portfolio",
53
+ "tools",
54
+ "market",
55
+ "security",
56
+ "risk",
57
+ "opps",
58
+ "automation",
59
+ "send",
60
+ "approve",
61
+ "trade.perps",
62
+ "trade.predictions",
63
+ "system.balances",
64
+ "cex",
65
+ "perps",
66
+ "predictions",
67
+ "create",
68
+ "claim",
69
+ "gasless-submit",
70
+ "gasless-submit-our",
71
+ "address",
72
+ "abi",
73
+ "tx",
74
+ "signature",
75
+ "multicall",
76
+ "nonce",
77
+ "gas",
78
+ "key",
79
+ "batch",
80
+ "gasless-quote",
81
+ "gasless-status",
82
+ "status",
83
+ "limits",
84
+ "sources",
85
+ "usdc",
86
+ "sol",
87
+ "wbtc",
88
+ "cbbtc",
89
+ "chat",
90
+ "trade",
91
+ "system",
92
+ ];
93
+ /**
94
+ * Get the list of admin-only commands from build-time constants, environment variable, or config
95
+ * @returns Array of command names that should be admin-only
96
+ * If HTTPCAT_ADMIN_COMMANDS is not set, returns a default list
97
+ */
98
+ export function getAdminCommands() {
99
+ // Priority: build-time constant > environment variable > config file
100
+ let commandsStr = BUILD_ADMIN_COMMANDS || process.env.HTTPCAT_ADMIN_COMMANDS;
101
+ // Fall back to config file if neither build constant nor env var is set
102
+ if (!commandsStr) {
103
+ try {
104
+ commandsStr = config.get("adminCommands");
105
+ }
106
+ catch {
107
+ // Config might not be initialized or field doesn't exist
108
+ }
109
+ }
110
+ if (!commandsStr) {
111
+ // Return default list when neither build constant, env var, nor config is set
112
+ // This ensures commands are hidden by default for non-admins
113
+ return DEFAULT_ADMIN_COMMANDS;
114
+ }
115
+ // Parse comma-separated list, trim whitespace, filter empty strings
116
+ return commandsStr
117
+ .split(",")
118
+ .map((cmd) => cmd.trim())
119
+ .filter((cmd) => cmd.length > 0);
120
+ }
121
+ /**
122
+ * Check if the currently connected account is an admin
123
+ * @returns true if the active account address matches an admin address
124
+ */
125
+ export function isCurrentUserAdmin() {
126
+ try {
127
+ // Check if wallet is configured
128
+ if (!config.isConfigured()) {
129
+ return false;
130
+ }
131
+ // Get active account
132
+ const activeAccount = config.getActiveAccount();
133
+ if (!activeAccount) {
134
+ return false;
135
+ }
136
+ // Check if address is admin
137
+ return isAdminAddress(activeAccount.address);
138
+ }
139
+ catch (error) {
140
+ // If anything fails (no accounts, config error, etc.), treat as non-admin
141
+ return false;
142
+ }
143
+ }
144
+ //# sourceMappingURL=admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/utils/admin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoSetup.d.ts","sourceRoot":"","sources":["../../src/utils/autoSetup.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAyCH;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAqEvD"}
@@ -0,0 +1,252 @@
1
+ /**
2
+ * Auto-Setup Wallet
3
+ *
4
+ * Automatically generates a seed phrase for new users without prompts.
5
+ * Displays the derived address prominently and provides comprehensive
6
+ * security messaging.
7
+ */
8
+ import chalk from "chalk";
9
+ import inquirer from "inquirer";
10
+ import { config } from "../config.js";
11
+ import { generateSeedPhrase, seedPhraseToPrivateKey, getAddressFromPrivateKey, } from "./wallet.js";
12
+ import { checkBalance } from "../commands/balances.js";
13
+ import { printCat } from "../interactive/art.js";
14
+ /**
15
+ * Strip ANSI escape codes from a string to get the actual visual length
16
+ */
17
+ function stripAnsiCodes(str) {
18
+ // eslint-disable-next-line no-control-regex
19
+ return str.replace(/\x1b\[[0-9;]*[a-zA-Z]/g, "");
20
+ }
21
+ /**
22
+ * Get the visual length of a string (without ANSI codes)
23
+ */
24
+ function visualLength(str) {
25
+ return stripAnsiCodes(str).length;
26
+ }
27
+ /**
28
+ * Format address with truncation for display
29
+ */
30
+ function formatAddressShort(address, length) {
31
+ if (address.length <= length) {
32
+ return address;
33
+ }
34
+ const start = address.slice(0, length);
35
+ const end = address.slice(-4);
36
+ return `${start}...${end}`;
37
+ }
38
+ /**
39
+ * Automatically set up a wallet for a new user
40
+ * @returns The derived wallet address
41
+ */
42
+ export async function autoSetupWallet() {
43
+ // Generate 12-word seed phrase
44
+ const seedPhrase = generateSeedPhrase(12);
45
+ // Derive first account (index 0) from seed phrase
46
+ const privateKey = seedPhraseToPrivateKey(seedPhrase, 0);
47
+ const address = getAddressFromPrivateKey(privateKey);
48
+ // Display welcome with prominent address
49
+ displayWelcomeWithAddress(address);
50
+ // Display security warnings
51
+ displaySecurityWarning(address);
52
+ // Display seed phrase with backup instructions
53
+ await displaySeedPhraseBackup(seedPhrase);
54
+ // Prompt for optional password
55
+ const password = await promptForOptionalPassword();
56
+ // Save seed phrase with password (empty string if no password)
57
+ config.setEncryptedSeedPhrase(seedPhrase, password);
58
+ // Create Account 1 (first seed-derived account)
59
+ const existingAccounts = config.getAllAccounts();
60
+ const account1Exists = existingAccounts.some((acc) => acc.index === 1);
61
+ if (!account1Exists) {
62
+ config.addAccount({
63
+ type: "seed",
64
+ index: 1,
65
+ address,
66
+ });
67
+ }
68
+ // Set password if provided
69
+ if (password) {
70
+ config.setPassword(password);
71
+ }
72
+ // Set Account 1 as active
73
+ config.setActiveAccount(1);
74
+ // Show balances for the new account
75
+ console.log();
76
+ console.log(chalk.dim("💾 Saving configuration..."));
77
+ console.log();
78
+ const activeAccount = config.getActiveAccount();
79
+ if (activeAccount) {
80
+ const activePrivateKey = config.getAccountPrivateKey(1);
81
+ const balance = await checkBalance(activePrivateKey, true);
82
+ console.log(chalk.bold.cyan("💰 Wallet Balances:"));
83
+ console.log();
84
+ console.log(chalk.dim(" ETH: ") + chalk.yellow(balance.ethFormatted));
85
+ console.log(chalk.dim(" USDC: ") + chalk.green(`$${balance.usdcFormatted}`));
86
+ if (balance.cat402Formatted !== undefined) {
87
+ console.log(chalk.dim(" CAT: ") + chalk.magenta(balance.cat402Formatted));
88
+ }
89
+ console.log();
90
+ }
91
+ console.log(chalk.green("✅ Wallet configured successfully!"));
92
+ console.log(chalk.dim(" Config saved to:") + " " + chalk.cyan(config.getConfigPath()));
93
+ console.log();
94
+ return address;
95
+ }
96
+ /**
97
+ * Display welcome message with prominent address display
98
+ */
99
+ function displayWelcomeWithAddress(address) {
100
+ console.log();
101
+ // Display party cat
102
+ printCat("party");
103
+ // Welcome banner box (80 chars wide)
104
+ const boxWidth = 80;
105
+ const welcomeText = "🐱 Welcome to httpcat!";
106
+ const welcomeTextLength = visualLength(welcomeText);
107
+ const padding = Math.floor((boxWidth - welcomeTextLength - 2) / 2);
108
+ const leftPadding = " ".repeat(padding);
109
+ const rightPadding = " ".repeat(boxWidth - welcomeTextLength - padding - 2);
110
+ console.log(chalk.cyan.bold("╔" + "═".repeat(boxWidth - 2) + "╗"));
111
+ console.log(chalk.cyan.bold("║") + " ".repeat(boxWidth - 2) + chalk.cyan.bold("║"));
112
+ console.log(chalk.cyan.bold("║") + leftPadding + welcomeText + rightPadding + chalk.cyan.bold("║"));
113
+ console.log(chalk.cyan.bold("║") + " ".repeat(boxWidth - 2) + chalk.cyan.bold("║"));
114
+ console.log(chalk.cyan.bold("╚" + "═".repeat(boxWidth - 2) + "╝"));
115
+ console.log();
116
+ console.log(chalk.bold.green("✨ Your wallet has been automatically created! ✨"));
117
+ console.log();
118
+ console.log(chalk.bold.yellow("📍 Send USDC or ETH to this address:"));
119
+ console.log();
120
+ // Display address in a prominent box (80 chars wide)
121
+ const addressLength = visualLength(address);
122
+ const addressPadding = Math.floor((boxWidth - addressLength - 2) / 2);
123
+ const addressLeftPadding = " ".repeat(addressPadding);
124
+ const addressRightPadding = " ".repeat(boxWidth - addressLength - addressPadding - 2);
125
+ console.log(chalk.cyan("┌" + "─".repeat(boxWidth - 2) + "┐"));
126
+ console.log(chalk.cyan("│") + " ".repeat(boxWidth - 2) + chalk.cyan("│"));
127
+ console.log(chalk.cyan("│") + addressLeftPadding + chalk.bold.cyan(address) + addressRightPadding + chalk.cyan("│"));
128
+ console.log(chalk.cyan("│") + " ".repeat(boxWidth - 2) + chalk.cyan("│"));
129
+ console.log(chalk.cyan("└" + "─".repeat(boxWidth - 2) + "┘"));
130
+ console.log();
131
+ // Show truncated address for easy copying
132
+ console.log(chalk.dim(" Short format: ") + chalk.cyan(formatAddressShort(address, 12)));
133
+ console.log(chalk.dim(" Full address: ") + chalk.cyan(address));
134
+ console.log();
135
+ }
136
+ /**
137
+ * Display comprehensive security and privacy information
138
+ */
139
+ function displaySecurityWarning(address) {
140
+ console.log(chalk.bold.cyan("🔐 Security & Privacy Information"));
141
+ console.log();
142
+ console.log(chalk.bold.yellow("⚠️ CRITICAL: Your seed phrase was generated locally on THIS computer"));
143
+ console.log();
144
+ console.log(chalk.white(" • Your seed phrase was generated using cryptographically secure random"));
145
+ console.log(chalk.white(" number generation on your local machine"));
146
+ console.log(chalk.white(" • It has NEVER been and will NEVER be transmitted to any server,"));
147
+ console.log(chalk.white(" third party, or external service"));
148
+ console.log(chalk.white(" • Your seed phrase is stored locally at:"));
149
+ console.log(chalk.cyan(` ${config.getConfigPath()}`));
150
+ console.log(chalk.white(" • All cryptographic operations (key generation, signing) happen"));
151
+ console.log(chalk.white(" entirely on your device"));
152
+ console.log();
153
+ console.log(chalk.bold.red("⚠️ WARNING: If you lose your seed phrase, you will permanently"));
154
+ console.log(chalk.bold.red(" lose access to your wallet and all funds"));
155
+ console.log();
156
+ console.log(chalk.white(" • Backup your seed phrase in a secure location:"));
157
+ console.log(chalk.white(" - Password manager (1Password, Bitwarden, etc.)"));
158
+ console.log(chalk.white(" - Hardware wallet backup"));
159
+ console.log(chalk.white(" - Physical safe or secure location"));
160
+ console.log(chalk.white(" • Never share your seed phrase with anyone"));
161
+ console.log(chalk.white(" • Never enter it on any website or application"));
162
+ console.log();
163
+ console.log(chalk.bold.cyan("🔑 Password Protection (Optional)"));
164
+ console.log();
165
+ console.log(chalk.white(" • Password protection is optional"));
166
+ console.log(chalk.white(" • Press Enter during password prompt to skip password"));
167
+ console.log(chalk.white(" • Your keys will still be encrypted even without a password"));
168
+ console.log(chalk.white(" • If you set a password, you'll need it to unlock your wallet"));
169
+ console.log(chalk.white(" for transactions (session timeout: 15 minutes)"));
170
+ console.log();
171
+ }
172
+ /**
173
+ * Display seed phrase with backup instructions
174
+ */
175
+ async function displaySeedPhraseBackup(seedPhrase) {
176
+ console.log(chalk.bold.red("⚠️ BACKUP YOUR SEED PHRASE NOW"));
177
+ console.log();
178
+ console.log(chalk.yellow(" Write down these 12 words in the exact order shown:"));
179
+ console.log();
180
+ // Display seed phrase in a box (80 chars wide)
181
+ const boxWidth = 80;
182
+ const words = seedPhrase.split(" ");
183
+ const wordsPerRow = 3;
184
+ const rows = Math.ceil(words.length / wordsPerRow);
185
+ console.log(chalk.cyan("┌" + "─".repeat(boxWidth - 2) + "┐"));
186
+ console.log(chalk.cyan("│") + " ".repeat(boxWidth - 2) + chalk.cyan("│"));
187
+ for (let i = 0; i < rows; i++) {
188
+ const rowWords = words.slice(i * wordsPerRow, (i + 1) * wordsPerRow);
189
+ const rowParts = rowWords.map((word, idx) => {
190
+ const num = i * wordsPerRow + idx + 1;
191
+ return `${chalk.dim(num.toString().padStart(2, "0") + ".")} ${chalk.bold.cyan(word)}`;
192
+ });
193
+ // Join with consistent spacing (3 spaces between items)
194
+ const rowText = rowParts.join(" ");
195
+ const rowTextLength = visualLength(rowText);
196
+ const padding = boxWidth - rowTextLength - 3; // 3 = │ + space + space
197
+ const leftPadding = " "; // 2 spaces for left padding
198
+ const rightPadding = " ".repeat(Math.max(0, padding - 2));
199
+ console.log(chalk.cyan("│") + leftPadding + rowText + rightPadding + chalk.cyan("│"));
200
+ }
201
+ console.log(chalk.cyan("│") + " ".repeat(boxWidth - 2) + chalk.cyan("│"));
202
+ console.log(chalk.cyan("└" + "─".repeat(boxWidth - 2) + "┘"));
203
+ console.log();
204
+ // Confirm they saved it
205
+ const confirmed = await inquirer.prompt([
206
+ {
207
+ type: "confirm",
208
+ name: "saved",
209
+ message: chalk.yellow("Have you written down your seed phrase in a secure location?"),
210
+ default: false,
211
+ },
212
+ ]);
213
+ if (!confirmed.saved) {
214
+ console.log();
215
+ console.log(chalk.yellow("🐱 The cat wants you to be safe! Please write it down first."));
216
+ throw new Error("You must save your seed phrase before continuing.");
217
+ }
218
+ console.log();
219
+ }
220
+ /**
221
+ * Prompt for optional password
222
+ */
223
+ async function promptForOptionalPassword() {
224
+ console.log(chalk.bold.cyan("🔐 Password Protection (Optional)"));
225
+ console.log();
226
+ console.log(chalk.dim(" • Set a password to encrypt your wallet"));
227
+ console.log(chalk.dim(" • Press Enter to skip password (your keys will still be encrypted)"));
228
+ console.log(chalk.dim(" • You'll be prompted to unlock when needed\n"));
229
+ const answers = await inquirer.prompt([
230
+ {
231
+ type: "password",
232
+ name: "password",
233
+ message: "Enter password (optional - press Enter to skip):",
234
+ mask: "•",
235
+ },
236
+ {
237
+ type: "password",
238
+ name: "confirmPassword",
239
+ message: "Confirm password (or press Enter to skip):",
240
+ mask: "•",
241
+ when: (answers) => answers.password !== "",
242
+ },
243
+ ]);
244
+ if (answers.password) {
245
+ if (answers.password !== answers.confirmPassword) {
246
+ throw new Error("Passwords do not match");
247
+ }
248
+ return answers.password;
249
+ }
250
+ return "";
251
+ }
252
+ //# sourceMappingURL=autoSetup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoSetup.js","sourceRoot":"","sources":["../../src/utils/autoSetup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-constants.d.ts","sourceRoot":"","sources":["../../src/utils/build-constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,wBAAwB,EAAE,MAAM,GAAG,SAAqB,CAAC;AACtE,eAAO,MAAM,oBAAoB,EAAE,MAAM,GAAG,SAAqB,CAAC"}