centaurus-cli 2.7.2 → 2.8.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 (86) hide show
  1. package/dist/cli-adapter.d.ts +8 -0
  2. package/dist/cli-adapter.d.ts.map +1 -1
  3. package/dist/cli-adapter.js +104 -37
  4. package/dist/cli-adapter.js.map +1 -1
  5. package/dist/config/mcp-config-manager.d.ts +53 -0
  6. package/dist/config/mcp-config-manager.d.ts.map +1 -0
  7. package/dist/config/mcp-config-manager.js +210 -0
  8. package/dist/config/mcp-config-manager.js.map +1 -0
  9. package/dist/config/slash-commands.d.ts +14 -0
  10. package/dist/config/slash-commands.d.ts.map +1 -0
  11. package/dist/config/slash-commands.js +65 -0
  12. package/dist/config/slash-commands.js.map +1 -0
  13. package/dist/context/handlers/wsl-handler.d.ts.map +1 -1
  14. package/dist/context/handlers/wsl-handler.js +2 -1
  15. package/dist/context/handlers/wsl-handler.js.map +1 -1
  16. package/dist/index.js +20 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/mcp/mcp-command-handler.d.ts +16 -0
  19. package/dist/mcp/mcp-command-handler.d.ts.map +1 -0
  20. package/dist/mcp/mcp-command-handler.js +196 -0
  21. package/dist/mcp/mcp-command-handler.js.map +1 -0
  22. package/dist/mcp/mcp-server-manager.d.ts +30 -0
  23. package/dist/mcp/mcp-server-manager.d.ts.map +1 -0
  24. package/dist/mcp/mcp-server-manager.js +165 -0
  25. package/dist/mcp/mcp-server-manager.js.map +1 -0
  26. package/dist/mcp/mcp-tool-wrapper.d.ts +12 -0
  27. package/dist/mcp/mcp-tool-wrapper.d.ts.map +1 -0
  28. package/dist/mcp/mcp-tool-wrapper.js +57 -0
  29. package/dist/mcp/mcp-tool-wrapper.js.map +1 -0
  30. package/dist/services/ai-service-client.d.ts.map +1 -1
  31. package/dist/services/ai-service-client.js +20 -2
  32. package/dist/services/ai-service-client.js.map +1 -1
  33. package/dist/tools/command.js.map +1 -1
  34. package/dist/tools/file-ops.d.ts.map +1 -1
  35. package/dist/tools/file-ops.js +18 -10
  36. package/dist/tools/file-ops.js.map +1 -1
  37. package/dist/ui/components/App.d.ts +4 -0
  38. package/dist/ui/components/App.d.ts.map +1 -1
  39. package/dist/ui/components/App.js +235 -138
  40. package/dist/ui/components/App.js.map +1 -1
  41. package/dist/ui/components/FileCreationPreview.d.ts +8 -0
  42. package/dist/ui/components/FileCreationPreview.d.ts.map +1 -0
  43. package/dist/ui/components/FileCreationPreview.js +63 -0
  44. package/dist/ui/components/FileCreationPreview.js.map +1 -0
  45. package/dist/ui/components/InputBox.d.ts.map +1 -1
  46. package/dist/ui/components/InputBox.js +132 -4
  47. package/dist/ui/components/InputBox.js.map +1 -1
  48. package/dist/ui/components/InteractiveShell.d.ts +3 -1
  49. package/dist/ui/components/InteractiveShell.d.ts.map +1 -1
  50. package/dist/ui/components/InteractiveShell.js +46 -89
  51. package/dist/ui/components/InteractiveShell.js.map +1 -1
  52. package/dist/ui/components/MarkdownRenderer.d.ts.map +1 -1
  53. package/dist/ui/components/MarkdownRenderer.js +16 -34
  54. package/dist/ui/components/MarkdownRenderer.js.map +1 -1
  55. package/dist/ui/components/MessageDisplay.d.ts.map +1 -1
  56. package/dist/ui/components/MessageDisplay.js +10 -2
  57. package/dist/ui/components/MessageDisplay.js.map +1 -1
  58. package/dist/ui/components/SlashCommandAutocomplete.d.ts +11 -0
  59. package/dist/ui/components/SlashCommandAutocomplete.d.ts.map +1 -0
  60. package/dist/ui/components/SlashCommandAutocomplete.js +15 -0
  61. package/dist/ui/components/SlashCommandAutocomplete.js.map +1 -0
  62. package/dist/ui/components/StreamingMessageDisplay.d.ts.map +1 -1
  63. package/dist/ui/components/StreamingMessageDisplay.js +5 -5
  64. package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
  65. package/dist/ui/components/ToolExecutionMessage.d.ts.map +1 -1
  66. package/dist/ui/components/ToolExecutionMessage.js +96 -32
  67. package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
  68. package/dist/ui/components/ToolExecutionStatus.d.ts.map +1 -1
  69. package/dist/ui/components/ToolExecutionStatus.js +28 -1
  70. package/dist/ui/components/ToolExecutionStatus.js.map +1 -1
  71. package/dist/utils/editor-utils.d.ts +50 -0
  72. package/dist/utils/editor-utils.d.ts.map +1 -0
  73. package/dist/utils/editor-utils.js +501 -0
  74. package/dist/utils/editor-utils.js.map +1 -0
  75. package/dist/utils/input-classifier.d.ts.map +1 -1
  76. package/dist/utils/input-classifier.js +4 -2
  77. package/dist/utils/input-classifier.js.map +1 -1
  78. package/dist/utils/shell.d.ts +34 -1
  79. package/dist/utils/shell.d.ts.map +1 -1
  80. package/dist/utils/shell.js +130 -123
  81. package/dist/utils/shell.js.map +1 -1
  82. package/dist/utils/syntax-checker.d.ts +24 -0
  83. package/dist/utils/syntax-checker.d.ts.map +1 -0
  84. package/dist/utils/syntax-checker.js +320 -0
  85. package/dist/utils/syntax-checker.js.map +1 -0
  86. package/package.json +5 -3
