tollkit-wallet 0.2.1 → 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 (61) hide show
  1. package/README.md +49 -2
  2. package/THIRD_PARTY_NOTICES.md +4 -0
  3. package/dist/actions.d.ts +34 -33
  4. package/dist/actions.js +5 -1
  5. package/dist/actions.js.map +1 -1
  6. package/dist/bridge.d.ts +148 -0
  7. package/dist/bridge.js +460 -0
  8. package/dist/bridge.js.map +1 -0
  9. package/dist/buy.d.ts +17 -0
  10. package/dist/buy.js +23 -0
  11. package/dist/buy.js.map +1 -0
  12. package/dist/cli.js +68 -2
  13. package/dist/cli.js.map +1 -1
  14. package/dist/dapp.d.ts +89 -0
  15. package/dist/dapp.js +505 -0
  16. package/dist/dapp.js.map +1 -0
  17. package/dist/dashboard.d.ts +2 -0
  18. package/dist/dashboard.js +145 -2
  19. package/dist/dashboard.js.map +1 -1
  20. package/dist/holdings.d.ts +92 -0
  21. package/dist/holdings.js +200 -0
  22. package/dist/holdings.js.map +1 -0
  23. package/dist/keystore.d.ts +58 -11
  24. package/dist/keystore.js +87 -11
  25. package/dist/keystore.js.map +1 -1
  26. package/dist/ledger.d.ts +1 -1
  27. package/dist/mcp.d.ts +1 -1
  28. package/dist/mcp.js +1 -1
  29. package/dist/netguard.d.ts +8 -0
  30. package/dist/netguard.js +44 -0
  31. package/dist/netguard.js.map +1 -0
  32. package/dist/paths.d.ts +1 -0
  33. package/dist/paths.js +1 -0
  34. package/dist/paths.js.map +1 -1
  35. package/dist/policy.d.ts +4 -4
  36. package/dist/rules.d.ts +4 -4
  37. package/dist/sell.d.ts +60 -0
  38. package/dist/sell.js +71 -0
  39. package/dist/sell.js.map +1 -0
  40. package/dist/stake.d.ts +84 -0
  41. package/dist/stake.js +158 -0
  42. package/dist/stake.js.map +1 -0
  43. package/dist/ui.js +306 -32
  44. package/dist/ui.js.map +1 -1
  45. package/dist/wallet.d.ts +57 -2
  46. package/dist/wallet.js +185 -4
  47. package/dist/wallet.js.map +1 -1
  48. package/extension/PRIVACY.md +19 -0
  49. package/extension/README.md +16 -0
  50. package/extension/background.js +88 -0
  51. package/extension/content.js +34 -0
  52. package/extension/icons/icon.svg +1 -0
  53. package/extension/icons/icon128.png +0 -0
  54. package/extension/icons/icon16.png +0 -0
  55. package/extension/icons/icon32.png +0 -0
  56. package/extension/icons/icon48.png +0 -0
  57. package/extension/inpage.js +129 -0
  58. package/extension/manifest.json +15 -0
  59. package/extension/popup.html +35 -0
  60. package/extension/popup.js +39 -0
  61. package/package.json +3 -2
package/dist/ui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACtE,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA6NnB,SAAS;WACT,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAgMC,CAAC"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACtE,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAqRnB,SAAS;WACT,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA0ZC,CAAC"}
package/dist/wallet.d.ts CHANGED
@@ -11,6 +11,10 @@ import { type Token } from "./tokens.js";
11
11
  import { RuleStore } from "./rules.js";
12
12
  import { PaperBook } from "./paper.js";
13
13
  import { type Executor } from "./autopilot.js";
14
+ import { Staking, type StakingOptions } from "./stake.js";
15
+ import { Sales } from "./sell.js";
16
+ import { DappBridge } from "./dapp.js";
17
+ import { Mover, type MoveAsset, type MoverOptions, type MoveQuote } from "./bridge.js";
14
18
  type Fetch = typeof fetch;
