tollkit-wallet 0.2.0 → 0.2.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/README.md +14 -2
- package/THIRD_PARTY_NOTICES.md +4 -0
- package/dist/actions.d.ts +179 -0
- package/dist/actions.js +41 -5
- package/dist/actions.js.map +1 -1
- package/dist/ai-icons.d.ts +5 -0
- package/dist/ai-icons.js +3 -0
- package/dist/ai-icons.js.map +1 -0
- package/dist/ai.d.ts +77 -0
- package/dist/ai.js +227 -0
- package/dist/ai.js.map +1 -0
- package/dist/cli.js +14 -1
- package/dist/cli.js.map +1 -1
- package/dist/connect.d.ts +29 -0
- package/dist/connect.js +227 -0
- package/dist/connect.js.map +1 -0
- package/dist/dashboard.d.ts +3 -0
- package/dist/dashboard.js +60 -2
- package/dist/dashboard.js.map +1 -1
- package/dist/elizaos.js +2 -0
- package/dist/elizaos.js.map +1 -1
- package/dist/mcp.d.ts +7 -2
- package/dist/mcp.js +11 -5
- package/dist/mcp.js.map +1 -1
- package/dist/paths.d.ts +4 -0
- package/dist/paths.js +4 -0
- package/dist/paths.js.map +1 -1
- package/dist/rules.d.ts +9 -0
- package/dist/rules.js +23 -1
- package/dist/rules.js.map +1 -1
- package/dist/telegram.d.ts +2 -0
- package/dist/telegram.js +4 -0
- package/dist/telegram.js.map +1 -1
- package/dist/ui.js +166 -13
- package/dist/ui.js.map +1 -1
- package/package.json +2 -2
package/dist/ai.js
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Autopilot tab's AI: the owner chats with their own AI (Claude Code,
|
|
3
|
+
* signed in on this computer, so it runs on their plan) and it can check in
|
|
4
|
+
* on a schedule.
|
|
5
|
+
*
|
|
6
|
+
* The AI only gets the wallet's advisor tools (`tollkit-wallet mcp --advisor`):
|
|
7
|
+
* balances, limits, receipts, prices, price history, the rule list, and
|
|
8
|
+
* autopilot_propose. Rules it proposes always wait for the owner to turn them
|
|
9
|
+
* on. It has no tool to trade, pay, withdraw or change limits, and Claude
|
|
10
|
+
* Code's own tools (files, shell, web) are switched off for these runs.
|
|
11
|
+
*
|
|
12
|
+
* Flags checked against Claude Code's docs (code.claude.com/docs/en/headless,
|
|
13
|
+
* /agent-sdk/permissions) and `claude --help` 2.1.296 on 2026-10-14:
|
|
14
|
+
* -p, --output-format json (result, session_id), --resume <id>, --system-prompt,
|
|
15
|
+
* --tools "" (no built-in tools), --mcp-config + --strict-mcp-config (only this server),
|
|
16
|
+
* --allowedTools "mcp__tollkit-wallet__*", --permission-mode dontAsk (anything else is denied).
|
|
17
|
+
* Not --bare: bare mode doesn't use the owner's subscription login.
|
|
18
|
+
*/
|
|
19
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
20
|
+
import { spawn } from "node:child_process";
|
|
21
|
+
import { randomUUID } from "node:crypto";
|
|
22
|
+
import path from "node:path";
|
|
23
|
+
import { loadTelegram } from "./wallet.js";
|
|
24
|
+
import { notify, requestApproval } from "./telegram.js";
|
|
25
|
+
import { launchConfig, which } from "./connect.js";
|
|
26
|
+
import { passwordFile, walletHome } from "./paths.js";
|
|
27
|
+
import { describeRule } from "./rules.js";
|
|
28
|
+
export const CHECKIN_HOURS = [0, 1, 4, 12, 24];
|
|
29
|
+
const MAX_MSGS = 200;
|
|
30
|
+
export const SYSTEM = `You are the AI inside the owner's Tollkit Wallet, on the Autopilot tab. The owner talks to you to set up and adjust autopilot rules for their own money.
|
|
31
|
+
|
|
32
|
+
What you can do, through the tollkit-wallet tools:
|
|
33
|
+
- read their balances, limits and recent trades (wallet_balances, wallet_status, receipts)
|
|
34
|
+
- check prices and price history (market_prices, price_history; ETH and SOL)
|
|
35
|
+
- see their rules (autopilot_rules) and suggest new ones (autopilot_propose)
|
|
36
|
+
You cannot trade, pay, withdraw or change limits, and you can't turn rules on. Every rule you suggest waits on a card under your message for the owner to tap "Turn on". Never say a rule is on or that you placed a trade.
|
|
37
|
+
|
|
38
|
+
Rule kinds: limit_buy, limit_sell, stop_loss, take_profit, trailing_stop, dca (recurring buy). Assets trade against USDC on Base or Solana (Ethereum only if the owner enabled it). Use exact \`rules\` in autopilot_propose, not text. Give every rule a one- or two-sentence plain \`reason\`. To change an existing rule, propose the new one with \`replaces: <old rule id>\`; turning it on cancels the old one. A take-profit and stop-loss for the same position should share a \`group\` so one cancels the other.
|
|
39
|
+
|
|
40
|
+
Before suggesting: check balances (don't plan to sell what they don't hold or spend more USDC than they have), keep each buy within their per-trade limit, and use recent prices to pick sensible triggers. If what they ask is unclear or risky (all-in, no stop), say so briefly and suggest a safer version; they decide.
|
|
41
|
+
|
|
42
|
+
Style: short, plain English, like a careful friend who knows markets. No hype, no emojis, no guarantees or predictions presented as fact. Quote real numbers from the tools. When you suggest rules, end with one line saying they're waiting below to turn on.`;
|
|
43
|
+
const CHECKIN = (hours) => `Scheduled check-in (every ${hours} hour${hours === 1 ? "" : "s"}). Look at current prices, the recent price history for the coins in the owner's rules and balances, and their open rules, with what they've told you they want in this conversation. If a rule should change (for example raising a stop-loss after a rise, or a buy level that no longer makes sense), suggest the replacement with \`replaces\`. Suggest something new only if it clearly fits what they asked for. If nothing needs changing, reply with one short line that starts with "No changes".`;
|
|
44
|
+
/** Claude Code, headless, locked to the wallet's advisor tools. */
|
|
45
|
+
export function claudeRunner(exe, timeoutMs = 240_000) {
|
|
46
|
+
return (prompt, o) => new Promise((resolve, reject) => {
|
|
47
|
+
const args = ["-p", prompt, "--output-format", "json", "--system-prompt", o.system,
|
|
48
|
+
"--tools", "", "--strict-mcp-config", "--mcp-config", o.mcpConfig,
|
|
49
|
+
"--allowedTools", "mcp__tollkit-wallet__*", "--permission-mode", "dontAsk",
|
|
50
|
+
...(o.sessionId ? ["--resume", o.sessionId] : [])];
|
|
51
|
+
const env = { ...process.env };
|
|
52
|
+
delete env.TOLLKIT_WALLET_PASSWORD;
|
|
53
|
+
delete env.TOLLKIT_WALLET_PASSWORD_FILE; // the MCP server gets its own env
|
|
54
|
+
const p = spawn(exe, args, { cwd: o.cwd, env, stdio: ["ignore", "pipe", "pipe"] });
|
|
55
|
+
let out = "", err = "";
|
|
56
|
+
p.stdout.on("data", (d) => (out += d));
|
|
57
|
+
p.stderr.on("data", (d) => (err += d));
|
|
58
|
+
const t = setTimeout(() => p.kill("SIGTERM"), timeoutMs);
|
|
59
|
+
p.on("error", (e) => { clearTimeout(t); reject(e); });
|
|
60
|
+
p.on("close", (code) => {
|
|
61
|
+
clearTimeout(t);
|
|
62
|
+
let j = null;
|
|
63
|
+
try {
|
|
64
|
+
j = JSON.parse(out.trim().split("\n").filter(Boolean).at(-1) ?? "");
|
|
65
|
+
}
|
|
66
|
+
catch { /* not json */ }
|
|
67
|
+
if (j && typeof j.result === "string" && !j.is_error && code === 0)
|
|
68
|
+
return resolve({ text: j.result.trim(), sessionId: j.session_id });
|
|
69
|
+
const why = (j?.result || err || out || `exit ${code}`).toString().trim().slice(-400);
|
|
70
|
+
reject(Object.assign(new Error(code === null || code === 143 ? "The AI took too long and was stopped." : why), { resumeFailed: !!o.sessionId && /session|conversation/i.test(why) }));
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
export class AiAssistant {
|
|
75
|
+
w;
|
|
76
|
+
o;
|
|
77
|
+
file;
|
|
78
|
+
busy = null;
|
|
79
|
+
approving = false;
|
|
80
|
+
constructor(w, o = {}) {
|
|
81
|
+
this.w = w;
|
|
82
|
+
this.o = o;
|
|
83
|
+
this.file = path.join(walletHome(o.dir), "ai", "chat.json");
|
|
84
|
+
}
|
|
85
|
+
now() { return this.o.now?.() ?? Date.now(); }
|
|
86
|
+
exe() { return this.o.exe !== undefined ? this.o.exe : which("claude"); }
|
|
87
|
+
runner() { if (this.o.runner)
|
|
88
|
+
return this.o.runner; const e = this.exe(); return e ? claudeRunner(e) : null; }
|
|
89
|
+
load() {
|
|
90
|
+
try {
|
|
91
|
+
if (existsSync(this.file))
|
|
92
|
+
return JSON.parse(readFileSync(this.file, "utf8"));
|
|
93
|
+
}
|
|
94
|
+
catch { /* start over */ }
|
|
95
|
+
return { messages: [], checkin: { every_hours: 0 } };
|
|
96
|
+
}
|
|
97
|
+
save(c) {
|
|
98
|
+
mkdirSync(path.dirname(this.file), { recursive: true, mode: 0o700 });
|
|
99
|
+
c.messages = c.messages.slice(-MAX_MSGS);
|
|
100
|
+
const t = `${this.file}.${process.pid}.tmp`;
|
|
101
|
+
writeFileSync(t, JSON.stringify(c, null, 2), { mode: 0o600 });
|
|
102
|
+
renameSync(t, this.file);
|
|
103
|
+
}
|
|
104
|
+
view() {
|
|
105
|
+
const c = this.load(), every = c.checkin.every_hours;
|
|
106
|
+
const next = every && c.checkin.last ? new Date(Date.parse(c.checkin.last) + every * 3600_000).toISOString() : every ? new Date(this.now()).toISOString() : null;
|
|
107
|
+
return {
|
|
108
|
+
provider: this.runner() ? { id: "claude-code", name: "Claude" } : null,
|
|
109
|
+
ready: existsSync(passwordFile(this.o.dir)),
|
|
110
|
+
busy: this.busy, messages: c.messages.slice(-60), checkin: { every_hours: every, last: c.checkin.last ?? null, next },
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
setCheckin(hours) {
|
|
114
|
+
if (!CHECKIN_HOURS.includes(hours))
|
|
115
|
+
throw new Error("Pick off, 1, 4, 12 or 24 hours.");
|
|
116
|
+
const c = this.load();
|
|
117
|
+
c.checkin.every_hours = hours;
|
|
118
|
+
if (hours)
|
|
119
|
+
c.checkin.last = new Date(this.now()).toISOString();
|
|
120
|
+
this.save(c);
|
|
121
|
+
}
|
|
122
|
+
newChat() { const c = this.load(); c.session_id = undefined; c.messages = []; this.save(c); }
|
|
123
|
+
/** Why a message can't be sent right now, or null. */
|
|
124
|
+
precheck(text = "x") {
|
|
125
|
+
if (!this.runner())
|
|
126
|
+
return { code: "no_ai", message: "To chat here, install Claude Code on this computer and sign in once (run `claude` in Terminal)." };
|
|
127
|
+
if (!existsSync(passwordFile(this.o.dir)))
|
|
128
|
+
return { code: "needs_password", message: "Type your wallet password once so the AI can read your wallet." };
|
|
129
|
+
if (this.busy)
|
|
130
|
+
return { code: "busy", message: "The AI is still working on the last message." };
|
|
131
|
+
if (!text.trim())
|
|
132
|
+
return { code: "empty", message: "Type a message." };
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
/** Sends one message (or runs a check-in) and waits for the answer. */
|
|
136
|
+
async send(text, kind = "chat") {
|
|
137
|
+
const bad = this.precheck(text);
|
|
138
|
+
if (bad)
|
|
139
|
+
throw Object.assign(new Error(bad.message), { code: bad.code });
|
|
140
|
+
const run = this.runner();
|
|
141
|
+
const t = text.trim().slice(0, 4000);
|
|
142
|
+
this.busy = { kind, since: new Date(this.now()).toISOString() };
|
|
143
|
+
const c = this.load();
|
|
144
|
+
if (kind === "chat") {
|
|
145
|
+
c.messages.push({ id: randomUUID().slice(0, 8), role: "you", text: t, ts: new Date(this.now()).toISOString() });
|
|
146
|
+
this.save(c);
|
|
147
|
+
}
|
|
148
|
+
const before = new Set(this.w.rules().list().map((r) => r.id));
|
|
149
|
+
const cwd = path.join(walletHome(this.o.dir), "ai");
|
|
150
|
+
mkdirSync(cwd, { recursive: true, mode: 0o700 });
|
|
151
|
+
const l = launchConfig(this.o.dir);
|
|
152
|
+
const mcpConfig = JSON.stringify({ mcpServers: { "tollkit-wallet": { type: "stdio", command: l.command, args: [...l.args, "--advisor"], env: l.env } } });
|
|
153
|
+
let msg;
|
|
154
|
+
try {
|
|
155
|
+
let r;
|
|
156
|
+
const prompt = kind === "chat" ? `Owner: ${t}` : t; // never starts with "-", so it can't be read as a flag
|
|
157
|
+
try {
|
|
158
|
+
r = await run(prompt, { sessionId: c.session_id, cwd, mcpConfig, system: SYSTEM });
|
|
159
|
+
}
|
|
160
|
+
catch (e) {
|
|
161
|
+
if (!e.resumeFailed)
|
|
162
|
+
throw e;
|
|
163
|
+
r = await run(prompt, { cwd, mcpConfig, system: SYSTEM });
|
|
164
|
+
}
|
|
165
|
+
const fresh = this.load();
|
|
166
|
+
if (r.sessionId)
|
|
167
|
+
fresh.session_id = r.sessionId;
|
|
168
|
+
const made = this.w.rules().list().filter((x) => !before.has(x.id) && x.created_by === "agent").map((x) => x.id);
|
|
169
|
+
msg = { id: randomUUID().slice(0, 8), role: "ai", text: r.text || "(no reply)", ts: new Date(this.now()).toISOString(), ...(made.length ? { rules: made } : {}), ...(kind === "checkin" ? { checkin: true, quiet: !made.length } : {}) };
|
|
170
|
+
fresh.messages.push(msg);
|
|
171
|
+
if (kind === "checkin")
|
|
172
|
+
fresh.checkin.last = new Date(this.now()).toISOString();
|
|
173
|
+
this.save(fresh);
|
|
174
|
+
if (kind === "checkin" && made.length)
|
|
175
|
+
void this.askOnTelegram(made);
|
|
176
|
+
}
|
|
177
|
+
catch (e) {
|
|
178
|
+
const fresh = this.load();
|
|
179
|
+
msg = { id: randomUUID().slice(0, 8), role: "ai", text: e.message, ts: new Date(this.now()).toISOString(), error: true, ...(kind === "checkin" ? { checkin: true } : {}) };
|
|
180
|
+
fresh.messages.push(msg);
|
|
181
|
+
if (kind === "checkin")
|
|
182
|
+
fresh.checkin.last = new Date(this.now()).toISOString(); // don't retry every tick
|
|
183
|
+
this.save(fresh);
|
|
184
|
+
}
|
|
185
|
+
finally {
|
|
186
|
+
this.busy = null;
|
|
187
|
+
}
|
|
188
|
+
return msg;
|
|
189
|
+
}
|
|
190
|
+
/** Called by the dashboard's timer. Runs a check-in when one is due. */
|
|
191
|
+
async tick() {
|
|
192
|
+
const c = this.load(), h = c.checkin.every_hours;
|
|
193
|
+
if (!h || this.busy || !this.runner() || !existsSync(passwordFile(this.o.dir)))
|
|
194
|
+
return;
|
|
195
|
+
if (c.checkin.last && this.now() - Date.parse(c.checkin.last) < h * 3600_000)
|
|
196
|
+
return;
|
|
197
|
+
await this.send(CHECKIN(h), "checkin");
|
|
198
|
+
}
|
|
199
|
+
/** Check-in suggestions on Telegram, if it's set up: Approve turns them on, Deny dismisses them. */
|
|
200
|
+
async askOnTelegram(ids) {
|
|
201
|
+
const cfg = loadTelegram(this.o.dir);
|
|
202
|
+
if (!cfg || this.approving)
|
|
203
|
+
return;
|
|
204
|
+
this.approving = true;
|
|
205
|
+
try {
|
|
206
|
+
const rules = ids.map((id) => this.w.rules().get(id)).filter(Boolean);
|
|
207
|
+
const text = `Your AI suggests ${rules.length === 1 ? "a change" : `${rules.length} changes`} to your autopilot:\n` + rules.map((r) => `• ${describeRule(r)}${r.reason ? `\n ${r.reason}` : ""}`).join("\n") + "\n\nApprove turns them on. You can also decide in the dashboard.";
|
|
208
|
+
const d = await requestApproval(cfg, text, { timeoutMs: 30 * 60_000, fetch: this.o.fetch });
|
|
209
|
+
for (const id of ids) {
|
|
210
|
+
const r = this.w.rules().get(id);
|
|
211
|
+
if (r?.status !== "proposed")
|
|
212
|
+
continue;
|
|
213
|
+
if (d === "approved")
|
|
214
|
+
await this.w.rules().setStatus(id, "active");
|
|
215
|
+
else if (d === "denied")
|
|
216
|
+
await this.w.rules().setStatus(id, "cancelled");
|
|
217
|
+
}
|
|
218
|
+
if (d === "approved")
|
|
219
|
+
await notify(cfg, "Turned on.", this.o.fetch).catch(() => { });
|
|
220
|
+
}
|
|
221
|
+
catch { /* Telegram is optional; the dashboard still shows them */ }
|
|
222
|
+
finally {
|
|
223
|
+
this.approving = false;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=ai.js.map
|
package/dist/ai.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAO1C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC;AAErB,MAAM,CAAC,MAAM,MAAM,GAAG;;;;;;;;;;;;gQAY0O,CAAC;AAEjQ,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,6BAA6B,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,4eAA4e,CAAC;AAEhlB,mEAAmE;AACnE,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,SAAS,GAAG,OAAO;IAC3D,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC,MAAM;YAChF,SAAS,EAAE,EAAE,EAAE,qBAAqB,EAAE,cAAc,EAAE,CAAC,CAAC,SAAS;YACjE,gBAAgB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,SAAS;YAC1E,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC,uBAAuB,CAAC;QAAC,OAAO,GAAG,CAAC,4BAA4B,CAAC,CAAC,kCAAkC;QAC/G,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACnF,IAAI,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC;QACvB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/E,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;QACzD,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,YAAY,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,GAAQ,IAAI,CAAC;YAClB,IAAI,CAAC;gBAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;YACrG,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;YACvI,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,QAAQ,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;YACtF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACxL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,WAAW;IAIO;IAAmC;IAHxD,IAAI,CAAS;IACrB,IAAI,GAAuD,IAAI,CAAC;IACxD,SAAS,GAAG,KAAK,CAAC;IAC1B,YAA6B,CAAgB,EAAmB,IAAsG,EAAE;QAA3I,MAAC,GAAD,CAAC,CAAe;QAAmB,MAAC,GAAD,CAAC,CAAuG;QACtK,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAC9D,CAAC;IACO,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9C,GAAG,KAAoB,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,KAAoB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7H,IAAI;QACV,IAAI,CAAC;YAAC,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACjH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;IACvD,CAAC;IACO,IAAI,CAAC,CAAW;QACtB,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;QAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACvI,CAAC;IAED,IAAI;QACF,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACjK,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;YACtE,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE;SACtH,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACvF,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAAC,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;QAAC,IAAI,KAAK;YAAE,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrI,CAAC;IAED,OAAO,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7F,sDAAsD;IACtD,QAAQ,CAAC,IAAI,GAAG,GAAG;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iGAAiG,EAAE,CAAC;QACzJ,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,gEAAgE,EAAE,CAAC;QACxJ,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAC;QAChG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,OAA2B,MAAM;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,GAAG;YAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAG,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAChE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QACvJ,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACtG,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1J,IAAI,GAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,CAAuC,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uDAAuD;YAC3G,IAAI,CAAC;gBAAC,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAAC,CAAC;YAC3F,OAAO,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAE,CAAS,CAAC,YAAY;oBAAE,MAAM,CAAC,CAAC;gBAAC,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAAC,CAAC;YAC/G,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,CAAC,SAAS;gBAAE,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjH,GAAG,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,YAAY,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YACzO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,IAAI,KAAK,SAAS;gBAAE,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAChF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM;gBAAE,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,GAAG,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAG,CAAW,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YACtL,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,IAAI,KAAK,SAAS;gBAAE,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,yBAAyB;YAC1G,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;gBAAS,CAAC;YAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAAC,CAAC;QAC/B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,wEAAwE;IACxE,KAAK,CAAC,IAAI;QACR,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACjD,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO;QACvF,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ;YAAE,OAAO;QACrF,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,oGAAoG;IAC5F,KAAK,CAAC,aAAa,CAAC,GAAa;QACvC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACtE,MAAM,IAAI,GAAG,oBAAoB,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,UAAU,uBAAuB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,YAAY,CAAC,CAAE,CAAC,GAAG,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,kEAAkE,CAAC;YACtR,MAAM,CAAC,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5F,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjC,IAAI,CAAC,EAAE,MAAM,KAAK,UAAU;oBAAE,SAAS;gBACvC,IAAI,CAAC,KAAK,UAAU;oBAAE,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;qBAC9D,IAAI,CAAC,KAAK,QAAQ;oBAAE,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,CAAC,KAAK,UAAU;gBAAE,MAAM,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtF,CAAC;QAAC,MAAM,CAAC,CAAC,0DAA0D,CAAC,CAAC;gBAAS,CAAC;YAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAAC,CAAC;IAC5G,CAAC;CACF"}
|
package/dist/cli.js
CHANGED
|
@@ -17,6 +17,8 @@ import { describeRule } from "./rules.js";
|
|
|
17
17
|
import { parseStrategy } from "./parse.js";
|
|
18
18
|
import { PriceFeed } from "./prices.js";
|
|
19
19
|
import { Autopilot } from "./autopilot.js";
|
|
20
|
+
import { chmodSync, writeFileSync } from "node:fs";
|
|
21
|
+
import { passwordFile } from "./paths.js";
|
|
20
22
|
const out = (v) => console.log(typeof v === "string" ? v : JSON.stringify(v, null, 2));
|
|
21
23
|
/** Ask for a password without echoing it. Uses the env var when set (scripts). */
|
|
22
24
|
async function askPassword(prompt = "Wallet password: ") {
|
|
@@ -253,8 +255,18 @@ async function main(argv) {
|
|
|
253
255
|
return;
|
|
254
256
|
}
|
|
255
257
|
case "mcp":
|
|
256
|
-
await serveStdio();
|
|
258
|
+
await serveStdio({ advisor: args.includes("--advisor") });
|
|
257
259
|
return;
|
|
260
|
+
case "password-file": {
|
|
261
|
+
// Lets an AI app (Claude, Cursor, …) start `tollkit-wallet mcp` without typing the password.
|
|
262
|
+
const pw = await askPassword();
|
|
263
|
+
await TollkitWallet.open(pw); // wrong password fails here, before anything is written
|
|
264
|
+
const f = passwordFile();
|
|
265
|
+
writeFileSync(f, pw, { mode: 0o600 });
|
|
266
|
+
chmodSync(f, 0o600);
|
|
267
|
+
out(`Saved. Only your user account can read ${f}.\nIn your AI app, set TOLLKIT_WALLET_PASSWORD_FILE=${f} (the dashboard's "Connect your AI" button fills it in).\nAnyone who can read this file and your wallet folder can spend within your limits, so keep both on this computer.`);
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
258
270
|
case "ui": {
|
|
259
271
|
const { serveDashboard } = await import("./dashboard.js");
|
|
260
272
|
await serveDashboard(await askPassword(), { port: Number(flag(args, "--port") ?? 7420) });
|
|
@@ -276,6 +288,7 @@ async function main(argv) {
|
|
|
276
288
|
withdraw <chain> <amount> <token> <to> send funds to a saved address
|
|
277
289
|
receipts [--csv] [--since date] trades and payments
|
|
278
290
|
mcp run the MCP server for agents (stdio)
|
|
291
|
+
password-file save your password so an AI app can start the MCP server
|
|
279
292
|
ui [--port 7420] open the dashboard (runs the autopilot too)
|
|
280
293
|
rules list autopilot rules
|
|
281
294
|
rule add "<plain English>" e.g. "buy $25 of SOL every Monday; sell all ETH if it falls 8%"
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare const SERVER_NAME = "tollkit-wallet";
|
|
2
|
+
export interface Launch {
|
|
3
|
+
command: string;
|
|
4
|
+
args: string[];
|
|
5
|
+
env: Record<string, string>;
|
|
6
|
+
}
|
|
7
|
+
export type AppId = "claude" | "claude-code" | "cursor" | "vscode" | "codex" | "gemini";
|
|
8
|
+
export interface AppStatus {
|
|
9
|
+
id: AppId;
|
|
10
|
+
found: boolean;
|
|
11
|
+
added: boolean;
|
|
12
|
+
current: boolean;
|
|
13
|
+
how: "file" | "cli" | "link";
|
|
14
|
+
where?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* How an AI app should start the wallet. GUI apps often start without your shell's PATH,
|
|
18
|
+
* so this uses absolute paths: this computer's node and this copy of the wallet. When the
|
|
19
|
+
* wallet itself is running from npx's cache (which gets cleaned), it uses npx instead.
|
|
20
|
+
*/
|
|
21
|
+
export declare function launchConfig(dir?: string): Launch;
|
|
22
|
+
/** Finds a command on PATH without running a shell. */
|
|
23
|
+
export declare function which(cmd: string): string | null;
|
|
24
|
+
export declare function appStatus(dir?: string): AppStatus[];
|
|
25
|
+
/** Saves the password for AI apps (owner-only file). The caller has already checked it. */
|
|
26
|
+
export declare function savePasswordFile(password: string, dir?: string): string;
|
|
27
|
+
export declare function addApp(id: AppId, dir?: string): Promise<string>;
|
|
28
|
+
export declare function removeApp(id: AppId): Promise<string>;
|
|
29
|
+
export declare function vscodeLink(dir?: string): string;
|
package/dist/connect.js
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Connect your AI": add this wallet's MCP server to AI apps on this computer.
|
|
3
|
+
*
|
|
4
|
+
* Every location and command below was checked against the app's docs, or by
|
|
5
|
+
* running the app's own CLI, on 2026-10-14:
|
|
6
|
+
* Claude desktop claude_desktop_config.json, "mcpServers" (modelcontextprotocol.io, connect-local-servers)
|
|
7
|
+
* Cursor ~/.cursor/mcp.json, "mcpServers" (cursor.com/help/customization/mcp)
|
|
8
|
+
* Claude Code claude mcp add|remove --scope user (code.claude.com/docs/en/mcp; CLI writes ~/.claude.json)
|
|
9
|
+
* Codex codex mcp add|remove (codex-cli 0.162.1 --help; writes ~/.codex/config.toml)
|
|
10
|
+
* Gemini CLI gemini mcp add|remove -s user (geminicli.com/docs/tools/mcp-server; writes ~/.gemini/settings.json)
|
|
11
|
+
* VS Code vscode:mcp/install?{json} link (code.visualstudio.com/api/extension-guides/ai/mcp)
|
|
12
|
+
* Changes are made only when the owner clicks Add or Remove in the dashboard.
|
|
13
|
+
* A JSON file is backed up next to itself before it's changed, and other entries are kept.
|
|
14
|
+
*/
|
|
15
|
+
import { chmodSync, copyFileSync, existsSync, readFileSync, renameSync, statSync, writeFileSync } from "node:fs";
|
|
16
|
+
import { spawn } from "node:child_process";
|
|
17
|
+
import { fileURLToPath } from "node:url";
|
|
18
|
+
import os from "node:os";
|
|
19
|
+
import path from "node:path";
|
|
20
|
+
import { passwordFile, customHome, walletHome } from "./paths.js";
|
|
21
|
+
export const SERVER_NAME = "tollkit-wallet";
|
|
22
|
+
const home = () => os.homedir();
|
|
23
|
+
const isWin = process.platform === "win32";
|
|
24
|
+
/**
|
|
25
|
+
* How an AI app should start the wallet. GUI apps often start without your shell's PATH,
|
|
26
|
+
* so this uses absolute paths: this computer's node and this copy of the wallet. When the
|
|
27
|
+
* wallet itself is running from npx's cache (which gets cleaned), it uses npx instead.
|
|
28
|
+
*/
|
|
29
|
+
export function launchConfig(dir) {
|
|
30
|
+
const env = { TOLLKIT_WALLET_PASSWORD_FILE: passwordFile(dir) };
|
|
31
|
+
if (customHome(dir))
|
|
32
|
+
env.TOLLKIT_WALLET_HOME = walletHome(dir);
|
|
33
|
+
const cli = fileURLToPath(new URL("./cli.js", import.meta.url));
|
|
34
|
+
if (existsSync(cli) && !/[\\/]_npx[\\/]/.test(cli))
|
|
35
|
+
return { command: process.execPath, args: [cli, "mcp"], env };
|
|
36
|
+
const npx = path.join(path.dirname(process.execPath), isWin ? "npx.cmd" : "npx");
|
|
37
|
+
// npx is a node script, so the app also needs node on its PATH.
|
|
38
|
+
if (!isWin && existsSync(npx))
|
|
39
|
+
return { command: npx, args: ["-y", "tollkit-wallet", "mcp"], env: { ...env, PATH: [path.dirname(process.execPath), "/usr/bin", "/bin"].join(":") } };
|
|
40
|
+
return { command: "npx", args: ["-y", "tollkit-wallet", "mcp"], env };
|
|
41
|
+
}
|
|
42
|
+
function claudeDesktopFile() {
|
|
43
|
+
if (process.platform === "darwin")
|
|
44
|
+
return path.join(home(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
|
|
45
|
+
if (isWin && process.env.APPDATA)
|
|
46
|
+
return path.join(process.env.APPDATA, "Claude", "claude_desktop_config.json");
|
|
47
|
+
return null; // the docs give no Linux path
|
|
48
|
+
}
|
|
49
|
+
const cursorFile = () => path.join(home(), ".cursor", "mcp.json");
|
|
50
|
+
/** Finds a command on PATH without running a shell. */
|
|
51
|
+
export function which(cmd) {
|
|
52
|
+
const exts = isWin ? (process.env.PATHEXT ?? ".EXE;.CMD;.BAT").split(";") : [""];
|
|
53
|
+
for (const d of (process.env.PATH ?? "").split(path.delimiter)) {
|
|
54
|
+
if (!d)
|
|
55
|
+
continue;
|
|
56
|
+
for (const e of exts) {
|
|
57
|
+
const f = path.join(d, cmd + e);
|
|
58
|
+
try {
|
|
59
|
+
if (statSync(f).isFile())
|
|
60
|
+
return f;
|
|
61
|
+
}
|
|
62
|
+
catch { /* next */ }
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
function readJson(file) {
|
|
68
|
+
if (!existsSync(file))
|
|
69
|
+
return {};
|
|
70
|
+
const raw = readFileSync(file, "utf8");
|
|
71
|
+
if (!raw.trim())
|
|
72
|
+
return {};
|
|
73
|
+
try {
|
|
74
|
+
return JSON.parse(raw);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
throw new Error(`${file} isn't plain JSON, so it wasn't changed. Use "Do it by hand" instead.`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const same = (a, b) => !!a && a.command === b.command && JSON.stringify(a.args) === JSON.stringify(b.args) && JSON.stringify(a.env ?? {}) === JSON.stringify(b.env);
|
|
81
|
+
function writeJsonEntry(file, entry) {
|
|
82
|
+
const cfg = readJson(file);
|
|
83
|
+
if (existsSync(file))
|
|
84
|
+
copyFileSync(file, `${file}.bak-tollkit`); // the last version before Tollkit changed it
|
|
85
|
+
const servers = { ...(cfg.mcpServers ?? {}) };
|
|
86
|
+
if (entry)
|
|
87
|
+
servers[SERVER_NAME] = entry;
|
|
88
|
+
else
|
|
89
|
+
delete servers[SERVER_NAME];
|
|
90
|
+
cfg.mcpServers = servers;
|
|
91
|
+
const tmp = `${file}.${process.pid}.tmp`;
|
|
92
|
+
writeFileSync(tmp, JSON.stringify(cfg, null, 2) + "\n");
|
|
93
|
+
renameSync(tmp, file);
|
|
94
|
+
}
|
|
95
|
+
function run(cmd, args, timeoutMs = 30_000) {
|
|
96
|
+
return new Promise((res) => {
|
|
97
|
+
const p = spawn(cmd, args, { stdio: ["ignore", "pipe", "pipe"], cwd: home(), shell: false });
|
|
98
|
+
let out = "";
|
|
99
|
+
p.stdout.on("data", (d) => (out += d));
|
|
100
|
+
p.stderr.on("data", (d) => (out += d));
|
|
101
|
+
const t = setTimeout(() => p.kill(), timeoutMs);
|
|
102
|
+
p.on("error", (e) => { clearTimeout(t); res({ code: -1, out: e.message }); });
|
|
103
|
+
p.on("close", (code) => { clearTimeout(t); res({ code: code ?? -1, out: out.slice(-600) }); });
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
function cliEntry(id) {
|
|
107
|
+
try {
|
|
108
|
+
if (id === "claude-code")
|
|
109
|
+
return readJson(path.join(home(), ".claude.json")).mcpServers?.[SERVER_NAME];
|
|
110
|
+
if (id === "gemini")
|
|
111
|
+
return readJson(path.join(home(), ".gemini", "settings.json")).mcpServers?.[SERVER_NAME];
|
|
112
|
+
if (id === "codex") {
|
|
113
|
+
const f = path.join(process.env.CODEX_HOME ?? path.join(home(), ".codex"), "config.toml");
|
|
114
|
+
return existsSync(f) && readFileSync(f, "utf8").includes(`[mcp_servers.${SERVER_NAME}]`) ? { toml: true } : undefined;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const CLI = { "claude-code": "claude", codex: "codex", gemini: "gemini" };
|
|
122
|
+
export function appStatus(dir) {
|
|
123
|
+
const want = launchConfig(dir);
|
|
124
|
+
const out = [];
|
|
125
|
+
const cd = claudeDesktopFile();
|
|
126
|
+
{
|
|
127
|
+
let e;
|
|
128
|
+
try {
|
|
129
|
+
e = cd ? readJson(cd).mcpServers?.[SERVER_NAME] : undefined;
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
e = undefined;
|
|
133
|
+
}
|
|
134
|
+
out.push({ id: "claude", how: "file", where: cd ?? undefined, found: !!cd && existsSync(path.dirname(cd)), added: !!e, current: same(e, want) });
|
|
135
|
+
}
|
|
136
|
+
for (const id of ["claude-code", "codex", "gemini"]) {
|
|
137
|
+
const e = cliEntry(id);
|
|
138
|
+
out.push({ id, how: "cli", found: !!which(CLI[id]), added: !!e, current: e?.toml ? true : same(e, want) });
|
|
139
|
+
}
|
|
140
|
+
{
|
|
141
|
+
let e;
|
|
142
|
+
try {
|
|
143
|
+
e = readJson(cursorFile()).mcpServers?.[SERVER_NAME];
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
e = undefined;
|
|
147
|
+
}
|
|
148
|
+
out.push({ id: "cursor", how: "file", where: cursorFile(), found: existsSync(path.dirname(cursorFile())), added: !!e, current: same(e, want) });
|
|
149
|
+
}
|
|
150
|
+
out.push({ id: "vscode", how: "link", found: true, added: false, current: false });
|
|
151
|
+
return out;
|
|
152
|
+
}
|
|
153
|
+
/** Saves the password for AI apps (owner-only file). The caller has already checked it. */
|
|
154
|
+
export function savePasswordFile(password, dir) {
|
|
155
|
+
const f = passwordFile(dir);
|
|
156
|
+
writeFileSync(f, password, { mode: 0o600 });
|
|
157
|
+
chmodSync(f, 0o600);
|
|
158
|
+
return f;
|
|
159
|
+
}
|
|
160
|
+
export async function addApp(id, dir) {
|
|
161
|
+
const l = launchConfig(dir);
|
|
162
|
+
if (id === "claude") {
|
|
163
|
+
const f = claudeDesktopFile();
|
|
164
|
+
if (!f || !existsSync(path.dirname(f)))
|
|
165
|
+
throw new Error("Claude desktop isn't installed on this computer.");
|
|
166
|
+
writeJsonEntry(f, l);
|
|
167
|
+
return "Added. Quit Claude completely and open it again.";
|
|
168
|
+
}
|
|
169
|
+
if (id === "cursor") {
|
|
170
|
+
if (!existsSync(path.dirname(cursorFile())))
|
|
171
|
+
throw new Error("Cursor isn't installed on this computer.");
|
|
172
|
+
writeJsonEntry(cursorFile(), l);
|
|
173
|
+
return "Added. Restart Cursor.";
|
|
174
|
+
}
|
|
175
|
+
const bin = CLI[id];
|
|
176
|
+
if (!bin)
|
|
177
|
+
throw new Error("This app is added with its own link.");
|
|
178
|
+
const exe = which(bin);
|
|
179
|
+
if (!exe)
|
|
180
|
+
throw new Error(`${bin} isn't on this computer's PATH.`);
|
|
181
|
+
const envFlags = (flag) => Object.entries(l.env).flatMap(([k, v]) => [flag, `${k}=${v}`]);
|
|
182
|
+
// Remove first so Add also updates an older entry. A "not found" here is fine.
|
|
183
|
+
if (id === "claude-code") {
|
|
184
|
+
await run(exe, ["mcp", "remove", "--scope", "user", SERVER_NAME]);
|
|
185
|
+
const r = await run(exe, ["mcp", "add", ...envFlags("--env"), "--transport", "stdio", "--scope", "user", SERVER_NAME, "--", l.command, ...l.args]);
|
|
186
|
+
if (r.code !== 0)
|
|
187
|
+
throw new Error(`claude mcp add failed: ${r.out.trim()}`);
|
|
188
|
+
return "Added. Start a new Claude Code session.";
|
|
189
|
+
}
|
|
190
|
+
if (id === "codex") {
|
|
191
|
+
await run(exe, ["mcp", "remove", SERVER_NAME]);
|
|
192
|
+
const r = await run(exe, ["mcp", "add", SERVER_NAME, ...envFlags("--env"), "--", l.command, ...l.args]);
|
|
193
|
+
if (r.code !== 0)
|
|
194
|
+
throw new Error(`codex mcp add failed: ${r.out.trim()}`);
|
|
195
|
+
return "Added. Start a new Codex session.";
|
|
196
|
+
}
|
|
197
|
+
await run(exe, ["mcp", "remove", "-s", "user", SERVER_NAME]);
|
|
198
|
+
const r = await run(exe, ["mcp", "add", "-s", "user", ...envFlags("-e"), SERVER_NAME, l.command, "--", ...l.args]);
|
|
199
|
+
if (r.code !== 0)
|
|
200
|
+
throw new Error(`gemini mcp add failed: ${r.out.trim()}`);
|
|
201
|
+
return "Added. Start a new Gemini CLI session.";
|
|
202
|
+
}
|
|
203
|
+
export async function removeApp(id) {
|
|
204
|
+
if (id === "claude") {
|
|
205
|
+
const f = claudeDesktopFile();
|
|
206
|
+
if (f && existsSync(f))
|
|
207
|
+
writeJsonEntry(f, null);
|
|
208
|
+
return "Removed. Restart Claude.";
|
|
209
|
+
}
|
|
210
|
+
if (id === "cursor") {
|
|
211
|
+
if (existsSync(cursorFile()))
|
|
212
|
+
writeJsonEntry(cursorFile(), null);
|
|
213
|
+
return "Removed. Restart Cursor.";
|
|
214
|
+
}
|
|
215
|
+
const exe = CLI[id] ? which(CLI[id]) : null;
|
|
216
|
+
if (!exe)
|
|
217
|
+
throw new Error("Not found on this computer.");
|
|
218
|
+
const args = id === "claude-code" ? ["mcp", "remove", "--scope", "user", SERVER_NAME] : id === "gemini" ? ["mcp", "remove", "-s", "user", SERVER_NAME] : ["mcp", "remove", SERVER_NAME];
|
|
219
|
+
const r = await run(exe, args);
|
|
220
|
+
if (r.code !== 0)
|
|
221
|
+
throw new Error(r.out.trim() || "Couldn't remove it.");
|
|
222
|
+
return "Removed.";
|
|
223
|
+
}
|
|
224
|
+
export function vscodeLink(dir) {
|
|
225
|
+
return "vscode:mcp/install?" + encodeURIComponent(JSON.stringify({ name: SERVER_NAME, type: "stdio", ...launchConfig(dir) }));
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=connect.js.map
|