@paretools/search 0.8.5 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/formatters.d.ts.map +1 -1
- package/dist/lib/formatters.js +7 -1
- package/dist/lib/formatters.js.map +1 -1
- package/dist/lib/parsers.d.ts +1 -1
- package/dist/lib/parsers.d.ts.map +1 -1
- package/dist/lib/parsers.js +67 -3
- package/dist/lib/parsers.js.map +1 -1
- package/dist/lib/search-runner.js +3 -3
- package/dist/schemas/index.d.ts +22 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +8 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/tools/count.d.ts.map +1 -1
- package/dist/tools/count.js +82 -8
- package/dist/tools/count.js.map +1 -1
- package/dist/tools/find.d.ts.map +1 -1
- package/dist/tools/find.js +82 -14
- package/dist/tools/find.js.map +1 -1
- package/dist/tools/jq.d.ts.map +1 -1
- package/dist/tools/jq.js +64 -8
- package/dist/tools/jq.js.map +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +70 -6
- package/dist/tools/search.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
import { registerAllTools } from "./tools/index.js";
|
|
5
5
|
const server = new McpServer({ name: "@paretools/search", version: "0.8.1" }, {
|
|
6
|
-
instructions: "Structured code search operations (ripgrep + fd). Returns typed JSON with match locations, file lists, and match counts.
|
|
6
|
+
instructions: "Structured code search operations (ripgrep + fd). Returns typed JSON with match locations, file lists, and match counts.",
|
|
7
7
|
});
|
|
8
8
|
registerAllTools(server);
|
|
9
9
|
const transport = new StdioServerTransport();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC/C;IACE,YAAY,EACV,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC/C;IACE,YAAY,EACV,0HAA0H;CAC7H,CACF,CAAC;AAEF,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEzB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/lib/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAI3F,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/lib/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAI3F,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAcvD;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAQnD;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAQrD;AAID,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAKlE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAG/D;AAED,oEAAoE;AACpE,MAAM,WAAW,WAAW;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAI5D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAG3D;AAED,2DAA2D;AAC3D,MAAM,WAAW,YAAY;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CAK/D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAG7D;AAID,sDAAsD;AACtD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAK/C;AAED,4DAA4D;AAC5D,MAAM,WAAW,SAAS;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,CAKtD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAKvD"}
|
package/dist/lib/formatters.js
CHANGED
|
@@ -4,6 +4,12 @@ export function formatSearch(data) {
|
|
|
4
4
|
if (data.totalMatches === 0)
|
|
5
5
|
return "search: no matches found.";
|
|
6
6
|
const lines = [`search: ${data.totalMatches} matches in ${data.filesSearched} files`];
|
|
7
|
+
if ((data.files ?? []).length > 0) {
|
|
8
|
+
lines.push("files:");
|
|
9
|
+
for (const f of data.files ?? []) {
|
|
10
|
+
lines.push(` ${f.file}: ${f.matchCount} matches`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
7
13
|
for (const m of data.matches ?? []) {
|
|
8
14
|
lines.push(` ${m.file}:${m.line}:${m.column}: ${m.lineContent}`);
|
|
9
15
|
}
|
|
@@ -15,7 +21,7 @@ export function formatFind(data) {
|
|
|
15
21
|
return "find: no files found.";
|
|
16
22
|
const lines = [`find: ${data.total} files`];
|
|
17
23
|
for (const f of data.files ?? []) {
|
|
18
|
-
lines.push(` ${f.path}`);
|
|
24
|
+
lines.push(` ${f.path} [${f.type}]`);
|
|
19
25
|
}
|
|
20
26
|
return lines.join("\n");
|
|
21
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/lib/formatters.ts"],"names":[],"mappings":"AAEA,uEAAuE;AAEvE,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAAC,IAAkB;IAC7C,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC;QAAE,OAAO,2BAA2B,CAAC;IAEhE,MAAM,KAAK,GAAG,CAAC,WAAW,IAAI,CAAC,YAAY,eAAe,IAAI,CAAC,aAAa,QAAQ,CAAC,CAAC;IACtF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,UAAU,CAAC,IAAgB;IACzC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC;QAAE,OAAO,uBAAuB,CAAC;IAErD,MAAM,KAAK,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/lib/formatters.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/parsers.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export declare function parseRgJsonOutput(stdout: string, maxResults: number): S
|
|
|
11
11
|
* Parses `fd` output (one file path per line) into a structured FindResult.
|
|
12
12
|
* Extracts basename and extension for each entry.
|
|
13
13
|
*/
|
|
14
|
-
export declare function parseFdOutput(stdout: string, maxResults: number): FindResult;
|
|
14
|
+
export declare function parseFdOutput(stdout: string, maxResults: number, cwd: string): FindResult;
|
|
15
15
|
/**
|
|
16
16
|
* Parses `rg --count` output into a structured CountResult.
|
|
17
17
|
* Each line has the format `file:count`. We split on the LAST colon
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/lib/parsers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/lib/parsers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAqC3F;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CAmDlF;AAaD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAuCzF;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAwB9D;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,CA6CxF"}
|
package/dist/lib/parsers.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as path from "node:path";
|
|
2
|
+
import { lstatSync } from "node:fs";
|
|
2
3
|
/**
|
|
3
4
|
* Parses `rg --json` JSONL output into a structured SearchResult.
|
|
4
5
|
*
|
|
@@ -9,6 +10,7 @@ import * as path from "node:path";
|
|
|
9
10
|
export function parseRgJsonOutput(stdout, maxResults) {
|
|
10
11
|
const lines = stdout.split("\n").filter(Boolean);
|
|
11
12
|
const matches = [];
|
|
13
|
+
const fileMatchCounts = new Map();
|
|
12
14
|
let filesSearched = 0;
|
|
13
15
|
const seenFiles = new Set();
|
|
14
16
|
for (const line of lines) {
|
|
@@ -23,6 +25,7 @@ export function parseRgJsonOutput(stdout, maxResults) {
|
|
|
23
25
|
const data = parsed.data;
|
|
24
26
|
const file = data.path.text;
|
|
25
27
|
seenFiles.add(file);
|
|
28
|
+
fileMatchCounts.set(file, (fileMatchCounts.get(file) ?? 0) + 1);
|
|
26
29
|
if (matches.length < maxResults) {
|
|
27
30
|
const submatch = data.submatches[0];
|
|
28
31
|
matches.push({
|
|
@@ -45,16 +48,28 @@ export function parseRgJsonOutput(stdout, maxResults) {
|
|
|
45
48
|
}
|
|
46
49
|
return {
|
|
47
50
|
matches,
|
|
51
|
+
files: Array.from(fileMatchCounts.entries()).map(([file, matchCount]) => ({
|
|
52
|
+
file,
|
|
53
|
+
matchCount,
|
|
54
|
+
})),
|
|
48
55
|
totalMatches: matches.length,
|
|
49
56
|
filesSearched,
|
|
50
57
|
};
|
|
51
58
|
}
|
|
52
59
|
// ── fd parser ───────────────────────────────────────────────────────
|
|
60
|
+
/**
|
|
61
|
+
* Normalizes a file extension by stripping the leading dot.
|
|
62
|
+
* This ensures output format matches the input format used in the `extension` param.
|
|
63
|
+
* e.g., ".ts" -> "ts", ".json" -> "json", "" -> ""
|
|
64
|
+
*/
|
|
65
|
+
function normalizeExt(ext) {
|
|
66
|
+
return ext.startsWith(".") ? ext.slice(1) : ext;
|
|
67
|
+
}
|
|
53
68
|
/**
|
|
54
69
|
* Parses `fd` output (one file path per line) into a structured FindResult.
|
|
55
70
|
* Extracts basename and extension for each entry.
|
|
56
71
|
*/
|
|
57
|
-
export function parseFdOutput(stdout, maxResults) {
|
|
72
|
+
export function parseFdOutput(stdout, maxResults, cwd) {
|
|
58
73
|
const lines = stdout.split("\n").filter(Boolean);
|
|
59
74
|
const files = [];
|
|
60
75
|
for (const line of lines) {
|
|
@@ -64,11 +79,29 @@ export function parseFdOutput(stdout, maxResults) {
|
|
|
64
79
|
if (!filePath)
|
|
65
80
|
continue;
|
|
66
81
|
const name = path.basename(filePath);
|
|
67
|
-
const ext = path.extname(filePath);
|
|
82
|
+
const ext = normalizeExt(path.extname(filePath));
|
|
83
|
+
const resolvedPath = path.isAbsolute(filePath) ? filePath : path.resolve(cwd, filePath);
|
|
84
|
+
let type = "other";
|
|
85
|
+
try {
|
|
86
|
+
const stat = lstatSync(resolvedPath);
|
|
87
|
+
if (stat.isSymbolicLink()) {
|
|
88
|
+
type = "symlink";
|
|
89
|
+
}
|
|
90
|
+
else if (stat.isDirectory()) {
|
|
91
|
+
type = "directory";
|
|
92
|
+
}
|
|
93
|
+
else if (stat.isFile()) {
|
|
94
|
+
type = "file";
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// Entry might disappear between fd output and stat. Keep type as "other".
|
|
99
|
+
}
|
|
68
100
|
files.push({
|
|
69
101
|
path: filePath,
|
|
70
102
|
name,
|
|
71
103
|
ext,
|
|
104
|
+
type,
|
|
72
105
|
});
|
|
73
106
|
}
|
|
74
107
|
return {
|
|
@@ -117,8 +150,39 @@ export function parseJqOutput(stdout, stderr, exitCode) {
|
|
|
117
150
|
exitCode,
|
|
118
151
|
};
|
|
119
152
|
}
|
|
153
|
+
const textOutput = stdout.trimEnd();
|
|
154
|
+
const trimmed = textOutput.trim();
|
|
155
|
+
if (trimmed.length === 0) {
|
|
156
|
+
return { output: textOutput, exitCode };
|
|
157
|
+
}
|
|
158
|
+
// Try parsing as a single JSON document first.
|
|
159
|
+
try {
|
|
160
|
+
return {
|
|
161
|
+
output: textOutput,
|
|
162
|
+
result: JSON.parse(trimmed),
|
|
163
|
+
exitCode,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// Fall through to JSONL parsing.
|
|
168
|
+
}
|
|
169
|
+
// Best-effort for multiple JSON outputs (one JSON value per line).
|
|
170
|
+
const jsonLines = trimmed.split("\n").filter((line) => line.trim().length > 0);
|
|
171
|
+
const parsedLines = [];
|
|
172
|
+
for (const line of jsonLines) {
|
|
173
|
+
try {
|
|
174
|
+
parsedLines.push(JSON.parse(line));
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return {
|
|
178
|
+
output: textOutput,
|
|
179
|
+
exitCode,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
}
|
|
120
183
|
return {
|
|
121
|
-
output:
|
|
184
|
+
output: textOutput,
|
|
185
|
+
result: parsedLines.length > 0 ? parsedLines : undefined,
|
|
122
186
|
exitCode,
|
|
123
187
|
};
|
|
124
188
|
}
|
package/dist/lib/parsers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../src/lib/parsers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../src/lib/parsers.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,12 +42,12 @@ async function runWithInstallHint(cmd, args, opts) {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
export async function rgCmd(args, cwd) {
|
|
45
|
-
return runWithInstallHint("rg", args, { cwd, timeout:
|
|
45
|
+
return runWithInstallHint("rg", args, { cwd, timeout: 180_000 });
|
|
46
46
|
}
|
|
47
47
|
export async function fdCmd(args, cwd) {
|
|
48
|
-
return runWithInstallHint("fd", args, { cwd, timeout:
|
|
48
|
+
return runWithInstallHint("fd", args, { cwd, timeout: 180_000 });
|
|
49
49
|
}
|
|
50
50
|
export async function jqCmd(args, opts) {
|
|
51
|
-
return runWithInstallHint("jq", args, { cwd: opts?.cwd, stdin: opts?.stdin, timeout:
|
|
51
|
+
return runWithInstallHint("jq", args, { cwd: opts?.cwd, stdin: opts?.stdin, timeout: 180_000 });
|
|
52
52
|
}
|
|
53
53
|
//# sourceMappingURL=search-runner.js.map
|
package/dist/schemas/index.d.ts
CHANGED
|
@@ -7,6 +7,11 @@ export declare const SearchMatchSchema: z.ZodObject<{
|
|
|
7
7
|
matchText: z.ZodString;
|
|
8
8
|
lineContent: z.ZodString;
|
|
9
9
|
}, z.core.$strip>;
|
|
10
|
+
/** Zod schema for per-file search match counts. */
|
|
11
|
+
export declare const SearchFileSummarySchema: z.ZodObject<{
|
|
12
|
+
file: z.ZodString;
|
|
13
|
+
matchCount: z.ZodNumber;
|
|
14
|
+
}, z.core.$strip>;
|
|
10
15
|
/** Zod schema for structured ripgrep search output with match list and totals. */
|
|
11
16
|
export declare const SearchResultSchema: z.ZodObject<{
|
|
12
17
|
matches: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
@@ -16,6 +21,10 @@ export declare const SearchResultSchema: z.ZodObject<{
|
|
|
16
21
|
matchText: z.ZodString;
|
|
17
22
|
lineContent: z.ZodString;
|
|
18
23
|
}, z.core.$strip>>>;
|
|
24
|
+
files: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
25
|
+
file: z.ZodString;
|
|
26
|
+
matchCount: z.ZodNumber;
|
|
27
|
+
}, z.core.$strip>>>;
|
|
19
28
|
totalMatches: z.ZodNumber;
|
|
20
29
|
filesSearched: z.ZodNumber;
|
|
21
30
|
}, z.core.$strip>;
|
|
@@ -25,6 +34,12 @@ export declare const FindFileSchema: z.ZodObject<{
|
|
|
25
34
|
path: z.ZodString;
|
|
26
35
|
name: z.ZodString;
|
|
27
36
|
ext: z.ZodString;
|
|
37
|
+
type: z.ZodEnum<{
|
|
38
|
+
file: "file";
|
|
39
|
+
directory: "directory";
|
|
40
|
+
symlink: "symlink";
|
|
41
|
+
other: "other";
|
|
42
|
+
}>;
|
|
28
43
|
}, z.core.$strip>;
|
|
29
44
|
/** Zod schema for structured fd output with file list and total count. */
|
|
30
45
|
export declare const FindResultSchema: z.ZodObject<{
|
|
@@ -32,6 +47,12 @@ export declare const FindResultSchema: z.ZodObject<{
|
|
|
32
47
|
path: z.ZodString;
|
|
33
48
|
name: z.ZodString;
|
|
34
49
|
ext: z.ZodString;
|
|
50
|
+
type: z.ZodEnum<{
|
|
51
|
+
file: "file";
|
|
52
|
+
directory: "directory";
|
|
53
|
+
symlink: "symlink";
|
|
54
|
+
other: "other";
|
|
55
|
+
}>;
|
|
35
56
|
}, z.core.$strip>>>;
|
|
36
57
|
total: z.ZodNumber;
|
|
37
58
|
}, z.core.$strip>;
|
|
@@ -54,6 +75,7 @@ export type CountResult = z.infer<typeof CountResultSchema>;
|
|
|
54
75
|
/** Zod schema for structured jq output with the transformed result. */
|
|
55
76
|
export declare const JqResultSchema: z.ZodObject<{
|
|
56
77
|
output: z.ZodString;
|
|
78
|
+
result: z.ZodOptional<z.ZodUnknown>;
|
|
57
79
|
exitCode: z.ZodNumber;
|
|
58
80
|
}, z.core.$strip>;
|
|
59
81
|
export type JqResult = z.infer<typeof JqResultSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,gFAAgF;AAChF,eAAO,MAAM,iBAAiB;;;;;;iBAM5B,CAAC;AAEH,kFAAkF;AAClF,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,gFAAgF;AAChF,eAAO,MAAM,iBAAiB;;;;;;iBAM5B,CAAC;AAEH,mDAAmD;AACnD,eAAO,MAAM,uBAAuB;;;iBAGlC,CAAC;AAEH,kFAAkF;AAClF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;iBAK7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,yEAAyE;AACzE,eAAO,MAAM,cAAc;;;;;;;;;;iBAKzB,CAAC;AAEH,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;iBAG3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAI1D,sDAAsD;AACtD,eAAO,MAAM,eAAe;;;iBAG1B,CAAC;AAEH,mFAAmF;AACnF,eAAO,MAAM,iBAAiB;;;;;;;iBAI5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D,uEAAuE;AACvE,eAAO,MAAM,cAAc;;;;iBAIzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
|
package/dist/schemas/index.js
CHANGED
|
@@ -8,9 +8,15 @@ export const SearchMatchSchema = z.object({
|
|
|
8
8
|
matchText: z.string(),
|
|
9
9
|
lineContent: z.string(),
|
|
10
10
|
});
|
|
11
|
+
/** Zod schema for per-file search match counts. */
|
|
12
|
+
export const SearchFileSummarySchema = z.object({
|
|
13
|
+
file: z.string(),
|
|
14
|
+
matchCount: z.number(),
|
|
15
|
+
});
|
|
11
16
|
/** Zod schema for structured ripgrep search output with match list and totals. */
|
|
12
17
|
export const SearchResultSchema = z.object({
|
|
13
18
|
matches: z.array(SearchMatchSchema).optional(),
|
|
19
|
+
files: z.array(SearchFileSummarySchema).optional(),
|
|
14
20
|
totalMatches: z.number(),
|
|
15
21
|
filesSearched: z.number(),
|
|
16
22
|
});
|
|
@@ -20,6 +26,7 @@ export const FindFileSchema = z.object({
|
|
|
20
26
|
path: z.string(),
|
|
21
27
|
name: z.string(),
|
|
22
28
|
ext: z.string(),
|
|
29
|
+
type: z.enum(["file", "directory", "symlink", "other"]),
|
|
23
30
|
});
|
|
24
31
|
/** Zod schema for structured fd output with file list and total count. */
|
|
25
32
|
export const FindResultSchema = z.object({
|
|
@@ -42,6 +49,7 @@ export const CountResultSchema = z.object({
|
|
|
42
49
|
/** Zod schema for structured jq output with the transformed result. */
|
|
43
50
|
export const JqResultSchema = z.object({
|
|
44
51
|
output: z.string(),
|
|
52
|
+
result: z.unknown().optional(),
|
|
45
53
|
exitCode: z.number(),
|
|
46
54
|
});
|
|
47
55
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,wEAAwE;AAExE,gFAAgF;AAChF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC;AAEH,kFAAkF;AAClF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;IAC9C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CAC1B,CAAC,CAAC;AAIH,wEAAwE;AAExE,yEAAyE;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,wEAAwE;AAExE,gFAAgF;AAChF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC;AAEH,mDAAmD;AACnD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAEH,kFAAkF;AAClF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;IAC9C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,QAAQ,EAAE;IAClD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CAC1B,CAAC,CAAC;AAIH,wEAAwE;AAExE,yEAAyE;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;CACxD,CAAC,CAAC;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAIH,uEAAuE;AAEvE,sDAAsD;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAEH,mFAAmF;AACnF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;IAC1C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAIH,sEAAsE;AAEtE,uEAAuE;AACvE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../../src/tools/count.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../../src/tools/count.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,QAgLlD"}
|
package/dist/tools/count.js
CHANGED
|
@@ -8,7 +8,7 @@ import { CountResultSchema } from "../schemas/index.js";
|
|
|
8
8
|
export function registerCountTool(server) {
|
|
9
9
|
server.registerTool("count", {
|
|
10
10
|
title: "Match Count",
|
|
11
|
-
description: "Counts pattern matches per file using ripgrep. Returns per-file match counts and totals.
|
|
11
|
+
description: "Counts pattern matches per file using ripgrep. Returns per-file match counts and totals.",
|
|
12
12
|
inputSchema: {
|
|
13
13
|
pattern: z
|
|
14
14
|
.string()
|
|
@@ -18,7 +18,7 @@ export function registerCountTool(server) {
|
|
|
18
18
|
.string()
|
|
19
19
|
.max(INPUT_LIMITS.PATH_MAX)
|
|
20
20
|
.optional()
|
|
21
|
-
.describe("Directory or file to search in
|
|
21
|
+
.describe("Directory or file to search in"),
|
|
22
22
|
glob: z
|
|
23
23
|
.string()
|
|
24
24
|
.max(INPUT_LIMITS.SHORT_STRING_MAX)
|
|
@@ -29,24 +29,82 @@ export function registerCountTool(server) {
|
|
|
29
29
|
.optional()
|
|
30
30
|
.default(true)
|
|
31
31
|
.describe("Case-sensitive search (default: true)"),
|
|
32
|
-
|
|
32
|
+
maxResults: z
|
|
33
|
+
.number()
|
|
34
|
+
.optional()
|
|
35
|
+
.describe("Maximum number of files to include in results — truncates per-file list to prevent excessive output in large repos"),
|
|
36
|
+
countMatches: z
|
|
33
37
|
.boolean()
|
|
34
38
|
.optional()
|
|
35
|
-
.
|
|
36
|
-
|
|
39
|
+
.describe("Count per-occurrence matches instead of per-line counts (--count-matches)"),
|
|
40
|
+
fixedStrings: z
|
|
41
|
+
.boolean()
|
|
42
|
+
.optional()
|
|
43
|
+
.describe("Treat pattern as a literal string instead of regex (--fixed-strings)"),
|
|
44
|
+
wordRegexp: z.boolean().optional().describe("Only match whole words (--word-regexp)"),
|
|
45
|
+
invertMatch: z
|
|
46
|
+
.boolean()
|
|
47
|
+
.optional()
|
|
48
|
+
.describe("Count non-matching lines instead of matching lines (--invert-match)"),
|
|
49
|
+
hidden: z.boolean().optional().describe("Search hidden files and directories (--hidden)"),
|
|
50
|
+
includeZero: z
|
|
51
|
+
.boolean()
|
|
52
|
+
.optional()
|
|
53
|
+
.describe("Show files with zero matches (--include-zero)"),
|
|
54
|
+
type: z
|
|
55
|
+
.string()
|
|
56
|
+
.max(INPUT_LIMITS.SHORT_STRING_MAX)
|
|
57
|
+
.optional()
|
|
58
|
+
.describe("Filter by file type (e.g., 'ts', 'js', 'py', 'rust'). Maps to --type TYPE."),
|
|
59
|
+
sort: z
|
|
60
|
+
.enum(["path", "count"])
|
|
61
|
+
.optional()
|
|
62
|
+
.describe("Sort results: 'path' for alphabetical by file path, 'count' for descending match count"),
|
|
63
|
+
maxDepth: z.number().optional().describe("Maximum directory depth to search (--max-depth)"),
|
|
64
|
+
noIgnore: z
|
|
65
|
+
.boolean()
|
|
66
|
+
.optional()
|
|
67
|
+
.describe("Don't respect .gitignore and other ignore files (--no-ignore)"),
|
|
68
|
+
compact: z.boolean().optional().default(true).describe("Prefer compact output"),
|
|
37
69
|
},
|
|
38
70
|
outputSchema: CountResultSchema,
|
|
39
|
-
}, async ({ pattern, path, glob, caseSensitive, compact }) => {
|
|
71
|
+
}, async ({ pattern, path, glob, caseSensitive, maxResults, countMatches, fixedStrings, wordRegexp, invertMatch, hidden, includeZero, type, sort, maxDepth, noIgnore, compact, }) => {
|
|
40
72
|
assertNoFlagInjection(pattern, "pattern");
|
|
41
73
|
if (path)
|
|
42
74
|
assertNoFlagInjection(path, "path");
|
|
43
75
|
if (glob)
|
|
44
76
|
assertNoFlagInjection(glob, "glob");
|
|
77
|
+
if (type)
|
|
78
|
+
assertNoFlagInjection(type, "type");
|
|
45
79
|
const cwd = path || process.cwd();
|
|
46
|
-
const args = ["--count"];
|
|
80
|
+
const args = countMatches ? ["--count-matches"] : ["--count"];
|
|
47
81
|
if (!caseSensitive) {
|
|
48
82
|
args.push("--ignore-case");
|
|
49
83
|
}
|
|
84
|
+
if (fixedStrings) {
|
|
85
|
+
args.push("--fixed-strings");
|
|
86
|
+
}
|
|
87
|
+
if (wordRegexp) {
|
|
88
|
+
args.push("--word-regexp");
|
|
89
|
+
}
|
|
90
|
+
if (invertMatch) {
|
|
91
|
+
args.push("--invert-match");
|
|
92
|
+
}
|
|
93
|
+
if (hidden) {
|
|
94
|
+
args.push("--hidden");
|
|
95
|
+
}
|
|
96
|
+
if (includeZero) {
|
|
97
|
+
args.push("--include-zero");
|
|
98
|
+
}
|
|
99
|
+
if (type) {
|
|
100
|
+
args.push("--type", type);
|
|
101
|
+
}
|
|
102
|
+
if (maxDepth !== undefined) {
|
|
103
|
+
args.push("--max-depth", String(maxDepth));
|
|
104
|
+
}
|
|
105
|
+
if (noIgnore) {
|
|
106
|
+
args.push("--no-ignore");
|
|
107
|
+
}
|
|
50
108
|
if (glob) {
|
|
51
109
|
args.push("--glob", glob);
|
|
52
110
|
}
|
|
@@ -56,7 +114,23 @@ export function registerCountTool(server) {
|
|
|
56
114
|
args.push(".");
|
|
57
115
|
const result = await rgCmd(args, cwd);
|
|
58
116
|
// rg exits with code 1 when no matches are found — that's not an error
|
|
59
|
-
|
|
117
|
+
let data = parseRgCountOutput(result.stdout);
|
|
118
|
+
// Apply client-side sort if requested
|
|
119
|
+
if (sort && data.files) {
|
|
120
|
+
if (sort === "path") {
|
|
121
|
+
data.files.sort((a, b) => a.file.localeCompare(b.file));
|
|
122
|
+
}
|
|
123
|
+
else if (sort === "count") {
|
|
124
|
+
data.files.sort((a, b) => b.count - a.count);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Apply maxResults truncation to the per-file list
|
|
128
|
+
if (maxResults !== undefined && data.files && data.files.length > maxResults) {
|
|
129
|
+
data = {
|
|
130
|
+
...data,
|
|
131
|
+
files: data.files.slice(0, maxResults),
|
|
132
|
+
};
|
|
133
|
+
}
|
|
60
134
|
const rawOutput = (result.stdout + "\n" + result.stderr).trim();
|
|
61
135
|
return compactDualOutput(data, rawOutput, formatCount, compactCountMap, formatCountCompact, compact === false);
|
|
62
136
|
});
|
package/dist/tools/count.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"count.js","sourceRoot":"","sources":["../../src/tools/count.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,0DAA0D;AAC1D,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CACjB,OAAO,EACP;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"count.js","sourceRoot":"","sources":["../../src/tools/count.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/find.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../src/tools/find.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../src/tools/find.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAiLjD"}
|
package/dist/tools/find.js
CHANGED
|
@@ -8,63 +8,131 @@ import { FindResultSchema } from "../schemas/index.js";
|
|
|
8
8
|
export function registerFindTool(server) {
|
|
9
9
|
server.registerTool("find", {
|
|
10
10
|
title: "Find Files",
|
|
11
|
-
description: "Finds files and directories using fd with structured output. Returns file paths, names, and extensions.
|
|
11
|
+
description: "Finds files and directories using fd with structured output. Returns file paths, names, and extensions.",
|
|
12
12
|
inputSchema: {
|
|
13
13
|
pattern: z
|
|
14
14
|
.string()
|
|
15
15
|
.max(INPUT_LIMITS.STRING_MAX)
|
|
16
16
|
.optional()
|
|
17
17
|
.describe("Regex pattern to match file/directory names"),
|
|
18
|
-
path: z
|
|
19
|
-
.string()
|
|
20
|
-
.max(INPUT_LIMITS.PATH_MAX)
|
|
21
|
-
.optional()
|
|
22
|
-
.describe("Directory to search in (default: cwd)"),
|
|
18
|
+
path: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Directory to search in"),
|
|
23
19
|
type: z
|
|
24
|
-
.enum(["file", "directory", "symlink"])
|
|
20
|
+
.enum(["file", "directory", "symlink", "executable", "empty"])
|
|
25
21
|
.optional()
|
|
26
|
-
.describe("Filter by entry type: file, directory, or
|
|
22
|
+
.describe("Filter by entry type: file, directory, symlink, executable, or empty"),
|
|
27
23
|
extension: z
|
|
28
24
|
.string()
|
|
29
25
|
.max(INPUT_LIMITS.SHORT_STRING_MAX)
|
|
30
26
|
.optional()
|
|
31
27
|
.describe("Filter by file extension (e.g., 'ts', 'js')"),
|
|
28
|
+
exclude: z
|
|
29
|
+
.string()
|
|
30
|
+
.max(INPUT_LIMITS.SHORT_STRING_MAX)
|
|
31
|
+
.optional()
|
|
32
|
+
.describe("Exclude entries matching this glob pattern (maps to --exclude, e.g., 'node_modules', 'dist')"),
|
|
33
|
+
size: z
|
|
34
|
+
.string()
|
|
35
|
+
.max(INPUT_LIMITS.SHORT_STRING_MAX)
|
|
36
|
+
.optional()
|
|
37
|
+
.describe("Filter by file size (maps to --size, e.g., '+1m' for >1MB, '-100k' for <100KB)"),
|
|
38
|
+
changedWithin: z
|
|
39
|
+
.string()
|
|
40
|
+
.max(INPUT_LIMITS.SHORT_STRING_MAX)
|
|
41
|
+
.optional()
|
|
42
|
+
.describe("Filter by modification time (maps to --changed-within, e.g., '1d', '2h', '30min')"),
|
|
32
43
|
maxResults: z
|
|
33
44
|
.number()
|
|
34
45
|
.optional()
|
|
35
46
|
.default(1000)
|
|
36
47
|
.describe("Maximum number of results to return (default: 1000)"),
|
|
37
|
-
|
|
48
|
+
maxDepth: z.number().optional().describe("Maximum directory depth to search (--max-depth)"),
|
|
49
|
+
hidden: z.boolean().optional().describe("Include hidden files and directories (--hidden)"),
|
|
50
|
+
absolutePath: z
|
|
38
51
|
.boolean()
|
|
39
52
|
.optional()
|
|
40
|
-
.
|
|
41
|
-
|
|
53
|
+
.describe("Return absolute paths instead of relative (--absolute-path)"),
|
|
54
|
+
fullPath: z
|
|
55
|
+
.boolean()
|
|
56
|
+
.optional()
|
|
57
|
+
.describe("Match pattern against full path, not just filename (--full-path)"),
|
|
58
|
+
glob: z
|
|
59
|
+
.boolean()
|
|
60
|
+
.optional()
|
|
61
|
+
.describe("Use glob pattern matching instead of regex (--glob)"),
|
|
62
|
+
noIgnore: z
|
|
63
|
+
.boolean()
|
|
64
|
+
.optional()
|
|
65
|
+
.describe("Don't respect .gitignore and other ignore files (--no-ignore)"),
|
|
66
|
+
follow: z.boolean().optional().describe("Follow symbolic links (--follow)"),
|
|
67
|
+
compact: z.boolean().optional().default(true).describe("Prefer compact output"),
|
|
42
68
|
},
|
|
43
69
|
outputSchema: FindResultSchema,
|
|
44
|
-
}, async ({ pattern, path, type, extension, maxResults, compact }) => {
|
|
70
|
+
}, async ({ pattern, path, type, extension, exclude, size, changedWithin, maxResults, maxDepth, hidden, absolutePath, fullPath, glob, noIgnore, follow, compact, }) => {
|
|
45
71
|
if (pattern)
|
|
46
72
|
assertNoFlagInjection(pattern, "pattern");
|
|
47
73
|
if (path)
|
|
48
74
|
assertNoFlagInjection(path, "path");
|
|
49
75
|
if (extension)
|
|
50
76
|
assertNoFlagInjection(extension, "extension");
|
|
77
|
+
if (exclude)
|
|
78
|
+
assertNoFlagInjection(exclude, "exclude");
|
|
79
|
+
if (size)
|
|
80
|
+
assertNoFlagInjection(size, "size");
|
|
81
|
+
if (changedWithin)
|
|
82
|
+
assertNoFlagInjection(changedWithin, "changedWithin");
|
|
51
83
|
const cwd = path || process.cwd();
|
|
52
84
|
const args = ["--color", "never"];
|
|
53
85
|
if (type) {
|
|
54
|
-
const typeMap = {
|
|
86
|
+
const typeMap = {
|
|
87
|
+
file: "f",
|
|
88
|
+
directory: "d",
|
|
89
|
+
symlink: "l",
|
|
90
|
+
executable: "x",
|
|
91
|
+
empty: "e",
|
|
92
|
+
};
|
|
55
93
|
args.push("--type", typeMap[type]);
|
|
56
94
|
}
|
|
57
95
|
if (extension) {
|
|
58
96
|
args.push("--extension", extension);
|
|
59
97
|
}
|
|
98
|
+
if (exclude) {
|
|
99
|
+
args.push("--exclude", exclude);
|
|
100
|
+
}
|
|
101
|
+
if (size) {
|
|
102
|
+
args.push("--size", size);
|
|
103
|
+
}
|
|
104
|
+
if (changedWithin) {
|
|
105
|
+
args.push("--changed-within", changedWithin);
|
|
106
|
+
}
|
|
60
107
|
if (maxResults) {
|
|
61
108
|
args.push("--max-results", String(maxResults));
|
|
62
109
|
}
|
|
110
|
+
if (maxDepth !== undefined) {
|
|
111
|
+
args.push("--max-depth", String(maxDepth));
|
|
112
|
+
}
|
|
113
|
+
if (hidden) {
|
|
114
|
+
args.push("--hidden");
|
|
115
|
+
}
|
|
116
|
+
if (absolutePath) {
|
|
117
|
+
args.push("--absolute-path");
|
|
118
|
+
}
|
|
119
|
+
if (fullPath) {
|
|
120
|
+
args.push("--full-path");
|
|
121
|
+
}
|
|
122
|
+
if (glob) {
|
|
123
|
+
args.push("--glob");
|
|
124
|
+
}
|
|
125
|
+
if (noIgnore) {
|
|
126
|
+
args.push("--no-ignore");
|
|
127
|
+
}
|
|
128
|
+
if (follow) {
|
|
129
|
+
args.push("--follow");
|
|
130
|
+
}
|
|
63
131
|
if (pattern) {
|
|
64
132
|
args.push(pattern);
|
|
65
133
|
}
|
|
66
134
|
const result = await fdCmd(args, cwd);
|
|
67
|
-
const data = parseFdOutput(result.stdout, maxResults ?? 1000);
|
|
135
|
+
const data = parseFdOutput(result.stdout, maxResults ?? 1000, cwd);
|
|
68
136
|
const rawOutput = (result.stdout + "\n" + result.stderr).trim();
|
|
69
137
|
return compactDualOutput(data, rawOutput, formatFind, compactFindMap, formatFindCompact, compact === false);
|
|
70
138
|
});
|
package/dist/tools/find.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../src/tools/find.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,yDAAyD;AACzD,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,YAAY,CACjB,MAAM,EACN;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"find.js","sourceRoot":"","sources":["../../src/tools/find.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/jq.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jq.d.ts","sourceRoot":"","sources":["../../src/tools/jq.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"jq.d.ts","sourceRoot":"","sources":["../../src/tools/jq.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,uDAAuD;AACvD,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,QA+J/C"}
|
package/dist/tools/jq.js
CHANGED
|
@@ -8,7 +8,7 @@ import { JqResultSchema } from "../schemas/index.js";
|
|
|
8
8
|
export function registerJqTool(server) {
|
|
9
9
|
server.registerTool("jq", {
|
|
10
10
|
title: "JSON Processor",
|
|
11
|
-
description: "Processes and transforms JSON using jq expressions. Accepts JSON from a file path or inline string. Returns the transformed result.
|
|
11
|
+
description: "Processes and transforms JSON using jq expressions. Accepts JSON from a file path or inline string. Returns the transformed result.",
|
|
12
12
|
inputSchema: {
|
|
13
13
|
expression: z
|
|
14
14
|
.string()
|
|
@@ -30,19 +30,49 @@ export function registerJqTool(server) {
|
|
|
30
30
|
.default(false)
|
|
31
31
|
.describe("Output raw strings without JSON quotes (-r flag)"),
|
|
32
32
|
sortKeys: z.boolean().optional().default(false).describe("Sort object keys (-S flag)"),
|
|
33
|
-
|
|
33
|
+
nullInput: z
|
|
34
34
|
.boolean()
|
|
35
35
|
.optional()
|
|
36
|
-
.
|
|
37
|
-
|
|
36
|
+
.describe("Don't read any input, useful for generating JSON from scratch (--null-input)"),
|
|
37
|
+
slurp: z
|
|
38
|
+
.boolean()
|
|
39
|
+
.optional()
|
|
40
|
+
.describe("Read entire input into a single array, useful for JSONL or multiple objects (--slurp)"),
|
|
41
|
+
compactOutput: z
|
|
42
|
+
.boolean()
|
|
43
|
+
.optional()
|
|
44
|
+
.describe("Compact output, no pretty-printing (--compact-output)"),
|
|
45
|
+
rawInput: z
|
|
46
|
+
.boolean()
|
|
47
|
+
.optional()
|
|
48
|
+
.describe("Read each line as a string instead of JSON (--raw-input)"),
|
|
49
|
+
exitStatus: z
|
|
50
|
+
.boolean()
|
|
51
|
+
.optional()
|
|
52
|
+
.describe("Use jq exit status for boolean checks: exit 1 if last output is false/null (--exit-status)"),
|
|
53
|
+
arg: z
|
|
54
|
+
.record(z.string(), z.string())
|
|
55
|
+
.optional()
|
|
56
|
+
.describe("Named string variables for parameterized expressions (maps to repeated --arg NAME VALUE)"),
|
|
57
|
+
argjson: z
|
|
58
|
+
.record(z.string(), z.string())
|
|
59
|
+
.optional()
|
|
60
|
+
.describe("Named JSON variables for parameterized expressions (maps to repeated --argjson NAME VALUE)"),
|
|
61
|
+
indent: z.number().optional().describe("Number of spaces for indentation (--indent)"),
|
|
62
|
+
joinOutput: z
|
|
63
|
+
.boolean()
|
|
64
|
+
.optional()
|
|
65
|
+
.describe("Don't print newlines between outputs (--join-output)"),
|
|
66
|
+
compact: z.boolean().optional().default(true).describe("Prefer compact output"),
|
|
38
67
|
},
|
|
39
68
|
outputSchema: JqResultSchema,
|
|
40
|
-
}, async ({ expression, file, input, rawOutput, sortKeys, compact }) => {
|
|
69
|
+
}, async ({ expression, file, input, rawOutput, sortKeys, nullInput, slurp, compactOutput, rawInput, exitStatus, arg, argjson, indent, joinOutput, compact, }) => {
|
|
70
|
+
assertNoFlagInjection(expression, "expression");
|
|
41
71
|
if (file)
|
|
42
72
|
assertNoFlagInjection(file, "file");
|
|
43
|
-
if (!file && !input) {
|
|
44
|
-
const data = parseJqOutput("", "Either 'file' or '
|
|
45
|
-
const rawText = "jq: error — either 'file' or '
|
|
73
|
+
if (!file && !input && !nullInput) {
|
|
74
|
+
const data = parseJqOutput("", "Either 'file', 'input', or 'nullInput' must be provided.", 1);
|
|
75
|
+
const rawText = "jq: error — either 'file', 'input', or 'nullInput' must be provided.";
|
|
46
76
|
return compactDualOutput(data, rawText, formatJq, compactJqMap, formatJqCompact, compact === false);
|
|
47
77
|
}
|
|
48
78
|
const args = [];
|
|
@@ -50,6 +80,32 @@ export function registerJqTool(server) {
|
|
|
50
80
|
args.push("-r");
|
|
51
81
|
if (sortKeys)
|
|
52
82
|
args.push("-S");
|
|
83
|
+
if (nullInput)
|
|
84
|
+
args.push("--null-input");
|
|
85
|
+
if (slurp)
|
|
86
|
+
args.push("--slurp");
|
|
87
|
+
if (compactOutput)
|
|
88
|
+
args.push("--compact-output");
|
|
89
|
+
if (rawInput)
|
|
90
|
+
args.push("--raw-input");
|
|
91
|
+
if (exitStatus)
|
|
92
|
+
args.push("--exit-status");
|
|
93
|
+
if (indent !== undefined)
|
|
94
|
+
args.push("--indent", String(indent));
|
|
95
|
+
if (joinOutput)
|
|
96
|
+
args.push("--join-output");
|
|
97
|
+
// Add named string variables
|
|
98
|
+
if (arg) {
|
|
99
|
+
for (const [name, value] of Object.entries(arg)) {
|
|
100
|
+
args.push("--arg", name, value);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Add named JSON variables
|
|
104
|
+
if (argjson) {
|
|
105
|
+
for (const [name, value] of Object.entries(argjson)) {
|
|
106
|
+
args.push("--argjson", name, value);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
53
109
|
args.push(expression);
|
|
54
110
|
if (file) {
|
|
55
111
|
args.push(file);
|
package/dist/tools/jq.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jq.js","sourceRoot":"","sources":["../../src/tools/jq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,uDAAuD;AACvD,MAAM,UAAU,cAAc,CAAC,MAAiB;IAC9C,MAAM,CAAC,YAAY,CACjB,IAAI,EACJ;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"jq.js","sourceRoot":"","sources":["../../src/tools/jq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,uDAAuD;AACvD,MAAM,UAAU,cAAc,CAAC,MAAiB;IAC9C,MAAM,CAAC,YAAY,CACjB,IAAI,EACJ;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,qIAAqI;QACvI,WAAW,EAAE;YACX,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC;iBAC5B,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,gCAAgC,CAAC;YAC7C,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC;iBAC5B,QAAQ,EAAE;iBACV,QAAQ,CAAC,gEAAgE,CAAC;YAC7E,SAAS,EAAE,CAAC;iBACT,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,kDAAkD,CAAC;YAC/D,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YACtF,SAAS,EAAE,CAAC;iBACT,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,8EAA8E,CAAC;YAC3F,KAAK,EAAE,CAAC;iBACL,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,uFAAuF,CACxF;YACH,aAAa,EAAE,CAAC;iBACb,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,uDAAuD,CAAC;YACpE,QAAQ,EAAE,CAAC;iBACR,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,0DAA0D,CAAC;YACvE,UAAU,EAAE,CAAC;iBACV,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,4FAA4F,CAC7F;YACH,GAAG,EAAE,CAAC;iBACH,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;iBAC9B,QAAQ,EAAE;iBACV,QAAQ,CACP,0FAA0F,CAC3F;YACH,OAAO,EAAE,CAAC;iBACP,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;iBAC9B,QAAQ,EAAE;iBACV,QAAQ,CACP,4FAA4F,CAC7F;YACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACrF,UAAU,EAAE,CAAC;iBACV,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,sDAAsD,CAAC;YACnE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;SAChF;QACD,YAAY,EAAE,cAAc;KAC7B,EACD,KAAK,EAAE,EACL,UAAU,EACV,IAAI,EACJ,KAAK,EACL,SAAS,EACT,QAAQ,EACR,SAAS,EACT,KAAK,EACL,aAAa,EACb,QAAQ,EACR,UAAU,EACV,GAAG,EACH,OAAO,EACP,MAAM,EACN,UAAU,EACV,OAAO,GACR,EAAE,EAAE;QACH,qBAAqB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAChD,IAAI,IAAI;YAAE,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE9C,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,aAAa,CACxB,EAAE,EACF,0DAA0D,EAC1D,CAAC,CACF,CAAC;YACF,MAAM,OAAO,GAAG,sEAAsE,CAAC;YACvF,OAAO,iBAAiB,CACtB,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,OAAO,KAAK,KAAK,CAClB,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,IAAI,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,aAAa;YAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACjD,IAAI,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvC,IAAI,UAAU;YAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC3C,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,IAAI,UAAU;YAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE3C,6BAA6B;QAC7B,IAAI,GAAG,EAAE,CAAC;YACR,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtB,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE;YAC/B,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;SAChC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAE9D,OAAO,iBAAiB,CACtB,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,QAyKnD"}
|
package/dist/tools/search.js
CHANGED
|
@@ -8,7 +8,7 @@ import { SearchResultSchema } from "../schemas/index.js";
|
|
|
8
8
|
export function registerSearchTool(server) {
|
|
9
9
|
server.registerTool("search", {
|
|
10
10
|
title: "Code Search",
|
|
11
|
-
description: "Searches file contents using ripgrep with structured JSON output. Returns match locations with file, line, column, matched text, and line content.
|
|
11
|
+
description: "Searches file contents using ripgrep with structured JSON output. Returns match locations with file, line, column, matched text, and line content.",
|
|
12
12
|
inputSchema: {
|
|
13
13
|
pattern: z
|
|
14
14
|
.string()
|
|
@@ -18,7 +18,7 @@ export function registerSearchTool(server) {
|
|
|
18
18
|
.string()
|
|
19
19
|
.max(INPUT_LIMITS.PATH_MAX)
|
|
20
20
|
.optional()
|
|
21
|
-
.describe("Directory or file to search in
|
|
21
|
+
.describe("Directory or file to search in"),
|
|
22
22
|
glob: z
|
|
23
23
|
.string()
|
|
24
24
|
.max(INPUT_LIMITS.SHORT_STRING_MAX)
|
|
@@ -34,24 +34,88 @@ export function registerSearchTool(server) {
|
|
|
34
34
|
.optional()
|
|
35
35
|
.default(1000)
|
|
36
36
|
.describe("Maximum number of matches to return (default: 1000)"),
|
|
37
|
-
|
|
37
|
+
maxCount: z
|
|
38
|
+
.number()
|
|
39
|
+
.optional()
|
|
40
|
+
.describe("Maximum matches per file to stop rg early (--max-count)"),
|
|
41
|
+
fixedStrings: z
|
|
38
42
|
.boolean()
|
|
39
43
|
.optional()
|
|
40
|
-
.
|
|
41
|
-
|
|
44
|
+
.describe("Treat pattern as a literal string instead of regex (--fixed-strings)"),
|
|
45
|
+
wordRegexp: z.boolean().optional().describe("Only match whole words (--word-regexp)"),
|
|
46
|
+
invertMatch: z
|
|
47
|
+
.boolean()
|
|
48
|
+
.optional()
|
|
49
|
+
.describe("Show lines that do NOT match the pattern (--invert-match)"),
|
|
50
|
+
multiline: z
|
|
51
|
+
.boolean()
|
|
52
|
+
.optional()
|
|
53
|
+
.describe("Allow patterns to span multiple lines (--multiline)"),
|
|
54
|
+
hidden: z.boolean().optional().describe("Search hidden files and directories (--hidden)"),
|
|
55
|
+
type: z
|
|
56
|
+
.string()
|
|
57
|
+
.max(INPUT_LIMITS.SHORT_STRING_MAX)
|
|
58
|
+
.optional()
|
|
59
|
+
.describe("Filter by file type (e.g., 'ts', 'js', 'py', 'rust'). Maps to --type TYPE."),
|
|
60
|
+
sort: z
|
|
61
|
+
.enum(["path", "modified", "accessed", "created"])
|
|
62
|
+
.optional()
|
|
63
|
+
.describe("Sort results by the specified criterion (maps to --sort TYPE)"),
|
|
64
|
+
maxDepth: z.number().optional().describe("Maximum directory depth to search (--max-depth)"),
|
|
65
|
+
followSymlinks: z.boolean().optional().describe("Follow symbolic links (--follow)"),
|
|
66
|
+
noIgnore: z
|
|
67
|
+
.boolean()
|
|
68
|
+
.optional()
|
|
69
|
+
.describe("Don't respect .gitignore and other ignore files (--no-ignore)"),
|
|
70
|
+
compact: z.boolean().optional().default(true).describe("Prefer compact output"),
|
|
42
71
|
},
|
|
43
72
|
outputSchema: SearchResultSchema,
|
|
44
|
-
}, async ({ pattern, path, glob, caseSensitive, maxResults, compact }) => {
|
|
73
|
+
}, async ({ pattern, path, glob, caseSensitive, maxResults, maxCount, fixedStrings, wordRegexp, invertMatch, multiline, hidden, type, sort, maxDepth, followSymlinks, noIgnore, compact, }) => {
|
|
45
74
|
assertNoFlagInjection(pattern, "pattern");
|
|
46
75
|
if (path)
|
|
47
76
|
assertNoFlagInjection(path, "path");
|
|
48
77
|
if (glob)
|
|
49
78
|
assertNoFlagInjection(glob, "glob");
|
|
79
|
+
if (type)
|
|
80
|
+
assertNoFlagInjection(type, "type");
|
|
50
81
|
const cwd = path || process.cwd();
|
|
51
82
|
const args = ["--json"];
|
|
52
83
|
if (!caseSensitive) {
|
|
53
84
|
args.push("--ignore-case");
|
|
54
85
|
}
|
|
86
|
+
if (fixedStrings) {
|
|
87
|
+
args.push("--fixed-strings");
|
|
88
|
+
}
|
|
89
|
+
if (wordRegexp) {
|
|
90
|
+
args.push("--word-regexp");
|
|
91
|
+
}
|
|
92
|
+
if (invertMatch) {
|
|
93
|
+
args.push("--invert-match");
|
|
94
|
+
}
|
|
95
|
+
if (multiline) {
|
|
96
|
+
args.push("--multiline");
|
|
97
|
+
}
|
|
98
|
+
if (hidden) {
|
|
99
|
+
args.push("--hidden");
|
|
100
|
+
}
|
|
101
|
+
if (type) {
|
|
102
|
+
args.push("--type", type);
|
|
103
|
+
}
|
|
104
|
+
if (sort) {
|
|
105
|
+
args.push("--sort", sort);
|
|
106
|
+
}
|
|
107
|
+
if (maxCount !== undefined) {
|
|
108
|
+
args.push("--max-count", String(maxCount));
|
|
109
|
+
}
|
|
110
|
+
if (maxDepth !== undefined) {
|
|
111
|
+
args.push("--max-depth", String(maxDepth));
|
|
112
|
+
}
|
|
113
|
+
if (followSymlinks) {
|
|
114
|
+
args.push("--follow");
|
|
115
|
+
}
|
|
116
|
+
if (noIgnore) {
|
|
117
|
+
args.push("--no-ignore");
|
|
118
|
+
}
|
|
55
119
|
if (glob) {
|
|
56
120
|
args.push("--glob", glob);
|
|
57
121
|
}
|
package/dist/tools/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,2DAA2D;AAC3D,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,MAAM,CAAC,YAAY,CACjB,QAAQ,EACR;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@paretools/search",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"mcpName": "io.github.Dave-London/pare-search",
|
|
5
5
|
"description": "MCP server for code search (ripgrep + fd) with structured, token-efficient output",
|
|
6
6
|
"license": "MIT",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
54
54
|
"zod": "^4.3.6",
|
|
55
|
-
"@paretools/shared": "0.
|
|
55
|
+
"@paretools/shared": "0.10.0"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@types/node": "^25.2.3",
|