@wonderwhy-er/desktop-commander 0.2.6 → 0.2.7

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 (112) hide show
  1. package/dist/index-dxt.js +10 -47
  2. package/dist/server.js +6 -0
  3. package/dist/tools/filesystem.js +37 -4
  4. package/dist/version.d.ts +1 -1
  5. package/dist/version.js +1 -1
  6. package/package.json +2 -1
  7. package/dist/REPLSessionManager.d.ts +0 -109
  8. package/dist/REPLSessionManager.js +0 -364
  9. package/dist/REPLSessionManager.test.d.ts +0 -1
  10. package/dist/REPLSessionManager.test.js +0 -75
  11. package/dist/client/replClient.d.ts +0 -63
  12. package/dist/client/replClient.js +0 -217
  13. package/dist/client/sshClient.d.ts +0 -82
  14. package/dist/client/sshClient.js +0 -200
  15. package/dist/command-manager.js.map +0 -1
  16. package/dist/config-manager.js.map +0 -1
  17. package/dist/config.js.map +0 -1
  18. package/dist/custom-stdio.js.map +0 -1
  19. package/dist/error-handlers.js.map +0 -1
  20. package/dist/handlers/command-handlers.d.ts +0 -13
  21. package/dist/handlers/command-handlers.js +0 -43
  22. package/dist/handlers/edit-search-handlers.js.map +0 -1
  23. package/dist/handlers/filesystem-handlers.js.map +0 -1
  24. package/dist/handlers/fuzzy-search-log-handlers.d.ts +0 -13
  25. package/dist/handlers/fuzzy-search-log-handlers.js +0 -179
  26. package/dist/handlers/index.js.map +0 -1
  27. package/dist/handlers/process-handlers.js.map +0 -1
  28. package/dist/handlers/repl-handlers.d.ts +0 -21
  29. package/dist/handlers/repl-handlers.js +0 -37
  30. package/dist/handlers/replCommandHandler.d.ts +0 -125
  31. package/dist/handlers/replCommandHandler.js +0 -255
  32. package/dist/handlers/replCommandHandler.test.d.ts +0 -1
  33. package/dist/handlers/replCommandHandler.test.js +0 -103
  34. package/dist/handlers/terminal-handlers.js.map +0 -1
  35. package/dist/index-with-startup-detection.d.ts +0 -5
  36. package/dist/index-with-startup-detection.js +0 -180
  37. package/dist/index.js.map +0 -1
  38. package/dist/logging.d.ts +0 -2
  39. package/dist/logging.js +0 -28
  40. package/dist/polyform-license-src/edit/edit.d.ts +0 -15
  41. package/dist/polyform-license-src/edit/edit.js +0 -163
  42. package/dist/polyform-license-src/edit/fuzzySearch.d.ts +0 -30
  43. package/dist/polyform-license-src/edit/fuzzySearch.js +0 -121
  44. package/dist/polyform-license-src/edit/handlers.d.ts +0 -16
  45. package/dist/polyform-license-src/edit/handlers.js +0 -24
  46. package/dist/polyform-license-src/edit/index.d.ts +0 -12
  47. package/dist/polyform-license-src/edit/index.js +0 -13
  48. package/dist/polyform-license-src/edit/schemas.d.ts +0 -25
  49. package/dist/polyform-license-src/edit/schemas.js +0 -16
  50. package/dist/polyform-license-src/index.d.ts +0 -9
  51. package/dist/polyform-license-src/index.js +0 -10
  52. package/dist/repl-manager.d.ts +0 -73
  53. package/dist/repl-manager.js +0 -407
  54. package/dist/replIntegration.d.ts +0 -14
  55. package/dist/replIntegration.js +0 -27
  56. package/dist/sandbox/index.d.ts +0 -9
  57. package/dist/sandbox/index.js +0 -50
  58. package/dist/sandbox/mac-sandbox.d.ts +0 -19
  59. package/dist/sandbox/mac-sandbox.js +0 -174
  60. package/dist/server.js.map +0 -1
  61. package/dist/setup.log +0 -32
  62. package/dist/terminal-manager.js.map +0 -1
  63. package/dist/tools/client.d.ts +0 -10
  64. package/dist/tools/client.js +0 -13
  65. package/dist/tools/command-block.d.ts +0 -18
  66. package/dist/tools/command-block.js +0 -62
  67. package/dist/tools/config.js.map +0 -1
  68. package/dist/tools/debug-path.d.ts +0 -1
  69. package/dist/tools/debug-path.js +0 -44
  70. package/dist/tools/edit.js.map +0 -1
  71. package/dist/tools/enhanced-read-output.js +0 -69
  72. package/dist/tools/enhanced-send-input.js +0 -111
  73. package/dist/tools/environment.d.ts +0 -55
  74. package/dist/tools/environment.js +0 -65
  75. package/dist/tools/execute.d.ts +0 -10
  76. package/dist/tools/execute.js +0 -158
  77. package/dist/tools/execute.js.map +0 -1
  78. package/dist/tools/filesystem-fixed.d.ts +0 -22
  79. package/dist/tools/filesystem-fixed.js +0 -176
  80. package/dist/tools/filesystem.js.map +0 -1
  81. package/dist/tools/fuzzySearch.js.map +0 -1
  82. package/dist/tools/mime-types.js.map +0 -1
  83. package/dist/tools/pdf-reader.d.ts +0 -13
  84. package/dist/tools/pdf-reader.js +0 -214
  85. package/dist/tools/process.js.map +0 -1
  86. package/dist/tools/progress.d.ts +0 -20
  87. package/dist/tools/progress.js +0 -59
  88. package/dist/tools/repl.d.ts +0 -21
  89. package/dist/tools/repl.js +0 -217
  90. package/dist/tools/schemas.js.map +0 -1
  91. package/dist/tools/search.js.map +0 -1
  92. package/dist/tools/send-input.d.ts +0 -2
  93. package/dist/tools/send-input.js +0 -45
  94. package/dist/types.js.map +0 -1
  95. package/dist/utils/capture.js.map +0 -1
  96. package/dist/utils/early-logger.d.ts +0 -4
  97. package/dist/utils/early-logger.js +0 -35
  98. package/dist/utils/fuzzySearchLogger.js.map +0 -1
  99. package/dist/utils/lineEndingHandler.js.map +0 -1
  100. package/dist/utils/lineEndingHandler_optimized.d.ts +0 -21
  101. package/dist/utils/lineEndingHandler_optimized.js +0 -77
  102. package/dist/utils/mcp-logger.d.ts +0 -30
  103. package/dist/utils/mcp-logger.js +0 -59
  104. package/dist/utils/smithery-detector.d.ts +0 -94
  105. package/dist/utils/smithery-detector.js +0 -292
  106. package/dist/utils/startup-detector.d.ts +0 -65
  107. package/dist/utils/startup-detector.js +0 -390
  108. package/dist/utils/trackTools.js.map +0 -1
  109. package/dist/utils/withTimeout.js.map +0 -1
  110. package/dist/utils.d.ts +0 -26
  111. package/dist/utils.js +0 -227
  112. package/dist/version.js.map +0 -1
