centaurus-cli 2.4.0 → 2.5.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 (153) hide show
  1. package/README.md +151 -1
  2. package/dist/cli-adapter.d.ts +41 -2
  3. package/dist/cli-adapter.d.ts.map +1 -1
  4. package/dist/cli-adapter.js +407 -79
  5. package/dist/cli-adapter.js.map +1 -1
  6. package/dist/config/types.d.ts +23 -0
  7. package/dist/config/types.d.ts.map +1 -1
  8. package/dist/config/types.js +20 -0
  9. package/dist/config/types.js.map +1 -1
  10. package/dist/context/__tests__/command-detector.test.d.ts +14 -0
  11. package/dist/context/__tests__/command-detector.test.d.ts.map +1 -0
  12. package/dist/context/__tests__/command-detector.test.js +318 -0
  13. package/dist/context/__tests__/command-detector.test.js.map +1 -0
  14. package/dist/context/__tests__/context-manager.test.d.ts +16 -0
  15. package/dist/context/__tests__/context-manager.test.d.ts.map +1 -0
  16. package/dist/context/__tests__/context-manager.test.js +375 -0
  17. package/dist/context/__tests__/context-manager.test.js.map +1 -0
  18. package/dist/context/__tests__/error-handling.test.d.ts +15 -0
  19. package/dist/context/__tests__/error-handling.test.d.ts.map +1 -0
  20. package/dist/context/__tests__/error-handling.test.js +447 -0
  21. package/dist/context/__tests__/error-handling.test.js.map +1 -0
  22. package/dist/context/command-detector.d.ts +50 -0
  23. package/dist/context/command-detector.d.ts.map +1 -0
  24. package/dist/context/command-detector.js +72 -0
  25. package/dist/context/command-detector.js.map +1 -0
  26. package/dist/context/context-manager.d.ts +144 -0
  27. package/dist/context/context-manager.d.ts.map +1 -0
  28. package/dist/context/context-manager.js +487 -0
  29. package/dist/context/context-manager.js.map +1 -0
  30. package/dist/context/handlers/__tests__/docker-handler.test.d.ts +13 -0
  31. package/dist/context/handlers/__tests__/docker-handler.test.d.ts.map +1 -0
  32. package/dist/context/handlers/__tests__/docker-handler.test.js +285 -0
  33. package/dist/context/handlers/__tests__/docker-handler.test.js.map +1 -0
  34. package/dist/context/handlers/__tests__/ssh-handler.test.d.ts +13 -0
  35. package/dist/context/handlers/__tests__/ssh-handler.test.d.ts.map +1 -0
  36. package/dist/context/handlers/__tests__/ssh-handler.test.js +251 -0
  37. package/dist/context/handlers/__tests__/ssh-handler.test.js.map +1 -0
  38. package/dist/context/handlers/__tests__/wsl-handler.test.d.ts +7 -0
  39. package/dist/context/handlers/__tests__/wsl-handler.test.d.ts.map +1 -0
  40. package/dist/context/handlers/__tests__/wsl-handler.test.js +331 -0
  41. package/dist/context/handlers/__tests__/wsl-handler.test.js.map +1 -0
  42. package/dist/context/handlers/docker-handler.d.ts +111 -0
  43. package/dist/context/handlers/docker-handler.d.ts.map +1 -0
  44. package/dist/context/handlers/docker-handler.js +439 -0
  45. package/dist/context/handlers/docker-handler.js.map +1 -0
  46. package/dist/context/handlers/ssh-handler.d.ts +120 -0
  47. package/dist/context/handlers/ssh-handler.d.ts.map +1 -0
  48. package/dist/context/handlers/ssh-handler.js +523 -0
  49. package/dist/context/handlers/ssh-handler.js.map +1 -0
  50. package/dist/context/handlers/wsl-handler.d.ts +128 -0
  51. package/dist/context/handlers/wsl-handler.d.ts.map +1 -0
  52. package/dist/context/handlers/wsl-handler.js +590 -0
  53. package/dist/context/handlers/wsl-handler.js.map +1 -0
  54. package/dist/context/index.d.ts +8 -0
  55. package/dist/context/index.d.ts.map +1 -0
  56. package/dist/context/index.js +7 -0
  57. package/dist/context/index.js.map +1 -0
  58. package/dist/context/subshell-handler.d.ts +130 -0
  59. package/dist/context/subshell-handler.d.ts.map +1 -0
  60. package/dist/context/subshell-handler.js +5 -0
  61. package/dist/context/subshell-handler.js.map +1 -0
  62. package/dist/context/types.d.ts +70 -0
  63. package/dist/context/types.d.ts.map +1 -0
  64. package/dist/context/types.js +34 -0
  65. package/dist/context/types.js.map +1 -0
  66. package/dist/index.js +6 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/services/__tests__/ai-context-injector.test.d.ts +15 -0
  69. package/dist/services/__tests__/ai-context-injector.test.d.ts.map +1 -0
  70. package/dist/services/__tests__/ai-context-injector.test.js +326 -0
  71. package/dist/services/__tests__/ai-context-injector.test.js.map +1 -0
  72. package/dist/services/ai-context-injector.d.ts +41 -0
  73. package/dist/services/ai-context-injector.d.ts.map +1 -0
  74. package/dist/services/ai-context-injector.js +97 -0
  75. package/dist/services/ai-context-injector.js.map +1 -0
  76. package/dist/services/ai-service-client.d.ts +4 -1
  77. package/dist/services/ai-service-client.d.ts.map +1 -1
  78. package/dist/services/ai-service-client.js +5 -1
  79. package/dist/services/ai-service-client.js.map +1 -1
  80. package/dist/src/context/types.js +27 -0
  81. package/dist/src/services/ai-context-injector.js +96 -0
  82. package/dist/src/services/ai-service-client.js +270 -0
  83. package/dist/src/services/api-client.js +349 -0
  84. package/dist/src/tools/types.js +1 -0
  85. package/dist/src/types/index.js +1 -0
  86. package/dist/test/context/types.js +27 -0
  87. package/dist/test/services/__tests__/ai-context-injector.test.js +325 -0
  88. package/dist/test/services/ai-context-injector.js +96 -0
  89. package/dist/test/services/ai-service-client.js +270 -0
  90. package/dist/test/services/api-client.js +349 -0
  91. package/dist/test/tools/types.js +1 -0
  92. package/dist/test/types/index.js +1 -0
  93. package/dist/test-ai-context-injector.js +97 -0
  94. package/dist/test-ssh-handler.d.ts +8 -0
  95. package/dist/test-ssh-handler.d.ts.map +1 -0
  96. package/dist/test-ssh-handler.js +198 -0
  97. package/dist/test-ssh-handler.js.map +1 -0
  98. package/dist/tools/command.d.ts.map +1 -1
  99. package/dist/tools/command.js +123 -46
  100. package/dist/tools/command.js.map +1 -1
  101. package/dist/tools/file-ops.d.ts.map +1 -1
  102. package/dist/tools/file-ops.js +115 -48
  103. package/dist/tools/file-ops.js.map +1 -1
  104. package/dist/tools/types.d.ts +1 -0
  105. package/dist/tools/types.d.ts.map +1 -1
  106. package/dist/types/index.d.ts +41 -0
  107. package/dist/types/index.d.ts.map +1 -1
  108. package/dist/ui/components/App.d.ts +3 -0
  109. package/dist/ui/components/App.d.ts.map +1 -1
  110. package/dist/ui/components/App.js +213 -46
  111. package/dist/ui/components/App.js.map +1 -1
  112. package/dist/ui/components/Breadcrumbs.d.ts +12 -0
  113. package/dist/ui/components/Breadcrumbs.d.ts.map +1 -0
  114. package/dist/ui/components/Breadcrumbs.js +62 -0
  115. package/dist/ui/components/Breadcrumbs.js.map +1 -0
  116. package/dist/ui/components/CodeBlock.js +1 -1
  117. package/dist/ui/components/CodeBlock.js.map +1 -1
  118. package/dist/ui/components/DiffViewer.js +1 -1
  119. package/dist/ui/components/DiffViewer.js.map +1 -1
  120. package/dist/ui/components/FileViewerScreen.d.ts +14 -0
  121. package/dist/ui/components/FileViewerScreen.d.ts.map +1 -0
  122. package/dist/ui/components/FileViewerScreen.js +74 -0
  123. package/dist/ui/components/FileViewerScreen.js.map +1 -0
  124. package/dist/ui/components/InputBox.d.ts +2 -0
  125. package/dist/ui/components/InputBox.d.ts.map +1 -1
  126. package/dist/ui/components/InputBox.js +85 -41
  127. package/dist/ui/components/InputBox.js.map +1 -1
  128. package/dist/ui/components/MessageDisplay.d.ts.map +1 -1
  129. package/dist/ui/components/MessageDisplay.js +3 -28
  130. package/dist/ui/components/MessageDisplay.js.map +1 -1
  131. package/dist/ui/components/PasswordPrompt.d.ts +9 -0
  132. package/dist/ui/components/PasswordPrompt.d.ts.map +1 -0
  133. package/dist/ui/components/PasswordPrompt.js +20 -0
  134. package/dist/ui/components/PasswordPrompt.js.map +1 -0
  135. package/dist/ui/components/StatusBar.d.ts +2 -0
  136. package/dist/ui/components/StatusBar.d.ts.map +1 -1
  137. package/dist/ui/components/StatusBar.js +36 -1
  138. package/dist/ui/components/StatusBar.js.map +1 -1
  139. package/dist/ui/components/ToolExecutionMessage.d.ts.map +1 -1
  140. package/dist/ui/components/ToolExecutionMessage.js +13 -24
  141. package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
  142. package/dist/ui/components/VersionUpdatePrompt.d.ts +10 -0
  143. package/dist/ui/components/VersionUpdatePrompt.d.ts.map +1 -0
  144. package/dist/ui/components/VersionUpdatePrompt.js +41 -0
  145. package/dist/ui/components/VersionUpdatePrompt.js.map +1 -0
  146. package/dist/utils/shell.d.ts.map +1 -1
  147. package/dist/utils/shell.js +38 -10
  148. package/dist/utils/shell.js.map +1 -1
  149. package/dist/utils/version-checker.d.ts +14 -0
  150. package/dist/utils/version-checker.d.ts.map +1 -0
  151. package/dist/utils/version-checker.js +63 -0
  152. package/dist/utils/version-checker.js.map +1 -0
  153. package/package.json +71 -69
