httpcat-cli 0.3.0-rc.9 → 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.
- package/.github/workflows/ci.yml +3 -0
- package/.github/workflows/rc-publish.yml +6 -0
- package/.github/workflows/release.yml +6 -0
- package/README.md +1306 -130
- package/bun.lock +2 -2
- package/dist/agent/ax-agent.d.ts.map +1 -1
- package/dist/agent/ax-agent.js +64 -1
- package/dist/agent/ax-agent.js.map +1 -1
- package/dist/agent/tools.d.ts.map +1 -1
- package/dist/agent/tools.js +107 -7
- package/dist/agent/tools.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +258 -11
- package/dist/client.js.map +1 -1
- package/dist/commands/account.d.ts.map +1 -1
- package/dist/commands/account.js +34 -14
- package/dist/commands/account.js.map +1 -1
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +114 -247
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/approve.d.ts.map +1 -0
- package/dist/commands/approve.js +505 -0
- package/dist/commands/approve.js.map +1 -0
- package/dist/commands/automation.d.ts.map +1 -0
- package/dist/commands/automation.js +346 -0
- package/dist/commands/automation.js.map +1 -0
- package/dist/commands/balances.d.ts.map +1 -1
- package/dist/commands/balances.js +31 -8
- package/dist/commands/balances.js.map +1 -1
- package/dist/commands/buy.d.ts.map +1 -1
- package/dist/commands/buy.js +88 -115
- package/dist/commands/buy.js.map +1 -1
- package/dist/commands/call.d.ts.map +1 -0
- package/dist/commands/call.js +51 -0
- package/dist/commands/call.js.map +1 -0
- package/dist/commands/cex.d.ts.map +1 -0
- package/dist/commands/cex.js +958 -0
- package/dist/commands/cex.js.map +1 -0
- package/dist/commands/claim.d.ts.map +1 -1
- package/dist/commands/claim.js +231 -4
- package/dist/commands/claim.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +88 -3
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/gasless-swap.d.ts.map +1 -0
- package/dist/commands/gasless-swap.js +232 -0
- package/dist/commands/gasless-swap.js.map +1 -0
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +58 -4
- package/dist/commands/health.js.map +1 -1
- package/dist/commands/info.js +1 -1
- package/dist/commands/info.js.map +1 -1
- package/dist/commands/launchpad.d.ts.map +1 -0
- package/dist/commands/launchpad.js +708 -0
- package/dist/commands/launchpad.js.map +1 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +1 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/market.d.ts.map +1 -0
- package/dist/commands/market.js +960 -0
- package/dist/commands/market.js.map +1 -0
- package/dist/commands/mcp-install.d.ts.map +1 -0
- package/dist/commands/mcp-install.js +387 -0
- package/dist/commands/mcp-install.js.map +1 -0
- package/dist/commands/opps.d.ts.map +1 -0
- package/dist/commands/opps.js +409 -0
- package/dist/commands/opps.js.map +1 -0
- package/dist/commands/perps.d.ts.map +1 -0
- package/dist/commands/perps.js +248 -0
- package/dist/commands/perps.js.map +1 -0
- package/dist/commands/portfolio.d.ts.map +1 -0
- package/dist/commands/portfolio.js +679 -0
- package/dist/commands/portfolio.js.map +1 -0
- package/dist/commands/positions.js +1 -1
- package/dist/commands/positions.js.map +1 -1
- package/dist/commands/predict.d.ts.map +1 -0
- package/dist/commands/predict.js +280 -0
- package/dist/commands/predict.js.map +1 -0
- package/dist/commands/predictions.d.ts.map +1 -0
- package/dist/commands/predictions.js +486 -0
- package/dist/commands/predictions.js.map +1 -0
- package/dist/commands/risk.d.ts.map +1 -0
- package/dist/commands/risk.js +225 -0
- package/dist/commands/risk.js.map +1 -0
- package/dist/commands/security.d.ts.map +1 -0
- package/dist/commands/security.js +244 -0
- package/dist/commands/security.js.map +1 -0
- package/dist/commands/sell.js +3 -3
- package/dist/commands/sell.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -0
- package/dist/commands/send.js +733 -0
- package/dist/commands/send.js.map +1 -0
- package/dist/commands/sign.d.ts.map +1 -0
- package/dist/commands/sign.js +1048 -0
- package/dist/commands/sign.js.map +1 -0
- package/dist/commands/swap.d.ts.map +1 -1
- package/dist/commands/swap.js +245 -2
- package/dist/commands/swap.js.map +1 -1
- package/dist/commands/system.d.ts.map +1 -0
- package/dist/commands/system.js +417 -0
- package/dist/commands/system.js.map +1 -0
- package/dist/commands/tools/index.d.ts.map +1 -0
- package/dist/commands/tools/index.js +2040 -0
- package/dist/commands/tools/index.js.map +1 -0
- package/dist/commands/trade.d.ts.map +1 -0
- package/dist/commands/trade.js +237 -0
- package/dist/commands/trade.js.map +1 -0
- package/dist/commands/transactions.js +1 -1
- package/dist/commands/transactions.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +429 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +91 -9
- package/dist/config.js.map +1 -1
- package/dist/index.js +4409 -1050
- package/dist/index.js.map +1 -1
- package/dist/interactive/art.d.ts.map +1 -1
- package/dist/interactive/art.js +33 -0
- package/dist/interactive/art.js.map +1 -1
- package/dist/interactive/shell.d.ts.map +1 -1
- package/dist/interactive/shell.js +81 -5
- package/dist/interactive/shell.js.map +1 -1
- package/dist/mcp/context.d.ts.map +1 -0
- package/dist/mcp/context.js +211 -0
- package/dist/mcp/context.js.map +1 -0
- package/dist/mcp/onboarding.d.ts.map +1 -0
- package/dist/mcp/onboarding.js +266 -0
- package/dist/mcp/onboarding.js.map +1 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +222 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +51 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +4119 -169
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/ui/components/shell/ShellInput.d.ts.map +1 -1
- package/dist/ui/components/shell/ShellInput.js +4 -0
- package/dist/ui/components/shell/ShellInput.js.map +1 -1
- package/dist/utils/admin.d.ts.map +1 -0
- package/dist/utils/admin.js +144 -0
- package/dist/utils/admin.js.map +1 -0
- package/dist/utils/autoSetup.d.ts.map +1 -0
- package/dist/utils/autoSetup.js +252 -0
- package/dist/utils/autoSetup.js.map +1 -0
- package/dist/utils/build-constants.d.ts.map +1 -0
- package/dist/utils/build-constants.js +10 -0
- package/dist/utils/build-constants.js.map +1 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +10 -1
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/formatting.d.ts.map +1 -1
- package/dist/utils/formatting.js +9 -3
- package/dist/utils/formatting.js.map +1 -1
- package/dist/utils/llm-cli-config.d.ts.map +1 -0
- package/dist/utils/llm-cli-config.js +963 -0
- package/dist/utils/llm-cli-config.js.map +1 -0
- package/dist/utils/llm-cli-detector.d.ts.map +1 -0
- package/dist/utils/llm-cli-detector.js +202 -0
- package/dist/utils/llm-cli-detector.js.map +1 -0
- package/dist/utils/maintenance.d.ts.map +1 -0
- package/dist/utils/maintenance.js +17 -0
- package/dist/utils/maintenance.js.map +1 -0
- package/dist/utils/mcp-config.d.ts.map +1 -0
- package/dist/utils/mcp-config.js +77 -0
- package/dist/utils/mcp-config.js.map +1 -0
- package/dist/utils/privateKeyPrompt.d.ts.map +1 -1
- package/dist/utils/privateKeyPrompt.js +287 -119
- package/dist/utils/privateKeyPrompt.js.map +1 -1
- package/dist/utils/process-cleanup.d.ts.map +1 -0
- package/dist/utils/process-cleanup.js +136 -0
- package/dist/utils/process-cleanup.js.map +1 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +56 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/shell-setup.d.ts.map +1 -0
- package/dist/utils/shell-setup.js +531 -0
- package/dist/utils/shell-setup.js.map +1 -0
- package/dist/utils/token-resolver.d.ts.map +1 -1
- package/dist/utils/token-resolver.js +42 -0
- package/dist/utils/token-resolver.js.map +1 -1
- package/dist/utils/x402-caller.d.ts.map +1 -0
- package/dist/utils/x402-caller.js +17 -0
- package/dist/utils/x402-caller.js.map +1 -0
- package/docs/README.md +28 -0
- package/docs/agent/README.md +18 -0
- package/docs/api/README.md +41 -0
- package/docs/cli/README.md +42 -0
- package/docs/guides/README.md +26 -0
- package/docs/implementation/README.md +18 -0
- package/docs/planning/README.md +19 -0
- package/docs/testing/README.md +15 -0
- package/docs/ux/README.md +16 -0
- package/package.json +9 -3
- package/scripts/cat-spin.sh +417 -0
- package/scripts/deprecate-rc-versions.js +58 -0
- package/scripts/inject-build-constants.js +43 -0
- package/scripts/monitor-foobar.js +117 -0
- package/test.txt +12 -0
- package/tests/fixtures/test-data.json +16 -0
|
@@ -0,0 +1,531 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell Setup Utilities
|
|
3
|
+
*
|
|
4
|
+
* Functions to install shell autocompletion and create aliases for httpcat CLI.
|
|
5
|
+
* Supports bash and zsh shells with automatic detection.
|
|
6
|
+
*/
|
|
7
|
+
import fs from "fs";
|
|
8
|
+
import path from "path";
|
|
9
|
+
import os from "os";
|
|
10
|
+
import { execSync } from "child_process";
|
|
11
|
+
import chalk from "chalk";
|
|
12
|
+
/**
|
|
13
|
+
* Detect the current shell from environment variables
|
|
14
|
+
*
|
|
15
|
+
* @returns Detected shell type or "unknown" if detection fails
|
|
16
|
+
*/
|
|
17
|
+
export function detectShell() {
|
|
18
|
+
const shell = process.env.SHELL || "";
|
|
19
|
+
if (shell.includes("zsh")) {
|
|
20
|
+
return "zsh";
|
|
21
|
+
}
|
|
22
|
+
else if (shell.includes("bash")) {
|
|
23
|
+
return "bash";
|
|
24
|
+
}
|
|
25
|
+
return "unknown";
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Find the httpcat binary location
|
|
29
|
+
*
|
|
30
|
+
* @returns Full path to httpcat binary or null if not found
|
|
31
|
+
*/
|
|
32
|
+
export function findHttpcatBinary() {
|
|
33
|
+
try {
|
|
34
|
+
// Try to find httpcat in PATH
|
|
35
|
+
const result = execSync("which httpcat", { encoding: "utf-8" }).trim();
|
|
36
|
+
if (result && fs.existsSync(result)) {
|
|
37
|
+
// Resolve symlinks to get actual binary location
|
|
38
|
+
try {
|
|
39
|
+
const resolved = fs.realpathSync(result);
|
|
40
|
+
return resolved;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Command not found
|
|
49
|
+
}
|
|
50
|
+
// Fallback: check common npm/yarn global locations
|
|
51
|
+
const homeDir = os.homedir();
|
|
52
|
+
const commonPaths = [
|
|
53
|
+
path.join(homeDir, ".npm-global", "bin", "httpcat"),
|
|
54
|
+
path.join(homeDir, ".yarn", "bin", "httpcat"),
|
|
55
|
+
path.join(homeDir, ".local", "bin", "httpcat"),
|
|
56
|
+
"/usr/local/bin/httpcat",
|
|
57
|
+
"/opt/homebrew/bin/httpcat",
|
|
58
|
+
];
|
|
59
|
+
for (const binPath of commonPaths) {
|
|
60
|
+
if (fs.existsSync(binPath)) {
|
|
61
|
+
try {
|
|
62
|
+
return fs.realpathSync(binPath);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return binPath;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Generate bash completion script
|
|
73
|
+
*
|
|
74
|
+
* @param program - Commander.js program instance (optional)
|
|
75
|
+
* @returns Bash completion script content
|
|
76
|
+
*/
|
|
77
|
+
export function generateBashCompletion(program) {
|
|
78
|
+
// Get commands from program if available, otherwise use fallback list
|
|
79
|
+
let commands = [];
|
|
80
|
+
let subcommandMap = {};
|
|
81
|
+
if (program && program.commands) {
|
|
82
|
+
// Get all visible (non-hidden) commands
|
|
83
|
+
commands = program.commands
|
|
84
|
+
.filter((cmd) => !cmd._hidden)
|
|
85
|
+
.map((cmd) => cmd.name())
|
|
86
|
+
.filter((name) => name && name !== "help"); // Exclude help command
|
|
87
|
+
// Get subcommands for each command
|
|
88
|
+
for (const cmd of program.commands) {
|
|
89
|
+
if (cmd._hidden)
|
|
90
|
+
continue;
|
|
91
|
+
const cmdName = cmd.name();
|
|
92
|
+
if (!cmdName || cmdName === "help")
|
|
93
|
+
continue;
|
|
94
|
+
if (cmd.commands && cmd.commands.length > 0) {
|
|
95
|
+
const subcommands = cmd.commands
|
|
96
|
+
.filter((subcmd) => !subcmd._hidden)
|
|
97
|
+
.map((subcmd) => subcmd.name())
|
|
98
|
+
.filter((name) => name && name !== "help");
|
|
99
|
+
if (subcommands.length > 0) {
|
|
100
|
+
subcommandMap[cmdName] = subcommands;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// Fallback list if program not provided
|
|
107
|
+
commands = [
|
|
108
|
+
"config", "launchpad", "trade", "system", "chat",
|
|
109
|
+
"mcp", "use", "portfolio", "agent", "tools"
|
|
110
|
+
];
|
|
111
|
+
// Fallback subcommands
|
|
112
|
+
subcommandMap = {
|
|
113
|
+
launchpad: ["create", "buy", "sell", "list", "info", "positions", "fees"],
|
|
114
|
+
trade: ["swap", "gasless-submit", "gasless-submit-our", "gasless-quote", "gasless-status"],
|
|
115
|
+
portfolio: ["balances", "summary", "pnl", "transactions", "positions"],
|
|
116
|
+
system: ["health", "status", "limits", "sources"],
|
|
117
|
+
config: ["setup", "reset", "env", "account", "completion"],
|
|
118
|
+
mcp: ["install", "start"],
|
|
119
|
+
agent: ["cat", "context"],
|
|
120
|
+
tools: ["address", "abi", "tx", "signature", "multicall", "nonce", "gas", "key", "rpc", "call"],
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
const commandsStr = commands.join(" ");
|
|
124
|
+
// Build subcommand case statements
|
|
125
|
+
let subcommandCases = "";
|
|
126
|
+
for (const [cmd, subs] of Object.entries(subcommandMap)) {
|
|
127
|
+
if (subs && subs.length > 0) {
|
|
128
|
+
const subsStr = subs.join(" ");
|
|
129
|
+
subcommandCases += ` "${cmd}")\n opts="${subsStr}"\n COMPREPLY=( $(compgen -W "\${opts}" -- "\${cur}") )\n ;;\n`;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return `# httpcat bash completion
|
|
133
|
+
_httpcat_completion() {
|
|
134
|
+
local cur prev opts
|
|
135
|
+
COMPREPLY=()
|
|
136
|
+
cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
137
|
+
prev="\${COMP_WORDS[COMP_CWORD-1]}"
|
|
138
|
+
|
|
139
|
+
# Top-level command completion
|
|
140
|
+
if [ "\${COMP_CWORD}" -eq 1 ]; then
|
|
141
|
+
opts="${commandsStr}"
|
|
142
|
+
COMPREPLY=( $(compgen -W "\${opts}" -- "\${cur}") )
|
|
143
|
+
# Subcommand completion
|
|
144
|
+
elif [ "\${COMP_CWORD}" -eq 2 ]; then
|
|
145
|
+
case "\${prev}" in
|
|
146
|
+
${subcommandCases} esac
|
|
147
|
+
fi
|
|
148
|
+
|
|
149
|
+
return 0
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
complete -F _httpcat_completion httpcat
|
|
153
|
+
`;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Generate zsh completion script
|
|
157
|
+
*
|
|
158
|
+
* @param program - Commander.js program instance (optional)
|
|
159
|
+
* @returns Zsh completion script content
|
|
160
|
+
*/
|
|
161
|
+
export function generateZshCompletion(program) {
|
|
162
|
+
// Get commands from program if available
|
|
163
|
+
let commands = [];
|
|
164
|
+
let subcommandMap = {};
|
|
165
|
+
if (program && program.commands) {
|
|
166
|
+
// Get all visible (non-hidden) commands with their descriptions
|
|
167
|
+
commands = program.commands
|
|
168
|
+
.filter((cmd) => !cmd._hidden)
|
|
169
|
+
.map((cmd) => {
|
|
170
|
+
const name = cmd.name();
|
|
171
|
+
const desc = cmd.description() || "";
|
|
172
|
+
return [name, desc];
|
|
173
|
+
})
|
|
174
|
+
.filter(([name]) => name && name !== "help"); // Exclude help command
|
|
175
|
+
// Get subcommands for each command
|
|
176
|
+
for (const cmd of program.commands) {
|
|
177
|
+
if (cmd._hidden)
|
|
178
|
+
continue;
|
|
179
|
+
const cmdName = cmd.name();
|
|
180
|
+
if (!cmdName || cmdName === "help")
|
|
181
|
+
continue;
|
|
182
|
+
if (cmd.commands && cmd.commands.length > 0) {
|
|
183
|
+
const subcommands = cmd.commands
|
|
184
|
+
.filter((subcmd) => !subcmd._hidden)
|
|
185
|
+
.map((subcmd) => {
|
|
186
|
+
const subName = subcmd.name();
|
|
187
|
+
const subDesc = subcmd.description() || "";
|
|
188
|
+
return [subName, subDesc];
|
|
189
|
+
})
|
|
190
|
+
.filter(([name]) => name && name !== "help");
|
|
191
|
+
if (subcommands.length > 0) {
|
|
192
|
+
subcommandMap[cmdName] = subcommands;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
// Fallback list if program not provided
|
|
199
|
+
commands = [
|
|
200
|
+
["config", "Configure httpcat (settings, environments, accounts)"],
|
|
201
|
+
["launchpad", "402.cat Launchpad operations (bonding curve tokens)"],
|
|
202
|
+
["trade", "Trading operations (swaps)"],
|
|
203
|
+
["system", "System operations and health checks"],
|
|
204
|
+
["chat", "Start streaming chat"],
|
|
205
|
+
["mcp", "MCP (Model Context Protocol) server and installation"],
|
|
206
|
+
["use", "Switch account or environment"],
|
|
207
|
+
["portfolio", "Portfolio & history management"],
|
|
208
|
+
["agent", "AI agent operations"],
|
|
209
|
+
["tools", "EVM development & interaction tools"],
|
|
210
|
+
];
|
|
211
|
+
// Fallback subcommands
|
|
212
|
+
subcommandMap = {
|
|
213
|
+
launchpad: [
|
|
214
|
+
["create", "Create a new launchpad token"],
|
|
215
|
+
["buy", "Buy tokens from bonding curve"],
|
|
216
|
+
["sell", "Sell tokens to bonding curve"],
|
|
217
|
+
["list", "List all launchpad tokens"],
|
|
218
|
+
["info", "Get token information"],
|
|
219
|
+
["positions", "Get token positions"],
|
|
220
|
+
["fees", "Fee management for graduated tokens"],
|
|
221
|
+
],
|
|
222
|
+
trade: [
|
|
223
|
+
["swap", "Swap any token to any token"],
|
|
224
|
+
["gasless-submit", "Submit a signed 0x gasless swap"],
|
|
225
|
+
["gasless-submit-our", "Submit gasless swap via executor"],
|
|
226
|
+
["gasless-quote", "Get gasless swap quotes"],
|
|
227
|
+
["gasless-status", "Check gasless swap status"],
|
|
228
|
+
],
|
|
229
|
+
portfolio: [
|
|
230
|
+
["balances", "View token balances"],
|
|
231
|
+
["summary", "Portfolio summary"],
|
|
232
|
+
["pnl", "Profit and loss"],
|
|
233
|
+
["transactions", "Transaction history"],
|
|
234
|
+
["positions", "Token positions"],
|
|
235
|
+
],
|
|
236
|
+
system: [
|
|
237
|
+
["health", "System health check"],
|
|
238
|
+
["status", "System status"],
|
|
239
|
+
["limits", "Rate limits"],
|
|
240
|
+
["sources", "Data sources"],
|
|
241
|
+
],
|
|
242
|
+
config: [
|
|
243
|
+
["setup", "Run interactive setup wizard"],
|
|
244
|
+
["reset", "Reset configuration"],
|
|
245
|
+
["env", "Manage environments"],
|
|
246
|
+
["account", "Manage accounts"],
|
|
247
|
+
["completion", "Generate shell completion script"],
|
|
248
|
+
],
|
|
249
|
+
mcp: [
|
|
250
|
+
["install", "Install or update httpcat MCP server for LLM CLI tools"],
|
|
251
|
+
["start", "Start MCP (Model Context Protocol) server"],
|
|
252
|
+
],
|
|
253
|
+
agent: [
|
|
254
|
+
["cat", "Start interactive AI agent mode"],
|
|
255
|
+
["context", "Agent context"],
|
|
256
|
+
],
|
|
257
|
+
tools: [
|
|
258
|
+
["address", "Address utilities"],
|
|
259
|
+
["abi", "ABI encoding/decoding"],
|
|
260
|
+
["tx", "Transaction utilities"],
|
|
261
|
+
["signature", "Function signature utilities"],
|
|
262
|
+
["multicall", "Multicall utilities"],
|
|
263
|
+
["nonce", "Nonce utilities"],
|
|
264
|
+
["gas", "Gas estimation"],
|
|
265
|
+
["key", "Key management"],
|
|
266
|
+
["rpc", "JSON-RPC proxy"],
|
|
267
|
+
["call", "Call x402 endpoint"],
|
|
268
|
+
],
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
// Format commands for zsh completion
|
|
272
|
+
const commandsStr = commands
|
|
273
|
+
.map(([name, desc]) => `'${name}:${desc}'`)
|
|
274
|
+
.join("\n ");
|
|
275
|
+
// Build subcommand functions
|
|
276
|
+
let subcommandFunctions = "";
|
|
277
|
+
for (const [cmd, subs] of Object.entries(subcommandMap)) {
|
|
278
|
+
if (subs && subs.length > 0) {
|
|
279
|
+
const subsStr = subs
|
|
280
|
+
.map(([name, desc]) => `'${name}:${desc}'`)
|
|
281
|
+
.join("\n ");
|
|
282
|
+
subcommandFunctions += `_httpcat_${cmd}() {
|
|
283
|
+
local -a subcommands
|
|
284
|
+
subcommands=(
|
|
285
|
+
${subsStr}
|
|
286
|
+
)
|
|
287
|
+
_describe 'subcommand' subcommands
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
`;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
// Build case statement for subcommands
|
|
294
|
+
let subcommandCases = "";
|
|
295
|
+
for (const cmd of Object.keys(subcommandMap)) {
|
|
296
|
+
subcommandCases += ` "${cmd}")\n _httpcat_${cmd}\n ;;\n`;
|
|
297
|
+
}
|
|
298
|
+
return `#compdef httpcat
|
|
299
|
+
|
|
300
|
+
_httpcat() {
|
|
301
|
+
local -a commands
|
|
302
|
+
local curcontext="\${curcontext}" state line
|
|
303
|
+
local -A opt_args
|
|
304
|
+
|
|
305
|
+
commands=(
|
|
306
|
+
${commandsStr}
|
|
307
|
+
)
|
|
308
|
+
|
|
309
|
+
_describe 'command' commands
|
|
310
|
+
|
|
311
|
+
case $words[2] in
|
|
312
|
+
${subcommandCases} esac
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
${subcommandFunctions}_httpcat "$@"
|
|
316
|
+
`;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Install bash completion script
|
|
320
|
+
*
|
|
321
|
+
* @param completionScript - The completion script content
|
|
322
|
+
* @returns true if installation succeeded, false otherwise
|
|
323
|
+
*/
|
|
324
|
+
export function installBashCompletion(completionScript) {
|
|
325
|
+
try {
|
|
326
|
+
const homeDir = os.homedir();
|
|
327
|
+
const bashCompletionDir = path.join(homeDir, ".bash_completion.d");
|
|
328
|
+
const completionFile = path.join(bashCompletionDir, "httpcat");
|
|
329
|
+
const bashrcPath = path.join(homeDir, ".bashrc");
|
|
330
|
+
// Create completion directory if it doesn't exist
|
|
331
|
+
if (!fs.existsSync(bashCompletionDir)) {
|
|
332
|
+
fs.mkdirSync(bashCompletionDir, { recursive: true });
|
|
333
|
+
}
|
|
334
|
+
// Write completion script
|
|
335
|
+
fs.writeFileSync(completionFile, completionScript, { mode: 0o644 });
|
|
336
|
+
// Ensure .bashrc sources the completion directory
|
|
337
|
+
if (fs.existsSync(bashrcPath)) {
|
|
338
|
+
const bashrcContent = fs.readFileSync(bashrcPath, "utf-8");
|
|
339
|
+
const sourceLine = `[ -d ~/.bash_completion.d ] && for f in ~/.bash_completion.d/*; do source "$f"; done`;
|
|
340
|
+
// Check if sourcing line already exists (with variations)
|
|
341
|
+
const hasSourceLine = bashrcContent.includes(".bash_completion.d") ||
|
|
342
|
+
bashrcContent.includes("bash_completion.d");
|
|
343
|
+
if (!hasSourceLine) {
|
|
344
|
+
fs.appendFileSync(bashrcPath, `\n# httpcat completion\n${sourceLine}\n`);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
// Create .bashrc if it doesn't exist
|
|
349
|
+
const sourceLine = `[ -d ~/.bash_completion.d ] && for f in ~/.bash_completion.d/*; do source "$f"; done`;
|
|
350
|
+
fs.writeFileSync(bashrcPath, `# httpcat completion\n${sourceLine}\n`);
|
|
351
|
+
}
|
|
352
|
+
return true;
|
|
353
|
+
}
|
|
354
|
+
catch (error) {
|
|
355
|
+
console.error(chalk.red(`Failed to install bash completion: ${error}`));
|
|
356
|
+
return false;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Install zsh completion script
|
|
361
|
+
*
|
|
362
|
+
* @param completionScript - The completion script content
|
|
363
|
+
* @returns true if installation succeeded, false otherwise
|
|
364
|
+
*/
|
|
365
|
+
export function installZshCompletion(completionScript) {
|
|
366
|
+
try {
|
|
367
|
+
const homeDir = os.homedir();
|
|
368
|
+
const zshCompletionsDir = path.join(homeDir, ".zsh", "completions");
|
|
369
|
+
const completionFile = path.join(zshCompletionsDir, "_httpcat");
|
|
370
|
+
const zshrcPath = path.join(homeDir, ".zshrc");
|
|
371
|
+
// Create completions directory if it doesn't exist
|
|
372
|
+
if (!fs.existsSync(zshCompletionsDir)) {
|
|
373
|
+
fs.mkdirSync(zshCompletionsDir, { recursive: true });
|
|
374
|
+
}
|
|
375
|
+
// Write completion script
|
|
376
|
+
fs.writeFileSync(completionFile, completionScript, { mode: 0o644 });
|
|
377
|
+
// Ensure .zshrc adds completions to fpath
|
|
378
|
+
const fpathLine = `fpath=(~/.zsh/completions $fpath)`;
|
|
379
|
+
const autoloadLine = `autoload -Uz compinit && compinit`;
|
|
380
|
+
if (fs.existsSync(zshrcPath)) {
|
|
381
|
+
const zshrcContent = fs.readFileSync(zshrcPath, "utf-8");
|
|
382
|
+
let updated = false;
|
|
383
|
+
let newContent = zshrcContent;
|
|
384
|
+
// Add fpath if not present
|
|
385
|
+
if (!zshrcContent.includes("~/.zsh/completions") && !zshrcContent.includes("$HOME/.zsh/completions")) {
|
|
386
|
+
newContent += `\n# httpcat completion\n${fpathLine}\n`;
|
|
387
|
+
updated = true;
|
|
388
|
+
}
|
|
389
|
+
// Add compinit if not present
|
|
390
|
+
if (!zshrcContent.includes("compinit")) {
|
|
391
|
+
newContent += `${updated ? "" : "\n# httpcat completion\n"}${autoloadLine}\n`;
|
|
392
|
+
updated = true;
|
|
393
|
+
}
|
|
394
|
+
if (updated) {
|
|
395
|
+
fs.writeFileSync(zshrcPath, newContent);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
else {
|
|
399
|
+
// Create .zshrc if it doesn't exist
|
|
400
|
+
fs.writeFileSync(zshrcPath, `# httpcat completion\n${fpathLine}\n${autoloadLine}\n`);
|
|
401
|
+
}
|
|
402
|
+
return true;
|
|
403
|
+
}
|
|
404
|
+
catch (error) {
|
|
405
|
+
console.error(chalk.red(`Failed to install zsh completion: ${error}`));
|
|
406
|
+
return false;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Create "hc" alias as a symlink
|
|
411
|
+
*
|
|
412
|
+
* @returns true if symlink creation succeeded or already exists correctly, false otherwise
|
|
413
|
+
*/
|
|
414
|
+
export function createHcSymlink() {
|
|
415
|
+
try {
|
|
416
|
+
const httpcatPath = findHttpcatBinary();
|
|
417
|
+
if (!httpcatPath) {
|
|
418
|
+
return false;
|
|
419
|
+
}
|
|
420
|
+
const binDir = path.dirname(httpcatPath);
|
|
421
|
+
const hcPath = path.join(binDir, "hc");
|
|
422
|
+
// Check if hc already exists
|
|
423
|
+
if (fs.existsSync(hcPath)) {
|
|
424
|
+
// Check if it's already a symlink to httpcat
|
|
425
|
+
try {
|
|
426
|
+
const target = fs.readlinkSync(hcPath);
|
|
427
|
+
const resolvedTarget = path.resolve(binDir, target);
|
|
428
|
+
if (target === "httpcat" || resolvedTarget === httpcatPath) {
|
|
429
|
+
return true; // Already correctly linked
|
|
430
|
+
}
|
|
431
|
+
// Existing symlink points to wrong target - remove it
|
|
432
|
+
fs.unlinkSync(hcPath);
|
|
433
|
+
}
|
|
434
|
+
catch {
|
|
435
|
+
// Not a symlink or can't read it - try to remove it
|
|
436
|
+
try {
|
|
437
|
+
fs.unlinkSync(hcPath);
|
|
438
|
+
}
|
|
439
|
+
catch {
|
|
440
|
+
// Can't remove existing file - might be a directory or permission issue
|
|
441
|
+
// Fall back to shell alias instead
|
|
442
|
+
return false;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
// Create symlink
|
|
447
|
+
fs.symlinkSync("httpcat", hcPath);
|
|
448
|
+
return true;
|
|
449
|
+
}
|
|
450
|
+
catch (error) {
|
|
451
|
+
// Silently fail - will fall back to shell alias
|
|
452
|
+
// Don't log error here since fallback will handle it
|
|
453
|
+
return false;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Create "hc" alias in shell rc file
|
|
458
|
+
*
|
|
459
|
+
* @param shellType - The shell type (bash or zsh)
|
|
460
|
+
* @returns true if alias creation succeeded, false otherwise
|
|
461
|
+
*/
|
|
462
|
+
export function createHcAlias(shellType) {
|
|
463
|
+
if (shellType === "unknown") {
|
|
464
|
+
return false;
|
|
465
|
+
}
|
|
466
|
+
try {
|
|
467
|
+
const homeDir = os.homedir();
|
|
468
|
+
const rcFile = shellType === "zsh"
|
|
469
|
+
? path.join(homeDir, ".zshrc")
|
|
470
|
+
: path.join(homeDir, ".bashrc");
|
|
471
|
+
const aliasLine = `alias hc='httpcat'`;
|
|
472
|
+
// Check if alias already exists
|
|
473
|
+
if (fs.existsSync(rcFile)) {
|
|
474
|
+
const content = fs.readFileSync(rcFile, "utf-8");
|
|
475
|
+
if (content.includes("alias hc=")) {
|
|
476
|
+
return true; // Already exists
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
// Append alias to rc file
|
|
480
|
+
const newContent = fs.existsSync(rcFile)
|
|
481
|
+
? fs.readFileSync(rcFile, "utf-8") + `\n# httpcat alias\n${aliasLine}\n`
|
|
482
|
+
: `# httpcat alias\n${aliasLine}\n`;
|
|
483
|
+
fs.writeFileSync(rcFile, newContent);
|
|
484
|
+
return true;
|
|
485
|
+
}
|
|
486
|
+
catch (error) {
|
|
487
|
+
console.error(chalk.red(`Failed to create hc alias: ${error}`));
|
|
488
|
+
return false;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* Install shell completion for the detected shell
|
|
493
|
+
*
|
|
494
|
+
* @param program - Commander.js program instance (optional)
|
|
495
|
+
* @returns true if installation succeeded, false otherwise
|
|
496
|
+
*/
|
|
497
|
+
export function installShellCompletion(program) {
|
|
498
|
+
const shell = detectShell();
|
|
499
|
+
if (shell === "unknown") {
|
|
500
|
+
console.log(chalk.yellow("⚠️ Could not detect shell type. Skipping completion installation."));
|
|
501
|
+
return false;
|
|
502
|
+
}
|
|
503
|
+
let completionScript;
|
|
504
|
+
if (shell === "zsh") {
|
|
505
|
+
completionScript = generateZshCompletion(program);
|
|
506
|
+
return installZshCompletion(completionScript);
|
|
507
|
+
}
|
|
508
|
+
else {
|
|
509
|
+
completionScript = generateBashCompletion(program);
|
|
510
|
+
return installBashCompletion(completionScript);
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* Create "hc" alias (tries symlink first, falls back to shell alias)
|
|
515
|
+
*
|
|
516
|
+
* @returns Object with success status and method used
|
|
517
|
+
*/
|
|
518
|
+
export function installHcAlias() {
|
|
519
|
+
// Try symlink first
|
|
520
|
+
if (createHcSymlink()) {
|
|
521
|
+
return { success: true, method: "symlink" };
|
|
522
|
+
}
|
|
523
|
+
// Fallback to shell alias
|
|
524
|
+
const shell = detectShell();
|
|
525
|
+
const aliasSuccess = createHcAlias(shell);
|
|
526
|
+
return {
|
|
527
|
+
success: aliasSuccess,
|
|
528
|
+
method: aliasSuccess ? "alias" : "none",
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
//# sourceMappingURL=shell-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-setup.js","sourceRoot":"","sources":["../../src/utils/shell-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/token-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"token-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/token-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AA0B7C;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,EACrB,MAAM,UAAQ,GACb,OAAO,CAAC,MAAM,CAAC,CA+LjB"}
|
|
@@ -2,6 +2,25 @@ import { listTokens } from '../commands/list.js';
|
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import { config } from '../config.js';
|
|
4
4
|
import { writeStatusLineNew } from './status.js';
|
|
5
|
+
import { getUSDCAddress } from './constants.js';
|
|
6
|
+
// Well-known token aliases for Base mainnet
|
|
7
|
+
// Note: USDC is handled separately with network-aware resolution
|
|
8
|
+
const BASE_TOKEN_ALIASES = {
|
|
9
|
+
// Native ETH
|
|
10
|
+
'eth': '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE',
|
|
11
|
+
// Wrapped ETH
|
|
12
|
+
'weth': '0x4200000000000000000000000000000000000006',
|
|
13
|
+
// cbBTC (Coinbase Wrapped BTC)
|
|
14
|
+
'cbbtc': '0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf',
|
|
15
|
+
// DAI
|
|
16
|
+
'dai': '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb',
|
|
17
|
+
// USDbC (Bridged USDC)
|
|
18
|
+
'usdbc': '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA',
|
|
19
|
+
// AERO
|
|
20
|
+
'aero': '0x940181a94A35A4569E4529A3CDfB74e38FD98631',
|
|
21
|
+
// DEGEN
|
|
22
|
+
'degen': '0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed',
|
|
23
|
+
};
|
|
5
24
|
/**
|
|
6
25
|
* Resolves a token identifier (ID, name, or symbol) to a token ID
|
|
7
26
|
*
|
|
@@ -17,6 +36,29 @@ export async function resolveTokenId(identifier, client, silent = false) {
|
|
|
17
36
|
}
|
|
18
37
|
// Check if it's a UUID (token ID) - trim first to handle whitespace
|
|
19
38
|
const trimmedIdentifier = identifier.trim();
|
|
39
|
+
// Check for well-known token aliases (case-insensitive)
|
|
40
|
+
const aliasLower = trimmedIdentifier.toLowerCase();
|
|
41
|
+
// Special handling for network-aware tokens (USDC)
|
|
42
|
+
if (aliasLower === 'usdc') {
|
|
43
|
+
const network = client.getNetwork();
|
|
44
|
+
try {
|
|
45
|
+
const usdcAddress = getUSDCAddress(network);
|
|
46
|
+
if (!silent) {
|
|
47
|
+
writeStatusLineNew(chalk.dim(`✅ Resolved ${trimmedIdentifier.toUpperCase()} to ${usdcAddress}`));
|
|
48
|
+
}
|
|
49
|
+
return usdcAddress;
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
throw new Error(`Failed to resolve USDC for network ${network}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Check other aliases
|
|
56
|
+
if (BASE_TOKEN_ALIASES[aliasLower]) {
|
|
57
|
+
if (!silent) {
|
|
58
|
+
writeStatusLineNew(chalk.dim(`✅ Resolved ${trimmedIdentifier.toUpperCase()} to ${BASE_TOKEN_ALIASES[aliasLower]}`));
|
|
59
|
+
}
|
|
60
|
+
return BASE_TOKEN_ALIASES[aliasLower];
|
|
61
|
+
}
|
|
20
62
|
if (trimmedIdentifier === "") {
|
|
21
63
|
throw new Error("Token identifier cannot be empty or whitespace only");
|
|
22
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-resolver.js","sourceRoot":"","sources":["../../src/utils/token-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAsB,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"token-resolver.js","sourceRoot":"","sources":["../../src/utils/token-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402-caller.d.ts","sourceRoot":"","sources":["../../src/utils/x402-caller.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,GAAG,CAAC;CACb,GACL,OAAO,CAAC;IACT,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC,CAWD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { HttpcatClient } from "../client.js";
|
|
2
|
+
import { config } from "../config.js";
|
|
3
|
+
/**
|
|
4
|
+
* Call an arbitrary x402-protected HTTP endpoint with automatic payment handling
|
|
5
|
+
*/
|
|
6
|
+
export async function callX402Endpoint(url, options = {}) {
|
|
7
|
+
// Create client with optional private key override
|
|
8
|
+
const privateKey = options.privateKey || config.getPrivateKey();
|
|
9
|
+
const client = await HttpcatClient.create(privateKey);
|
|
10
|
+
// Call the endpoint using the client's method
|
|
11
|
+
return await client.callX402Endpoint(url, {
|
|
12
|
+
method: options.method,
|
|
13
|
+
body: options.body,
|
|
14
|
+
headers: options.headers,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=x402-caller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402-caller.js","sourceRoot":"","sources":["../../src/utils/x402-caller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,UAKI,EAAE;IAQN,mDAAmD;IACnD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAK,MAAM,CAAC,aAAa,EAAU,CAAC;IACzE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtD,8CAA8C;IAC9C,OAAO,MAAM,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE;QACxC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;AACL,CAAC"}
|