@heyhuynhgiabuu/pi-pretty 0.6.22 → 0.6.24
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 +20 -0
- package/README.md +25 -7
- package/dist/autocomplete.js +1 -4
- package/dist/autocomplete.js.map +1 -1
- package/dist/config.d.ts +42 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +174 -117
- package/dist/config.js.map +1 -1
- package/dist/fff-helpers.js +2 -7
- package/dist/fff-helpers.js.map +1 -1
- package/dist/fff.js +16 -23
- package/dist/fff.js.map +1 -1
- package/dist/find-glob.js +2 -6
- package/dist/find-glob.js.map +1 -1
- package/dist/helpers.js +11 -21
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -60
- package/dist/index.js.map +1 -1
- package/dist/notices.js +1 -4
- package/dist/notices.js.map +1 -1
- package/dist/render.d.ts +19 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +125 -96
- package/dist/render.js.map +1 -1
- package/dist/tools/bash.js +26 -29
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/find.js +31 -34
- package/dist/tools/find.js.map +1 -1
- package/dist/tools/grep.js +22 -25
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/labels.js +1 -4
- package/dist/tools/labels.js.map +1 -1
- package/dist/tools/ls.js +18 -21
- package/dist/tools/ls.js.map +1 -1
- package/dist/tools/metrics.js +4 -7
- package/dist/tools/metrics.js.map +1 -1
- package/dist/tools/read.js +35 -38
- package/dist/tools/read.js.map +1 -1
- package/dist/tui-text.js +5 -9
- package/dist/tui-text.js.map +1 -1
- package/dist/types.js +1 -2
- package/dist/types.js.map +1 -1
- package/package.json +7 -6
- package/src/config.ts +90 -19
- package/src/index.ts +9 -10
- package/src/render.ts +56 -9
package/dist/render.js
CHANGED
|
@@ -1,61 +1,90 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* pi-pretty: rendering functions for all tools.
|
|
4
3
|
*
|
|
5
4
|
* These produce ANSI-colored terminal output strings.
|
|
6
5
|
* They are async only when Shiki syntax highlighting is involved.
|
|
7
6
|
*/
|
|
8
|
-
|
|
9
|
-
exports.RESET_WITHOUT_BG = void 0;
|
|
10
|
-
exports.isLowContrastShikiFg = isLowContrastShikiFg;
|
|
11
|
-
exports.preserveBoxBackground = preserveBoxBackground;
|
|
12
|
-
exports.fillToolBackground = fillToolBackground;
|
|
13
|
-
exports.renderToolMetrics = renderToolMetrics;
|
|
14
|
-
exports.renderToolDuration = renderToolDuration;
|
|
15
|
-
exports.renderToolError = renderToolError;
|
|
16
|
-
exports.renderFileContent = renderFileContent;
|
|
17
|
-
exports.renderBashOutput = renderBashOutput;
|
|
18
|
-
exports.renderTree = renderTree;
|
|
19
|
-
exports.renderFindResults = renderFindResults;
|
|
20
|
-
exports.renderGrepResults = renderGrepResults;
|
|
21
|
-
exports.makeRenderCall = makeRenderCall;
|
|
22
|
-
exports.makeRenderResult = makeRenderResult;
|
|
23
|
-
const node_path_1 = require("node:path");
|
|
7
|
+
import { basename, dirname } from "node:path";
|
|
24
8
|
// Top-level value import so jiti's pi-tui alias applies (it only rewrites
|
|
25
9
|
// static top-level import/require, not function-body require — see tui-text.ts).
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
10
|
+
import { Text as TuiText, truncateToWidth } from "@earendil-works/pi-tui";
|
|
11
|
+
import { codeToANSI } from "@shikijs/cli";
|
|
12
|
+
import { bundledThemes } from "shiki";
|
|
13
|
+
import { BG_BASE, BG_ERROR, CACHE_LIMIT, detectLang, dirIcon, FG_BLUE, FG_DIM, FG_LNUM, FG_RULE, FG_YELLOW, loadConfig, MAX_HL_CHARS, MAX_PREVIEW_LINES, RST, resolveBaseBackground, TOOL_RESULT_INDENT, termWidth, } from "./config.js";
|
|
14
|
+
import { CHARS_KEY, compactErrorLines, ELAPSED_KEY, formatCharCount, formatElapsedMs, normalizeLineEndings, } from "./helpers.js";
|
|
30
15
|
/** Thin wrapper over pi-tui's truncateToWidth (imported at top level above). */
|
|
31
16
|
function _truncateToWidth(text, maxWidth, ellipsis, pad) {
|
|
32
|
-
return
|
|
17
|
+
return truncateToWidth(text, maxWidth, ellipsis, pad);
|
|
33
18
|
}
|
|
34
19
|
// ---------------------------------------------------------------------------
|
|
35
20
|
// Shiki ANSI cache
|
|
36
21
|
// ---------------------------------------------------------------------------
|
|
37
22
|
const DEFAULT_THEME = "github-dark";
|
|
38
|
-
function
|
|
39
|
-
|
|
23
|
+
function isBundledTheme(name) {
|
|
24
|
+
return Object.hasOwn(bundledThemes, name);
|
|
25
|
+
}
|
|
26
|
+
function pickValidTheme(candidate, source) {
|
|
27
|
+
if (isBundledTheme(candidate))
|
|
28
|
+
return candidate;
|
|
29
|
+
console.warn(`pi-pretty: theme "${candidate}" from ${source} is not a bundled Shiki theme; falling back to "${DEFAULT_THEME}"`);
|
|
30
|
+
return DEFAULT_THEME;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Resolve the Shiki theme used for syntax highlighting.
|
|
34
|
+
*
|
|
35
|
+
* `~/.pi/agent/settings.json`'s `theme` field is pi's TUI appearance setting
|
|
36
|
+
* (e.g. `dark`, `light`, or a custom pi theme name), which is not a valid
|
|
37
|
+
* Shiki theme for native users. Validate the candidate against Shiki's
|
|
38
|
+
* bundled themes; warn once and fall back to {@link DEFAULT_THEME} when it is
|
|
39
|
+
* not a bundled theme, instead of silently degrading every highlighted block
|
|
40
|
+
* to plain text.
|
|
41
|
+
*/
|
|
42
|
+
export function resolveTheme(env = process.env.PRETTY_THEME, home = process.env.HOME) {
|
|
40
43
|
if (env)
|
|
41
|
-
return env;
|
|
44
|
+
return pickValidTheme(env, "PRETTY_THEME");
|
|
42
45
|
try {
|
|
43
|
-
const home = process.env.HOME;
|
|
44
46
|
if (!home)
|
|
45
47
|
return DEFAULT_THEME;
|
|
46
48
|
const settings = JSON.parse(require("node:fs").readFileSync(require("node:path").join(home, ".pi/agent/settings.json"), "utf8"));
|
|
47
|
-
|
|
49
|
+
const candidate = settings.theme;
|
|
50
|
+
if (typeof candidate === "string")
|
|
51
|
+
return pickValidTheme(candidate, "~/.pi/agent/settings.json");
|
|
52
|
+
return DEFAULT_THEME;
|
|
48
53
|
}
|
|
49
54
|
catch {
|
|
50
55
|
return DEFAULT_THEME;
|
|
51
56
|
}
|
|
52
57
|
}
|
|
53
|
-
|
|
58
|
+
let _theme;
|
|
59
|
+
/**
|
|
60
|
+
* Resolve the effective theme once per session: `PRETTY_THEME` env →
|
|
61
|
+
* `pi-pretty.json` → `~/.pi/agent/settings.json` → {@link DEFAULT_THEME}.
|
|
62
|
+
* Resolution is lazy so config-file values applied at extension activation
|
|
63
|
+
* take effect, and the result is cached (at most one warning per source).
|
|
64
|
+
*/
|
|
65
|
+
export function getTheme() {
|
|
66
|
+
if (_theme)
|
|
67
|
+
return _theme;
|
|
68
|
+
const env = process.env.PRETTY_THEME;
|
|
69
|
+
let theme;
|
|
70
|
+
if (env) {
|
|
71
|
+
theme = resolveTheme(env, "");
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
const configTheme = loadConfig().theme;
|
|
75
|
+
theme =
|
|
76
|
+
typeof configTheme === "string"
|
|
77
|
+
? pickValidTheme(configTheme, "pi-pretty.json")
|
|
78
|
+
: resolveTheme(undefined, process.env.HOME);
|
|
79
|
+
}
|
|
80
|
+
_theme = theme;
|
|
81
|
+
return theme;
|
|
82
|
+
}
|
|
54
83
|
const _cache = new Map();
|
|
55
84
|
function _touch(k, v) {
|
|
56
85
|
_cache.delete(k);
|
|
57
86
|
_cache.set(k, v);
|
|
58
|
-
while (_cache.size >
|
|
87
|
+
while (_cache.size > CACHE_LIMIT) {
|
|
59
88
|
const first = _cache.keys().next().value;
|
|
60
89
|
if (first === undefined)
|
|
61
90
|
break;
|
|
@@ -66,14 +95,14 @@ function _touch(k, v) {
|
|
|
66
95
|
async function hlBlock(code, language) {
|
|
67
96
|
if (!code)
|
|
68
97
|
return [""];
|
|
69
|
-
if (!language || code.length >
|
|
98
|
+
if (!language || code.length > MAX_HL_CHARS)
|
|
70
99
|
return code.split("\n");
|
|
71
|
-
const k = `${
|
|
100
|
+
const k = `${getTheme()}\0${language}\0${code}`;
|
|
72
101
|
const hit = _cache.get(k);
|
|
73
102
|
if (hit)
|
|
74
103
|
return _touch(k, hit);
|
|
75
104
|
try {
|
|
76
|
-
const ansi = normalizeShikiContrast(await
|
|
105
|
+
const ansi = normalizeShikiContrast(await codeToANSI(code, language, getTheme()));
|
|
77
106
|
const out = (ansi.endsWith("\n") ? ansi.slice(0, -1) : ansi).split("\n");
|
|
78
107
|
return _touch(k, out);
|
|
79
108
|
}
|
|
@@ -84,7 +113,7 @@ async function hlBlock(code, language) {
|
|
|
84
113
|
const ESC_RE = "\u001b";
|
|
85
114
|
const ANSI_CAPTURE_RE = new RegExp(`${ESC_RE}\\[([0-9;]*)m`, "g");
|
|
86
115
|
const FG_MUTED = "\x1b[38;2;139;148;158m";
|
|
87
|
-
function isLowContrastShikiFg(params) {
|
|
116
|
+
export function isLowContrastShikiFg(params) {
|
|
88
117
|
if (params === "30" || params === "90")
|
|
89
118
|
return true;
|
|
90
119
|
if (params === "38;5;0" || params === "38;5;8")
|
|
@@ -104,11 +133,11 @@ function normalizeShikiContrast(ansi) {
|
|
|
104
133
|
// ---------------------------------------------------------------------------
|
|
105
134
|
// Box background helpers
|
|
106
135
|
// ---------------------------------------------------------------------------
|
|
107
|
-
|
|
108
|
-
function preserveBoxBackground(ansi) {
|
|
136
|
+
export const RESET_WITHOUT_BG = "\x1b[22;23;24;25;27;28;29;39m";
|
|
137
|
+
export function preserveBoxBackground(ansi) {
|
|
109
138
|
return ansi.replace(ANSI_CAPTURE_RE, (_seq, params) => {
|
|
110
139
|
if (!params || params === "0")
|
|
111
|
-
return
|
|
140
|
+
return RESET_WITHOUT_BG;
|
|
112
141
|
const parts = params.split(";").filter(Boolean);
|
|
113
142
|
const kept = [];
|
|
114
143
|
let i = 0;
|
|
@@ -149,7 +178,7 @@ function preserveBoxBackground(ansi) {
|
|
|
149
178
|
return kept.length ? `\x1b[${kept.join(";")}m` : "";
|
|
150
179
|
});
|
|
151
180
|
}
|
|
152
|
-
function fillToolBackground(text, bg =
|
|
181
|
+
export function fillToolBackground(text, bg = BG_BASE, width) {
|
|
153
182
|
return text
|
|
154
183
|
.split("\n")
|
|
155
184
|
.map((line) => {
|
|
@@ -158,7 +187,7 @@ function fillToolBackground(text, bg = config_js_1.BG_BASE, width) {
|
|
|
158
187
|
return bg ? bg + stripped : stripped;
|
|
159
188
|
}
|
|
160
189
|
const plainLead = line.replace(ANSI_CAPTURE_RE, "");
|
|
161
|
-
const skipPad = line.startsWith(
|
|
190
|
+
const skipPad = line.startsWith(TOOL_RESULT_INDENT) || plainLead.startsWith(TOOL_RESULT_INDENT);
|
|
162
191
|
const fitted = _truncateToWidth(line, width, "", !skipPad);
|
|
163
192
|
const stripped = preserveBoxBackground(fitted);
|
|
164
193
|
return bg ? bg + stripped : stripped;
|
|
@@ -167,100 +196,100 @@ function fillToolBackground(text, bg = config_js_1.BG_BASE, width) {
|
|
|
167
196
|
}
|
|
168
197
|
function lnum(n, w) {
|
|
169
198
|
const v = String(n);
|
|
170
|
-
return `${
|
|
199
|
+
return `${FG_LNUM}${" ".repeat(Math.max(0, w - v.length))}${v}${RST}`;
|
|
171
200
|
}
|
|
172
201
|
// ---------------------------------------------------------------------------
|
|
173
202
|
// Tool metrics line
|
|
174
203
|
// ---------------------------------------------------------------------------
|
|
175
|
-
function renderToolMetrics(result) {
|
|
204
|
+
export function renderToolMetrics(result) {
|
|
176
205
|
const details = result.details;
|
|
177
206
|
if (!details)
|
|
178
207
|
return "";
|
|
179
|
-
const elapsed =
|
|
180
|
-
const chars =
|
|
208
|
+
const elapsed = formatElapsedMs(details[ELAPSED_KEY]);
|
|
209
|
+
const chars = formatCharCount(details[CHARS_KEY]);
|
|
181
210
|
if (!elapsed && !chars)
|
|
182
211
|
return "";
|
|
183
|
-
return `${
|
|
212
|
+
return `${FG_DIM}· ${[elapsed, chars].filter(Boolean).join(" · ")}${RST}`;
|
|
184
213
|
}
|
|
185
|
-
function renderToolDuration(result) {
|
|
214
|
+
export function renderToolDuration(result) {
|
|
186
215
|
const details = result.details;
|
|
187
|
-
return
|
|
216
|
+
return formatElapsedMs(details?.[ELAPSED_KEY]);
|
|
188
217
|
}
|
|
189
218
|
// ---------------------------------------------------------------------------
|
|
190
219
|
// Error renderer
|
|
191
220
|
// ---------------------------------------------------------------------------
|
|
192
|
-
function renderToolError(error, theme) {
|
|
193
|
-
const body =
|
|
194
|
-
.map((line) => `${
|
|
221
|
+
export function renderToolError(error, theme) {
|
|
222
|
+
const body = compactErrorLines(error)
|
|
223
|
+
.map((line) => `${TOOL_RESULT_INDENT}${line ? theme.fg("error", line) : ""}`)
|
|
195
224
|
.join("\n");
|
|
196
|
-
return fillToolBackground(body,
|
|
225
|
+
return fillToolBackground(body, BG_ERROR);
|
|
197
226
|
}
|
|
198
227
|
// ---------------------------------------------------------------------------
|
|
199
228
|
// Read — syntax-highlighted file content
|
|
200
229
|
// ---------------------------------------------------------------------------
|
|
201
|
-
async function renderFileContent(content, filePath, offset = 0, maxLines =
|
|
202
|
-
const normalizedContent =
|
|
230
|
+
export async function renderFileContent(content, filePath, offset = 0, maxLines = MAX_PREVIEW_LINES, width) {
|
|
231
|
+
const normalizedContent = normalizeLineEndings(content);
|
|
203
232
|
const lines = normalizedContent.split("\n");
|
|
204
233
|
const show = lines.slice(0, maxLines);
|
|
205
|
-
const lg =
|
|
234
|
+
const lg = detectLang(filePath);
|
|
206
235
|
const hl = await hlBlock(show.join("\n"), lg);
|
|
207
|
-
const tw = width ??
|
|
236
|
+
const tw = width ?? termWidth();
|
|
208
237
|
const out = [];
|
|
209
238
|
for (const line of hl) {
|
|
210
|
-
out.push(_truncateToWidth(line ?? "", Math.max(1, tw), `${
|
|
239
|
+
out.push(_truncateToWidth(line ?? "", Math.max(1, tw), `${FG_DIM}›`));
|
|
211
240
|
}
|
|
212
241
|
return out.join("\n");
|
|
213
242
|
}
|
|
214
243
|
// ---------------------------------------------------------------------------
|
|
215
244
|
// Bash — colored exit status
|
|
216
245
|
// ---------------------------------------------------------------------------
|
|
217
|
-
function renderBashOutput(text) {
|
|
246
|
+
export function renderBashOutput(text) {
|
|
218
247
|
const lines = text.split("\n");
|
|
219
|
-
const maxShow =
|
|
248
|
+
const maxShow = MAX_PREVIEW_LINES;
|
|
220
249
|
const show = lines.slice(0, maxShow);
|
|
221
250
|
const remaining = lines.length - maxShow;
|
|
222
251
|
let body = show.join("\n");
|
|
223
252
|
if (remaining > 0)
|
|
224
|
-
body += `\n${
|
|
253
|
+
body += `\n${TOOL_RESULT_INDENT}${FG_DIM}… ${remaining} more lines${RST}`;
|
|
225
254
|
return body;
|
|
226
255
|
}
|
|
227
256
|
// ---------------------------------------------------------------------------
|
|
228
257
|
// Ls — tree view with icons
|
|
229
258
|
// ---------------------------------------------------------------------------
|
|
230
|
-
function renderTree(text, _basePath) {
|
|
259
|
+
export function renderTree(text, _basePath) {
|
|
231
260
|
const lines = text.trim().split("\n").filter(Boolean);
|
|
232
261
|
if (!lines.length)
|
|
233
|
-
return `${
|
|
262
|
+
return `${FG_DIM}(empty directory)${RST}`;
|
|
234
263
|
const out = [];
|
|
235
264
|
const total = lines.length;
|
|
236
|
-
const show = lines.slice(0,
|
|
265
|
+
const show = lines.slice(0, MAX_PREVIEW_LINES);
|
|
237
266
|
for (let i = 0; i < show.length; i++) {
|
|
238
267
|
const entry = show[i].trim();
|
|
239
|
-
const isLast = i === show.length - 1 && total <=
|
|
268
|
+
const isLast = i === show.length - 1 && total <= MAX_PREVIEW_LINES;
|
|
240
269
|
const prefix = isLast ? "└── " : "├── ";
|
|
241
|
-
const connector = `${
|
|
270
|
+
const connector = `${FG_RULE}${prefix}${RST}`;
|
|
242
271
|
const isDir = entry.endsWith("/");
|
|
243
272
|
const name = isDir ? entry.slice(0, -1) : entry;
|
|
244
|
-
const icon = isDir ?
|
|
245
|
-
out.push(`${connector}${icon}${isDir ? `${
|
|
273
|
+
const icon = isDir ? dirIcon() : "";
|
|
274
|
+
out.push(`${connector}${icon}${isDir ? `${FG_BLUE}\x1b[1m${name}${RST}` : name}`);
|
|
246
275
|
}
|
|
247
|
-
if (total >
|
|
248
|
-
out.push(`${
|
|
276
|
+
if (total > MAX_PREVIEW_LINES) {
|
|
277
|
+
out.push(`${FG_RULE}└── ${RST}${FG_DIM}… ${total - MAX_PREVIEW_LINES} more entries${RST}`);
|
|
249
278
|
}
|
|
250
279
|
return out.join("\n");
|
|
251
280
|
}
|
|
252
281
|
// ---------------------------------------------------------------------------
|
|
253
282
|
// Find — grouped file list (plain, no tree characters or icons)
|
|
254
283
|
// ---------------------------------------------------------------------------
|
|
255
|
-
function renderFindResults(text, theme) {
|
|
284
|
+
export function renderFindResults(text, theme) {
|
|
256
285
|
const lines = text.trim().split("\n").filter(Boolean);
|
|
257
286
|
if (!lines.length)
|
|
258
|
-
return theme ? theme.fg("dim", "(no matches)") : `${
|
|
287
|
+
return theme ? theme.fg("dim", "(no matches)") : `${FG_DIM}(no matches)${RST}`;
|
|
259
288
|
const groups = new Map();
|
|
260
289
|
for (const line of lines) {
|
|
261
290
|
const trimmed = line.trim();
|
|
262
|
-
const dir =
|
|
263
|
-
const file =
|
|
291
|
+
const dir = dirname(trimmed) || ".";
|
|
292
|
+
const file = basename(trimmed);
|
|
264
293
|
if (!groups.has(dir))
|
|
265
294
|
groups.set(dir, []);
|
|
266
295
|
const bucket = groups.get(dir);
|
|
@@ -272,17 +301,17 @@ function renderFindResults(text, theme) {
|
|
|
272
301
|
for (const [dir, files] of groups) {
|
|
273
302
|
if (count > 0)
|
|
274
303
|
out.push("");
|
|
275
|
-
const dirColored = theme ? theme.fg("accent", theme.bold(`${dir}/`)) : `${
|
|
304
|
+
const dirColored = theme ? theme.fg("accent", theme.bold(`${dir}/`)) : `${FG_BLUE}\x1b[1m${dir}/${RST}`;
|
|
276
305
|
out.push(dirColored);
|
|
277
306
|
for (let i = 0; i < files.length; i++) {
|
|
278
|
-
if (count >=
|
|
307
|
+
if (count >= MAX_PREVIEW_LINES) {
|
|
279
308
|
const more = theme
|
|
280
309
|
? theme.fg("dim", `… ${lines.length - count} more files`)
|
|
281
|
-
: `${
|
|
282
|
-
out.push(`${
|
|
310
|
+
: `${FG_DIM}… ${lines.length - count} more files${RST}`;
|
|
311
|
+
out.push(`${TOOL_RESULT_INDENT}${more}`);
|
|
283
312
|
return out.join("\n");
|
|
284
313
|
}
|
|
285
|
-
out.push(`${
|
|
314
|
+
out.push(`${TOOL_RESULT_INDENT}${files[i]}`);
|
|
286
315
|
count++;
|
|
287
316
|
}
|
|
288
317
|
}
|
|
@@ -291,10 +320,10 @@ function renderFindResults(text, theme) {
|
|
|
291
320
|
// ---------------------------------------------------------------------------
|
|
292
321
|
// Grep — highlighted matches with line numbers
|
|
293
322
|
// ---------------------------------------------------------------------------
|
|
294
|
-
async function renderGrepResults(text, pattern) {
|
|
295
|
-
const lines =
|
|
323
|
+
export async function renderGrepResults(text, pattern) {
|
|
324
|
+
const lines = normalizeLineEndings(text).split("\n");
|
|
296
325
|
if (!lines.length || (lines.length === 1 && !lines[0].trim()))
|
|
297
|
-
return `${
|
|
326
|
+
return `${FG_DIM}(no matches)${RST}`;
|
|
298
327
|
const out = [];
|
|
299
328
|
let currentFile = "";
|
|
300
329
|
let count = 0;
|
|
@@ -306,8 +335,8 @@ async function renderGrepResults(text, pattern) {
|
|
|
306
335
|
/* skip highlighting */
|
|
307
336
|
}
|
|
308
337
|
for (const line of lines) {
|
|
309
|
-
if (count >=
|
|
310
|
-
out.push(`${
|
|
338
|
+
if (count >= MAX_PREVIEW_LINES) {
|
|
339
|
+
out.push(`${FG_DIM} … more matches${RST}`);
|
|
311
340
|
break;
|
|
312
341
|
}
|
|
313
342
|
const fileMatch = line.match(/^(.+?)[:-](\d+)[:-](.*)$/);
|
|
@@ -316,18 +345,18 @@ async function renderGrepResults(text, pattern) {
|
|
|
316
345
|
if (file !== currentFile) {
|
|
317
346
|
if (currentFile)
|
|
318
347
|
out.push("");
|
|
319
|
-
out.push(`${
|
|
348
|
+
out.push(`${FG_BLUE}\x1b[1m${file}${RST}`);
|
|
320
349
|
currentFile = file;
|
|
321
350
|
}
|
|
322
351
|
const nw = Math.max(3, lineNo.length);
|
|
323
352
|
let display = content;
|
|
324
353
|
if (re)
|
|
325
|
-
display = content.replace(re, `${
|
|
326
|
-
out.push(`${
|
|
354
|
+
display = content.replace(re, `${RST}${FG_YELLOW}\x1b[1m$1${RST}`);
|
|
355
|
+
out.push(`${TOOL_RESULT_INDENT}${lnum(Number(lineNo), nw)} ${FG_RULE}│${RST} ${display}${RST}`);
|
|
327
356
|
count++;
|
|
328
357
|
}
|
|
329
358
|
else if (line.trim() === "--") {
|
|
330
|
-
out.push(`${
|
|
359
|
+
out.push(`${TOOL_RESULT_INDENT}${FG_DIM} ···${RST}`);
|
|
331
360
|
}
|
|
332
361
|
else if (line.trim()) {
|
|
333
362
|
out.push(line);
|
|
@@ -339,35 +368,35 @@ async function renderGrepResults(text, pattern) {
|
|
|
339
368
|
// ---------------------------------------------------------------------------
|
|
340
369
|
// Generic renderCall / renderResult for custom tools
|
|
341
370
|
// ---------------------------------------------------------------------------
|
|
342
|
-
function makeRenderCall(toolName) {
|
|
371
|
+
export function makeRenderCall(toolName) {
|
|
343
372
|
return (args, theme, ctx) => {
|
|
344
|
-
|
|
345
|
-
const text = ctx.lastComponent ?? new
|
|
346
|
-
const bg = ctx.isError ?
|
|
373
|
+
resolveBaseBackground(theme);
|
|
374
|
+
const text = ctx.lastComponent ?? new TuiText("", 0, 0);
|
|
375
|
+
const bg = ctx.isError ? BG_ERROR : undefined;
|
|
347
376
|
text.setText(fillToolBackground(`${theme.fg("toolTitle", theme.bold(toolName))}`, bg));
|
|
348
377
|
return text;
|
|
349
378
|
};
|
|
350
379
|
}
|
|
351
|
-
function makeRenderResult() {
|
|
380
|
+
export function makeRenderResult() {
|
|
352
381
|
return (result, _opt, theme, ctx) => {
|
|
353
|
-
|
|
354
|
-
const text = ctx.lastComponent ?? new
|
|
382
|
+
resolveBaseBackground(theme);
|
|
383
|
+
const text = ctx.lastComponent ?? new TuiText("", 0, 0);
|
|
355
384
|
if (ctx.isError) {
|
|
356
385
|
text.setText(renderToolError(getTextContent(result) || "Error", theme));
|
|
357
386
|
return text;
|
|
358
387
|
}
|
|
359
388
|
const content = getTextContent(result);
|
|
360
389
|
if (content) {
|
|
361
|
-
const renderWidth =
|
|
390
|
+
const renderWidth = termWidth();
|
|
362
391
|
const lines = content.split("\n");
|
|
363
|
-
const maxShow = ctx.expanded ? lines.length : Math.min(lines.length,
|
|
392
|
+
const maxShow = ctx.expanded ? lines.length : Math.min(lines.length, MAX_PREVIEW_LINES);
|
|
364
393
|
const preview = lines.slice(0, maxShow).join("\n");
|
|
365
|
-
const more = lines.length > maxShow ? `\n${
|
|
394
|
+
const more = lines.length > maxShow ? `\n${FG_DIM}... ${lines.length - maxShow} more lines${RST}` : "";
|
|
366
395
|
const metrics = renderToolMetrics(result);
|
|
367
|
-
text.setText(fillToolBackground(`${
|
|
396
|
+
text.setText(fillToolBackground(`${TOOL_RESULT_INDENT}${preview}${more}${metrics ? `\n${TOOL_RESULT_INDENT}${metrics}` : ""}`, undefined, renderWidth));
|
|
368
397
|
}
|
|
369
398
|
else {
|
|
370
|
-
text.setText(fillToolBackground(`${
|
|
399
|
+
text.setText(fillToolBackground(`${TOOL_RESULT_INDENT}${theme.fg("dim", "(no text output)")}`));
|
|
371
400
|
}
|
|
372
401
|
return text;
|
|
373
402
|
};
|
package/dist/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/bash.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/* pi-pretty: bash tool -- command execution with styled output. */
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
function registerBashTool(pi, _cwd, _fffService, sdkTool, TextComp) {
|
|
11
|
-
const TC = (0, tui_text_js_1.resolveTextCtor)(TextComp);
|
|
2
|
+
import { resolveBaseBackground, TOOL_RESULT_INDENT, termWidth } from "../config.js";
|
|
3
|
+
import { compactErrorLines, inferBashExitCode, stripBashExitStatusLine } from "../helpers.js";
|
|
4
|
+
import { fillToolBackground, renderToolDuration, renderToolError } from "../render.js";
|
|
5
|
+
import { resolveTextCtor } from "../tui-text.js";
|
|
6
|
+
import { wrapExecuteWithMetrics } from "./metrics.js";
|
|
7
|
+
export function registerBashTool(pi, _cwd, _fffService, sdkTool, TextComp) {
|
|
8
|
+
const TC = resolveTextCtor(TextComp);
|
|
12
9
|
pi.registerTool({
|
|
13
10
|
name: "bash",
|
|
14
11
|
label: "Bash",
|
|
@@ -22,7 +19,7 @@ function registerBashTool(pi, _cwd, _fffService, sdkTool, TextComp) {
|
|
|
22
19
|
],
|
|
23
20
|
parameters: sdkTool.parameters,
|
|
24
21
|
renderShell: "self",
|
|
25
|
-
execute:
|
|
22
|
+
execute: wrapExecuteWithMetrics(async (tid, params, sig, _upd, ctx) => {
|
|
26
23
|
try {
|
|
27
24
|
return (await sdkTool.execute(tid, params, sig, undefined, ctx));
|
|
28
25
|
}
|
|
@@ -41,10 +38,10 @@ function registerBashTool(pi, _cwd, _fffService, sdkTool, TextComp) {
|
|
|
41
38
|
}
|
|
42
39
|
}),
|
|
43
40
|
renderCall(args, theme, ctx) {
|
|
44
|
-
|
|
41
|
+
resolveBaseBackground(theme);
|
|
45
42
|
const text = ctx.lastComponent ?? new TC("", 0, 0);
|
|
46
43
|
const t = typeof args.timeout === "number" ? ` ${theme.fg("muted", `(timeout ${args.timeout}s)`)}` : "";
|
|
47
|
-
const tw =
|
|
44
|
+
const tw = termWidth() || 80;
|
|
48
45
|
const rawCmd = String(args.command ?? "");
|
|
49
46
|
const headerBudget = ctx.expanded ? tw : Math.max(8, tw - 20);
|
|
50
47
|
const cmd = rawCmd.length === 0
|
|
@@ -53,11 +50,11 @@ function registerBashTool(pi, _cwd, _fffService, sdkTool, TextComp) {
|
|
|
53
50
|
? `${rawCmd.slice(0, Math.max(1, headerBudget))}…`
|
|
54
51
|
: rawCmd;
|
|
55
52
|
const commandLabel = theme.fg(ctx.isError ? "error" : "toolTitle", theme.bold(`$ ${cmd}`));
|
|
56
|
-
text.setText(
|
|
53
|
+
text.setText(fillToolBackground(`\n${TOOL_RESULT_INDENT}${commandLabel}${t}\n`, undefined, ctx.expanded ? undefined : tw));
|
|
57
54
|
return text;
|
|
58
55
|
},
|
|
59
56
|
renderResult(result, _opt, theme, ctx) {
|
|
60
|
-
|
|
57
|
+
resolveBaseBackground(theme);
|
|
61
58
|
const text = ctx.lastComponent ?? new TC("", 0, 0);
|
|
62
59
|
const details = result.details;
|
|
63
60
|
const tc = getText(result);
|
|
@@ -67,37 +64,37 @@ function registerBashTool(pi, _cwd, _fffService, sdkTool, TextComp) {
|
|
|
67
64
|
? {
|
|
68
65
|
_type: "bashResult",
|
|
69
66
|
text: tc || "Error",
|
|
70
|
-
exitCode:
|
|
67
|
+
exitCode: inferBashExitCode(tc, ctx.isError ? 1 : 0),
|
|
71
68
|
command: "",
|
|
72
69
|
}
|
|
73
70
|
: undefined;
|
|
74
71
|
if (d?._type === "bashResult") {
|
|
75
72
|
const isErr = ctx.isError || (d.exitCode !== null && d.exitCode !== 0);
|
|
76
|
-
const cleaned =
|
|
77
|
-
const output = isErr ?
|
|
73
|
+
const cleaned = stripBashExitStatusLine(d.text);
|
|
74
|
+
const output = isErr ? compactErrorLines(cleaned).join("\n") : cleaned;
|
|
78
75
|
const lineCount = output.split("\n").length;
|
|
79
|
-
const info = [`${lineCount} lines`,
|
|
76
|
+
const info = [`${lineCount} lines`, renderToolDuration(result), !ctx.expanded ? "ctrl+o to expand" : ""]
|
|
80
77
|
.filter(Boolean)
|
|
81
78
|
.map((part) => theme.fg("dim", part))
|
|
82
79
|
.join(theme.fg("dim", " · "));
|
|
83
|
-
const header = `${
|
|
84
|
-
const rw =
|
|
80
|
+
const header = `${TOOL_RESULT_INDENT}${info}`;
|
|
81
|
+
const rw = termWidth();
|
|
85
82
|
const renderFn = (w) => {
|
|
86
83
|
if (!ctx.expanded)
|
|
87
|
-
return
|
|
84
|
+
return fillToolBackground(`${header}\n`, undefined, w);
|
|
88
85
|
if (!output.trim())
|
|
89
|
-
return
|
|
86
|
+
return fillToolBackground(`${header}\n`, undefined, w);
|
|
90
87
|
const show = output.split("\n");
|
|
91
|
-
const out = [header, "", ...show.map((line) => `${
|
|
92
|
-
return
|
|
88
|
+
const out = [header, "", ...show.map((line) => `${TOOL_RESULT_INDENT}${line}`)];
|
|
89
|
+
return fillToolBackground(`${out.join("\n")}\n`, undefined, w);
|
|
93
90
|
};
|
|
94
91
|
text.setText(renderFn(rw));
|
|
95
92
|
const baseRender = typeof text.render === "function" ? text.render.bind(text) : null;
|
|
96
93
|
if (baseRender) {
|
|
97
94
|
let key;
|
|
98
95
|
text.render = (w) => {
|
|
99
|
-
const width = Math.max(1, Math.floor(w ||
|
|
100
|
-
const k = `bash:${ctx.expanded ? "1" : "0"}:${width}:${d.exitCode ?? "killed"}:${output.length}:${
|
|
96
|
+
const width = Math.max(1, Math.floor(w || termWidth()));
|
|
97
|
+
const k = `bash:${ctx.expanded ? "1" : "0"}:${width}:${d.exitCode ?? "killed"}:${output.length}:${renderToolDuration(result)}`;
|
|
101
98
|
if (key !== k) {
|
|
102
99
|
text.setText(renderFn(width));
|
|
103
100
|
key = k;
|
|
@@ -108,11 +105,11 @@ function registerBashTool(pi, _cwd, _fffService, sdkTool, TextComp) {
|
|
|
108
105
|
return text;
|
|
109
106
|
}
|
|
110
107
|
if (ctx.isError) {
|
|
111
|
-
text.setText(
|
|
108
|
+
text.setText(renderToolError(tc || "Error", theme));
|
|
112
109
|
return text;
|
|
113
110
|
}
|
|
114
111
|
const fc = result.content?.[0];
|
|
115
|
-
text.setText(
|
|
112
|
+
text.setText(fillToolBackground(`${TOOL_RESULT_INDENT}${theme.fg("dim", fc && "text" in fc ? String(fc.text).slice(0, 120) : "done")}`));
|
|
116
113
|
return text;
|
|
117
114
|
},
|
|
118
115
|
});
|