shellx-ai 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +504 -424
- package/dist/cbor-compat.js +4 -1
- package/dist/cbor-compat.js.map +1 -1
- package/dist/domain-manager.js +11 -8
- package/dist/domain-manager.js.map +1 -1
- package/dist/error-handler.js +5 -2
- package/dist/error-handler.js.map +1 -1
- package/dist/index.js +5 -34
- package/dist/index.js.map +1 -1
- package/dist/shell/output-buffer.js +18 -5
- package/dist/shell/output-buffer.js.map +1 -1
- package/dist/shell/shell-command-executor.js +77 -21
- package/dist/shell/shell-command-executor.js.map +1 -1
- package/dist/utils/retry-helper.js +5 -2
- package/dist/utils/retry-helper.js.map +1 -1
- package/dist/utils.js +6 -3
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
* This module provides functionality for executing shell commands with
|
|
5
5
|
* output monitoring, timeout handling, and result management.
|
|
6
6
|
*/
|
|
7
|
+
import { createLogger } from "../logger.js";
|
|
8
|
+
// Create logger for ShellCommandExecutor
|
|
9
|
+
const logger = createLogger("ShellCommandExecutor");
|
|
7
10
|
import { v4 as uuidv4 } from "uuid";
|
|
8
11
|
import { OutputBuffer } from "./output-buffer.js";
|
|
9
12
|
/** Session ID for PTY terminal output */
|
|
@@ -46,10 +49,63 @@ export class ShellCommandExecutor {
|
|
|
46
49
|
* ```
|
|
47
50
|
*/
|
|
48
51
|
handleShellOutput(chunks) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
try {
|
|
53
|
+
const [sessionId, , dataArrays] = chunks;
|
|
54
|
+
// Validate chunks structure
|
|
55
|
+
if (!Array.isArray(chunks) || chunks.length < 3) {
|
|
56
|
+
logger.error(`❌ Invalid chunks structure:`, {
|
|
57
|
+
length: chunks?.length,
|
|
58
|
+
chunks: chunks
|
|
59
|
+
});
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
// Validate dataArrays is an array
|
|
63
|
+
if (!Array.isArray(dataArrays)) {
|
|
64
|
+
logger.error(`❌ dataArrays is not an array:`, {
|
|
65
|
+
type: typeof dataArrays,
|
|
66
|
+
value: dataArrays
|
|
67
|
+
});
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// Only process COMMAND_PTY_SID sessions
|
|
71
|
+
if (sessionId === COMMAND_PTY_SID) {
|
|
72
|
+
// Filter and validate each data array
|
|
73
|
+
const validDataArrays = dataArrays.filter((data, index) => {
|
|
74
|
+
if (!data) {
|
|
75
|
+
logger.warn(`⚠️ Skipping null/undefined chunk at index ${index}`);
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
// Check if it's a Uint8Array
|
|
79
|
+
if (!(data instanceof Uint8Array)) {
|
|
80
|
+
// Try to convert if it's an array-like object
|
|
81
|
+
if (Array.isArray(data) || data.buffer instanceof ArrayBuffer) {
|
|
82
|
+
try {
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
logger.warn(`⚠️ Cannot convert chunk at index ${index}:`, {
|
|
87
|
+
type: typeof data,
|
|
88
|
+
constructor: data?.constructor?.name
|
|
89
|
+
});
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
logger.warn(`⚠️ Skipping invalid chunk at index ${index}:`, {
|
|
94
|
+
type: typeof data,
|
|
95
|
+
isUint8Array: data instanceof Uint8Array,
|
|
96
|
+
constructor: data?.constructor?.name
|
|
97
|
+
});
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
return true;
|
|
101
|
+
});
|
|
102
|
+
if (validDataArrays.length > 0) {
|
|
103
|
+
this.outputBuffer.handleShellOutput(sessionId, validDataArrays);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
logger.error(`❌ Error in handleShellOutput:`, error);
|
|
53
109
|
}
|
|
54
110
|
}
|
|
55
111
|
/**
|
|
@@ -71,7 +127,7 @@ export class ShellCommandExecutor {
|
|
|
71
127
|
async executeShellCommand(command, options = {}) {
|
|
72
128
|
// Validate client
|
|
73
129
|
if (!this.client) {
|
|
74
|
-
|
|
130
|
+
logger.error("❌ Client is not initialized");
|
|
75
131
|
return {
|
|
76
132
|
success: false,
|
|
77
133
|
output: "",
|
|
@@ -82,16 +138,16 @@ export class ShellCommandExecutor {
|
|
|
82
138
|
const startTime = Date.now();
|
|
83
139
|
const title = options.title || `Execute command: ${command}`;
|
|
84
140
|
const timeout = options.timeout || 3000;
|
|
85
|
-
|
|
86
|
-
|
|
141
|
+
logger.info(`🔨 ${title}`);
|
|
142
|
+
logger.debug(`⏱️ Timeout: ${timeout}ms`);
|
|
87
143
|
return (async () => {
|
|
88
144
|
const commandId = uuidv4();
|
|
89
|
-
|
|
145
|
+
logger.debug(`🔑 Generated command ID: ${commandId}`);
|
|
90
146
|
// Create promise that will be resolved by output buffer
|
|
91
147
|
return new Promise((resolve, reject) => {
|
|
92
148
|
// Register command promise
|
|
93
149
|
this.outputBuffer.registerCommand(commandId, resolve, reject, startTime, options, command);
|
|
94
|
-
|
|
150
|
+
logger.debug(`📋 [ShellCommandExecutor] Pending commands: ${this.outputBuffer.getPendingCount()}`);
|
|
95
151
|
// Set timeout
|
|
96
152
|
const timeoutId = setTimeout(() => {
|
|
97
153
|
if (this.outputBuffer.hasCommand(commandId)) {
|
|
@@ -124,13 +180,13 @@ export class ShellCommandExecutor {
|
|
|
124
180
|
},
|
|
125
181
|
};
|
|
126
182
|
await this.client.sendMessageWithTaskId({ actions: shellAction }, "command", commandId, timeout);
|
|
127
|
-
|
|
183
|
+
logger.debug(`📤 Command sent: ${commandId}`);
|
|
128
184
|
}
|
|
129
185
|
catch (error) {
|
|
130
186
|
clearTimeout(timeoutId);
|
|
131
187
|
this.outputBuffer.unregisterCommand(commandId);
|
|
132
188
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
133
|
-
|
|
189
|
+
logger.error(`❌ Failed to send command: ${command}`, error);
|
|
134
190
|
resolve({
|
|
135
191
|
success: false,
|
|
136
192
|
output: "",
|
|
@@ -175,7 +231,7 @@ export class ShellCommandExecutor {
|
|
|
175
231
|
return result;
|
|
176
232
|
}
|
|
177
233
|
catch (error) {
|
|
178
|
-
|
|
234
|
+
logger.error(`❌ Command failed: ${command}`, error);
|
|
179
235
|
throw error;
|
|
180
236
|
}
|
|
181
237
|
}
|
|
@@ -203,11 +259,11 @@ export class ShellCommandExecutor {
|
|
|
203
259
|
async executeShellCommands(commands, options) {
|
|
204
260
|
const results = [];
|
|
205
261
|
try {
|
|
206
|
-
|
|
262
|
+
logger.info(`🔨 Starting execution of ${commands.length} commands`);
|
|
207
263
|
for (const [index, cmd] of commands.entries()) {
|
|
208
264
|
try {
|
|
209
265
|
const title = cmd.title || `Command ${index + 1}/${commands.length}: ${cmd.command}`;
|
|
210
|
-
|
|
266
|
+
logger.info(`🔨 ${title}`);
|
|
211
267
|
const result = await this.executeShellCommand(cmd.command, {
|
|
212
268
|
title,
|
|
213
269
|
timeout: options?.timeout,
|
|
@@ -216,7 +272,7 @@ export class ShellCommandExecutor {
|
|
|
216
272
|
results.push(result);
|
|
217
273
|
}
|
|
218
274
|
catch (error) {
|
|
219
|
-
|
|
275
|
+
logger.error(`❌ Command ${index + 1} failed:`, error);
|
|
220
276
|
if (options?.continueOnError) {
|
|
221
277
|
results.push({
|
|
222
278
|
success: false,
|
|
@@ -231,11 +287,11 @@ export class ShellCommandExecutor {
|
|
|
231
287
|
}
|
|
232
288
|
}
|
|
233
289
|
}
|
|
234
|
-
|
|
290
|
+
logger.info(`✅ All commands completed`);
|
|
235
291
|
return results;
|
|
236
292
|
}
|
|
237
293
|
catch (error) {
|
|
238
|
-
|
|
294
|
+
logger.error(`❌ Batch command execution failed:`, error);
|
|
239
295
|
throw error;
|
|
240
296
|
}
|
|
241
297
|
}
|
|
@@ -282,7 +338,7 @@ export class ShellCommandExecutor {
|
|
|
282
338
|
*/
|
|
283
339
|
async executeKeyAction(keyCode, options = {}) {
|
|
284
340
|
try {
|
|
285
|
-
|
|
341
|
+
logger.info(`🔑 Executing key action: ${keyCode}${options.longPress ? " (long press)" : ""}`);
|
|
286
342
|
const keyAction = {
|
|
287
343
|
title: `Key press: ${keyCode}${options.longPress ? " (long press)" : ""}`,
|
|
288
344
|
actions: [
|
|
@@ -300,11 +356,11 @@ export class ShellCommandExecutor {
|
|
|
300
356
|
if (options.waitAfterMs) {
|
|
301
357
|
await new Promise((resolve) => setTimeout(resolve, options.waitAfterMs));
|
|
302
358
|
}
|
|
303
|
-
|
|
359
|
+
logger.info(`✅ Key action completed: ${keyCode}`);
|
|
304
360
|
return true;
|
|
305
361
|
}
|
|
306
362
|
catch (error) {
|
|
307
|
-
|
|
363
|
+
logger.error(`❌ Key action failed: ${keyCode}`, error);
|
|
308
364
|
return false;
|
|
309
365
|
}
|
|
310
366
|
}
|
|
@@ -315,7 +371,7 @@ export class ShellCommandExecutor {
|
|
|
315
371
|
*/
|
|
316
372
|
getClient() {
|
|
317
373
|
if (!this.client) {
|
|
318
|
-
|
|
374
|
+
logger.error("❌ Attempted to access null client");
|
|
319
375
|
return null;
|
|
320
376
|
}
|
|
321
377
|
return this.client;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-command-executor.js","sourceRoot":"","sources":["../../src/shell/shell-command-executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"shell-command-executor.js","sourceRoot":"","sources":["../../src/shell/shell-command-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
* This module provides a generic retry mechanism with configurable attempts,
|
|
5
5
|
* delays, and callbacks for handling retries and failures.
|
|
6
6
|
*/
|
|
7
|
+
import { createLogger } from "../logger.js";
|
|
8
|
+
// Create logger for RetryHelper
|
|
9
|
+
const logger = createLogger("RetryHelper");
|
|
7
10
|
/**
|
|
8
11
|
* RetryHelper class provides a generic retry mechanism for async operations
|
|
9
12
|
*
|
|
@@ -45,7 +48,7 @@ export class RetryHelper {
|
|
|
45
48
|
catch (error) {
|
|
46
49
|
// Check if this is the last attempt
|
|
47
50
|
if (attempt === retry) {
|
|
48
|
-
|
|
51
|
+
logger.debug(`❌ Failed after ${retry} attempts, returning undefined:`, error);
|
|
49
52
|
return undefined;
|
|
50
53
|
}
|
|
51
54
|
// Call retry callback if provided
|
|
@@ -53,7 +56,7 @@ export class RetryHelper {
|
|
|
53
56
|
onRetry(attempt, error);
|
|
54
57
|
}
|
|
55
58
|
// Log retry attempt
|
|
56
|
-
|
|
59
|
+
logger.debug(`🔄 Attempt ${attempt} failed, retrying in ${delay}ms...`);
|
|
57
60
|
// Wait before next attempt
|
|
58
61
|
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
59
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry-helper.js","sourceRoot":"","sources":["../../src/utils/retry-helper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"retry-helper.js","sourceRoot":"","sources":["../../src/utils/retry-helper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,gCAAgC;AAChC,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;AAc3C;;;;;;;;;;GAUG;AACH,MAAM,OAAO,WAAW;IACtB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAClB,SAA2B,EAC3B,UAAwB,EAAE;QAE1B,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAErD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC;gBACH,OAAO,MAAM,SAAS,EAAE,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,oCAAoC;gBACpC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;oBACtB,MAAM,CAAC,KAAK,CAAC,kBAAkB,KAAK,iCAAiC,EAAE,KAAK,CAAC,CAAC;oBAC9E,OAAO,SAAS,CAAC;gBACnB,CAAC;gBAED,kCAAkC;gBAClC,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC1B,CAAC;gBAED,oBAAoB;gBACpB,MAAM,CAAC,KAAK,CAAC,cAAc,OAAO,wBAAwB,KAAK,OAAO,CAAC,CAAC;gBAExE,2BAA2B;gBAC3B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc,CACzB,SAA2B,EAC3B,UAAwB,EAAE;QAE1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEtD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
package/dist/utils.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { createLogger } from "./logger.js";
|
|
2
|
+
// Create logger for Utils
|
|
3
|
+
const logger = createLogger("Utils");
|
|
1
4
|
export const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
2
5
|
/**
|
|
3
6
|
* Safely get environment variable, compatible with both browser and Node.js environments
|
|
@@ -9,7 +12,7 @@ export function getEnvVar(key) {
|
|
|
9
12
|
else if (typeof window !== "undefined" && window.localStorage) {
|
|
10
13
|
const item = window.localStorage.getItem(key);
|
|
11
14
|
if (item) {
|
|
12
|
-
|
|
15
|
+
logger.debug("Retrieved environment variable from localStorage:", key);
|
|
13
16
|
return item;
|
|
14
17
|
}
|
|
15
18
|
}
|
|
@@ -24,7 +27,7 @@ export function setEnvVar(key, value) {
|
|
|
24
27
|
}
|
|
25
28
|
else if (typeof window !== "undefined" && window.localStorage) {
|
|
26
29
|
window.localStorage.setItem(key, value);
|
|
27
|
-
|
|
30
|
+
logger.debug("Saved environment variable:", key, value);
|
|
28
31
|
}
|
|
29
32
|
}
|
|
30
33
|
/**
|
|
@@ -36,7 +39,7 @@ export function deleteEnvVar(key) {
|
|
|
36
39
|
}
|
|
37
40
|
else if (typeof window !== "undefined" && window.localStorage) {
|
|
38
41
|
window.localStorage.removeItem(key);
|
|
39
|
-
|
|
42
|
+
logger.debug("Deleted environment variable:", key);
|
|
40
43
|
}
|
|
41
44
|
}
|
|
42
45
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,EAAU,EAAiB,EAAE,CAChD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAChE,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,IAAI,EAAE,CAAC;YACT,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,0BAA0B;AAC1B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;AAErC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,EAAU,EAAiB,EAAE,CAChD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAChE,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,KAAK,CAAC,mDAAmD,EAAE,GAAG,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,KAAa;IAClD,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC3B,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAChE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAChE,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
|