fuego-cli 1.1.1 → 1.3.0

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 CHANGED
@@ -72,7 +72,9 @@ fuego dashboard
72
72
  | `fuego balance` | Check SOL, USDC, USDT balances |
73
73
  | `fuego rpc` | Show or configure your Solana RPC endpoint |
74
74
  | `fuego contacts` | Manage your contacts |
75
+ | `fuego fund` | Show funding options: MoonPay link + QR code |
75
76
  | `fuego send` | Send SOL, USDC, or USDT to an address or contact |
77
+ | `fuego purch` | Purchase products via x402 (Amazon, Shopify, etc.) |
76
78
 
77
79
  ### Project Management
78
80
 
@@ -240,6 +242,43 @@ fuego contacts remove melanie --yes
240
242
 
241
243
  ---
242
244
 
245
+ ### `fuego fund`
246
+
247
+ Show funding options for your wallet: MoonPay onramp link + QR codes for easy scanning.
248
+
249
+ ```bash
250
+ fuego fund
251
+ ```
252
+
253
+ **Output:**
254
+ - Your wallet address (plain text for copying)
255
+ - QR code of your address (scan to receive SOL from another wallet)
256
+ - MoonPay onramp URL (buy SOL with card/bank, pre-filled with your address)
257
+ - QR code for MoonPay link (scan to open on mobile)
258
+
259
+ **Example:**
260
+ ```
261
+ 💰 Fund Your Wallet
262
+ Address: DmFyLRiJtc4Bz75hjAqPaEJpDfRe4GEnRLPwc3EgeUZF
263
+
264
+ 📱 Scan to receive SOL:
265
+
266
+ [QR CODE]
267
+
268
+ 🔗 MoonPay Onramp
269
+ Buy SOL with card/bank and send directly to your wallet:
270
+
271
+ https://buy.moonpay.com/?currencyCode=SOL&walletAddress=DmFyLRiJtc4Bz75hjAqPaEJpDfRe4GEnRLPwc3EgeUZF
272
+
273
+ Or scan this QR code to fund:
274
+
275
+ [QR CODE]
276
+ ```
277
+
278
+ **Note:** MoonPay requires KYC and is available in supported regions. The QR code for your address works with any Solana wallet (Phantom, Solflare, etc.).
279
+
280
+ ---
281
+
243
282
  ### `fuego send <recipient> <amount>`
244
283
 
245
284
  Send SOL, USDC, or USDT to a Solana address or address book contact.
@@ -267,9 +306,49 @@ fuego send melanie 5 --token USDT --yes
267
306
 
268
307
  ---
269
308
 
309
+ ### `fuego purch <product-url>`
310
+
311
+ Purchase products via x402/Purch.xyz (Amazon, Shopify, etc.) using USDC on Solana.
312
+
313
+ ```bash
314
+ # Purchase from Amazon
315
+ fuego purch https://amazon.com/dp/B071G6PFDR \
316
+ --email user@example.com \
317
+ --name "John Doe" \
318
+ --address-line1 "123 Main St" \
319
+ --address-line2 "Apt 4B" \
320
+ --city "Austin" \
321
+ --state TX \
322
+ --postal-code 78701 \
323
+ --country US
324
+ ```
325
+
326
+ **Required Options:**
327
+ - `--email <email>` — Email for order notifications
328
+ - `--name <name>` — Full name for shipping
329
+ - `--address-line1 <address>` — Street address line 1
330
+ - `--city <city>` — City
331
+ - `--state <state>` — State/Province code (e.g., TX)
332
+ - `--postal-code <code>` — Postal/ZIP code
333
+
334
+ **Optional:**
335
+ - `--address-line2 <address>` — Apartment, suite, etc.
336
+ - `--country <code>` — Country code (default: US)
337
+
338
+ **How it works:**
339
+ 1. Sends product URL and shipping info to Purch.xyz
340
+ 2. Receives x402 payment challenge ($0.01 USDC fee)
341
+ 3. Builds and signs x402 payment transaction
342
+ 4. Submits payment to Purch.xyz
343
+ 5. Receives order transaction (ready for final submission)
344
+
345
+ **Note:** The final order transaction is displayed but not automatically submitted. Review the output to complete the purchase.
346
+
347
+ ---
348
+
270
349
  ### `fuego install [options]`
271
350
 
