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,417 @@
1
+ #!/bin/bash
2
+
3
+ # 402.cat - cats trick you then show you their butt
4
+ # Press Ctrl+C to stop
5
+
6
+ clear
7
+ trap "tput cnorm; clear; exit" SIGINT
8
+ tput civis
9
+
10
+ LOGO='
11
+ ██╗ ██╗ ██████╗ ██████╗ ██████╗ █████╗ ████████╗
12
+ ██║ ██║██╔═████╗╚════██╗ ██╔════╝██╔══██╗╚══██╔══╝
13
+ ███████║██║██╔██║ █████╔╝ ██║ ███████║ ██║
14
+ ╚════██║████╔╝██║██╔═══╝ ██║ ██╔══██║ ██║
15
+ ██║╚██████╔╝███████╗ ██╗ ╚██████╗██║ ██║ ██║
16
+ ╚═╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝
17
+ '
18
+
19
+ while true; do
20
+
21
+ # Cute cats vibing
22
+ for i in 1 2 3 4 5 6; do
23
+ clear
24
+ if (( i % 2 == 0 )); then
25
+ echo '
26
+ ✦ . ⁺ . ✦ . ⁺ . ✦
27
+ ⁺ . ╱|、 ✧ ╱|、 . ⁺
28
+ ✦ (˚ˎ。7 ✦ (˚ˎ。7 ✦
29
+ . |、˜〵$$$|、˜〵 .
30
+ ⁺ じしˍ,)ノ じしˍ,)ノ ⁺
31
+ ✦ . 4 0 2 . c a t . ✦
32
+ ✦ . ⁺ . ✦ . ⁺ . ✦
33
+ '
34
+ else
35
+ echo '
36
+ . ⁺ ✦ . ⁺ ✦ . ⁺ ✦ .
37
+ . ╱|、 ⁺ ╱|、 .
38
+ ⁺ (˚ˎ。7 . (˚ˎ。7 ⁺
39
+ ✦ |、˜〵$$$|、˜〵 ✦
40
+ . じしˍ,)ノ じしˍ,)ノ .
41
+ ⁺ ✦ 4 0 2 . c a t ✦ ⁺
42
+ . ⁺ ✦ . ⁺ ✦ . ⁺ ✦ .
43
+ '
44
+ fi
45
+ sleep 0.18
46
+ done
47
+
48
+ # Cat looks at you... beckons
49
+ clear
50
+ echo '
51
+
52
+
53
+ ⁺ . ╱|、 ✧ ╱|、 .
54
+ ✦ (˚ˎ。7 (˚ˎ-7 ~♡
55
+ . |、˜〵 |、˜〵
56
+ ⁺ じしˍ,) じしˍ,)ノ
57
+ come here~
58
+ '
59
+ sleep 0.5
60
+
61
+ # Cats start walking away - you see their backs
62
+ clear
63
+ echo '
64
+
65
+
66
+ ∧_∧ ∧_∧
67
+ ( ・ω・) ( ・ω・)
68
+ _| ⊃/(___| ⊃/(___
69
+ / └-(____/ └-(____/
70
+ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
71
+ '
72
+ sleep 0.2
73
+
74
+ # Walking away... tails swishing
75
+ clear
76
+ echo '
77
+
78
+
79
+ ∧_∧ ∧_∧ ~
80
+ ( ) ( )
81
+ _| ⊃/___| ⊃/___
82
+ / └-(___/ └-(___/
83
+ '
84
+ sleep 0.15
85
+
86
+ clear
87
+ echo '
88
+
89
+
90
+ ∧_∧ ∧_∧
91
+ ( ) ( ) ~
92
+ _| ⊃/___| ⊃/___
93
+ / └-(___/ └-(___/
94
+ '
95
+ sleep 0.15
96
+
97
+ # Getting further...
98
+ clear
99
+ echo '
100
+
101
+
102
+
103
+ ∧∧ ∧∧ ~
104
+ ( ) ( )
105
+ ~~ ~~
106
+ '
107
+ sleep 0.12
108
+
109
+ clear
110
+ echo '
111
+
112
+
113
+
114
+
115
+ ∧∧ ∧∧ ~
116
+ () ()
117
+ '
118
+ sleep 0.12
119
+
120
+ # Almost gone... you follow
121
+ clear
122
+ echo '
123
+
124
+
125
+
126
+
127
+
128
+ . . ~
129
+ '
130
+ sleep 0.2
131
+
132
+ # You're following...
133
+ clear
134
+ echo '
135
+
136
+
137
+
138
+
139
+ . .
140
+
141
+ ( you follow )
142
+ '
143
+ sleep 0.3
144
+
145
+ # Cat appears - walking toward you but looking back (luring)
146
+ clear
147
+ echo '
148
+
149
+
150
+ ∧∧
151
+ (ω ) ~
152
+ || )
153
+ ~~
154
+ pspsps
155
+ '
156
+ sleep 0.2
157
+
158
+ # Closer... cat looking back at you
159
+ clear
160
+ echo '
161
+
162
+ /\_/\
163
+ ( -.- ) ♡
164
+ /> >\ ~
165
+ follow me~
166
+ '
167
+ sleep 0.25
168
+
169
+ # Cat turns around - you see its back getting closer
170
+ clear
171
+ echo '
172
+
173
+ /\_/\
174
+ ( )
175
+ | | ~
176
+ /| |\
177
+ '
178
+ sleep 0.15
179
+
180
+ # Getting real close now - cat from behind
181
+ clear
182
+ echo '
183
+ /\_/\
184
+ / \
185
+ ( )
186
+ | | | ~
187
+ / | \
188
+ / | \
189
+ '
190
+ sleep 0.12
191
+
192
+ # Cat stops... lifts tail
193
+ clear
194
+ echo '
195
+ /\_/\
196
+ / \
197
+ ( )
198
+ | | |
199
+ | /| |
200
+ / | \
201
+ / | \
202
+ |
203
+ '
204
+ sleep 0.1
205
+
206
+ # Tail going up...
207
+ clear
208
+ echo '
209
+ /\_/\
210
+ / \
211
+ ( ) |
212
+ | | /
213
+ | | /
214
+ / \ |
215
+ / \
216
+ '
217
+ sleep 0.1
218
+
219
+ # TAIL UP - here it comes
220
+ clear
221
+ echo '
222
+ /\_/\ |
223
+ / \ /
224
+ ( ) /
225
+ | | |
226
+ | |
227
+ / ( ) \
228
+ / ~~~ \
229
+ / \
230
+ '
231
+ sleep 0.1
232
+
233
+ # THE PRESENTATION - zooming in
234
+ clear
235
+ echo '
236
+ /\_/\ /
237
+ / \ /
238
+ / \ |
239
+ ( ) |
240
+ | |
241
+ | |
242
+ / ( * ) \
243
+ / ~~~ \
244
+ '
245
+ sleep 0.1
246
+
247
+ # CLOSER
248
+ clear
249
+ echo '
250
+ /\ /\ /
251
+ / \ / \ /
252
+ / \_/ \ |
253
+ | | |
254
+ | |
255
+ | |
256
+ | ( * ) |
257
+ \ ~~~ /
258
+ \ | | /
259
+ '
260
+ sleep 0.1
261
+
262
+ # FULL BUTT - unmistakable cat presenting
263
+ clear
264
+ echo '
265
+ /\ /\ |
266
+ / \ / \ /
267
+ / \_____/ \ /
268
+ | | |
269
+ | | |
270
+ | |
271
+ | |
272
+ | ( * ) |
273
+ | ~~ |
274
+ \ /
275
+ \ | | /
276
+ \ | | /
277
+ \_| |_/
278
+ '
279
+ sleep 0.15
280
+
281
+ # Even bigger - fills screen
282
+ clear
283
+ echo '
284
+ /\ /\ |
285
+ / \ / \ /
286
+ / \ / \ /
287
+ / \_______/ \ |
288
+ | | |
289
+ | |
290
+ | |
291
+ | |
292
+ | |
293
+ | ( * ) |
294
+ | ~~~~ |
295
+ \ /
296
+ \ /
297
+ \ | | /
298
+ \ | | /
299
+ \__| |__/
300
+ '
301
+ sleep 0.2
302
+
303
+ # THE FULL GLORY
304
+ CAT_BUTT='
305
+ /\ /\ |
306
+ / \ / \ /
307
+ / \ / \ /
308
+ / \___________/ \ |
309
+ | | |
310
+ | |
311
+ | |
312
+ | |
313
+ | |
314
+ | |
315
+ | ( * ) |
316
+ | ~~~~~ |
317
+ \ /
318
+ \ /
319
+ \ /
320
+ \ | | /
321
+ \ | | /
322
+ \__| |__/
323
+ '
324
+ clear
325
+ echo "$CAT_BUTT"
326
+ sleep 0.4
327
+
328
+ # Add logo
329
+ clear
330
+ echo "$CAT_BUTT"
331
+ echo "$LOGO"
332
+ sleep 1.5
333
+
334
+ # Tail wag with butt
335
+ for w in 1 2 3 4 5 6; do
336
+ clear
337
+ if (( w % 2 == 0 )); then
338
+ echo '
339
+ /\ /\ \
340
+ / \ / \ \
341
+ / \ / \ |
342
+ / \___________/ \ |
343
+ | |
344
+ | |
345
+ | |
346
+ | |
347
+ | |
348
+ | |
349
+ | ( * ) |
350
+ | ~~~~~ |
351
+ \ /
352
+ \ /
353
+ \ /
354
+ \ | | /
355
+ \ | | /
356
+ \__| |__/
357
+ '
358
+ else
359
+ echo '
360
+ /\ /\ |
361
+ / \ / \ /
362
+ / \ / \ /
363
+ / \___________/ \ |
364
+ | |
365
+ | |
366
+ | |
367
+ | |
368
+ | |
369
+ | |
370
+ | ( * ) |
371
+ | ~~~~~ |
372
+ \ /
373
+ \ /
374
+ \ /
375
+ \ | | /
376
+ \ | | /
377
+ \__| |__/
378
+ '
379
+ fi
380
+ echo "$LOGO"
381
+ sleep 0.15
382
+ done
383
+
384
+ # Wink
385
+ clear
386
+ echo '
387
+ /\ /\ |
388
+ / \ / \ /
389
+ / \ / \ /
390
+ / \___________/ \ |
391
+ | | |
392
+ | |
393
+ | |
394
+ | |
395
+ | |
396
+ | |
397
+ | ( - ) |
398
+ | ~~~~~ |
399
+ \ /
400
+ \ /
401
+ \ /
402
+ \ | | /
403
+ \ | | /
404
+ \__| |__/
405
+ '
406
+ echo "$LOGO"
407
+ sleep 0.12
408
+
409
+ clear
410
+ echo "$CAT_BUTT"
411
+ echo "$LOGO"
412
+ sleep 2
413
+
414
+ clear
415
+ sleep 0.1
416
+
417
+ done
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Deprecate all RC versions on npm
4
+ * This marks them as deprecated but doesn't remove them
5
+ */
6
+
7
+ import { execSync } from 'child_process';
8
+
9
+ const PACKAGE_NAME = 'httpcat-cli';
10
+ const DEPRECATION_MESSAGE = 'This RC version has been deprecated. Please use the latest release version.';
11
+
12
+ async function deprecateRcVersions() {
13
+ try {
14
+ console.log('Fetching all versions from npm...');
15
+ const versionsJson = execSync(`npm view ${PACKAGE_NAME} versions --json`, { encoding: 'utf-8' });
16
+ const allVersions = JSON.parse(versionsJson);
17
+
18
+ // Filter for RC versions
19
+ const rcVersions = allVersions.filter((v) => v.includes('-rc.'));
20
+
21
+ console.log(`Found ${rcVersions.length} RC versions to deprecate\n`);
22
+
23
+ if (rcVersions.length === 0) {
24
+ console.log('No RC versions found.');
25
+ return;
26
+ }
27
+
28
+ // Deprecate each RC version
29
+ let successCount = 0;
30
+ let failCount = 0;
31
+
32
+ for (const version of rcVersions) {
33
+ try {
34
+ console.log(`Deprecating ${version}...`);
35
+ execSync(
36
+ `npm deprecate ${PACKAGE_NAME}@${version} "${DEPRECATION_MESSAGE}"`,
37
+ { stdio: 'inherit' }
38
+ );
39
+ successCount++;
40
+ // Small delay to avoid rate limiting
41
+ await new Promise((resolve) => setTimeout(resolve, 100));
42
+ } catch (error) {
43
+ console.error(`Failed to deprecate ${version}:`, error.message);
44
+ failCount++;
45
+ }
46
+ }
47
+
48
+ console.log(`\n✅ Deprecated ${successCount} RC versions`);
49
+ if (failCount > 0) {
50
+ console.log(`⚠️ Failed to deprecate ${failCount} RC versions`);
51
+ }
52
+ } catch (error) {
53
+ console.error('Error:', error.message);
54
+ process.exit(1);
55
+ }
56
+ }
57
+
58
+ deprecateRcVersions();
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Build-time script to inject environment variables into build-constants.ts
4
+ * This bakes the values directly into the compiled code.
5
+ */
6
+
7
+ import { readFileSync, writeFileSync } from 'fs';
8
+ import { join, dirname } from 'path';
9
+ import { fileURLToPath } from 'url';
10
+
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = dirname(__filename);
13
+ const rootDir = join(__dirname, '..');
14
+ const constantsFile = join(rootDir, 'src', 'utils', 'build-constants.ts');
15
+
16
+ // Get values from environment variables
17
+ const authorizedWallets = process.env.AUTHORIZED_WALLETS || '';
18
+ const adminCommands = process.env.HTTPCAT_ADMIN_COMMANDS || '';
19
+
20
+ // Generate the constants file with actual values
21
+ const content = `/**
22
+ * Build-time constants
23
+ * These values are injected at build time from environment variables
24
+ * and baked into the compiled code.
25
+ *
26
+ * DO NOT EDIT THIS FILE MANUALLY - it is generated by scripts/inject-build-constants.js
27
+ */
28
+
29
+ ${authorizedWallets ? `export const BUILD_AUTHORIZED_WALLETS: string = ${JSON.stringify(authorizedWallets)};` : 'export const BUILD_AUTHORIZED_WALLETS: string | undefined = undefined;'}
30
+ ${adminCommands ? `export const BUILD_ADMIN_COMMANDS: string = ${JSON.stringify(adminCommands)};` : 'export const BUILD_ADMIN_COMMANDS: string | undefined = undefined;'}
31
+ `;
32
+
33
+ writeFileSync(constantsFile, content, 'utf-8');
34
+ console.log('✅ Injected build-time constants:');
35
+ if (authorizedWallets) {
36
+ console.log(` AUTHORIZED_WALLETS: ${authorizedWallets}`);
37
+ }
38
+ if (adminCommands) {
39
+ console.log(` HTTPCAT_ADMIN_COMMANDS: ${adminCommands}`);
40
+ }
41
+ if (!authorizedWallets && !adminCommands) {
42
+ console.log(' (no build-time constants set)');
43
+ }
@@ -0,0 +1,117 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Monitor FRIDA chat for mentions of "foobar"
5
+ *
6
+ * Usage:
7
+ * node monitor-foobar.js
8
+ */
9
+
10
+ import { spawn } from "child_process";
11
+ import { fileURLToPath } from "url";
12
+ import { dirname } from "path";
13
+
14
+ const __filename = fileURLToPath(import.meta.url);
15
+ const __dirname = dirname(__filename);
16
+
17
+ const TOKEN = "FRIDA";
18
+ const SEARCH_TERM = "foobar";
19
+
20
+ console.error(`🔍 Monitoring FRIDA chat for mentions of "${SEARCH_TERM}"...`);
21
+ console.error(`Press Ctrl+C to stop monitoring\n`);
22
+
23
+ // Spawn httpcat chat process
24
+ const chatProcess = spawn("httpcat", ["chat", "--json", TOKEN], {
25
+ stdio: ["pipe", "pipe", "inherit"],
26
+ shell: true,
27
+ });
28
+
29
+ let outputBuffer = "";
30
+ let seenMessageIds = new Set();
31
+
32
+ chatProcess.stdout.on("data", (data) => {
33
+ outputBuffer += data.toString();
34
+ const lines = outputBuffer.split("\n");
35
+ outputBuffer = lines.pop() || "";
36
+
37
+ for (const line of lines) {
38
+ if (!line.trim()) continue;
39
+
40
+ try {
41
+ const event = JSON.parse(line);
42
+
43
+ switch (event.type) {
44
+ case "joined":
45
+ console.error(`✅ Joined FRIDA chat. Lease ID: ${event.leaseId}`);
46
+ console.error(`📡 Monitoring for "${SEARCH_TERM}" mentions...\n`);
47
+ break;
48
+
49
+ case "message":
50
+ const msg = event.data;
51
+
52
+ // Skip if we've already seen this message
53
+ if (seenMessageIds.has(msg.messageId)) {
54
+ break;
55
+ }
56
+ seenMessageIds.add(msg.messageId);
57
+
58
+ // Check if message contains search term (case-insensitive)
59
+ if (msg.message.toLowerCase().includes(SEARCH_TERM.toLowerCase())) {
60
+ const author = msg.authorShort || msg.author?.slice(0, 10);
61
+ const time = new Date(msg.timestamp).toLocaleString();
62
+
63
+ console.error("\n" + "=".repeat(60));
64
+ console.error(`🎯 FOUND "${SEARCH_TERM}" MENTION!`);
65
+ console.error("=".repeat(60));
66
+ console.error(`Time: ${time}`);
67
+ console.error(`Author: ${author}`);
68
+ console.error(`Message: ${msg.message}`);
69
+ console.error("=".repeat(60) + "\n");
70
+ }
71
+ break;
72
+
73
+ case "lease_expired":
74
+ console.error("⏱️ Lease expired. Sending /renew...");
75
+ if (chatProcess.stdin && !chatProcess.stdin.destroyed) {
76
+ chatProcess.stdin.write("/renew\n");
77
+ }
78
+ break;
79
+
80
+ case "error":
81
+ console.error(`❌ Error: ${event.error}`);
82
+ break;
83
+
84
+ case "exiting":
85
+ console.error("👋 Chat session ended");
86
+ process.exit(0);
87
+ break;
88
+ }
89
+ } catch (error) {
90
+ // Not JSON, ignore
91
+ }
92
+ }
93
+ });
94
+
95
+ chatProcess.on("error", (error) => {
96
+ console.error(`❌ Failed to start chat process: ${error.message}`);
97
+ process.exit(1);
98
+ });
99
+
100
+ chatProcess.on("exit", (code) => {
101
+ if (code !== 0 && code !== null) {
102
+ console.error(`Chat process exited with code ${code}`);
103
+ }
104
+ process.exit(code || 0);
105
+ });
106
+
107
+ // Handle Ctrl+C
108
+ process.on("SIGINT", () => {
109
+ console.error("\n👋 Stopping monitor...");
110
+ if (chatProcess.stdin && !chatProcess.stdin.destroyed) {
111
+ chatProcess.stdin.write("/exit\n");
112
+ }
113
+ setTimeout(() => {
114
+ chatProcess.kill();
115
+ process.exit(0);
116
+ }, 1000);
117
+ });
package/swap.logs ADDED
@@ -0,0 +1,61 @@
1
+ [HttpcatClient.create] Network: eip155:8453
2
+ [HttpcatClient.create] Network CAIP-2: eip155:8453
3
+ [HttpcatClient.create] Max payment: 10.00 USDC
4
+ [HttpcatClient.create] Signer address: 0xc782D2727784De7ff0e65EDA5B491FF26cA569Fe
5
+ [HttpcatClient.create] x402Client created and EVM scheme registered for network: eip155:8453
6
+ [HttpcatClient.create] fetch wrapped with payment handling
7
+ Swapping tokens...- Processing swap...
8
+ Resolving tokens...
9
+ [token-resolver] Calling token_info with identifier: "WETH"
10
+ [HttpcatClient.invoke] Entrypoint: token_info
11
+ [HttpcatClient.invoke] Input object: {
12
+ "tokenIdentifier": "WETH"
13
+ }
14
+ [HttpcatClient.invoke] Input type: object
15
+ [HttpcatClient.invoke] Input keys: [ 'tokenIdentifier' ]
16
+ [HttpcatClient.invoke] Input.tokenId: undefined
17
+ [HttpcatClient.invoke] Request URL: http://localhost:8787/entrypoints/token_info/invoke
18
+ [HttpcatClient.invoke] Request method: POST
19
+ [HttpcatClient.invoke] Request headers: {
20
+ "Content-Type": "application/json"
21
+ }
22
+ [HttpcatClient.invoke] Request body: {"input":{"tokenIdentifier":"WETH"}}
23
+ [HttpcatClient.invoke] Making initial request to detect 402...
24
+ [HttpcatClient.invoke] Response received - status: 404
25
+ [HttpcatClient.invoke] Response headers: {
26
+ 'access-control-allow-origin': '*',
27
+ 'content-encoding': 'gzip',
28
+ 'content-type': 'application/json',
29
+ date: 'Mon, 05 Jan 2026 20:32:26 GMT',
30
+ 'transfer-encoding': 'chunked',
31
+ vary: 'accept-encoding, origin, access-control-request-method, access-control-request-headers'
32
+ }
33
+ [HttpcatClient.invoke] Response body (first 500 chars): {"error":{"code":"NOT_FOUND","message":"Resource not found: Token not found: WETH"}}
34
+ [HttpcatClient.invoke] Entrypoint: list_tokens
35
+ [HttpcatClient.invoke] Input object: {
36
+ "page": 1,
37
+ "limit": 500,
38
+ "sortBy": "created"
39
+ }
40
+ [HttpcatClient.invoke] Input type: object
41
+ [HttpcatClient.invoke] Input keys: [ 'page', 'limit', 'sortBy' ]
42
+ [HttpcatClient.invoke] Input.tokenId: undefined
43
+ [HttpcatClient.invoke] Request URL: http://localhost:8787/entrypoints/list_tokens/invoke
44
+ [HttpcatClient.invoke] Request method: POST
45
+ [HttpcatClient.invoke] Request headers: {
46
+ "Content-Type": "application/json"
47
+ }
48
+ [HttpcatClient.invoke] Request body: {"input":{"page":1,"limit":500,"sortBy":"created"}}
49
+ [HttpcatClient.invoke] Making initial request to detect 402...
50
+ [HttpcatClient.invoke] Response received - status: 200
51
+ [HttpcatClient.invoke] Response headers: {
52
+ 'access-control-allow-origin': '*',
53
+ 'content-encoding': 'gzip',
54
+ 'content-type': 'application/json',
55
+ date: 'Mon, 05 Jan 2026 20:32:26 GMT',
56
+ 'transfer-encoding': 'chunked',
57
+ vary: 'accept-encoding, origin, access-control-request-method, access-control-request-headers'
58
+ }
59
+ [HttpcatClient.invoke] Response body (first 500 chars): {"output":{"tokens":[{"tokenId":"5753014b-4902-45f1-97a5-8d91d505c2c8","name":"Toby","symbol":"FEQV","address":"0x41b2684d3e93b4e60ad3acd3c4149a5e52d90402","status":"active","creatorAddress":"0xd4b8a29d77d8061b7deec2e94ec6725f3cf87b30","totalSupply":"1000000000000000000000000","mcap":"18662042","price":"0.0000186620421436389909822488","graduationProgress":18.477269306930694,"createdAt":"2026-01-03T20:12:41.645896+00:00","entrypointKey":"FEQV"},{"tokenId":"db42abca-84e6-4cc6-9c1e-2f85d4ad7bee","n
60
+ ✖ Processing swap...
61
+ ❌ Error: No token found with name or symbol: "WETH". Please check the token name/symbol or use address, name, or symbol.