@vultisig/cli 0.1.0-alpha.1 → 0.1.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 (60) hide show
  1. package/README.md +6 -0
  2. package/dist/index.js +3185 -361
  3. package/package.json +4 -3
  4. package/dist/adapters/cli-context.js +0 -25
  5. package/dist/adapters/cli-context.js.map +0 -1
  6. package/dist/adapters/cli-runner.js +0 -47
  7. package/dist/adapters/cli-runner.js.map +0 -1
  8. package/dist/adapters/index.js +0 -6
  9. package/dist/adapters/index.js.map +0 -1
  10. package/dist/commands/balance.js +0 -65
  11. package/dist/commands/balance.js.map +0 -1
  12. package/dist/commands/chains.js +0 -46
  13. package/dist/commands/chains.js.map +0 -1
  14. package/dist/commands/index.js +0 -12
  15. package/dist/commands/index.js.map +0 -1
  16. package/dist/commands/settings.js +0 -151
  17. package/dist/commands/settings.js.map +0 -1
  18. package/dist/commands/swap.js +0 -180
  19. package/dist/commands/swap.js.map +0 -1
  20. package/dist/commands/tokens.js +0 -116
  21. package/dist/commands/tokens.js.map +0 -1
  22. package/dist/commands/transaction.js +0 -99
  23. package/dist/commands/transaction.js.map +0 -1
  24. package/dist/commands/vault-management.js +0 -360
  25. package/dist/commands/vault-management.js.map +0 -1
  26. package/dist/core/command-context.js +0 -81
  27. package/dist/core/command-context.js.map +0 -1
  28. package/dist/core/index.js +0 -7
  29. package/dist/core/index.js.map +0 -1
  30. package/dist/core/password-manager.js +0 -92
  31. package/dist/core/password-manager.js.map +0 -1
  32. package/dist/core/types.js +0 -2
  33. package/dist/core/types.js.map +0 -1
  34. package/dist/index.js.map +0 -1
  35. package/dist/interactive/completer.js +0 -170
  36. package/dist/interactive/completer.js.map +0 -1
  37. package/dist/interactive/event-buffer.js +0 -186
  38. package/dist/interactive/event-buffer.js.map +0 -1
  39. package/dist/interactive/index.js +0 -9
  40. package/dist/interactive/index.js.map +0 -1
  41. package/dist/interactive/session.js +0 -525
  42. package/dist/interactive/session.js.map +0 -1
  43. package/dist/interactive/shell-commands.js +0 -167
  44. package/dist/interactive/shell-commands.js.map +0 -1
  45. package/dist/interactive/shell-context.js +0 -112
  46. package/dist/interactive/shell-context.js.map +0 -1
  47. package/dist/lib/completion.js +0 -375
  48. package/dist/lib/completion.js.map +0 -1
  49. package/dist/lib/config.js +0 -172
  50. package/dist/lib/config.js.map +0 -1
  51. package/dist/lib/errors.js +0 -163
  52. package/dist/lib/errors.js.map +0 -1
  53. package/dist/lib/index.js +0 -9
  54. package/dist/lib/index.js.map +0 -1
  55. package/dist/lib/output.js +0 -155
  56. package/dist/lib/output.js.map +0 -1
  57. package/dist/lib/version.js +0 -210
  58. package/dist/lib/version.js.map +0 -1
  59. package/dist/ui.js +0 -286
  60. package/dist/ui.js.map +0 -1