@@ -1,75 +0,0 @@
1
- import { expect } from 'chai';
2
- import { describe, it } from 'mocha';
3
- import { REPLSessionManager } from './REPLSessionManager';
4
- import * as sinon from 'sinon';
5
- describe('REPLSessionManager', () => {
6
- // Create a mock terminal manager for testing
7
- const createMockTerminalManager = () => {
8
- return {
9
- executeCommand: sinon.stub().resolves({ pid: 12345 }),
10
- sendInputToProcess: sinon.stub().returns(true),
11
- getNewOutput: sinon.stub().returns('test output\n> '),
12
- terminateProcess: sinon.stub().resolves(true)
13
- };
14
- };
15
- it('should create a new instance', () => {
16
- const terminalManager = createMockTerminalManager();
17
- const manager = new REPLSessionManager(terminalManager);
18
- expect(manager).to.be.an.instanceOf(REPLSessionManager);
19
- });
20
- it('should create a new session', async () => {
21
- const terminalManager = createMockTerminalManager();
22
- const manager = new REPLSessionManager(terminalManager);
23
- const pid = await manager.createSession('node');
24
- expect(pid).to.equal(12345);
25
- expect(terminalManager.executeCommand.calledOnce).to.be.true;
26
- });
27
- it('should send and read REPL output', async () => {
28
- const terminalManager = createMockTerminalManager();
29
- const manager = new REPLSessionManager(terminalManager);
30
- const result = await manager.sendAndReadREPL(12345, 'console.log("hello")', 'node', 1000);
31
- expect(result.success).to.be.true;
32
- expect(terminalManager.sendInputToProcess.calledOnce).to.be.true;
33
- expect(terminalManager.getNewOutput.called).to.be.true;
34
- });
35
- it('should detect when output is complete', () => {
36
- const terminalManager = createMockTerminalManager();
37
- const manager = new REPLSessionManager(terminalManager);
38
- // Node.js prompt
39
- expect(manager.isOutputComplete('test\n> ', 'node')).to.be.true;
40
- // Python prompt
41
- expect(manager.isOutputComplete('test\n>>> ', 'python')).to.be.true;
42
- // Incomplete output
43
- expect(manager.isOutputComplete('test\n', 'node')).to.be.false;
44
- });
45
- it('should calculate timeout based on code complexity', () => {
46
- const terminalManager = createMockTerminalManager();
47
- const manager = new REPLSessionManager(terminalManager);
48
- const simpleTimeout = manager.calculateTimeout('x = 1');
49
- const loopTimeout = manager.calculateTimeout('for (let i = 0; i < 10; i++) { console.log(i); }');
50
- const importTimeout = manager.calculateTimeout('import math\nimport os\nimport sys');
51
- expect(loopTimeout).to.be.greaterThan(simpleTimeout);
52
- expect(importTimeout).to.be.greaterThan(simpleTimeout);
53
- });
54
- it('should clean output', () => {
55
- const terminalManager = createMockTerminalManager();
56
- const manager = new REPLSessionManager(terminalManager);
57
- const nodeOutput = manager.cleanOutput('x = 1\n> ', 'x = 1', 'node');
58
- const pythonOutput = manager.cleanOutput('>>> x = 1\n>>> ', 'x = 1', 'python');
59
- expect(nodeOutput).to.not.include('>');
60
- expect(pythonOutput).to.not.include('>>>');
61
- });
62
- it('should handle multi-line code', async () => {
63
- const terminalManager = createMockTerminalManager();
64
- const manager = new REPLSessionManager(terminalManager);
65
- // Mock implementation for Python indentation
66
- terminalManager.getNewOutput.onFirstCall().returns('>>> ');
67
- terminalManager.getNewOutput.onSecondCall().returns('... ');
68
- terminalManager.getNewOutput.onThirdCall().returns('... ');
69
- terminalManager.getNewOutput.onCall(3).returns('result\n>>> ');
70
- const multilineCode = 'for i in range(5):\n print(i)';
71
- const result = await manager.handleMultilineCode(12345, multilineCode, 'python', 1000);
72
- expect(result.success).to.be.true;
73
- expect(terminalManager.sendInputToProcess.callCount).to.be.at.least(2);
74
- });
75
- });
@@ -1,63 +0,0 @@
1
- /**
2
- * Client-side utility for interacting with the REPL functionality
3
- */
4
- interface ApiClient {
5
- executeCommand: (command: string, params?: any) => Promise<any>;
6
- }
7
- interface ExecuteOptions {
8
- timeout?: number;
9
- stopOnError?: boolean;
10
- }
11
- export declare class REPLClient {
12
- private apiClient;
13
- private sessions;
14
- constructor(apiClient: ApiClient);
15
- /**
16
- * Create a new REPL session for a specific language
17
- * @param language - Language for the REPL (python, node, bash)
18
- * @param options - Optional configuration
19
- * @returns Session information
20
- */
21
- createSession(language: string, options?: Record<string, any>): Promise<any>;
22
- /**
23
- * Execute code in an existing REPL session
24
- * @param pid - Process ID of the session
25
- * @param code - Code to execute
26
- * @param options - Optional execution options
27
- * @returns Execution results
28
- */
29
- executeCode(pid: number, code: string, options?: ExecuteOptions): Promise<any>;
30
- /**
31
- * List all active REPL sessions
32
- * @returns List of active sessions
33
- */
34
- listSessions(): Promise<any>;
35
- /**
36
- * Close a specific REPL session
37
- * @param pid - Process ID to close
38
- * @returns Result indicating success
39
- */
40
- closeSession(pid: number): Promise<any>;
41
- /**
42
- * Close all idle REPL sessions
43
- * @param maxIdleMs - Maximum idle time in milliseconds
44
- * @returns Result with number of closed sessions
45
- */
46
- closeIdleSessions(maxIdleMs?: number): Promise<any>;
47
- /**
48
- * Execute a multi-line code block in the appropriate REPL session
49
- * @param codeBlock - Code block with language marker
50
- * @param options - Optional execution options
51
- * @returns Execution results
52
- */
53
- executeCodeBlock(codeBlock: string, options?: ExecuteOptions): Promise<any>;
54
- /**
55
- * Run a simple one-liner code snippet
56
- * @param language - The programming language
57
- * @param code - Code to execute (single line)
58
- * @param options - Optional execution options
59
- * @returns Execution results
60
- */
61
- runSnippet(language: string, code: string, options?: ExecuteOptions): Promise<any>;
62
- }
63
- export {};
@@ -1,217 +0,0 @@
1
- /**
2
- * Client-side utility for interacting with the REPL functionality
3
- */
4
- export class REPLClient {
5
- constructor(apiClient) {
6
- this.apiClient = apiClient;
7
- this.sessions = {};
8
- }
9
- /**
10
- * Create a new REPL session for a specific language
11
- * @param language - Language for the REPL (python, node, bash)
12
- * @param options - Optional configuration
13
- * @returns Session information
14
- */
15
- async createSession(language, options = {}) {
16
- try {
17
- const response = await this.apiClient.executeCommand('repl.create', {
18
- language,
19
- options
20
- });
21
- if (response.success && response.pid) {
22
- this.sessions[response.pid] = {
23
- language,
24
- pid: response.pid,
25
- createdAt: new Date()
26
- };
27
- }
28
- return response;
29
- }
30
- catch (error) {
31
- console.error('Failed to create REPL session:', error);
32
- return {
33
- success: false,
34
- error: error.message || 'Failed to create REPL session'
35
- };
36
- }
37
- }
38
- /**
39
- * Execute code in an existing REPL session
40
- * @param pid - Process ID of the session
41
- * @param code - Code to execute
42
- * @param options - Optional execution options
43
- * @returns Execution results
44
- */
45
- async executeCode(pid, code, options = {}) {
46
- try {
47
- return await this.apiClient.executeCommand('repl.execute', {
48
- pid,
49
- code,
50
- options
51
- });
52
- }
53
- catch (error) {
54
- console.error('Failed to execute code:', error);
55
- return {
56
- success: false,
57
- error: error.message || 'Failed to execute code'
58
- };
59
- }
60
- }
61
- /**
62
- * List all active REPL sessions
63
- * @returns List of active sessions
64
- */
65
- async listSessions() {
66
- try {
67
- return await this.apiClient.executeCommand('repl.list');
68
- }
69
- catch (error) {
70
- console.error('Failed to list REPL sessions:', error);
71
- return {
72
- success: false,
73
- error: error.message || 'Failed to list REPL sessions'
74
- };
75
- }
76
- }
77
- /**
78
- * Close a specific REPL session
79
- * @param pid - Process ID to close
80
- * @returns Result indicating success
81
- */
82
- async closeSession(pid) {
83
- try {
84
- const response = await this.apiClient.executeCommand('repl.close', { pid });
85
- if (response.success) {
86
- delete this.sessions[pid];
87
- }
88
- return response;
89
- }
90
- catch (error) {
91
- console.error('Failed to close REPL session:', error);
92
- return {
93
- success: false,
94
- error: error.message || 'Failed to close REPL session'
95
- };
96
- }
97
- }
98
- /**
99
- * Close all idle REPL sessions
100
- * @param maxIdleMs - Maximum idle time in milliseconds
101
- * @returns Result with number of closed sessions
102
- */
103
- async closeIdleSessions(maxIdleMs) {
104
- try {
105
- const response = await this.apiClient.executeCommand('repl.closeIdle', { maxIdleMs });
106
- // If successful, refresh our local session cache
107
- if (response.success && response.closedCount > 0) {
108
- const activeSessionsResponse = await this.listSessions();
109
- if (activeSessionsResponse.success) {
110
- // Reset our session tracking
111
- this.sessions = {};
112
- // Add back active sessions
113
- activeSessionsResponse.sessions.forEach((session) => {
114
- this.sessions[session.pid] = {
115
- language: session.language,
116
- pid: session.pid,
117
- createdAt: new Date(session.startTime)
118
- };
119
- });
120
- }
121
- }
122
- return response;
123
- }
124
- catch (error) {
125
- console.error('Failed to close idle REPL sessions:', error);
126
- return {
127
- success: false,
128
- error: error.message || 'Failed to close idle REPL sessions'
129
- };
130
- }
131
- }
132
- /**
133
- * Execute a multi-line code block in the appropriate REPL session
134
- * @param codeBlock - Code block with language marker
135
- * @param options - Optional execution options
136
- * @returns Execution results
137
- */
138
- async executeCodeBlock(codeBlock, options = {}) {
139
- try {
140
- // Parse code block format with language marker
141
- // Example: ```python
142
- // print("Hello")
143
- // ```
144
- const match = codeBlock.match(/```(\w+)\s*\n([\s\S]+?)```/);
145
- if (!match) {
146
- return {
147
- success: false,
148
- error: 'Invalid code block format. Use ```language\\ncode```'
149
- };
150
- }
151
- const language = match[1].toLowerCase();
152
- const code = match[2].trim();
153
- // Find or create session for this language
154
- let pid = null;
155
- // Look for existing session
156
- for (const sessionPid in this.sessions) {
157
- if (this.sessions[sessionPid].language === language) {
158
- pid = parseInt(sessionPid);
159
- break;
160
- }
161
- }
162
- // Create new session if needed
163
- if (!pid) {
164
- const createResult = await this.createSession(language, options);
165
- if (!createResult.success) {
166
- return createResult;
167
- }
168
- pid = createResult.pid;
169
- }
170
- // Execute the code
171
- return await this.executeCode(pid, code, options);
172
- }
173
- catch (error) {
174
- console.error('Failed to execute code block:', error);
175
- return {
176
- success: false,
177
- error: error.message || 'Failed to execute code block'
178
- };
179
- }
180
- }
181
- /**
182
- * Run a simple one-liner code snippet
183
- * @param language - The programming language
184
- * @param code - Code to execute (single line)
185
- * @param options - Optional execution options
186
- * @returns Execution results
187
- */
188
- async runSnippet(language, code, options = {}) {
189
- try {
190
- // Look for existing session
191
- let pid = null;
192
- for (const sessionPid in this.sessions) {
193
- if (this.sessions[sessionPid].language === language.toLowerCase()) {
194
- pid = parseInt(sessionPid);
195
- break;
196
- }
197
- }
198
- // Create new session if needed
199
- if (!pid) {
200
- const createResult = await this.createSession(language, options);
201
- if (!createResult.success) {
202
- return createResult;
203
- }
204
- pid = createResult.pid;
205
- }
206
- // Execute the code
207
- return await this.executeCode(pid, code, options);
208
- }
209
- catch (error) {
210
- console.error('Failed to run snippet:', error);
211
- return {
212
- success: false,
213
- error: error.message || 'Failed to run snippet'
214
- };
215
- }
216
- }
217
- }
@@ -1,82 +0,0 @@
1
- /**
2
- * Client-side utility for SSH interactions
3
- */
4
- interface ApiClient {
5
- executeCommand: (command: string, params?: any) => Promise<any>;
6
- }
7
- interface SSHSession {
8
- host: string;
9
- username?: string;
10
- pid: number;
11
- createdAt: Date;
12
- lastActivity: Date;
13
- }
14
- interface SSHOptions {
15
- username?: string;
16
- port?: number;
17
- identity?: string;
18
- password?: string;
19
- timeout?: number;
20
- stopOnError?: boolean;
21
- }
22
- export declare class SSHClient {
23
- private apiClient;
24
- private activeSessions;
25
- constructor(apiClient: ApiClient);
26
- /**
27
- * Connect to an SSH server
28
- * @param host - SSH host to connect to
29
- * @param options - Connection options
30
- * @returns Connection information
31
- */
32
- connect(host: string, options?: SSHOptions): Promise<any>;
33
- /**
34
- * Execute a command on the remote server
35
- * @param pid - Process ID of the SSH session
36
- * @param command - Command to execute
37
- * @param options - Execution options
38
- * @returns Command results
39
- */
40
- executeCommand(pid: number | string, command: string, options?: SSHOptions): Promise<any>;
41
- /**
42
- * Execute a command on a specific host (creates session if needed)
43
- * @param host - SSH host
44
- * @param command - Command to execute
45
- * @param options - Connection and execution options
46
- * @returns Command results
47
- */
48
- executeCommandOnHost(host: string, command: string, options?: SSHOptions): Promise<any>;
49
- /**
50
- * Execute multiple commands in sequence
51
- * @param pid - Process ID of the SSH session
52
- * @param commands - List of commands to execute
53
- * @param options - Execution options
54
- * @returns Results for each command
55
- */
56
- executeSequence(pid: number | string, commands: string[], options?: SSHOptions): Promise<any>;
57
- /**
58
- * Execute a multi-line script as separate commands
59
- * @param pid - Process ID of the SSH session
60
- * @param script - Multi-line script
61
- * @param options - Execution options
62
- * @returns Script execution results
63
- */
64
- executeScript(pid: number | string, script: string, options?: SSHOptions): Promise<any>;
65
- /**
66
- * Close an SSH session
67
- * @param pid - Process ID to close
68
- * @returns Result indicating success
69
- */
70
- disconnect(pid: number | string): Promise<any>;
71
- /**
72
- * List all active SSH sessions
73
- * @returns List of active sessions
74
- */
75
- listSessions(): SSHSession[];
76
- /**
77
- * Close all SSH sessions
78
- * @returns Result with number of closed sessions
79
- */
80
- disconnectAll(): Promise<any>;
81
- }
82
- export {};
@@ -1,200 +0,0 @@
1
- /**
2
- * Client-side utility for SSH interactions
3
- */
4
- export class SSHClient {
5
- constructor(apiClient) {
6
- this.apiClient = apiClient;
7
- this.activeSessions = {};
8
- }
9
- /**
10
- * Connect to an SSH server
11
- * @param host - SSH host to connect to
12
- * @param options - Connection options
13
- * @returns Connection information
14
- */
15
- async connect(host, options = {}) {
16
- try {
17
- // Check if we already have an active session for this host
18
- for (const pid in this.activeSessions) {
19
- const session = this.activeSessions[pid];
20
- if (session.host === host && session.username === options.username) {
21
- return {
22
- success: true,
23
- pid: parseInt(pid),
24
- host,
25
- username: options.username,
26
- message: `Reusing existing SSH session to ${host} (PID: ${pid})`
27
- };
28
- }
29
- }
30
- // Create new session
31
- const response = await this.apiClient.executeCommand('ssh.create', {
32
- host,
33
- ...options
34
- });
35
- if (response.success && response.pid) {
36
- this.activeSessions[response.pid] = {
37
- host,
38
- username: options.username,
39
- pid: response.pid,
40
- createdAt: new Date(),
41
- lastActivity: new Date()
42
- };
43
- }
44
- return response;
45
- }
46
- catch (error) {
47
- console.error('SSH connection failed:', error);
48
- return {
49
- success: false,
50
- error: error.message || 'SSH connection failed'
51
- };
52
- }
53
- }
54
- /**
55
- * Execute a command on the remote server
56
- * @param pid - Process ID of the SSH session
57
- * @param command - Command to execute
58
- * @param options - Execution options
59
- * @returns Command results
60
- */
61
- async executeCommand(pid, command, options = {}) {
62
- try {
63
- // Update last activity time
64
- const pidNum = typeof pid === 'string' ? parseInt(pid) : pid;
65
- if (this.activeSessions[pidNum]) {
66
- this.activeSessions[pidNum].lastActivity = new Date();
67
- }
68
- return await this.apiClient.executeCommand('ssh.execute', {
69
- pid,
70
- command,
71
- options
72
- });
73
- }
74
- catch (error) {
75
- console.error('SSH command execution failed:', error);
76
- return {
77
- success: false,
78
- error: error.message || 'SSH command execution failed'
79
- };
80
- }
81
- }
82
- /**
83
- * Execute a command on a specific host (creates session if needed)
84
- * @param host - SSH host
85
- * @param command - Command to execute
86
- * @param options - Connection and execution options
87
- * @returns Command results
88
- */
89
- async executeCommandOnHost(host, command, options = {}) {
90
- try {
91
- // First connect (or reuse connection)
92
- const connResult = await this.connect(host, options);
93
- if (!connResult.success) {
94
- return connResult;
95
- }
96
- // Then execute the command
97
- const result = await this.executeCommand(connResult.pid, command, options);
98
- // Include host info in the result
99
- return {
100
- ...result,
101
- host,
102
- pid: connResult.pid
103
- };
104
- }
105
- catch (error) {
106
- console.error('SSH command execution failed:', error);
107
- return {
108
- success: false,
109
- error: error.message || 'SSH command execution failed'
110
- };
111
- }
112
- }
113
- /**
114
- * Execute multiple commands in sequence
115
- * @param pid - Process ID of the SSH session
116
- * @param commands - List of commands to execute
117
- * @param options - Execution options
118
- * @returns Results for each command
119
- */
120
- async executeSequence(pid, commands, options = {}) {
121
- const results = [];
122
- for (const command of commands) {
123
- const result = await this.executeCommand(pid, command, options);
124
- results.push(result);
125
- // Stop on first error if requested
126
- if (options.stopOnError && !result.success) {
127
- break;
128
- }
129
- }
130
- return {
131
- success: results.every(r => r.success),
132
- results,
133
- completedCommands: results.length
134
- };
135
- }
136
- /**
137
- * Execute a multi-line script as separate commands
138
- * @param pid - Process ID of the SSH session
139
- * @param script - Multi-line script
140
- * @param options - Execution options
141
- * @returns Script execution results
142
- */
143
- async executeScript(pid, script, options = {}) {
144
- const commands = script
145
- .split('\n')
146
- .map(line => line.trim())
147
- .filter(line => line && !line.startsWith('#'));
148
- return await this.executeSequence(pid, commands, options);
149
- }
150
- /**
151
- * Close an SSH session
152
- * @param pid - Process ID to close
153
- * @returns Result indicating success
154
- */
155
- async disconnect(pid) {
156
- try {
157
- const response = await this.apiClient.executeCommand('repl.close', {
158
- pid
159
- });
160
- const pidNum = typeof pid === 'string' ? parseInt(pid) : pid;
161
- if (response.success) {
162
- delete this.activeSessions[pidNum];
163
- }
164
- return response;
165
- }
166
- catch (error) {
167
- console.error('Failed to close SSH session:', error);
168
- return {
169
- success: false,
170
- error: error.message || 'Failed to close SSH session'
171
- };
172
- }
173
- }
174
- /**
175
- * List all active SSH sessions
176
- * @returns List of active sessions
177
- */
178
- listSessions() {
179
- return Object.values(this.activeSessions);
180
- }
181
- /**
182
- * Close all SSH sessions
183
- * @returns Result with number of closed sessions
184
- */
185
- async disconnectAll() {
186
- const pids = Object.keys(this.activeSessions);
187
- let closedCount = 0;
188
- for (const pid of pids) {
189
- const result = await this.disconnect(pid);
190
- if (result.success) {
191
- closedCount++;
192
- }
193
- }
194
- return {
195
- success: true,
196
- closedCount,
197
- message: `Closed ${closedCount} SSH session(s)`
198
- };
199
- }
200
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-manager.js","sourceRoot":"","sources":["../src/command-manager.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../src/config-manager.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,oDAAoD;AACpD,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;AACtC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;AAEpE,yCAAyC;AACzC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAChE,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,QAAQ;AAEjE,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC,CAAC,eAAe"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"custom-stdio.js","sourceRoot":"","sources":["../src/custom-stdio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC;;;GAGG;AACH,MAAM,OAAO,4BAA6B,SAAQ,oBAAoB;IACpE;QACE,wEAAwE;QACxE,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QACjD,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,UAAS,MAAW;YACzC,2DAA2D;YAC3D,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjE,OAAO,IAAI,CAAC,CAAA,+BAA+B;YAC7C,CAAC;YACD,OAAO,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,SAAgB,CAAC,CAAC;QACrE,CAAC,CAAC;QAEF,KAAK,EAAE,CAAC;QAER,kEAAkE;QAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACzF,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-handlers.js","sourceRoot":"","sources":["../src/error-handlers.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,CAAC,sBAAsB,EAAE;QAC9B,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;IACH,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;QACtD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}