@vultisig/cli 0.1.0-alpha.1

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 +391 -0
  2. package/dist/adapters/cli-context.js +25 -0
  3. package/dist/adapters/cli-context.js.map +1 -0
  4. package/dist/adapters/cli-runner.js +47 -0
  5. package/dist/adapters/cli-runner.js.map +1 -0
  6. package/dist/adapters/index.js +6 -0
  7. package/dist/adapters/index.js.map +1 -0
  8. package/dist/commands/balance.js +65 -0
  9. package/dist/commands/balance.js.map +1 -0
  10. package/dist/commands/chains.js +46 -0
  11. package/dist/commands/chains.js.map +1 -0
  12. package/dist/commands/index.js +12 -0
  13. package/dist/commands/index.js.map +1 -0
  14. package/dist/commands/settings.js +151 -0
  15. package/dist/commands/settings.js.map +1 -0
  16. package/dist/commands/swap.js +180 -0
  17. package/dist/commands/swap.js.map +1 -0
  18. package/dist/commands/tokens.js +116 -0
  19. package/dist/commands/tokens.js.map +1 -0
  20. package/dist/commands/transaction.js +99 -0
  21. package/dist/commands/transaction.js.map +1 -0
  22. package/dist/commands/vault-management.js +360 -0
  23. package/dist/commands/vault-management.js.map +1 -0
  24. package/dist/core/command-context.js +81 -0
  25. package/dist/core/command-context.js.map +1 -0
  26. package/dist/core/index.js +7 -0
  27. package/dist/core/index.js.map +1 -0
  28. package/dist/core/password-manager.js +92 -0
  29. package/dist/core/password-manager.js.map +1 -0
  30. package/dist/core/types.js +2 -0
  31. package/dist/core/types.js.map +1 -0
  32. package/dist/index.js +440 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/interactive/completer.js +170 -0
  35. package/dist/interactive/completer.js.map +1 -0
  36. package/dist/interactive/event-buffer.js +186 -0
  37. package/dist/interactive/event-buffer.js.map +1 -0
  38. package/dist/interactive/index.js +9 -0
  39. package/dist/interactive/index.js.map +1 -0
  40. package/dist/interactive/session.js +525 -0
  41. package/dist/interactive/session.js.map +1 -0
  42. package/dist/interactive/shell-commands.js +167 -0
  43. package/dist/interactive/shell-commands.js.map +1 -0
  44. package/dist/interactive/shell-context.js +112 -0
  45. package/dist/interactive/shell-context.js.map +1 -0
  46. package/dist/lib/completion.js +375 -0
  47. package/dist/lib/completion.js.map +1 -0
  48. package/dist/lib/config.js +172 -0
  49. package/dist/lib/config.js.map +1 -0
  50. package/dist/lib/errors.js +163 -0
  51. package/dist/lib/errors.js.map +1 -0
  52. package/dist/lib/index.js +9 -0
  53. package/dist/lib/index.js.map +1 -0
  54. package/dist/lib/output.js +155 -0
  55. package/dist/lib/output.js.map +1 -0
  56. package/dist/lib/version.js +210 -0
  57. package/dist/lib/version.js.map +1 -0
  58. package/dist/ui.js +286 -0
  59. package/dist/ui.js.map +1 -0
  60. package/package.json +76 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/lib/completion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Configuration Management for Vultisig CLI
