fuego-cli 1.0.0 → 1.1.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 +83 -2
- package/dist/commands/addbook.d.ts +9 -0
- package/dist/commands/addbook.d.ts.map +1 -0
- package/dist/commands/addbook.js +111 -0
- package/dist/commands/addbook.js.map +1 -0
- package/dist/commands/addrpc.d.ts +7 -0
- package/dist/commands/addrpc.d.ts.map +1 -0
- package/dist/commands/addrpc.js +41 -0
- package/dist/commands/addrpc.js.map +1 -0
- package/dist/commands/contacts.d.ts +9 -0
- package/dist/commands/contacts.d.ts.map +1 -0
- package/dist/commands/contacts.js +111 -0
- package/dist/commands/contacts.js.map +1 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +12 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/rpc.d.ts +7 -0
- package/dist/commands/rpc.d.ts.map +1 -0
- package/dist/commands/rpc.js +41 -0
- package/dist/commands/rpc.js.map +1 -0
- package/dist/commands/send.d.ts +7 -0
- package/dist/commands/send.d.ts.map +1 -0
- package/dist/commands/send.js +128 -0
- package/dist/commands/send.js.map +1 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +4 -2
- package/dist/commands/update.js.map +1 -1
- package/dist/index.js +38 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/contacts.ts +155 -0
- package/src/commands/create.ts +14 -1
- package/src/commands/rpc.ts +57 -0
- package/src/commands/send.ts +162 -0
- package/src/commands/update.ts +4 -2
- package/src/index.ts +45 -1
- package/fuego-cli-0.1.0.tgz +0 -0
- package/fuego-cli-1.0.0.tgz +0 -0
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
**The first Solana wallet CLI designed FOR autonomous agents.**
|
|
27
27
|
|
|
28
|
-
- ⚡ **
|
|
28
|
+
- ⚡ **Zero friction** — No prompts, no waiting, just instant signing
|
|
29
29
|
- 🤖 **Agent-first** — Built for automated workflows
|
|
30
30
|
- 🏠 **Local-only** — Keys never leave your machine
|
|
31
31
|
- 🔄 **Auto-updating** — Stay current with `fuego update`
|
|
@@ -70,6 +70,9 @@ fuego dashboard
|
|
|
70
70
|
| `fuego create` | Create a new Solana wallet |
|
|
71
71
|
| `fuego address` | Show your wallet address |
|
|
72
72
|
| `fuego balance` | Check SOL, USDC, USDT balances |
|
|
73
|
+
| `fuego rpc` | Show or configure your Solana RPC endpoint |
|
|
74
|
+
| `fuego contacts` | Manage your contacts |
|
|
75
|
+
| `fuego send` | Send SOL, USDC, or USDT to an address or contact |
|
|
73
76
|
|
|
74
77
|
### Project Management
|
|
75
78
|
|
|
@@ -101,7 +104,9 @@ fuego create --name prod-wallet
|
|
|
101
104
|
~/.fuego/
|
|
102
105
|
├── wallet.json # Private key (600 permissions)
|
|
103
106
|
├── wallet-config.json # Public key + metadata
|
|
104
|
-
|
|
107
|
+
├── config.json # CLI config with versions
|
|
108
|
+
└── contacts/
|
|
109
|
+
└── address-book.json # Your saved contacts
|
|
105
110
|
```
|
|
106
111
|
|
|
107
112
|
---
|
|
@@ -186,6 +191,82 @@ fuego update --fuego
|
|
|
186
191
|
|
|
187
192
|
---
|
|
188
193
|
|
|
194
|
+
### `fuego rpc [options]`
|
|
195
|
+
|
|
196
|
+
Show or configure your Solana RPC endpoint for faster or more reliable connections.
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
# Show current RPC configuration
|
|
200
|
+
fuego rpc
|
|
201
|
+
|
|
202
|
+
# Set a custom RPC endpoint
|
|
203
|
+
fuego rpc --url https://helius.xyz/... --network mainnet
|
|
204
|
+
|
|
205
|
+
# Use public mainnet
|
|
206
|
+
fuego rpc --url https://api.mainnet-beta.solana.com
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**Options:**
|
|
210
|
+
- `-u, --url <url>` — RPC endpoint URL
|
|
211
|
+
- `-n, --network <network>` — Network type: `mainnet`, `devnet`, `testnet` (default: `mainnet`)
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
### `fuego contacts <subcommand>`
|
|
216
|
+
|
|
217
|
+
Manage your contacts for quick access to frequently used addresses.
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
# Add a contact
|
|
221
|
+
fuego contacts add melanie GvCoHGGBR97Yphzc6SrRycZyS31oUYBM8m9hLRtJT7r5 --label "Melanie's wallet"
|
|
222
|
+
|
|
223
|
+
# List all contacts
|
|
224
|
+
fuego contacts list
|
|
225
|
+
|
|
226
|
+
# Show specific contact
|
|
227
|
+
fuego contacts show melanie
|
|
228
|
+
|
|
229
|
+
# Remove contact (with confirmation)
|
|
230
|
+
fuego contacts remove melanie --yes
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**Storage:** `~/.fuego/contacts/address-book.json`
|
|
234
|
+
|
|
235
|
+
**Commands:**
|
|
236
|
+
- `add <name> <address> [--label "description"]` — Add a contact
|
|
237
|
+
- `list` — Show all contacts
|
|
238
|
+
- `show <name>` — Show contact details
|
|
239
|
+
- `remove <name> [--yes]` — Remove a contact
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
### `fuego send <recipient> <amount>`
|
|
244
|
+
|
|
245
|
+
Send SOL, USDC, or USDT to a Solana address or address book contact.
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
# Send SOL to an address
|
|
249
|
+
fuego send GvCoHGGBR97Yphzc6SrRycZyS31oUYBM8m9hLRtJT7r5 0.5 --token SOL
|
|
250
|
+
|
|
251
|
+
# Send USDC to a contact
|
|
252
|
+
fuego send melanie 10 --token USDC
|
|
253
|
+
|
|
254
|
+
# Send and confirm immediately
|
|
255
|
+
fuego send melanie 5 --token USDT --yes
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
**Options:**
|
|
259
|
+
- `-t, --token <token>` — **Required.** Token to send: `SOL`, `USDC`, or `USDT`
|
|
260
|
+
- `-y, --yes` — Skip confirmation prompt and send immediately
|
|
261
|
+
|
|
262
|
+
**Recipient can be:**
|
|
263
|
+
- A full Solana address (e.g., `GvCoHGGBR97Yphzc6SrRycZyS31oUYBM8m9hLRtJT7r5`)
|
|
264
|
+
- A contact name (e.g., `melanie`)
|
|
265
|
+
|
|
266
|
+
**Safety:** By default, `fuego send` shows a transaction preview and requires `--yes` to confirm. This prevents accidental sends.
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
189
270
|
### `fuego install [options]`
|
|
190
271
|
|
|
191
272
|
Install the [Fuego project](https://github.com/willmcdeezy/fuego) — Rust server, Python scripts, and dashboard.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function addBookAddCommand(name: string, address: string, options: {
|
|
2
|
+
label?: string;
|
|
3
|
+
}): Promise<void>;
|
|
4
|
+
export declare function addBookListCommand(): Promise<void>;
|
|
5
|
+
export declare function addBookShowCommand(name: string): Promise<void>;
|
|
6
|
+
export declare function addBookRemoveCommand(name: string, options: {
|
|
7
|
+
yes?: boolean;
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=addbook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addbook.d.ts","sourceRoot":"","sources":["../../src/commands/addbook.ts"],"names":[],"mappings":"AAqCA,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCjH;AAGD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqBxD;AAGD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBpE;AAGD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BlG"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import os from 'os';
|
|
5
|
+
import { showSuccess, showInfo, showWarning, flameDivider } from '../lib/ascii.js';
|
|
6
|
+
const CONTACTS_DIR = path.join(os.homedir(), '.fuego', 'contacts');
|
|
7
|
+
const ADDRESS_BOOK_FILE = path.join(CONTACTS_DIR, 'address-book.json');
|
|
8
|
+
function loadAddressBook() {
|
|
9
|
+
if (!fs.existsSync(ADDRESS_BOOK_FILE)) {
|
|
10
|
+
return {};
|
|
11
|
+
}
|
|
12
|
+
return fs.readJsonSync(ADDRESS_BOOK_FILE);
|
|
13
|
+
}
|
|
14
|
+
function saveAddressBook(book) {
|
|
15
|
+
fs.ensureDirSync(CONTACTS_DIR);
|
|
16
|
+
fs.writeJsonSync(ADDRESS_BOOK_FILE, book, { spaces: 2 });
|
|
17
|
+
}
|
|
18
|
+
function isValidSolanaAddress(address) {
|
|
19
|
+
// Basic Solana address validation (32-44 chars, base58)
|
|
20
|
+
return /^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(address);
|
|
21
|
+
}
|
|
22
|
+
// Add a contact
|
|
23
|
+
export async function addBookAddCommand(name, address, options) {
|
|
24
|
+
console.log();
|
|
25
|
+
if (!name || !address) {
|
|
26
|
+
console.log(chalk.red('❌ Usage: fuego addbook add <name> <address> [--label "description"]'));
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
// Validate address
|
|
30
|
+
if (!isValidSolanaAddress(address)) {
|
|
31
|
+
console.log(chalk.red('❌ Invalid Solana address format.'));
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
const book = loadAddressBook();
|
|
35
|
+
// Check if name already exists
|
|
36
|
+
if (book[name]) {
|
|
37
|
+
showWarning(`Contact "${name}" already exists.\n\nUse a different name or remove the existing contact first.`);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// Add contact
|
|
41
|
+
book[name] = {
|
|
42
|
+
address,
|
|
43
|
+
label: options.label,
|
|
44
|
+
addedAt: new Date().toISOString()
|
|
45
|
+
};
|
|
46
|
+
saveAddressBook(book);
|
|
47
|
+
showSuccess('✅ Contact Added', `Name: ${chalk.cyan(name)}\nAddress: ${chalk.cyan(address.slice(0, 8))}...${chalk.cyan(address.slice(-8))}${options.label ? '\nLabel: ' + chalk.cyan(options.label) : ''}`);
|
|
48
|
+
flameDivider();
|
|
49
|
+
}
|
|
50
|
+
// List all contacts
|
|
51
|
+
export async function addBookListCommand() {
|
|
52
|
+
console.log();
|
|
53
|
+
const book = loadAddressBook();
|
|
54
|
+
const contacts = Object.entries(book);
|
|
55
|
+
if (contacts.length === 0) {
|
|
56
|
+
showInfo('📒 Address Book', ['No contacts yet.', '', chalk.yellow('Add one: fuego addbook add <name> <address>')]);
|
|
57
|
+
flameDivider();
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const lines = [`${contacts.length} contact${contacts.length === 1 ? '' : 's'}\n`];
|
|
61
|
+
for (const [name, entry] of contacts) {
|
|
62
|
+
const shortAddr = `${entry.address.slice(0, 6)}...${entry.address.slice(-6)}`;
|
|
63
|
+
lines.push(`${chalk.cyan(name)}: ${chalk.white(shortAddr)}${entry.label ? chalk.gray(` (${entry.label})`) : ''}`);
|
|
64
|
+
}
|
|
65
|
+
showInfo('📒 Address Book', lines);
|
|
66
|
+
flameDivider();
|
|
67
|
+
}
|
|
68
|
+
// Show a specific contact
|
|
69
|
+
export async function addBookShowCommand(name) {
|
|
70
|
+
console.log();
|
|
71
|
+
if (!name) {
|
|
72
|
+
console.log(chalk.red('❌ Usage: fuego addbook show <name>'));
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
const book = loadAddressBook();
|
|
76
|
+
const entry = book[name];
|
|
77
|
+
if (!entry) {
|
|
78
|
+
console.log(chalk.red(`❌ Contact "${name}" not found.`));
|
|
79
|
+
console.log(chalk.gray('\nUse "fuego addbook list" to see all contacts.'));
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
showInfo(`📇 ${name}`, [
|
|
83
|
+
`Address: ${chalk.white(entry.address)}`,
|
|
84
|
+
entry.label ? `Label: ${chalk.cyan(entry.label)}` : '',
|
|
85
|
+
`Added: ${chalk.gray(new Date(entry.addedAt).toLocaleDateString())}`
|
|
86
|
+
].filter(Boolean));
|
|
87
|
+
flameDivider();
|
|
88
|
+
}
|
|
89
|
+
// Remove a contact
|
|
90
|
+
export async function addBookRemoveCommand(name, options) {
|
|
91
|
+
console.log();
|
|
92
|
+
if (!name) {
|
|
93
|
+
console.log(chalk.red('❌ Usage: fuego addbook remove <name> [--yes]'));
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
const book = loadAddressBook();
|
|
97
|
+
if (!book[name]) {
|
|
98
|
+
console.log(chalk.red(`❌ Contact "${name}" not found.`));
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
// Confirm unless --yes flag
|
|
102
|
+
if (!options.yes) {
|
|
103
|
+
showWarning(`About to remove "${name}" (${book[name].address.slice(0, 8)}...${book[name].address.slice(-8)})\n\nUse --yes to confirm, or omit to review.`);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
delete book[name];
|
|
107
|
+
saveAddressBook(book);
|
|
108
|
+
showSuccess('✅ Contact Removed', `Removed "${chalk.cyan(name)}" from address book.`);
|
|
109
|
+
flameDivider();
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=addbook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addbook.js","sourceRoot":"","sources":["../../src/commands/addbook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addrpc.d.ts","sourceRoot":"","sources":["../../src/commands/addrpc.ts"],"names":[],"mappings":"AAIA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CzE"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { setConfig, getConfig } from '../lib/config.js';
|
|
3
|
+
import { showSuccess, showInfo, flameDivider } from '../lib/ascii.js';
|
|
4
|
+
export async function addRpcCommand(options) {
|
|
5
|
+
console.log(); // spacer
|
|
6
|
+
// If no URL provided, show current config and help
|
|
7
|
+
if (!options.url) {
|
|
8
|
+
const currentRpc = getConfig('rpcUrl');
|
|
9
|
+
const currentNetwork = getConfig('network');
|
|
10
|
+
showInfo('⚙️ Current RPC Configuration', [
|
|
11
|
+
`RPC URL: ${currentRpc ? chalk.cyan(currentRpc) : chalk.gray('Not set')}`,
|
|
12
|
+
`Network: ${currentNetwork ? chalk.cyan(currentNetwork) : chalk.gray('mainnet')}`,
|
|
13
|
+
'',
|
|
14
|
+
`${chalk.yellow('Usage:')} fuego addrpc --url https://api.mainnet-beta.solana.com`,
|
|
15
|
+
`${chalk.yellow('Or:')} fuego addrpc --url https://helius.xyz/... --network mainnet`
|
|
16
|
+
]);
|
|
17
|
+
flameDivider();
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// Validate URL
|
|
21
|
+
try {
|
|
22
|
+
new URL(options.url);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
console.log(chalk.red('❌ Invalid URL. Please provide a valid RPC endpoint.'));
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
// Set the RPC URL
|
|
29
|
+
setConfig('rpcUrl', options.url);
|
|
30
|
+
// Set network if provided, default to mainnet
|
|
31
|
+
const network = options.network || 'mainnet';
|
|
32
|
+
setConfig('network', network);
|
|
33
|
+
showSuccess('✅ RPC Configuration Updated', `URL: ${chalk.cyan(options.url)}\nNetwork: ${chalk.cyan(network)}`);
|
|
34
|
+
showInfo('💡 Tips', [
|
|
35
|
+
'Premium RPCs (Helius, QuickNode) offer better performance',
|
|
36
|
+
'Free public RPCs may have rate limits',
|
|
37
|
+
'Your wallet address remains the same across networks'
|
|
38
|
+
]);
|
|
39
|
+
flameDivider();
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=addrpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addrpc.js","sourceRoot":"","sources":["../../src/commands/addrpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAc,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAOtE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IAExB,mDAAmD;IACnD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QAE5C,QAAQ,CAAC,+BAA+B,EAAE;YACxC,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACzE,YAAY,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACjF,EAAE;YACF,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,yDAAyD;YAClF,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,kEAAkE;SACzF,CAAC,CAAC;QAEH,YAAY,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,eAAe;IACf,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kBAAkB;IAClB,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAEjC,8CAA8C;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC;IAC7C,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAE9B,WAAW,CACT,6BAA6B,EAC7B,QAAQ,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CACnE,CAAC;IAEF,QAAQ,CAAC,SAAS,EAAE;QAClB,2DAA2D;QAC3D,uCAAuC;QACvC,sDAAsD;KACvD,CAAC,CAAC;IAEH,YAAY,EAAE,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function contactsAddCommand(name: string, address: string, options: {
|
|
2
|
+
label?: string;
|
|
3
|
+
}): Promise<void>;
|
|
4
|
+
export declare function contactsListCommand(): Promise<void>;
|
|
5
|
+
export declare function contactsShowCommand(name: string): Promise<void>;
|
|
6
|
+
export declare function contactsRemoveCommand(name: string, options: {
|
|
7
|
+
yes?: boolean;
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=contacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contacts.d.ts","sourceRoot":"","sources":["../../src/commands/contacts.ts"],"names":[],"mappings":"AAqCA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqClH;AAGD,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqBzD;AAGD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBrE;AAGD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BnG"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import os from 'os';
|
|
5
|
+
import { showSuccess, showInfo, showWarning, flameDivider } from '../lib/ascii.js';
|
|
6
|
+
const CONTACTS_DIR = path.join(os.homedir(), '.fuego', 'contacts');
|
|
7
|
+
const ADDRESS_BOOK_FILE = path.join(CONTACTS_DIR, 'address-book.json');
|
|
8
|
+
function loadAddressBook() {
|
|
9
|
+
if (!fs.existsSync(ADDRESS_BOOK_FILE)) {
|
|
10
|
+
return {};
|
|
11
|
+
}
|
|
12
|
+
return fs.readJsonSync(ADDRESS_BOOK_FILE);
|
|
13
|
+
}
|
|
14
|
+
function saveAddressBook(book) {
|
|
15
|
+
fs.ensureDirSync(CONTACTS_DIR);
|
|
16
|
+
fs.writeJsonSync(ADDRESS_BOOK_FILE, book, { spaces: 2 });
|
|
17
|
+
}
|
|
18
|
+
function isValidSolanaAddress(address) {
|
|
19
|
+
// Basic Solana address validation (32-44 chars, base58)
|
|
20
|
+
return /^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(address);
|
|
21
|
+
}
|
|
22
|
+
// Add a contact
|
|
23
|
+
export async function contactsAddCommand(name, address, options) {
|
|
24
|
+
console.log();
|
|
25
|
+
if (!name || !address) {
|
|
26
|
+
console.log(chalk.red('❌ Usage: fuego contacts add <name> <address> [--label "description"]'));
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
// Validate address
|
|
30
|
+
if (!isValidSolanaAddress(address)) {
|
|
31
|
+
console.log(chalk.red('❌ Invalid Solana address format.'));
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
const book = loadAddressBook();
|
|
35
|
+
// Check if name already exists
|
|
36
|
+
if (book[name]) {
|
|
37
|
+
showWarning(`Contact "${name}" already exists.\n\nUse a different name or remove the existing contact first.`);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// Add contact
|
|
41
|
+
book[name] = {
|
|
42
|
+
address,
|
|
43
|
+
label: options.label,
|
|
44
|
+
addedAt: new Date().toISOString()
|
|
45
|
+
};
|
|
46
|
+
saveAddressBook(book);
|
|
47
|
+
showSuccess('✅ Contact Added', `Name: ${chalk.cyan(name)}\nAddress: ${chalk.cyan(address.slice(0, 8))}...${chalk.cyan(address.slice(-8))}${options.label ? '\nLabel: ' + chalk.cyan(options.label) : ''}`);
|
|
48
|
+
flameDivider();
|
|
49
|
+
}
|
|
50
|
+
// List all contacts
|
|
51
|
+
export async function contactsListCommand() {
|
|
52
|
+
console.log();
|
|
53
|
+
const book = loadAddressBook();
|
|
54
|
+
const contacts = Object.entries(book);
|
|
55
|
+
if (contacts.length === 0) {
|
|
56
|
+
showInfo('📒 Contacts', ['No contacts yet.', '', chalk.yellow('Add one: fuego contacts add <name> <address>')]);
|
|
57
|
+
flameDivider();
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const lines = [`${contacts.length} contact${contacts.length === 1 ? '' : 's'}\n`];
|
|
61
|
+
for (const [name, entry] of contacts) {
|
|
62
|
+
const shortAddr = `${entry.address.slice(0, 6)}...${entry.address.slice(-6)}`;
|
|
63
|
+
lines.push(`${chalk.cyan(name)}: ${chalk.white(shortAddr)}${entry.label ? chalk.gray(` (${entry.label})`) : ''}`);
|
|
64
|
+
}
|
|
65
|
+
showInfo('📒 Contacts', lines);
|
|
66
|
+
flameDivider();
|
|
67
|
+
}
|
|
68
|
+
// Show a specific contact
|
|
69
|
+
export async function contactsShowCommand(name) {
|
|
70
|
+
console.log();
|
|
71
|
+
if (!name) {
|
|
72
|
+
console.log(chalk.red('❌ Usage: fuego contacts show <name>'));
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
const book = loadAddressBook();
|
|
76
|
+
const entry = book[name];
|
|
77
|
+
if (!entry) {
|
|
78
|
+
console.log(chalk.red(`❌ Contact "${name}" not found.`));
|
|
79
|
+
console.log(chalk.gray('\nUse "fuego contacts list" to see all contacts.'));
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
showInfo(`📇 ${name}`, [
|
|
83
|
+
`Address: ${chalk.white(entry.address)}`,
|
|
84
|
+
entry.label ? `Label: ${chalk.cyan(entry.label)}` : '',
|
|
85
|
+
`Added: ${chalk.gray(new Date(entry.addedAt).toLocaleDateString())}`
|
|
86
|
+
].filter(Boolean));
|
|
87
|
+
flameDivider();
|
|
88
|
+
}
|
|
89
|
+
// Remove a contact
|
|
90
|
+
export async function contactsRemoveCommand(name, options) {
|
|
91
|
+
console.log();
|
|
92
|
+
if (!name) {
|
|
93
|
+
console.log(chalk.red('❌ Usage: fuego contacts remove <name> [--yes]'));
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
const book = loadAddressBook();
|
|
97
|
+
if (!book[name]) {
|
|
98
|
+
console.log(chalk.red(`❌ Contact "${name}" not found.`));
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
// Confirm unless --yes flag
|
|
102
|
+
if (!options.yes) {
|
|
103
|
+
showWarning(`About to remove "${name}" (${book[name].address.slice(0, 8)}...${book[name].address.slice(-8)})\n\nUse --yes to confirm, or omit to review.`);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
delete book[name];
|
|
107
|
+
saveAddressBook(book);
|
|
108
|
+
showSuccess('✅ Contact Removed', `Removed "${chalk.cyan(name)}" from contacts.`);
|
|
109
|
+
flameDivider();
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=contacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/commands/contacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAQA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuFzE"}
|
package/dist/commands/create.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import ora from 'ora';
|
|
3
|
+
import path from 'path';
|
|
3
4
|
import { FuegoWallet } from '../lib/wallet.js';
|
|
4
5
|
import { getWalletPath, getConfigPath, getFuegoCliVersion, setFuegoCliVersion } from '../lib/config.js';
|
|
5
6
|
import { showSuccess, showWarning, showInfo, formatPublicKey, flameDivider } from '../lib/ascii.js';
|
|
@@ -38,6 +39,15 @@ export async function createCommand(options) {
|
|
|
38
39
|
network: existingConfig.network || 'mainnet',
|
|
39
40
|
rpcUrl: existingConfig.rpcUrl || 'https://api.mainnet-beta.solana.com'
|
|
40
41
|
}, { spaces: 2 });
|
|
42
|
+
// Create address book directory and empty file
|
|
43
|
+
const contactsDir = options.directory
|
|
44
|
+
? `${options.directory}/contacts`
|
|
45
|
+
: path.join(path.dirname(getConfigPath()), 'contacts');
|
|
46
|
+
const addressBookPath = path.join(contactsDir, 'address-book.json');
|
|
47
|
+
if (!fs.existsSync(addressBookPath)) {
|
|
48
|
+
fs.ensureDirSync(contactsDir);
|
|
49
|
+
fs.writeJsonSync(addressBookPath, {}, { spaces: 2 });
|
|
50
|
+
}
|
|
41
51
|
// Store fuego-cli version
|
|
42
52
|
setFuegoCliVersion(getFuegoCliVersion());
|
|
43
53
|
spinner.stop();
|
|
@@ -51,7 +61,8 @@ export async function createCommand(options) {
|
|
|
51
61
|
// File locations
|
|
52
62
|
showInfo('📁 Wallet Files', [
|
|
53
63
|
'Keypair: ~/.fuego/wallet.json',
|
|
54
|
-
'Config: ~/.fuego/wallet-config.json'
|
|
64
|
+
'Config: ~/.fuego/wallet-config.json',
|
|
65
|
+
'Contacts: ~/.fuego/contacts/address-book.json'
|
|
55
66
|
]);
|
|
56
67
|
flameDivider();
|
|
57
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,MAAM,UAAU,CAAC;AAQ1B,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IAExB,MAAM,OAAO,GAAG,GAAG,CAAC;QAClB,IAAI,EAAE,iCAAiC;QACvC,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS;YAClC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,cAAc;YACpC,CAAC,CAAC,aAAa,EAAE,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;QAE3C,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,WAAW,CAAC,iHAAiH,CAAC,CAAC;YAC/H,OAAO;QACT,CAAC;QAED,OAAO,CAAC,IAAI,GAAG,kCAAkC,CAAC;QAClD,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QAEtB,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAElE,+BAA+B;QAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS;YAClC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,cAAc;YACpC,CAAC,CAAC,aAAa,EAAE,CAAC;QAEpB,2DAA2D;QAC3D,IAAI,cAAc,GAAQ,EAAE,CAAC;QAC7B,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC;QAED,qDAAqD;QACrD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE;YAC3B,GAAG,cAAc;YACjB,OAAO,EAAE,cAAc,CAAC,OAAO,IAAI,SAAS;YAC5C,MAAM,EAAE,cAAc,CAAC,MAAM,IAAI,qCAAqC;SACvE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAElB,0BAA0B;QAC1B,kBAAkB,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAEzC,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,kBAAkB;QAClB,WAAW,CACT,iCAAiC,EACjC,SAAS,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,iBAAiB,eAAe,CAAC,SAAS,CAAC,EAAE,CAC5F,CAAC;QAEF,IAAI,QAAQ,EAAE,CAAC;YACb,WAAW,CACT,yCAAyC;gBACzC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACrB,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAC3D,CAAC;QACJ,CAAC;QAED,iBAAiB;QACjB,QAAQ,CAAC,iBAAiB,EAAE;YAC1B,+BAA+B;YAC/B,qCAAqC;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/commands/rpc.ts"],"names":[],"mappings":"AAIA,UAAU,UAAU;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CnE"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { setConfig, getConfig } from '../lib/config.js';
|
|
3
|
+
import { showSuccess, showInfo, flameDivider } from '../lib/ascii.js';
|
|
4
|
+
export async function rpcCommand(options) {
|
|
5
|
+
console.log(); // spacer
|
|
6
|
+
// If no URL provided, show current config and help
|
|
7
|
+
if (!options.url) {
|
|
8
|
+
const currentRpc = getConfig('rpcUrl');
|
|
9
|
+
const currentNetwork = getConfig('network');
|
|
10
|
+
showInfo('⚙️ Current RPC Configuration', [
|
|
11
|
+
`RPC URL: ${currentRpc ? chalk.cyan(currentRpc) : chalk.gray('Not set')}`,
|
|
12
|
+
`Network: ${currentNetwork ? chalk.cyan(currentNetwork) : chalk.gray('mainnet')}`,
|
|
13
|
+
'',
|
|
14
|
+
`${chalk.yellow('Usage:')} fuego rpc --url https://api.mainnet-beta.solana.com`,
|
|
15
|
+
`${chalk.yellow('Or:')} fuego rpc --url https://helius.xyz/... --network mainnet`
|
|
16
|
+
]);
|
|
17
|
+
flameDivider();
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// Validate URL
|
|
21
|
+
try {
|
|
22
|
+
new URL(options.url);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
console.log(chalk.red('❌ Invalid URL. Please provide a valid RPC endpoint.'));
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
// Set the RPC URL
|
|
29
|
+
setConfig('rpcUrl', options.url);
|
|
30
|
+
// Set network if provided, default to mainnet
|
|
31
|
+
const network = options.network || 'mainnet';
|
|
32
|
+
setConfig('network', network);
|
|
33
|
+
showSuccess('✅ RPC Configuration Updated', `URL: ${chalk.cyan(options.url)}\nNetwork: ${chalk.cyan(network)}`);
|
|
34
|
+
showInfo('💡 Tips', [
|
|
35
|
+
'Premium RPCs (Helius, QuickNode) offer better performance',
|
|
36
|
+
'Free public RPCs may have rate limits',
|
|
37
|
+
'Your wallet address remains the same across networks'
|
|
38
|
+
]);
|
|
39
|
+
flameDivider();
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=rpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../src/commands/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAc,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAOtE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAmB;IAClD,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IAExB,mDAAmD;IACnD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QAE5C,QAAQ,CAAC,+BAA+B,EAAE;YACxC,YAAY,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACzE,YAAY,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACjF,EAAE;YACF,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,sDAAsD;YAC/E,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,+DAA+D;SACtF,CAAC,CAAC;QAEH,YAAY,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,eAAe;IACf,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kBAAkB;IAClB,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAEjC,8CAA8C;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC;IAC7C,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAE9B,WAAW,CACT,6BAA6B,EAC7B,QAAQ,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CACnE,CAAC;IAEF,QAAQ,CAAC,SAAS,EAAE;QAClB,2DAA2D;QAC3D,uCAAuC;QACvC,sDAAsD;KACvD,CAAC,CAAC;IAEH,YAAY,EAAE,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAUA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAiCD,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmHxG"}
|