@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.
Files changed (84) hide show
  1. package/CHANGELOG.md +19 -116
  2. package/README.md +8 -16
  3. package/dist/collapsed-hint.d.ts +7 -0
  4. package/dist/collapsed-hint.d.ts.map +1 -0
  5. package/dist/collapsed-hint.js +17 -0
  6. package/dist/collapsed-hint.js.map +1 -0
  7. package/dist/config.d.ts +3 -0
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +64 -19
  10. package/dist/config.js.map +1 -1
  11. package/dist/expand.d.ts +7 -0
  12. package/dist/expand.d.ts.map +1 -0
  13. package/dist/expand.js +11 -0
  14. package/dist/expand.js.map +1 -0
  15. package/dist/find-glob.d.ts +9 -0
  16. package/dist/find-glob.d.ts.map +1 -0
  17. package/dist/find-glob.js +29 -0
  18. package/dist/find-glob.js.map +1 -0
  19. package/dist/image.js +1 -1
  20. package/dist/index.d.ts +1 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +18 -19
  23. package/dist/index.js.map +1 -1
  24. package/dist/render.d.ts +3 -5
  25. package/dist/render.d.ts.map +1 -1
  26. package/dist/render.js +24 -19
  27. package/dist/render.js.map +1 -1
  28. package/dist/tools/bash.d.ts +1 -1
  29. package/dist/tools/bash.d.ts.map +1 -1
  30. package/dist/tools/bash.js +22 -26
  31. package/dist/tools/bash.js.map +1 -1
  32. package/dist/tools/find.d.ts +3 -3
  33. package/dist/tools/find.d.ts.map +1 -1
  34. package/dist/tools/find.js +99 -50
  35. package/dist/tools/find.js.map +1 -1
  36. package/dist/tools/grep.d.ts +2 -2
  37. package/dist/tools/grep.d.ts.map +1 -1
  38. package/dist/tools/grep.js +12 -8
  39. package/dist/tools/grep.js.map +1 -1
  40. package/dist/tools/labels.d.ts +2 -0
  41. package/dist/tools/labels.d.ts.map +1 -0
  42. package/dist/tools/labels.js +7 -0
  43. package/dist/tools/labels.js.map +1 -0
  44. package/dist/tools/ls.d.ts +1 -1
  45. package/dist/tools/ls.d.ts.map +1 -1
  46. package/dist/tools/ls.js +9 -5
  47. package/dist/tools/ls.js.map +1 -1
  48. package/dist/tools/read.d.ts +1 -1
  49. package/dist/tools/read.d.ts.map +1 -1
  50. package/dist/tools/read.js +34 -48
  51. package/dist/tools/read.js.map +1 -1
  52. package/dist/tui-text.d.ts.map +1 -1
  53. package/dist/tui-text.js +1 -5
  54. package/dist/tui-text.js.map +1 -1
  55. package/dist/types.d.ts +4 -27
  56. package/dist/types.d.ts.map +1 -1
  57. package/package.json +5 -4
  58. package/src/collapsed-hint.ts +14 -0
  59. package/src/config.ts +70 -22
  60. package/src/expand.ts +10 -0
  61. package/src/find-glob.ts +21 -0
  62. package/src/image.ts +1 -1
  63. package/src/index.ts +25 -32
  64. package/src/notices.ts +1 -1
  65. package/src/render.ts +50 -41
  66. package/src/tools/bash.ts +27 -48
  67. package/src/tools/find.ts +131 -86
  68. package/src/tools/grep.ts +23 -17
  69. package/src/tools/labels.ts +3 -0
  70. package/src/tools/ls.ts +27 -13
  71. package/src/tools/metrics.ts +1 -1
  72. package/src/tools/read.ts +55 -66
  73. package/src/tui-text.ts +1 -5
  74. package/src/types.ts +4 -35
  75. package/dist/multi-grep-fallback.d.ts +0 -30
  76. package/dist/multi-grep-fallback.d.ts.map +0 -1
  77. package/dist/multi-grep-fallback.js +0 -205
  78. package/dist/multi-grep-fallback.js.map +0 -1
  79. package/dist/tools/multi-grep.d.ts +0 -7
  80. package/dist/tools/multi-grep.d.ts.map +0 -1
  81. package/dist/tools/multi-grep.js +0 -294
  82. package/dist/tools/multi-grep.js.map +0 -1
  83. package/src/multi-grep-fallback.ts +0 -248
  84. package/src/tools/multi-grep.ts +0 -331
@@ -2,22 +2,12 @@
2
2
  /* pi-pretty: read tool -- file reading with syntax highlighting and inline image support. */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.registerReadTool = registerReadTool;
5
+ const pi_tui_1 = require("@earendil-works/pi-tui");
5
6
  const config_js_1 = require("../config.js");