@@ -0,0 +1,590 @@
1
+ /**
2
+ * WSL Handler for Windows Subsystem for Linux
3
+ */
4
+ import { exec, spawn } from 'child_process';
5
+ import { promisify } from 'util';
6
+ import { SubshellConnectionError, SubshellExecutionError } from '../types.js';
7
+ import { randomBytes } from 'crypto';
8
+ import * as os from 'os';
9
+ const execAsync = promisify(exec);
10
+ /**
11
+ * WSL Handler implementation
12
+ */
13
+ export class WSLHandler {
14
+ type = 'wsl';
15
+ detectionPatterns = [
16
+ /^wsl$/,
17
+ /^wsl\s+/,
18
+ /^wsl\.exe\s+/,
19
+ ];
20
+ config = null;
21
+ currentWorkingDirectory = '~';
22
+ shellType = 'bash';
23
+ sessionId = '';
24
+ shellProcess = null;
25
+ commandQueue = [];
26
+ currentOutput = '';
27
+ currentError = '';
28
+ /**
29
+ * Detect if a command should trigger this handler
30
+ */
31
+ detect(command) {
32
+ return this.detectionPatterns.some(pattern => pattern.test(command));
33
+ }
34
+ /**
35
+ * Connect to the WSL environment
36
+ */
37
+ async connect(command, cwd) {
38
+ this.sessionId = randomBytes(16).toString('hex');
39
+ try {
40
+ // Verify WSL is available (Windows only)
41
+ this.verifyWSLAvailable();
42
+ // Parse WSL command to extract distribution
43
+ this.config = await this.parseWSLCommand(command);
44
+ // Spawn interactive shell
45
+ await this.spawnInteractiveShell();
46
+ // Detect shell type
47
+ this.shellType = await this.detectShellType();
48
+ // Get initial working directory
49
+ this.currentWorkingDirectory = await this.getCurrentWorkingDirectory();
50
+ return {
51
+ type: 'wsl',
52
+ handler: this,
53
+ metadata: {
54
+ workingDirectory: this.currentWorkingDirectory,
55
+ shell: this.shellType,
56
+ os: 'linux',
57
+ distroName: this.config.distribution,
58
+ },
59
+ connectionState: 'connected',
60
+ sessionId: this.sessionId,
61
+ };
62
+ }
63
+ catch (error) {
64
+ throw new SubshellConnectionError('wsl', error instanceof Error ? error.message : 'Unknown error', false);
65
+ }
66
+ }
67
+ /**
68
+ * Spawn an interactive shell process
69
+ */
70
+ async spawnInteractiveShell() {
71
+ if (!this.config) {
72
+ throw new Error('Config not initialized');
73
+ }
74
+ const distro = this.config.distribution.trim().replace(/\0/g, '');
75
+ return new Promise((resolve, reject) => {
76
+ // Spawn wsl.exe with the distribution
77
+ this.shellProcess = spawn('wsl.exe', ['-d', distro], {
78
+ stdio: ['pipe', 'pipe', 'pipe'],
79
+ shell: false,
80
+ });
81
+ if (!this.shellProcess.stdout || !this.shellProcess.stderr || !this.shellProcess.stdin) {
82
+ reject(new Error('Failed to create shell process streams'));
83
+ return;
84
+ }
85
+ let hasResolved = false;
86
+ let errorOutput = '';
87
+ let initCommandSent = false;
88
+ // Set up output handlers
89
+ this.shellProcess.stdout.on('data', (data) => {
90
+ this.currentOutput += data.toString();
91
+ // If we get any output, the shell is working
92
+ if (!hasResolved) {
93
+ hasResolved = true;
94
+ resolve();
95
+ }
96
+ });
97
+ this.shellProcess.stderr.on('data', (data) => {
98
+ const text = data.toString();
99
+ this.currentError += text;
100
+ errorOutput += text;
101
+ });
102
+ this.shellProcess.on('exit', (code) => {
103
+ if (!hasResolved) {
104
+ hasResolved = true;
105
+ // Check for common WSL errors
106
+ if (errorOutput.includes('HCS_E_SERVICE_NOT_AVAILABLE')) {
107
+ reject(new Error('WSL service is not running. Try running "wsl --shutdown" and then try again, or restart your computer.'));
108
+ }
109
+ else if (errorOutput.includes('required feature is not installed')) {
110
+ reject(new Error('WSL is not properly installed or enabled. Please ensure WSL 2 is installed and the Virtual Machine Platform feature is enabled.'));
111
+ }
112
+ else {
113
+ reject(new Error(`WSL process exited with code ${code}. Error: ${errorOutput || 'No error output'}`));
114
+ }
115
+ }
116
+ this.shellProcess = null;
117
+ });
118
+ this.shellProcess.on('error', (error) => {
119
+ if (!hasResolved) {
120
+ hasResolved = true;
121
+ reject(new Error(`Failed to spawn WSL process: ${error.message}`));
122
+ }
123
+ });
124
+ // Wait for stdin to be ready, then send initialization command
125
+ const sendInitCommand = () => {
126
+ if (!initCommandSent && this.shellProcess && this.shellProcess.stdin && !this.shellProcess.stdin.destroyed) {
127
+ initCommandSent = true;
128
+ this.shellProcess.stdin.write('echo "CENTAURUS_READY"\n');
129
+ }
130
+ };
131
+ // Try to send command immediately if stdin is already writable
132
+ if (this.shellProcess.stdin.writable) {
133
+ sendInitCommand();
134
+ }
135
+ else {
136
+ // Otherwise wait for the 'ready' event on stdin
137
+ this.shellProcess.stdin.once('ready', sendInitCommand);
138
+ }
139
+ // Fallback: also try after a small delay in case ready event doesn't fire
140
+ setTimeout(() => {
141
+ sendInitCommand();
142
+ }, 200);
143
+ // Timeout if we don't get a response
144
+ setTimeout(() => {
145
+ if (!hasResolved) {
146
+ hasResolved = true;
147
+ reject(new Error(`WSL shell initialization timed out. Error: ${errorOutput || 'No error output'}`));
148
+ }
149
+ }, 5000);
150
+ });
151
+ }
152
+ /**
153
+ * Disconnect from the WSL environment
154
+ */
155
+ async disconnect() {
156
+ if (this.shellProcess) {
157
+ this.shellProcess.kill();
158
+ this.shellProcess = null;
159
+ }
160
+ this.config = null;
161
+ }
162
+ /**
163
+ * Execute a command in the WSL environment
164
+ */
165
+ async executeCommand(command) {
166
+ if (!this.config) {
167
+ throw new SubshellExecutionError(command, 'Not connected to WSL - config is null');
168
+ }
169
+ if (!this.shellProcess) {
170
+ throw new SubshellExecutionError(command, 'Not connected to WSL - shell process is null');
171
+ }
172
+ if (!this.shellProcess.stdin) {
173
+ throw new SubshellExecutionError(command, 'Not connected to WSL - stdin is null');
174
+ }
175
+ if (this.shellProcess.killed || this.shellProcess.exitCode !== null) {
176
+ throw new SubshellExecutionError(command, 'Not connected to WSL - shell process has exited');
177
+ }
178
+ try {
179
+ // Clear previous output
180
+ this.currentOutput = '';
181
+ this.currentError = '';
182
+ // Build command with pwd tracking
183
+ let commandWithPwd;
184
+ const trimmedCommand = command.trim();
185
+ // Check if this is a cd command
186
+ if (trimmedCommand.startsWith('cd ') || trimmedCommand === 'cd') {
187
+ // For cd commands, execute directly without prepending current directory
188
+ // The shell maintains its own state
189
+ commandWithPwd = `${command}; echo "__CENTAURUS_PWD__:$(pwd)"\n`;
190
+ }
191
+ else {
192
+ // For other commands, ensure we're in the right directory first
193
+ commandWithPwd = `cd ${this.currentWorkingDirectory} && ${command}; echo "__CENTAURUS_PWD__:$(pwd)"\n`;
194
+ }
195
+ // Send command to shell
196
+ this.shellProcess.stdin.write(commandWithPwd);
197
+ // Wait for command to complete (look for the pwd marker)
198
+ const result = await this.executeWithTimeout(() => this.waitForCommandCompletion(), 30000, 'Command execution');
199
+ return result;
200
+ }
201
+ catch (error) {
202
+ return {
203
+ stdout: '',
204
+ stderr: error.message || 'Command execution failed',
205
+ exitCode: 1,
206
+ };
207
+ }
208
+ }
209
+ /**
210
+ * Wait for command completion by monitoring output
211
+ */
212
+ async waitForCommandCompletion() {
213
+ return new Promise((resolve) => {
214
+ const checkInterval = setInterval(() => {
215
+ const pwdMatch = this.currentOutput.match(/__CENTAURUS_PWD__:(.+)$/m);
216
+ if (pwdMatch) {
217
+ clearInterval(checkInterval);
218
+ // Extract working directory
219
+ const newCwd = pwdMatch[1].trim();
220
+ this.currentWorkingDirectory = newCwd;
221
+ // Clean output
222
+ const cleanStdout = this.currentOutput
223
+ .replace(/__CENTAURUS_PWD__:.+$/m, '')
224
+ .trim();
225
+ resolve({
226
+ stdout: cleanStdout,
227
+ stderr: this.currentError,
228
+ exitCode: 0,
229
+ });
230
+ }
231
+ }, 100);
232
+ });
233
+ }
234
+ /**
235
+ * Read a file from the WSL filesystem
236
+ */
237
+ async readFile(path) {
238
+ if (!this.config) {
239
+ throw new Error('Not connected to WSL');
240
+ }
241
+ const distro = this.config.distribution.trim().replace(/\0/g, '');
242
+ const wslPath = this.resolveWSLPath(path);
243
+ // Use base64 to avoid encoding issues and binary-safe transfer
244
+ const command = `wsl.exe -d ${distro} -- bash -c "base64 '${wslPath}' 2>/dev/null || cat '${wslPath}' | base64"`;
245
+ try {
246
+ const { stdout } = await execAsync(command);
247
+ const b64 = stdout.replace(/\s+/g, '');
248
+ return Buffer.from(b64, 'base64').toString('utf-8');
249
+ }
250
+ catch (error) {
251
+ throw new Error(`Failed to read file ${path}: ${error.message}`);
252
+ }
253
+ }
254
+ /**
255
+ * Write a file to the WSL filesystem
256
+ */
257
+ async writeFile(path, content) {
258
+ if (!this.config) {
259
+ throw new Error('Not connected to WSL');
260
+ }
261
+ const distro = this.config.distribution.trim().replace(/\0/g, '');
262
+ const wslPath = this.resolveWSLPath(path);
263
+ // Use base64-encoded, chunked writes to avoid shell arg/command length limits
264
+ const base64Content = Buffer.from(content, 'utf-8').toString('base64');
265
+ const CHUNK_SIZE = 32000; // conservative size per command
266
+ try {
267
+ // Truncate/initialize file
268
+ const truncateCmd = `wsl.exe -d ${distro} -- bash -c ": > '${wslPath}'"`;
269
+ await execAsync(truncateCmd);
270
+ // Write in chunks
271
+ for (let i = 0; i < base64Content.length; i += CHUNK_SIZE) {
272
+ const chunk = base64Content.slice(i, i + CHUNK_SIZE);
273
+ const writeCmd = `wsl.exe -d ${distro} -- bash -c "echo '${chunk}' | base64 -d >> '${wslPath}'"`;
274
+ await execAsync(writeCmd);
275
+ }
276
+ }
277
+ catch (error) {
278
+ throw new Error(`Failed to write file ${path}: ${error.message}`);
279
+ }
280
+ }
281
+ /**
282
+ * List directory contents in WSL
283
+ */
284
+ async listDirectory(path) {
285
+ if (!this.config) {
286
+ throw new Error('Not connected to WSL');
287
+ }
288
+ const distro = this.config.distribution.trim().replace(/\0/g, '');
289
+ const wslPath = this.resolveWSLPath(path);
290
+ const command = `wsl.exe -d ${distro} -- ls -la "${wslPath}"`;
291
+ try {
292
+ const { stdout } = await execAsync(command);
293
+ return this.parseDirectoryListing(stdout);
294
+ }
295
+ catch (error) {
296
+ throw new Error(`Failed to list directory ${path}: ${error.message}`);
297
+ }
298
+ }
299
+ /**
300
+ * Search for files matching a pattern in WSL
301
+ */
302
+ async searchFiles(pattern, directory) {
303
+ if (!this.config) {
304
+ throw new Error('Not connected to WSL');
305
+ }
306
+ const distro = this.config.distribution.trim().replace(/\0/g, '');
307
+ const wslPath = this.resolveWSLPath(directory);
308
+ const escapedPattern = pattern.replace(/'/g, "'\\''");
309
+ const command = `wsl.exe -d ${distro} -- bash -c "grep -rn '${escapedPattern}' '${wslPath}' 2>/dev/null || true"`;
310
+ try {
311
+ const { stdout } = await execAsync(command);
312
+ return this.parseSearchResults(stdout);
313
+ }
314
+ catch (error) {
315
+ // grep returns non-zero if no matches, which is not an error
316
+ return [];
317
+ }
318
+ }
319
+ /**
320
+ * Get the current working directory in WSL
321
+ */
322
+ async getCurrentWorkingDirectory() {
323
+ if (!this.config || !this.shellProcess || !this.shellProcess.stdin) {
324
+ return '~';
325
+ }
326
+ try {
327
+ // Clear output
328
+ this.currentOutput = '';
329
+ // Send pwd command
330
+ this.shellProcess.stdin.write('pwd\n');
331
+ // Wait for output
332
+ await new Promise(resolve => setTimeout(resolve, 300));
333
+ const lines = this.currentOutput.trim().split('\n');
334
+ const path = lines[lines.length - 1].trim();
335
+ return path || '~';
336
+ }
337
+ catch {
338
+ return '~';
339
+ }
340
+ }
341
+ /**
342
+ * Get the shell type
343
+ */
344
+ async getShellType() {
345
+ return this.shellType;
346
+ }
347
+ /**
348
+ * Get the operating system type (always linux for WSL)
349
+ */
350
+ async getOSType() {
351
+ return 'linux';
352
+ }
353
+ /**
354
+ * Get breadcrumb information for the UI
355
+ */
356
+ getBreadcrumbs() {
357
+ if (!this.config) {
358
+ return [];
359
+ }
360
+ return [
361
+ {
362
+ label: 'wsl',
363
+ color: 'yellow',
364
+ },
365
+ {
366
+ label: this.config.distribution,
367
+ color: 'yellow',
368
+ },
369
+ ];
370
+ }
371
+ // Private helper methods
372
+ /**
373
+ * Verify that WSL is available on the system
374
+ */
375
+ verifyWSLAvailable() {
376
+ if (os.platform() !== 'win32') {
377
+ throw new Error('WSL is only available on Windows');
378
+ }
379
+ }
380
+ /**
381
+ * Parse WSL command to extract distribution name
382
+ */
383
+ async parseWSLCommand(command) {
384
+ const parts = command.trim().split(/\s+/);
385
+ let distribution = '';
386
+ // Look for -d or --distribution flag
387
+ for (let i = 1; i < parts.length; i++) {
388
+ const part = parts[i];
389
+ if ((part === '-d' || part === '--distribution') && i + 1 < parts.length) {
390
+ distribution = parts[i + 1];
391
+ break;
392
+ }
393
+ }
394
+ // If no distribution specified, get the default
395
+ if (!distribution) {
396
+ distribution = await this.getDefaultDistribution();
397
+ }
398
+ return {
399
+ distribution,
400
+ };
401
+ }
402
+ /**
403
+ * Get the default WSL distribution
404
+ */
405
+ async getDefaultDistribution() {
406
+ try {
407
+ const { stdout } = await execAsync('wsl.exe --list --verbose');
408
+ // Remove BOM and null bytes from output
409
+ const cleanOutput = stdout.replace(/^\uFEFF/, '').replace(/\0/g, '');
410
+ const lines = cleanOutput.split('\n');
411
+ // Find the line with * (default distribution)
412
+ for (const line of lines) {
413
+ if (line.includes('*')) {
414
+ const match = line.match(/\*\s+(\S+)/);
415
+ if (match) {
416
+ const distro = match[1].trim().replace(/\0/g, '');
417
+ if (distro) {
418
+ return distro;
419
+ }
420
+ }
421
+ }
422
+ }
423
+ // If no default found, return the first distribution
424
+ for (const line of lines) {
425
+ const match = line.match(/^\s+(\S+)/);
426
+ if (match && !match[1].includes('NAME')) {
427
+ const distro = match[1].trim().replace(/\0/g, '');
428
+ if (distro) {
429
+ return distro;
430
+ }
431
+ }
432
+ }
433
+ throw new Error('No WSL distributions found');
434
+ }
435
+ catch (error) {
436
+ throw new Error('Failed to detect WSL distribution');
437
+ }
438
+ }
439
+ /**
440
+ * Detect the shell type in WSL
441
+ */
442
+ async detectShellType() {
443
+ if (!this.config || !this.shellProcess || !this.shellProcess.stdin) {
444
+ return 'bash';
445
+ }
446
+ try {
447
+ // Clear output
448
+ this.currentOutput = '';
449
+ // Send command to detect shell
450
+ this.shellProcess.stdin.write('echo $SHELL\n');
451
+ // Wait for output
452
+ await new Promise(resolve => setTimeout(resolve, 300));
453
+ const shellPath = this.currentOutput.trim();
454
+ if (shellPath.includes('bash'))
455
+ return 'bash';
456
+ if (shellPath.includes('zsh'))
457
+ return 'zsh';
458
+ if (shellPath.includes('fish'))
459
+ return 'fish';
460
+ return 'bash';
461
+ }
462
+ catch {
463
+ return 'bash';
464
+ }
465
+ }
466
+ /**
467
+ * Build a WSL command with working directory context
468
+ */
469
+ buildWSLCommand(command) {
470
+ if (!this.config) {
471
+ throw new Error('Not connected to WSL');
472
+ }
473
+ // Validate distribution name
474
+ const distro = this.config.distribution.trim().replace(/\0/g, '');
475
+ if (!distro) {
476
+ throw new Error('Invalid WSL distribution name');
477
+ }
478
+ // Determine the directory to cd into
479
+ const targetDir = this.currentWorkingDirectory === '~' || this.currentWorkingDirectory === ''
480
+ ? '~'
481
+ : this.currentWorkingDirectory;
482
+ // Build the command with pwd tracking
483
+ // Use single quotes to avoid escaping issues with $
484
+ const bashScript = `cd ${targetDir} && ${command}; echo "__CENTAURUS_PWD__:$(pwd)"`;
485
+ // Use wsl.exe with bash -c and single quotes
486
+ return `wsl.exe -d ${distro} -- bash -c '${bashScript.replace(/'/g, "'\\''")}'`;
487
+ }
488
+ /**
489
+ * Convert Windows path to WSL path
490
+ */
491
+ static windowsToWSLPath(windowsPath) {
492
+ // Convert C:\Users\... to /mnt/c/Users/...
493
+ const match = windowsPath.match(/^([A-Za-z]):(\\|\/)/);
494
+ if (match) {
495
+ const drive = match[1].toLowerCase();
496
+ const rest = windowsPath.substring(2).replace(/\\/g, '/');
497
+ return `/mnt/${drive}${rest}`;
498
+ }
499
+ // Already a Unix path
500
+ return windowsPath.replace(/\\/g, '/');
501
+ }
502
+ /**
503
+ * Convert WSL path to Windows path
504
+ */
505
+ static wslToWindowsPath(wslPath) {
506
+ // Convert /mnt/c/Users/... to C:\Users\...
507
+ const match = wslPath.match(/^\/mnt\/([a-z])(\/.*)?$/);
508
+ if (match) {
509
+ const drive = match[1].toUpperCase();
510
+ const rest = (match[2] || '').replace(/\//g, '\\');
511
+ return `${drive}:${rest}`;
512
+ }
513
+ // Not a /mnt path, return as-is
514
+ return wslPath;
515
+ }
516
+ /**
517
+ * Resolve a path to a WSL path
518
+ */
519
+ resolveWSLPath(path) {
520
+ // If it's already an absolute Unix path, use it
521
+ if (path.startsWith('/')) {
522
+ return path;
523
+ }
524
+ // If it starts with ~, use it
525
+ if (path.startsWith('~')) {
526
+ return path;
527
+ }
528
+ // If it's a Windows path, convert it
529
+ if (path.match(/^[A-Za-z]:/)) {
530
+ return WSLHandler.windowsToWSLPath(path);
531
+ }
532
+ // Otherwise, treat as relative to current working directory
533
+ return `${this.currentWorkingDirectory}/${path}`;
534
+ }
535
+ /**
536
+ * Parse directory listing output
537
+ */
538
+ parseDirectoryListing(output) {
539
+ const entries = [];
540
+ const lines = output.split('\n').filter(line => line.trim());
541
+ for (const line of lines) {
542
+ // Skip total line and current/parent directory
543
+ if (line.startsWith('total') || line.endsWith(' .') || line.endsWith(' ..')) {
544
+ continue;
545
+ }
546
+ // Parse ls -la output: permissions links owner group size date time name
547
+ const match = line.match(/^([drwx-]+)\s+\d+\s+\S+\s+\S+\s+(\d+)\s+\S+\s+\S+\s+\S+\s+(.+)$/);
548
+ if (match) {
549
+ const permissions = match[1];
550
+ const size = parseInt(match[2], 10);
551
+ const name = match[3];
552
+ entries.push({
553
+ name,
554
+ type: permissions.startsWith('d') ? 'directory' : 'file',
555
+ size,
556
+ permissions,
557
+ });
558
+ }
559
+ }
560
+ return entries;
561
+ }
562
+ /**
563
+ * Parse search results from grep output
564
+ */
565
+ parseSearchResults(output) {
566
+ const results = [];
567
+ const lines = output.split('\n').filter(line => line.trim());
568
+ for (const line of lines) {
569
+ const match = line.match(/^(.+?):(\d+):(.+)$/);
570
+ if (match) {
571
+ results.push({
572
+ file: match[1],
573
+ line: parseInt(match[2], 10),
574
+ content: match[3],
575
+ });
576
+ }
577
+ }
578
+ return results;
579
+ }
580
+ /**
581
+ * Execute a promise with a timeout
582
+ */
583
+ async executeWithTimeout(operation, timeoutMs, operationName) {
584
+ return Promise.race([
585
+ operation(),
586
+ new Promise((_, reject) => setTimeout(() => reject(new Error(`${operationName} timed out after ${timeoutMs}ms`)), timeoutMs)),
587
+ ]);
588
+ }
589
+ }
590
+ //# sourceMappingURL=wsl-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wsl-handler.js","sourceRoot":"","sources":["../../../src/context/handlers/wsl-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Context management system exports
3
+ */
4
+ export { SubshellContext, SubshellMetadata, SubshellType, ConnectionState, OSType, SubshellConnectionError, SubshellExecutionError, } from './types';
5
+ export { SubshellHandler, BreadcrumbInfo, CommandResult, DirectoryEntry, SearchResult, } from './subshell-handler';
6
+ export { ContextManager, ContextChangeCallback, } from './context-manager';
7
+ export { CommandDetector, DetectionResult, } from './command-detector';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,MAAM,EACN,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACb,cAAc,EACd,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,cAAc,EACd,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,EACf,eAAe,GAChB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Context management system exports
3
+ */
4
+ export { SubshellConnectionError, SubshellExecutionError, } from './types';
5
+ export { ContextManager, } from './context-manager';
6
+ export { CommandDetector, } from './command-detector';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAML,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAUjB,OAAO,EACL,cAAc,GAEf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,GAEhB,MAAM,oBAAoB,CAAC"}