@heyhuynhgiabuu/pi-pretty 0.6.15 → 0.6.17
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/CHANGELOG.md +19 -116
- package/README.md +8 -16
- package/dist/collapsed-hint.d.ts +7 -0
- package/dist/collapsed-hint.d.ts.map +1 -0
- package/dist/collapsed-hint.js +17 -0
- package/dist/collapsed-hint.js.map +1 -0
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +64 -19
- package/dist/config.js.map +1 -1
- package/dist/expand.d.ts +7 -0
- package/dist/expand.d.ts.map +1 -0
- package/dist/expand.js +11 -0
- package/dist/expand.js.map +1 -0
- package/dist/find-glob.d.ts +9 -0
- package/dist/find-glob.d.ts.map +1 -0
- package/dist/find-glob.js +29 -0
- package/dist/find-glob.js.map +1 -0
- package/dist/image.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -19
- package/dist/index.js.map +1 -1
- package/dist/render.d.ts +3 -5
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +24 -19
- package/dist/render.js.map +1 -1
- package/dist/tools/bash.d.ts +1 -1
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +22 -26
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/find.d.ts +3 -3
- package/dist/tools/find.d.ts.map +1 -1
- package/dist/tools/find.js +99 -50
- package/dist/tools/find.js.map +1 -1
- package/dist/tools/grep.d.ts +2 -2
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/grep.js +12 -8
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/labels.d.ts +2 -0
- package/dist/tools/labels.d.ts.map +1 -0
- package/dist/tools/labels.js +7 -0
- package/dist/tools/labels.js.map +1 -0
- package/dist/tools/ls.d.ts +1 -1
- package/dist/tools/ls.d.ts.map +1 -1
- package/dist/tools/ls.js +9 -5
- package/dist/tools/ls.js.map +1 -1
- package/dist/tools/read.d.ts +1 -1
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +34 -48
- package/dist/tools/read.js.map +1 -1
- package/dist/tui-text.d.ts.map +1 -1
- package/dist/tui-text.js +1 -5
- package/dist/tui-text.js.map +1 -1
- package/dist/types.d.ts +4 -27
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -4
- package/src/collapsed-hint.ts +14 -0
- package/src/config.ts +70 -22
- package/src/expand.ts +10 -0
- package/src/find-glob.ts +21 -0
- package/src/image.ts +1 -1
- package/src/index.ts +25 -32
- package/src/notices.ts +1 -1
- package/src/render.ts +50 -41
- package/src/tools/bash.ts +27 -48
- package/src/tools/find.ts +131 -86
- package/src/tools/grep.ts +23 -17
- package/src/tools/labels.ts +3 -0
- package/src/tools/ls.ts +27 -13
- package/src/tools/metrics.ts +1 -1
- package/src/tools/read.ts +55 -66
- package/src/tui-text.ts +1 -5
- package/src/types.ts +4 -35
- package/dist/multi-grep-fallback.d.ts +0 -30
- package/dist/multi-grep-fallback.d.ts.map +0 -1
- package/dist/multi-grep-fallback.js +0 -205
- package/dist/multi-grep-fallback.js.map +0 -1
- package/dist/tools/multi-grep.d.ts +0 -7
- package/dist/tools/multi-grep.d.ts.map +0 -1
- package/dist/tools/multi-grep.js +0 -294
- package/dist/tools/multi-grep.js.map +0 -1
- package/src/multi-grep-fallback.ts +0 -248
- package/src/tools/multi-grep.ts +0 -331
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseMultiGrepConstraints = parseMultiGrepConstraints;
|
|
4
|
-
exports.getMultiGrepRipgrepArgs = getMultiGrepRipgrepArgs;
|
|
5
|
-
exports.runMultiGrepRipgrepFallback = runMultiGrepRipgrepFallback;
|
|
6
|
-
const node_child_process_1 = require("node:child_process");
|
|
7
|
-
const GLOB_META_RE = /[*?[{]/;
|
|
8
|
-
function trimSlashes(value) {
|
|
9
|
-
return value.replace(/^\/+/, "").replace(/\/+$/, "");
|
|
10
|
-
}
|
|
11
|
-
function normalizeConstraintPath(value) {
|
|
12
|
-
let normalized = value.replace(/\\/g, "/").trim();
|
|
13
|
-
while (normalized.startsWith("./"))
|
|
14
|
-
normalized = normalized.slice(2);
|
|
15
|
-
return normalized;
|
|
16
|
-
}
|
|
17
|
-
function tokenizeConstraints(constraints) {
|
|
18
|
-
const tokens = [];
|
|
19
|
-
let current = "";
|
|
20
|
-
let quote = null;
|
|
21
|
-
for (let i = 0; i < constraints.length; i++) {
|
|
22
|
-
const char = constraints[i];
|
|
23
|
-
if (quote) {
|
|
24
|
-
if (char === quote)
|
|
25
|
-
quote = null;
|
|
26
|
-
else
|
|
27
|
-
current += char;
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
if (char === '"' || char === "'") {
|
|
31
|
-
quote = char;
|
|
32
|
-
continue;
|
|
33
|
-
}
|
|
34
|
-
if (/\s/.test(char)) {
|
|
35
|
-
if (current) {
|
|
36
|
-
tokens.push(current);
|
|
37
|
-
current = "";
|
|
38
|
-
}
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
current += char;
|
|
42
|
-
}
|
|
43
|
-
if (quote)
|
|
44
|
-
return { ok: false, error: "unterminated quoted constraint" };
|
|
45
|
-
if (current)
|
|
46
|
-
tokens.push(current);
|
|
47
|
-
return { ok: true, globs: [], tokens };
|
|
48
|
-
}
|
|
49
|
-
function tokenToRipgrepGlob(token) {
|
|
50
|
-
let negated = false;
|
|
51
|
-
let body = token;
|
|
52
|
-
if (body.startsWith("!")) {
|
|
53
|
-
negated = true;
|
|
54
|
-
body = body.slice(1);
|
|
55
|
-
}
|
|
56
|
-
body = normalizeConstraintPath(body);
|
|
57
|
-
if (!body)
|
|
58
|
-
return { ok: false, error: `empty constraint token: ${token}` };
|
|
59
|
-
if (body.includes("\0"))
|
|
60
|
-
return { ok: false, error: `invalid NUL byte in constraint token: ${token}` };
|
|
61
|
-
let glob;
|
|
62
|
-
if (body.endsWith("/")) {
|
|
63
|
-
const dir = trimSlashes(body);
|
|
64
|
-
if (!dir)
|
|
65
|
-
return { ok: false, error: `empty directory constraint: ${token}` };
|
|
66
|
-
glob = `**/${dir}/**`;
|
|
67
|
-
}
|
|
68
|
-
else if (GLOB_META_RE.test(body) || body.includes("/")) {
|
|
69
|
-
glob = body.replace(/^\/+/, "");
|
|
70
|
-
}
|
|
71
|
-
else if (body.includes(".")) {
|
|
72
|
-
glob = `**/${body}`;
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
glob = `**/${body}/**`;
|
|
76
|
-
}
|
|
77
|
-
return { ok: true, glob: negated ? `!${glob}` : glob };
|
|
78
|
-
}
|
|
79
|
-
function parseMultiGrepConstraints(constraints) {
|
|
80
|
-
const trimmed = constraints?.trim();
|
|
81
|
-
if (!trimmed)
|
|
82
|
-
return { ok: true, globs: [], tokens: [] };
|
|
83
|
-
const tokenized = tokenizeConstraints(trimmed);
|
|
84
|
-
if (!tokenized.ok)
|
|
85
|
-
return tokenized;
|
|
86
|
-
const globs = [];
|
|
87
|
-
for (const token of tokenized.tokens) {
|
|
88
|
-
const parsed = tokenToRipgrepGlob(token);
|
|
89
|
-
if (!parsed.ok)
|
|
90
|
-
return parsed;
|
|
91
|
-
globs.push(parsed.glob);
|
|
92
|
-
}
|
|
93
|
-
return { ok: true, globs, tokens: tokenized.tokens };
|
|
94
|
-
}
|
|
95
|
-
function isRipgrepMatchLine(line) {
|
|
96
|
-
return /^.+?:\d+:/.test(line);
|
|
97
|
-
}
|
|
98
|
-
function buildRipgrepArgs(params, globs) {
|
|
99
|
-
const args = ["--line-number", "--with-filename", "--color=never", "--hidden", "--fixed-strings"];
|
|
100
|
-
if (params.ignoreCase)
|
|
101
|
-
args.push("--ignore-case");
|
|
102
|
-
if (params.context && params.context > 0)
|
|
103
|
-
args.push("--context", String(params.context));
|
|
104
|
-
for (const glob of globs)
|
|
105
|
-
args.push("--glob", glob);
|
|
106
|
-
for (const pattern of params.patterns)
|
|
107
|
-
args.push("-e", pattern);
|
|
108
|
-
const searchPath = params.path?.trim();
|
|
109
|
-
if (searchPath)
|
|
110
|
-
args.push("--", searchPath);
|
|
111
|
-
return args;
|
|
112
|
-
}
|
|
113
|
-
function getMultiGrepRipgrepArgs(params) {
|
|
114
|
-
const parsed = parseMultiGrepConstraints(params.constraints);
|
|
115
|
-
if (!parsed.ok)
|
|
116
|
-
return parsed;
|
|
117
|
-
return { ...parsed, args: buildRipgrepArgs(params, parsed.globs) };
|
|
118
|
-
}
|
|
119
|
-
async function runMultiGrepRipgrepFallback(params) {
|
|
120
|
-
const parsed = parseMultiGrepConstraints(params.constraints);
|
|
121
|
-
if (!parsed.ok)
|
|
122
|
-
throw new Error(`unsupported constraints: ${parsed.error}`);
|
|
123
|
-
const args = buildRipgrepArgs(params, parsed.globs);
|
|
124
|
-
return new Promise((resolve, reject) => {
|
|
125
|
-
if (params.signal?.aborted) {
|
|
126
|
-
reject(new Error("Operation aborted"));
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
const child = (0, node_child_process_1.spawn)("rg", args, { cwd: params.cwd, stdio: ["ignore", "pipe", "pipe"] });
|
|
130
|
-
const outputLines = [];
|
|
131
|
-
let stderr = "";
|
|
132
|
-
let buffer = "";
|
|
133
|
-
let matchCount = 0;
|
|
134
|
-
let limitReached = false;
|
|
135
|
-
let killedForLimit = false;
|
|
136
|
-
let settled = false;
|
|
137
|
-
const settle = (fn) => {
|
|
138
|
-
if (settled)
|
|
139
|
-
return;
|
|
140
|
-
settled = true;
|
|
141
|
-
fn();
|
|
142
|
-
};
|
|
143
|
-
const stopChild = (dueToLimit = false) => {
|
|
144
|
-
if (!child.killed) {
|
|
145
|
-
killedForLimit = dueToLimit;
|
|
146
|
-
child.kill();
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
const onAbort = () => stopChild(false);
|
|
150
|
-
params.signal?.addEventListener("abort", onAbort, { once: true });
|
|
151
|
-
const cleanup = () => {
|
|
152
|
-
params.signal?.removeEventListener("abort", onAbort);
|
|
153
|
-
};
|
|
154
|
-
const handleLine = (line) => {
|
|
155
|
-
if (limitReached)
|
|
156
|
-
return;
|
|
157
|
-
outputLines.push(line);
|
|
158
|
-
if (isRipgrepMatchLine(line)) {
|
|
159
|
-
matchCount++;
|
|
160
|
-
if (matchCount >= params.limit) {
|
|
161
|
-
limitReached = true;
|
|
162
|
-
stopChild(true);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
};
|
|
166
|
-
child.stdout?.on("data", (chunk) => {
|
|
167
|
-
buffer += chunk.toString("utf8");
|
|
168
|
-
let newlineIndex = buffer.indexOf("\n");
|
|
169
|
-
while (newlineIndex >= 0) {
|
|
170
|
-
const line = buffer.slice(0, newlineIndex).replace(/\r$/, "");
|
|
171
|
-
buffer = buffer.slice(newlineIndex + 1);
|
|
172
|
-
handleLine(line);
|
|
173
|
-
newlineIndex = buffer.indexOf("\n");
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
child.stderr?.on("data", (chunk) => {
|
|
177
|
-
stderr += chunk.toString("utf8");
|
|
178
|
-
});
|
|
179
|
-
child.on("error", (error) => {
|
|
180
|
-
cleanup();
|
|
181
|
-
const message = error.code === "ENOENT" ? "ripgrep (rg) is not available" : `Failed to run ripgrep: ${error.message}`;
|
|
182
|
-
settle(() => reject(new Error(message)));
|
|
183
|
-
});
|
|
184
|
-
child.on("close", (code) => {
|
|
185
|
-
cleanup();
|
|
186
|
-
if (params.signal?.aborted) {
|
|
187
|
-
settle(() => reject(new Error("Operation aborted")));
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
if (buffer && !limitReached)
|
|
191
|
-
handleLine(buffer.replace(/\r$/, ""));
|
|
192
|
-
if (!killedForLimit && code !== 0 && code !== 1) {
|
|
193
|
-
const message = stderr.trim() || `ripgrep exited with code ${code}`;
|
|
194
|
-
settle(() => reject(new Error(message)));
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
settle(() => resolve({
|
|
198
|
-
text: outputLines.length ? outputLines.join("\n") : "No matches found",
|
|
199
|
-
matchCount,
|
|
200
|
-
limitReached,
|
|
201
|
-
}));
|
|
202
|
-
});
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
//# sourceMappingURL=multi-grep-fallback.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multi-grep-fallback.js","sourceRoot":"","sources":["../src/multi-grep-fallback.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { type ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import type { SdkToolDef, FffServiceWithCursor } from "../types.js";
|
|
3
|
-
import type { MultiGrepFallback } from "../types.js";
|
|
4
|
-
export declare function registerMultiGrepTool(pi: ExtensionAPI, cwd: string, fffService: FffServiceWithCursor | null | undefined, sdkGrepTool?: SdkToolDef, ripgrepFallback?: MultiGrepFallback, TextComp?: new (t?: string, x?: number, y?: number) => {
|
|
5
|
-
setText(v: string): void;
|
|
6
|
-
}): void;
|
|
7
|
-
//# sourceMappingURL=multi-grep.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multi-grep.d.ts","sourceRoot":"","sources":["../../src/tools/multi-grep.ts"],"names":[],"mappings":"AAEA,OAAO,EAEN,KAAK,YAAY,EAGjB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EACX,UAAU,EAEV,oBAAoB,EAKpB,MAAM,aAAa,CAAC;AASrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAUrD,wBAAgB,qBAAqB,CACpC,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,EACnD,WAAW,CAAC,EAAE,UAAU,EACxB,eAAe,GAAE,iBAAgC,EACjD,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK;IAAE,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACjF,IAAI,CAgRN"}
|
package/dist/tools/multi-grep.js
DELETED
|
@@ -1,294 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/* pi-pretty: multi_grep tool -- FFF-backed multi-pattern search with ripgrep/SDK fallback. */
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.registerMultiGrepTool = registerMultiGrepTool;
|
|
5
|
-
const typebox_1 = require("typebox");
|
|
6
|
-
const config_js_1 = require("../config.js");
|
|
7
|
-
const helpers_js_1 = require("../helpers.js");
|
|
8
|
-
const metrics_js_1 = require("./metrics.js");
|
|
9
|
-
const render_js_1 = require("../render.js");
|
|
10
|
-
const tui_text_js_1 = require("../tui-text.js");
|
|
11
|
-
const fff_helpers_js_1 = require("../fff-helpers.js");
|
|
12
|
-
const multi_grep_fallback_js_1 = require("../multi-grep-fallback.js");
|
|
13
|
-
const notices_js_1 = require("../notices.js");
|
|
14
|
-
const noopFallback = async () => ({
|
|
15
|
-
text: "",
|
|
16
|
-
matchCount: 0,
|
|
17
|
-
limitReached: false,
|
|
18
|
-
});
|
|
19
|
-
function registerMultiGrepTool(pi, cwd, fffService, sdkGrepTool, ripgrepFallback = noopFallback, TextComp) {
|
|
20
|
-
const TC = (0, tui_text_js_1.resolveTextCtor)(TextComp);
|
|
21
|
-
const home = process.env.HOME ?? "";
|
|
22
|
-
pi.registerTool({
|
|
23
|
-
name: "multi_grep",
|
|
24
|
-
label: "Multi Grep",
|
|
25
|
-
description: "Search file contents using multiple patterns (OR logic)",
|
|
26
|
-
parameters: typebox_1.Type.Object({
|
|
27
|
-
patterns: typebox_1.Type.Array(typebox_1.Type.String()),
|
|
28
|
-
path: typebox_1.Type.Optional(typebox_1.Type.String()),
|
|
29
|
-
constraints: typebox_1.Type.Optional(typebox_1.Type.String()),
|
|
30
|
-
context: typebox_1.Type.Optional(typebox_1.Type.Number()),
|
|
31
|
-
limit: typebox_1.Type.Optional(typebox_1.Type.Number()),
|
|
32
|
-
}),
|
|
33
|
-
renderShell: "self",
|
|
34
|
-
execute: (0, metrics_js_1.wrapExecuteWithMetrics)(async (tid, params, sig, _upd, ctx) => {
|
|
35
|
-
const p = params;
|
|
36
|
-
const patterns = Array.isArray(p.patterns) ? p.patterns.map(String) : [String(p.patterns ?? "")];
|
|
37
|
-
// Guard: empty patterns
|
|
38
|
-
if (!patterns.length || (patterns.length === 1 && !patterns[0])) {
|
|
39
|
-
return {
|
|
40
|
-
content: [{ text: "patterns array must have at least 1 element", type: "text" }],
|
|
41
|
-
details: { _type: "grepResult" },
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
// Guard: aborted signal
|
|
45
|
-
if (sig?.aborted) {
|
|
46
|
-
return {
|
|
47
|
-
content: [{ text: "Aborted", type: "text" }],
|
|
48
|
-
details: { _type: "grepResult" },
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
const constraintsStr = p.constraints ? String(p.constraints) : undefined;
|
|
52
|
-
const context = typeof p.context === "number" ? p.context : undefined;
|
|
53
|
-
const effectiveLimit = typeof p.limit === "number" ? p.limit : 200;
|
|
54
|
-
const alternationPattern = patterns.length === 1 ? patterns[0] : patterns.join("|");
|
|
55
|
-
const hasNativeConstraints = Boolean(constraintsStr);
|
|
56
|
-
const parsedConstraints = constraintsStr ? (0, multi_grep_fallback_js_1.parseMultiGrepConstraints)(constraintsStr) : null;
|
|
57
|
-
const requestedConstraints = parsedConstraints?.ok ? constraintsStr : undefined;
|
|
58
|
-
let effectivePath = p.path ? String(p.path) : undefined;
|
|
59
|
-
const requestedPath = parsedConstraints?.ok ? parsedConstraints.tokens[0] : undefined;
|
|
60
|
-
if (requestedPath && !effectivePath)
|
|
61
|
-
effectivePath = requestedPath;
|
|
62
|
-
// 1. FFF multiGrep (no constraints AND no path)
|
|
63
|
-
if (fffService?.isAvailable && !hasNativeConstraints && !effectivePath) {
|
|
64
|
-
try {
|
|
65
|
-
const fff = fffService.getFinder();
|
|
66
|
-
if (!fff)
|
|
67
|
-
throw new Error("FFF finder not available");
|
|
68
|
-
const grepResult = fff.multiGrep({
|
|
69
|
-
patterns,
|
|
70
|
-
pageSize: effectiveLimit,
|
|
71
|
-
smartCase: !shouldIgnoreCase(patterns),
|
|
72
|
-
beforeContext: context ?? 0,
|
|
73
|
-
afterContext: context ?? 0,
|
|
74
|
-
});
|
|
75
|
-
if (grepResult.ok) {
|
|
76
|
-
const grep = grepResult.value;
|
|
77
|
-
const items = grep.items.slice(0, effectiveLimit);
|
|
78
|
-
const cursorStore = fffService.getCursorStore();
|
|
79
|
-
const notices = [];
|
|
80
|
-
if (fffService.partialIndex)
|
|
81
|
-
notices.push(notices_js_1.NOTICE_PARTIAL_FILE_INDEX);
|
|
82
|
-
if (items.length >= effectiveLimit)
|
|
83
|
-
notices.push(`${effectiveLimit} limit reached`);
|
|
84
|
-
if (grep.nextCursor) {
|
|
85
|
-
const cursorId = cursorStore.store(grep.nextCursor);
|
|
86
|
-
notices.push(`More results available: cursor="${cursorId}"`);
|
|
87
|
-
}
|
|
88
|
-
const text = appendNotices((0, fff_helpers_js_1.fffFormatGrepText)(items, effectiveLimit), notices);
|
|
89
|
-
return {
|
|
90
|
-
content: [{ type: "text", text }],
|
|
91
|
-
details: {
|
|
92
|
-
_type: "grepResult",
|
|
93
|
-
text,
|
|
94
|
-
pattern: alternationPattern,
|
|
95
|
-
matchCount: items.length,
|
|
96
|
-
},
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
// FFF failure -> return error directly
|
|
100
|
-
return {
|
|
101
|
-
content: [{ type: "text", text: grepResult.error || "multi_grep failed" }],
|
|
102
|
-
details: {
|
|
103
|
-
_type: "grepResult",
|
|
104
|
-
text: "",
|
|
105
|
-
pattern: alternationPattern,
|
|
106
|
-
matchCount: 0,
|
|
107
|
-
},
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
catch {
|
|
111
|
-
/* fall through */
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
// 2. Ripgrep fallback
|
|
115
|
-
if (requestedConstraints || !sdkGrepTool) {
|
|
116
|
-
try {
|
|
117
|
-
const pathBacked = Boolean(requestedConstraints &&
|
|
118
|
-
requestedPath &&
|
|
119
|
-
!Boolean(p.path) &&
|
|
120
|
-
!requestedConstraints.includes("*") &&
|
|
121
|
-
!requestedConstraints.includes("?"));
|
|
122
|
-
const constraintsForRg = pathBacked ? undefined : requestedConstraints;
|
|
123
|
-
const notices = [];
|
|
124
|
-
if (!fffService?.isAvailable)
|
|
125
|
-
notices.push("FFF unavailable, used ripgrep fallback");
|
|
126
|
-
else if (hasNativeConstraints)
|
|
127
|
-
notices.push("Used ripgrep fallback for constrained search");
|
|
128
|
-
else
|
|
129
|
-
notices.push("Used ripgrep fallback");
|
|
130
|
-
const rgResult = await ripgrepFallback({
|
|
131
|
-
cwd,
|
|
132
|
-
patterns,
|
|
133
|
-
path: effectivePath,
|
|
134
|
-
constraints: constraintsForRg,
|
|
135
|
-
ignoreCase: shouldIgnoreCase(patterns),
|
|
136
|
-
context,
|
|
137
|
-
limit: effectiveLimit,
|
|
138
|
-
signal: sig,
|
|
139
|
-
});
|
|
140
|
-
const text = (0, helpers_js_1.normalizeLineEndings)(rgResult.text) || "No matches found";
|
|
141
|
-
if (rgResult.limitReached)
|
|
142
|
-
notices.push(`${effectiveLimit} limit reached`);
|
|
143
|
-
return {
|
|
144
|
-
content: [{ type: "text", text: appendNotices(text, notices) }],
|
|
145
|
-
details: {
|
|
146
|
-
_type: "grepResult",
|
|
147
|
-
text,
|
|
148
|
-
pattern: alternationPattern,
|
|
149
|
-
matchCount: rgResult.matchCount,
|
|
150
|
-
},
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
catch (error) {
|
|
154
|
-
return {
|
|
155
|
-
content: [
|
|
156
|
-
{
|
|
157
|
-
type: "text",
|
|
158
|
-
text: `multi_grep error: ${error instanceof Error ? error.message : String(error)}`,
|
|
159
|
-
},
|
|
160
|
-
],
|
|
161
|
-
details: {
|
|
162
|
-
_type: "grepResult",
|
|
163
|
-
text: "",
|
|
164
|
-
pattern: alternationPattern,
|
|
165
|
-
matchCount: 0,
|
|
166
|
-
},
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
// 3. SDK grep fallback
|
|
171
|
-
try {
|
|
172
|
-
const notices = [];
|
|
173
|
-
if (!fffService?.isAvailable)
|
|
174
|
-
notices.push("FFF unavailable, used SDK grep fallback");
|
|
175
|
-
const result = (await sdkGrepTool.execute(tid, {
|
|
176
|
-
pattern: alternationPattern,
|
|
177
|
-
path: effectivePath,
|
|
178
|
-
ignoreCase: shouldIgnoreCase(patterns),
|
|
179
|
-
context,
|
|
180
|
-
limit: effectiveLimit,
|
|
181
|
-
}, sig, null, ctx));
|
|
182
|
-
const tc = getText(result);
|
|
183
|
-
result.content = [{ type: "text", text: appendNotices(tc, notices) }];
|
|
184
|
-
result.details = {
|
|
185
|
-
_type: "grepResult",
|
|
186
|
-
text: tc,
|
|
187
|
-
pattern: alternationPattern,
|
|
188
|
-
matchCount: tc ? tc.trim().split("\n").filter(Boolean).length : 0,
|
|
189
|
-
};
|
|
190
|
-
return result;
|
|
191
|
-
}
|
|
192
|
-
catch (error) {
|
|
193
|
-
return {
|
|
194
|
-
content: [
|
|
195
|
-
{
|
|
196
|
-
type: "text",
|
|
197
|
-
text: `multi_grep error: ${error instanceof Error ? error.message : String(error)}`,
|
|
198
|
-
},
|
|
199
|
-
],
|
|
200
|
-
details: {
|
|
201
|
-
_type: "grepResult",
|
|
202
|
-
text: "",
|
|
203
|
-
pattern: alternationPattern,
|
|
204
|
-
matchCount: 0,
|
|
205
|
-
},
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
}),
|
|
209
|
-
renderCall(args, theme, ctx) {
|
|
210
|
-
(0, config_js_1.resolveBaseBackground)(theme);
|
|
211
|
-
const text = ctx.lastComponent ?? new TC("", 0, 0);
|
|
212
|
-
const patterns = Array.isArray(args.patterns) ? args.patterns.map((p) => String(p)) : [];
|
|
213
|
-
const limit = typeof args.limit === "number" ? args.limit : undefined;
|
|
214
|
-
const path = args.path === null || args.path === undefined ? "<missing>" : (0, helpers_js_1.shortPath)(cwd, home, String(args.path));
|
|
215
|
-
const literal = args.literal === true;
|
|
216
|
-
const patternStr = patterns.length === 0
|
|
217
|
-
? ""
|
|
218
|
-
: patterns.length === 1
|
|
219
|
-
? patterns[0]
|
|
220
|
-
: patterns.length === 2
|
|
221
|
-
? `${patterns[0]}|${patterns[1]}`
|
|
222
|
-
: `${patterns[0]}|${patterns[1]}|+${patterns.length - 2}`;
|
|
223
|
-
let out = `${theme.fg("toolTitle", theme.bold("mgrep"))} ${theme.fg("accent", `/${patternStr || ""}/`)}${theme.fg("toolOutput", ` in ${path}`)}`;
|
|
224
|
-
if (literal)
|
|
225
|
-
out += theme.fg("dim", ` (literal)`);
|
|
226
|
-
if (limit !== undefined)
|
|
227
|
-
out += theme.fg("dim", ` limit ${limit}`);
|
|
228
|
-
text.setText((0, render_js_1.fillToolBackground)(`\n ${out}`, ctx.isError ? config_js_1.BG_ERROR : undefined));
|
|
229
|
-
return text;
|
|
230
|
-
},
|
|
231
|
-
renderResult(result, _opt, theme, ctx) {
|
|
232
|
-
(0, config_js_1.resolveBaseBackground)(theme);
|
|
233
|
-
const text = ctx.lastComponent ?? new TC("", 0, 0);
|
|
234
|
-
if (ctx.isError) {
|
|
235
|
-
text.setText((0, render_js_1.renderToolError)(getText(result) || "Error", theme));
|
|
236
|
-
return text;
|
|
237
|
-
}
|
|
238
|
-
const d = result.details;
|
|
239
|
-
if (d?._type === "grepResult" && d.text) {
|
|
240
|
-
const lines = d.text.split("\n");
|
|
241
|
-
const maxShow = ctx.expanded ? lines.length : Math.min(lines.length, config_js_1.MAX_PREVIEW_LINES);
|
|
242
|
-
const show = lines.slice(0, maxShow);
|
|
243
|
-
const nw = Math.max(3, 5);
|
|
244
|
-
let hlRe = null;
|
|
245
|
-
try {
|
|
246
|
-
hlRe = new RegExp(`(${d.pattern})`, "gi");
|
|
247
|
-
}
|
|
248
|
-
catch { }
|
|
249
|
-
const out = [];
|
|
250
|
-
let currentFile = "";
|
|
251
|
-
for (const line of show) {
|
|
252
|
-
const fileMatch = line.match(/^(.+?)[:-](\d+)[:-](.*)$/);
|
|
253
|
-
if (fileMatch) {
|
|
254
|
-
const [, file, lineNo, content] = fileMatch;
|
|
255
|
-
if (file !== currentFile) {
|
|
256
|
-
if (currentFile)
|
|
257
|
-
out.push("");
|
|
258
|
-
out.push(` ${theme.fg("accent", theme.bold(file))}`);
|
|
259
|
-
currentFile = file;
|
|
260
|
-
}
|
|
261
|
-
let display = content;
|
|
262
|
-
if (hlRe)
|
|
263
|
-
display = content.replace(hlRe, (m) => `${config_js_1.RST}${theme.fg("warning", theme.bold(m))}${config_js_1.RST}`);
|
|
264
|
-
const padded = `${config_js_1.FG_LNUM}${String(lineNo).padStart(nw)}${config_js_1.RST} ${config_js_1.FG_RULE}│${config_js_1.RST} ${display}${config_js_1.RST}`;
|
|
265
|
-
out.push(` ${padded}`);
|
|
266
|
-
}
|
|
267
|
-
else if (line.trim()) {
|
|
268
|
-
out.push(` ${config_js_1.FG_DIM} ${line.trim()}${config_js_1.RST}`);
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
const preview = out.join("\n");
|
|
272
|
-
const more = lines.length > maxShow ? `\n${config_js_1.FG_DIM} ... ${lines.length - maxShow} more lines${config_js_1.RST}` : "";
|
|
273
|
-
text.setText((0, render_js_1.fillToolBackground)(` ${config_js_1.FG_DIM}${d.matchCount} matches${config_js_1.RST}${(0, render_js_1.renderToolMetrics)(result)}\n${preview}${more}`));
|
|
274
|
-
return text;
|
|
275
|
-
}
|
|
276
|
-
const fc = result.content?.[0];
|
|
277
|
-
text.setText((0, render_js_1.fillToolBackground)(` ${theme.fg("dim", fc && "text" in fc ? String(fc.text).slice(0, 120) : "no matches")}`));
|
|
278
|
-
return text;
|
|
279
|
-
},
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
function shouldIgnoreCase(patterns) {
|
|
283
|
-
return !patterns.some((p) => /[A-Z]/.test(p));
|
|
284
|
-
}
|
|
285
|
-
function appendNotices(text, notices) {
|
|
286
|
-
return notices.length ? `${text}\n\n[${notices.join(". ")}]` : text;
|
|
287
|
-
}
|
|
288
|
-
function getText(result) {
|
|
289
|
-
return ((result.content ?? [])
|
|
290
|
-
.filter((c) => c.type === "text")
|
|
291
|
-
.map((c) => c.text)
|
|
292
|
-
.join("\n") ?? "");
|
|
293
|
-
}
|
|
294
|
-
//# sourceMappingURL=multi-grep.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multi-grep.js","sourceRoot":"","sources":["../../src/tools/multi-grep.ts"],"names":[],"mappings":"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"}
|