@@ -0,0 +1,501 @@
1
+ import * as os from 'os';
2
+ import { createRequire } from 'module';
3
+ // Use createRequire for ESM compatibility with native modules
4
+ const require = createRequire(import.meta.url);
5
+ const nodePty = require('@homebridge/node-pty-prebuilt-multiarch');
6
+ /**
7
+ * List of interactive editor commands that require full terminal control
8
+ */
9
+ const INTERACTIVE_EDITORS = [
10
+ 'vim', 'nvim', 'vi', 'nano', 'emacs', 'micro', 'helix', 'hx',
11
+ 'pico', 'joe', 'ne', 'mcedit'
12
+ ];
13
+ /**
14
+ * Patterns that indicate an editor will be opened
15
+ */
16
+ const EDITOR_PATTERNS = [
17
+ /^git\s+commit(?:\s|$)/, // git commit (opens $EDITOR)
18
+ /^git\s+rebase\s+-i/, // git rebase -i (interactive)
19
+ /^crontab\s+-e/, // crontab -e (opens editor)
20
+ /^visudo/, // visudo (opens editor)
21
+ /^vipw/, // vipw (opens editor)
22
+ /^sudoedit/, // sudoedit (opens editor)
23
+ ];
24
+ /**
25
+ * Check if a command is an interactive editor that needs full terminal control
26
+ */
27
+ export function isInteractiveEditorCommand(command) {
28
+ const trimmed = command.trim();
29
+ const parts = trimmed.split(/\s+/);
30
+ const baseCommand = parts[0].toLowerCase();
31
+ // Direct editor commands
32
+ if (INTERACTIVE_EDITORS.includes(baseCommand)) {
33
+ return true;
34
+ }
35
+ // Check patterns
36
+ for (const pattern of EDITOR_PATTERNS) {
37
+ if (pattern.test(trimmed)) {
38
+ return true;
39
+ }
40
+ }
41
+ // Handle sudo/doas prefix
42
+ if (baseCommand === 'sudo' || baseCommand === 'doas') {
43
+ const actualCommand = parts.slice(1).join(' ');
44
+ return isInteractiveEditorCommand(actualCommand);
45
+ }
46
+ return false;
47
+ }
48
+ /**
49
+ * Check if the command is specifically for nano editor (the only remote-supported editor currently)
50
+ */
51
+ export function isNanoEditor(command) {
52
+ const trimmed = command.trim();
53
+ const parts = trimmed.split(/\s+/);
54
+ let baseCommand = parts[0].toLowerCase();
55
+ // Handle sudo/doas prefix
56
+ if (baseCommand === 'sudo' || baseCommand === 'doas') {
57
+ baseCommand = parts[1]?.toLowerCase() || '';
58
+ }
59
+ return baseCommand === 'nano' || baseCommand === 'pico'; // pico is often aliased to nano
60
+ }
61
+ /**
62
+ * Get the display name of an editor command for user-friendly messages
63
+ */
64
+ export function getEditorName(command) {
65
+ const trimmed = command.trim();
66
+ const parts = trimmed.split(/\s+/);
67
+ let baseCommand = parts[0].toLowerCase();
68
+ // Handle sudo/doas prefix
69
+ if (baseCommand === 'sudo' || baseCommand === 'doas') {
70
+ baseCommand = parts[1]?.toLowerCase() || baseCommand;
71
+ }
72
+ // Map to display names
73
+ const displayNames = {
74
+ 'vim': 'Vim',
75
+ 'nvim': 'Neovim',
76
+ 'vi': 'Vi',
77
+ 'nano': 'Nano',
78
+ 'emacs': 'Emacs',
79
+ 'micro': 'Micro',
80
+ 'helix': 'Helix',
81
+ 'hx': 'Helix',
82
+ 'pico': 'Pico',
83
+ 'joe': 'Joe',
84
+ 'ne': 'Ne',
85
+ 'mcedit': 'Midnight Commander Editor',
86
+ };
87
+ return displayNames[baseCommand] || baseCommand;
88
+ }
89
+ /**
90
+ * Get the shell command for the current platform.
91
+ * On Windows, prefers Git Bash if available for better terminal emulation.
92
+ */
93
+ function getShellCommand() {
94
+ if (os.platform() !== 'win32') {
95
+ return process.env.SHELL || '/bin/bash';
96
+ }
97
+ // On Windows, try to find Git Bash for better terminal emulation
98
+ const gitBashPath = findGitBash();
99
+ if (gitBashPath) {
100
+ return gitBashPath;
101
+ }
102
+ // Fallback to PowerShell
103
+ return 'powershell.exe';
104
+ }
105
+ /**
106
+ * Find Git Bash on Windows. Returns null if not found.
107
+ * Git Bash provides proper Unix terminal emulation for editors like nano.
108
+ */
109
+ function findGitBash() {
110
+ const possiblePaths = [
111
+ 'C:\\Program Files\\Git\\bin\\bash.exe',
112
+ 'C:\\Program Files (x86)\\Git\\bin\\bash.exe',
113
+ process.env.PROGRAMFILES ? `${process.env.PROGRAMFILES}\\Git\\bin\\bash.exe` : null,
114
+ process.env['PROGRAMFILES(X86)'] ? `${process.env['PROGRAMFILES(X86)']}\\Git\\bin\\bash.exe` : null,
115
+ // User-specific installation
116
+ process.env.LOCALAPPDATA ? `${process.env.LOCALAPPDATA}\\Programs\\Git\\bin\\bash.exe` : null,
117
+ ].filter(Boolean);
118
+ for (const bashPath of possiblePaths) {
119
+ try {
120
+ const fs = require('fs');
121
+ if (fs.existsSync(bashPath)) {
122
+ return bashPath;
123
+ }
124
+ }
125
+ catch {
126
+ // Continue to next path
127
+ }
128
+ }
129
+ return null;
130
+ }
131
+ /**
132
+ * Check if we should use bash-style arguments for the shell
133
+ */
134
+ function usesBashArgs(shell) {
135
+ return shell.includes('bash') || shell.includes('sh');
136
+ }
137
+ /**
138
+ * Common terminal reset sequences for cleanup after editor exits
139
+ */
140
+ function getTerminalResetSequences() {
141
+ return [
142
+ '\x1b[?1049l', // Exit alternate screen buffer
143
+ '\x1b[?25l', // HIDE cursor (let Ink show it in the right place)
144
+ '\x1b[0m', // Reset text attributes (colors, bold, etc.)
145
+ '\x1b[?1000l', // Disable mouse tracking (X10)
146
+ '\x1b[?1002l', // Disable mouse button tracking
147
+ '\x1b[?1003l', // Disable mouse any-event tracking
148
+ '\x1b[?1006l', // Disable SGR mouse mode
149
+ '\x1b[?2004l', // Disable bracketed paste mode
150
+ '\x1b[?1u', // Disable CSI u mode (extended key reporting) - some terminals
151
+ '\x1b[>4;0m', // Disable modifyOtherKeys mode
152
+ '\x1b[?66l', // Disable application keypad mode
153
+ '\x1b[?1l', // Disable cursor keys application mode
154
+ '\x1bc', // Full terminal reset (RIS - Reset to Initial State)
155
+ '\x1b[?25l', // Hide cursor again after reset (reset shows it)
156
+ ].join('');
157
+ }
158
+ /**
159
+ * Common setup for interactive editor: raw stdin mode and handlers
160
+ */
161
+ function setupInteractiveMode(ptyProcess, onExit) {
162
+ let isRunning = true;
163
+ // Save original stdin settings
164
+ const wasRaw = process.stdin.isRaw;
165
+ // Set stdin to raw mode for direct key passthrough
166
+ if (process.stdin.isTTY) {
167
+ process.stdin.setRawMode(true);
168
+ }
169
+ process.stdin.resume();
170
+ // Pipe stdin to PTY (user keys -> editor)
171
+ const stdinHandler = (data) => {
172
+ if (isRunning) {
173
+ ptyProcess.write(data.toString());
174
+ }
175
+ };
176
+ process.stdin.on('data', stdinHandler);
177
+ // Pipe PTY output to stdout (editor display -> terminal)
178
+ ptyProcess.onData((data) => {
179
+ if (isRunning) {
180
+ process.stdout.write(data);
181
+ }
182
+ });
183
+ // Handle terminal resize
184
+ const resizeHandler = () => {
185
+ if (isRunning) {
186
+ const newCols = process.stdout.columns || 80;
187
+ const newRows = process.stdout.rows || 24;
188
+ try {
189
+ ptyProcess.resize(newCols, newRows);
190
+ }
191
+ catch (e) {
192
+ // Ignore resize errors
193
+ }
194
+ }
195
+ };
196
+ process.stdout.on('resize', resizeHandler);
197
+ // Handle PTY exit
198
+ ptyProcess.onExit(({ exitCode }) => {
199
+ isRunning = false;
200
+ // CRITICAL: Remove our stdin handler FIRST
201
+ process.stdin.removeListener('data', stdinHandler);
202
+ process.stdout.removeListener('resize', resizeHandler);
203
+ // Restore stdin to original raw mode setting
204
+ if (process.stdin.isTTY) {
205
+ process.stdin.setRawMode(wasRaw ?? false);
206
+ }
207
+ // COMPREHENSIVE TERMINAL RESET
208
+ process.stdout.write(getTerminalResetSequences());
209
+ // Give terminal time to process reset sequences
210
+ setTimeout(() => {
211
+ onExit(exitCode);
212
+ }, 200);
213
+ });
214
+ return {
215
+ cleanup: () => {
216
+ process.stdin.removeListener('data', stdinHandler);
217
+ process.stdout.removeListener('resize', resizeHandler);
218
+ if (process.stdin.isTTY) {
219
+ process.stdin.setRawMode(wasRaw ?? false);
220
+ }
221
+ },
222
+ kill: () => {
223
+ if (isRunning) {
224
+ isRunning = false;
225
+ try {
226
+ ptyProcess.kill();
227
+ }
228
+ catch (e) {
229
+ // Ignore kill errors
230
+ }
231
+ }
232
+ }
233
+ };
234
+ }
235
+ /**
236
+ * Run an interactive editor with full terminal control (LOCAL mode).
237
+ * This function:
238
+ * 1. Clears the screen and enters alternate screen buffer
239
+ * 2. Spawns a PTY process
240
+ * 3. Pipes stdin directly to the PTY (raw mode)
241
+ * 4. Pipes PTY output directly to stdout
242
+ * 5. Handles cleanup on exit
243
+ *
244
+ * Uses alternate screen buffer to prevent chat history from showing through.
245
+ */
246
+ export function runInteractiveEditor(command, cwd, onExit) {
247
+ const shell = getShellCommand();
248
+ const isWindows = os.platform() === 'win32';
249
+ // Use bash-style args for Git Bash, PowerShell-style only if falling back to PowerShell
250
+ const isBash = usesBashArgs(shell);
251
+ const args = isBash ? ['-c', command] : (isWindows ? ['-Command', command] : ['-c', command]);
252
+ // Get terminal dimensions
253
+ const cols = process.stdout.columns || 80;
254
+ const rows = process.stdout.rows || 24;
255
+ // Enter alternate screen buffer and clear screen to hide chat history
256
+ // This combined with cygwin terminal type provides proper display on Windows
257
+ const enterAlternateBuffer = [
258
+ '\x1b[?1049h', // Enter alternate screen buffer
259
+ '\x1b[2J', // Clear entire screen
260
+ '\x1b[H', // Move cursor to home position
261
+ ].join('');
262
+ process.stdout.write(enterAlternateBuffer);
263
+ // Spawn PTY process - use 'cygwin' terminal type on Windows for better compatibility
264
+ // 'xterm-256color' can cause issues with some Windows terminal configurations
265
+ const ptyProcess = nodePty.spawn(shell, args, {
266
+ name: isWindows ? 'cygwin' : 'xterm-256color',
267
+ cols,
268
+ rows,
269
+ cwd,
270
+ env: {
271
+ ...process.env,
272
+ // Use cygwin TERM on Windows for better nano compatibility
273
+ TERM: isWindows ? 'cygwin' : 'xterm-256color',
274
+ COLORTERM: 'truecolor',
275
+ },
276
+ });
277
+ let isRunning = true;
278
+ // Save original stdin settings
279
+ const wasRaw = process.stdin.isRaw;
280
+ // Set stdin to raw mode for direct key passthrough
281
+ if (process.stdin.isTTY) {
282
+ process.stdin.setRawMode(true);
283
+ }
284
+ process.stdin.resume();
285
+ // Pipe stdin to PTY (user keys -> editor)
286
+ const stdinHandler = (data) => {
287
+ if (isRunning) {
288
+ ptyProcess.write(data.toString());
289
+ }
290
+ };
291
+ process.stdin.on('data', stdinHandler);
292
+ // Pipe PTY output to stdout (editor display -> terminal)
293
+ ptyProcess.onData((data) => {
294
+ if (isRunning) {
295
+ process.stdout.write(data);
296
+ }
297
+ });
298
+ // Handle terminal resize
299
+ const resizeHandler = () => {
300
+ if (isRunning) {
301
+ const newCols = process.stdout.columns || 80;
302
+ const newRows = process.stdout.rows || 24;
303
+ try {
304
+ ptyProcess.resize(newCols, newRows);
305
+ }
306
+ catch (e) {
307
+ // Ignore resize errors
308
+ }
309
+ }
310
+ };
311
+ process.stdout.on('resize', resizeHandler);
312
+ // Handle PTY exit
313
+ ptyProcess.onExit(({ exitCode }) => {
314
+ isRunning = false;
315
+ // CRITICAL: Remove our stdin handler FIRST
316
+ process.stdin.removeListener('data', stdinHandler);
317
+ process.stdout.removeListener('resize', resizeHandler);
318
+ // Restore stdin to original raw mode setting
319
+ if (process.stdin.isTTY) {
320
+ process.stdin.setRawMode(wasRaw ?? false);
321
+ }
322
+ // COMPREHENSIVE TERMINAL RESET
323
+ process.stdout.write(getTerminalResetSequences());
324
+ // Give terminal time to process reset sequences
325
+ setTimeout(() => {
326
+ onExit(exitCode);
327
+ }, 200);
328
+ });
329
+ return {
330
+ kill: () => {
331
+ if (isRunning) {
332
+ isRunning = false;
333
+ try {
334
+ ptyProcess.kill();
335
+ }
336
+ catch (e) {
337
+ // Ignore kill errors
338
+ }
339
+ }
340
+ }
341
+ };
342
+ }
343
+ /**
344
+ * Run an interactive editor in WSL session via node-pty.
345
+ * Uses wsl.exe to execute the editor command in the specified distribution.
346
+ */
347
+ export function runWSLEditor(distribution, command, cwd, onExit) {
348
+ // Get terminal dimensions
349
+ const cols = process.stdout.columns || 80;
350
+ const rows = process.stdout.rows || 24;
351
+ // Build WSL command - cd to directory and run editor
352
+ // wsl.exe -d <distro> -- bash -c "cd <path> && <command>"
353
+ const wslArgs = [
354
+ '-d', distribution,
355
+ '--',
356
+ 'bash', '-c',
357
+ `cd "${cwd}" && ${command}`
358
+ ];
359
+ // Spawn PTY process with wsl.exe
360
+ const ptyProcess = nodePty.spawn('wsl.exe', wslArgs, {
361
+ name: 'xterm-256color',
362
+ cols,
363
+ rows,
364
+ cwd: process.cwd(), // Use current Windows cwd
365
+ env: {
366
+ ...process.env,
367
+ TERM: 'xterm-256color',
368
+ COLORTERM: 'truecolor',
369
+ },
370
+ });
371
+ const { kill } = setupInteractiveMode(ptyProcess, onExit);
372
+ return { kill };
373
+ }
374
+ /**
375
+ * Run an interactive editor in Docker container via node-pty.
376
+ * Uses docker exec -it to execute the editor command in the container.
377
+ */
378
+ export function runDockerEditor(containerId, command, cwd, onExit) {
379
+ // Get terminal dimensions
380
+ const cols = process.stdout.columns || 80;
381
+ const rows = process.stdout.rows || 24;
382
+ // Build docker exec command
383
+ // docker exec -it <container> bash -c "cd <path> && <command>"
384
+ const dockerArgs = [
385
+ 'exec',
386
+ '-it',
387
+ containerId,
388
+ 'bash', '-c',
389
+ `cd "${cwd}" && ${command}`
390
+ ];
391
+ // Spawn PTY process with docker
392
+ const ptyProcess = nodePty.spawn('docker', dockerArgs, {
393
+ name: 'xterm-256color',
394
+ cols,
395
+ rows,
396
+ cwd: process.cwd(),
397
+ env: {
398
+ ...process.env,
399
+ TERM: 'xterm-256color',
400
+ COLORTERM: 'truecolor',
401
+ },
402
+ });
403
+ const { kill } = setupInteractiveMode(ptyProcess, onExit);
404
+ return { kill };
405
+ }
406
+ /**
407
+ * Run an interactive editor in SSH session via ssh2's interactive shell.
408
+ * This is more complex as we need to use the ssh2 client's shell() method
409
+ * instead of exec() to get a proper interactive PTY.
410
+ */
411
+ export function runSSHEditor(sshClient, // ssh2 Client
412
+ command, cwd, onExit) {
413
+ let isRunning = true;
414
+ let stream = null;
415
+ // Save original stdin settings
416
+ const wasRaw = process.stdin.isRaw;
417
+ // Get terminal dimensions
418
+ const cols = process.stdout.columns || 80;
419
+ const rows = process.stdout.rows || 24;
420
+ // Request an interactive shell from the SSH server
421
+ sshClient.shell({
422
+ term: 'xterm-256color',
423
+ cols,
424
+ rows,
425
+ }, (err, shellStream) => {
426
+ if (err) {
427
+ console.error('Failed to open SSH shell:', err.message);
428
+ onExit(1);
429
+ return;
430
+ }
431
+ stream = shellStream;
432
+ // Set stdin to raw mode for direct key passthrough
433
+ if (process.stdin.isTTY) {
434
+ process.stdin.setRawMode(true);
435
+ }
436
+ process.stdin.resume();
437
+ // Pipe stdin to SSH stream (user keys -> remote shell)
438
+ const stdinHandler = (data) => {
439
+ if (isRunning && stream) {
440
+ stream.write(data);
441
+ }
442
+ };
443
+ process.stdin.on('data', stdinHandler);
444
+ // Pipe SSH stream output to stdout (remote -> terminal)
445
+ stream.on('data', (data) => {
446
+ if (isRunning) {
447
+ process.stdout.write(data);
448
+ }
449
+ });
450
+ // Handle terminal resize
451
+ const resizeHandler = () => {
452
+ if (isRunning && stream) {
453
+ const newCols = process.stdout.columns || 80;
454
+ const newRows = process.stdout.rows || 24;
455
+ try {
456
+ stream.setWindow(newRows, newCols, 0, 0);
457
+ }
458
+ catch (e) {
459
+ // Ignore resize errors
460
+ }
461
+ }
462
+ };
463
+ process.stdout.on('resize', resizeHandler);
464
+ // Handle stream close
465
+ stream.on('close', () => {
466
+ isRunning = false;
467
+ // CRITICAL: Remove our stdin handler FIRST
468
+ process.stdin.removeListener('data', stdinHandler);
469
+ process.stdout.removeListener('resize', resizeHandler);
470
+ // Restore stdin to original raw mode setting
471
+ if (process.stdin.isTTY) {
472
+ process.stdin.setRawMode(wasRaw ?? false);
473
+ }
474
+ // COMPREHENSIVE TERMINAL RESET
475
+ process.stdout.write(getTerminalResetSequences());
476
+ // Give terminal time to process reset sequences
477
+ setTimeout(() => {
478
+ onExit(0);
479
+ }, 200);
480
+ });
481
+ // Send the command to the shell: cd to directory and run editor
482
+ // Note: We send the command with exit so shell closes after editor exits
483
+ stream.write(`cd "${cwd}" && ${command}; exit\n`);
484
+ });
485
+ return {
486
+ kill: () => {
487
+ if (isRunning) {
488
+ isRunning = false;
489
+ if (stream) {
490
+ try {
491
+ stream.close();
492
+ }
493
+ catch (e) {
494
+ // Ignore close errors
495
+ }
496
+ }
497
+ }
498
+ }
499
+ };
500
+ }
501
+ //# sourceMappingURL=editor-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-utils.js","sourceRoot":"","sources":["../../src/utils/editor-utils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"input-classifier.d.ts","sourceRoot":"","sources":["../../src/utils/input-classifier.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;AAsD3C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CA6FvD"}
1
+ {"version":3,"file":"input-classifier.d.ts","sourceRoot":"","sources":["../../src/utils/input-classifier.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;AAwD3C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CA6FvD"}
@@ -14,7 +14,8 @@ const SLASH_COMMANDS = new Set([
14
14
  'session', 's',
15
15
  'tools', 't',
16
16
  'plan',
17
- 'init', 'i'
17
+ 'init', 'i',
18
+ 'mcp'
18
19
  ]);
19
20
  // Common binaries that definitely indicate a terminal command
20
21
  const COMMON_COMMANDS = new Set([
@@ -30,8 +31,9 @@ const COMMON_COMMANDS = new Set([
30
31
  'curl', 'wget', 'ssh', 'scp', 'ping', 'telnet', 'nc', 'netstat', 'lsof', 'dig', 'nslookup', 'ip', 'ifconfig', 'traceroute',
31
32
  // Build / Run
32
33
  'make', 'cmake', 'docker', 'docker-compose', 'kubectl', 'node', 'python', 'python3', 'ruby', 'perl', 'php', 'java', 'gcc', 'g++', 'clang',
33
- // Shell
34
+ // Shell / Subshells
34
35
  'echo', 'export', 'alias', 'unalias', 'source', 'env', 'history', 'clear', 'exit', 'date', 'cal', 'man', 'which', 'whereis',
36
+ 'wsl', 'bash', 'sh', 'zsh', 'fish', 'powershell', 'pwsh', 'cmd',
35
37
  // Archives
36
38
  'tar', 'zip', 'unzip', 'gzip', 'gunzip', '7z', 'rar',
37
39
  // Search
@@ -1 +1 @@
1
- {"version":3,"file":"input-classifier.js","sourceRoot":"","sources":["../../src/utils/input-classifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input-classifier.js","sourceRoot":"","sources":["../../src/utils/input-classifier.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,43 @@
1
1
  import { ChildProcess } from 'child_process';
2
+ /**
3
+ * Check if PTY is available on this system
4
+ */
5
+ export declare function isPtyAvailable(): boolean;
6
+ /**
7
+ * PTY-based process interface for true terminal emulation
8
+ */
9
+ export interface PtyProcess {
10
+ /** Write data to the terminal */
11
+ write: (data: string) => void;
12
+ /** Resize the terminal */
13
+ resize: (cols: number, rows: number) => void;
14
+ /** Kill the process */
15
+ kill: () => void;
16
+ /** Check if process is still running */
17
+ isRunning: () => boolean;
18
+ /** Get the process ID */
19
+ pid: number;
20
+ }
21
+ export declare function killProcessTree(pid: number, signal: string | number): void;
2
22
  export declare function getShellCommand(): string;
3
23
  export interface InteractiveProcess {
4
- process: ChildProcess;
24
+ process: ChildProcess | null;
25
+ ptyProcess?: PtyProcess;
5
26
  write: (input: string) => void;
6
27
  kill: () => void;
28
+ signal: (signal: NodeJS.Signals) => void;
29
+ resize?: (cols: number, rows: number) => void;
30
+ isPty: boolean;
7
31
  }
32
+ /**
33
+ * Execute a command using node-pty for full terminal emulation.
34
+ * This provides true PTY support with colors, cursor positioning, and interactive programs.
35
+ */
36
+ export declare function executePtyCommand(command: string, cwd: string, onData: (chunk: string) => void, onExit?: (exitCode: number) => void): PtyProcess;
37
+ /**
38
+ * Execute a command interactively using PTY.
39
+ * Now exclusively uses node-pty for production-grade terminal experience.
40
+ */
8
41
  export declare function executeCommandInteractive(command: string, cwd: string, onData: (chunk: string, type: 'stdout' | 'stderr') => void, onExit?: (exitCode: number) => void): InteractiveProcess;
9
42
  export declare function executeCommand(command: string, cwd: string, onData?: (chunk: string, type: 'stdout' | 'stderr') => void): Promise<{
10
43
  stdout: string;
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,EAC1D,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAClC,kBAAkB,CA0DpB;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,GAC1D,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA0G/D"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAQ,MAAM,eAAe,CAAC;AAOnD;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,iCAAiC;IACjC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,0BAA0B;IAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,uBAAuB;IACvB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,wCAAwC;IACxC,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,QAyBnE;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAC/B,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAClC,UAAU,CA6DZ;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,EAC1D,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAClC,kBAAkB,CAkCpB;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,GAC1D,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAsB/D"}