3
+ *
4
+ * Handles CLI configuration files and environment variables
5
+ */
6
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
7
+ import { homedir } from 'os';
8
+ import { join } from 'path';
9
+ /**
10
+ * Default configuration
11
+ */
12
+ const DEFAULT_CONFIG = {
13
+ version: 1,
14
+ initialized: false,
15
+ preferences: {
16
+ currency: 'usd',
17
+ autoUpdate: true,
18
+ telemetry: false,
19
+ colorOutput: true,
20
+ },
21
+ };
22
+ /**
23
+ * Get the configuration directory path
24
+ */
25
+ export function getConfigDir() {
26
+ return process.env.VULTISIG_CONFIG_DIR ?? join(homedir(), '.vultisig');
27
+ }
28
+ /**
29
+ * Get the configuration file path
30
+ */
31
+ export function getConfigPath() {
32
+ return join(getConfigDir(), 'config.json');
33
+ }
34
+ /**
35
+ * Ensure the config directory exists
36
+ */
37
+ export function ensureConfigDir() {
38
+ const configDir = getConfigDir();
39
+ if (!existsSync(configDir)) {
40
+ mkdirSync(configDir, { recursive: true });
41
+ }
42
+ }
43
+ /**
44
+ * Read the CLI configuration
45
+ */
46
+ export function readConfig() {
47
+ try {
48
+ const configPath = getConfigPath();
49
+ if (!existsSync(configPath)) {
50
+ return { ...DEFAULT_CONFIG };
51
+ }
52
+ const data = readFileSync(configPath, 'utf-8');
53
+ const parsed = JSON.parse(data);
54
+ // Merge with defaults to ensure all fields exist
55
+ return {
56
+ ...DEFAULT_CONFIG,
57
+ ...parsed,
58
+ preferences: {
59
+ ...DEFAULT_CONFIG.preferences,
60
+ ...parsed.preferences,
61
+ },
62
+ };
63
+ }
64
+ catch {
65
+ return { ...DEFAULT_CONFIG };
66
+ }
67
+ }
68
+ /**
69
+ * Write the CLI configuration
70
+ */
71
+ export function writeConfig(config) {
72
+ ensureConfigDir();
73
+ const configPath = getConfigPath();
74
+ writeFileSync(configPath, JSON.stringify(config, null, 2));
75
+ }
76
+ /**
77
+ * Update specific config values
78
+ */
79
+ export function updateConfig(updates) {
80
+ const current = readConfig();
81
+ const updated = {
82
+ ...current,
83
+ ...updates,
84
+ preferences: {
85
+ ...current.preferences,
86
+ ...(updates.preferences ?? {}),
87
+ },
88
+ };
89
+ writeConfig(updated);
90
+ return updated;
91
+ }
92
+ /**
93
+ * Check if this is the first run
94
+ */
95
+ export function isFirstRun() {
96
+ const config = readConfig();
97
+ return !config.initialized;
98
+ }
99
+ /**
100
+ * Mark as initialized
101
+ */
102
+ export function markInitialized() {
103
+ updateConfig({
104
+ initialized: true,
105
+ initializedAt: new Date().toISOString(),
106
+ });
107
+ }
108
+ /**
109
+ * Get a preference value
110
+ */
111
+ export function getPreference(key) {
112
+ const config = readConfig();
113
+ return config.preferences[key];
114
+ }
115
+ /**
116
+ * Set a preference value
117
+ */
118
+ export function setPreference(key, value) {
119
+ const config = readConfig();
120
+ config.preferences[key] = value;
121
+ writeConfig(config);
122
+ }
123
+ /**
124
+ * Environment variable helpers
125
+ */
126
+ export const EnvVars = {
127
+ /**
128
+ * Check if debug mode is enabled
129
+ */
130
+ isDebug() {
131
+ return process.env.VULTISIG_DEBUG === '1';
132
+ },
133
+ /**
134
+ * Check if silent mode is enabled via environment
135
+ */
136
+ isSilent() {
137
+ return process.env.VULTISIG_SILENT === '1';
138
+ },
139
+ /**
140
+ * Check if color output is disabled
141
+ */
142
+ isNoColor() {
143
+ return process.env.VULTISIG_NO_COLOR === '1' || process.env.NO_COLOR === '1';
144
+ },
145
+ /**
146
+ * Check if update checking is disabled
147
+ */
148
+ isNoUpdateCheck() {
149
+ return process.env.VULTISIG_NO_UPDATE_CHECK === '1';
150
+ },
151
+ /**
152
+ * Get custom config directory
153
+ */
154
+ getConfigDir() {
155
+ return process.env.VULTISIG_CONFIG_DIR;
156
+ },
157
+ };
158
+ /**
159
+ * Get effective config value (env vars override config file)
160
+ */
161
+ export function getEffectiveConfig() {
162
+ const config = readConfig();
163
+ // Apply environment variable overrides
164
+ if (EnvVars.isNoColor()) {
165
+ config.preferences.colorOutput = false;
166
+ }
167
+ if (EnvVars.isNoUpdateCheck()) {
168
+ config.preferences.autoUpdate = false;
169
+ }
170
+ return config;
171
+ }
172
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Structured Error Handling for Vultisig CLI
3
+ *
4
+ * Provides consistent exit codes and user-friendly error messages
5
+ */
6
+ import chalk from 'chalk';
7
+ /**
8
+ * Exit codes for the CLI
9
+ */
10
+ export var ExitCode;
11
+ (function (ExitCode) {
12
+ ExitCode[ExitCode["SUCCESS"] = 0] = "SUCCESS";
13
+ ExitCode[ExitCode["GENERAL_ERROR"] = 1] = "GENERAL_ERROR";
14
+ ExitCode[ExitCode["INVALID_USAGE"] = 2] = "INVALID_USAGE";
15
+ ExitCode[ExitCode["CONFIG_ERROR"] = 3] = "CONFIG_ERROR";
16
+ ExitCode[ExitCode["AUTH_ERROR"] = 4] = "AUTH_ERROR";
17
+ ExitCode[ExitCode["NETWORK_ERROR"] = 5] = "NETWORK_ERROR";
18
+ ExitCode[ExitCode["VAULT_ERROR"] = 6] = "VAULT_ERROR";
19
+ ExitCode[ExitCode["TRANSACTION_ERROR"] = 7] = "TRANSACTION_ERROR";
20
+ })(ExitCode || (ExitCode = {}));
21
+ /**
22
+ * Error names mapped to exit codes
23
+ */
24
+ const ERROR_CODE_MAP = {
25
+ INVALID_USAGE: ExitCode.INVALID_USAGE,
26
+ CONFIG_ERROR: ExitCode.CONFIG_ERROR,
27
+ AUTH_ERROR: ExitCode.AUTH_ERROR,
28
+ NETWORK_ERROR: ExitCode.NETWORK_ERROR,
29
+ VAULT_ERROR: ExitCode.VAULT_ERROR,
30
+ TRANSACTION_ERROR: ExitCode.TRANSACTION_ERROR,
31
+ };
32
+ /**
33
+ * CLI Error with structured information
34
+ */
35
+ export class CLIError extends Error {
36
+ code;
37
+ suggestions;
38
+ debugInfo;
39
+ constructor(message, options = {}) {
40
+ super(message);
41
+ this.name = 'CLIError';
42
+ this.code = options.code ?? ExitCode.GENERAL_ERROR;
43
+ this.suggestions = options.suggestions ?? [];
44
+ this.debugInfo = options.debugInfo;
45
+ if (options.cause) {
46
+ this.cause = options.cause;
47
+ }
48
+ }
49
+ /**
50
+ * Format error for display
51
+ */
52
+ format(debug = false) {
53
+ const lines = [];
54
+ lines.push(chalk.red(`Error: ${this.message}`));
55
+ lines.push('');
56
+ if (this.suggestions.length > 0) {
57
+ lines.push(' Suggestions:');
58
+ for (const suggestion of this.suggestions) {
59
+ lines.push(chalk.yellow(` - ${suggestion}`));
60
+ }
61
+ lines.push('');
62
+ }
63
+ if (debug && this.cause instanceof Error) {
64
+ lines.push(chalk.gray(' Stack trace:'));
65
+ lines.push(chalk.gray(` ${this.cause.stack?.replace(/\n/g, '\n ')}`));
66
+ lines.push('');
67
+ }
68
+ const codeName = Object.entries(ERROR_CODE_MAP).find(([, v]) => v === this.code)?.[0] ?? 'GENERAL_ERROR';
69
+ lines.push(chalk.gray(` Debug info: ${codeName} (code: ${this.code})`));
70
+ return lines.join('\n');
71
+ }
72
+ }
73
+ /**
74
+ * Error factory functions for common error types
75
+ */
76
+ export const Errors = {
77
+ invalidUsage(message, suggestions) {
78
+ return new CLIError(message, {
79
+ code: ExitCode.INVALID_USAGE,
80
+ suggestions: suggestions ?? ['Run "vultisig --help" for usage information'],
81
+ });
82
+ },
83
+ configError(message, suggestions) {
84
+ return new CLIError(message, {
85
+ code: ExitCode.CONFIG_ERROR,
86
+ suggestions: suggestions ?? ['Check your configuration in ~/.vultisig/config.json'],
87
+ });
88
+ },
89
+ authError(message, suggestions) {
90
+ return new CLIError(message, {
91
+ code: ExitCode.AUTH_ERROR,
92
+ suggestions: suggestions ?? ['Double-check your password', 'Use "vultisig vaults" to verify the vault ID'],
93
+ });
94
+ },
95
+ networkError(message, cause) {
96
+ return new CLIError(message, {
97
+ code: ExitCode.NETWORK_ERROR,
98
+ suggestions: [
99
+ 'Check your internet connection',
100
+ 'Try again in a few moments',
101
+ 'Run "vultisig server" to check connectivity',
102
+ ],
103
+ cause,
104
+ });
105
+ },
106
+ vaultError(message, suggestions) {
107
+ return new CLIError(message, {
108
+ code: ExitCode.VAULT_ERROR,
109
+ suggestions: suggestions ?? [
110
+ 'Use "vultisig vaults" to list available vaults',
111
+ 'Create a vault with "vultisig create"',
112
+ ],
113
+ });
114
+ },
115
+ transactionError(message, cause) {
116
+ return new CLIError(message, {
117
+ code: ExitCode.TRANSACTION_ERROR,
118
+ suggestions: [
119
+ 'Check your balance with "vultisig balance"',
120
+ 'Verify the recipient address',
121
+ 'Ensure you have enough for gas fees',
122
+ ],
123
+ cause,
124
+ });
125
+ },
126
+ };
127
+ /**
128
+ * Check if an error is a CLIError
129
+ */
130
+ export function isCLIError(error) {
131
+ return error instanceof CLIError;
132
+ }
133
+ /**
134
+ * Get exit code from an error
135
+ */
136
+ export function getExitCode(error) {
137
+ if (isCLIError(error)) {
138
+ return error.code;
139
+ }
140
+ if (error instanceof Error && 'exitCode' in error) {
141
+ return error.exitCode;
142
+ }
143
+ return ExitCode.GENERAL_ERROR;
144
+ }
145
+ /**
146
+ * Format any error for display
147
+ */
148
+ export function formatError(error, debug = false) {
149
+ if (isCLIError(error)) {
150
+ return error.format(debug);
151
+ }
152
+ if (error instanceof Error) {
153
+ const lines = [chalk.red(`Error: ${error.message}`)];
154
+ if (debug && error.stack) {
155
+ lines.push('');
156
+ lines.push(chalk.gray(' Stack trace:'));
157
+ lines.push(chalk.gray(` ${error.stack.replace(/\n/g, '\n ')}`));
158
+ }
159
+ return lines.join('\n');
160
+ }
161
+ return chalk.red(`Error: ${String(error)}`);
162
+ }
163
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Production CLI Utilities
3
+ */
4
+ export * from './errors';
5
+ export * from './version';
6
+ export * from './config';
7
+ export * from './completion';
8
+ export * from './output';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Output Service - Centralized console output with silent mode support
3
+ *
4
+ * In silent mode, only results and errors are shown.
5
+ * Informational messages, spinners, and success/warn messages are suppressed.
6
+ */
7
+ import chalk from 'chalk';
8
+ import ora from 'ora';
9
+ // ============================================================================
10
+ // State
11
+ // ============================================================================
12
+ let silentMode = false;
13
+ let outputFormat = 'table';
14
+ // ============================================================================
15
+ // Configuration
16
+ // ============================================================================
17
+ export function setSilentMode(silent) {
18
+ silentMode = silent;
19
+ }
20
+ export function isSilent() {
21
+ return silentMode;
22
+ }
23
+ /**
24
+ * Initialize output mode from CLI flags and environment variables
25
+ */
26
+ export function initOutputMode(options) {
27
+ outputFormat = options.output ?? 'table';
28
+ silentMode = options.silent ?? process.env.VULTISIG_SILENT === '1';
29
+ // JSON mode implies silent (no spinners, colors)
30
+ if (outputFormat === 'json') {
31
+ silentMode = true;
32
+ }
33
+ }
34
+ /**
35
+ * Check if output format is JSON
36
+ */
37
+ export function isJsonOutput() {
38
+ return outputFormat === 'json';
39
+ }
40
+ /**
41
+ * Get current output format
42
+ */
43
+ export function getOutputFormat() {
44
+ return outputFormat;
45
+ }
46
+ /**
47
+ * JSON replacer that converts BigInt to string
48
+ */
49
+ function bigIntReplacer(_key, value) {
50
+ return typeof value === 'bigint' ? value.toString() : value;
51
+ }
52
+ /**
53
+ * Output structured data as JSON (handles BigInt serialization)
54
+ */
55
+ export function outputJson(data) {
56
+ console.log(JSON.stringify({ success: true, data }, bigIntReplacer, 2));
57
+ }
58
+ /**
59
+ * Output JSON error (for withExit handler)
60
+ */
61
+ export function outputJsonError(message, code) {
62
+ console.log(JSON.stringify({ success: false, error: { message, code } }, bigIntReplacer, 2));
63
+ }
64
+ // ============================================================================
65
+ // Core Output Functions
66
+ // ============================================================================
67
+ /**
68
+ * Print informational message - suppressed in silent mode
69
+ */
70
+ export function info(message) {
71
+ if (!silentMode) {
72
+ console.log(chalk.blue(message));
73
+ }
74
+ }
75
+ /**
76
+ * Print success message - suppressed in silent mode
77
+ */
78
+ export function success(message) {
79
+ if (!silentMode) {
80
+ console.log(chalk.green(`\n${message}`));
81
+ }
82
+ }
83
+ /**
84
+ * Print warning message - suppressed in silent mode
85
+ */
86
+ export function warn(message) {
87
+ if (!silentMode) {
88
+ console.log(chalk.yellow(message));
89
+ }
90
+ }
91
+ /**
92
+ * Print error message - always shown
93
+ */
94
+ export function error(message) {
95
+ console.error(chalk.red(`\n${message}`));
96
+ }
97
+ /**
98
+ * Print result data - always shown (this is the command output)
99
+ */
100
+ export function printResult(message) {
101
+ console.log(message);
102
+ }
103
+ /**
104
+ * Print table data - always shown (command output)
105
+ */
106
+ export function printTable(data) {
107
+ console.table(data);
108
+ }
109
+ /**
110
+ * Print error to stderr - always shown
111
+ */
112
+ export function printError(message) {
113
+ console.error(chalk.red(message));
114
+ }
115
+ /**
116
+ * No-op spinner for silent mode
117
+ */
118
+ function createNoopSpinner(text) {
119
+ const noopSpinner = {
120
+ text,
121
+ start() {
122
+ return this;
123
+ },
124
+ stop() {
125
+ return this;
126
+ },
127
+ succeed() {
128
+ return this;
129
+ },
130
+ fail(text) {
131
+ // Errors are always shown
132
+ if (text)
133
+ printError(text);
134
+ return this;
135
+ },
136
+ warn() {
137
+ return this;
138
+ },
139
+ info() {
140
+ return this;
141
+ },
142
+ };
143
+ return noopSpinner;
144
+ }
145
+ /**
146
+ * Create a spinner that respects silent mode
147
+ * In silent mode, returns a no-op spinner (except fail() still prints)
148
+ */
149
+ export function createSpinner(text) {
150
+ if (silentMode) {
151
+ return createNoopSpinner(text);
152
+ }
153
+ return ora(text).start();
154
+ }
155
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}