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.
Files changed (39) hide show
  1. package/README.md +211 -49
  2. package/dist/commands/balance.d.ts +2 -0
  3. package/dist/commands/balance.d.ts.map +1 -0
  4. package/dist/commands/balance.js +58 -0
  5. package/dist/commands/balance.js.map +1 -0
  6. package/dist/commands/create.d.ts.map +1 -1
  7. package/dist/commands/create.js +14 -8
  8. package/dist/commands/create.js.map +1 -1
  9. package/dist/commands/dashboard.d.ts +2 -0
  10. package/dist/commands/dashboard.d.ts.map +1 -0
  11. package/dist/commands/dashboard.js +51 -0
  12. package/dist/commands/dashboard.js.map +1 -0
  13. package/dist/commands/install.d.ts.map +1 -1
  14. package/dist/commands/install.js +11 -1
  15. package/dist/commands/install.js.map +1 -1
  16. package/dist/commands/serve.d.ts +2 -0
  17. package/dist/commands/serve.d.ts.map +1 -0
  18. package/dist/commands/serve.js +39 -0
  19. package/dist/commands/serve.js.map +1 -0
  20. package/dist/commands/update.d.ts +7 -0
  21. package/dist/commands/update.d.ts.map +1 -0
  22. package/dist/commands/update.js +92 -0
  23. package/dist/commands/update.js.map +1 -0
  24. package/dist/index.js +24 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/lib/config.d.ts +25 -3
  27. package/dist/lib/config.d.ts.map +1 -1
  28. package/dist/lib/config.js +56 -0
  29. package/dist/lib/config.js.map +1 -1
  30. package/fuego-cli-1.0.0.tgz +0 -0
  31. package/package.json +1 -1
  32. package/src/commands/balance.ts +82 -0
  33. package/src/commands/create.ts +16 -8
  34. package/src/commands/dashboard.ts +59 -0
  35. package/src/commands/install.ts +14 -1
  36. package/src/commands/serve.ts +48 -0
  37. package/src/commands/update.ts +120 -0
  38. package/src/index.ts +28 -0
  39. package/src/lib/config.ts +75 -3
package/README.md CHANGED
@@ -1,64 +1,201 @@
1
- # šŸ”„ @fuego/cli
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
- Command-line interface for Fuego - the sovereign Solana wallet for AI agents.
22
+ ---
23
+
24
+ ## Why Fuego?
25
+
26
+ **The first Solana wallet CLI designed FOR autonomous agents.**
4
27
 
