@wundr.io/cli 1.0.11 → 1.0.13

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 (180) hide show
  1. package/bin/wundr.js +8 -4
  2. package/dist/ai/ai-service.d.ts.map +1 -1
  3. package/dist/ai/ai-service.js.map +1 -1
  4. package/dist/ai/claude-client.js.map +1 -1
  5. package/dist/ai/conversation-manager.js.map +1 -1
  6. package/dist/commands/ai.d.ts.map +1 -1
  7. package/dist/commands/ai.js +179 -24
  8. package/dist/commands/ai.js.map +1 -1
  9. package/dist/commands/analyze-optimized.d.ts.map +1 -1
  10. package/dist/commands/analyze-optimized.js +15 -6
  11. package/dist/commands/analyze-optimized.js.map +1 -1
  12. package/dist/commands/batch.d.ts +22 -0
  13. package/dist/commands/batch.d.ts.map +1 -1
  14. package/dist/commands/batch.js +130 -14
  15. package/dist/commands/batch.js.map +1 -1
  16. package/dist/commands/chat.d.ts +1 -0
  17. package/dist/commands/chat.d.ts.map +1 -1
  18. package/dist/commands/chat.js +7 -3
  19. package/dist/commands/chat.js.map +1 -1
  20. package/dist/commands/claude-init.d.ts +1 -1
  21. package/dist/commands/claude-init.d.ts.map +1 -1
  22. package/dist/commands/claude-init.js +16 -16
  23. package/dist/commands/claude-init.js.map +1 -1
  24. package/dist/commands/claude-setup.d.ts +5 -5
  25. package/dist/commands/claude-setup.d.ts.map +1 -1
  26. package/dist/commands/claude-setup.js +65 -59
  27. package/dist/commands/claude-setup.js.map +1 -1
  28. package/dist/commands/computer-setup.d.ts +1 -0
  29. package/dist/commands/computer-setup.d.ts.map +1 -1
  30. package/dist/commands/computer-setup.js +35 -7
  31. package/dist/commands/computer-setup.js.map +1 -1
  32. package/dist/commands/dashboard.js.map +1 -1
  33. package/dist/commands/govern.js.map +1 -1
  34. package/dist/commands/init.d.ts.map +1 -1
  35. package/dist/commands/init.js +3 -3
  36. package/dist/commands/init.js.map +1 -1
  37. package/dist/commands/orchestrator.d.ts.map +1 -1
  38. package/dist/commands/orchestrator.js +11 -4
  39. package/dist/commands/orchestrator.js.map +1 -1
  40. package/dist/commands/performance-optimizer.d.ts.map +1 -1
  41. package/dist/commands/performance-optimizer.js.map +1 -1
  42. package/dist/commands/rag.d.ts.map +1 -1
  43. package/dist/commands/rag.js +9 -6
  44. package/dist/commands/rag.js.map +1 -1
  45. package/dist/commands/setup.d.ts +5 -10
  46. package/dist/commands/setup.d.ts.map +1 -1
  47. package/dist/commands/setup.js +35 -260
  48. package/dist/commands/setup.js.map +1 -1
  49. package/dist/commands/watch.d.ts.map +1 -1
  50. package/dist/commands/watch.js.map +1 -1
  51. package/dist/context/session-manager.js.map +1 -1
  52. package/dist/framework/command-interface.d.ts +349 -0
  53. package/dist/framework/command-interface.d.ts.map +1 -0
  54. package/dist/framework/command-interface.js +101 -0
  55. package/dist/framework/command-interface.js.map +1 -0
  56. package/dist/framework/command-registry.d.ts +173 -0
  57. package/dist/framework/command-registry.d.ts.map +1 -0
  58. package/dist/framework/command-registry.js +734 -0
  59. package/dist/framework/command-registry.js.map +1 -0
  60. package/dist/framework/completion-exporter.d.ts +79 -0
  61. package/dist/framework/completion-exporter.d.ts.map +1 -0
  62. package/dist/framework/completion-exporter.js +259 -0
  63. package/dist/framework/completion-exporter.js.map +1 -0
  64. package/dist/framework/debug-logger.d.ts +163 -0
  65. package/dist/framework/debug-logger.d.ts.map +1 -0
  66. package/dist/framework/debug-logger.js +373 -0
  67. package/dist/framework/debug-logger.js.map +1 -0
  68. package/dist/framework/error-handler.d.ts +196 -0
  69. package/dist/framework/error-handler.d.ts.map +1 -0
  70. package/dist/framework/error-handler.js +613 -0
  71. package/dist/framework/error-handler.js.map +1 -0
  72. package/dist/framework/help-generator.d.ts +78 -0
  73. package/dist/framework/help-generator.d.ts.map +1 -0
  74. package/dist/framework/help-generator.js +414 -0
  75. package/dist/framework/help-generator.js.map +1 -0
  76. package/dist/framework/index.d.ts +62 -0
  77. package/dist/framework/index.d.ts.map +1 -0
  78. package/dist/framework/index.js +95 -0
  79. package/dist/framework/index.js.map +1 -0
  80. package/dist/framework/interactive-repl.d.ts +138 -0
  81. package/dist/framework/interactive-repl.d.ts.map +1 -0
  82. package/dist/framework/interactive-repl.js +567 -0
  83. package/dist/framework/interactive-repl.js.map +1 -0
  84. package/dist/framework/output-formatter.d.ts +274 -0
  85. package/dist/framework/output-formatter.d.ts.map +1 -0
  86. package/dist/framework/output-formatter.js +545 -0
  87. package/dist/framework/output-formatter.js.map +1 -0
  88. package/dist/framework/progress-manager.d.ts +192 -0
  89. package/dist/framework/progress-manager.d.ts.map +1 -0
  90. package/dist/framework/progress-manager.js +408 -0
  91. package/dist/framework/progress-manager.js.map +1 -0
  92. package/dist/interactive/interactive-mode.js.map +1 -1
  93. package/dist/nlp/command-mapper.js.map +1 -1
  94. package/dist/nlp/command-parser.js.map +1 -1
  95. package/dist/nlp/intent-parser.d.ts.map +1 -1
  96. package/dist/nlp/intent-parser.js +4 -2
  97. package/dist/nlp/intent-parser.js.map +1 -1
  98. package/dist/plugins/plugin-manager.d.ts +2 -1
  99. package/dist/plugins/plugin-manager.d.ts.map +1 -1
  100. package/dist/plugins/plugin-manager.js +30 -19
  101. package/dist/plugins/plugin-manager.js.map +1 -1
  102. package/dist/utils/backup-rollback-manager.d.ts.map +1 -1
  103. package/dist/utils/backup-rollback-manager.js +1 -2
  104. package/dist/utils/backup-rollback-manager.js.map +1 -1
  105. package/dist/utils/logger.js.map +1 -1
  106. package/package.json +6 -6
  107. package/src/ai/ai-service.ts +16 -17
  108. package/src/ai/claude-client.ts +16 -16
  109. package/src/ai/conversation-manager.ts +29 -29
  110. package/src/cli.ts +4 -4
  111. package/src/commands/ai.ts +246 -78
  112. package/src/commands/alignment.ts +74 -74
  113. package/src/commands/analyze-optimized.ts +111 -78
  114. package/src/commands/analyze.ts +14 -14
  115. package/src/commands/batch.ts +179 -42
  116. package/src/commands/chat.ts +37 -30
  117. package/src/commands/claude-init.ts +41 -45
  118. package/src/commands/claude-setup.ts +204 -119
  119. package/src/commands/computer-setup.ts +85 -43
  120. package/src/commands/create-command.ts +4 -4
  121. package/src/commands/create.ts +27 -27
  122. package/src/commands/dashboard.ts +24 -24
  123. package/src/commands/govern.ts +25 -25
  124. package/src/commands/governance.ts +34 -34
  125. package/src/commands/guardian.ts +56 -56
  126. package/src/commands/init.ts +25 -22
  127. package/src/commands/orchestrator.ts +68 -41
  128. package/src/commands/performance-optimizer.ts +34 -35
  129. package/src/commands/plugins.ts +27 -27
  130. package/src/commands/project-update.ts +175 -72
  131. package/src/commands/rag.ts +185 -78
  132. package/src/commands/session.ts +35 -35
  133. package/src/commands/setup.ts +40 -344
  134. package/src/commands/test-init.ts +3 -3
  135. package/src/commands/test.ts +4 -4
  136. package/src/commands/watch.ts +28 -29
  137. package/src/commands/worktree.ts +49 -49
  138. package/src/context/context-manager.ts +10 -10
  139. package/src/context/session-manager.ts +41 -41
  140. package/src/framework/command-interface.ts +520 -0
  141. package/src/framework/command-registry.ts +942 -0
  142. package/src/framework/completion-exporter.ts +383 -0
  143. package/src/framework/debug-logger.ts +519 -0
  144. package/src/framework/error-handler.ts +867 -0
  145. package/src/framework/help-generator.ts +540 -0
  146. package/src/framework/index.ts +169 -0
  147. package/src/framework/interactive-repl.ts +703 -0
  148. package/src/framework/output-formatter.ts +834 -0
  149. package/src/framework/progress-manager.ts +539 -0
  150. package/src/index.ts +4 -4
  151. package/src/interactive/interactive-mode.ts +16 -16
  152. package/src/lib/conflict-resolution.ts +799 -9
  153. package/src/lib/merge-strategy.ts +529 -7
  154. package/src/lib/safety-mechanisms.ts +422 -18
  155. package/src/lib/state-detection.ts +1015 -13
  156. package/src/nlp/command-mapper.ts +29 -29
  157. package/src/nlp/command-parser.ts +17 -17
  158. package/src/nlp/intent-classifier.ts +7 -7
  159. package/src/nlp/intent-parser.ts +54 -52
  160. package/src/plugins/plugin-manager.ts +61 -39
  161. package/src/tests/computer-setup-integration.test.ts +46 -15
  162. package/src/types/modules.d.ts +424 -1
  163. package/src/utils/backup-rollback-manager.ts +11 -8
  164. package/src/utils/config-manager.ts +3 -3
  165. package/src/utils/error-handler.ts +2 -2
  166. package/src/utils/logger.ts +22 -22
  167. package/templates/batch/ci-cd.yaml +7 -7
  168. package/test-suites/api/health.spec.ts +20 -23
  169. package/test-suites/helpers/test-config.ts +14 -13
  170. package/test-suites/ui/accessibility.spec.ts +27 -22
  171. package/test-suites/ui/smoke.spec.ts +26 -21
  172. package/dist/commands/computer-setup-commands.d.ts +0 -53
  173. package/dist/commands/computer-setup-commands.d.ts.map +0 -1
  174. package/dist/commands/computer-setup-commands.js +0 -705
  175. package/dist/commands/computer-setup-commands.js.map +0 -1
  176. package/dist/commands/vp.d.ts +0 -7
  177. package/dist/commands/vp.d.ts.map +0 -1
  178. package/dist/commands/vp.js +0 -571
  179. package/dist/commands/vp.js.map +0 -1
  180. package/src/commands/computer-setup-commands.ts +0 -872
