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 +80 -1
- package/dist/commands/fund.d.ts +2 -0
- package/dist/commands/fund.d.ts.map +1 -0
- package/dist/commands/fund.js +47 -0
- package/dist/commands/fund.js.map +1 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +11 -3
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/purch.d.ts +13 -0
- package/dist/commands/purch.d.ts.map +1 -0
- package/dist/commands/purch.js +104 -0
- package/dist/commands/purch.js.map +1 -0
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +6 -7
- package/dist/commands/send.js.map +1 -1
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -1
- package/fuego-cli-1.2.0.tgz +0 -0
- package/fuego-cli-1.3.0.tgz +0 -0
- package/package.json +4 -2
- package/src/commands/fund.ts +58 -0
- package/src/commands/install.ts +13 -3
- package/src/commands/purch.ts +125 -0
- package/src/commands/send.ts +6 -7
- package/src/index.ts +20 -0
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,
|
|
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 @@
|
|
|
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,
|
|
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"}
|
package/dist/commands/install.js
CHANGED
|
@@ -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('🚀
|
|
56
|
+
showInfo('🚀 You are all set!', [
|
|
53
57
|
`cd ${safeCdPath}`,
|
|
54
|
-
'
|
|
55
|
-
'
|
|
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,
|
|
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"}
|
package/dist/commands/send.js
CHANGED
|
@@ -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
|
|
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.
|
|
94
|
-
const
|
|
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
|
-
|
|
102
|
+
nodeProcess.stdout.on('data', (data) => {
|
|
104
103
|
output += data.toString();
|
|
105
104
|
process.stdout.write(data);
|
|
106
105
|
});
|
|
107
|
-
|
|
106
|
+
nodeProcess.stderr.on('data', (data) => {
|
|
108
107
|
errorOutput += data.toString();
|
|
109
108
|
});
|
|
110
|
-
|
|
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":"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
|
|
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":"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"}
|
|
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,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,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,MAAM,CAAC;SACf,WAAW,CAAC,8DAA8D,CAAC;SAC3E,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvB,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,OAAO;SACJ,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,8DAA8D,CAAC;SAC3E,cAAc,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;SAClE,cAAc,CAAC,eAAe,EAAE,wBAAwB,CAAC;SACzD,cAAc,CAAC,2BAA2B,EAAE,uBAAuB,CAAC;SACpE,MAAM,CAAC,2BAA2B,EAAE,mCAAmC,CAAC;SACxE,cAAc,CAAC,eAAe,EAAE,MAAM,CAAC;SACvC,cAAc,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;SACnE,cAAc,CAAC,sBAAsB,EAAE,iBAAiB,CAAC;SACzD,MAAM,CAAC,kBAAkB,EAAE,4BAA4B,EAAE,IAAI,CAAC;SAC9D,MAAM,CAAC,YAAY,CAAC,CAAC;IAExB,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"}
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fuego-cli",
|
|
3
|
-
"version": "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
|
+
}
|
package/src/commands/install.ts
CHANGED
|
@@ -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('🚀
|
|
83
|
+
showInfo('🚀 You are all set!', [
|
|
78
84
|
`cd ${safeCdPath}`,
|
|
79
|
-
'
|
|
80
|
-
'
|
|
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
|
+
}
|
package/src/commands/send.ts
CHANGED
|
@@ -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
|
|
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.
|
|
122
|
+
const scriptPath = path.join(fuegoPath, 'scripts', 'fuego_transfer.mjs');
|
|
123
123
|
|
|
124
|
-
const
|
|
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
|
-
|
|
134
|
+
nodeProcess.stdout.on('data', (data) => {
|
|
136
135
|
output += data.toString();
|
|
137
136
|
process.stdout.write(data);
|
|
138
137
|
});
|
|
139
138
|
|
|
140
|
-
|
|
139
|
+
nodeProcess.stderr.on('data', (data) => {
|
|
141
140
|
errorOutput += data.toString();
|
|
142
141
|
});
|
|
143
142
|
|
|
144
|
-
|
|
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
|
|