tollkit-wallet 0.2.0 → 0.2.2

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 (78) hide show
  1. package/README.md +63 -4
  2. package/THIRD_PARTY_NOTICES.md +8 -0
  3. package/dist/actions.d.ts +196 -16
  4. package/dist/actions.js +46 -6
  5. package/dist/actions.js.map +1 -1
  6. package/dist/ai-icons.d.ts +5 -0
  7. package/dist/ai-icons.js +3 -0
  8. package/dist/ai-icons.js.map +1 -0
  9. package/dist/ai.d.ts +77 -0
  10. package/dist/ai.js +227 -0
  11. package/dist/ai.js.map +1 -0
  12. package/dist/bridge.d.ts +148 -0
  13. package/dist/bridge.js +460 -0
  14. package/dist/bridge.js.map +1 -0
  15. package/dist/buy.d.ts +17 -0
  16. package/dist/buy.js +23 -0
  17. package/dist/buy.js.map +1 -0
  18. package/dist/cli.js +82 -3
  19. package/dist/cli.js.map +1 -1
  20. package/dist/connect.d.ts +29 -0
  21. package/dist/connect.js +227 -0
  22. package/dist/connect.js.map +1 -0
  23. package/dist/dapp.d.ts +89 -0
  24. package/dist/dapp.js +505 -0
  25. package/dist/dapp.js.map +1 -0
  26. package/dist/dashboard.d.ts +5 -0
  27. package/dist/dashboard.js +203 -2
  28. package/dist/dashboard.js.map +1 -1
  29. package/dist/elizaos.js +2 -0
  30. package/dist/elizaos.js.map +1 -1
  31. package/dist/holdings.d.ts +92 -0
  32. package/dist/holdings.js +200 -0
  33. package/dist/holdings.js.map +1 -0
  34. package/dist/keystore.d.ts +58 -11
  35. package/dist/keystore.js +87 -11
  36. package/dist/keystore.js.map +1 -1
  37. package/dist/ledger.d.ts +1 -1
  38. package/dist/mcp.d.ts +7 -2
  39. package/dist/mcp.js +11 -5
  40. package/dist/mcp.js.map +1 -1
  41. package/dist/netguard.d.ts +8 -0
  42. package/dist/netguard.js +44 -0
  43. package/dist/netguard.js.map +1 -0
  44. package/dist/paths.d.ts +5 -0
  45. package/dist/paths.js +5 -0
  46. package/dist/paths.js.map +1 -1
  47. package/dist/policy.d.ts +4 -4
  48. package/dist/rules.d.ts +11 -2
  49. package/dist/rules.js +23 -1
  50. package/dist/rules.js.map +1 -1
  51. package/dist/sell.d.ts +60 -0
  52. package/dist/sell.js +71 -0
  53. package/dist/sell.js.map +1 -0
  54. package/dist/stake.d.ts +84 -0
  55. package/dist/stake.js +158 -0
  56. package/dist/stake.js.map +1 -0
  57. package/dist/telegram.d.ts +2 -0
  58. package/dist/telegram.js +4 -0
  59. package/dist/telegram.js.map +1 -1
  60. package/dist/ui.js +463 -36
  61. package/dist/ui.js.map +1 -1
  62. package/dist/wallet.d.ts +57 -2
  63. package/dist/wallet.js +185 -4
  64. package/dist/wallet.js.map +1 -1
  65. package/extension/PRIVACY.md +19 -0
  66. package/extension/README.md +16 -0
  67. package/extension/background.js +88 -0
  68. package/extension/content.js +34 -0
  69. package/extension/icons/icon.svg +1 -0
  70. package/extension/icons/icon128.png +0 -0
  71. package/extension/icons/icon16.png +0 -0
  72. package/extension/icons/icon32.png +0 -0
  73. package/extension/icons/icon48.png +0 -0
  74. package/extension/inpage.js +129 -0
  75. package/extension/manifest.json +15 -0
  76. package/extension/popup.html +35 -0
  77. package/extension/popup.js +39 -0
  78. package/package.json +3 -2
package/dist/cli.js CHANGED
@@ -7,7 +7,8 @@
7
7
  */
8
8
  import { createInterface } from "node:readline";
9
9
  import { Writable } from "node:stream";
10
- import { createKeystore, addresses } from "./keystore.js";
10
+ import { createKeystore, addresses, revealBackup, markBackedUp } from "./keystore.js";
11
+ import { decodeBase58, getBytes, toBeArray } from "ethers";
11
12
  import { TollkitWallet, saveTelegram } from "./wallet.js";