15
19
  export interface WalletOptions {
16
20
  dir?: string;
@@ -21,6 +25,12 @@ export interface WalletOptions {
21
25
  send?: (r: SendRequest, keys: Keys) => Promise<string>;
22
26
  /** Override for tests: sign + send a vetted quote. */
23
27
  execute?: (q: SwapQuote, keys: Keys) => Promise<string>;
28
+ /** Override for tests: the Solana connection and sender used for staking. */
29
+ staking?: Pick<StakingOptions, "conn" | "send">;
30
+ /** Override for tests: chain calls used when moving between networks. */
31
+ mover?: Partial<MoverOptions>;
32
+ /** Override for tests: network calls and approvals for sites using the browser extension. */
33
+ dapp?: Partial<ConstructorParameters<typeof DappBridge>[0]>;
24
34
  /** Override for tests / other channels. Default: Telegram if configured. */
25
35
  approve?: ((text: string) => Promise<Decision>) | null;
26
36
  }
@@ -85,8 +95,8 @@ export declare class TollkitWallet {
85
95
  block_seller_warnings: boolean;
86
96
  agent_rules: "propose" | "auto";
87
97
  withdraw_addresses: {
88
- chain: "base" | "ethereum" | "solana";
89
98
  address: string;
99
+ chain: "base" | "ethereum" | "solana";
90
100
  label: string;
91
101
  }[];
92
102
  };
@@ -115,7 +125,9 @@ export declare class TollkitWallet {
115
125
  /** Quote, check, approve if needed, reserve, sign, send, record. */
116
126
  swap(req: SwapRequest): Promise<SwapResult>;
117
127
  /** Fetch a URL, paying through x402 or MPP if it asks, within the owner's rules. */
118
- pay(url: string, init?: RequestInit): Promise<PayResult>;
128
+ pay(url: string, init?: RequestInit, opts?: {
129
+ publicOnly?: boolean;
130
+ }): Promise<PayResult>;
119
131
  /**
120
132
  * Owner withdrawal. Needs the password again, so an agent holding an open
121
133
  * wallet can't move funds out this way. Not subject to the spending limits.
@@ -129,6 +141,49 @@ export declare class TollkitWallet {
129
141
  reason: string;
130
142
  };
131
143
  }>;
144
+ /** SOL staking. Reading is open; stake, unstake and withdraw need the password every time. */
145
+ staking(): Staking;
146
+ private stk?;
147
+ stakeAction(password: string, a: {
148
+ action: "stake";
149
+ sol: number;
150
+ vote: string;
151
+ } | {
152
+ action: "unstake" | "withdraw";
153
+ account: string;
154
+ }): Promise<{
155
+ tx: string;
156
+ account?: string;
157
+ }>;
158
+ /** Moving USDC/ETH between this wallet's own addresses on different networks. */
159
+ mover(): Mover;
160
+ private mv?;
161
+ /** A priced move (nothing signed). `amount` is in coins, e.g. "25" USDC or "0.05" ETH. */
162
+ moveQuote(asset: MoveAsset, from: Chain, to: Chain, amount: string): Promise<MoveQuote>;
163
+ /** Move with a fresh quote. Needs the password every time. */
164
+ move(password: string, asset: MoveAsset, from: Chain, to: Chain, amount: string, seenReceiveMin?: string): Promise<{
165
+ ok: boolean;
166
+ move: import("./bridge.js").MoveRecord;
167
+ quote: MoveQuote;
168
+ }>;
169
+ /** Websites using this wallet through the Tollkit browser extension. Approvals happen in the dashboard. */
170
+ dapps(): DappBridge;
171
+ private dp?;
172
+ /** Cash-out sales started from the dashboard. */
173
+ sales(): Sales;
174
+ private sl?;
175
+ /**
176
+ * Send the crypto for a Coinbase sale, after the owner clicked "Cash out now" there. Needs the password.
177
+ * Sends only what Coinbase reports for this sale, on the network and coin the owner picked, from this wallet.
178
+ */
179
+ cashOutSend(password: string, ref: string): Promise<{
180
+ ok: true;
181
+ tx: string;
182
+ to: string;
183
+ amount: string;
184
+ }>;
185
+ private selling;
186
+ private cashOutSendLocked;
132
187
  /** Autopilot rules for this wallet. */
133
188
  rules(): RuleStore;
134
189
  /** Paper trading book (real quotes, pretend money). */
package/dist/wallet.js CHANGED
@@ -6,9 +6,10 @@
6
6
  */
7
7
  import { existsSync, readFileSync, writeFileSync } from "node:fs";
8
8
  import { Connection, PublicKey } from "@solana/web3.js";
9
- import { Contract, JsonRpcProvider, formatUnits } from "ethers";
9
+ import { Contract, JsonRpcProvider, formatUnits, parseUnits } from "ethers";
10
10
  import { DEFAULT_RPC, EVM_CHAIN_ID, STABLES, SWAP_FEE_BPS, WSOL, NATIVE_EVM } from "./chains.js";
11
11
  import { addresses, unlock } from "./keystore.js";
12
+ import { TokenList } from "./holdings.js";
12
13
  import { entries, exportCsv, LimitError, record, reserve, settle, spentToday } from "./ledger.js";
13
14
  import { payFetch } from "./pay.js";
14
15
  import { loadPolicy, savePolicy } from "./policy.js";
@@ -24,6 +25,11 @@ import { KNOWN } from "./tokens.js";
24
25
  import { RuleStore } from "./rules.js";
25
26
  import { PaperBook } from "./paper.js";
26
27
  import { liveBalance } from "./autopilot.js";
28
+ import { Staking } from "./stake.js";
29
+ import { Sales, SEND_WINDOW_MS } from "./sell.js";
30
+ import { DappBridge } from "./dapp.js";
31
+ import { publicFetch } from "./netguard.js";
32
+ import { Mover, canMove, fmtAmount } from "./bridge.js";
27
33
  const money = (n) => `$${n.toFixed(2)}`;
28
34
  const strip = ({ raw: _raw, ...q }) => q;
29
35
  export function loadTelegram(dir) {
@@ -268,6 +274,11 @@ export class TollkitWallet {
268
274
  try {
269
275
  const tx = await (this.o.execute ?? ((qq, k) => executeSwap(qq, k, { fetch: this.f, proxy: this.o.proxy, rpc: this.o.rpc })))(q, this.keys);
270
276
  settle(id, { status: "done", tx }, this.o.dir);
277
+ if (q.chain !== "solana" && q.buy_token !== NATIVE_EVM)
278
+ try {
279
+ new TokenList(this.o.dir).add(q.chain, q.buy_token);
280
+ }
281
+ catch { /* display only */ }
271
282
  return { ok: true, quote: strip(q), tx, receipt_id: id };
272
283
  }
273
284
  catch (e) {
@@ -276,10 +287,12 @@ export class TollkitWallet {
276
287
  }
277
288
  }
278
289
  /** Fetch a URL, paying through x402 or MPP if it asks, within the owner's rules. */
279
- async pay(url, init) {
290
+ async pay(url, init, opts = {}) {
291
+ // Agents only reach the public internet (not this computer or the local network), redirects included.
292
+ const f = opts.publicOnly ? publicFetch(this.f) : this.f;
280
293
  return payFetch(url, init, this.keys, {
281
- dir: this.o.dir, policy: this.policy, fetch: this.f, sanctions: this.sanctions,
282
- checkSeller: (u, payTo) => checkSeller(u, payTo, this.f), approve: this.approver, solanaRpc: this.o.rpc?.solana,
294
+ dir: this.o.dir, policy: this.policy, fetch: f, sanctions: this.sanctions,
295
+ checkSeller: (u, payTo) => checkSeller(u, payTo, f), approve: this.approver, solanaRpc: this.o.rpc?.solana,
283
296
  });
284
297
  }
285
298
  /**
@@ -325,6 +338,174 @@ export class TollkitWallet {
325
338
  return { ok: false, to: dest, refused: { code: "send_failed", reason: e.message } };
326
339
  }
327
340
  }
341
+ /** SOL staking. Reading is open; stake, unstake and withdraw need the password every time. */
342
+ staking() {
343
+ return this.stk ??= new Staking({ owner: this.addresses.solana, rpc: this.rpc("solana"), ...(this.o.staking ?? {}) });
344
+ }
345
+ stk;
346
+ async stakeAction(password, a) {
347
+ if (password !== this.password)
348
+ throw new Error("wrong password");
349
+ if (!this.policy.chains.includes("solana"))
350
+ throw new Error("Solana is turned off in your settings.");
351
+ const id = randomUUID(), ts = new Date().toISOString(), st = this.staking();
352
+ const name = async (vote) => (await st.validators().catch(() => [])).find((v) => v.vote === vote)?.name ?? `${vote.slice(0, 4)}…${vote.slice(-4)}`;
353
+ let detail = "", seller = "";
354
+ const log = (e) => record({ id, ts, kind: "stake", usd: 0, chain: "solana", seller, tool: a.action, detail, ...e }, this.o.dir);
355
+ try {
356
+ if (a.action === "stake") {
357
+ if (!Number.isFinite(a.sol) || a.sol <= 0)
358
+ throw new Error("Enter how much SOL to stake.");
359
+ seller = a.vote;
360
+ detail = `Stake ${a.sol} SOL with ${await name(a.vote)}`;
361
+ const r = await st.stake(this.keys.solana, Math.round(a.sol * 1e9), a.vote);
362
+ log({ status: "done", tx: r.tx });
363
+ return r;
364
+ }
365
+ const acct = (await st.list()).find((x) => x.address === a.account);
366
+ seller = acct?.voter ?? a.account;
367
+ const sol = acct ? (a.action === "withdraw" ? acct.lamports : acct.delegated) / 1e9 : 0;
368
+ detail = `${a.action === "unstake" ? "Unstake" : "Withdraw stake:"} ${sol} SOL${acct?.voter ? " from " + (await name(acct.voter)) : ""}`;
369
+ const tx = a.action === "unstake" ? await st.unstake(this.keys.solana, a.account) : (await st.withdraw(this.keys.solana, a.account)).tx;
370
+ log({ status: "done", tx });
371
+ return { tx };
372
+ }
373
+ catch (e) {
374
+ if (detail)
375
+ log({ status: "failed", reason: e.message.slice(0, 300) });
376
+ throw e;
377
+ }
378
+ }
379
+ /** Moving USDC/ETH between this wallet's own addresses on different networks. */
380
+ mover() {
381
+ return this.mv ??= new Mover({ evm: this.addresses.evm, solana: this.addresses.solana, dir: this.o.dir, proxy: this.o.proxy ?? DEFAULT_PROXY, fetch: this.o.fetch, rpc: this.o.rpc, ...(this.o.mover ?? {}) });
382
+ }
383
+ mv;
384
+ /** A priced move (nothing signed). `amount` is in coins, e.g. "25" USDC or "0.05" ETH. */
385
+ async moveQuote(asset, from, to, amount) {
386
+ if (asset !== "USDC" && asset !== "ETH")
387
+ throw new Error("Pick USDC or ETH.");
388
+ for (const c of [from, to])
389
+ if (!this.policy.chains.includes(c))
390
+ throw new Error(`${c} is turned off in your settings.`);
391
+ if (!canMove(asset, from, to))
392
+ throw new Error(asset === "ETH" ? "ETH moves between Base and Ethereum only." : "Pick two different networks.");
393
+ let atomic;
394
+ try {
395
+ atomic = parseUnits(String(amount).trim(), asset === "USDC" ? 6 : 18);
396
+ }
397
+ catch {
398
+ throw new Error("Enter an amount like 25 or 0.05.");
399
+ }
400
+ return this.mover().quote(asset, from, to, atomic.toString());
401
+ }
402
+ /** Move with a fresh quote. Needs the password every time. */
403
+ async move(password, asset, from, to, amount, seenReceiveMin) {
404
+ if (password !== this.password)
405
+ throw new Error("wrong password");
406
+ const q = await this.moveQuote(asset, from, to, amount);
407
+ // The quote is fetched again here; never accept one worse than what the owner was shown.
408
+ if (seenReceiveMin !== undefined && /^\d+$/.test(seenReceiveMin) && BigInt(q.receive_min) < BigInt(seenReceiveMin))
409
+ throw new Error(`The price changed: you'd now get at least ${fmtAmount(asset, q.receive_min)}. Check the new quote and try again.`);
410
+ const id = randomUUID(), ts = new Date().toISOString();
411
+ const usd = asset === "USDC" ? Number(q.amount) / 1e6 : 0;
412
+ const base = { id, ts, kind: "move", usd, chain: from, seller: q.via === "cctp" ? "Circle CCTP" : "Across", tool: "move", fee_usd: asset === "USDC" ? Number(q.tollkit_fee) / 1e6 : undefined, detail: `${fmtAmount(asset, q.amount)} ${from} -> ${to}` };
413
+ try {
414
+ const rec = await this.mover().execute(q, this.keys);
415
+ record({ ...base, status: "done", tx: rec.tx }, this.o.dir);
416
+ return { ok: true, move: rec, quote: q };
417
+ }
418
+ catch (e) {
419
+ record({ ...base, status: "failed", reason: e.message.slice(0, 300) }, this.o.dir);
420
+ throw e;
421
+ }
422
+ }
423
+ /** Websites using this wallet through the Tollkit browser extension. Approvals happen in the dashboard. */
424
+ dapps() {
425
+ return this.dp ??= new DappBridge({ evm: this.addresses.evm, solana: this.addresses.solana, keys: () => this.keys, chains: () => this.policy.chains, dir: this.o.dir, rpc: this.o.rpc,
426
+ approve: (text) => requestLocal(this.o.dir, text, { timeoutMs: 5 * 60_000 }), ...(this.o.dapp ?? {}) });
427
+ }
428
+ dp;
429
+ /** Cash-out sales started from the dashboard. */
430
+ sales() { return this.sl ??= new Sales({ dir: this.o.dir, proxy: this.o.proxy, fetch: this.o.fetch }); }
431
+ sl;
432
+ /**
433
+ * Send the crypto for a Coinbase sale, after the owner clicked "Cash out now" there. Needs the password.
434
+ * Sends only what Coinbase reports for this sale, on the network and coin the owner picked, from this wallet.
435
+ */
436
+ async cashOutSend(password, ref) {
437
+ if (password !== this.password)
438
+ throw new Error("wrong password");
439
+ const sale = this.sales().get(ref);
440
+ if (!sale)
441
+ throw new Error("That sale isn't from this wallet.");
442
+ if (sale.state !== "open")
443
+ throw new Error(sale.state === "sent" || sale.state === "sending" ? "Already sent for this sale. Check Activity." : `This sale is ${sale.state}.`);
444
+ if (!sale.amount)
445
+ throw new Error("This sale has no amount set. Start a new cash out with an amount.");
446
+ if (this.selling.has(ref))
447
+ throw new Error("Already sending for this sale.");
448
+ this.selling.add(ref);
449
+ try {
450
+ return await this.cashOutSendLocked(sale, ref);
451
+ }
452
+ finally {
453
+ this.selling.delete(ref);
454
+ }
455
+ }
456
+ selling = new Set();
457
+ async cashOutSendLocked(sale, ref) {
458
+ const own = sale.chain === "solana" ? this.addresses.solana : this.addresses.evm;
459
+ const t = await this.sales().status(own, ref);
460
+ if (!t || !/STARTED/.test(t.status) || !t.to_address)
461
+ throw new Error("Coinbase isn't ready yet. Click \"Cash out now\" on the Coinbase page first.");
462
+ if (t.network.toLowerCase() !== sale.chain || t.asset.toUpperCase() !== sale.asset)
463
+ throw new Error(`Coinbase is expecting ${t.asset} on ${t.network}, not ${sale.asset} on ${sale.chain}. Start a new cash out.`);
464
+ if (t.from_address && (sale.chain === "solana" ? t.from_address !== own : t.from_address.toLowerCase() !== own.toLowerCase()))
465
+ throw new Error("Coinbase is expecting the crypto from a different wallet.");
466
+ const since = Date.parse(t.updated_at || t.created_at || "");
467
+ if (Number.isFinite(since) && Date.now() - since > SEND_WINDOW_MS)
468
+ throw new Error("Coinbase's 30 minutes to send have passed. Start a new cash out.");
469
+ const token = KNOWN[sale.chain][sale.asset];
470
+ if (!token)
471
+ throw new Error("Unsupported coin.");
472
+ const dest = checkDestination(sale.chain, t.to_address);
473
+ let atomic;
474
+ try {
475
+ atomic = parseUnits(String(t.sell_amount?.value ?? ""), token.decimals);
476
+ }
477
+ catch {
478
+ throw new Error("Coinbase didn't say how much to send.");
479
+ }
480
+ if (atomic <= 0n)
481
+ throw new Error("Coinbase didn't say how much to send.");
482
+ // Never more than the owner chose to sell, and only in the coin they picked.
483
+ if (t.sell_amount?.currency && t.sell_amount.currency.toUpperCase() !== token.symbol)
484
+ throw new Error(`Coinbase is expecting ${t.sell_amount.currency}, not ${token.symbol}. Start a new cash out.`);
485
+ if (atomic > parseUnits(sale.amount, token.decimals))
486
+ throw new Error(`Coinbase is expecting ${t.sell_amount.value} ${token.symbol}, more than the ${sale.amount} you chose. Start a new cash out.`);
487
+ if (!this.o.send) {
488
+ const have = await balanceAtomic(sale.chain, token, own, this.rpc(sale.chain)).catch(() => null);
489
+ if (have !== null && have < atomic)
490
+ throw new Error(`The wallet has ${formatUnits(have, token.decimals)} ${token.symbol} on ${sale.chain}, less than the ${t.sell_amount.value} Coinbase is expecting.`);
491
+ }
492
+ const id = randomUUID(), ts = new Date().toISOString();
493
+ const base = { id, ts, kind: "withdrawal", usd: token.symbol === "USDC" ? Number(t.sell_amount.value) : 0, chain: sale.chain, seller: "Coinbase", tool: "cash out", detail: `${t.sell_amount.value} ${token.symbol} -> Coinbase (cash out${t.total ? `, ${t.total.value} ${t.total.currency}` : ""})` };
494
+ // Marked before signing, so a retry or a second click can never send twice.
495
+ this.sales().update(ref, { state: "sending" });
496
+ try {
497
+ const tx = await (this.o.send ?? ((r, k) => sendTokens(r, k, this.rpc(sale.chain))))({ chain: sale.chain, token, to: dest, amount: atomic.toString() }, this.keys);
498
+ record({ ...base, status: "done", tx }, this.o.dir);
499
+ this.sales().update(ref, { state: "sent", tx });
500
+ return { ok: true, tx, to: dest, amount: `${t.sell_amount.value} ${token.symbol}` };
501
+ }
502
+ catch (e) {
503
+ record({ ...base, status: "failed", reason: e.message.slice(0, 300) }, this.o.dir);
504
+ // It may or may not have reached the network; don't offer to send again for this sale.
505
+ this.sales().update(ref, { state: "failed", reason: e.message.slice(0, 200) });
506
+ throw new Error(`${e.message.slice(0, 200)} Check Activity before starting a new cash out.`);
507
+ }
508
+ }
328
509
  /** Autopilot rules for this wallet. */
329
510
  rules() { return new RuleStore(this.o.dir); }
330
511
  /** Paper trading book (real quotes, pretend money). */
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ # Tollkit Wallet extension: privacy
2
+
3
+ The extension connects websites to the Tollkit Wallet app running on your own computer.
4
+
5
+ What it stores, in Chrome's local extension storage on this computer:
6
+ - the port of your Tollkit Wallet dashboard (for example 7420), and
7
+ - a pairing token that the wallet issued when you paired this browser.
8
+
9
+ What it sends, and where:
10
+ - When a website calls the wallet (for example to connect, read the chain, sign or send), the extension passes that request and the website's origin (for example `https://app.example.com`) to the Tollkit Wallet at `http://127.0.0.1` on your computer. Nothing else is sent.
11
+ - It sends nothing to Tollkit's servers or to anyone else. It has no analytics.
12
+
13
+ What it doesn't do:
14
+ - It doesn't read or collect pages, browsing history or form data. The script it adds to https pages only answers calls the page makes to the wallet.
15
+ - It holds no private keys or recovery phrase. Signing happens in the Tollkit Wallet, after you approve each request there.
16
+
17
+ Unpairing the browser (in the extension, or "Unpair all browsers" in Tollkit's Settings) removes the token.
18
+
19
+ Contact: Tollkit LLC, https://tollkit.dev
@@ -0,0 +1,16 @@
1
+ # Tollkit Wallet browser extension
2
+
3
+ Lets websites connect to the Tollkit Wallet on this computer, the way they connect to MetaMask or Phantom.
4
+
5
+ - Base and Ethereum: an EIP-1193 provider, announced with EIP-6963 (and as `window.ethereum` when no other wallet has set it).
6
+ - Solana: a Wallet Standard wallet (connect, sign transaction, sign and send, sign message).
7
+ - Keys stay in Tollkit. Connecting a site, signing and sending each wait for your OK in Tollkit's Approvals tab, which shows the site and what it asked for. Transactions are checked against the network first.
8
+ - Read-only calls (balances, block number, contract reads) go through Tollkit to the network without a prompt.
9
+
10
+ ## Add it to Chrome, Brave or Edge
11
+
12
+ 1. Run `tollkit-wallet extension` to see where the folder is.
13
+ 2. Open `chrome://extensions`, turn on **Developer mode**, click **Load unpacked** and pick that folder.
14
+ 3. Run `tollkit-wallet ui`, open **Settings**, click **Pair a browser**, and paste the code into the extension.
15
+
16
+ The extension talks only to `http://127.0.0.1` (the Tollkit dashboard). Tollkit has to be open for sites to use it.
@@ -0,0 +1,88 @@
1
+ // Tollkit Wallet extension service worker: forwards site requests to the Tollkit dashboard running
2
+ // on this computer (http://127.0.0.1:<port>), with the site's origin as Chrome reports it.
3
+ // It holds no keys; the wallet answers, and asks the owner first for anything that signs or connects.
4
+
5
+ // Keep the pairing token away from content scripts (storage.local is visible to them by default).
6
+ chrome.storage.local.setAccessLevel({ accessLevel: "TRUSTED_CONTEXTS" }).catch(() => {});
7
+
8
+ const NOT_PAIRED = { code: 4900, message: "Tollkit isn't set up in this browser. Click the Tollkit extension icon to pair it with your wallet." };
9
+ const NOT_RUNNING = { code: 4900, message: "Tollkit Wallet isn't open. Start it with: tollkit-wallet ui" };
10
+
11
+ async function cfg() {
12
+ const c = await chrome.storage.local.get(["port", "token"]);
13
+ return c.port && c.token ? c : null;
14
+ }
15
+
16
+ // Always POST: Chrome adds the extension's Origin header to POSTs, which the wallet checks.
17
+ async function call(c, path, body) {
18
+ const r = await fetch(`http://127.0.0.1:${c.port}${path}`, {
19
+ method: "POST",
20
+ headers: { "content-type": "application/json", "x-tw-ext": c.token },
21
+ body: JSON.stringify(body || {}),
22
+ });
23
+ const j = await r.json().catch(() => ({}));
24
+ if (r.status === 401) throw Object.assign(new Error(j.error || NOT_PAIRED.message), { rpc: NOT_PAIRED });
25
+ if (!r.ok) throw Object.assign(new Error(j.error || `Tollkit answered ${r.status}`), { rpc: { code: -32603, message: j.error || `Tollkit answered ${r.status}` } });
26
+ return j;
27
+ }
28
+
29
+ const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
30
+
31
+ async function handle(origin, method, params) {
32
+ const c = await cfg();
33
+ if (!c) return { error: NOT_PAIRED };
34
+ let r;
35
+ try { r = await call(c, "/api/ext/request", { origin, method, params }); }
36
+ catch (e) { return { error: e.rpc || NOT_RUNNING }; }
37
+ if (r.error) return { error: r.error };
38
+ if ("result" in r) return { result: r.result };
39
+ // Waiting for the owner: poll the result (approvals expire after 5 minutes).
40
+ for (let i = 0; i < 400; i++) {
41
+ await sleep(i < 20 ? 500 : 1000);
42
+ let j;
43
+ try { j = await call(c, "/api/ext/result", { id: r.id }); } catch (e) { return { error: e.rpc || NOT_RUNNING }; }
44
+ if (j.error && !j.status) return { error: j.error };
45
+ if (j.status === "done") return { result: j.result };
46
+ if (j.status === "error") return { error: j.error };
47
+ }
48
+ return { error: { code: 4001, message: "No answer in Tollkit in time." } };
49
+ }
50
+
51
+ chrome.runtime.onConnect.addListener((port) => {
52
+ if (port.name !== "tollkit") return;
53
+ const origin = port.sender && port.sender.origin;
54
+ port.onMessage.addListener(async (m) => {
55
+ if (!m || m.type === "ping" || typeof m.id !== "string") return;
56
+ const out = origin ? await handle(origin, String(m.method), m.params) : { error: { code: 4100, message: "Unknown site." } };
57
+ try { port.postMessage({ id: m.id, ...out }); } catch { /* the tab closed */ }
58
+ });
59
+ });
60
+
61
+ // The popup pairs and reads state through here so the token stays in the service worker's storage.
62
+ chrome.runtime.onMessage.addListener((m, sender, reply) => {
63
+ // Only this extension's own pages (the popup), never content scripts in websites.
64
+ if (sender.id !== chrome.runtime.id || !String(sender.url || "").startsWith(chrome.runtime.getURL(""))) return;
65
+ (async () => {
66
+ if (m.type === "pair") {
67
+ const code = String(m.code || "").trim().toUpperCase();
68
+ const port = Number((/^(\d{2,5})-/.exec(code) || [])[1]);
69
+ if (!port) return reply({ error: "Paste the whole code from Tollkit's Settings, like 7420-AB12-CD34." });
70
+ try {
71
+ const r = await fetch(`http://127.0.0.1:${port}/api/ext/pair`, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ code }) });
72
+ const j = await r.json().catch(() => ({}));
73
+ if (!r.ok || !j.token) return reply({ error: j.error || "Pairing failed." });
74
+ await chrome.storage.local.set({ port, token: j.token });
75
+ return reply({ ok: true });
76
+ } catch { return reply({ error: NOT_RUNNING.message }); }
77
+ }
78
+ if (m.type === "state") {
79
+ const c = await cfg();
80
+ if (!c) return reply({ paired: false });
81
+ try { return reply({ paired: true, port: c.port, ...(await call(c, "/api/ext/state", {})) }); }
82
+ catch (e) { return reply({ paired: true, port: c.port, error: (e.rpc || NOT_RUNNING).message }); }
83
+ }
84
+ if (m.type === "unpair") { await chrome.storage.local.remove(["port", "token"]); return reply({ ok: true }); }
85
+ reply({ error: "unknown" });
86
+ })();
87
+ return true;
88
+ });
@@ -0,0 +1,34 @@
1
+ // Tollkit Wallet: relays requests between the page's provider (inpage.js) and the extension.
2
+ // Only messages from this same window with Tollkit's tag are passed on. The site's origin is
3
+ // added by Chrome on the extension side, never taken from the page.
4
+ (() => {
5
+ const TAG = "tollkit-wallet";
6
+ let port = null;
7
+ const open = new Set();
8
+ let ping = null;
9
+
10
+ function connect() {
11
+ port = chrome.runtime.connect({ name: "tollkit" });
12
+ port.onMessage.addListener((m) => {
13
+ if (!m || typeof m.id !== "string") return;
14
+ open.delete(m.id);
15
+ if (!open.size && ping) { clearInterval(ping); ping = null; }
16
+ window.postMessage({ [TAG]: "res", id: m.id, result: m.result, error: m.error }, window.location.origin);
17
+ });
18
+ port.onDisconnect.addListener(() => {
19
+ // The extension restarted: fail what was waiting so the site can retry.
20
+ for (const id of open) window.postMessage({ [TAG]: "res", id, error: { code: 4900, message: "Tollkit restarted. Try again." } }, window.location.origin);
21
+ open.clear();
22
+ port = null;
23
+ });
24
+ }
25
+
26
+ window.addEventListener("message", (e) => {
27
+ if (e.source !== window || !e.data || e.data[TAG] !== "req" || typeof e.data.id !== "string" || typeof e.data.method !== "string") return;
28
+ if (!port) connect();
29
+ open.add(e.data.id);
30
+ // Messages on the port keep the extension's service worker running while the owner decides.
31
+ if (!ping) ping = setInterval(() => { try { port && port.postMessage({ type: "ping" }); } catch { /* reconnects on next request */ } }, 20000);
32
+ port.postMessage({ id: e.data.id, method: e.data.method, params: e.data.params });
33
+ });
34
+ })();
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><rect x="1.5" y="1.5" width="97" height="97" rx="20" fill="#0a0a0a" stroke="#2f3442" stroke-width="3"/><path d="M42 22h12v16h16v11H54v17c0 4.5 2 6.5 6.5 6.5H70V83H59C48 83 42 77.5 42 67V49h-9V38h9z" fill="#4a8eff"/></svg>
Binary file
Binary file
Binary file
Binary file