staff-mcp 1.0.26 → 1.0.28
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/dist/src/constants.d.ts
CHANGED
|
@@ -3,3 +3,26 @@ export declare const DEFAULT_TIMEOUT = 10000;
|
|
|
3
3
|
export declare const SEARCH_MAX_COLUMNS = 200;
|
|
4
4
|
export declare const SEARCH_MAX_MATCHES = 200;
|
|
5
5
|
export declare const SEARCH_EXEC_MAX_BUFFER: number;
|
|
6
|
+
/** Maximum image file size (10MB). Base64 encoding adds ~33% overhead. */
|
|
7
|
+
export declare const IMAGE_SIZE_LIMIT: number;
|
|
8
|
+
/** Number of leading bytes to read for magic-byte sniffing and binary detection. */
|
|
9
|
+
export declare const FILE_SNIFF_SIZE = 4096;
|
|
10
|
+
/** MIME types that are returned as image content blocks (not including SVG). */
|
|
11
|
+
export declare const SUPPORTED_IMAGE_MIMES: Set<string>;
|
|
12
|
+
/** Fallback: extension → MIME type mapping (used when sniffing fails, e.g. for SVG). */
|
|
13
|
+
export declare const IMAGE_MIME_BY_EXTENSION: Record<string, string>;
|
|
14
|
+
/**
|
|
15
|
+
* Sniff the MIME type of a file from its leading bytes (magic bytes).
|
|
16
|
+
* Returns null if the bytes don't match any known image signature.
|
|
17
|
+
*/
|
|
18
|
+
export declare function sniffImageMime(bytes: Uint8Array): string | null;
|
|
19
|
+
/**
|
|
20
|
+
* Determine whether a file is binary (should not be read as text).
|
|
21
|
+
* Uses content-based detection only (no extension reliance):
|
|
22
|
+
* 1. Contains a null byte (0x00) → true
|
|
23
|
+
* 2. Ratio of non-printable bytes > 30% → true
|
|
24
|
+
*
|
|
25
|
+
* @param filepath - File path (reserved for future use, not currently used)
|
|
26
|
+
* @param bytes - Leading bytes of the file (recommend 4096 bytes)
|
|
27
|
+
*/
|
|
28
|
+
export declare function isBinaryFile(filepath: string, bytes: Uint8Array): boolean;
|
package/dist/src/constants.js
CHANGED
|
@@ -3,4 +3,79 @@ export const DEFAULT_TIMEOUT = 10000;
|
|
|
3
3
|
export const SEARCH_MAX_COLUMNS = 200;
|
|
4
4
|
export const SEARCH_MAX_MATCHES = 200;
|
|
5
5
|
export const SEARCH_EXEC_MAX_BUFFER = 50 * 1024 * 1024; // 50MB
|
|
6
|
+
// --- Image reading support ---
|
|
7
|
+
/** Maximum image file size (10MB). Base64 encoding adds ~33% overhead. */
|
|
8
|
+
export const IMAGE_SIZE_LIMIT = 10 * 1024 * 1024;
|
|
9
|
+
/** Number of leading bytes to read for magic-byte sniffing and binary detection. */
|
|
10
|
+
export const FILE_SNIFF_SIZE = 4096;
|
|
11
|
+
/** MIME types that are returned as image content blocks (not including SVG). */
|
|
12
|
+
export const SUPPORTED_IMAGE_MIMES = new Set([
|
|
13
|
+
"image/jpeg",
|
|
14
|
+
"image/png",
|
|
15
|
+
"image/gif",
|
|
16
|
+
"image/webp",
|
|
17
|
+
]);
|
|
18
|
+
/** Fallback: extension → MIME type mapping (used when sniffing fails, e.g. for SVG). */
|
|
19
|
+
export const IMAGE_MIME_BY_EXTENSION = {
|
|
20
|
+
".png": "image/png",
|
|
21
|
+
".jpg": "image/jpeg",
|
|
22
|
+
".jpeg": "image/jpeg",
|
|
23
|
+
".gif": "image/gif",
|
|
24
|
+
".webp": "image/webp",
|
|
25
|
+
".svg": "image/svg+xml",
|
|
26
|
+
".bmp": "image/bmp",
|
|
27
|
+
".tiff": "image/tiff",
|
|
28
|
+
".ico": "image/x-icon",
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Sniff the MIME type of a file from its leading bytes (magic bytes).
|
|
32
|
+
* Returns null if the bytes don't match any known image signature.
|
|
33
|
+
*/
|
|
34
|
+
export function sniffImageMime(bytes) {
|
|
35
|
+
if (bytes.length >= 4 && bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47) {
|
|
36
|
+
return "image/png";
|
|
37
|
+
}
|
|
38
|
+
if (bytes.length >= 3 && bytes[0] === 0xff && bytes[1] === 0xd8 && bytes[2] === 0xff) {
|
|
39
|
+
return "image/jpeg";
|
|
40
|
+
}
|
|
41
|
+
if (bytes.length >= 6 && bytes[0] === 0x47 && bytes[1] === 0x49 && bytes[2] === 0x46 && bytes[3] === 0x38) {
|
|
42
|
+
return "image/gif";
|
|
43
|
+
}
|
|
44
|
+
// WebP: RIFF....WEBP
|
|
45
|
+
if (bytes.length >= 12 &&
|
|
46
|
+
bytes[0] === 0x52 && bytes[1] === 0x49 && bytes[2] === 0x46 && bytes[3] === 0x46 &&
|
|
47
|
+
bytes[8] === 0x57 && bytes[9] === 0x45 && bytes[10] === 0x42 && bytes[11] === 0x50) {
|
|
48
|
+
return "image/webp";
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
// --- Binary file detection ---
|
|
53
|
+
/**
|
|
54
|
+
* Determine whether a file is binary (should not be read as text).
|
|
55
|
+
* Uses content-based detection only (no extension reliance):
|
|
56
|
+
* 1. Contains a null byte (0x00) → true
|
|
57
|
+
* 2. Ratio of non-printable bytes > 30% → true
|
|
58
|
+
*
|
|
59
|
+
* @param filepath - File path (reserved for future use, not currently used)
|
|
60
|
+
* @param bytes - Leading bytes of the file (recommend 4096 bytes)
|
|
61
|
+
*/
|
|
62
|
+
export function isBinaryFile(filepath, bytes) {
|
|
63
|
+
if (bytes.length === 0) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
// 1. Null byte detection - text files almost never contain 0x00
|
|
67
|
+
let nonPrintableCount = 0;
|
|
68
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
69
|
+
const b = bytes[i];
|
|
70
|
+
if (b === 0x00) {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
// Count non-printable bytes (excluding common whitespace: \t=9, \n=10, \r=13)
|
|
74
|
+
if (b < 9 || (b > 13 && b < 32)) {
|
|
75
|
+
nonPrintableCount++;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// 2. Non-printable ratio threshold
|
|
79
|
+
return nonPrintableCount / bytes.length > 0.3;
|
|
80
|
+
}
|
|
6
81
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { promisify } from "util";
|
|
|
5
5
|
import * as readline from "readline";
|
|
6
6
|
import { createReadStream } from "fs";
|
|
7
7
|
import { z } from "zod";
|
|
8
|
-
import { CHARACTER_LIMIT, SEARCH_MAX_COLUMNS, SEARCH_MAX_MATCHES, SEARCH_EXEC_MAX_BUFFER } from "../constants.js";
|
|
8
|
+
import { CHARACTER_LIMIT, SEARCH_MAX_COLUMNS, SEARCH_MAX_MATCHES, SEARCH_EXEC_MAX_BUFFER, IMAGE_SIZE_LIMIT, FILE_SNIFF_SIZE, SUPPORTED_IMAGE_MIMES, IMAGE_MIME_BY_EXTENSION, sniffImageMime, isBinaryFile } from "../constants.js";
|
|
9
9
|
import { ensureRipgrep } from "../utils/tool-utils.js";
|
|
10
10
|
const execAsync = promisify(exec);
|
|
11
11
|
/**
|
|
@@ -33,7 +33,9 @@ function truncateContext(context, colNum, maxLen) {
|
|
|
33
33
|
export function registerFileTools(server, security) {
|
|
34
34
|
// read_file
|
|
35
35
|
server.registerTool("read_file", {
|
|
36
|
-
description: "Read the content of a file from the allowed workspace."
|
|
36
|
+
description: "Read the content of a file from the allowed workspace. " +
|
|
37
|
+
"Supports line range selection via startLine/endLine. " +
|
|
38
|
+
"This tool can read image files and return them for visual analysis.",
|
|
37
39
|
inputSchema: z.object({
|
|
38
40
|
path: z.string().describe("Relative path from the workspace to the file to read."),
|
|
39
41
|
startLine: z.number().optional().describe("1-based line number to start reading from."),
|
|
@@ -42,6 +44,57 @@ export function registerFileTools(server, security) {
|
|
|
42
44
|
}, async ({ path: filePath, startLine, endLine }) => {
|
|
43
45
|
try {
|
|
44
46
|
const validatedPath = security.resolveAndValidatePath(filePath);
|
|
47
|
+
// --- Image detection: magic-byte sniff + extension fallback ---
|
|
48
|
+
const ext = path.extname(validatedPath).toLowerCase();
|
|
49
|
+
const extMime = IMAGE_MIME_BY_EXTENSION[ext];
|
|
50
|
+
// Read first few bytes for magic-byte sniffing + binary detection
|
|
51
|
+
let sniffedMime = null;
|
|
52
|
+
let fileStat = await fs.stat(validatedPath);
|
|
53
|
+
let sampleBytes = new Uint8Array(0);
|
|
54
|
+
if (fileStat.size > 0) {
|
|
55
|
+
const fd = await fs.open(validatedPath, "r");
|
|
56
|
+
const sample = Buffer.alloc(FILE_SNIFF_SIZE);
|
|
57
|
+
const { bytesRead } = await fd.read(sample, 0, FILE_SNIFF_SIZE, 0);
|
|
58
|
+
await fd.close();
|
|
59
|
+
if (bytesRead > 0) {
|
|
60
|
+
sampleBytes = sample.subarray(0, bytesRead);
|
|
61
|
+
sniffedMime = sniffImageMime(sampleBytes);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const mime = sniffedMime || extMime || null;
|
|
65
|
+
const isImage = mime !== null && SUPPORTED_IMAGE_MIMES.has(mime);
|
|
66
|
+
if (isImage) {
|
|
67
|
+
// --- Image path: return as ImageContent, ignore startLine/endLine ---
|
|
68
|
+
if (fileStat.size > IMAGE_SIZE_LIMIT) {
|
|
69
|
+
return {
|
|
70
|
+
content: [{ type: "text", text: `Error: Image file is too large (${(fileStat.size / 1024 / 1024).toFixed(1)}MB). Maximum allowed size is ${IMAGE_SIZE_LIMIT / 1024 / 1024}MB.` }],
|
|
71
|
+
isError: true,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
const imageBuffer = await fs.readFile(validatedPath);
|
|
75
|
+
const base64Data = imageBuffer.toString("base64");
|
|
76
|
+
return {
|
|
77
|
+
content: [
|
|
78
|
+
{
|
|
79
|
+
type: "image",
|
|
80
|
+
data: base64Data,
|
|
81
|
+
mimeType: mime,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
type: "text",
|
|
85
|
+
text: `Image file: ${filePath} (${fileStat.size} bytes, ${mime})`,
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
// --- Binary file detection: reject non-text files ---
|
|
91
|
+
if (isBinaryFile(validatedPath, sampleBytes)) {
|
|
92
|
+
return {
|
|
93
|
+
content: [{ type: "text", text: `Error: Cannot read binary file: ${filePath}. This file type is not supported for text reading.` }],
|
|
94
|
+
isError: true,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
// --- Text path: original logic ---
|
|
45
98
|
const fullContent = await fs.readFile(validatedPath, "utf-8");
|
|
46
99
|
const lines = fullContent.split(/\r?\n/);
|
|
47
100
|
let contentLines = lines;
|
|
@@ -206,6 +259,7 @@ export function registerFileTools(server, security) {
|
|
|
206
259
|
let args = ["--color", "never", "--hidden"];
|
|
207
260
|
if (search_type === "content") {
|
|
208
261
|
args.push("--line-number", "--column", "--no-heading");
|
|
262
|
+
args.push("--max-count", "5");
|
|
209
263
|
if (!caseSensitive)
|
|
210
264
|
args.push("--ignore-case");
|
|
211
265
|
if (wholeWord)
|
|
@@ -259,24 +313,93 @@ export function registerFileTools(server, security) {
|
|
|
259
313
|
return line;
|
|
260
314
|
});
|
|
261
315
|
}
|
|
262
|
-
|
|
316
|
+
const wasTruncated = lines.length > SEARCH_MAX_MATCHES;
|
|
317
|
+
if (wasTruncated) {
|
|
263
318
|
lines = lines.slice(0, SEARCH_MAX_MATCHES);
|
|
264
|
-
|
|
319
|
+
}
|
|
320
|
+
// If truncated, try to get total match count for better feedback
|
|
321
|
+
let truncationNote = "";
|
|
322
|
+
if (wasTruncated) {
|
|
323
|
+
try {
|
|
324
|
+
const countArgs = ["--color", "never", "--hidden", "--count"];
|
|
325
|
+
if (!caseSensitive)
|
|
326
|
+
countArgs.push("--ignore-case");
|
|
327
|
+
if (wholeWord)
|
|
328
|
+
countArgs.push("--word-regexp");
|
|
329
|
+
countArgs.push("--glob", "!.git/**");
|
|
330
|
+
countArgs.push("--glob", "!node_modules/**");
|
|
331
|
+
if (includeGlob) {
|
|
332
|
+
countArgs.push("--glob", includeGlob);
|
|
333
|
+
}
|
|
334
|
+
if (excludeGlob) {
|
|
335
|
+
countArgs.push("--glob", `!${excludeGlob}`);
|
|
336
|
+
}
|
|
337
|
+
if (noIgnore) {
|
|
338
|
+
countArgs.push("--no-ignore");
|
|
339
|
+
}
|
|
340
|
+
countArgs.push("--");
|
|
341
|
+
countArgs.push(query);
|
|
342
|
+
countArgs.push(baseDir);
|
|
343
|
+
const countCmd = `"${rgPath}" ${countArgs.map(a => `"${a.replace(/"/g, '\\"')}"`).join(" ")}`;
|
|
344
|
+
const { stdout: countOut } = await execAsync(countCmd, { maxBuffer: 1024 * 1024 });
|
|
345
|
+
const countLines = countOut.trim().split("\n").filter((l) => l.length > 0);
|
|
346
|
+
const totalMatches = countLines.reduce((sum, line) => {
|
|
347
|
+
const parts = line.split(":");
|
|
348
|
+
return sum + parseInt(parts[parts.length - 1] || "0", 10);
|
|
349
|
+
}, 0);
|
|
350
|
+
const fileCount = countLines.length;
|
|
351
|
+
truncationNote = `\n... [Search results truncated. Showing ${SEARCH_MAX_MATCHES} of ${totalMatches} matches across ${fileCount} files. Use includeGlob/excludeGlob to narrow results.]`;
|
|
352
|
+
}
|
|
353
|
+
catch {
|
|
354
|
+
truncationNote = `\n... [Search results truncated at ${SEARCH_MAX_MATCHES} matches. More results exist — use includeGlob/excludeGlob to narrow your search.]`;
|
|
355
|
+
}
|
|
265
356
|
}
|
|
266
357
|
return {
|
|
267
|
-
content: [{ type: "text", text: lines.join("\n") || "No matches found." }],
|
|
358
|
+
content: [{ type: "text", text: (lines.join("\n") || "No matches found.") + truncationNote }],
|
|
268
359
|
};
|
|
269
360
|
}
|
|
270
361
|
catch (rgError) {
|
|
271
362
|
if (rgError.code === 1) {
|
|
272
363
|
return { content: [{ type: "text", text: "No matches found." }] };
|
|
273
364
|
}
|
|
365
|
+
// Handle maxBuffer or other errors: use partial stdout if available
|
|
366
|
+
if (rgError.stdout && rgError.stdout.trim().length > 0) {
|
|
367
|
+
let partialLines = rgError.stdout.trim().split("\n").filter((l) => l.length > 0);
|
|
368
|
+
if (search_type === "path") {
|
|
369
|
+
partialLines = partialLines.map((line) => {
|
|
370
|
+
const relPath = path.relative(baseDir, line.trim());
|
|
371
|
+
return relPath.replace(/\\/g, '/');
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
partialLines = partialLines.map((line) => {
|
|
376
|
+
const match = line.match(/^((?:[a-zA-Z]:)?[^:]+):(\d+):(\d+):(.*)$/);
|
|
377
|
+
if (match) {
|
|
378
|
+
const [_, absPath, lineNum, colNum, context] = match;
|
|
379
|
+
const relPath = path.relative(baseDir, absPath);
|
|
380
|
+
const truncated = truncateContext(context, parseInt(colNum, 10), SEARCH_MAX_COLUMNS);
|
|
381
|
+
return `${relPath.replace(/\\/g, '/')}:${lineNum} - ${truncated}`;
|
|
382
|
+
}
|
|
383
|
+
return line;
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
if (partialLines.length > SEARCH_MAX_MATCHES) {
|
|
387
|
+
partialLines = partialLines.slice(0, SEARCH_MAX_MATCHES);
|
|
388
|
+
}
|
|
389
|
+
const note = `\n... [Search results truncated at ${SEARCH_MAX_MATCHES} matches (ripgrep output exceeded buffer). More results exist — use includeGlob/excludeGlob to narrow your search.]`;
|
|
390
|
+
return {
|
|
391
|
+
content: [{ type: "text", text: (partialLines.join("\n") || "No matches found.") + note }],
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
// Other errors: fall through to JS fallback
|
|
395
|
+
console.error("[staff-mcp] ripgrep failed, falling back to JS:", rgError.message);
|
|
274
396
|
}
|
|
275
397
|
}
|
|
276
398
|
// JS Fallback
|
|
277
399
|
const results = [];
|
|
400
|
+
let jsHitLimit = false;
|
|
278
401
|
function globToRegex(glob) {
|
|
279
|
-
const escaped = glob.replace(/[.+^${()|[\]
|
|
402
|
+
const escaped = glob.replace(/[.+^${()|[\]\\*?]/g, '\\$&');
|
|
280
403
|
const replaced = escaped.replace(/\\\*\\\*/g, '.*').replace(/\\\*/g, '[^/]*').replace(/\\\?/g, '.');
|
|
281
404
|
return new RegExp(`^${replaced}$`);
|
|
282
405
|
}
|
|
@@ -290,14 +413,20 @@ export function registerFileTools(server, security) {
|
|
|
290
413
|
}
|
|
291
414
|
const excludeRegex = excludeGlob ? globToRegex(excludeGlob) : null;
|
|
292
415
|
async function searchRecursively(currentDir) {
|
|
416
|
+
if (results.length >= SEARCH_MAX_MATCHES)
|
|
417
|
+
return;
|
|
293
418
|
const entries = await fs.readdir(currentDir, { withFileTypes: true });
|
|
294
419
|
for (const entry of entries) {
|
|
420
|
+
if (results.length >= SEARCH_MAX_MATCHES)
|
|
421
|
+
return;
|
|
295
422
|
const fullPath = path.join(currentDir, entry.name);
|
|
296
423
|
const relPath = path.relative(baseDir, fullPath).replace(/\\/g, '/');
|
|
297
424
|
if (entry.name === "node_modules" || entry.name === ".git")
|
|
298
425
|
continue;
|
|
299
426
|
if (entry.isDirectory()) {
|
|
300
427
|
await searchRecursively(fullPath);
|
|
428
|
+
if (results.length >= SEARCH_MAX_MATCHES)
|
|
429
|
+
return;
|
|
301
430
|
}
|
|
302
431
|
else if (entry.isFile()) {
|
|
303
432
|
if (search_type === "path") {
|
|
@@ -306,8 +435,10 @@ export function registerFileTools(server, security) {
|
|
|
306
435
|
if (excludeRegex && excludeRegex.test(relPath))
|
|
307
436
|
continue;
|
|
308
437
|
results.push(relPath);
|
|
309
|
-
if (results.length
|
|
438
|
+
if (results.length >= SEARCH_MAX_MATCHES) {
|
|
439
|
+
jsHitLimit = true;
|
|
310
440
|
return;
|
|
441
|
+
}
|
|
311
442
|
}
|
|
312
443
|
else {
|
|
313
444
|
if (includeRegex && !includeRegex.test(relPath))
|
|
@@ -321,29 +452,27 @@ export function registerFileTools(server, security) {
|
|
|
321
452
|
crlfDelay: Infinity,
|
|
322
453
|
});
|
|
323
454
|
let lineNum = 0;
|
|
324
|
-
let
|
|
455
|
+
let shouldStop = false;
|
|
325
456
|
for await (const line of rl) {
|
|
326
457
|
lineNum++;
|
|
327
458
|
if (line.includes("\0"))
|
|
328
459
|
break; // Skip binary files
|
|
329
460
|
searchRegex.lastIndex = 0;
|
|
330
|
-
|
|
331
|
-
|
|
461
|
+
const match = searchRegex.exec(line);
|
|
462
|
+
if (match) {
|
|
332
463
|
const colNum = match.index + 1; // 1-based
|
|
333
464
|
const truncated = truncateContext(line, colNum, SEARCH_MAX_COLUMNS);
|
|
334
465
|
results.push(`${relPath}:${lineNum} - ${truncated}`);
|
|
335
466
|
if (results.length >= SEARCH_MAX_MATCHES) {
|
|
336
|
-
|
|
337
|
-
|
|
467
|
+
jsHitLimit = true;
|
|
468
|
+
shouldStop = true;
|
|
338
469
|
break;
|
|
339
470
|
}
|
|
340
471
|
}
|
|
341
|
-
if (hitLimit)
|
|
342
|
-
break;
|
|
343
472
|
}
|
|
344
473
|
rl.close();
|
|
345
474
|
fileStream.destroy();
|
|
346
|
-
if (
|
|
475
|
+
if (shouldStop)
|
|
347
476
|
return;
|
|
348
477
|
}
|
|
349
478
|
catch (e) { }
|
|
@@ -353,6 +482,9 @@ export function registerFileTools(server, security) {
|
|
|
353
482
|
}
|
|
354
483
|
await searchRecursively(baseDir);
|
|
355
484
|
let outputText = results.join("\n") || "No matches found.";
|
|
485
|
+
if (jsHitLimit) {
|
|
486
|
+
outputText += `\n... [Search results truncated at ${SEARCH_MAX_MATCHES} matches. More results exist — use includeGlob/excludeGlob to narrow your search.]`;
|
|
487
|
+
}
|
|
356
488
|
// Let the LLM know it fell back to JS search, so it can decide if it wants to install ripgrep.
|
|
357
489
|
if (!rgPath) {
|
|
358
490
|
const installCmd = process.platform === "win32" ? "scoop install ripgrep (or winget install ripgrep)" : "apt-get install ripgrep (or apk add ripgrep)";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-tools.js","sourceRoot":"","sources":["../../../src/tools/file-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"file-tools.js","sourceRoot":"","sources":["../../../src/tools/file-tools.ts"],"names":[],"mappings":"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"}
|