@@ -0,0 +1,567 @@
1
+ "use strict";
2
+ /**
3
+ * Interactive REPL - Read-Eval-Print Loop for the CLI.
4
+ *
5
+ * Provides:
6
+ * - Interactive command entry with readline
7
+ * - Command history with persistence
8
+ * - Tab completion for commands and options
9
+ * - Command aliases and shortcuts
10
+ * - Session context preservation
11
+ * - Graceful exit handling
12
+ *
13
+ * @module framework/interactive-repl
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.InteractiveRepl = void 0;
17
+ const tslib_1 = require("tslib");
18
+ const fs = tslib_1.__importStar(require("fs"));
19
+ const os = tslib_1.__importStar(require("os"));
20
+ const path = tslib_1.__importStar(require("path"));
21
+ const readline = tslib_1.__importStar(require("readline"));
22
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
23
+ // ---------------------------------------------------------------------------
24
+ // Default Aliases
25
+ // ---------------------------------------------------------------------------
26
+ const DEFAULT_ALIASES = {
27
+ s: 'status',
28
+ q: 'quit',
29
+ h: 'help',
30
+ '?': 'help',
31
+ ls: 'list',
32
+ ll: 'list --verbose',
33
+ cls: 'clear',
34
+ };
35
+ // ---------------------------------------------------------------------------
36
+ // Interactive REPL
37
+ // ---------------------------------------------------------------------------
38
+ class InteractiveRepl {
39
+ registry;
40
+ rl = null;
41
+ running = false;
42
+ history = [];
43
+ prompt;
44
+ historyFile;
45
+ maxHistory;
46
+ aliases;
47
+ tabCompletion;
48
+ contextFactory;
49
+ constructor(registry, options = {}) {
50
+ this.registry = registry;
51
+ this.prompt = options.prompt ?? chalk_1.default.cyan('wundr') + chalk_1.default.gray('> ');
52
+ this.historyFile =
53
+ options.historyFile ?? path.join(os.homedir(), '.wundr_history');
54
+ this.maxHistory = options.maxHistory ?? 500;
55
+ this.tabCompletion = options.tabCompletion ?? true;
56
+ this.aliases = { ...DEFAULT_ALIASES, ...(options.aliases ?? {}) };
57
+ this.contextFactory = options.contextFactory;
58
+ }
59
+ // -------------------------------------------------------------------------
60
+ // Lifecycle
61
+ // -------------------------------------------------------------------------
62
+ /**
63
+ * Start the REPL loop.
64
+ */
65
+ async start(welcomeMessage) {
66
+ if (this.running)
67
+ return;
68
+ this.running = true;
69
+ // Load history
70
+ this.loadHistory();
71
+ // Create readline interface
72
+ this.rl = readline.createInterface({
73
+ input: process.stdin,
74
+ output: process.stderr, // Use stderr so stdout stays clean for piping
75
+ prompt: this.prompt,
76
+ terminal: process.stdin.isTTY === true,
77
+ completer: this.tabCompletion ? this.completer.bind(this) : undefined,
78
+ history: this.history.map(h => h.command),
79
+ historySize: this.maxHistory,
80
+ });
81
+ // Welcome message
82
+ if (welcomeMessage) {
83
+ process.stderr.write(welcomeMessage + '\n\n');
84
+ }
85
+ else {
86
+ process.stderr.write(chalk_1.default.cyan('Interactive mode. Type "help" for commands, "quit" to exit.\n\n'));
87
+ }
88
+ // Handle lines
89
+ this.rl.on('line', async (line) => {
90
+ const trimmed = line.trim();
91
+ if (!trimmed) {
92
+ this.rl?.prompt();
93
+ return;
94
+ }
95
+ await this.handleLine(trimmed);
96
+ this.rl?.prompt();
97
+ });
98
+ // Handle close
99
+ this.rl.on('close', () => {
100
+ this.stop();
101
+ });
102
+ // Handle SIGINT (Ctrl+C)
103
+ this.rl.on('SIGINT', () => {
104
+ process.stderr.write('\n(To exit, type "quit" or press Ctrl+D)\n');
105
+ this.rl?.prompt();
106
+ });
107
+ this.rl.prompt();
108
+ // Keep the process alive
109
+ return new Promise(resolve => {
110
+ this.rl?.on('close', () => {
111
+ resolve();
112
+ });
113
+ });
114
+ }
115
+ /**
116
+ * Stop the REPL.
117
+ */
118
+ stop() {
119
+ if (!this.running)
120
+ return;
121
+ this.running = false;
122
+ this.saveHistory();
123
+ if (this.rl) {
124
+ this.rl.close();
125
+ this.rl = null;
126
+ }
127
+ process.stderr.write(chalk_1.default.gray('\nGoodbye.\n'));
128
+ }
129
+ // -------------------------------------------------------------------------
130
+ // Command Handling
131
+ // -------------------------------------------------------------------------
132
+ /**
133
+ * Process a single input line.
134
+ */
135
+ async handleLine(input) {
136
+ const startTime = Date.now();
137
+ let success = true;
138
+ try {
139
+ // Check built-in commands
140
+ if (this.handleBuiltinCommand(input)) {
141
+ this.recordHistory(input, true, Date.now() - startTime);
142
+ return;
143
+ }
144
+ // Resolve aliases
145
+ const resolved = this.resolveAlias(input);
146
+ // Parse into command + args
147
+ const parts = this.parseInput(resolved);
148
+ if (parts.length === 0)
149
+ return;
150
+ const commandName = parts[0];
151
+ const args = parts.slice(1);
152
+ // Look up command
153
+ const command = this.findCommand(commandName);
154
+ if (!command) {
155
+ process.stderr.write(chalk_1.default.red(`Unknown command: ${commandName}\n`));
156
+ const suggestions = this.suggestCommands(commandName);
157
+ if (suggestions.length > 0) {
158
+ process.stderr.write(chalk_1.default.yellow(`Did you mean: ${suggestions.join(', ')}?\n`));
159
+ }
160
+ success = false;
161
+ this.recordHistory(input, false, Date.now() - startTime);
162
+ return;
163
+ }
164
+ // Execute
165
+ await this.executeCommand(command, args);
166
+ }
167
+ catch (error) {
168
+ success = false;
169
+ const message = error instanceof Error ? error.message : String(error);
170
+ process.stderr.write(chalk_1.default.red(`Error: ${message}\n`));
171
+ }
172
+ this.recordHistory(input, success, Date.now() - startTime);
173
+ }
174
+ /**
175
+ * Handle built-in REPL commands.
176
+ * Returns true if the input was a built-in command.
177
+ */
178
+ handleBuiltinCommand(input) {
179
+ const lower = input.toLowerCase();
180
+ switch (lower) {
181
+ case 'quit':
182
+ case 'exit':
183
+ this.stop();
184
+ return true;
185
+ case 'clear':
186
+ case 'cls':
187
+ process.stderr.write('\x1b[2J\x1b[H');
188
+ return true;
189
+ case 'help':
190
+ case '?':
191
+ this.showHelp();
192
+ return true;
193
+ case 'history':
194
+ this.showHistory();
195
+ return true;
196
+ case 'aliases':
197
+ this.showAliases();
198
+ return true;
199
+ default:
200
+ return false;
201
+ }
202
+ }
203
+ /**
204
+ * Execute a resolved command.
205
+ */
206
+ async executeCommand(command, rawArgs) {
207
+ // Build args and options from raw input
208
+ const args = {};
209
+ const options = {};
210
+ let argIndex = 0;
211
+ for (let i = 0; i < rawArgs.length; i++) {
212
+ const token = rawArgs[i];
213
+ if (token.startsWith('--')) {
214
+ // Long option
215
+ const eqPos = token.indexOf('=');
216
+ if (eqPos !== -1) {
217
+ const key = this.camelCase(token.substring(2, eqPos));
218
+ options[key] = token.substring(eqPos + 1);
219
+ }
220
+ else {
221
+ const key = this.camelCase(token.substring(2));
222
+ const next = rawArgs[i + 1];
223
+ if (next && !next.startsWith('-')) {
224
+ options[key] = next;
225
+ i++;
226
+ }
227
+ else {
228
+ options[key] = true;
229
+ }
230
+ }
231
+ }
232
+ else if (token.startsWith('-') && token.length === 2) {
233
+ // Short option
234
+ const key = token.substring(1);
235
+ const next = rawArgs[i + 1];
236
+ if (next && !next.startsWith('-')) {
237
+ options[key] = next;
238
+ i++;
239
+ }
240
+ else {
241
+ options[key] = true;
242
+ }
243
+ }
244
+ else {
245
+ // Positional arg
246
+ if (command.arguments && command.arguments[argIndex]) {
247
+ args[command.arguments[argIndex].name] = token;
248
+ argIndex++;
249
+ }
250
+ }
251
+ }
252
+ // Create context
253
+ const globalOpts = {
254
+ verbose: !!options['verbose'],
255
+ quiet: !!options['quiet'],
256
+ json: !!options['json'],
257
+ noColor: false,
258
+ dryRun: !!options['dryRun'],
259
+ };
260
+ if (this.contextFactory) {
261
+ const context = this.contextFactory(globalOpts);
262
+ const result = await command.execute(args, options, context);
263
+ if (result.message) {
264
+ process.stdout.write(result.message + '\n');
265
+ }
266
+ if (result.exitCode !== 0) {
267
+ process.stderr.write(chalk_1.default.red(`Command exited with code ${result.exitCode}\n`));
268
+ }
269
+ }
270
+ else {
271
+ process.stderr.write(chalk_1.default.yellow('No context factory configured. Command not executed.\n'));
272
+ }
273
+ }
274
+ // -------------------------------------------------------------------------
275
+ // Tab Completion
276
+ // -------------------------------------------------------------------------
277
+ /**
278
+ * Readline completer function.
279
+ */
280
+ completer(line) {
281
+ const parts = line.split(/\s+/);
282
+ const current = parts[parts.length - 1] ?? '';
283
+ let completions;
284
+ if (parts.length <= 1) {
285
+ // Complete command names
286
+ const allNames = [
287
+ ...this.registry.getCompletionWords(),
288
+ ...Object.keys(this.aliases),
289
+ 'help',
290
+ 'quit',
291
+ 'exit',
292
+ 'clear',
293
+ 'history',
294
+ 'aliases',
295
+ ];
296
+ completions = allNames.filter(name => name.startsWith(current));
297
+ }
298
+ else {
299
+ // Complete options for the current command
300
+ const commandName = parts[0];
301
+ const command = this.findCommand(commandName);
302
+ if (command && current.startsWith('-')) {
303
+ const optFlags = [];
304
+ if (command.options) {
305
+ for (const opt of command.options) {
306
+ const match = opt.flags.match(/--([a-z-]+)/);
307
+ if (match)
308
+ optFlags.push(`--${match[1]}`);
309
+ }
310
+ }
311
+ // Add global options
312
+ optFlags.push('--verbose', '--quiet', '--json', '--dry-run', '--help');
313
+ completions = optFlags.filter(f => f.startsWith(current));
314
+ }
315
+ else if (command?.subcommands && !current.startsWith('-')) {
316
+ completions = command.subcommands
317
+ .map(s => s.name)
318
+ .filter(n => n.startsWith(current));
319
+ }
320
+ else {
321
+ completions = [];
322
+ }
323
+ }
324
+ return [completions, current];
325
+ }
326
+ // -------------------------------------------------------------------------
327
+ // History
328
+ // -------------------------------------------------------------------------
329
+ /**
330
+ * Record a command in history.
331
+ */
332
+ recordHistory(command, success, duration) {
333
+ this.history.push({
334
+ command,
335
+ timestamp: new Date(),
336
+ success,
337
+ duration,
338
+ });
339
+ // Trim to max
340
+ if (this.history.length > this.maxHistory) {
341
+ this.history = this.history.slice(-this.maxHistory);
342
+ }
343
+ }
344
+ /**
345
+ * Load history from file.
346
+ */
347
+ loadHistory() {
348
+ try {
349
+ if (fs.existsSync(this.historyFile)) {
350
+ const content = fs.readFileSync(this.historyFile, 'utf-8');
351
+ const lines = content.trim().split('\n').filter(Boolean);
352
+ this.history = lines.map(line => ({
353
+ command: line,
354
+ timestamp: new Date(),
355
+ success: true,
356
+ }));
357
+ }
358
+ }
359
+ catch {
360
+ // Silently ignore history load errors
361
+ }
362
+ }
363
+ /**
364
+ * Save history to file.
365
+ */
366
+ saveHistory() {
367
+ try {
368
+ const dir = path.dirname(this.historyFile);
369
+ if (!fs.existsSync(dir)) {
370
+ fs.mkdirSync(dir, { recursive: true });
371
+ }
372
+ const content = this.history
373
+ .slice(-this.maxHistory)
374
+ .map(h => h.command)
375
+ .join('\n');
376
+ fs.writeFileSync(this.historyFile, content + '\n');
377
+ }
378
+ catch {
379
+ // Silently ignore history save errors
380
+ }
381
+ }
382
+ /**
383
+ * Show command history.
384
+ */
385
+ showHistory() {
386
+ const recent = this.history.slice(-20);
387
+ if (recent.length === 0) {
388
+ process.stderr.write(chalk_1.default.gray('No command history.\n'));
389
+ return;
390
+ }
391
+ process.stderr.write(chalk_1.default.white.bold('Recent commands:\n'));
392
+ for (let i = 0; i < recent.length; i++) {
393
+ const entry = recent[i];
394
+ const icon = entry.success ? chalk_1.default.green('+') : chalk_1.default.red('x');
395
+ const duration = entry.duration
396
+ ? chalk_1.default.gray(` (${entry.duration}ms)`)
397
+ : '';
398
+ process.stderr.write(` ${icon} ${entry.command}${duration}\n`);
399
+ }
400
+ }
401
+ // -------------------------------------------------------------------------
402
+ // Aliases
403
+ // -------------------------------------------------------------------------
404
+ /**
405
+ * Resolve an alias to the full command.
406
+ */
407
+ resolveAlias(input) {
408
+ const parts = input.split(/\s+/);
409
+ const first = parts[0];
410
+ if (this.aliases[first]) {
411
+ const expanded = this.aliases[first];
412
+ return [expanded, ...parts.slice(1)].join(' ');
413
+ }
414
+ return input;
415
+ }
416
+ /**
417
+ * Register a new alias.
418
+ */
419
+ addAlias(alias, command) {
420
+ this.aliases[alias] = command;
421
+ }
422
+ /**
423
+ * Get all registered aliases.
424
+ */
425
+ getAliases() {
426
+ return this.aliases;
427
+ }
428
+ /**
429
+ * Show registered aliases.
430
+ */
431
+ showAliases() {
432
+ process.stderr.write(chalk_1.default.white.bold('Aliases:\n'));
433
+ for (const [alias, command] of Object.entries(this.aliases)) {
434
+ process.stderr.write(` ${chalk_1.default.green(alias.padEnd(10))} -> ${command}\n`);
435
+ }
436
+ }
437
+ // -------------------------------------------------------------------------
438
+ // Help
439
+ // -------------------------------------------------------------------------
440
+ /**
441
+ * Show REPL help.
442
+ */
443
+ showHelp() {
444
+ process.stderr.write('\n');
445
+ process.stderr.write(chalk_1.default.white.bold('Built-in commands:\n'));
446
+ process.stderr.write(` ${chalk_1.default.green('help')} Show this help message\n`);
447
+ process.stderr.write(` ${chalk_1.default.green('history')} Show command history\n`);
448
+ process.stderr.write(` ${chalk_1.default.green('aliases')} Show command aliases\n`);
449
+ process.stderr.write(` ${chalk_1.default.green('clear')} Clear the screen\n`);
450
+ process.stderr.write(` ${chalk_1.default.green('quit')} Exit interactive mode\n`);
451
+ process.stderr.write('\n');
452
+ process.stderr.write(chalk_1.default.white.bold('Available commands:\n'));
453
+ const commands = this.registry
454
+ .list()
455
+ .filter(c => !c.hidden && !c.name.includes(':'));
456
+ for (const cmd of commands.slice(0, 15)) {
457
+ const aliases = cmd.aliases
458
+ ? chalk_1.default.gray(` (${cmd.aliases.join(', ')})`)
459
+ : '';
460
+ process.stderr.write(` ${chalk_1.default.green(cmd.name.padEnd(20))} ${cmd.description}${aliases}\n`);
461
+ }
462
+ if (commands.length > 15) {
463
+ process.stderr.write(chalk_1.default.gray(` ... and ${commands.length - 15} more commands\n`));
464
+ }
465
+ process.stderr.write('\n');
466
+ }
467
+ // -------------------------------------------------------------------------
468
+ // Private Helpers
469
+ // -------------------------------------------------------------------------
470
+ /**
471
+ * Find a command by name or alias.
472
+ */
473
+ findCommand(name) {
474
+ // Direct lookup
475
+ const direct = this.registry.get(name);
476
+ if (direct)
477
+ return direct;
478
+ // Search by alias
479
+ for (const cmd of this.registry.list()) {
480
+ if (cmd.aliases && cmd.aliases.includes(name)) {
481
+ return cmd;
482
+ }
483
+ }
484
+ return undefined;
485
+ }
486
+ /**
487
+ * Suggest similar command names.
488
+ */
489
+ suggestCommands(input) {
490
+ const allNames = this.registry.names();
491
+ return allNames
492
+ .filter(name => {
493
+ // Simple edit-distance-like check
494
+ if (name.startsWith(input.substring(0, 2)))
495
+ return true;
496
+ if (input.startsWith(name.substring(0, 2)))
497
+ return true;
498
+ return this.levenshtein(input, name) <= 2;
499
+ })
500
+ .slice(0, 3);
501
+ }
502
+ /**
503
+ * Parse input respecting quoted strings.
504
+ */
505
+ parseInput(input) {
506
+ const tokens = [];
507
+ let current = '';
508
+ let inQuote = null;
509
+ for (let i = 0; i < input.length; i++) {
510
+ const char = input[i];
511
+ if (inQuote) {
512
+ if (char === inQuote) {
513
+ inQuote = null;
514
+ }
515
+ else {
516
+ current += char;
517
+ }
518
+ }
519
+ else if (char === '"' || char === "'") {
520
+ inQuote = char;
521
+ }
522
+ else if (char === ' ' || char === '\t') {
523
+ if (current) {
524
+ tokens.push(current);
525
+ current = '';
526
+ }
527
+ }
528
+ else {
529
+ current += char;
530
+ }
531
+ }
532
+ if (current)
533
+ tokens.push(current);
534
+ return tokens;
535
+ }
536
+ /**
537
+ * Convert kebab-case to camelCase.
538
+ */
539
+ camelCase(str) {
540
+ return str.replace(/-([a-z])/g, (_, char) => char.toUpperCase());
541
+ }
542
+ /**
543
+ * Simple Levenshtein distance.
544
+ */
545
+ levenshtein(a, b) {
546
+ if (a.length === 0)
547
+ return b.length;
548
+ if (b.length === 0)
549
+ return a.length;
550
+ const matrix = [];
551
+ for (let i = 0; i <= b.length; i++) {
552
+ matrix[i] = [i];
553
+ }
554
+ for (let j = 0; j <= a.length; j++) {
555
+ matrix[0][j] = j;
556
+ }
557
+ for (let i = 1; i <= b.length; i++) {
558
+ for (let j = 1; j <= a.length; j++) {
559
+ const cost = a[j - 1] === b[i - 1] ? 0 : 1;
560
+ matrix[i][j] = Math.min(matrix[i - 1][j] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j - 1] + cost);
561
+ }
562
+ }
563
+ return matrix[b.length][a.length];
564
+ }
565
+ }
566
+ exports.InteractiveRepl = InteractiveRepl;
567
+ //# sourceMappingURL=interactive-repl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive-repl.js","sourceRoot":"","sources":["../../src/framework/interactive-repl.ts"],"names":[],"mappings":"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"}