@@ -1,525 +0,0 @@
1
- import { fiatCurrencies } from '@vultisig/sdk';
2
- import chalk from 'chalk';
3
- import ora from 'ora';
4
- import * as repl from 'repl';
5
- import { executeAddressBook, executeAddresses, executeBalance, executeChains, executeCreate, executeCurrency, executeExport, executeImport, executeInfo, executePortfolio, executeRename, executeSend, executeServer, executeSwap, executeSwapChains, executeSwapQuote, executeTokens, executeVaults, } from '../commands';
6
- import { createCompleter, findChainByName } from './completer';
7
- import { EventBuffer } from './event-buffer';
8
- import { executeLock, executeStatus, executeUnlock, showHelp } from './shell-commands';
9
- import { createShellContext } from './shell-context';
10
- /**
11
- * Create a REPL-safe spinner that doesn't interfere with stdin
12
- */
13
- function createReplSafeSpinner(text) {
14
- return ora({
15
- text,
16
- hideCursor: false,
17
- stream: process.stdout,
18
- isEnabled: true,
19
- isSilent: false,
20
- });
21
- }
22
- /**
23
- * Interactive Shell Session
24
- */
25
- export class ShellSession {
26
- ctx;
27
- eventBuffer;
28
- replServer;
29
- constructor(sdk, options) {
30
- this.ctx = createShellContext(sdk, options);
31
- this.eventBuffer = new EventBuffer();
32
- }
33
- /**
34
- * Start the interactive shell
35
- */
36
- async start() {
37
- console.clear();
38
- console.log(chalk.cyan.bold('\n=============================================='));
39
- console.log(chalk.cyan.bold(' Vultisig Interactive Shell'));
40
- console.log(chalk.cyan.bold('==============================================\n'));
41
- // Load all vaults
42
- await this.loadAllVaults();
43
- // Display vault list
44
- this.displayVaultList();
45
- // Show quick help
46
- console.log(chalk.gray('Type "help" for available commands, ".exit" to quit\n'));
47
- // Create the REPL server with completer
48
- this.replServer = repl.start({
49
- prompt: this.getPrompt(),
50
- eval: this.evalCommand.bind(this),
51
- ignoreUndefined: true,
52
- terminal: true,
53
- useColors: true,
54
- completer: createCompleter(this.ctx),
55
- });
56
- // Setup REPL commands
57
- this.setupReplCommands();
58
- }
59
- /**
60
- * Custom eval function for command processing
61
- */
62
- async evalCommand(cmd, _context, _filename, callback) {
63
- const input = cmd.trim();
64
- // Handle empty input
65
- if (!input) {
66
- callback(null);
67
- return;
68
- }
69
- // Parse command and arguments
70
- const [command, ...args] = input.split(/\s+/);
71
- try {
72
- // Start command execution - buffer events during command
73
- this.eventBuffer.startCommand();
74
- // Execute command
75
- await this.executeCommand(command.toLowerCase(), args);
76
- // End command execution - flush buffered events
77
- this.eventBuffer.endCommand();
78
- // Update prompt if needed
79
- this.replServer.setPrompt(this.getPrompt());
80
- // Signal completion to REPL
81
- callback(null);
82
- // Restore terminal state after async commands
83
- // Some commands (like ora spinners) pause stdin and disable raw mode
84
- this.restoreTerminalState();
85
- }
86
- catch (error) {
87
- // End command execution even on error
88
- this.eventBuffer.endCommand();
89
- // Show error
90
- console.error(chalk.red(`\nx Error: ${error.message}`));
91
- // Update prompt
92
- this.replServer.setPrompt(this.getPrompt());
93
- // Signal completion
94
- callback(null);
95
- // Restore terminal state after error
96
- this.restoreTerminalState();
97
- }
98
- }
99
- /**
100
- * Restore terminal state after commands that may have altered it.
101
- * Some libraries (like ora spinners) pause stdin and disable raw mode.
102
- */
103
- restoreTerminalState() {
104
- // Resume stdin if paused
105
- if (process.stdin.isPaused()) {
106
- process.stdin.resume();
107
- }
108
- // Restore raw mode if disabled (required for REPL to work properly)
109
- if (process.stdin.isTTY && !process.stdin.isRaw) {
110
- process.stdin.setRawMode(true);
111
- }
112
- // Force prompt redisplay
113
- this.replServer.displayPrompt();
114
- }
115
- /**
116
- * Execute a command
117
- */
118
- async executeCommand(command, args) {
119
- switch (command) {
120
- // Vault management
121
- case 'vaults':
122
- await executeVaults(this.ctx);
123
- break;
124
- case 'vault':
125
- await this.switchVault(args);
126
- break;
127
- case 'import':
128
- await this.importVault(args);
129
- break;
130
- case 'create':
131
- await this.createVault();
132
- break;
133
- case 'info':
134
- await executeInfo(this.ctx);
135
- break;
136
- case 'export':
137
- await executeExport(this.ctx, { outputPath: args.join(' ') || undefined });
138
- break;
139
- case 'rename':
140
- if (args.length === 0) {
141
- console.log(chalk.yellow('Usage: rename <newName>'));
142
- return;
143
- }
144
- await executeRename(this.ctx, args.join(' '));
145
- break;
146
- // Balance commands
147
- case 'balance':
148
- case 'bal':
149
- await this.runBalance(args);
150
- break;
151
- case 'portfolio':
152
- await this.runPortfolio(args);
153
- break;
154
- // Transaction
155
- case 'send':
156
- await this.runSend(args);
157
- break;
158
- // Chain management
159
- case 'addresses':
160
- await executeAddresses(this.ctx);
161
- break;
162
- case 'chains':
163
- await this.runChains(args);
164
- break;
165
- case 'tokens':
166
- await this.runTokens(args);
167
- break;
168
- // Swap commands
169
- case 'swap-chains':
170
- await executeSwapChains(this.ctx);
171
- break;
172
- case 'swap-quote':
173
- await this.runSwapQuote(args);
174
- break;
175
- case 'swap':
176
- await this.runSwap(args);
177
- break;
178
- // Shell-only commands
179
- case 'lock':
180
- await executeLock(this.ctx);
181
- break;
182
- case 'unlock':
183
- await executeUnlock(this.ctx);
184
- break;
185
- case 'status':
186
- await executeStatus(this.ctx);
187
- break;
188
- // Settings
189
- case 'currency':
190
- await executeCurrency(this.ctx, args[0]);
191
- break;
192
- case 'server':
193
- await executeServer(this.ctx);
194
- break;
195
- case 'address-book':
196
- await this.runAddressBook(args);
197
- break;
198
- // Help
199
- case 'help':
200
- case '?':
201
- showHelp();
202
- break;
203
- default:
204
- if (command && !command.startsWith('.')) {
205
- console.log(chalk.yellow(`Unknown command: ${command}`));
206
- console.log(chalk.gray('Type "help" for available commands'));
207
- }
208
- break;
209
- }
210
- }
211
- // ===== Command Helpers =====
212
- async switchVault(args) {
213
- if (args.length === 0) {
214
- console.log(chalk.yellow('Usage: vault <name>'));
215
- console.log(chalk.gray('Run "vaults" to see available vaults'));
216
- return;
217
- }
218
- const vaultName = args.join(' ');
219
- const vault = this.ctx.findVaultByName(vaultName);
220
- if (!vault) {
221
- console.log(chalk.red(`Vault not found: ${vaultName}`));
222
- console.log(chalk.gray('Run "vaults" to see available vaults'));
223
- return;
224
- }
225
- await this.ctx.setActiveVault(vault);
226
- console.log(chalk.green(`\n+ Switched to: ${vault.name}`));
227
- const isUnlocked = this.ctx.isVaultUnlocked(vault.id);
228
- const status = isUnlocked ? chalk.green('Unlocked') : chalk.yellow('Locked');
229
- console.log(`Status: ${status}`);
230
- }
231
- async importVault(args) {
232
- if (args.length === 0) {
233
- console.log(chalk.yellow('Usage: import <file>'));
234
- return;
235
- }
236
- const filePath = args.join(' ');
237
- const vault = await executeImport(this.ctx, filePath);
238
- this.ctx.addVault(vault);
239
- this.eventBuffer.setupVaultListeners(vault);
240
- }
241
- async createVault() {
242
- const vault = await executeCreate(this.ctx, { type: 'fast' });
243
- this.ctx.addVault(vault);
244
- this.eventBuffer.setupVaultListeners(vault);
245
- }
246
- async runBalance(args) {
247
- const chainStr = args[0];
248
- const includeTokens = args.includes('-t') || args.includes('--tokens');
249
- await executeBalance(this.ctx, {
250
- chain: chainStr ? findChainByName(chainStr) || chainStr : undefined,
251
- includeTokens,
252
- });
253
- }
254
- async runPortfolio(args) {
255
- let currency = 'usd';
256
- for (let i = 0; i < args.length; i++) {
257
- if ((args[i] === '-c' || args[i] === '--currency') && i + 1 < args.length) {
258
- currency = args[i + 1].toLowerCase();
259
- i++;
260
- }
261
- }
262
- if (!fiatCurrencies.includes(currency)) {
263
- console.log(chalk.red(`Invalid currency: ${currency}`));
264
- console.log(chalk.yellow(`Supported currencies: ${fiatCurrencies.join(', ')}`));
265
- return;
266
- }
267
- await executePortfolio(this.ctx, { currency });
268
- }
269
- async runSend(args) {
270
- if (args.length < 3) {
271
- console.log(chalk.yellow('Usage: send <chain> <to> <amount> [--token <tokenId>] [--memo <memo>]'));
272
- return;
273
- }
274
- const [chainStr, to, amount, ...rest] = args;
275
- const chain = findChainByName(chainStr) || chainStr;
276
- let tokenId;
277
- let memo;
278
- for (let i = 0; i < rest.length; i++) {
279
- if (rest[i] === '--token' && i + 1 < rest.length) {
280
- tokenId = rest[i + 1];
281
- i++;
282
- }
283
- else if (rest[i] === '--memo' && i + 1 < rest.length) {
284
- memo = rest.slice(i + 1).join(' ');
285
- break;
286
- }
287
- }
288
- try {
289
- await executeSend(this.ctx, { chain, to, amount, tokenId, memo });
290
- }
291
- catch (err) {
292
- if (err.message === 'Transaction cancelled by user') {
293
- console.log(chalk.yellow('\nTransaction cancelled'));
294
- return;
295
- }
296
- throw err;
297
- }
298
- }
299
- async runChains(args) {
300
- let addChain;
301
- let removeChain;
302
- for (let i = 0; i < args.length; i++) {
303
- if (args[i] === '--add' && i + 1 < args.length) {
304
- const chain = findChainByName(args[i + 1]);
305
- if (!chain) {
306
- console.log(chalk.red(`Unknown chain: ${args[i + 1]}`));
307
- console.log(chalk.gray('Use tab completion to see available chains'));
308
- return;
309
- }
310
- addChain = chain;
311
- i++;
312
- }
313
- else if (args[i] === '--remove' && i + 1 < args.length) {
314
- const chain = findChainByName(args[i + 1]);
315
- if (!chain) {
316
- console.log(chalk.red(`Unknown chain: ${args[i + 1]}`));
317
- console.log(chalk.gray('Use tab completion to see available chains'));
318
- return;
319
- }
320
- removeChain = chain;
321
- i++;
322
- }
323
- }
324
- await executeChains(this.ctx, { add: addChain, remove: removeChain });
325
- }
326
- async runTokens(args) {
327
- if (args.length === 0) {
328
- console.log(chalk.yellow('Usage: tokens <chain> [--add <address>] [--remove <tokenId>]'));
329
- return;
330
- }
331
- const chainStr = args[0];
332
- const chain = findChainByName(chainStr) || chainStr;
333
- let add;
334
- let remove;
335
- for (let i = 1; i < args.length; i++) {
336
- if (args[i] === '--add' && i + 1 < args.length) {
337
- add = args[i + 1];
338
- i++;
339
- }
340
- else if (args[i] === '--remove' && i + 1 < args.length) {
341
- remove = args[i + 1];
342
- i++;
343
- }
344
- }
345
- await executeTokens(this.ctx, { chain, add, remove });
346
- }
347
- async runSwapQuote(args) {
348
- if (args.length < 3) {
349
- console.log(chalk.yellow('Usage: swap-quote <fromChain> <toChain> <amount> [--from-token <addr>] [--to-token <addr>]'));
350
- return;
351
- }
352
- const [fromChainStr, toChainStr, amountStr, ...rest] = args;
353
- const fromChain = findChainByName(fromChainStr) || fromChainStr;
354
- const toChain = findChainByName(toChainStr) || toChainStr;
355
- const amount = parseFloat(amountStr);
356
- let fromToken;
357
- let toToken;
358
- for (let i = 0; i < rest.length; i++) {
359
- if (rest[i] === '--from-token' && i + 1 < rest.length) {
360
- fromToken = rest[i + 1];
361
- i++;
362
- }
363
- else if (rest[i] === '--to-token' && i + 1 < rest.length) {
364
- toToken = rest[i + 1];
365
- i++;
366
- }
367
- }
368
- await executeSwapQuote(this.ctx, { fromChain, toChain, amount, fromToken, toToken });
369
- }
370
- async runSwap(args) {
371
- if (args.length < 3) {
372
- console.log(chalk.yellow('Usage: swap <fromChain> <toChain> <amount> [--from-token <addr>] [--to-token <addr>] [--slippage <pct>]'));
373
- return;
374
- }
375
- const [fromChainStr, toChainStr, amountStr, ...rest] = args;
376
- const fromChain = findChainByName(fromChainStr) || fromChainStr;
377
- const toChain = findChainByName(toChainStr) || toChainStr;
378
- const amount = parseFloat(amountStr);
379
- let fromToken;
380
- let toToken;
381
- let slippage;
382
- for (let i = 0; i < rest.length; i++) {
383
- if (rest[i] === '--from-token' && i + 1 < rest.length) {
384
- fromToken = rest[i + 1];
385
- i++;
386
- }
387
- else if (rest[i] === '--to-token' && i + 1 < rest.length) {
388
- toToken = rest[i + 1];
389
- i++;
390
- }
391
- else if (rest[i] === '--slippage' && i + 1 < rest.length) {
392
- slippage = parseFloat(rest[i + 1]);
393
- i++;
394
- }
395
- }
396
- try {
397
- await executeSwap(this.ctx, { fromChain, toChain, amount, fromToken, toToken, slippage });
398
- }
399
- catch (err) {
400
- if (err.message === 'Swap cancelled by user') {
401
- console.log(chalk.yellow('\nSwap cancelled'));
402
- return;
403
- }
404
- throw err;
405
- }
406
- }
407
- async runAddressBook(args) {
408
- let add = false;
409
- let remove;
410
- let chain;
411
- for (let i = 0; i < args.length; i++) {
412
- if (args[i] === '--add') {
413
- add = true;
414
- }
415
- else if (args[i] === '--remove' && i + 1 < args.length) {
416
- remove = args[i + 1];
417
- i++;
418
- }
419
- else if (args[i] === '--chain' && i + 1 < args.length) {
420
- chain = findChainByName(args[i + 1]) || args[i + 1];
421
- i++;
422
- }
423
- }
424
- await executeAddressBook(this.ctx, { add, remove, chain });
425
- }
426
- // ===== Setup =====
427
- setupReplCommands() {
428
- // Add .help command
429
- this.replServer.defineCommand('help', {
430
- help: 'Show available commands',
431
- action: () => {
432
- showHelp();
433
- this.replServer.displayPrompt();
434
- },
435
- });
436
- // Add .clear command
437
- this.replServer.defineCommand('clear', {
438
- help: 'Clear the screen',
439
- action: () => {
440
- console.clear();
441
- this.displayVaultList();
442
- this.replServer.displayPrompt();
443
- },
444
- });
445
- // Override .exit to clean up
446
- const originalExit = this.replServer.commands.exit;
447
- this.replServer.defineCommand('exit', {
448
- help: originalExit.help,
449
- action: () => {
450
- console.log(chalk.yellow('\nGoodbye!'));
451
- this.ctx.dispose();
452
- originalExit.action.call(this.replServer);
453
- },
454
- });
455
- }
456
- async loadAllVaults() {
457
- const spinner = createReplSafeSpinner('Loading vaults...').start();
458
- try {
459
- // Load active vault first
460
- const activeVault = await this.ctx.sdk.getActiveVault();
461
- if (activeVault) {
462
- this.ctx.addVault(activeVault);
463
- await this.ctx.setActiveVault(activeVault);
464
- this.eventBuffer.setupVaultListeners(activeVault);
465
- }
466
- // Load all vaults
467
- const vaultList = await this.ctx.sdk.listVaults();
468
- if (vaultList && vaultList.length > 0) {
469
- vaultList.forEach(vault => {
470
- if (!this.ctx.getVaultById(vault.id)) {
471
- this.ctx.addVault(vault);
472
- this.eventBuffer.setupVaultListeners(vault);
473
- }
474
- });
475
- // Set first vault as active if none set
476
- if (!this.ctx.getActiveVault() && this.ctx.getVaults().size > 0) {
477
- const firstVault = this.ctx.getVaults().values().next().value;
478
- await this.ctx.setActiveVault(firstVault);
479
- }
480
- spinner.succeed(`Loaded ${this.ctx.getVaults().size} vault(s)`);
481
- }
482
- else if (this.ctx.getVaults().size > 0) {
483
- spinner.succeed(`Loaded ${this.ctx.getVaults().size} vault(s)`);
484
- }
485
- else {
486
- spinner.succeed('No vaults found');
487
- }
488
- }
489
- catch (error) {
490
- if (this.ctx.getVaults().size > 0) {
491
- spinner.succeed(`Loaded ${this.ctx.getVaults().size} vault(s)`);
492
- }
493
- else {
494
- spinner.fail('Failed to load vaults');
495
- throw error;
496
- }
497
- }
498
- }
499
- getPrompt() {
500
- const vault = this.ctx.getActiveVault();
501
- if (!vault)
502
- return chalk.cyan('wallet> ');
503
- const isUnlocked = this.ctx.isVaultUnlocked(vault.id);
504
- const status = isUnlocked ? chalk.green('🔓') : chalk.yellow('🔒');
505
- return chalk.cyan(`wallet[${vault.name}]${status}> `);
506
- }
507
- displayVaultList() {
508
- const vaults = Array.from(this.ctx.getVaults().values());
509
- const activeVault = this.ctx.getActiveVault();
510
- if (vaults.length === 0) {
511
- console.log(chalk.yellow('No vaults found. Use "create" or "import <file>" to add a vault.\n'));
512
- return;
513
- }
514
- console.log(chalk.cyan('Loaded Vaults:\n'));
515
- vaults.forEach(vault => {
516
- const isActive = vault.id === activeVault?.id;
517
- const isUnlocked = this.ctx.isVaultUnlocked(vault.id);
518
- const activeMarker = isActive ? chalk.green(' (active)') : '';
519
- const lockIcon = isUnlocked ? chalk.green('🔓') : chalk.yellow('🔒');
520
- console.log(` ${lockIcon} ${vault.name}${activeMarker} - ${vault.type}`);
521
- });
522
- console.log();
523
- }
524
- }
525
- //# sourceMappingURL=session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/interactive/session.ts"],"names":[],"mappings":"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"}