@wonderwhy-er/desktop-commander 0.2.1 → 0.2.3
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 +69 -9
- package/dist/command-manager.js.map +1 -0
- package/dist/config-manager.js.map +1 -0
- package/dist/config.js.map +1 -0
- package/dist/custom-stdio.js.map +1 -0
- package/dist/error-handlers.js.map +1 -0
- package/dist/handlers/edit-search-handlers.js.map +1 -0
- package/dist/handlers/filesystem-handlers.js +2 -4
- package/dist/handlers/filesystem-handlers.js.map +1 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/handlers/process-handlers.js.map +1 -0
- package/dist/handlers/terminal-handlers.js.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/server.js +41 -25
- package/dist/server.js.map +1 -0
- package/dist/setup-claude-server.js +44 -36
- package/dist/terminal-manager.d.ts +7 -1
- package/dist/terminal-manager.js +9 -1
- package/dist/terminal-manager.js.map +1 -0
- package/dist/tools/config.js.map +1 -0
- package/dist/tools/edit.js +17 -12
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/execute.js +65 -4
- package/dist/tools/execute.js.map +1 -0
- package/dist/tools/filesystem.d.ts +10 -0
- package/dist/tools/filesystem.js +290 -41
- package/dist/tools/filesystem.js.map +1 -0
- package/dist/tools/fuzzySearch.js.map +1 -0
- package/dist/tools/improved-process-tools.d.ts +24 -0
- package/dist/tools/improved-process-tools.js +312 -0
- package/dist/tools/mime-types.js.map +1 -0
- package/dist/tools/process.js.map +1 -0
- package/dist/tools/schemas.d.ts +6 -3
- package/dist/tools/schemas.js +2 -2
- package/dist/tools/schemas.js.map +1 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/capture.d.ts +2 -0
- package/dist/utils/capture.js +17 -8
- package/dist/utils/capture.js.map +1 -0
- package/dist/utils/fuzzySearchLogger.js.map +1 -0
- package/dist/utils/lineEndingHandler.js.map +1 -0
- package/dist/utils/process-detection.d.ts +23 -0
- package/dist/utils/process-detection.js +150 -0
- package/dist/utils/system-info.d.ts +30 -0
- package/dist/utils/system-info.js +146 -0
- package/dist/utils/trackTools.js.map +1 -0
- package/dist/utils/withTimeout.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -0
- package/package.json +2 -1
package/dist/tools/edit.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { writeFile, readFileInternal } from './filesystem.js';
|
|
2
2
|
import { recursiveFuzzyIndexOf, getSimilarityRatio } from './fuzzySearch.js';
|
|
3
3
|
import { capture } from '../utils/capture.js';
|
|
4
4
|
import { EditBlockArgsSchema } from "./schemas.js";
|
|
@@ -64,15 +64,6 @@ function getCharacterCodeData(expected, actual) {
|
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
66
|
export async function performSearchReplace(filePath, block, expectedReplacements = 1) {
|
|
67
|
-
// Check for empty search string to prevent infinite loops
|
|
68
|
-
if (block.search === "") {
|
|
69
|
-
return {
|
|
70
|
-
content: [{
|
|
71
|
-
type: "text",
|
|
72
|
-
text: "Empty search strings are not allowed. Please provide a non-empty string to search for."
|
|
73
|
-
}],
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
67
|
// Get file extension for telemetry using path module
|
|
77
68
|
const fileExtension = path.extname(filePath).toLowerCase();
|
|
78
69
|
// Capture file extension and string sizes in telemetry without capturing the file path
|
|
@@ -84,10 +75,22 @@ export async function performSearchReplace(filePath, block, expectedReplacements
|
|
|
84
75
|
newStringLines: block.replace.split('\n').length,
|
|
85
76
|
expectedReplacements: expectedReplacements
|
|
86
77
|
});
|
|
87
|
-
//
|
|
88
|
-
|
|
78
|
+
// Check for empty search string to prevent infinite loops
|
|
79
|
+
if (block.search === "") {
|
|
80
|
+
// Capture file extension in telemetry without capturing the file path
|
|
81
|
+
capture('server_edit_block_empty_search', { fileExtension: fileExtension, expectedReplacements });
|
|
82
|
+
return {
|
|
83
|
+
content: [{
|
|
84
|
+
type: "text",
|
|
85
|
+
text: "Empty search strings are not allowed. Please provide a non-empty string to search for."
|
|
86
|
+
}],
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
// Read file as plain string without status messages
|
|
90
|
+
const content = await readFileInternal(filePath, 0, Number.MAX_SAFE_INTEGER);
|
|
89
91
|
// Make sure content is a string
|
|
90
92
|
if (typeof content !== 'string') {
|
|
93
|
+
capture('server_edit_block_content_not_string', { fileExtension: fileExtension, expectedReplacements });
|
|
91
94
|
throw new Error('Wrong content for file ' + filePath);
|
|
92
95
|
}
|
|
93
96
|
// Get the line limit from configuration
|
|
@@ -133,6 +136,7 @@ export async function performSearchReplace(filePath, block, expectedReplacements
|
|
|
133
136
|
RECOMMENDATION: For large search/replace operations, consider breaking them into smaller chunks with fewer lines.`;
|
|
134
137
|
}
|
|
135
138
|
await writeFile(filePath, newContent);
|
|
139
|
+
capture('server_edit_block_exact_success', { fileExtension: fileExtension, expectedReplacements, hasWarning: warningMessage !== "" });
|
|
136
140
|
return {
|
|
137
141
|
content: [{
|
|
138
142
|
type: "text",
|
|
@@ -142,6 +146,7 @@ RECOMMENDATION: For large search/replace operations, consider breaking them into
|
|
|
142
146
|
}
|
|
143
147
|
// If exact match found but count doesn't match expected, inform the user
|
|
144
148
|
if (count > 0 && count !== expectedReplacements) {
|
|
149
|
+
capture('server_edit_block_unexpected_count', { fileExtension: fileExtension, expectedReplacements, expectedReplacementsCount: count });
|
|
145
150
|
return {
|
|
146
151
|
content: [{
|
|
147
152
|
type: "text",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/tools/edit.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/execute.js
CHANGED
|
@@ -56,13 +56,74 @@ export async function readOutput(args) {
|
|
|
56
56
|
isError: true,
|
|
57
57
|
};
|
|
58
58
|
}
|
|
59
|
-
const
|
|
59
|
+
const { pid, timeout_ms = 5000 } = parsed.data;
|
|
60
|
+
// Check if the process exists
|
|
61
|
+
const session = terminalManager.getSession(pid);
|
|
62
|
+
if (!session) {
|
|
63
|
+
return {
|
|
64
|
+
content: [{ type: "text", text: `No session found for PID ${pid}` }],
|
|
65
|
+
isError: true,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
// Wait for output with timeout
|
|
69
|
+
let output = "";
|
|
70
|
+
let timeoutReached = false;
|
|
71
|
+
try {
|
|
72
|
+
// Create a promise that resolves when new output is available or when timeout is reached
|
|
73
|
+
const outputPromise = new Promise((resolve) => {
|
|
74
|
+
// Check for initial output
|
|
75
|
+
const initialOutput = terminalManager.getNewOutput(pid);
|
|
76
|
+
if (initialOutput && initialOutput.length > 0) {
|
|
77
|
+
resolve(initialOutput);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
let resolved = false;
|
|
81
|
+
let interval = null;
|
|
82
|
+
let timeout = null;
|
|
83
|
+
const cleanup = () => {
|
|
84
|
+
if (interval) {
|
|
85
|
+
clearInterval(interval);
|
|
86
|
+
interval = null;
|
|
87
|
+
}
|
|
88
|
+
if (timeout) {
|
|
89
|
+
clearTimeout(timeout);
|
|
90
|
+
timeout = null;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const resolveOnce = (value, isTimeout = false) => {
|
|
94
|
+
if (resolved)
|
|
95
|
+
return;
|
|
96
|
+
resolved = true;
|
|
97
|
+
cleanup();
|
|
98
|
+
if (isTimeout)
|
|
99
|
+
timeoutReached = true;
|
|
100
|
+
resolve(value);
|
|
101
|
+
};
|
|
102
|
+
// Setup an interval to poll for output
|
|
103
|
+
interval = setInterval(() => {
|
|
104
|
+
const newOutput = terminalManager.getNewOutput(pid);
|
|
105
|
+
if (newOutput && newOutput.length > 0) {
|
|
106
|
+
resolveOnce(newOutput);
|
|
107
|
+
}
|
|
108
|
+
}, 300); // Check every 300ms
|
|
109
|
+
// Set a timeout to stop waiting
|
|
110
|
+
timeout = setTimeout(() => {
|
|
111
|
+
const finalOutput = terminalManager.getNewOutput(pid) || "";
|
|
112
|
+
resolveOnce(finalOutput, true);
|
|
113
|
+
}, timeout_ms);
|
|
114
|
+
});
|
|
115
|
+
output = await outputPromise;
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
return {
|
|
119
|
+
content: [{ type: "text", text: `Error reading output: ${error}` }],
|
|
120
|
+
isError: true,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
60
123
|
return {
|
|
61
124
|
content: [{
|
|
62
125
|
type: "text",
|
|
63
|
-
text: output
|
|
64
|
-
? `No session found for PID ${parsed.data.pid}`
|
|
65
|
-
: output || 'No new output available'
|
|
126
|
+
text: output || 'No new output available' + (timeoutReached ? ' (timeout reached)' : '')
|
|
66
127
|
}],
|
|
67
128
|
};
|
|
68
129
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../src/tools/execute.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,16 @@ export declare function readFileFromDisk(filePath: string, offset?: number, leng
|
|
|
36
36
|
* @returns File content or file result with metadata
|
|
37
37
|
*/
|
|
38
38
|
export declare function readFile(filePath: string, isUrl?: boolean, offset?: number, length?: number): Promise<FileResult>;
|
|
39
|
+
/**
|
|
40
|
+
* Read file content without status messages for internal operations
|
|
41
|
+
* This function preserves exact file content including original line endings,
|
|
42
|
+
* which is essential for edit operations that need to maintain file formatting.
|
|
43
|
+
* @param filePath Path to the file
|
|
44
|
+
* @param offset Starting line number to read from (default: 0)
|
|
45
|
+
* @param length Maximum number of lines to read (default: from config or 1000)
|
|
46
|
+
* @returns File content without status headers, with preserved line endings
|
|
47
|
+
*/
|
|
48
|
+
export declare function readFileInternal(filePath: string, offset?: number, length?: number): Promise<string>;
|
|
39
49
|
export declare function writeFile(filePath: string, content: string, mode?: 'rewrite' | 'append'): Promise<void>;
|
|
40
50
|
export interface MultiFileResult {
|
|
41
51
|
path: string;
|
package/dist/tools/filesystem.js
CHANGED
|
@@ -2,6 +2,8 @@ import fs from "fs/promises";
|
|
|
2
2
|
import path from "path";
|
|
3
3
|
import os from 'os';
|
|
4
4
|
import fetch from 'cross-fetch';
|
|
5
|
+
import { createReadStream } from 'fs';
|
|
6
|
+
import { createInterface } from 'readline';
|
|
5
7
|
import { capture } from '../utils/capture.js';
|
|
6
8
|
import { withTimeout } from '../utils/withTimeout.js';
|
|
7
9
|
import { configManager } from '../config-manager.js';
|
|
@@ -205,6 +207,214 @@ export async function readFileFromUrl(url) {
|
|
|
205
207
|
throw new Error(errorMessage);
|
|
206
208
|
}
|
|
207
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* Read file content using smart positioning for optimal performance
|
|
212
|
+
* @param filePath Path to the file (already validated)
|
|
213
|
+
* @param offset Starting line number (negative for tail behavior)
|
|
214
|
+
* @param length Maximum number of lines to read
|
|
215
|
+
* @param mimeType MIME type of the file
|
|
216
|
+
* @param includeStatusMessage Whether to include status headers (default: true)
|
|
217
|
+
* @returns File result with content
|
|
218
|
+
*/
|
|
219
|
+
async function readFileWithSmartPositioning(filePath, offset, length, mimeType, includeStatusMessage = true) {
|
|
220
|
+
const stats = await fs.stat(filePath);
|
|
221
|
+
const fileSize = stats.size;
|
|
222
|
+
const LARGE_FILE_THRESHOLD = 10 * 1024 * 1024; // 10MB threshold
|
|
223
|
+
const SMALL_READ_THRESHOLD = 100; // For very small reads, use efficient methods
|
|
224
|
+
// For negative offsets (tail behavior), use reverse reading
|
|
225
|
+
if (offset < 0) {
|
|
226
|
+
const requestedLines = Math.abs(offset);
|
|
227
|
+
if (fileSize > LARGE_FILE_THRESHOLD && requestedLines <= SMALL_READ_THRESHOLD) {
|
|
228
|
+
// Use efficient reverse reading for large files with small tail requests
|
|
229
|
+
return await readLastNLinesReverse(filePath, requestedLines, mimeType, includeStatusMessage);
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
// Use readline circular buffer for other cases
|
|
233
|
+
return await readFromEndWithReadline(filePath, requestedLines, mimeType, includeStatusMessage);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
// For positive offsets
|
|
237
|
+
else {
|
|
238
|
+
// For small files or reading from start, use simple readline
|
|
239
|
+
if (fileSize < LARGE_FILE_THRESHOLD || offset === 0) {
|
|
240
|
+
return await readFromStartWithReadline(filePath, offset, length, mimeType, includeStatusMessage);
|
|
241
|
+
}
|
|
242
|
+
// For large files with middle/end reads, try to estimate position
|
|
243
|
+
else {
|
|
244
|
+
// If seeking deep into file, try byte estimation
|
|
245
|
+
if (offset > 1000) {
|
|
246
|
+
return await readFromEstimatedPosition(filePath, offset, length, mimeType, includeStatusMessage);
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
return await readFromStartWithReadline(filePath, offset, length, mimeType, includeStatusMessage);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Read last N lines efficiently by reading file backwards in chunks
|
|
256
|
+
*/
|
|
257
|
+
async function readLastNLinesReverse(filePath, n, mimeType, includeStatusMessage = true) {
|
|
258
|
+
const fd = await fs.open(filePath, 'r');
|
|
259
|
+
try {
|
|
260
|
+
const stats = await fd.stat();
|
|
261
|
+
const fileSize = stats.size;
|
|
262
|
+
const chunkSize = 8192; // 8KB chunks
|
|
263
|
+
let position = fileSize;
|
|
264
|
+
let lines = [];
|
|
265
|
+
let partialLine = '';
|
|
266
|
+
while (position > 0 && lines.length < n) {
|
|
267
|
+
const readSize = Math.min(chunkSize, position);
|
|
268
|
+
position -= readSize;
|
|
269
|
+
const buffer = Buffer.alloc(readSize);
|
|
270
|
+
await fd.read(buffer, 0, readSize, position);
|
|
271
|
+
const chunk = buffer.toString('utf-8');
|
|
272
|
+
const text = chunk + partialLine;
|
|
273
|
+
const chunkLines = text.split('\n');
|
|
274
|
+
partialLine = chunkLines.shift() || '';
|
|
275
|
+
lines = chunkLines.concat(lines);
|
|
276
|
+
}
|
|
277
|
+
// Add the remaining partial line if we reached the beginning
|
|
278
|
+
if (position === 0 && partialLine) {
|
|
279
|
+
lines.unshift(partialLine);
|
|
280
|
+
}
|
|
281
|
+
const result = lines.slice(-n); // Get exactly n lines
|
|
282
|
+
const content = includeStatusMessage
|
|
283
|
+
? `[Reading last ${result.length} lines]\n\n${result.join('\n')}`
|
|
284
|
+
: result.join('\n');
|
|
285
|
+
return { content, mimeType, isImage: false };
|
|
286
|
+
}
|
|
287
|
+
finally {
|
|
288
|
+
await fd.close();
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Read from end using readline with circular buffer
|
|
293
|
+
*/
|
|
294
|
+
async function readFromEndWithReadline(filePath, requestedLines, mimeType, includeStatusMessage = true) {
|
|
295
|
+
const rl = createInterface({
|
|
296
|
+
input: createReadStream(filePath),
|
|
297
|
+
crlfDelay: Infinity
|
|
298
|
+
});
|
|
299
|
+
const buffer = new Array(requestedLines);
|
|
300
|
+
let bufferIndex = 0;
|
|
301
|
+
let totalLines = 0;
|
|
302
|
+
for await (const line of rl) {
|
|
303
|
+
buffer[bufferIndex] = line;
|
|
304
|
+
bufferIndex = (bufferIndex + 1) % requestedLines;
|
|
305
|
+
totalLines++;
|
|
306
|
+
}
|
|
307
|
+
rl.close();
|
|
308
|
+
// Extract lines in correct order
|
|
309
|
+
let result;
|
|
310
|
+
if (totalLines >= requestedLines) {
|
|
311
|
+
result = [
|
|
312
|
+
...buffer.slice(bufferIndex),
|
|
313
|
+
...buffer.slice(0, bufferIndex)
|
|
314
|
+
].filter(line => line !== undefined);
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
result = buffer.slice(0, totalLines);
|
|
318
|
+
}
|
|
319
|
+
const content = includeStatusMessage
|
|
320
|
+
? `[Reading last ${result.length} lines]\n\n${result.join('\n')}`
|
|
321
|
+
: result.join('\n');
|
|
322
|
+
return { content, mimeType, isImage: false };
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Read from start/middle using readline
|
|
326
|
+
*/
|
|
327
|
+
async function readFromStartWithReadline(filePath, offset, length, mimeType, includeStatusMessage = true) {
|
|
328
|
+
const rl = createInterface({
|
|
329
|
+
input: createReadStream(filePath),
|
|
330
|
+
crlfDelay: Infinity
|
|
331
|
+
});
|
|
332
|
+
const result = [];
|
|
333
|
+
let lineNumber = 0;
|
|
334
|
+
for await (const line of rl) {
|
|
335
|
+
if (lineNumber >= offset && result.length < length) {
|
|
336
|
+
result.push(line);
|
|
337
|
+
}
|
|
338
|
+
if (result.length >= length)
|
|
339
|
+
break; // Early exit optimization
|
|
340
|
+
lineNumber++;
|
|
341
|
+
}
|
|
342
|
+
rl.close();
|
|
343
|
+
if (includeStatusMessage) {
|
|
344
|
+
const statusMessage = offset === 0
|
|
345
|
+
? `[Reading ${result.length} lines from start]`
|
|
346
|
+
: `[Reading ${result.length} lines from line ${offset}]`;
|
|
347
|
+
const content = `${statusMessage}\n\n${result.join('\n')}`;
|
|
348
|
+
return { content, mimeType, isImage: false };
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
const content = result.join('\n');
|
|
352
|
+
return { content, mimeType, isImage: false };
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Read from estimated byte position for very large files
|
|
357
|
+
*/
|
|
358
|
+
async function readFromEstimatedPosition(filePath, offset, length, mimeType, includeStatusMessage = true) {
|
|
359
|
+
// First, do a quick scan to estimate lines per byte
|
|
360
|
+
const rl = createInterface({
|
|
361
|
+
input: createReadStream(filePath),
|
|
362
|
+
crlfDelay: Infinity
|
|
363
|
+
});
|
|
364
|
+
let sampleLines = 0;
|
|
365
|
+
let bytesRead = 0;
|
|
366
|
+
const SAMPLE_SIZE = 10000; // Sample first 10KB
|
|
367
|
+
for await (const line of rl) {
|
|
368
|
+
bytesRead += Buffer.byteLength(line, 'utf-8') + 1; // +1 for newline
|
|
369
|
+
sampleLines++;
|
|
370
|
+
if (bytesRead >= SAMPLE_SIZE)
|
|
371
|
+
break;
|
|
372
|
+
}
|
|
373
|
+
rl.close();
|
|
374
|
+
if (sampleLines === 0) {
|
|
375
|
+
// Fallback to simple read
|
|
376
|
+
return await readFromStartWithReadline(filePath, offset, length, mimeType, includeStatusMessage);
|
|
377
|
+
}
|
|
378
|
+
// Estimate average line length and seek position
|
|
379
|
+
const avgLineLength = bytesRead / sampleLines;
|
|
380
|
+
const estimatedBytePosition = Math.floor(offset * avgLineLength);
|
|
381
|
+
// Create a new stream starting from estimated position
|
|
382
|
+
const fd = await fs.open(filePath, 'r');
|
|
383
|
+
try {
|
|
384
|
+
const stats = await fd.stat();
|
|
385
|
+
const startPosition = Math.min(estimatedBytePosition, stats.size);
|
|
386
|
+
const stream = createReadStream(filePath, { start: startPosition });
|
|
387
|
+
const rl2 = createInterface({
|
|
388
|
+
input: stream,
|
|
389
|
+
crlfDelay: Infinity
|
|
390
|
+
});
|
|
391
|
+
const result = [];
|
|
392
|
+
let lineCount = 0;
|
|
393
|
+
let firstLineSkipped = false;
|
|
394
|
+
for await (const line of rl2) {
|
|
395
|
+
// Skip first potentially partial line if we didn't start at beginning
|
|
396
|
+
if (!firstLineSkipped && startPosition > 0) {
|
|
397
|
+
firstLineSkipped = true;
|
|
398
|
+
continue;
|
|
399
|
+
}
|
|
400
|
+
if (result.length < length) {
|
|
401
|
+
result.push(line);
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
break;
|
|
405
|
+
}
|
|
406
|
+
lineCount++;
|
|
407
|
+
}
|
|
408
|
+
rl2.close();
|
|
409
|
+
const content = includeStatusMessage
|
|
410
|
+
? `[Reading ${result.length} lines from estimated position (target line ${offset})]\n\n${result.join('\n')}`
|
|
411
|
+
: result.join('\n');
|
|
412
|
+
return { content, mimeType, isImage: false };
|
|
413
|
+
}
|
|
414
|
+
finally {
|
|
415
|
+
await fd.close();
|
|
416
|
+
}
|
|
417
|
+
}
|
|
208
418
|
/**
|
|
209
419
|
* Read file content from the local filesystem
|
|
210
420
|
* @param filePath Path to the file
|
|
@@ -258,42 +468,9 @@ export async function readFileFromDisk(filePath, offset = 0, length) {
|
|
|
258
468
|
return { content, mimeType, isImage };
|
|
259
469
|
}
|
|
260
470
|
else {
|
|
261
|
-
// For all other files,
|
|
471
|
+
// For all other files, use smart positioning approach
|
|
262
472
|
try {
|
|
263
|
-
|
|
264
|
-
const buffer = await fs.readFile(validPath);
|
|
265
|
-
const fullContent = buffer.toString('utf-8');
|
|
266
|
-
// Split into lines for line-based access
|
|
267
|
-
const lines = fullContent.split('\n');
|
|
268
|
-
const totalLines = lines.length;
|
|
269
|
-
// Apply line-based offset and length - handle beyond-file-size scenario
|
|
270
|
-
let startLine = Math.min(offset, totalLines);
|
|
271
|
-
let endLine = Math.min(startLine + length, totalLines);
|
|
272
|
-
// If startLine equals totalLines (reading beyond end), adjust to show some content
|
|
273
|
-
// Only do this if we're not trying to read the whole file
|
|
274
|
-
if (startLine === totalLines && offset > 0 && length < Number.MAX_SAFE_INTEGER) {
|
|
275
|
-
// Show last few lines instead of nothing
|
|
276
|
-
const lastLinesCount = Math.min(10, totalLines); // Show last 10 lines or fewer if file is smaller
|
|
277
|
-
startLine = Math.max(0, totalLines - lastLinesCount);
|
|
278
|
-
endLine = totalLines;
|
|
279
|
-
}
|
|
280
|
-
const selectedLines = lines.slice(startLine, endLine);
|
|
281
|
-
const truncatedContent = selectedLines.join('\n');
|
|
282
|
-
// Add an informational message if truncated or adjusted
|
|
283
|
-
let content = truncatedContent;
|
|
284
|
-
// Only add informational message for normal reads (not when reading entire file)
|
|
285
|
-
const isEntireFileRead = offset === 0 && length >= Number.MAX_SAFE_INTEGER;
|
|
286
|
-
if (!isEntireFileRead) {
|
|
287
|
-
if (offset >= totalLines && totalLines > 0) {
|
|
288
|
-
// Reading beyond end of file case
|
|
289
|
-
content = `[NOTICE: Offset ${offset} exceeds file length (${totalLines} lines). Showing last ${endLine - startLine} lines instead.]\n\n${truncatedContent}`;
|
|
290
|
-
}
|
|
291
|
-
else if (offset > 0 || endLine < totalLines) {
|
|
292
|
-
// Normal partial read case
|
|
293
|
-
content = `[Reading ${endLine - startLine} lines from line ${startLine} of ${totalLines} total lines]\n\n${truncatedContent}`;
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
return { content, mimeType, isImage };
|
|
473
|
+
return await readFileWithSmartPositioning(validPath, offset, length, mimeType, true);
|
|
297
474
|
}
|
|
298
475
|
catch (error) {
|
|
299
476
|
// If UTF-8 reading fails, treat as binary and return base64 but still as text
|
|
@@ -324,6 +501,84 @@ export async function readFile(filePath, isUrl, offset, length) {
|
|
|
324
501
|
? readFileFromUrl(filePath)
|
|
325
502
|
: readFileFromDisk(filePath, offset, length);
|
|
326
503
|
}
|
|
504
|
+
/**
|
|
505
|
+
* Read file content without status messages for internal operations
|
|
506
|
+
* This function preserves exact file content including original line endings,
|
|
507
|
+
* which is essential for edit operations that need to maintain file formatting.
|
|
508
|
+
* @param filePath Path to the file
|
|
509
|
+
* @param offset Starting line number to read from (default: 0)
|
|
510
|
+
* @param length Maximum number of lines to read (default: from config or 1000)
|
|
511
|
+
* @returns File content without status headers, with preserved line endings
|
|
512
|
+
*/
|
|
513
|
+
export async function readFileInternal(filePath, offset = 0, length) {
|
|
514
|
+
// Get default length from config if not provided
|
|
515
|
+
if (length === undefined) {
|
|
516
|
+
const config = await configManager.getConfig();
|
|
517
|
+
length = config.fileReadLineLimit ?? 1000;
|
|
518
|
+
}
|
|
519
|
+
const validPath = await validatePath(filePath);
|
|
520
|
+
// Get file extension and MIME type
|
|
521
|
+
const fileExtension = path.extname(validPath).toLowerCase();
|
|
522
|
+
const { getMimeType, isImageFile } = await import('./mime-types.js');
|
|
523
|
+
const mimeType = getMimeType(validPath);
|
|
524
|
+
const isImage = isImageFile(mimeType);
|
|
525
|
+
if (isImage) {
|
|
526
|
+
throw new Error('Cannot read image files as text for internal operations');
|
|
527
|
+
}
|
|
528
|
+
// IMPORTANT: For internal operations (especially edit operations), we must
|
|
529
|
+
// preserve exact file content including original line endings.
|
|
530
|
+
// We cannot use readline-based reading as it strips line endings.
|
|
531
|
+
// Read entire file content preserving line endings
|
|
532
|
+
const content = await fs.readFile(validPath, 'utf8');
|
|
533
|
+
// If we need to apply offset/length, do it while preserving line endings
|
|
534
|
+
if (offset === 0 && length >= Number.MAX_SAFE_INTEGER) {
|
|
535
|
+
// Most common case for edit operations: read entire file
|
|
536
|
+
return content;
|
|
537
|
+
}
|
|
538
|
+
// Handle offset/length by splitting on line boundaries while preserving line endings
|
|
539
|
+
const lines = splitLinesPreservingEndings(content);
|
|
540
|
+
// Apply offset and length
|
|
541
|
+
const selectedLines = lines.slice(offset, offset + length);
|
|
542
|
+
// Join back together (this preserves the original line endings)
|
|
543
|
+
return selectedLines.join('');
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Split text into lines while preserving original line endings with each line
|
|
547
|
+
* @param content The text content to split
|
|
548
|
+
* @returns Array of lines, each including its original line ending
|
|
549
|
+
*/
|
|
550
|
+
function splitLinesPreservingEndings(content) {
|
|
551
|
+
if (!content)
|
|
552
|
+
return [''];
|
|
553
|
+
const lines = [];
|
|
554
|
+
let currentLine = '';
|
|
555
|
+
for (let i = 0; i < content.length; i++) {
|
|
556
|
+
const char = content[i];
|
|
557
|
+
currentLine += char;
|
|
558
|
+
// Check for line ending patterns
|
|
559
|
+
if (char === '\n') {
|
|
560
|
+
// LF or end of CRLF
|
|
561
|
+
lines.push(currentLine);
|
|
562
|
+
currentLine = '';
|
|
563
|
+
}
|
|
564
|
+
else if (char === '\r') {
|
|
565
|
+
// Could be CR or start of CRLF
|
|
566
|
+
if (i + 1 < content.length && content[i + 1] === '\n') {
|
|
567
|
+
// It's CRLF, include the \n as well
|
|
568
|
+
currentLine += content[i + 1];
|
|
569
|
+
i++; // Skip the \n in next iteration
|
|
570
|
+
}
|
|
571
|
+
// Either way, we have a complete line
|
|
572
|
+
lines.push(currentLine);
|
|
573
|
+
currentLine = '';
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
// Handle any remaining content (file not ending with line ending)
|
|
577
|
+
if (currentLine) {
|
|
578
|
+
lines.push(currentLine);
|
|
579
|
+
}
|
|
580
|
+
return lines;
|
|
581
|
+
}
|
|
327
582
|
export async function writeFile(filePath, content, mode = 'rewrite') {
|
|
328
583
|
const validPath = await validatePath(filePath);
|
|
329
584
|
// Get file extension for telemetry
|
|
@@ -389,12 +644,6 @@ export async function searchFiles(rootPath, pattern) {
|
|
|
389
644
|
entries = await fs.readdir(currentPath, { withFileTypes: true });
|
|
390
645
|
}
|
|
391
646
|
catch (error) {
|
|
392
|
-
// Only sanitize for telemetry, not for the returned error
|
|
393
|
-
capture('server_search_read_dir_error', {
|
|
394
|
-
errorType: error instanceof Error ? error.name : 'Unknown',
|
|
395
|
-
error: 'Error reading directory',
|
|
396
|
-
isReadDirError: true
|
|
397
|
-
});
|
|
398
647
|
return; // Skip this directory on error
|
|
399
648
|
}
|
|
400
649
|
for (const entry of entries) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/tools/filesystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fuzzySearch.js","sourceRoot":"","sources":["../../src/tools/fuzzySearch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ServerResult } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Start a new process (renamed from execute_command)
|
|
4
|
+
* Includes early detection of process waiting for input
|
|
5
|
+
*/
|
|
6
|
+
export declare function startProcess(args: unknown): Promise<ServerResult>;
|
|
7
|
+
/**
|
|
8
|
+
* Read output from a running process (renamed from read_output)
|
|
9
|
+
* Includes early detection of process waiting for input
|
|
10
|
+
*/
|
|
11
|
+
export declare function readProcessOutput(args: unknown): Promise<ServerResult>;
|
|
12
|
+
/**
|
|
13
|
+
* Interact with a running process (renamed from send_input)
|
|
14
|
+
* Automatically detects when process is ready and returns output
|
|
15
|
+
*/
|
|
16
|
+
export declare function interactWithProcess(args: unknown): Promise<ServerResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Force terminate a process
|
|
19
|
+
*/
|
|
20
|
+
export declare function forceTerminate(args: unknown): Promise<ServerResult>;
|
|
21
|
+
/**
|
|
22
|
+
* List active sessions
|
|
23
|
+
*/
|
|
24
|
+
export declare function listSessions(): Promise<ServerResult>;
|