fuego-cli 0.1.0 ā 1.0.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 +211 -49
- package/dist/commands/balance.d.ts +2 -0
- package/dist/commands/balance.d.ts.map +1 -0
- package/dist/commands/balance.js +58 -0
- package/dist/commands/balance.js.map +1 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +14 -8
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/dashboard.d.ts +2 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +51 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +11 -1
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/serve.d.ts +2 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +39 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/update.d.ts +7 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +92 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +25 -3
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +56 -0
- package/dist/lib/config.js.map +1 -1
- package/fuego-cli-1.0.0.tgz +0 -0
- package/package.json +1 -1
- package/src/commands/balance.ts +82 -0
- package/src/commands/create.ts +16 -8
- package/src/commands/dashboard.ts +59 -0
- package/src/commands/install.ts +14 -1
- package/src/commands/serve.ts +48 -0
- package/src/commands/update.ts +120 -0
- package/src/index.ts +28 -0
- package/src/lib/config.ts +75 -3
package/README.md
CHANGED
|
@@ -1,64 +1,201 @@
|
|
|
1
|
-
# š„
|
|
1
|
+
# š„ fuego-cli
|
|
2
|
+
|
|
3
|
+
<div align="center">
|
|
4
|
+
|
|
5
|
+
<pre>
|
|
6
|
+
āāāāāāāāāāā āāāāāāāāāāā āāāāāāā āāāāāāā
|
|
7
|
+
āāāāāāāāāāā āāāāāāāāāāāāāāāāāāā āāāāāāāāā
|
|
8
|
+
āāāāāā āāā āāāāāāāāā āāā āāāāāāā āāā
|
|
9
|
+
āāāāāā āāā āāāāāāāāā āāā āāāāāā āāā
|
|
10
|
+
āāā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
11
|
+
āāā āāāāāāā āāāāāāāā āāāāāāā āāāāāāā
|
|
12
|
+
</pre>
|
|
13
|
+
<h3>š„š¦ Agentic Solana Wallet CLI š¦š„</h3>
|
|
14
|
+
<p><strong>Zero friction. Maximum agent autonomy.</strong></p>
|
|
15
|
+
|
|
16
|
+
<p>
|
|
17
|
+
<a href="https://www.npmjs.com/package/fuego-cli"><img src="https://img.shields.io/npm/v/fuego-cli.svg?style=flat-square" alt="npm version"></a>
|
|
18
|
+
<a href="https://github.com/willmcdeezy/fuego-cli/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square" alt="License"></a>
|
|
19
|
+
</p>
|
|
20
|
+
</div>
|
|
2
21
|
|
|
3
|
-
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Why Fuego?
|
|
25
|
+
|
|
26
|
+
**The first Solana wallet CLI designed FOR autonomous agents.**
|
|
4
27
|
|
|
5
|
-
|
|
28
|
+
- ā” **No passwords** ā File permissions = real security
|
|
29
|
+
- š¤ **Agent-first** ā Built for automated workflows
|
|
30
|
+
- š **Local-only** ā Keys never leave your machine
|
|
31
|
+
- š **Auto-updating** ā Stay current with `fuego update`
|
|
32
|
+
|
|
33
|
+
---
|
|
6
34
|
|
|
7
35
|
## Installation
|
|
8
36
|
|
|
9
37
|
```bash
|
|
10
|
-
npm install -g
|
|
38
|
+
npm install -g fuego-cli
|
|
11
39
|
```
|
|
12
40
|
|
|
41
|
+
---
|
|
42
|
+
|
|
13
43
|
## Quick Start
|
|
14
44
|
|
|
15
45
|
```bash
|
|
16
|
-
#
|
|
17
|
-
fuego
|
|
18
|
-
|
|
19
|
-
# Create a new Fuego wallet
|
|
20
|
-
fuego create --name my-wallet
|
|
46
|
+
# 1. Create a wallet
|
|
47
|
+
fuego create
|
|
21
48
|
|
|
22
|
-
# Install the
|
|
49
|
+
# 2. Install the Fuego server & tools
|
|
23
50
|
fuego install
|
|
51
|
+
|
|
52
|
+
# 3. Start the server
|
|
53
|
+
fuego serve
|
|
54
|
+
|
|
55
|
+
# 4. Check your balance
|
|
56
|
+
fuego balance
|
|
57
|
+
|
|
58
|
+
# 5. Open the dashboard
|
|
59
|
+
fuego dashboard
|
|
24
60
|
```
|
|
25
61
|
|
|
62
|
+
---
|
|
63
|
+
|
|
26
64
|
## Commands
|
|
27
65
|
|
|
28
|
-
###
|
|
66
|
+
### Wallet Management
|
|
29
67
|
|
|
30
|
-
|
|
68
|
+
| Command | Description |
|
|
69
|
+
|---------|-------------|
|
|
70
|
+
| `fuego create` | Create a new Solana wallet |
|
|
71
|
+
| `fuego address` | Show your wallet address |
|
|
72
|
+
| `fuego balance` | Check SOL, USDC, USDT balances |
|
|
31
73
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
74
|
+
### Project Management
|
|
75
|
+
|
|
76
|
+
| Command | Description |
|
|
77
|
+
|---------|-------------|
|
|
78
|
+
| `fuego install` | Install the [Fuego server & tools](https://github.com/willmcdeezy/fuego) |
|
|
79
|
+
| `fuego serve` | Start the Rust server (`cargo run`) |
|
|
80
|
+
| `fuego dashboard` | Open the HTML dashboard |
|
|
81
|
+
| `fuego update` | Update CLI and/or Fuego project |
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Detailed Usage
|
|
86
|
+
|
|
87
|
+
### `fuego create [options]`
|
|
88
|
+
|
|
89
|
+
Create a new Fuego wallet with zero passwords.
|
|
36
90
|
|
|
37
|
-
**Example:**
|
|
38
91
|
```bash
|
|
39
92
|
fuego create --name prod-wallet
|
|
40
93
|
```
|
|
41
94
|
|
|
42
|
-
|
|
95
|
+
**Options:**
|
|
96
|
+
- `-f, --force` ā Overwrite existing wallet
|
|
97
|
+
- `-n, --name <name>` ā Wallet name (default: "default")
|
|
98
|
+
|
|
99
|
+
**Creates:**
|
|
43
100
|
```
|
|
44
101
|
~/.fuego/
|
|
45
|
-
āāā wallet.json # Private key (
|
|
46
|
-
āāā wallet-config.json #
|
|
47
|
-
āāā config.json # CLI
|
|
102
|
+
āāā wallet.json # Private key (600 permissions)
|
|
103
|
+
āāā wallet-config.json # Public key + metadata
|
|
104
|
+
āāā config.json # CLI config with versions
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
### `fuego balance`
|
|
110
|
+
|
|
111
|
+
Check balances via the Fuego server.
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
fuego balance
|
|
115
|
+
# or
|
|
116
|
+
fuego bal
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Output:**
|
|
120
|
+
```
|
|
121
|
+
š° Your Balances
|
|
122
|
+
|
|
123
|
+
Address: DmFy...eUZF
|
|
124
|
+
|
|
125
|
+
- SOL: 1.234567890
|
|
126
|
+
- USDC: $0.00
|
|
127
|
+
- USDT: $0.00
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
### `fuego serve`
|
|
133
|
+
|
|
134
|
+
Start the Fuego Rust server.
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
fuego serve
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Auto-detects installation at:
|
|
141
|
+
- `~/.openclaw/workspace/fuego` (OpenClaw agents)
|
|
142
|
+
- `./fuego` (local installs)
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
### `fuego dashboard`
|
|
147
|
+
|
|
148
|
+
Open the dashboard in your default browser.
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
fuego dashboard
|
|
152
|
+
# or
|
|
153
|
+
fuego dash
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
### `fuego update [options]`
|
|
159
|
+
|
|
160
|
+
Update everything with one command.
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
# Update both
|
|
164
|
+
fuego update
|
|
165
|
+
|
|
166
|
+
# Update only CLI
|
|
167
|
+
fuego update --cli
|
|
168
|
+
|
|
169
|
+
# Update only Fuego project
|
|
170
|
+
fuego update --fuego
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**Tracks versions in `~/.fuego/config.json`:**
|
|
174
|
+
```json
|
|
175
|
+
{
|
|
176
|
+
"fuego-cli": {
|
|
177
|
+
"version": "0.1.0",
|
|
178
|
+
"lastUpdated": "2026-02-24T18:30:00.000Z"
|
|
179
|
+
},
|
|
180
|
+
"fuego": {
|
|
181
|
+
"version": "a1b2c3d",
|
|
182
|
+
"lastUpdated": "2026-02-24T18:35:00.000Z"
|
|
183
|
+
}
|
|
184
|
+
}
|
|
48
185
|
```
|
|
49
186
|
|
|
187
|
+
---
|
|
188
|
+
|
|
50
189
|
### `fuego install [options]`
|
|
51
190
|
|
|
52
|
-
Install the
|
|
191
|
+
Install the [Fuego project](https://github.com/willmcdeezy/fuego) ā Rust server, Python scripts, and dashboard.
|
|
53
192
|
|
|
54
|
-
**
|
|
55
|
-
|
|
193
|
+
**Auto-detection:**
|
|
194
|
+
1. Checks for `~/.openclaw/workspace` first (OpenClaw agent machines)
|
|
195
|
+
2. If not found, creates `./fuego` in your **current directory**
|
|
56
196
|
|
|
57
|
-
**
|
|
58
|
-
- If `~/.openclaw/workspace` exists ā installs there (agent machine)
|
|
59
|
-
- Otherwise ā installs to `./fuego` (like create-react-app)
|
|
197
|
+
> **Note:** This installs the Fuego server to `./fuego/` (or your custom path), not to `~/.fuego/`. The `~/.fuego/` folder is only for your wallet files and CLI config.
|
|
60
198
|
|
|
61
|
-
**Example:**
|
|
62
199
|
```bash
|
|
63
200
|
# Auto-detect best location
|
|
64
201
|
fuego install
|
|
@@ -67,43 +204,68 @@ fuego install
|
|
|
67
204
|
fuego install --path ~/projects/my-fuego
|
|
68
205
|
```
|
|
69
206
|
|
|
70
|
-
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Architecture
|
|
71
210
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
-
|
|
75
|
-
|
|
211
|
+
```
|
|
212
|
+
āāāāāāāāāāāāāāāāāāā
|
|
213
|
+
ā fuego-cli ā ā This package (wallet + commands)
|
|
214
|
+
ā (Node.js/npm) ā
|
|
215
|
+
āāāāāāāāāā¬āāāāāāāāā
|
|
216
|
+
ā
|
|
217
|
+
ā¼
|
|
218
|
+
āāāāāāāāāāāāāāāāāāā
|
|
219
|
+
ā ~/.fuego/ ā ā Wallet storage
|
|
220
|
+
ā wallet.json ā
|
|
221
|
+
āāāāāāāāāā¬āāāāāāāāā
|
|
222
|
+
ā
|
|
223
|
+
ā¼
|
|
224
|
+
āāāāāāāāāāāāāāāāāāā
|
|
225
|
+
ā Fuego Server ā ā Rust server (separate repo)
|
|
226
|
+
ā (cargo run) ā
|
|
227
|
+
āāāāāāāāāā¬āāāāāāāāā
|
|
228
|
+
ā
|
|
229
|
+
ā¼
|
|
230
|
+
āāāāāāāāāāāāāāāāāāā
|
|
231
|
+
ā Solana Network ā ā mainnet/devnet
|
|
232
|
+
āāāāāāāāāāāāāāāāāāā
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
---
|
|
76
236
|
|
|
77
237
|
## Development
|
|
78
238
|
|
|
79
239
|
```bash
|
|
80
|
-
# Clone and setup
|
|
81
240
|
git clone https://github.com/willmcdeezy/fuego-cli.git
|
|
82
241
|
cd fuego-cli
|
|
83
242
|
npm install
|
|
84
|
-
|
|
85
|
-
# Build (uses npx tsc)
|
|
86
243
|
npm run build
|
|
87
|
-
|
|
88
|
-
# Test locally
|
|
89
|
-
npm start -- --help
|
|
90
|
-
npm start create --name test
|
|
91
|
-
|
|
92
|
-
# Link for global testing
|
|
93
|
-
npm link
|
|
94
|
-
fuego --help
|
|
244
|
+
npm link # Global testing
|
|
95
245
|
```
|
|
96
246
|
|
|
247
|
+
---
|
|
248
|
+
|
|
97
249
|
## Security
|
|
98
250
|
|
|
99
|
-
- Private keys
|
|
100
|
-
-
|
|
101
|
-
-
|
|
251
|
+
- ā
Private keys: `chmod 600` (owner only)
|
|
252
|
+
- ā
Local-first: No cloud, no hosted wallets
|
|
253
|
+
- ā
Separate concerns: CLI vs server vs wallet
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Related Projects
|
|
258
|
+
|
|
259
|
+
- š„ [fuego](https://github.com/willmcdeezy/fuego) ā Rust server, Python scripts, dashboard
|
|
260
|
+
|
|
261
|
+
---
|
|
102
262
|
|
|
103
263
|
## License
|
|
104
264
|
|
|
105
|
-
MIT
|
|
265
|
+
MIT Ā© Will McDeezy
|
|
106
266
|
|
|
107
267
|
---
|
|
108
268
|
|
|
109
|
-
|
|
269
|
+
<div align="center">
|
|
270
|
+
<sub>Built with š„ for the agent economy</sub>
|
|
271
|
+
</div>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../src/commands/balance.ts"],"names":[],"mappings":"AAqBA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA4DpD"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { loadWalletConfig } from '../lib/config.js';
|
|
3
|
+
import { showInfo, formatPublicKey, flameDivider } from '../lib/ascii.js';
|
|
4
|
+
import ora from 'ora';
|
|
5
|
+
const FUEGO_SERVER_URL = 'http://127.0.0.1:8080';
|
|
6
|
+
export async function balanceCommand() {
|
|
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 spinner = ora('Fetching balances from Fuego server...').start();
|
|
14
|
+
try {
|
|
15
|
+
const publicKey = config.publicKey;
|
|
16
|
+
const network = 'mainnet-beta';
|
|
17
|
+
// Query SOL balance
|
|
18
|
+
const solResponse = await fetch(`${FUEGO_SERVER_URL}/balance`, {
|
|
19
|
+
method: 'POST',
|
|
20
|
+
headers: { 'Content-Type': 'application/json' },
|
|
21
|
+
body: JSON.stringify({ network, address: publicKey })
|
|
22
|
+
});
|
|
23
|
+
const solData = await solResponse.json();
|
|
24
|
+
const solBalance = solData.success ? solData.data.sol : 0;
|
|
25
|
+
// Query USDC balance
|
|
26
|
+
const usdcResponse = await fetch(`${FUEGO_SERVER_URL}/usdc-balance`, {
|
|
27
|
+
method: 'POST',
|
|
28
|
+
headers: { 'Content-Type': 'application/json' },
|
|
29
|
+
body: JSON.stringify({ network, address: publicKey })
|
|
30
|
+
});
|
|
31
|
+
const usdcData = await usdcResponse.json();
|
|
32
|
+
const usdcBalance = usdcData.success ? parseFloat(usdcData.data.ui_amount) : 0;
|
|
33
|
+
// Query USDT balance
|
|
34
|
+
const usdtResponse = await fetch(`${FUEGO_SERVER_URL}/usdt-balance`, {
|
|
35
|
+
method: 'POST',
|
|
36
|
+
headers: { 'Content-Type': 'application/json' },
|
|
37
|
+
body: JSON.stringify({ network, address: publicKey })
|
|
38
|
+
});
|
|
39
|
+
const usdtData = await usdtResponse.json();
|
|
40
|
+
const usdtBalance = usdtData.success ? parseFloat(usdtData.data.ui_amount) : 0;
|
|
41
|
+
spinner.stop();
|
|
42
|
+
showInfo('š° Your Balances', [
|
|
43
|
+
`Address: ${formatPublicKey(publicKey)}`,
|
|
44
|
+
'',
|
|
45
|
+
`${chalk.yellow('- SOL:')} ${chalk.white(solBalance.toFixed(9))}`,
|
|
46
|
+
`${chalk.green('- USDC:')} ${chalk.white('$' + usdcBalance.toFixed(2))}`,
|
|
47
|
+
`${chalk.cyan('- USDT:')} ${chalk.white('$' + usdtBalance.toFixed(2))}`,
|
|
48
|
+
]);
|
|
49
|
+
flameDivider();
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
spinner.stop();
|
|
53
|
+
console.log(chalk.red(`\nā Failed to fetch balances: ${error instanceof Error ? error.message : 'Unknown error'}`));
|
|
54
|
+
console.log(chalk.gray('\nMake sure the Fuego server is running: cd fuego/server && cargo run'));
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=balance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/commands/balance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAOA,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,
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAOA,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,CA2EzE"}
|
package/dist/commands/create.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import ora from 'ora';
|
|
3
3
|
import { FuegoWallet } from '../lib/wallet.js';
|
|
4
|
-
import { getWalletPath, getConfigPath } from '../lib/config.js';
|
|
4
|
+
import { getWalletPath, getConfigPath, getFuegoCliVersion, setFuegoCliVersion } from '../lib/config.js';
|
|
5
5
|
import { showSuccess, showWarning, showInfo, formatPublicKey, flameDivider } from '../lib/ascii.js';
|
|
6
6
|
import fs from 'fs-extra';
|
|
7
7
|
export async function createCommand(options) {
|
|
@@ -23,17 +23,23 @@ export async function createCommand(options) {
|
|
|
23
23
|
spinner.text = 'Generating new Solana keypair...';
|
|
24
24
|
spinner.color = 'red';
|
|
25
25
|
const { publicKey, mnemonic } = await wallet.create(options.name);
|
|
26
|
-
// Create config.json
|
|
26
|
+
// Create or update config.json
|
|
27
27
|
const configPath = options.directory
|
|
28
28
|
? `${options.directory}/config.json`
|
|
29
29
|
: getConfigPath();
|
|
30
|
-
if (
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
version: '0.1.0'
|
|
35
|
-
}, { spaces: 2 });
|
|
30
|
+
// Load existing config if it exists (from install command)
|
|
31
|
+
let existingConfig = {};
|
|
32
|
+
if (fs.existsSync(configPath)) {
|
|
33
|
+
existingConfig = fs.readJsonSync(configPath);
|
|
36
34
|
}
|
|
35
|
+
// Merge with defaults, preserving fuego install info
|
|
36
|
+
fs.writeJsonSync(configPath, {
|
|
37
|
+
...existingConfig,
|
|
38
|
+
network: existingConfig.network || 'mainnet',
|
|
39
|
+
rpcUrl: existingConfig.rpcUrl || 'https://api.mainnet-beta.solana.com'
|
|
40
|
+
}, { spaces: 2 });
|
|
41
|
+
// Store fuego-cli version
|
|
42
|
+
setFuegoCliVersion(getFuegoCliVersion());
|
|
37
43
|
spinner.stop();
|
|
38
44
|
// Success display
|
|
39
45
|
showSuccess('š„ Wallet Created Successfully!', `Name: ${chalk.cyan(options.name || 'default')}\nPublic Key: ${formatPublicKey(publicKey)}`);
|
|
@@ -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,MAAM,kBAAkB,CAAC;
|
|
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":"dashboard.d.ts","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAUA,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgDtD"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { exec } from 'child_process';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import { promisify } from 'util';
|
|
6
|
+
import { showInfo, flameDivider } from '../lib/ascii.js';
|
|
7
|
+
import { findFuegoPath } from '../lib/config.js';
|
|
8
|
+
const execAsync = promisify(exec);
|
|
9
|
+
export async function dashboardCommand() {
|
|
10
|
+
console.log(); // spacer
|
|
11
|
+
// Find fuego installation (checks config first, then falls back to auto-detect)
|
|
12
|
+
const fuegoPath = findFuegoPath();
|
|
13
|
+
if (!fuegoPath || !fs.existsSync(path.join(fuegoPath, 'dashboard', 'dashboard.html'))) {
|
|
14
|
+
console.log(chalk.red('ā Fuego dashboard not found.'));
|
|
15
|
+
console.log(chalk.gray('\nRun "fuego install" first to install the Fuego project.'));
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
const dashboardPath = path.join(fuegoPath, 'dashboard', 'dashboard.html');
|
|
19
|
+
showInfo('š„ Opening Fuego Dashboard', [
|
|
20
|
+
`Location: ${chalk.cyan(dashboardPath)}`
|
|
21
|
+
]);
|
|
22
|
+
flameDivider();
|
|
23
|
+
// Open the dashboard based on platform
|
|
24
|
+
const platform = process.platform;
|
|
25
|
+
let command;
|
|
26
|
+
switch (platform) {
|
|
27
|
+
case 'darwin': // macOS
|
|
28
|
+
command = `open "${dashboardPath}"`;
|
|
29
|
+
break;
|
|
30
|
+
case 'linux':
|
|
31
|
+
command = `xdg-open "${dashboardPath}"`;
|
|
32
|
+
break;
|
|
33
|
+
case 'win32':
|
|
34
|
+
command = `start "" "${dashboardPath}"`;
|
|
35
|
+
break;
|
|
36
|
+
default:
|
|
37
|
+
console.log(chalk.yellow(`ā ļø Unsupported platform: ${platform}`));
|
|
38
|
+
console.log(chalk.gray(`Please open manually: ${dashboardPath}`));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
await execAsync(command);
|
|
43
|
+
console.log(chalk.green('\nā
Dashboard opened!'));
|
|
44
|
+
console.log(chalk.gray('Note: Make sure the Fuego server is running (fuego serve)'));
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.log(chalk.yellow('\nā ļø Could not open dashboard automatically.'));
|
|
48
|
+
console.log(chalk.gray(`Please open manually: ${dashboardPath}`));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=dashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IAExB,gFAAgF;IAChF,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAElC,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAE1E,QAAQ,CAAC,4BAA4B,EAAE;QACrC,aAAa,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;KACzC,CAAC,CAAC;IAEH,YAAY,EAAE,CAAC;IAEf,uCAAuC;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,OAAe,CAAC;IAEpB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,EAAE,QAAQ;YACrB,OAAO,GAAG,SAAS,aAAa,GAAG,CAAC;YACpC,MAAM;QACR,KAAK,OAAO;YACV,OAAO,GAAG,aAAa,aAAa,GAAG,CAAC;YACxC,MAAM;QACR,KAAK,OAAO;YACV,OAAO,GAAG,aAAa,aAAa,GAAG,CAAC;YACxC,MAAM;QACR;YACE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,aAAa,EAAE,CAAC,CAAC,CAAC;YAClE,OAAO;IACX,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC,CAAC;IACvF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,aAAa,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/commands/install.js
CHANGED
|
@@ -4,6 +4,7 @@ import { execSync } from 'child_process';
|
|
|
4
4
|
import fs from 'fs-extra';
|
|
5
5
|
import path from 'path';
|
|
6
6
|
import os from 'os';
|
|
7
|
+
import { setFuegoVersion } from '../lib/config.js';
|
|
7
8
|
import { showSuccess, showWarning, showInfo, flameDivider } from '../lib/ascii.js';
|
|
8
9
|
export async function installCommand(options) {
|
|
9
10
|
console.log(); // spacer
|
|
@@ -28,17 +29,26 @@ export async function installCommand(options) {
|
|
|
28
29
|
spinner.text = 'Creating directory...';
|
|
29
30
|
spinner.color = 'cyan';
|
|
30
31
|
await fs.ensureDir(path.dirname(installPath));
|
|
32
|
+
// Ensure .fuego config directory exists (even if create hasn't run yet)
|
|
33
|
+
const fuegoDir = path.join(os.homedir(), '.fuego');
|
|
34
|
+
await fs.ensureDir(fuegoDir);
|
|
31
35
|
spinner.text = 'Cloning Fuego repository...';
|
|
32
36
|
spinner.color = 'red';
|
|
33
37
|
// Clone the main Fuego repo
|
|
34
38
|
const repoUrl = 'https://github.com/willmcdeezy/fuego.git';
|
|
35
39
|
execSync(`git clone ${repoUrl} "${installPath}"`, { stdio: 'pipe' });
|
|
36
40
|
spinner.stop();
|
|
41
|
+
// Get the commit hash as version
|
|
42
|
+
const commitHash = execSync('git rev-parse --short HEAD', {
|
|
43
|
+
cwd: installPath
|
|
44
|
+
}).toString().trim();
|
|
45
|
+
// Store version info with install path
|
|
46
|
+
setFuegoVersion(commitHash, installPath);
|
|
37
47
|
// Show contextual next steps
|
|
38
48
|
const relativePath = path.relative(process.cwd(), installPath);
|
|
39
49
|
const cdPath = relativePath.startsWith('..') ? installPath : relativePath;
|
|
40
50
|
const safeCdPath = cdPath.includes(' ') ? `"${cdPath}"` : cdPath;
|
|
41
|
-
showSuccess('š„ Fuego Installed Successfully!', `Location: ${chalk.cyan(installPath)}`);
|
|
51
|
+
showSuccess('š„ Fuego Installed Successfully!', `Location: ${chalk.cyan(installPath)}\nVersion: ${chalk.cyan(commitHash)}`);
|
|
42
52
|
showInfo('š Next Steps', [
|
|
43
53
|
`cd ${safeCdPath}`,
|
|
44
54
|
'npm install',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAMnF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAuB;IAC1D,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IAExB,2FAA2F;IAC3F,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAC5E,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAErD,MAAM,WAAW,GAAG,WAAW;QAC7B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC;QACvC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;IAEtC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IAEhD,MAAM,OAAO,GAAG,GAAG,CAAC;QAClB,IAAI,EAAE,+BAA+B;QACrC,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,CAAC;QACH,0BAA0B;QAC1B,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,WAAW,CACT,gCAAgC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,2EAA2E,CACnI,CAAC;YACF,OAAO;QACT,CAAC;QAED,OAAO,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACvC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;QACvB,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QAE9C,OAAO,CAAC,IAAI,GAAG,6BAA6B,CAAC;QAC7C,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QAEtB,4BAA4B;QAC5B,MAAM,OAAO,GAAG,0CAA0C,CAAC;QAC3D,QAAQ,CAAC,aAAa,OAAO,KAAK,WAAW,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAErE,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,6BAA6B;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;QAC1E,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QAEjE,WAAW,CACT,kCAAkC,EAClC,aAAa,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAOA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAwClD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { spawn } from 'child_process';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { showInfo, flameDivider } from '../lib/ascii.js';
|
|
5
|
+
import { findFuegoPath } from '../lib/config.js';
|
|
6
|
+
export async function serveCommand() {
|
|
7
|
+
console.log(); // spacer
|
|
8
|
+
// Find fuego installation (checks config first, then falls back to auto-detect)
|
|
9
|
+
const fuegoPath = findFuegoPath();
|
|
10
|
+
if (!fuegoPath) {
|
|
11
|
+
console.log(chalk.red('ā Fuego server not found.'));
|
|
12
|
+
console.log(chalk.gray('\nRun "fuego install" first to install the Fuego project.'));
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
const serverPath = path.join(fuegoPath, 'server');
|
|
16
|
+
showInfo('š„ Starting Fuego Server', [
|
|
17
|
+
`Location: ${chalk.cyan(serverPath)}`,
|
|
18
|
+
'Command: cargo run',
|
|
19
|
+
'',
|
|
20
|
+
'Server will be available at:',
|
|
21
|
+
chalk.cyan('http://127.0.0.1:8080')
|
|
22
|
+
]);
|
|
23
|
+
flameDivider();
|
|
24
|
+
console.log(); // spacer
|
|
25
|
+
// Spawn cargo run in the server directory
|
|
26
|
+
const child = spawn('cargo', ['run'], {
|
|
27
|
+
cwd: serverPath,
|
|
28
|
+
stdio: 'inherit'
|
|
29
|
+
});
|
|
30
|
+
child.on('error', (error) => {
|
|
31
|
+
console.log(chalk.red(`\nā Failed to start server: ${error.message}`));
|
|
32
|
+
console.log(chalk.gray('\nMake sure Rust and Cargo are installed: https://rustup.rs'));
|
|
33
|
+
process.exit(1);
|
|
34
|
+
});
|
|
35
|
+
child.on('exit', (code) => {
|
|
36
|
+
process.exit(code || 0);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=serve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IAExB,gFAAgF;IAChF,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAElC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAElD,QAAQ,CAAC,0BAA0B,EAAE;QACnC,aAAa,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;QACrC,oBAAoB;QACpB,EAAE;QACF,8BAA8B;QAC9B,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC;KACpC,CAAC,CAAC;IAEH,YAAY,EAAE,CAAC;IACf,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IAExB,0CAA0C;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE;QACpC,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACxB,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAeA,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAmGzE"}
|