@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.
Files changed (47) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +25 -7
  3. package/dist/autocomplete.js +1 -4
  4. package/dist/autocomplete.js.map +1 -1
  5. package/dist/config.d.ts +42 -4
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +174 -117
  8. package/dist/config.js.map +1 -1
  9. package/dist/fff-helpers.js +2 -7
  10. package/dist/fff-helpers.js.map +1 -1
  11. package/dist/fff.js +16 -23
  12. package/dist/fff.js.map +1 -1
  13. package/dist/find-glob.js +2 -6
  14. package/dist/find-glob.js.map +1 -1
  15. package/dist/helpers.js +11 -21
  16. package/dist/helpers.js.map +1 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +22 -60
  19. package/dist/index.js.map +1 -1
  20. package/dist/notices.js +1 -4
  21. package/dist/notices.js.map +1 -1
  22. package/dist/render.d.ts +19 -0
  23. package/dist/render.d.ts.map +1 -1
  24. package/dist/render.js +125 -96
  25. package/dist/render.js.map +1 -1
  26. package/dist/tools/bash.js +26 -29
  27. package/dist/tools/bash.js.map +1 -1
  28. package/dist/tools/find.js +31 -34
  29. package/dist/tools/find.js.map +1 -1
  30. package/dist/tools/grep.js +22 -25
  31. package/dist/tools/grep.js.map +1 -1
  32. package/dist/tools/labels.js +1 -4
  33. package/dist/tools/labels.js.map +1 -1
  34. package/dist/tools/ls.js +18 -21
  35. package/dist/tools/ls.js.map +1 -1
  36. package/dist/tools/metrics.js +4 -7
  37. package/dist/tools/metrics.js.map +1 -1
  38. package/dist/tools/read.js +35 -38
  39. package/dist/tools/read.js.map +1 -1
  40. package/dist/tui-text.js +5 -9
  41. package/dist/tui-text.js.map +1 -1
  42. package/dist/types.js +1 -2
  43. package/dist/types.js.map +1 -1
  44. package/package.json +7 -6
  45. package/src/config.ts +90 -19
  46. package/src/index.ts +9 -10
  47. 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
- Object.defineProperty(exports, "__esModule", { value: true });
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
- const pi_tui_1 = require("@earendil-works/pi-tui");
27
- const cli_1 = require("@shikijs/cli");
28
- const config_js_1 = require("./config.js");
29
- const helpers_js_1 = require("./helpers.js");
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 (0, pi_tui_1.truncateToWidth)(text, maxWidth, ellipsis, pad);
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 resolveTheme() {
39
- const env = process.env.PRETTY_THEME;
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
- return settings.theme ?? DEFAULT_THEME;
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
- const THEME = resolveTheme();
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 > config_js_1.CACHE_LIMIT) {
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 > config_js_1.MAX_HL_CHARS)
98
+ if (!language || code.length > MAX_HL_CHARS)
70
99
  return code.split("\n");
71
- const k = `${THEME}\0${language}\0${code}`;
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 (0, cli_1.codeToANSI)(code, language, THEME));
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
- exports.RESET_WITHOUT_BG = "\x1b[22;23;24;25;27;28;29;39m";
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 exports.RESET_WITHOUT_BG;
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 = config_js_1.BG_BASE, width) {
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(config_js_1.TOOL_RESULT_INDENT) || plainLead.startsWith(config_js_1.TOOL_RESULT_INDENT);
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 `${config_js_1.FG_LNUM}${" ".repeat(Math.max(0, w - v.length))}${v}${config_js_1.RST}`;
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 = (0, helpers_js_1.formatElapsedMs)(details[helpers_js_1.ELAPSED_KEY]);
180
- const chars = (0, helpers_js_1.formatCharCount)(details[helpers_js_1.CHARS_KEY]);
208
+ const elapsed = formatElapsedMs(details[ELAPSED_KEY]);
209
+ const chars = formatCharCount(details[CHARS_KEY]);
181
210
  if (!elapsed && !chars)
182
211
  return "";
183
- return `${config_js_1.FG_DIM}· ${[elapsed, chars].filter(Boolean).join(" · ")}${config_js_1.RST}`;
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 (0, helpers_js_1.formatElapsedMs)(details?.[helpers_js_1.ELAPSED_KEY]);
216
+ return formatElapsedMs(details?.[ELAPSED_KEY]);
188
217
  }
189
218
  // ---------------------------------------------------------------------------
190
219
  // Error renderer
191
220
  // ---------------------------------------------------------------------------
