@lanonasis/cli 3.6.3 → 3.6.5
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/dist/commands/api-keys.d.ts +1 -2
- package/dist/commands/api-keys.js +78 -73
- package/dist/commands/auth.js +167 -160
- package/dist/commands/completion.js +39 -31
- package/dist/commands/config.js +201 -162
- package/dist/commands/enhanced-memory.js +17 -11
- package/dist/commands/guide.js +88 -79
- package/dist/commands/init.js +20 -14
- package/dist/commands/mcp.js +173 -142
- package/dist/commands/memory.js +83 -77
- package/dist/commands/organization.js +21 -15
- package/dist/commands/topics.js +58 -52
- package/dist/core/achievements.js +26 -19
- package/dist/core/architecture.js +59 -42
- package/dist/core/dashboard.js +81 -71
- package/dist/core/error-handler.js +39 -30
- package/dist/core/power-mode.js +53 -46
- package/dist/core/progress.js +44 -35
- package/dist/core/welcome.js +64 -56
- package/dist/enhanced-cli.js +58 -49
- package/dist/index-simple.js +112 -74
- package/dist/index.js +68 -63
- package/dist/mcp/access-control.js +17 -13
- package/dist/mcp/client/enhanced-client.js +23 -16
- package/dist/mcp/enhanced-server.js +14 -10
- package/dist/mcp/logger.js +6 -2
- package/dist/mcp/memory-state.js +17 -13
- package/dist/mcp/schemas/tool-schemas.d.ts +28 -28
- package/dist/mcp/schemas/tool-schemas.js +126 -122
- package/dist/mcp/server/lanonasis-server.js +51 -44
- package/dist/mcp/transports/transport-manager.js +25 -18
- package/dist/mcp/vector-store.js +10 -6
- package/dist/mcp-server.js +21 -17
- package/dist/utils/api.js +30 -21
- package/dist/utils/config.js +61 -15
- package/dist/utils/formatting.js +14 -6
- package/dist/utils/mcp-client.js +132 -77
- package/package.json +17 -92
- package/dist/completions/bash-completion.sh +0 -88
- package/dist/completions/fish-completion.fish +0 -132
- package/dist/completions/zsh-completion.zsh +0 -196
package/dist/core/power-mode.js
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Power User Mode
|
|
3
4
|
* Streamlined interface for expert users with advanced features
|
|
4
5
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.PowerUserMode = void 0;
|
|
11
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
+
const readline_1 = __importDefault(require("readline"));
|
|
13
|
+
const progress_js_1 = require("./progress.js");
|
|
14
|
+
class PowerUserMode {
|
|
9
15
|
stateManager;
|
|
10
16
|
commandHistory = [];
|
|
11
17
|
historyIndex = -1;
|
|
@@ -14,7 +20,7 @@ export class PowerUserMode {
|
|
|
14
20
|
aliases = new Map();
|
|
15
21
|
constructor(stateManager) {
|
|
16
22
|
this.stateManager = stateManager;
|
|
17
|
-
this.smartSuggestions = new SmartSuggestions(stateManager.getUserContext());
|
|
23
|
+
this.smartSuggestions = new progress_js_1.SmartSuggestions(stateManager.getUserContext());
|
|
18
24
|
this.loadAliases();
|
|
19
25
|
}
|
|
20
26
|
/**
|
|
@@ -23,7 +29,7 @@ export class PowerUserMode {
|
|
|
23
29
|
async enter() {
|
|
24
30
|
console.clear();
|
|
25
31
|
this.showBanner();
|
|
26
|
-
this.rl =
|
|
32
|
+
this.rl = readline_1.default.createInterface({
|
|
27
33
|
input: process.stdin,
|
|
28
34
|
output: process.stdout,
|
|
29
35
|
prompt: this.getPrompt(),
|
|
@@ -41,15 +47,15 @@ export class PowerUserMode {
|
|
|
41
47
|
if (this.rl) {
|
|
42
48
|
this.rl.close();
|
|
43
49
|
}
|
|
44
|
-
console.log(
|
|
50
|
+
console.log(chalk_1.default.dim('\nExiting power mode...'));
|
|
45
51
|
}
|
|
46
52
|
/**
|
|
47
53
|
* Show power mode banner
|
|
48
54
|
*/
|
|
49
55
|
showBanner() {
|
|
50
|
-
console.log(
|
|
51
|
-
console.log(
|
|
52
|
-
console.log(
|
|
56
|
+
console.log(chalk_1.default.cyan.bold('◗ ONASIS POWER MODE'));
|
|
57
|
+
console.log(chalk_1.default.dim('━'.repeat(50)));
|
|
58
|
+
console.log(chalk_1.default.dim('Type commands directly. Tab for completion. ? for help.'));
|
|
53
59
|
console.log();
|
|
54
60
|
}
|
|
55
61
|
/**
|
|
@@ -58,7 +64,7 @@ export class PowerUserMode {
|
|
|
58
64
|
getPrompt() {
|
|
59
65
|
const context = this.stateManager.getCurrentNavigation();
|
|
60
66
|
const contextName = context ? context.name : 'memories';
|
|
61
|
-
return
|
|
67
|
+
return chalk_1.default.cyan('◗ ') + chalk_1.default.blue(`onasis:${contextName}> `);
|
|
62
68
|
}
|
|
63
69
|
/**
|
|
64
70
|
* Setup key bindings for enhanced navigation
|
|
@@ -73,7 +79,7 @@ export class PowerUserMode {
|
|
|
73
79
|
});
|
|
74
80
|
// Ctrl+C for graceful exit
|
|
75
81
|
this.rl.on('SIGINT', () => {
|
|
76
|
-
console.log(
|
|
82
|
+
console.log(chalk_1.default.yellow('\n\nUse "exit" to leave power mode'));
|
|
77
83
|
this.rl?.prompt();
|
|
78
84
|
});
|
|
79
85
|
// Ctrl+L for clear screen
|
|
@@ -181,7 +187,7 @@ export class PowerUserMode {
|
|
|
181
187
|
*/
|
|
182
188
|
async quickCreate(args) {
|
|
183
189
|
if (args.length === 0) {
|
|
184
|
-
console.log(
|
|
190
|
+
console.log(chalk_1.default.yellow('Usage: create [-t title] [-c content] [--tags tag1,tag2] [--type type] [--topic topic]'));
|
|
185
191
|
return;
|
|
186
192
|
}
|
|
187
193
|
const params = this.parseArgs(args);
|
|
@@ -191,23 +197,23 @@ export class PowerUserMode {
|
|
|
191
197
|
const tags = params.tags ? params.tags.split(',') : [];
|
|
192
198
|
const type = params.type || 'knowledge';
|
|
193
199
|
const topic = params.topic;
|
|
194
|
-
console.log(
|
|
195
|
-
console.log(
|
|
196
|
-
console.log(
|
|
200
|
+
console.log(chalk_1.default.green(`✓ Memory created (id: mem_${this.generateId()}) in 47ms`));
|
|
201
|
+
console.log(chalk_1.default.dim(` Title: ${title}`));
|
|
202
|
+
console.log(chalk_1.default.dim(` Type: ${type}`));
|
|
197
203
|
if (topic)
|
|
198
|
-
console.log(
|
|
204
|
+
console.log(chalk_1.default.dim(` Topic: ${topic}`));
|
|
199
205
|
if (tags.length)
|
|
200
|
-
console.log(
|
|
206
|
+
console.log(chalk_1.default.dim(` Tags: ${tags.join(', ')}`));
|
|
201
207
|
}
|
|
202
208
|
/**
|
|
203
209
|
* Quick search command
|
|
204
210
|
*/
|
|
205
211
|
async quickSearch(query) {
|
|
206
212
|
if (!query) {
|
|
207
|
-
console.log(
|
|
213
|
+
console.log(chalk_1.default.yellow('Usage: search <query> [--limit n] [--threshold 0.x]'));
|
|
208
214
|
return;
|
|
209
215
|
}
|
|
210
|
-
console.log(
|
|
216
|
+
console.log(chalk_1.default.dim(`Searching for "${query}"...`));
|
|
211
217
|
// Simulate search results
|
|
212
218
|
const results = [
|
|
213
219
|
{ id: 'mem_abc123', title: 'API Response Caching', score: 100 },
|
|
@@ -232,7 +238,7 @@ export class PowerUserMode {
|
|
|
232
238
|
const params = this.parseArgs(args);
|
|
233
239
|
const limit = params.limit || 10;
|
|
234
240
|
const sortBy = params.sort || 'created';
|
|
235
|
-
console.log(
|
|
241
|
+
console.log(chalk_1.default.dim(`Listing memories (limit: ${limit}, sort: ${sortBy})`));
|
|
236
242
|
// Simulate list
|
|
237
243
|
const items = [
|
|
238
244
|
'mem_abc123 API Documentation 2 hours ago',
|
|
@@ -246,29 +252,29 @@ export class PowerUserMode {
|
|
|
246
252
|
*/
|
|
247
253
|
async quickDelete(args) {
|
|
248
254
|
if (args.length === 0) {
|
|
249
|
-
console.log(
|
|
255
|
+
console.log(chalk_1.default.yellow('Usage: delete <id>'));
|
|
250
256
|
return;
|
|
251
257
|
}
|
|
252
258
|
const id = args[0];
|
|
253
|
-
console.log(
|
|
259
|
+
console.log(chalk_1.default.red(`✓ Memory ${id} deleted`));
|
|
254
260
|
}
|
|
255
261
|
/**
|
|
256
262
|
* Quick update command
|
|
257
263
|
*/
|
|
258
264
|
async quickUpdate(args) {
|
|
259
265
|
if (args.length === 0) {
|
|
260
|
-
console.log(
|
|
266
|
+
console.log(chalk_1.default.yellow('Usage: update <id> [--title new-title] [--add-tag tag] [--remove-tag tag]'));
|
|
261
267
|
return;
|
|
262
268
|
}
|
|
263
269
|
const id = args[0];
|
|
264
270
|
const params = this.parseArgs(args.slice(1));
|
|
265
|
-
console.log(
|
|
271
|
+
console.log(chalk_1.default.green(`✓ Memory ${id} updated`));
|
|
266
272
|
if (params.title)
|
|
267
|
-
console.log(
|
|
273
|
+
console.log(chalk_1.default.dim(` New title: ${params.title}`));
|
|
268
274
|
if (params['add-tag'])
|
|
269
|
-
console.log(
|
|
275
|
+
console.log(chalk_1.default.dim(` Added tag: ${params['add-tag']}`));
|
|
270
276
|
if (params['remove-tag'])
|
|
271
|
-
console.log(
|
|
277
|
+
console.log(chalk_1.default.dim(` Removed tag: ${params['remove-tag']}`));
|
|
272
278
|
}
|
|
273
279
|
/**
|
|
274
280
|
* Handle topic commands
|
|
@@ -280,10 +286,10 @@ export class PowerUserMode {
|
|
|
280
286
|
console.log('Topics: Architecture, API, Documentation, Projects');
|
|
281
287
|
break;
|
|
282
288
|
case 'create':
|
|
283
|
-
console.log(
|
|
289
|
+
console.log(chalk_1.default.green(`✓ Topic "${args[1]}" created`));
|
|
284
290
|
break;
|
|
285
291
|
default:
|
|
286
|
-
console.log(
|
|
292
|
+
console.log(chalk_1.default.yellow('Usage: topic [list|create|delete] [name]'));
|
|
287
293
|
}
|
|
288
294
|
}
|
|
289
295
|
/**
|
|
@@ -299,14 +305,14 @@ export class PowerUserMode {
|
|
|
299
305
|
console.log('Rate Limits: 1000/hour (432 used)');
|
|
300
306
|
break;
|
|
301
307
|
default:
|
|
302
|
-
console.log(
|
|
308
|
+
console.log(chalk_1.default.yellow('Usage: api [keys|limits|stats]'));
|
|
303
309
|
}
|
|
304
310
|
}
|
|
305
311
|
/**
|
|
306
312
|
* Handle pipe operations
|
|
307
313
|
*/
|
|
308
314
|
async handlePipe(_args) {
|
|
309
|
-
console.log(
|
|
315
|
+
console.log(chalk_1.default.cyan('Pipe operations coming soon...'));
|
|
310
316
|
}
|
|
311
317
|
/**
|
|
312
318
|
* Handle format changes
|
|
@@ -316,10 +322,10 @@ export class PowerUserMode {
|
|
|
316
322
|
if (['table', 'json', 'yaml', 'minimal'].includes(format)) {
|
|
317
323
|
const fmt = format;
|
|
318
324
|
this.stateManager.updatePreference('outputFormat', fmt);
|
|
319
|
-
console.log(
|
|
325
|
+
console.log(chalk_1.default.green(`✓ Output format set to ${format}`));
|
|
320
326
|
}
|
|
321
327
|
else {
|
|
322
|
-
console.log(
|
|
328
|
+
console.log(chalk_1.default.yellow('Usage: format [table|json|yaml|minimal]'));
|
|
323
329
|
}
|
|
324
330
|
}
|
|
325
331
|
/**
|
|
@@ -328,19 +334,19 @@ export class PowerUserMode {
|
|
|
328
334
|
async executeSystemCommand(command) {
|
|
329
335
|
// Check if it looks like a memory content
|
|
330
336
|
if (!command.startsWith('onasis') && !command.includes('|') && command.length > 10) {
|
|
331
|
-
console.log(
|
|
337
|
+
console.log(chalk_1.default.dim('Interpreting as memory content...'));
|
|
332
338
|
await this.quickCreate(['-c', command]);
|
|
333
339
|
}
|
|
334
340
|
else {
|
|
335
|
-
console.log(
|
|
336
|
-
console.log(
|
|
341
|
+
console.log(chalk_1.default.red(`Command not recognized: ${command}`));
|
|
342
|
+
console.log(chalk_1.default.dim('Type "?" for help'));
|
|
337
343
|
}
|
|
338
344
|
}
|
|
339
345
|
/**
|
|
340
346
|
* Show help
|
|
341
347
|
*/
|
|
342
348
|
showHelp() {
|
|
343
|
-
console.log(
|
|
349
|
+
console.log(chalk_1.default.bold('\n📚 Power Mode Commands\n'));
|
|
344
350
|
const commands = [
|
|
345
351
|
['create, c', 'Create memory quickly'],
|
|
346
352
|
['search, s, /', 'Search memories'],
|
|
@@ -356,9 +362,9 @@ export class PowerUserMode {
|
|
|
356
362
|
['exit, quit', 'Exit power mode']
|
|
357
363
|
];
|
|
358
364
|
commands.forEach(([cmd, desc]) => {
|
|
359
|
-
console.log(` ${
|
|
365
|
+
console.log(` ${chalk_1.default.cyan(cmd.padEnd(15))} ${desc}`);
|
|
360
366
|
});
|
|
361
|
-
console.log(
|
|
367
|
+
console.log(chalk_1.default.bold('\n⚡ Power Features\n'));
|
|
362
368
|
console.log(' • Tab completion for commands and arguments');
|
|
363
369
|
console.log(' • Pipe operations: search cache | format table');
|
|
364
370
|
console.log(' • Aliases: alias sc="search cache"');
|
|
@@ -370,9 +376,9 @@ export class PowerUserMode {
|
|
|
370
376
|
* Show command history
|
|
371
377
|
*/
|
|
372
378
|
showHistory() {
|
|
373
|
-
console.log(
|
|
379
|
+
console.log(chalk_1.default.bold('\n📜 Command History\n'));
|
|
374
380
|
this.commandHistory.slice(-10).forEach((cmd, i) => {
|
|
375
|
-
console.log(` ${
|
|
381
|
+
console.log(` ${chalk_1.default.dim(String(i + 1).padStart(3))} ${cmd}`);
|
|
376
382
|
});
|
|
377
383
|
}
|
|
378
384
|
/**
|
|
@@ -381,9 +387,9 @@ export class PowerUserMode {
|
|
|
381
387
|
handleAlias(args) {
|
|
382
388
|
if (args.length === 0) {
|
|
383
389
|
// Show all aliases
|
|
384
|
-
console.log(
|
|
390
|
+
console.log(chalk_1.default.bold('\n🔤 Aliases\n'));
|
|
385
391
|
this.aliases.forEach((value, key) => {
|
|
386
|
-
console.log(` ${
|
|
392
|
+
console.log(` ${chalk_1.default.cyan(key)} = "${value}"`);
|
|
387
393
|
});
|
|
388
394
|
return;
|
|
389
395
|
}
|
|
@@ -392,11 +398,11 @@ export class PowerUserMode {
|
|
|
392
398
|
if (match) {
|
|
393
399
|
const [, name, command] = match;
|
|
394
400
|
this.aliases.set(name, command);
|
|
395
|
-
console.log(
|
|
401
|
+
console.log(chalk_1.default.green(`✓ Alias created: ${name} → ${command}`));
|
|
396
402
|
this.saveAliases();
|
|
397
403
|
}
|
|
398
404
|
else {
|
|
399
|
-
console.log(
|
|
405
|
+
console.log(chalk_1.default.yellow('Usage: alias name="command"'));
|
|
400
406
|
}
|
|
401
407
|
}
|
|
402
408
|
/**
|
|
@@ -460,3 +466,4 @@ export class PowerUserMode {
|
|
|
460
466
|
// Would save to config file
|
|
461
467
|
}
|
|
462
468
|
}
|
|
469
|
+
exports.PowerUserMode = PowerUserMode;
|
package/dist/core/progress.js
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Progress Indicators and Feedback System
|
|
3
4
|
* Provides real-time visual feedback for long-running operations
|
|
4
5
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.SmartSuggestions = exports.MultiStepProgress = exports.ProgressIndicator = void 0;
|
|
11
|
+
const ora_1 = __importDefault(require("ora"));
|
|
12
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
13
|
+
const cli_progress_1 = __importDefault(require("cli-progress"));
|
|
14
|
+
const perf_hooks_1 = require("perf_hooks");
|
|
15
|
+
class ProgressIndicator {
|
|
10
16
|
spinner;
|
|
11
17
|
progressBar;
|
|
12
18
|
startTime;
|
|
@@ -14,8 +20,8 @@ export class ProgressIndicator {
|
|
|
14
20
|
* Show a spinner for indeterminate progress
|
|
15
21
|
*/
|
|
16
22
|
startSpinner(message, options) {
|
|
17
|
-
this.startTime = performance.now();
|
|
18
|
-
this.spinner =
|
|
23
|
+
this.startTime = perf_hooks_1.performance.now();
|
|
24
|
+
this.spinner = (0, ora_1.default)({
|
|
19
25
|
text: message,
|
|
20
26
|
spinner: (options?.spinner || 'dots12'),
|
|
21
27
|
color: (options?.color || 'cyan'),
|
|
@@ -38,7 +44,7 @@ export class ProgressIndicator {
|
|
|
38
44
|
if (this.spinner) {
|
|
39
45
|
const elapsed = this.getElapsedTime();
|
|
40
46
|
const finalMessage = message || this.spinner.text;
|
|
41
|
-
this.spinner.succeed(`${finalMessage} ${
|
|
47
|
+
this.spinner.succeed(`${finalMessage} ${chalk_1.default.dim(`(${elapsed}ms)`)}`);
|
|
42
48
|
this.spinner = undefined;
|
|
43
49
|
}
|
|
44
50
|
}
|
|
@@ -49,7 +55,7 @@ export class ProgressIndicator {
|
|
|
49
55
|
if (this.spinner) {
|
|
50
56
|
const elapsed = this.getElapsedTime();
|
|
51
57
|
const finalMessage = message || this.spinner.text;
|
|
52
|
-
this.spinner.fail(`${finalMessage} ${
|
|
58
|
+
this.spinner.fail(`${finalMessage} ${chalk_1.default.dim(`(${elapsed}ms)`)}`);
|
|
53
59
|
this.spinner = undefined;
|
|
54
60
|
}
|
|
55
61
|
}
|
|
@@ -60,7 +66,7 @@ export class ProgressIndicator {
|
|
|
60
66
|
if (this.spinner) {
|
|
61
67
|
const elapsed = this.getElapsedTime();
|
|
62
68
|
const finalMessage = message || this.spinner.text;
|
|
63
|
-
this.spinner.warn(`${finalMessage} ${
|
|
69
|
+
this.spinner.warn(`${finalMessage} ${chalk_1.default.dim(`(${elapsed}ms)`)}`);
|
|
64
70
|
this.spinner = undefined;
|
|
65
71
|
}
|
|
66
72
|
}
|
|
@@ -77,17 +83,17 @@ export class ProgressIndicator {
|
|
|
77
83
|
* Show a progress bar for determinate progress
|
|
78
84
|
*/
|
|
79
85
|
startProgressBar(total, options) {
|
|
80
|
-
this.startTime = performance.now();
|
|
86
|
+
this.startTime = perf_hooks_1.performance.now();
|
|
81
87
|
const format = options?.format ||
|
|
82
|
-
'{title} |' +
|
|
83
|
-
this.progressBar = new
|
|
88
|
+
'{title} |' + chalk_1.default.cyan('{bar}') + '| {percentage}% | {value}/{total} | {duration}s | {eta}s remaining';
|
|
89
|
+
this.progressBar = new cli_progress_1.default.SingleBar({
|
|
84
90
|
format,
|
|
85
91
|
barCompleteChar: '█',
|
|
86
92
|
barIncompleteChar: '░',
|
|
87
93
|
hideCursor: true,
|
|
88
94
|
clearOnComplete: options?.clearOnComplete || false,
|
|
89
95
|
stopOnComplete: true
|
|
90
|
-
},
|
|
96
|
+
}, cli_progress_1.default.Presets.shades_classic);
|
|
91
97
|
this.progressBar.start(total, 0, {
|
|
92
98
|
title: options?.title || 'Progress'
|
|
93
99
|
});
|
|
@@ -161,14 +167,15 @@ export class ProgressIndicator {
|
|
|
161
167
|
getElapsedTime() {
|
|
162
168
|
if (!this.startTime)
|
|
163
169
|
return '0';
|
|
164
|
-
const elapsed = Math.round(performance.now() - this.startTime);
|
|
170
|
+
const elapsed = Math.round(perf_hooks_1.performance.now() - this.startTime);
|
|
165
171
|
return elapsed.toString();
|
|
166
172
|
}
|
|
167
173
|
}
|
|
174
|
+
exports.ProgressIndicator = ProgressIndicator;
|
|
168
175
|
/**
|
|
169
176
|
* Multi-step progress indicator
|
|
170
177
|
*/
|
|
171
|
-
|
|
178
|
+
class MultiStepProgress {
|
|
172
179
|
steps;
|
|
173
180
|
currentStep = 0;
|
|
174
181
|
progressIndicator;
|
|
@@ -209,13 +216,13 @@ export class MultiStepProgress {
|
|
|
209
216
|
console.clear();
|
|
210
217
|
const progressBar = this.renderProgressBar();
|
|
211
218
|
const stepList = this.renderStepList();
|
|
212
|
-
console.log(
|
|
219
|
+
console.log(chalk_1.default.bold('Progress\n'));
|
|
213
220
|
console.log(progressBar);
|
|
214
221
|
console.log();
|
|
215
222
|
console.log(stepList);
|
|
216
223
|
if (this.currentStep < this.steps.length) {
|
|
217
224
|
console.log();
|
|
218
|
-
console.log(
|
|
225
|
+
console.log(chalk_1.default.cyan(`→ ${this.steps[this.currentStep].name}...`));
|
|
219
226
|
}
|
|
220
227
|
}
|
|
221
228
|
/**
|
|
@@ -228,7 +235,7 @@ export class MultiStepProgress {
|
|
|
228
235
|
const barLength = 40;
|
|
229
236
|
const filled = Math.round((completed / total) * barLength);
|
|
230
237
|
const bar = '█'.repeat(filled) + '░'.repeat(barLength - filled);
|
|
231
|
-
return `[${
|
|
238
|
+
return `[${chalk_1.default.cyan(bar)}] ${percentage}%`;
|
|
232
239
|
}
|
|
233
240
|
/**
|
|
234
241
|
* Render step list
|
|
@@ -239,36 +246,37 @@ export class MultiStepProgress {
|
|
|
239
246
|
let color;
|
|
240
247
|
switch (step.status) {
|
|
241
248
|
case 'completed':
|
|
242
|
-
icon =
|
|
243
|
-
color =
|
|
249
|
+
icon = chalk_1.default.green('✓');
|
|
250
|
+
color = chalk_1.default.green;
|
|
244
251
|
break;
|
|
245
252
|
case 'failed':
|
|
246
|
-
icon =
|
|
247
|
-
color =
|
|
253
|
+
icon = chalk_1.default.red('✗');
|
|
254
|
+
color = chalk_1.default.red;
|
|
248
255
|
break;
|
|
249
256
|
case 'pending':
|
|
250
|
-
icon =
|
|
251
|
-
color =
|
|
257
|
+
icon = chalk_1.default.gray('○');
|
|
258
|
+
color = chalk_1.default.gray;
|
|
252
259
|
break;
|
|
253
260
|
case 'active':
|
|
254
|
-
icon =
|
|
255
|
-
color =
|
|
261
|
+
icon = chalk_1.default.blue('●');
|
|
262
|
+
color = chalk_1.default.blue;
|
|
256
263
|
break;
|
|
257
264
|
default:
|
|
258
|
-
icon =
|
|
259
|
-
color =
|
|
265
|
+
icon = chalk_1.default.gray('○');
|
|
266
|
+
color = chalk_1.default.gray;
|
|
260
267
|
}
|
|
261
268
|
const stepNumber = `[${index + 1}]`;
|
|
262
269
|
const name = color(step.name);
|
|
263
|
-
const description = step.description ?
|
|
270
|
+
const description = step.description ? chalk_1.default.dim(` - ${step.description}`) : '';
|
|
264
271
|
return `${icon} ${stepNumber} ${name}${description}`;
|
|
265
272
|
}).join('\n');
|
|
266
273
|
}
|
|
267
274
|
}
|
|
275
|
+
exports.MultiStepProgress = MultiStepProgress;
|
|
268
276
|
/**
|
|
269
277
|
* Smart suggestions system
|
|
270
278
|
*/
|
|
271
|
-
|
|
279
|
+
class SmartSuggestions {
|
|
272
280
|
userContext;
|
|
273
281
|
commandHistory = [];
|
|
274
282
|
constructor(userContext) {
|
|
@@ -417,12 +425,13 @@ export class SmartSuggestions {
|
|
|
417
425
|
displaySuggestions(suggestions) {
|
|
418
426
|
if (suggestions.length === 0)
|
|
419
427
|
return;
|
|
420
|
-
console.log(
|
|
428
|
+
console.log(chalk_1.default.dim('\n💡 Suggestions:'));
|
|
421
429
|
suggestions.forEach((suggestion, index) => {
|
|
422
|
-
const number =
|
|
423
|
-
const text =
|
|
424
|
-
const desc =
|
|
430
|
+
const number = chalk_1.default.cyan(`${index + 1}.`);
|
|
431
|
+
const text = chalk_1.default.bold(suggestion.text);
|
|
432
|
+
const desc = chalk_1.default.dim(suggestion.description);
|
|
425
433
|
console.log(` ${number} ${text} - ${desc}`);
|
|
426
434
|
});
|
|
427
435
|
}
|
|
428
436
|
}
|
|
437
|
+
exports.SmartSuggestions = SmartSuggestions;
|