12
13
  import { PolicySchema } from "./policy.js";
13
14
  import { requestApproval } from "./telegram.js";
@@ -17,11 +18,17 @@ import { describeRule } from "./rules.js";
17
18
  import { parseStrategy } from "./parse.js";
18
19
  import { PriceFeed } from "./prices.js";
19
20
  import { Autopilot } from "./autopilot.js";
21
+ import { chmodSync, writeFileSync } from "node:fs";
22
+ import { passwordFile } from "./paths.js";
20
23
  const out = (v) => console.log(typeof v === "string" ? v : JSON.stringify(v, null, 2));
21
24
  /** Ask for a password without echoing it. Uses the env var when set (scripts). */
22
25
  async function askPassword(prompt = "Wallet password: ") {
23
26
  if (process.env.TOLLKIT_WALLET_PASSWORD)
24
27
  return process.env.TOLLKIT_WALLET_PASSWORD;
28
+ return askHidden(prompt);
29
+ }
30
+ /** A hidden prompt that never falls back to the password env var (phrases, keys). */
31
+ async function askHidden(prompt) {
25
32
  let muted = false;
26
33
  const sink = new Writable({ write(chunk, _e, cb) { if (!muted)
27
34
  process.stdout.write(chunk); cb(); } });
@@ -54,12 +61,46 @@ async function main(argv) {
54
61
  throw new Error("The passwords don't match.");
55
62
  const a = await createKeystore(pw);
56
63
  await TollkitWallet.open(pw); // writes the default limits
57
- out(`Wallet created. Keys are encrypted on this computer only; Tollkit never sees them.\n Base/Ethereum: ${a.evm}\n Solana: ${a.solana}\nWrite your password down. If you lose it, the funds can't be recovered.\nDefault limits: $50 per trade, $200 trades a day, $0.25 per payment, $5 payments a day. Base and Solana are on; Ethereum is off. Change them with \`tollkit-wallet budget\`.\nSave where you can withdraw to: \`tollkit-wallet addresses add base <your address> <label>\`.`);
64
+ out(phraseBox(a.phrase));
65
+ if (process.stdin.isTTY && /^y/i.test(await ask("Have you written down all 12 words, in order? (y/N) ")))
66
+ markBackedUp();
67
+ else
68
+ out("You can see the words again any time with `tollkit-wallet backup` (or Back up in the dashboard).");
69
+ out(`Wallet created. Keys are encrypted on this computer only; Tollkit never sees them.\n Base/Ethereum: ${a.evm}\n Solana: ${a.solana}\nThe recovery phrase restores this wallet here (\`tollkit-wallet restore\`) or in MetaMask and Phantom.\nDefault limits: $50 per trade, $200 trades a day, $0.25 per payment, $5 payments a day. Base and Solana are on; Ethereum is off. Change them with \`tollkit-wallet budget\`.\nSave where you can withdraw to: \`tollkit-wallet addresses add base <your address> <label>\`.`);
58
70
  return;
59
71
  }
60
72
  case "address":
61
73
  out(addresses());
62
74
  return;
75
+ case "backup": {
76
+ const b = await revealBackup(await askPassword());
77
+ if (b.kind === "phrase")
78
+ out(phraseBox(b.phrase));
79
+ else
80
+ out(`This wallet was made before recovery phrases, so its backup is its two private keys. Keep them as safe as cash:\n Base/Ethereum private key: ${b.evm_private_key}\n Solana private key: ${b.solana_secret_key}\nEither can be imported into another wallet ("Import private key"), or into this one with \`tollkit-wallet restore --keys\`.`);
81
+ if (process.stdin.isTTY && /^y/i.test(await ask("Saved somewhere safe? (y/N) ")))
82
+ markBackedUp();
83
+ return;
84
+ }
85
+ case "restore": {
86
+ const replace = args.includes("--replace");
87
+ let opts;
88
+ if (args.includes("--keys")) {
89
+ const evm = (await askHidden("Base/Ethereum private key (hidden): ")).trim();
90
+ const sol = (await askHidden("Solana private key (hidden): ")).trim();
91
+ opts = { evmPrivateKey: evm.startsWith("0x") ? evm : "0x" + evm, solanaSecretKey: solanaSecret(sol) };
92
+ }
93
+ else
94
+ opts = { phrase: await askHidden("Recovery phrase, words separated by spaces (hidden): ") };
95
+ const pw = await askPassword("New password for this wallet (12+ characters): ");
96
+ if (pw !== (await askPassword("Type it again: ")))
97
+ throw new Error("The passwords don't match.");
98
+ const a = await createKeystore(pw, { ...opts, replace });
99
+ await TollkitWallet.open(pw);
100
+ markBackedUp();
101
+ out(`Restored.\n Base/Ethereum: ${a.evm}\n Solana: ${a.solana}${replace ? "\nThe previous wallet's files were kept next to the new ones with .replaced-<time> at the end. Your limits are back to the defaults; set them and your withdrawal addresses again." : ""}`);
102
+ return;
103
+ }
63
104
  case "status":
64
105
  out((await open()).status());
65
106
  return;
@@ -253,13 +294,28 @@ async function main(argv) {
253
294
  return;
254
295
  }
255
296
  case "mcp":
256
- await serveStdio();
297
+ await serveStdio({ advisor: args.includes("--advisor") });
298
+ return;
299
+ case "password-file": {
300
+ // Lets an AI app (Claude, Cursor, …) start `tollkit-wallet mcp` without typing the password.
301
+ const pw = await askPassword();
302
+ await TollkitWallet.open(pw); // wrong password fails here, before anything is written
303
+ const f = passwordFile();
304
+ writeFileSync(f, pw, { mode: 0o600 });
305
+ chmodSync(f, 0o600);
306
+ 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.`);
257
307
  return;
308
+ }
258
309
  case "ui": {
259
310
  const { serveDashboard } = await import("./dashboard.js");
260
311
  await serveDashboard(await askPassword(), { port: Number(flag(args, "--port") ?? 7420) });
261
312
  return;
262
313
  }
314
+ case "extension": {
315
+ const dir = (await import("node:url")).fileURLToPath(new URL("../extension", import.meta.url));
316
+ out(`The Tollkit browser extension is in:\n ${dir}\n\nTo add it to Chrome (or Brave/Edge):\n 1. Open chrome://extensions and turn on Developer mode (top right).\n 2. Click "Load unpacked" and pick that folder.\n 3. Run \`tollkit-wallet ui\`, open Settings, click "Pair a browser", and paste the code into the extension.`);
317
+ return;
318
+ }
263
319
  case "version":
264
320
  case "--version":
265
321
  out(VERSION);
@@ -275,8 +331,12 @@ async function main(argv) {
275
331
  addresses [add|remove <chain> <address> [label]] your saved withdrawal addresses
276
332
  withdraw <chain> <amount> <token> <to> send funds to a saved address
277
333
  receipts [--csv] [--since date] trades and payments
334
+ backup show your recovery phrase (or, for older wallets, the private keys)
335
+ restore [--keys] [--replace] restore a wallet from its recovery phrase (or private keys)
278
336
  mcp run the MCP server for agents (stdio)
337
+ password-file save your password so an AI app can start the MCP server
279
338
  ui [--port 7420] open the dashboard (runs the autopilot too)
339
+ extension where the browser extension is, and how to add it to Chrome
280
340
  rules list autopilot rules
281
341
  rule add "<plain English>" e.g. "buy $25 of SOL every Monday; sell all ETH if it falls 8%"
282
342
  rule on|pause|cancel <id> turn a rule on (e.g. one an agent proposed), pause or cancel it
@@ -284,6 +344,25 @@ async function main(argv) {
284
344
  paper [reset <usd> | swap ...] practice with pretend money at live prices`);
285
345
  }
286
346
  }
347
+ function phraseBox(phrase) {
348
+ const w = phrase.split(" ");
349
+ const rows = [0, 1, 2, 3].map((r) => [0, 1, 2].map((c) => { const i = r * 3 + c; return `${String(i + 1).padStart(2)}. ${w[i].padEnd(10)}`; }).join(" "));
350
+ return `\nYour recovery phrase. Write these 12 words down, in order, and keep them offline.\nAnyone with them can take the funds; with them you can restore the wallet if this computer is lost.\n\n${rows.join("\n")}\n`;
351
+ }
352
+ /** Solana secret key as base58 (Phantom's export) or a JSON array of 64 numbers (Solana CLI file). */
353
+ function solanaSecret(s) {
354
+ const b = s.startsWith("[") ? new Uint8Array(JSON.parse(s)) : getBytes(toBeArray(decodeBase58(s)));
355
+ const full = s.startsWith("[") ? b : padLeadingZeros(s, b);
356
+ if (full.length !== 64)
357
+ throw new Error("A Solana private key is 64 bytes (base58 text or a [..] list of 64 numbers).");
358
+ return full;
359
+ }
360
+ function padLeadingZeros(b58, bytes) {
361
+ const zeros = b58.match(/^1*/)[0].length; // each leading "1" is a 0x00 byte
362
+ const out = new Uint8Array(zeros + bytes.length);
363
+ out.set(bytes, zeros);
364
+ return out;
365
+ }
287
366
  function ruleLine(r) {
288
367
  const fills = r.state.fills.filter((f) => f.ok).length;
289
368
  return `[${r.id}] ${r.status.toUpperCase()}${r.created_by === "agent" ? " (agent)" : ""}: ${describeRule(r)}${r.state.last_price ? ` · now $${r.state.last_price}` : ""}${fills ? ` · ${fills} fill(s)` : ""}${r.state.last_error ? ` · ${r.state.last_error}` : ""}`;
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;
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"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"}
package/dist/dapp.d.ts ADDED
@@ -0,0 +1,89 @@
1
+ import { Connection, VersionedTransaction, type Keypair } from "@solana/web3.js";
2
+ import { Transaction as EvmTx, type HDNodeWallet, type Wallet } from "ethers";
3
+ import { type Chain } from "./chains.js";
4
+ import type { Decision } from "./telegram.js";
5
+ type Keys = {
6
+ evm: Wallet | HDNodeWallet;
7
+ solana: Keypair;
8
+ };
9
+ export interface Site {
10
+ origin: string;
11
+ evm: boolean;
12
+ solana: boolean;
13
+ chain: "base" | "ethereum";
14
+ since: string;
15
+ }
16
+ export declare class RpcError extends Error {
17
+ readonly code: number;
18
+ constructor(code: number, message: string);
19
+ }
20
+ /** Instructions that hand over control, which a balance check alone wouldn't show. */
21
+ export declare function solanaWarnings(vtx: VersionedTransaction): string[];
22
+ export declare function normalOrigin(o: string): string;
23
+ export declare class DappBridge {
24
+ private o;
25
+ private file;
26
+ private codes;
27
+ private wrongCodes;
28
+ private jobs;
29
+ constructor(o: {
30
+ evm: string;
31
+ solana: string;
32
+ keys: () => Keys;
33
+ chains: () => Chain[];
34
+ dir?: string;
35
+ rpc?: Partial<Record<Chain, string>>;
36
+ approve: (text: string) => Promise<Decision>;
37
+ /** Tests: replace network calls. */ evmRpc?: (chain: "base" | "ethereum", method: string, params: unknown[]) => Promise<unknown>;
38
+ solConn?: Pick<Connection, "simulateTransaction" | "sendRawTransaction" | "getBalance" | "getParsedTokenAccountsByOwner">;
39
+ sendEvm?: (chain: "base" | "ethereum", tx: EvmTx | Record<string, unknown>, keys: Keys) => Promise<string>;
40
+ });
41
+ private load;
42
+ private save;
43
+ /** A one-time code the owner types into the extension (valid 5 minutes). */
44
+ newCode(port: number): string;
45
+ pair(code: string, extOrigin: string): string;
46
+ okToken(token: string | undefined, extOrigin: string): boolean;
47
+ paired(): number;
48
+ unpairAll(): void;
49
+ /** Sites connected to the wallet (EVM, Solana or both). */
50
+ sites(): Site[];
51
+ site(origin: string): Site | undefined;
52
+ private setSite;
53
+ disconnect(origin: string): void;
54
+ /** Start a request; quick ones answer at once, ones needing the owner return a job id to poll. */
55
+ submit(originRaw: string, method: string, params: unknown): Promise<{
56
+ result: unknown;
57
+ } | {
58
+ id: string;
59
+ }>;
60
+ job(id: string): {
61
+ status: "pending" | "done" | "error";
62
+ result?: unknown;
63
+ error?: {
64
+ code: number;
65
+ message: string;
66
+ };
67
+ at: number;
68
+ origin?: string;
69
+ };
70
+ private chainOf;
71
+ private evmOk;
72
+ private quick;
73
+ private solAccount;
74
+ private rpc;
75
+ private sol;
76
+ private meta;
77
+ private tokenMeta;
78
+ /** Plain words for the common token calls, so an approval or transfer isn't hidden behind "Calls 0x095ea7b3". */
79
+ private describeEvmCall;
80
+ /**
81
+ * Simulate a Solana transaction and report what changes for this wallet: SOL, every token account of
82
+ * this wallet that the transaction touches (plus USDC/USDT), and who controls them afterwards.
83
+ * Inner instructions are covered because the result is read from the simulated accounts.
84
+ */
85
+ private simulateSolana;
86
+ private ask;
87
+ private slow;
88
+ }
89
+ export {};