192
- function renderToolError(error, theme) {
193
- const body = (0, helpers_js_1.compactErrorLines)(error)
194
- .map((line) => `${config_js_1.TOOL_RESULT_INDENT}${line ? theme.fg("error", 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, config_js_1.BG_ERROR);
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 = config_js_1.MAX_PREVIEW_LINES, width) {
202
- const normalizedContent = (0, helpers_js_1.normalizeLineEndings)(content);
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 = (0, config_js_1.detectLang)(filePath);
234
+ const lg = detectLang(filePath);
206
235
  const hl = await hlBlock(show.join("\n"), lg);
207
- const tw = width ?? (0, config_js_1.termWidth)();
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), `${config_js_1.FG_DIM}›`));
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 = config_js_1.MAX_PREVIEW_LINES;
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${config_js_1.TOOL_RESULT_INDENT}${config_js_1.FG_DIM}… ${remaining} more lines${config_js_1.RST}`;
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 `${config_js_1.FG_DIM}(empty directory)${config_js_1.RST}`;
262
+ return `${FG_DIM}(empty directory)${RST}`;
234
263
  const out = [];
235
264
  const total = lines.length;
236
- const show = lines.slice(0, config_js_1.MAX_PREVIEW_LINES);
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 <= config_js_1.MAX_PREVIEW_LINES;
268
+ const isLast = i === show.length - 1 && total <= MAX_PREVIEW_LINES;
240
269
  const prefix = isLast ? "└── " : "├── ";
241
- const connector = `${config_js_1.FG_RULE}${prefix}${config_js_1.RST}`;
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 ? (0, config_js_1.dirIcon)() : "";
245
- out.push(`${connector}${icon}${isDir ? `${config_js_1.FG_BLUE}\x1b[1m${name}${config_js_1.RST}` : name}`);
273
+ const icon = isDir ? dirIcon() : "";
274
+ out.push(`${connector}${icon}${isDir ? `${FG_BLUE}\x1b[1m${name}${RST}` : name}`);
246
275
  }
247
- if (total > config_js_1.MAX_PREVIEW_LINES) {
248
- out.push(`${config_js_1.FG_RULE}└── ${config_js_1.RST}${config_js_1.FG_DIM}… ${total - config_js_1.MAX_PREVIEW_LINES} more entries${config_js_1.RST}`);
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)") : `${config_js_1.FG_DIM}(no matches)${config_js_1.RST}`;
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 = (0, node_path_1.dirname)(trimmed) || ".";
263
- const file = (0, node_path_1.basename)(trimmed);
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}/`)) : `${config_js_1.FG_BLUE}\x1b[1m${dir}/${config_js_1.RST}`;
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 >= config_js_1.MAX_PREVIEW_LINES) {
307
+ if (count >= MAX_PREVIEW_LINES) {
279
308
  const more = theme
280
309
  ? theme.fg("dim", `… ${lines.length - count} more files`)
281
- : `${config_js_1.FG_DIM}… ${lines.length - count} more files${config_js_1.RST}`;
282
- out.push(`${config_js_1.TOOL_RESULT_INDENT}${more}`);
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(`${config_js_1.TOOL_RESULT_INDENT}${files[i]}`);
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 = (0, helpers_js_1.normalizeLineEndings)(text).split("\n");
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 `${config_js_1.FG_DIM}(no matches)${config_js_1.RST}`;
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 >= config_js_1.MAX_PREVIEW_LINES) {
310
- out.push(`${config_js_1.FG_DIM} … more matches${config_js_1.RST}`);
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(`${config_js_1.FG_BLUE}\x1b[1m${file}${config_js_1.RST}`);
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, `${config_js_1.RST}${config_js_1.FG_YELLOW}\x1b[1m$1${config_js_1.RST}`);
326
- out.push(`${config_js_1.TOOL_RESULT_INDENT}${lnum(Number(lineNo), nw)} ${config_js_1.FG_RULE}│${config_js_1.RST} ${display}${config_js_1.RST}`);
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(`${config_js_1.TOOL_RESULT_INDENT}${config_js_1.FG_DIM} ···${config_js_1.RST}`);
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
- (0, config_js_1.resolveBaseBackground)(theme);
345
- const text = ctx.lastComponent ?? new pi_tui_1.Text("", 0, 0);
346
- const bg = ctx.isError ? config_js_1.BG_ERROR : undefined;
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
- (0, config_js_1.resolveBaseBackground)(theme);
354
- const text = ctx.lastComponent ?? new pi_tui_1.Text("", 0, 0);
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 = (0, config_js_1.termWidth)();
390
+ const renderWidth = termWidth();
362
391
  const lines = content.split("\n");
363
- const maxShow = ctx.expanded ? lines.length : Math.min(lines.length, config_js_1.MAX_PREVIEW_LINES);
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${config_js_1.FG_DIM}... ${lines.length - maxShow} more lines${config_js_1.RST}` : "";
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(`${config_js_1.TOOL_RESULT_INDENT}${preview}${more}${metrics ? `\n${config_js_1.TOOL_RESULT_INDENT}${metrics}` : ""}`, undefined, renderWidth));
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(`${config_js_1.TOOL_RESULT_INDENT}${theme.fg("dim", "(no text output)")}`));
399
+ text.setText(fillToolBackground(`${TOOL_RESULT_INDENT}${theme.fg("dim", "(no text output)")}`));
371
400
  }
372
401
  return text;
373
402
  };
@@ -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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,0EAA0E;AAC1E,iFAAiF;AACjF,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAA2C,aAAa,EAAE,MAAM,OAAO,CAAC;AAC/E,OAAO,EACN,OAAO,EACP,QAAQ,EACR,WAAW,EACX,UAAU,EACV,OAAO,EACP,OAAO,EACP,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,GAAG,EACH,qBAAqB,EACrB,kBAAkB,EAClB,SAAS,GACT,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,eAAe,EACf,oBAAoB,GACpB,MAAM,cAAc,CAAC;AAGtB,gFAAgF;AAChF,SAAS,gBAAgB,CAAC,IAAY,EAAE,QAAgB,EAAE,QAAiB,EAAE,GAAa;IACzF,OAAO,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AACvD,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,MAAM,aAAa,GAAiB,aAAa,CAAC;AAElD,SAAS,cAAc,CAAC,IAAY;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,MAAc;IACxD,IAAI,cAAc,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAChD,OAAO,CAAC,IAAI,CACX,qBAAqB,SAAS,UAAU,MAAM,mDAAmD,aAAa,GAAG,CACjH,CAAC;IACF,OAAO,aAAa,CAAC;AACtB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI;IACnF,IAAI,GAAG;QAAE,OAAO,cAAc,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACpD,IAAI,CAAC;QACJ,IAAI,CAAC,IAAI;YAAE,OAAO,aAAa,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAC1B,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,yBAAyB,CAAC,EAAE,MAAM,CAAC,CACnG,CAAC;QACF,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,IAAI,OAAO,SAAS,KAAK,QAAQ;YAAE,OAAO,cAAc,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC;QACjG,OAAO,aAAa,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,aAAa,CAAC;IACtB,CAAC;AACF,CAAC;AAED,IAAI,MAAgC,CAAC;AAErC;;;;;GAKG;AACH,MAAM,UAAU,QAAQ;IACvB,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACrC,IAAI,KAAmB,CAAC;IACxB,IAAI,GAAG,EAAE,CAAC;QACT,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACP,MAAM,WAAW,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC;QACvC,KAAK;YACJ,OAAO,WAAW,KAAK,QAAQ;gBAC9B,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,gBAAgB,CAAC;gBAC/C,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,GAAG,KAAK,CAAC;IACf,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;AAE3C,SAAS,MAAM,CAAC,CAAS,EAAE,CAAW;IACrC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjB,OAAO,MAAM,CAAC,IAAI,GAAG,WAAW,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QACzC,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM;QAC/B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAY,EAAE,QAAqC;IACzE,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACvB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,YAAY;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAErE,MAAM,CAAC,GAAG,GAAG,QAAQ,EAAE,KAAK,QAAQ,KAAK,IAAI,EAAE,CAAC;IAChD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,GAAG;QAAE,OAAO,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAE/B,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAClF,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;AACF,CAAC;AAED,MAAM,MAAM,GAAG,QAAQ,CAAC;AACxB,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,GAAG,MAAM,eAAe,EAAE,GAAG,CAAC,CAAC;AAClE,MAAM,QAAQ,GAAG,wBAAwB,CAAC;AAE1C,MAAM,UAAU,oBAAoB,CAAC,MAAc;IAClD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC5D,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,MAAM,CAAC,EAAE,AAAD,EAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;IAC5B,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;IACvD,OAAO,SAAS,GAAG,EAAE,CAAC;AACvB,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,MAAc,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAChH,CAAC;AAED,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;AAEhE,MAAM,UAAU,qBAAqB,CAAC,IAAY;IACjD,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAc,EAAE,EAAE;QAC7D,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,gBAAgB,CAAC;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;gBACjB,6CAA6C;gBAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpB,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACxB,CAAC,IAAI,CAAC,CAAC;gBACR,CAAC;qBAAM,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBACjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAClE,CAAC,IAAI,CAAC,CAAC;gBACR,CAAC;qBAAM,CAAC;oBACP,CAAC,EAAE,CAAC;gBACL,CAAC;YACF,CAAC;iBAAM,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;gBACxB,sCAAsC;gBACtC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;oBAAE,CAAC,IAAI,CAAC,CAAC;qBAC5B,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;oBAAE,CAAC,IAAI,CAAC,CAAC;;oBACjC,CAAC,EAAE,CAAC;YACV,CAAC;iBAAM,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBACtF,CAAC,EAAE,CAAC;YACL,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpB,CAAC,EAAE,CAAC;YACL,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,EAAE,GAAG,OAAO,EAAE,KAAc;IAC5E,OAAO,IAAI;SACT,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtC,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IACtC,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,SAAS,IAAI,CAAC,CAAS,EAAE,CAAS;IACjC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,GAAG,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC;AACvE,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,UAAU,iBAAiB,CAAC,MAAgD;IACjF,MAAM,OAAO,GAAG,MAAM,CAAC,OAA8C,CAAC;IACtE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,WAAW,CAAuB,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAuB,CAAC,CAAC;IACxE,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAgD;IAClF,MAAM,OAAO,GAAG,MAAM,CAAC,OAA8C,CAAC;IACtE,OAAO,eAAe,CAAC,OAAO,EAAE,CAAC,WAAW,CAAuB,CAAC,CAAC;AACtE,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,KAAgB;IAC9D,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC;SACnC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SAC5E,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED,8EAA8E;AAC9E,yCAAyC;AACzC,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACtC,OAAe,EACf,QAAgB,EAChB,MAAM,GAAG,CAAC,EACV,QAAQ,GAAG,iBAAiB,EAC5B,KAAc;IAEd,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAE9C,MAAM,EAAE,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC;IAEhC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,iBAAiB,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IAEzC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,SAAS,GAAG,CAAC;QAAE,IAAI,IAAI,KAAK,kBAAkB,GAAG,MAAM,KAAK,SAAS,cAAc,GAAG,EAAE,CAAC;IAE7F,OAAO,IAAI,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,SAAiB;IACzD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,GAAG,MAAM,oBAAoB,GAAG,EAAE,CAAC;IAE7D,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,iBAAiB,CAAC;QACnE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACxC,MAAM,SAAS,GAAG,GAAG,OAAO,GAAG,MAAM,GAAG,GAAG,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,UAAU,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,KAAK,GAAG,iBAAiB,EAAE,CAAC;QAC/B,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,OAAO,GAAG,GAAG,MAAM,KAAK,KAAK,GAAG,iBAAiB,gBAAgB,GAAG,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,gEAAgE;AAChE,8EAA8E;AAE9E,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,KAAiB;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,eAAe,GAAG,EAAE,CAAC;IAElG,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;QACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,IAAI,KAAK,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QACxG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,KAAK,IAAI,iBAAiB,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,KAAK;oBACjB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,MAAM,GAAG,KAAK,aAAa,CAAC;oBACzD,CAAC,CAAC,GAAG,MAAM,KAAK,KAAK,CAAC,MAAM,GAAG,KAAK,cAAc,GAAG,EAAE,CAAC;gBACzD,GAAG,CAAC,IAAI,CAAC,GAAG,kBAAkB,GAAG,IAAI,EAAE,CAAC,CAAC;gBACzC,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,GAAG,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7C,KAAK,EAAE,CAAC;QACT,CAAC;IACF,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,+CAA+C;AAC/C,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY,EAAE,OAAe;IACpE,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAAE,OAAO,GAAG,MAAM,eAAe,GAAG,EAAE,CAAC;IAEpG,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,IAAI,EAAE,GAAkB,IAAI,CAAC;IAC7B,IAAI,CAAC;QACJ,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACR,uBAAuB;IACxB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,KAAK,IAAI,iBAAiB,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,mBAAmB,GAAG,EAAE,CAAC,CAAC;YAC5C,MAAM;QACP,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACzD,IAAI,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;YAC5C,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC1B,IAAI,WAAW;oBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9B,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,UAAU,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;gBAC3C,WAAW,GAAG,IAAI,CAAC;YACpB,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,OAAO,GAAG,OAAO,CAAC;YACtB,IAAI,EAAE;gBAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,SAAS,YAAY,GAAG,EAAE,CAAC,CAAC;YAC3E,GAAG,CAAC,IAAI,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,IAAI,GAAG,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC;YAChG,KAAK,EAAE,CAAC;QACT,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,CAAC,GAAG,kBAAkB,GAAG,MAAM,QAAQ,GAAG,EAAE,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,KAAK,EAAE,CAAC;QACT,CAAC;IACF,CAAC;IAED,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,qDAAqD;AACrD,8EAA8E;AAE9E,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC9C,OAAO,CAAC,IAA6B,EAAE,KAAgB,EAAE,GAAkB,EAAE,EAAE;QAC9E,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,IAAI,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC/B,OAAO,CAAC,MAAgD,EAAE,IAAa,EAAE,KAAgB,EAAE,GAAkB,EAAE,EAAE;QAChH,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,IAAI,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC;QACb,CAAC;QACD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,OAAO,EAAE,CAAC;YACb,MAAM,WAAW,GAAG,SAAS,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;YACxF,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,OAAO,KAAK,CAAC,MAAM,GAAG,OAAO,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvG,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,OAAO,CACX,kBAAkB,CACjB,GAAG,kBAAkB,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,kBAAkB,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAC7F,SAAS,EACT,WAAW,CACX,CACD,CAAC;QACH,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAAgD;IACvE,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;SAC3B,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SACrC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;SAC7B,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC"}
@@ -1,14 +1,11 @@
1
- "use strict";
2
1
  /* pi-pretty: bash tool -- command execution with styled output. */
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.registerBashTool = registerBashTool;
5
- const config_js_1 = require("../config.js");
6
- const helpers_js_1 = require("../helpers.js");
7
- const render_js_1 = require("../render.js");
8
- const tui_text_js_1 = require("../tui-text.js");
9
- const metrics_js_1 = require("./metrics.js");
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: (0, metrics_js_1.wrapExecuteWithMetrics)(async (tid, params, sig, _upd, ctx) => {
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
- (0, config_js_1.resolveBaseBackground)(theme);
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 = (0, config_js_1.termWidth)() || 80;
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((0, render_js_1.fillToolBackground)(`\n${config_js_1.TOOL_RESULT_INDENT}${commandLabel}${t}\n`, undefined, ctx.expanded ? undefined : tw));
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
- (0, config_js_1.resolveBaseBackground)(theme);
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: (0, helpers_js_1.inferBashExitCode)(tc, ctx.isError ? 1 : 0),
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 = (0, helpers_js_1.stripBashExitStatusLine)(d.text);
77
- const output = isErr ? (0, helpers_js_1.compactErrorLines)(cleaned).join("\n") : cleaned;
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`, (0, render_js_1.renderToolDuration)(result), !ctx.expanded ? "ctrl+o to expand" : ""]
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 = `${config_js_1.TOOL_RESULT_INDENT}${info}`;
84
- const rw = (0, config_js_1.termWidth)();
80
+ const header = `${TOOL_RESULT_INDENT}${info}`;
81
+ const rw = termWidth();
85
82
  const renderFn = (w) => {
86
83
  if (!ctx.expanded)
87
- return (0, render_js_1.fillToolBackground)(`${header}\n`, undefined, w);
84
+ return fillToolBackground(`${header}\n`, undefined, w);
88
85
  if (!output.trim())
89
- return (0, render_js_1.fillToolBackground)(`${header}\n`, undefined, w);
86
+ return fillToolBackground(`${header}\n`, undefined, w);
90
87
  const show = output.split("\n");
91
- const out = [header, "", ...show.map((line) => `${config_js_1.TOOL_RESULT_INDENT}${line}`)];
92
- return (0, render_js_1.fillToolBackground)(`${out.join("\n")}\n`, undefined, w);
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 || (0, config_js_1.termWidth)()));
100
- const k = `bash:${ctx.expanded ? "1" : "0"}:${width}:${d.exitCode ?? "killed"}:${output.length}:${(0, render_js_1.renderToolDuration)(result)}`;
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((0, render_js_1.renderToolError)(tc || "Error", theme));
108
+ text.setText(renderToolError(tc || "Error", theme));
112
109
  return text;
113
110
  }
114
111
  const fc = result.content?.[0];
115
- text.setText((0, render_js_1.fillToolBackground)(`${config_js_1.TOOL_RESULT_INDENT}${theme.fg("dim", fc && "text" in fc ? String(fc.text).slice(0, 120) : "done")}`));
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
  });