5
- ![Fuego Banner](https://raw.githubusercontent.com/willmcdeezy/fuego-cli/main/assets/banner.png)
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 @fuego/cli
38
+ npm install -g fuego-cli
11
39
  ```
12
40
 
41
+ ---
42
+
13
43
  ## Quick Start
14
44
 
15
45
  ```bash
16
- # See the fire banner and help
17
- fuego --help
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 main Fuego project
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
- ### `fuego create [options]`
66
+ ### Wallet Management
29
67
 
30
- Create a new Fuego wallet with style.
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
- **Options:**
33
- - `-f, --force` - Overwrite existing wallet
34
- - `-n, --name <name>` - Name your wallet (default: "default")
35
- - `-d, --directory <path>` - Custom config directory
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
- Creates:
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 (minimal, 600 permissions)
46
- ā”œā”€ā”€ wallet-config.json # Wallet metadata (name, publicKey, createdAt)
47
- └── config.json # CLI settings (RPC URL, network)
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 main Fuego project.
191
+ Install the [Fuego project](https://github.com/willmcdeezy/fuego) — Rust server, Python scripts, and dashboard.
53
192
 
54
- **Options:**
55
- - `-p, --path <path>` - Installation path
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
- **Smart defaults:**
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
- ## Features
207
+ ---
208
+
209
+ ## Architecture
71
210
 
72
- - šŸ”„ **Fire-themed UI** — ASCII art, gradient colors, boxed messages
73
- - šŸ¤– **Agent-aware** — Auto-detects OpenClaw workspace
74
- - šŸ›”ļø **Sovereign** — Your keys, your control
75
- - šŸ“¦ **Zero-conf** — Sensible defaults, works out of the box
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 stored with `0o600` permissions (owner read/write only)
100
- - Wallet data separated from configuration
101
- - Local-first — no cloud services, no hosted wallets
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
- Built with šŸ”„ for the agent economy.
269
+ <div align="center">
270
+ <sub>Built with šŸ”„ for the agent economy</sub>
271
+ </div>
@@ -0,0 +1,2 @@
1
+ export declare function balanceCommand(): Promise<void>;
2
+ //# sourceMappingURL=balance.d.ts.map
@@ -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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAgBjD,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,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,GAAG,CAAC,wCAAwC,CAAC,CAAC,KAAK,EAAE,CAAC;IAEtE,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,MAAM,OAAO,GAAG,cAAc,CAAC;QAE/B,oBAAoB;QACpB,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,gBAAgB,UAAU,EAAE;YAC7D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;SACtD,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAqB,CAAC;QAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3D,qBAAqB;QACrB,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,GAAG,gBAAgB,eAAe,EAAE;YACnE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;SACtD,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAA0B,CAAC;QACnE,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhF,qBAAqB;QACrB,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,GAAG,gBAAgB,eAAe,EAAE;YACnE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;SACtD,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAA0B,CAAC;QACnE,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhF,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,QAAQ,CAAC,kBAAkB,EAAE;YAC3B,YAAY,eAAe,CAAC,SAAS,CAAC,EAAE;YACxC,EAAE;YACF,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YACrE,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YAC1E,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;SAC1E,CAAC,CAAC;QAEH,YAAY,EAAE,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACpH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC,CAAC;QACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -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,CAmEzE"}
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"}
@@ -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 with defaults
26
+ // Create or update config.json
27
27
  const configPath = options.directory
28
28
  ? `${options.directory}/config.json`
29
29
  : getConfigPath();
30
- if (!fs.existsSync(configPath)) {
31
- fs.writeJsonSync(configPath, {
32
- network: 'mainnet',
33
- rpcUrl: 'https://api.mainnet-beta.solana.com',
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;AAChE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAE,MAAM,UAAU,CAAC;AAQ1B,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IAExB,MAAM,OAAO,GAAG,GAAG,CAAC;QAClB,IAAI,EAAE,iCAAiC;QACvC,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS;YAClC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,cAAc;YACpC,CAAC,CAAC,aAAa,EAAE,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;QAE3C,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,WAAW,CAAC,iHAAiH,CAAC,CAAC;YAC/H,OAAO;QACT,CAAC;QAED,OAAO,CAAC,IAAI,GAAG,kCAAkC,CAAC;QAClD,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QAEtB,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAElE,mCAAmC;QACnC,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS;YAClC,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,cAAc;YACpC,CAAC,CAAC,aAAa,EAAE,CAAC;QAEpB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE;gBAC3B,OAAO,EAAE,SAAS;gBAClB,MAAM,EAAE,qCAAqC;gBAC7C,OAAO,EAAE,OAAO;aACjB,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QAED,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,kBAAkB;QAClB,WAAW,CACT,iCAAiC,EACjC,SAAS,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,iBAAiB,eAAe,CAAC,SAAS,CAAC,EAAE,CAC5F,CAAC;QAEF,IAAI,QAAQ,EAAE,CAAC;YACb,WAAW,CACT,yCAAyC;gBACzC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACrB,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAC3D,CAAC;QACJ,CAAC;QAED,iBAAiB;QACjB,QAAQ,CAAC,iBAAiB,EAAE;YAC1B,+BAA+B;YAC/B,qCAAqC;SACtC,CAAC,CAAC;QAEH,YAAY,EAAE,CAAC;IAEjB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function dashboardCommand(): Promise<void>;
2
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -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":"AAQA,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAqE3E"}
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"}
@@ -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":"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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,2 @@
1
+ export declare function serveCommand(): Promise<void>;
2
+ //# sourceMappingURL=serve.d.ts.map
@@ -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,7 @@
1
+ interface UpdateOptions {
2
+ cli?: boolean;
3
+ fuego?: boolean;
4
+ }
5
+ export declare function updateCommand(options: UpdateOptions): Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=update.d.ts.map
@@ -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"}