6
7
  const helpers_js_1 = require("../helpers.js");
7
- const metrics_js_1 = require("./metrics.js");
8
8
  const render_js_1 = require("../render.js");
9
9
  const tui_text_js_1 = require("../tui-text.js");
10
- // Simple terminal image support check
11
- function isImageTerminal() {
12
- const term = (process.env.TERM_PROGRAM ?? process.env.TERM ?? "").toLowerCase();
13
- const proto = (process.env.PRETTY_IMAGE_PROTOCOL ?? "").toLowerCase();
14
- if (proto === "kitty" || proto === "iterm2")
15
- return true;
16
- if (proto === "none")
17
- return false;
18
- return (["ghostty", "kitty", "iterm.app", "wezterm", "mintty"].some((t) => term.includes(t)) ||
19
- process.env.LC_TERMINAL === "iTerm2");
20
- }
10
+ const metrics_js_1 = require("./metrics.js");
21
11
  function registerReadTool(pi, cwd, _fffService, sdkTool, TextComp) {
22
12
  const TC = (0, tui_text_js_1.resolveTextCtor)(TextComp);
23
13
  const home = process.env.HOME ?? "";
@@ -53,85 +43,81 @@ function registerReadTool(pi, cwd, _fffService, sdkTool, TextComp) {
53
43
  renderCall(args, theme, ctx) {
54
44
  (0, config_js_1.resolveBaseBackground)(theme);
55
45
  const text = ctx.lastComponent ?? new TC("", 0, 0);
56
- text.setText("");
46
+ if (!ctx.isError) {
47
+ text.setText("");
48
+ return text;
49
+ }
50
+ const path = String(args.path ?? "");
51
+ const label = theme.fg("error", theme.bold("→ read"));
52
+ text.setText((0, render_js_1.fillToolBackground)(`\n${config_js_1.TOOL_RESULT_INDENT}${label} ${theme.fg("toolTitle", path)}`, config_js_1.BG_ERROR));
57
53
  return text;
58
54
  },
59
55
  renderResult(result, _opt, theme, ctx) {
60
56
  (0, config_js_1.resolveBaseBackground)(theme);
61
57
  const text = ctx.lastComponent ?? new TC("", 0, 0);
62
58
  if (ctx.isError) {
63
- text.setText((0, render_js_1.renderToolError)(getText(result) || "Error", theme));
59
+ text.setText((0, render_js_1.fillToolBackground)((0, render_js_1.renderToolError)(getText(result) || "Error", theme), config_js_1.BG_ERROR));
64
60
  return text;
65
61
  }
66
62
  const d = result.details;
67
- // Image rendering
63
+ // Image rendering — use pi-tui Image component
68
64
  if (d?._type === "readImage") {
69
- if (ctx.showImages && isImageTerminal()) {
70
- try {
71
- const T = require("@earendil-works/pi-tui").Text;
72
- const img = new T("", 0, 0);
73
- if (d.mimeType.startsWith("image/svg")) {
74
- img.setText(d.data);
75
- }
76
- else {
77
- const pngData = require("@earendil-works/pi-coding-agent").convertToPng?.(d.data) ?? d.data;
78
- img.setText(`\x1b_Ga=T,f=100,m=${d.mimeType === "image/png" ? "1" : "0"};${pngData}\x1b\\\\`);
79
- }
80
- return img;
81
- }
82
- catch {
83
- /* fall through */
84
- }
85
- }
86
- const fc = result.content?.[0];
87
- text.setText((0, render_js_1.fillToolBackground)(` ${theme.fg("dim", fc && "text" in fc ? String(fc.text).slice(0, 80) : `[image: ${d.filePath}]`)}`));
88
- return text;
65
+ const mimeType = d.mimeType.startsWith("image/svg") ? "image/svg+xml" : d.mimeType;
66
+ return new pi_tui_1.Image(d.data, mimeType, {
67
+ fallbackColor: (text) => theme.fg("toolTitle", text),
68
+ }, {
69
+ filename: d.filePath,
70
+ });
89
71
  }
90
72
  // File content — line-numbered display
91
73
  if (d?._type === "readFile" && d.content) {
92
74
  const tw = (0, config_js_1.termWidth)();
93
75
  const lines = d.content.split("\n");
94
76
  const total = lines.length;
95
- const maxShow = ctx.expanded ? lines.length : Math.min(lines.length, config_js_1.MAX_PREVIEW_LINES);
77
+ const p2 = (0, helpers_js_1.shortPath)(cwd, home, String(d.filePath ?? ""));
78
+ const off2 = typeof d.offset === "number" ? `:${d.offset}` : "";
79
+ if (!ctx.expanded) {
80
+ text.setText((0, render_js_1.fillToolBackground)(`\n${config_js_1.TOOL_RESULT_INDENT}${theme.fg("toolTitle", theme.bold("→ read"))} ${theme.fg("toolTitle", p2)}${theme.fg("dim", off2)}\n${config_js_1.TOOL_RESULT_INDENT}${config_js_1.FG_DIM}${total} lines — ctrl+o to expand${config_js_1.RST}\n`, config_js_1.BG_BASE));
81
+ return text;
82
+ }
83
+ const maxShow = lines.length;
96
84
  const show = lines.slice(0, maxShow);
97
85
  const nw = Math.max(3, String(total).length);
98
86
  const gw = nw + 3;
99
87
  const cw = Math.max(1, tw - gw);
100
- const p2 = (0, helpers_js_1.shortPath)(cwd, home, String(d.filePath ?? ""));
101
- const off2 = typeof d.offset === "number" ? `:${d.offset}` : "";
102
- const header = `${theme.fg("toolTitle", theme.bold("read"))} ${theme.fg("accent", p2)}${theme.fg("dim", off2)}`;
103
- const out = ["", ` ${header}`];
104
- out.push(` ${config_js_1.FG_RULE}${"─".repeat(tw - 2)}${config_js_1.RST}`);
88
+ const header = `${theme.fg("toolTitle", theme.bold("→ read"))} ${theme.fg("toolTitle", p2)}${theme.fg("dim", off2)}`;
89
+ const out = ["", `${config_js_1.TOOL_RESULT_INDENT}${header}`];
90
+ out.push(`${config_js_1.TOOL_RESULT_INDENT}${config_js_1.FG_RULE}${"─".repeat(tw - 1)}${config_js_1.RST}`);
105
91
  for (let i = 0; i < show.length; i++) {
106
92
  const ln = (d.offset || 0) + i + 1;
107
93
  const code = show[i] ?? "";
108
94
  const display = code.length > cw ? code.slice(0, cw) + `${config_js_1.FG_DIM}›${config_js_1.RST}` : code;
109
95
  const lineNo = String(ln);
110
- out.push(` ${config_js_1.FG_LNUM}${" ".repeat(Math.max(0, nw - lineNo.length))}${lineNo}${config_js_1.RST} ${config_js_1.FG_RULE}│${config_js_1.RST} ${display}${config_js_1.RST}`);
96
+ out.push(`${config_js_1.TOOL_RESULT_INDENT}${config_js_1.FG_LNUM}${" ".repeat(Math.max(0, nw - lineNo.length))}${lineNo}${config_js_1.RST} ${config_js_1.FG_RULE}│${config_js_1.RST} ${display}${config_js_1.RST}`);
111
97
  }
112
98
  if (total > maxShow) {
113
- out.push(` ${config_js_1.FG_DIM} … ${total - maxShow} more lines (${total} total)${config_js_1.RST}`);
99
+ out.push(`${config_js_1.TOOL_RESULT_INDENT}${config_js_1.FG_DIM}… ${total - maxShow} more lines (${total} total)${config_js_1.RST}`);
114
100
  }
115
101
  out.push("");
116
102
  const rendered = out.join("\n");
117
- text.setText((0, render_js_1.fillToolBackground)(rendered));
103
+ text.setText((0, render_js_1.fillToolBackground)(rendered, config_js_1.BG_BASE));
118
104
  ctx.state._rt = rendered;
119
105
  // Async syntax highlighting via Shiki
120
106
  (0, render_js_1.renderFileContent)(d.content, d.filePath, d.offset || 0, maxShow, tw)
121
107
  .then((hl) => {
122
108
  const padded = hl
123
109
  .split("\n")
124
- .map((l) => ` ${l}`)
110
+ .map((l) => `${config_js_1.TOOL_RESULT_INDENT}${l}`)
125
111
  .join("\n");
126
- const rendered = `\n ${header}\n${padded}\n`;
127
- text.setText((0, render_js_1.fillToolBackground)(rendered));
112
+ const rendered = `\n${config_js_1.TOOL_RESULT_INDENT}${header}\n${padded}\n`;
113
+ text.setText((0, render_js_1.fillToolBackground)(rendered, config_js_1.BG_BASE));
128
114
  ctx.state._rt = rendered;
129
115
  })
130
116
  .catch(() => { });
131
117
  return text;
132
118
  }
133
119
  const fc = result.content?.[0];
134
- text.setText((0, render_js_1.fillToolBackground)(` ${theme.fg("dim", fc && "text" in fc ? String(fc.text).slice(0, 120) : "done")}`));
120
+ 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")}`, config_js_1.BG_BASE));
135
121
  return text;
136
122
  },
137
123
  });
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tui-text.d.ts","sourceRoot":"","sources":["../src/tui-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,KAAK,QAAQ,GAAG,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK;IAAE,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC;AA8B3G;;;GAGG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAE7D"}
1
+ {"version":3,"file":"tui-text.d.ts","sourceRoot":"","sources":["../src/tui-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,KAAK,QAAQ,GAAG,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK;IAAE,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC;AA0B3G;;;GAGG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAE7D"}
package/dist/tui-text.js CHANGED
@@ -13,10 +13,6 @@ exports.getTextCtor = getTextCtor;
13
13
  exports.resolveTextCtor = resolveTextCtor;
14
14
  /** No-op stub that satisfies the Text interface so rendering doesn't crash. */
15
15
  class StubText {
16
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
17
- constructor(_t, _x, _y) {
18
- // no-op
19
- }
20
16
  setText(_v) {
21
17
  // no-op — pi-tui not available
22
18
  }
@@ -24,7 +20,7 @@ class StubText {
24
20
  let _ctor = null;
25
21
  let _resolved = false;
26
22
  function resolve() {
27
- if (_resolved)
23
+ if (_ctor)
28
24
  return _ctor;
29
25
  _resolved = true;
30
26
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"tui-text.js","sourceRoot":"","sources":["../src/tui-text.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAqCH,kCAEC;AAMD,0CAEC;AA1CD,+EAA+E;AAC/E,MAAM,QAAQ;IACb,6DAA6D;IAC7D,YAAY,EAAW,EAAE,EAAW,EAAE,EAAW;QAChD,QAAQ;IACT,CAAC;IACD,OAAO,CAAC,EAAU;QACjB,+BAA+B;IAChC,CAAC;CACD;AAED,IAAI,KAAK,GAAoB,IAAI,CAAC;AAClC,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,SAAS,OAAO;IACf,IAAI,SAAS;QAAE,OAAO,KAAM,CAAC;IAC7B,SAAS,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC;QACJ,8DAA8D;QAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAuB,CAAC;QACzE,KAAK,GAAG,IAAI,CAAC;QACb,OAAO,KAAK,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACR,KAAK,GAAG,QAAQ,CAAC;QACjB,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW;IAC1B,OAAO,OAAO,EAAE,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,QAAmB;IAClD,OAAO,QAAQ,IAAI,OAAO,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"tui-text.js","sourceRoot":"","sources":["../src/tui-text.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAiCH,kCAEC;AAMD,0CAEC;AAtCD,+EAA+E;AAC/E,MAAM,QAAQ;IACb,OAAO,CAAC,EAAU;QACjB,+BAA+B;IAChC,CAAC;CACD;AAED,IAAI,KAAK,GAAoB,IAAI,CAAC;AAClC,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,SAAS,OAAO;IACf,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,SAAS,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC;QACJ,8DAA8D;QAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAAuB,CAAC;QACzE,KAAK,GAAG,IAAI,CAAC;QACb,OAAO,KAAK,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACR,KAAK,GAAG,QAAQ,CAAC;QACjB,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW;IAC1B,OAAO,OAAO,EAAE,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,QAAmB;IAClD,OAAO,QAAQ,IAAI,OAAO,EAAE,CAAC;AAC9B,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * pi-pretty shared types.
3
3
  */
4
- import type { TextContent, ImageContent } from "@earendil-works/pi-ai";
4
+ import type { ImageContent, TextContent } from "@earendil-works/pi-ai";
5
5
  import type { AgentToolResult } from "@earendil-works/pi-coding-agent";
6
- export type { FileFinder, FileItem, GrepResult, SearchResult, GrepMatch, GrepCursor } from "@ff-labs/fff-node";
6
+ export type { FileFinder, FileItem, GrepCursor, GrepMatch, GrepResult, SearchResult } from "@ff-labs/fff-node";
7
7
  export type ToolContent = TextContent | ImageContent;
8
- export type { TextContent, ImageContent };
8
+ export type { ImageContent, TextContent };
9
9
  export interface ThemeLike {
10
10
  fg: (key: string, text: string) => string;
11
11
  bold: (text: string) => string;
@@ -56,6 +56,7 @@ export interface FindDetails extends Record<string, unknown> {
56
56
  text: string;
57
57
  pattern: string;
58
58
  matchCount: number;
59
+ notices?: string[];
59
60
  }
60
61
  export interface GrepDetails extends Record<string, unknown> {
61
62
  _type: "grepResult";
@@ -90,13 +91,6 @@ export interface GrepInput {
90
91
  literal?: boolean;
91
92
  ignoreCase?: boolean;
92
93
  }
93
- export interface MultiGrepInput {
94
- patterns: string[];
95
- path?: string;
96
- constraints?: string;
97
- context?: number;
98
- limit?: number;
99
- }
100
94
  /**
101
95
  * Minimal structural type for an SDK-produced tool definition.
102
96
  * Accepts both the real SDK's ToolDefinition<> return type and test mocks.
@@ -116,22 +110,6 @@ export interface SdkTools {
116
110
  createGrepTool?: (cwd: string) => SdkToolDef;
117
111
  getAgentDir?: () => string;
118
112
  }
119
- export interface MultiGrepFallbackParams {
120
- cwd: string;
121
- patterns: string[];
122
- path?: string;
123
- constraints?: string;
124
- context?: number;
125
- limit: number;
126
- ignoreCase: boolean;
127
- signal?: AbortSignal;
128
- }
129
- export interface MultiGrepFallbackResult {
130
- text: string;
131
- matchCount: number;
132
- limitReached: boolean;
133
- }
134
- export type MultiGrepFallback = (params: MultiGrepFallbackParams) => Promise<MultiGrepFallbackResult>;
135
113
  /** Minimal FFF service shape for tools that only need fileSearch. */
136
114
  export interface FffServiceLike {
137
115
  readonly isAvailable: boolean;
@@ -163,6 +141,5 @@ export interface PiPrettyDeps {
163
141
  sdk?: SdkTools;
164
142
  TextComponent?: new (text?: string, x?: number, y?: number) => ComponentLike;
165
143
  fffModule?: typeof import("@ff-labs/fff-node");
166
- multiGrepRipgrepFallback?: MultiGrepFallback;
167
144
  }
168
145
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heyhuynhgiabuu/pi-pretty",
3
- "version": "0.6.15",
3
+ "version": "0.6.17",
4
4
  "description": "Pretty terminal output for pi — syntax-highlighted file reads, colored bash output, tree-view directory listings, and more.",
5
5
  "keywords": [
6
6
  "pi",
@@ -42,14 +42,15 @@
42
42
  },
43
43
  "devDependencies": {
44
44
  "@biomejs/biome": "^2.3.5",
45
- "@earendil-works/pi-ai": "^0.79.9",
45
+ "@earendil-works/pi-ai": "^0.80.6",
46
+ "@earendil-works/pi-coding-agent": "^0.80.6",
46
47
  "@earendil-works/pi-tui": "*",
47
48
  "@types/node": "^20.0.0",
48
49
  "typescript": "^5.0.0",
49
- "vitest": "^4.0.18",
50
- "@earendil-works/pi-coding-agent": "^0.79.9"
50
+ "vitest": "^4.0.18"
51
51
  },
52
52
  "peerDependencies": {
53
+ "@earendil-works/pi-coding-agent": "^0.80.0",
53
54
  "@earendil-works/pi-tui": "*"
54
55
  },
55
56
  "pi": {
@@ -0,0 +1,14 @@
1
+ import { FG_DIM, RST, TOOL_RESULT_INDENT } from "./config.js";
2
+
3
+ /** Shown in collapsed tool results; Pi keybinding is still `app.tools.expand` (Ctrl+O). */
4
+ export const COLLAPSED_EXPAND_LABEL = "ctrl+o to expand";
5
+
6
+ /** Collapsed hint line (no extra blank lines above/below). */
7
+ export function collapsedExpandBlock(countLabel: string): string {
8
+ return `${TOOL_RESULT_INDENT}${FG_DIM}${countLabel} — ${COLLAPSED_EXPAND_LABEL}${RST}\n`;
9
+ }
10
+
11
+ /** When line count / metrics already appear on the header line (bash). */
12
+ export function collapsedExpandFooter(): string {
13
+ return `${TOOL_RESULT_INDENT}${FG_DIM}${COLLAPSED_EXPAND_LABEL}${RST}\n`;
14
+ }
package/src/config.ts CHANGED
@@ -9,8 +9,10 @@ import { basename, extname, join } from "node:path";
9
9
  // ANSI
10
10
  // ---------------------------------------------------------------------------
11
11
 
12
+ /** Left indent for rendered tool result lines (was two spaces; one matches tighter TUI layout). */
13
+ export const TOOL_RESULT_INDENT = " ";
14
+
12
15
  export let RST = "\x1b[0m";
13
- const BOLD = "\x1b[1m";
14
16
 
15
17
  export const FG_LNUM = "\x1b[38;2;100;100;100m";
16
18
  export const FG_DIM = "\x1b[38;2;80;80;80m";
@@ -29,9 +31,10 @@ export let BG_ERROR = BG_DEFAULT;
29
31
  // Theme
30
32
  // ---------------------------------------------------------------------------
31
33
 
32
- import type { ThemeLike } from "./types.js";
33
-
34
- type BgThemeLike = { getBgAnsi?: (key: string) => string };
34
+ type BgThemeLike = {
35
+ getBgAnsi?: (key: string) => string;
36
+ bg?: (key: string, text: string) => string;
37
+ };
35
38
 
36
39
  const ESC_RE = "\u001b";
37
40
 
@@ -42,8 +45,14 @@ function parseAnsiRgb(ansi: string): { r: number; g: number; b: number } | null
42
45
 
43
46
  function getThemeBgAnsi(theme: BgThemeLike, key: string): string | null {
44
47
  try {
45
- const bgAnsi = theme.getBgAnsi?.(key);
46
- return bgAnsi && parseAnsiRgb(bgAnsi) ? bgAnsi : null;
48
+ const direct = theme.getBgAnsi?.(key);
49
+ if (direct && parseAnsiRgb(direct)) return direct;
50
+
51
+ const marker = "\0";
52
+ const styled = theme.bg?.(key, marker);
53
+ const markerIndex = styled?.indexOf(marker) ?? -1;
54
+ const ansi = markerIndex > 0 ? styled?.slice(0, markerIndex) : null;
55
+ return ansi && parseAnsiRgb(ansi) ? ansi : null;
47
56
  } catch {
48
57
  return null;
49
58
  }
@@ -102,8 +111,12 @@ export function resolveBaseBackground(theme: BgThemeLike | null | undefined): vo
102
111
  const home = process.env.HOME;
103
112
  const configDir = process.env.PRETTY_CONFIG_DIR ?? (home ? join(home, ".pi/agent") : undefined);
104
113
  if (applyPrettyConfigBg(configDir)) return;
105
- if (!theme?.getBgAnsi) return;
106
- BG_BASE = getThemeBgAnsi(theme, "toolSuccessBg") ?? getThemeBgAnsi(theme, "toolBg") ?? getThemeBgAnsi(theme, "background") ?? BG_DEFAULT;
114
+ if (!theme?.getBgAnsi && !theme?.bg) return;
115
+ BG_BASE =
116
+ getThemeBgAnsi(theme, "toolSuccessBg") ??
117
+ getThemeBgAnsi(theme, "toolBg") ??
118
+ getThemeBgAnsi(theme, "background") ??
119
+ BG_DEFAULT;
107
120
  BG_ERROR = getThemeBgAnsi(theme, "toolErrorBg") ?? BG_BASE;
108
121
  RST = "\x1b[0m";
109
122
  }
@@ -114,8 +127,10 @@ export function resolveBaseBackground(theme: BgThemeLike | null | undefined): vo
114
127
 
115
128
  export function termWidth(): number {
116
129
  if (process.stdout.columns) return Math.max(1, Math.min(process.stdout.columns, 210));
117
- const raw = (process.stderr as NodeJS.WriteStream & { columns?: number }).columns ||
118
- Number.parseInt(process.env.COLUMNS ?? "", 10) || 200;
130
+ const raw =
131
+ (process.stderr as NodeJS.WriteStream & { columns?: number }).columns ||
132
+ Number.parseInt(process.env.COLUMNS ?? "", 10) ||
133
+ 200;
119
134
  return Math.max(1, Math.min(raw - 4, 210));
120
135
  }
121
136
 
@@ -206,18 +221,51 @@ export function dirIcon(): string {
206
221
  import type { BundledLanguage } from "shiki";
207
222
 
208
223
  const EXT_LANG: Record<string, BundledLanguage> = {
209
- ts: "typescript", tsx: "tsx", js: "javascript", jsx: "jsx",
210
- mjs: "javascript", cjs: "javascript",
211
- py: "python", rb: "ruby", rs: "rust", go: "go", java: "java",
212
- c: "c", cpp: "cpp", h: "c", hpp: "cpp",
213
- cs: "csharp", swift: "swift", kt: "kotlin",
214
- html: "html", css: "css", scss: "scss", less: "css",
215
- json: "json", jsonc: "jsonc", yaml: "yaml", yml: "yaml",
216
- toml: "toml", md: "markdown", mdx: "mdx", sql: "sql",
217
- sh: "bash", bash: "bash", zsh: "bash", lua: "lua", php: "php",
218
- dart: "dart", xml: "xml", graphql: "graphql", svelte: "svelte", vue: "vue",
219
- dockerfile: "dockerfile", makefile: "make",
220
- zig: "zig", nim: "nim", elixir: "elixir",
224
+ ts: "typescript",
225
+ tsx: "tsx",
226
+ js: "javascript",
227
+ jsx: "jsx",
228
+ mjs: "javascript",
229
+ cjs: "javascript",
230
+ py: "python",
231
+ rb: "ruby",
232
+ rs: "rust",
233
+ go: "go",
234
+ java: "java",
235
+ c: "c",
236
+ cpp: "cpp",
237
+ h: "c",
238
+ hpp: "cpp",
239
+ cs: "csharp",
240
+ swift: "swift",
241
+ kt: "kotlin",
242
+ html: "html",
243
+ css: "css",
244
+ scss: "scss",
245
+ less: "css",
246
+ json: "json",
247
+ jsonc: "jsonc",
248
+ yaml: "yaml",
249
+ yml: "yaml",
250
+ toml: "toml",
251
+ md: "markdown",
252
+ mdx: "mdx",
253
+ sql: "sql",
254
+ sh: "bash",
255
+ bash: "bash",
256
+ zsh: "bash",
257
+ lua: "lua",
258
+ php: "php",
259
+ dart: "dart",
260
+ xml: "xml",
261
+ graphql: "graphql",
262
+ svelte: "svelte",
263
+ vue: "vue",
264
+ dockerfile: "dockerfile",
265
+ makefile: "make",
266
+ zig: "zig",
267
+ nim: "nim",
268
+ elixir: "elixir",
221
269
  };
222
270
 
223
271
  export function detectLang(fp: string): BundledLanguage | undefined {
package/src/expand.ts ADDED
@@ -0,0 +1,10 @@
1
+ import { MAX_PREVIEW_LINES } from "./config.js";
2
+
3
+ /** Render context from pi tool UI (Ctrl+O toggles `expanded` per tool block). */
4
+ export type ToolRenderCtx = { expanded?: boolean };
5
+
6
+ /** Lines to show in tool result body when collapsed vs expanded. */
7
+ export function previewLineCount(ctx: ToolRenderCtx, totalLines: number): number {
8
+ if (ctx.expanded) return totalLines;
9
+ return Math.min(totalLines, MAX_PREVIEW_LINES);
10
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Glob normalization for FFF glob() (repo-relative paths).
3
+ * Aligns with Pi SDK find: bare *.ts searches under cwd recursively.
4
+ */
5
+
6
+ /** Do not collapse double-star-slash-star to single star. */
7
+ export function normalizeFindGlobPattern(pattern: string): string {
8
+ const p = pattern.trim();
9
+ if (!p) return p;
10
+ if (p === "**/*") return "**/*";
11
+ if (p.includes("/") || p.startsWith("**/")) return p;
12
+ if (/[*?[\]]/.test(p)) return `**/${p}`;
13
+ return p;
14
+ }
15
+
16
+ /** Patterns where an empty FFF result is suspicious — try SDK find (fd). */
17
+ export function isLikelyGlobPattern(pattern: string): boolean {
18
+ const p = pattern.trim();
19
+ if (!p) return false;
20
+ return /[*?[\]]/.test(p) || p === "**/*" || p.startsWith("**/");
21
+ }
package/src/image.ts CHANGED
@@ -96,7 +96,7 @@ function tmuxAllowsPassthrough(): boolean | null {
96
96
  function getTmuxPassthroughWarning(protocol: ImageProtocol): string | null {
97
97
  if (!isTmuxSession() || protocol === "none") return null;
98
98
  if (tmuxAllowsPassthrough() === false) {
99
- return 'tmux allow-passthrough is off. Run: tmux set -g allow-passthrough on';
99
+ return "tmux allow-passthrough is off. Run: tmux set -g allow-passthrough on";
100
100
  }
101
101
  return null;
102
102
  }
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * pi-pretty — Pretty terminal output for pi built-in tools.
3
3
  *
4
- * Enhances read, bash, ls, find, grep, multi_grep with:
4
+ * Enhances read, bash, ls, find, and grep with:
5
5
  * • Syntax-highlighted file content (Shiki)
6
6
  * • Colored bash exit status + output
7
7
  * • Tree-view directory listings with file-type icons
@@ -12,29 +12,28 @@
12
12
  // Re-export for tests
13
13
  export { __imageInternals } from "./image.js";
14
14
 
15
- import type { ExtensionAPI, ExtensionContext, ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
16
-
17
- import type { PiPrettyDeps } from "./types.js";
18
- import { getSharedFffService, type FffService } from "./fff.js";
19
- import { registerReadTool } from "./tools/read.js";
15
+ import type { ExtensionAPI, ExtensionCommandContext, ExtensionContext } from "@earendil-works/pi-coding-agent";
16
+ import { createFffAutocompleteProvider } from "./autocomplete.js";
17
+ import { getDefaultAgentDir } from "./config.js";
18
+ import { type FffService, getSharedFffService } from "./fff.js";
20
19
  import { registerBashTool } from "./tools/bash.js";
21
- import { registerLsTool } from "./tools/ls.js";
22
20
  import { registerFindTool } from "./tools/find.js";
23
21
  import { registerGrepTool } from "./tools/grep.js";
24
- import { registerMultiGrepTool } from "./tools/multi-grep.js";
25
- import { runMultiGrepRipgrepFallback } from "./multi-grep-fallback.js";
26
- import { getDefaultAgentDir } from "./config.js";
27
- import { createFffAutocompleteProvider } from "./autocomplete.js";
22
+ import { registerLsTool } from "./tools/ls.js";
23
+ import { registerReadTool } from "./tools/read.js";
24
+ import type { PiPrettyDeps } from "./types.js";
28
25
 
29
26
  // ---------------------------------------------------------------------------
30
27
  // Config
31
28
  // ---------------------------------------------------------------------------
32
29
 
33
- function envDisabledTools(): Set<string> {
30
+ const DEFAULT_DISABLED_TOOLS = new Set(["ls"]);
31
+
32
+ function envTools(name: "PRETTY_DISABLE_TOOLS" | "PRETTY_ENABLE_TOOLS"): Set<string> {
34
33
  return new Set(
35
- (process.env.PRETTY_DISABLE_TOOLS ?? "")
34
+ (process.env[name] ?? "")
36
35
  .split(",")
37
- .map((s) => s.trim().toLowerCase())
36
+ .map((tool) => tool.trim().toLowerCase())
38
37
  .filter(Boolean),
39
38
  );
40
39
  }
@@ -46,8 +45,15 @@ function envDisabledTools(): Set<string> {
46
45
  export type { PiPrettyDeps };
47
46
 
48
47
  export default async function piPrettyExtension(pi: ExtensionAPI, deps?: PiPrettyDeps): Promise<void> {
49
- const disabledTools = envDisabledTools();
50
- const isToolEnabled = (name: string) => !disabledTools.has(name.toLowerCase());
48
+ const disabledTools = envTools("PRETTY_DISABLE_TOOLS");
49
+ const enabledTools = envTools("PRETTY_ENABLE_TOOLS");
50
+ const isToolEnabled = (name: string) => {
51
+ const normalizedName = name.toLowerCase();
52
+ return (
53
+ !disabledTools.has(normalizedName) &&
54
+ (!DEFAULT_DISABLED_TOOLS.has(normalizedName) || enabledTools.has(normalizedName))
55
+ );
56
+ };
51
57
  const cwd = process.cwd();
52
58
 
53
59
  // ------------------------------------------------------------------
@@ -60,10 +66,7 @@ export default async function piPrettyExtension(pi: ExtensionAPI, deps?: PiPrett
60
66
 
61
67
  const maybeGetAgentDir = deps?.sdk?.getAgentDir;
62
68
  const agentDir = typeof maybeGetAgentDir === "function" ? maybeGetAgentDir() : getDefaultAgentDir();
63
- let fffService: FffService | null = getSharedFffService(deps?.fffModule, agentDir);
64
-
65
- // Ripgrep fallback for multi_grep
66
- const multiGrepFallback = deps?.multiGrepRipgrepFallback ?? runMultiGrepRipgrepFallback;
69
+ const fffService: FffService | null = getSharedFffService(deps?.fffModule, agentDir);
67
70
 
68
71
  // Text component for custom rendering (DI-friendly)
69
72
  const TextComp = deps?.TextComponent;
@@ -76,8 +79,8 @@ export default async function piPrettyExtension(pi: ExtensionAPI, deps?: PiPrett
76
79
  pi.registerCommand("fff-health", {
77
80
  description: "Show FFF file finder health and indexer status",
78
81
  handler: async (_args: string, ctx: ExtensionCommandContext) => {
79
- const fff = fffService!;
80
- if (!fff.isAvailable) {
82
+ const fff = fffService;
83
+ if (!fff || !fff.isAvailable) {
81
84
  ctx.ui.notify("FFF not initialized", "warning");
82
85
  return;
83
86
  }
@@ -227,16 +230,6 @@ export default async function piPrettyExtension(pi: ExtensionAPI, deps?: PiPrett
227
230
  if (isToolEnabled("grep") && createGrepTool) {
228
231
  registerGrepTool(pi, cwd, fffService, createGrepTool(cwd), TextComp);
229
232
  }
230
- if (isToolEnabled("multi_grep") && (fffService || createGrepTool)) {
231
- registerMultiGrepTool(
232
- pi,
233
- cwd,
234
- fffService,
235
- createGrepTool ? createGrepTool(cwd) : undefined,
236
- multiGrepFallback,
237
- TextComp,
238
- );
239
- }
240
233
 
241
234
  // Fallback padding for SDK-rendered tool bodies. The SDK reads
242
235
  // result.content[0].text and slices collapsed output to roughly the first