272
- Install the [Fuego project](https://github.com/willmcdeezy/fuego) — Rust server, Python scripts, and dashboard.
351
+ Install the [Fuego project](https://github.com/willmcdeezy/fuego) — Rust server, scripts, and dashboard. Automatically runs `npm install` after cloning.
273
352
 
274
353
  **Auto-detection:**
275
354
  1. Checks for `~/.openclaw/workspace` first (OpenClaw agent machines)
@@ -0,0 +1,2 @@
1
+ export declare function fundCommand(): Promise<void>;
2
+ //# sourceMappingURL=fund.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fund.d.ts","sourceRoot":"","sources":["../../src/commands/fund.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAmDjD"}
@@ -0,0 +1,47 @@
1
+ import chalk from 'chalk';
2
+ import qrcode from 'qrcode-terminal';
3
+ import boxen from 'boxen';
4
+ import { loadWalletConfig } from '../lib/config.js';
5
+ import { showInfo, flameDivider } from '../lib/ascii.js';
6
+ export async function fundCommand() {
7
+ console.log(); // spacer
8
+ const config = loadWalletConfig();
9
+ if (!config) {
10
+ console.log(chalk.red('❌ No wallet found. Run "fuego create" first.'));
11
+ process.exit(1);
12
+ }
13
+ const address = config.publicKey;
14
+ // MoonPay URL for funding SOL to this wallet
15
+ const moonpayUrl = `https://buy.moonpay.com/?currencyCode=SOL&walletAddress=${address}`;
16
+ // Generate QR code first, then display everything in a box
17
+ qrcode.generate(address, { small: true }, (qrcodeOutput) => {
18
+ // Indent the QR code
19
+ const indentedQr = qrcodeOutput.split('\n').map(line => ' ' + line).join('\n');
20
+ // Build the fund box content
21
+ const fundContent = [
22
+ chalk.bold.cyan('💰 Fund Your Wallet'),
23
+ '',
24
+ chalk.white('Address:'),
25
+ chalk.cyan(address),
26
+ '',
27
+ chalk.yellow('📱 Scan to send funds to your address:'),
28
+ '',
29
+ indentedQr
30
+ ].join('\n');
31
+ // Display the fund box
32
+ console.log(boxen(fundContent, {
33
+ padding: 1,
34
+ margin: { top: 0, bottom: 1 },
35
+ borderStyle: 'round',
36
+ borderColor: 'green'
37
+ }));
38
+ // Show MoonPay box
39
+ showInfo('🔗 MoonPay Onramp', [
40
+ 'Buy SOL with card/bank and send directly to your wallet:',
41
+ '',
42
+ chalk.cyan(moonpayUrl)
43
+ ]);
44
+ flameDivider();
45
+ });
46
+ }
47
+ //# sourceMappingURL=fund.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fund.js","sourceRoot":"","sources":["../../src/commands/fund.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IAExB,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAElC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;IAEjC,6CAA6C;IAC7C,MAAM,UAAU,GAAG,2DAA2D,OAAO,EAAE,CAAC;IAExF,2DAA2D;IAC3D,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,YAAoB,EAAE,EAAE;QACjE,qBAAqB;QACrB,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhF,6BAA6B;QAC7B,MAAM,WAAW,GAAG;YAClB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC;YACtC,EAAE;YACF,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YACnB,EAAE;YACF,KAAK,CAAC,MAAM,CAAC,wCAAwC,CAAC;YACtD,EAAE;YACF,UAAU;SACX,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,uBAAuB;QACvB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,WAAW,EAAE;YACjB,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;YAC7B,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,OAAO;SACrB,CAAC,CACH,CAAC;QAEF,mBAAmB;QACnB,QAAQ,CAAC,mBAAmB,EAAE;YAC5B,0DAA0D;YAC1D,EAAE;YACF,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;SACvB,CAAC,CAAC;QAEH,YAAY,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AASA,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiF3E"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AASA,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA2F3E"}
@@ -37,6 +37,10 @@ export async function installCommand(options) {
37
37
  // Clone the main Fuego repo
38
38
  const repoUrl = 'https://github.com/willmcdeezy/fuego.git';
39
39
  execSync(`git clone ${repoUrl} "${installPath}"`, { stdio: 'pipe' });
40
+ spinner.text = 'Installing dependencies...';
41
+ spinner.color = 'green';
42
+ // Run npm install in the installed directory
43
+ execSync('npm install', { cwd: installPath, stdio: 'pipe' });
40
44
  spinner.stop();
41
45
  // Get the commit hash as version
42
46
  const commitHash = execSync('git rev-parse --short HEAD', {
@@ -49,10 +53,14 @@ export async function installCommand(options) {
49
53
  const cdPath = relativePath.startsWith('..') ? installPath : relativePath;
50
54
  const safeCdPath = cdPath.includes(' ') ? `"${cdPath}"` : cdPath;
51
55
  showSuccess('🔥 Fuego Installed Successfully!', `Location: ${chalk.cyan(installPath)}\nVersion: ${chalk.cyan(commitHash)}`);
52
- showInfo('🚀 Next Steps', [
56
+ showInfo('🚀 You are all set!', [
53
57
  `cd ${safeCdPath}`,
54
- 'npm install',
55
- 'npm run start'
58
+ '',
59
+ 'Next steps:',
60
+ ' • Start the server: fuego serve',
61
+ ' • Fund your wallet: fuego fund',
62
+ ' • Open dashboard: fuego dashboard',
63
+ ' • Check balance: fuego balance'
56
64
  ]);
57
65
  flameDivider();
58
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ interface PurchOptions {
2
+ email: string;
3
+ name: string;
4
+ addressLine1: string;
5
+ addressLine2?: string;
6
+ city: string;
7
+ state: string;
8
+ postalCode: string;
9
+ country?: string;
10
+ }
11
+ export declare function purchCommand(productUrl: string, options: PurchOptions): Promise<void>;
12
+ export {};
13
+ //# sourceMappingURL=purch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"purch.d.ts","sourceRoot":"","sources":["../../src/commands/purch.ts"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2G3F"}
@@ -0,0 +1,104 @@
1
+ import chalk from 'chalk';
2
+ import { spawn } from 'child_process';
3
+ import path from 'path';
4
+ import { loadWalletConfig, findFuegoPath } from '../lib/config.js';
5
+ import { showSuccess, showInfo, showError, flameDivider } from '../lib/ascii.js';
6
+ export async function purchCommand(productUrl, options) {
7
+ console.log();
8
+ // Validate required options
9
+ if (!options.email || !options.name || !options.addressLine1 || !options.city || !options.state || !options.postalCode) {
10
+ console.log(chalk.red('❌ Missing required options.'));
11
+ console.log(chalk.gray('\nUsage:'));
12
+ console.log(chalk.gray(' fuego purch <product-url>'));
13
+ console.log(chalk.gray(' --email <email>'));
14
+ console.log(chalk.gray(' --name <full-name>'));
15
+ console.log(chalk.gray(' --address-line1 <street-address>'));
16
+ console.log(chalk.gray(' --address-line2 <apartment/suite>'));
17
+ console.log(chalk.gray(' --city <city>'));
18
+ console.log(chalk.gray(' --state <state-code>'));
19
+ console.log(chalk.gray(' --postal-code <zip>'));
20
+ console.log(chalk.gray(' --country <country-code>'));
21
+ console.log(chalk.gray('\nExample:'));
22
+ console.log(chalk.gray(' fuego purch https://amazon.com/dp/B071G6PFDR \\'));
23
+ console.log(chalk.gray(' --email <your-email@example.com> \\'));
24
+ console.log(chalk.gray(' --name "<your-full-name>" \\'));
25
+ console.log(chalk.gray(' --address-line1 "<your-street-address>" \\'));
26
+ console.log(chalk.gray(' --address-line2 "<apartment-or-suite>" \\'));
27
+ console.log(chalk.gray(' --city "<your-city>" \\'));
28
+ console.log(chalk.gray(' --state <ST> \\'));
29
+ console.log(chalk.gray(' --postal-code <ZIP> \\'));
30
+ console.log(chalk.gray(' --country <CC>'));
31
+ process.exit(1);
32
+ }
33
+ // Load wallet
34
+ const walletConfig = loadWalletConfig();
35
+ if (!walletConfig) {
36
+ console.log(chalk.red('❌ No wallet found. Run "fuego create" first.'));
37
+ process.exit(1);
38
+ }
39
+ // Show order preview
40
+ showInfo('🛒 x402 Purchase Preview', [
41
+ `Product: ${chalk.cyan(productUrl)}`,
42
+ `Email: ${chalk.cyan(options.email)}`,
43
+ `Name: ${chalk.cyan(options.name)}`,
44
+ `Address: ${chalk.cyan(options.addressLine1)}${options.addressLine2 ? ', ' + options.addressLine2 : ''}`,
45
+ `City: ${chalk.cyan(options.city)}, ${chalk.cyan(options.state)} ${chalk.cyan(options.postalCode)}`,
46
+ `Country: ${chalk.cyan(options.country || 'US')}`,
47
+ `Wallet: ${chalk.gray(walletConfig.publicKey)}`,
48
+ `Network: ${chalk.gray('mainnet-beta')}`
49
+ ]);
50
+ console.log();
51
+ console.log(chalk.blue('⏳ Processing x402 payment via Purch.xyz...'));
52
+ // Find fuego installation path and call Node.js script
53
+ const fuegoPath = findFuegoPath();
54
+ if (!fuegoPath) {
55
+ showError('Fuego installation not found. Run "fuego install" first.');
56
+ process.exit(1);
57
+ }
58
+ const scriptPath = path.join(fuegoPath, 'scripts', 'x402_purch.mjs');
59
+ const args = [
60
+ scriptPath,
61
+ '--product-url', productUrl,
62
+ '--email', options.email,
63
+ '--name', options.name,
64
+ '--address-line1', options.addressLine1,
65
+ '--city', options.city,
66
+ '--state', options.state,
67
+ '--postal-code', options.postalCode,
68
+ '--country', options.country || 'US'
69
+ ];
70
+ if (options.addressLine2) {
71
+ args.push('--address-line2', options.addressLine2);
72
+ }
73
+ const nodeProcess = spawn('node', args);
74
+ let output = '';
75
+ let errorOutput = '';
76
+ nodeProcess.stdout.on('data', (data) => {
77
+ output += data.toString();
78
+ process.stdout.write(data);
79
+ });
80
+ nodeProcess.stderr.on('data', (data) => {
81
+ errorOutput += data.toString();
82
+ });
83
+ nodeProcess.on('close', (code) => {
84
+ if (code === 0) {
85
+ // Check if payment was successful
86
+ if (output.includes('PAYMENT ACCEPTED') || output.includes('SUCCESS')) {
87
+ showSuccess('✅ x402 Payment Complete!', 'Order transaction received from Purch.xyz');
88
+ }
89
+ else if (output.includes('failed') || output.includes('❌')) {
90
+ showError('Payment was not accepted. Check output above for details.');
91
+ process.exit(1);
92
+ }
93
+ else {
94
+ showSuccess('✅ x402 Purchase Flow Complete', '');
95
+ }
96
+ flameDivider();
97
+ }
98
+ else {
99
+ showError(`x402 purchase failed: ${errorOutput || 'Unknown error'}`);
100
+ process.exit(1);
101
+ }
102
+ });
103
+ }
104
+ //# sourceMappingURL=purch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"purch.js","sourceRoot":"","sources":["../../src/commands/purch.ts"],"names":[],"mappings":"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"}
@@ -1 +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"}
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,CAkHxG"}
@@ -84,30 +84,29 @@ export async function sendCommand(recipient, amount, options) {
84
84
  }
85
85
  console.log();
86
86
  console.log(chalk.blue('⏳ Executing transaction via Fuego...'));
87
- // Find fuego installation path and call Python script
87
+ // Find fuego installation path and call Node.js script
88
88
  const fuegoPath = findFuegoPath();
89
89
  if (!fuegoPath) {
90
90
  showError('Fuego installation not found. Run "fuego install" first.');
91
91
  process.exit(1);
92
92
  }
93
- const scriptPath = path.join(fuegoPath, 'scripts', 'fuego_transfer.py');
94
- const pythonProcess = spawn('python3', [
93
+ const scriptPath = path.join(fuegoPath, 'scripts', 'fuego_transfer.mjs');
94
+ const nodeProcess = spawn('node', [
95
95
  scriptPath,
96
- '--from', walletConfig.publicKey,
97
96
  '--to', resolvedAddress,
98
97
  '--amount', amount,
99
98
  '--token', token
100
99
  ]);
101
100
  let output = '';
102
101
  let errorOutput = '';
103
- pythonProcess.stdout.on('data', (data) => {
102
+ nodeProcess.stdout.on('data', (data) => {
104
103
  output += data.toString();
105
104
  process.stdout.write(data);
106
105
  });
107
- pythonProcess.stderr.on('data', (data) => {
106
+ nodeProcess.stderr.on('data', (data) => {
108
107
  errorOutput += data.toString();
109
108
  });
110
- pythonProcess.on('close', (code) => {
109
+ nodeProcess.on('close', (code) => {
111
110
  if (code === 0) {
112
111
  // Extract signature from output if present
113
112
  const sigMatch = output.match(/Signature: ([A-Za-z0-9]+)/);
@@ -1 +1 @@
1
- {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClG,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;AAe7F,SAAS,eAAe;IACtB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAiB;IACzC,uDAAuD;IACvD,IAAI,+BAA+B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACpD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,qBAAqB;IACrB,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,YAAY;IACZ,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAiB,EAAE,MAAc,EAAE,OAAoB;IACvF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,kBAAkB;IAClB,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,cAAc;IACd,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAC;IACxC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,oBAAoB;IACpB,MAAM,eAAe,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,SAAS,cAAc,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kBAAkB;IAClB,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACvC,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,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAClD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC,CAAC;QAC/F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,2BAA2B;IAC3B,MAAM,SAAS,GAAG,SAAS,KAAK,eAAe,CAAC;IAChD,QAAQ,CAAC,wBAAwB,EAAE;QACjC,SAAS,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE;QAC9D,OAAO,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;QACtG,WAAW,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QACtD,YAAY,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;KACzC,CAAC,CAAC;IAEH,uBAAuB;IACvB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC/D,YAAY,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;IAEhE,sDAAsD;IACtD,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,CAAC,0DAA0D,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAExE,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,EAAE;QACrC,UAAU;QACV,QAAQ,EAAE,YAAY,CAAC,SAAS;QAChC,MAAM,EAAE,eAAe;QACvB,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,KAAK;KACjB,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,WAAW,GAAG,EAAE,CAAC;IAErB,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACvC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACvC,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QACjC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,2CAA2C;YAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3D,IAAI,QAAQ,EAAE,CAAC;gBACb,WAAW,CACT,qBAAqB,EACrB,WAAW,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,EAAE,CACpI,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,YAAY,EAAE,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,uBAAuB,WAAW,IAAI,eAAe,EAAE,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/commands/send.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -11,6 +11,8 @@ import { updateCommand } from './commands/update.js';
11
11
  import { rpcCommand } from './commands/rpc.js';
12
12
  import { contactsAddCommand, contactsListCommand, contactsShowCommand, contactsRemoveCommand } from './commands/contacts.js';
13
13
  import { sendCommand } from './commands/send.js';
14
+ import { fundCommand } from './commands/fund.js';
15
+ import { purchCommand } from './commands/purch.js';
14
16
  import { showBanner } from './lib/ascii.js';
15
17
  import { getFuegoCliVersion } from './lib/config.js';
16
18
  async function main() {
@@ -91,12 +93,28 @@ async function main() {
91
93
  .description('Remove a contact')
92
94
  .option('-y, --yes', 'Skip confirmation prompt')
93
95
  .action(contactsRemoveCommand);
96
+ program
97
+ .command('fund')
98
+ .description('Show funding options: MoonPay link + QR code for your wallet')
99
+ .action(fundCommand);
94
100
  program
95
101
  .command('send <recipient> <amount>')
96
102
  .description('Send SOL, USDC, or USDT to an address or contact')
97
103
  .requiredOption('-t, --token <token>', 'Token to send (SOL, USDC, USDT)')
98
104
  .option('-y, --yes', 'Skip confirmation and send immediately')
99
105
  .action(sendCommand);
106
+ program
107
+ .command('purch <product-url>')
108
+ .description('Purchase products via x402/Purch.xyz (Amazon, Shopify, etc.)')
109
+ .requiredOption('--email <email>', 'Email for order notifications')
110
+ .requiredOption('--name <name>', 'Full name for shipping')
111
+ .requiredOption('--address-line1 <address>', 'Street address line 1')
112
+ .option('--address-line2 <address>', 'Apartment, suite, etc. (optional)')
113
+ .requiredOption('--city <city>', 'City')
114
+ .requiredOption('--state <state>', 'State/Province code (e.g., TX)')
115
+ .requiredOption('--postal-code <code>', 'Postal/ZIP code')
116
+ .option('--country <code>', 'Country code (default: US)', 'US')
117
+ .action(purchCommand);
100
118
  await program.parseAsync(process.argv);
101
119
  }
102
120
  main().catch((error) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC7H,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,KAAK,UAAU,IAAI;IACjB,iDAAiD;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,UAAU,EAAE,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,OAAO,CAAC;SACb,WAAW,CAAC,sDAAsD,CAAC;SACnE,OAAO,CAAC,kBAAkB,EAAE,CAAC;SAC7B,eAAe,CAAC;QACf,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACnD,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,aAAa,EAAE,2BAA2B,CAAC;SAClD,MAAM,CAAC,wBAAwB,EAAE,yBAAyB,CAAC;SAC3D,MAAM,CAAC,mBAAmB,EAAE,aAAa,EAAE,SAAS,CAAC;SACrD,MAAM,CAAC,aAAa,CAAC,CAAC;IAEzB,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,mBAAmB,EAAE,kFAAkF,CAAC;SAC/G,MAAM,CAAC,cAAc,CAAC,CAAC;IAE1B,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,KAAK,CAAC,MAAM,CAAC;SACb,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,cAAc,CAAC,CAAC;IAE1B,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,KAAK,CAAC,KAAK,CAAC;SACZ,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,cAAc,CAAC,CAAC;IAE1B,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,kEAAkE,CAAC;SAC/E,MAAM,CAAC,YAAY,CAAC,CAAC;IAExB,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,KAAK,CAAC,MAAM,CAAC;SACb,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE5B,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,OAAO,EAAE,uBAAuB,CAAC;SACxC,MAAM,CAAC,SAAS,EAAE,+BAA+B,CAAC;SAClD,MAAM,CAAC,aAAa,CAAC,CAAC;IAEzB,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,iBAAiB,EAAE,8DAA8D,CAAC;SACzF,MAAM,CAAC,yBAAyB,EAAE,yCAAyC,EAAE,SAAS,CAAC;SACvF,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtB,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,sEAAsE,CAAC,CAAC;IAEvF,QAAQ;SACL,OAAO,CAAC,sBAAsB,CAAC;SAC/B,WAAW,CAAC,eAAe,CAAC;SAC5B,MAAM,CAAC,qBAAqB,EAAE,6CAA6C,CAAC;SAC5E,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAE9B,QAAQ;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,mBAAmB,CAAC;SAChC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAE/B,QAAQ;SACL,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAE/B,QAAQ;SACL,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,kBAAkB,CAAC;SAC/B,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAEjC,OAAO;SACJ,OAAO,CAAC,2BAA2B,CAAC;SACpC,WAAW,CAAC,kDAAkD,CAAC;SAC/D,cAAc,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;SACxE,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;SAC7D,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvB,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fuego-cli",
3
- "version": "1.1.1",
3
+ "version": "1.3.0",
4
4
  "description": "Command-line interface for Fuego - the sovereign Solana wallet for AI agents",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -43,11 +43,13 @@
43
43
  "fs-extra": "^11.3.0",
44
44
  "gradient-string": "^3.0.0",
45
45
  "inquirer": "^12.4.2",
46
- "ora": "^8.2.0"
46
+ "ora": "^8.2.0",
47
+ "qrcode-terminal": "^0.12.0"
47
48
  },
48
49
  "devDependencies": {
49
50
  "@types/fs-extra": "^11.0.4",
50
51
  "@types/node": "^22.13.5",
52
+ "@types/qrcode-terminal": "^0.12.2",
51
53
  "@typescript-eslint/eslint-plugin": "^8.25.0",
52
54
  "@typescript-eslint/parser": "^8.25.0",
53
55
  "eslint": "^10.0.1",
@@ -0,0 +1,58 @@
1
+ import chalk from 'chalk';
2
+ import qrcode from 'qrcode-terminal';
3
+ import boxen from 'boxen';
4
+ import { loadWalletConfig } from '../lib/config.js';
5
+ import { showInfo, flameDivider } from '../lib/ascii.js';
6
+
7
+ export async function fundCommand(): Promise<void> {
8
+ console.log(); // spacer
9
+
10
+ const config = loadWalletConfig();
11
+
12
+ if (!config) {
13
+ console.log(chalk.red('❌ No wallet found. Run "fuego create" first.'));
14
+ process.exit(1);
15
+ }
16
+
17
+ const address = config.publicKey;
18
+
19
+ // MoonPay URL for funding SOL to this wallet
20
+ const moonpayUrl = `https://buy.moonpay.com/?currencyCode=SOL&walletAddress=${address}`;
21
+
22
+ // Generate QR code first, then display everything in a box
23
+ qrcode.generate(address, { small: true }, (qrcodeOutput: string) => {
24
+ // Indent the QR code
25
+ const indentedQr = qrcodeOutput.split('\n').map(line => ' ' + line).join('\n');
26
+
27
+ // Build the fund box content
28
+ const fundContent = [
29
+ chalk.bold.cyan('💰 Fund Your Wallet'),
30
+ '',
31
+ chalk.white('Address:'),
32
+ chalk.cyan(address),
33
+ '',
34
+ chalk.yellow('📱 Scan to send funds to your address:'),
35
+ '',
36
+ indentedQr
37
+ ].join('\n');
38
+
39
+ // Display the fund box
40
+ console.log(
41
+ boxen(fundContent, {
42
+ padding: 1,
43
+ margin: { top: 0, bottom: 1 },
44
+ borderStyle: 'round',
45
+ borderColor: 'green'
46
+ })
47
+ );
48
+
49
+ // Show MoonPay box
50
+ showInfo('🔗 MoonPay Onramp', [
51
+ 'Buy SOL with card/bank and send directly to your wallet:',
52
+ '',
53
+ chalk.cyan(moonpayUrl)
54
+ ]);
55
+
56
+ flameDivider();
57
+ });
58
+ }
@@ -54,6 +54,12 @@ export async function installCommand(options: InstallOptions): Promise<void> {
54
54
  const repoUrl = 'https://github.com/willmcdeezy/fuego.git';
55
55
  execSync(`git clone ${repoUrl} "${installPath}"`, { stdio: 'pipe' });
56
56
 
57
+ spinner.text = 'Installing dependencies...';
58
+ spinner.color = 'green';
59
+
60
+ // Run npm install in the installed directory
61
+ execSync('npm install', { cwd: installPath, stdio: 'pipe' });
62
+
57
63
  spinner.stop();
58
64
 
59
65
  // Get the commit hash as version
@@ -74,10 +80,14 @@ export async function installCommand(options: InstallOptions): Promise<void> {
74
80
  `Location: ${chalk.cyan(installPath)}\nVersion: ${chalk.cyan(commitHash)}`
75
81
  );
76
82
 
77
- showInfo('🚀 Next Steps', [
83
+ showInfo('🚀 You are all set!', [
78
84
  `cd ${safeCdPath}`,
79
- 'npm install',
80
- 'npm run start'
85
+ '',
86
+ 'Next steps:',
87
+ ' • Start the server: fuego serve',
88
+ ' • Fund your wallet: fuego fund',
89
+ ' • Open dashboard: fuego dashboard',
90
+ ' • Check balance: fuego balance'
81
91
  ]);
82
92
 
83
93
  flameDivider();
@@ -0,0 +1,125 @@
1
+ import chalk from 'chalk';
2
+ import { spawn } from 'child_process';
3
+ import path from 'path';
4
+ import { loadWalletConfig, findFuegoPath } from '../lib/config.js';
5
+ import { showSuccess, showInfo, showError, flameDivider } from '../lib/ascii.js';
6
+
7
+ interface PurchOptions {
8
+ email: string;
9
+ name: string;
10
+ addressLine1: string;
11
+ addressLine2?: string;
12
+ city: string;
13
+ state: string;
14
+ postalCode: string;
15
+ country?: string;
16
+ }
17
+
18
+ export async function purchCommand(productUrl: string, options: PurchOptions): Promise<void> {
19
+ console.log();
20
+
21
+ // Validate required options
22
+ if (!options.email || !options.name || !options.addressLine1 || !options.city || !options.state || !options.postalCode) {
23
+ console.log(chalk.red('❌ Missing required options.'));
24
+ console.log(chalk.gray('\nUsage:'));
25
+ console.log(chalk.gray(' fuego purch <product-url>'));
26
+ console.log(chalk.gray(' --email <email>'));
27
+ console.log(chalk.gray(' --name <full-name>'));
28
+ console.log(chalk.gray(' --address-line1 <street-address>'));
29
+ console.log(chalk.gray(' --address-line2 <apartment/suite>'));
30
+ console.log(chalk.gray(' --city <city>'));
31
+ console.log(chalk.gray(' --state <state-code>'));
32
+ console.log(chalk.gray(' --postal-code <zip>'));
33
+ console.log(chalk.gray(' --country <country-code>'));
34
+ console.log(chalk.gray('\nExample:'));
35
+ console.log(chalk.gray(' fuego purch https://amazon.com/dp/B071G6PFDR \\'));
36
+ console.log(chalk.gray(' --email <your-email@example.com> \\'));
37
+ console.log(chalk.gray(' --name "<your-full-name>" \\'));
38
+ console.log(chalk.gray(' --address-line1 "<your-street-address>" \\'));
39
+ console.log(chalk.gray(' --address-line2 "<apartment-or-suite>" \\'));
40
+ console.log(chalk.gray(' --city "<your-city>" \\'));
41
+ console.log(chalk.gray(' --state <ST> \\'));
42
+ console.log(chalk.gray(' --postal-code <ZIP> \\'));
43
+ console.log(chalk.gray(' --country <CC>'));
44
+ process.exit(1);
45
+ }
46
+
47
+ // Load wallet
48
+ const walletConfig = loadWalletConfig();
49
+ if (!walletConfig) {
50
+ console.log(chalk.red('❌ No wallet found. Run "fuego create" first.'));
51
+ process.exit(1);
52
+ }
53
+
54
+ // Show order preview
55
+ showInfo('🛒 x402 Purchase Preview', [
56
+ `Product: ${chalk.cyan(productUrl)}`,
57
+ `Email: ${chalk.cyan(options.email)}`,
58
+ `Name: ${chalk.cyan(options.name)}`,
59
+ `Address: ${chalk.cyan(options.addressLine1)}${options.addressLine2 ? ', ' + options.addressLine2 : ''}`,
60
+ `City: ${chalk.cyan(options.city)}, ${chalk.cyan(options.state)} ${chalk.cyan(options.postalCode)}`,
61
+ `Country: ${chalk.cyan(options.country || 'US')}`,
62
+ `Wallet: ${chalk.gray(walletConfig.publicKey)}`,
63
+ `Network: ${chalk.gray('mainnet-beta')}`
64
+ ]);
65
+
66
+ console.log();
67
+ console.log(chalk.blue('⏳ Processing x402 payment via Purch.xyz...'));
68
+
69
+ // Find fuego installation path and call Node.js script
70
+ const fuegoPath = findFuegoPath();
71
+ if (!fuegoPath) {
72
+ showError('Fuego installation not found. Run "fuego install" first.');
73
+ process.exit(1);
74
+ }
75
+
76
+ const scriptPath = path.join(fuegoPath, 'scripts', 'x402_purch.mjs');
77
+
78
+ const args = [
79
+ scriptPath,
80
+ '--product-url', productUrl,
81
+ '--email', options.email,
82
+ '--name', options.name,
83
+ '--address-line1', options.addressLine1,
84
+ '--city', options.city,
85
+ '--state', options.state,
86
+ '--postal-code', options.postalCode,
87
+ '--country', options.country || 'US'
88
+ ];
89
+
90
+ if (options.addressLine2) {
91
+ args.push('--address-line2', options.addressLine2);
92
+ }
93
+
94
+ const nodeProcess = spawn('node', args);
95
+
96
+ let output = '';
97
+ let errorOutput = '';
98
+
99
+ nodeProcess.stdout.on('data', (data) => {
100
+ output += data.toString();
101
+ process.stdout.write(data);
102
+ });
103
+
104
+ nodeProcess.stderr.on('data', (data) => {
105
+ errorOutput += data.toString();
106
+ });
107
+
108
+ nodeProcess.on('close', (code) => {
109
+ if (code === 0) {
110
+ // Check if payment was successful
111
+ if (output.includes('PAYMENT ACCEPTED') || output.includes('SUCCESS')) {
112
+ showSuccess('✅ x402 Payment Complete!', 'Order transaction received from Purch.xyz');
113
+ } else if (output.includes('failed') || output.includes('❌')) {
114
+ showError('Payment was not accepted. Check output above for details.');
115
+ process.exit(1);
116
+ } else {
117
+ showSuccess('✅ x402 Purchase Flow Complete', '');
118
+ }
119
+ flameDivider();
120
+ } else {
121
+ showError(`x402 purchase failed: ${errorOutput || 'Unknown error'}`);
122
+ process.exit(1);
123
+ }
124
+ });
125
+ }
@@ -112,18 +112,17 @@ export async function sendCommand(recipient: string, amount: string, options: Se
112
112
  console.log();
113
113
  console.log(chalk.blue('⏳ Executing transaction via Fuego...'));
114
114
 
115
- // Find fuego installation path and call Python script
115
+ // Find fuego installation path and call Node.js script
116
116
  const fuegoPath = findFuegoPath();
117
117
  if (!fuegoPath) {
118
118
  showError('Fuego installation not found. Run "fuego install" first.');
119
119
  process.exit(1);
120
120
  }
121
121
 
122
- const scriptPath = path.join(fuegoPath, 'scripts', 'fuego_transfer.py');
122
+ const scriptPath = path.join(fuegoPath, 'scripts', 'fuego_transfer.mjs');
123
123
 
124
- const pythonProcess = spawn('python3', [
124
+ const nodeProcess = spawn('node', [
125
125
  scriptPath,
126
- '--from', walletConfig.publicKey,
127
126
  '--to', resolvedAddress,
128
127
  '--amount', amount,
129
128
  '--token', token
@@ -132,16 +131,16 @@ export async function sendCommand(recipient: string, amount: string, options: Se
132
131
  let output = '';
133
132
  let errorOutput = '';
134
133
 
135
- pythonProcess.stdout.on('data', (data) => {
134
+ nodeProcess.stdout.on('data', (data) => {
136
135
  output += data.toString();
137
136
  process.stdout.write(data);
138
137
  });
139
138
 
140
- pythonProcess.stderr.on('data', (data) => {
139
+ nodeProcess.stderr.on('data', (data) => {
141
140
  errorOutput += data.toString();
142
141
  });
143
142
 
144
- pythonProcess.on('close', (code) => {
143
+ nodeProcess.on('close', (code) => {
145
144
  if (code === 0) {
146
145
  // Extract signature from output if present
147
146
  const sigMatch = output.match(/Signature: ([A-Za-z0-9]+)/);
package/src/index.ts CHANGED
@@ -12,6 +12,8 @@ import { updateCommand } from './commands/update.js';
12
12
  import { rpcCommand } from './commands/rpc.js';
13
13
  import { contactsAddCommand, contactsListCommand, contactsShowCommand, contactsRemoveCommand } from './commands/contacts.js';
14
14
  import { sendCommand } from './commands/send.js';
15
+ import { fundCommand } from './commands/fund.js';
16
+ import { purchCommand } from './commands/purch.js';
15
17
  import { showBanner } from './lib/ascii.js';
16
18
  import { getFuegoCliVersion } from './lib/config.js';
17
19
 
@@ -109,6 +111,11 @@ async function main() {
109
111
  .option('-y, --yes', 'Skip confirmation prompt')
110
112
  .action(contactsRemoveCommand);
111
113
 
114
+ program
115
+ .command('fund')
116
+ .description('Show funding options: MoonPay link + QR code for your wallet')
117
+ .action(fundCommand);
118
+
112
119
  program
113
120
  .command('send <recipient> <amount>')
114
121
  .description('Send SOL, USDC, or USDT to an address or contact')
@@ -116,6 +123,19 @@ async function main() {
116
123
  .option('-y, --yes', 'Skip confirmation and send immediately')
117
124
  .action(sendCommand);
118
125
 
126
+ program
127
+ .command('purch <product-url>')
128
+ .description('Purchase products via x402/Purch.xyz (Amazon, Shopify, etc.)')
129
+ .requiredOption('--email <email>', 'Email for order notifications')
130
+ .requiredOption('--name <name>', 'Full name for shipping')
131
+ .requiredOption('--address-line1 <address>', 'Street address line 1')
132
+ .option('--address-line2 <address>', 'Apartment, suite, etc. (optional)')
133
+ .requiredOption('--city <city>', 'City')
134
+ .requiredOption('--state <state>', 'State/Province code (e.g., TX)')
135
+ .requiredOption('--postal-code <code>', 'Postal/ZIP code')
136
+ .option('--country <code>', 'Country code (default: US)', 'US')
137
+ .action(purchCommand);
138
+
119
139
  await program.parseAsync(process.argv);
120
140
  }
121
141