@heyhuynhgiabuu/pi-pretty 0.6.16 → 0.6.18
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 +26 -0
- package/README.md +6 -16
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +61 -18
- package/dist/config.js.map +1 -1
- package/dist/expand.d.ts +0 -6
- package/dist/expand.d.ts.map +1 -1
- package/dist/expand.js +0 -13
- package/dist/expand.js.map +1 -1
- package/dist/image.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -21
- package/dist/index.js.map +1 -1
- package/dist/render.d.ts +5 -7
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +16 -16
- package/dist/render.js.map +1 -1
- package/dist/tools/bash.d.ts +1 -1
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +18 -23
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/find.d.ts +2 -2
- package/dist/tools/find.d.ts.map +1 -1
- package/dist/tools/find.js +12 -8
- package/dist/tools/find.js.map +1 -1
- package/dist/tools/grep.d.ts +2 -2
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/grep.js +5 -5
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/labels.d.ts +2 -0
- package/dist/tools/labels.d.ts.map +1 -0
- package/dist/tools/labels.js +7 -0
- package/dist/tools/labels.js.map +1 -0
- package/dist/tools/ls.d.ts +1 -1
- package/dist/tools/ls.d.ts.map +1 -1
- package/dist/tools/ls.js +1 -1
- package/dist/tools/ls.js.map +1 -1
- package/dist/tools/read.d.ts +1 -1
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +22 -40
- package/dist/tools/read.js.map +1 -1
- package/dist/tui-text.d.ts +2 -20
- package/dist/tui-text.d.ts.map +1 -1
- package/dist/tui-text.js +3 -46
- package/dist/tui-text.js.map +1 -1
- package/dist/types.d.ts +3 -27
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/collapsed-hint.ts +1 -1
- package/src/config.ts +67 -22
- package/src/expand.ts +0 -14
- package/src/find-glob.ts +1 -1
- package/src/image.ts +1 -1
- package/src/index.ts +25 -34
- package/src/notices.ts +1 -1
- package/src/render.ts +44 -43
- package/src/tools/bash.ts +24 -48
- package/src/tools/find.ts +22 -36
- package/src/tools/grep.ts +12 -15
- package/src/tools/labels.ts +3 -0
- package/src/tools/ls.ts +16 -10
- package/src/tools/metrics.ts +1 -1
- package/src/tools/read.ts +39 -59
- package/src/tui-text.ts +10 -49
- package/src/types.ts +3 -35
- package/dist/multi-grep-fallback.d.ts +0 -30
- package/dist/multi-grep-fallback.d.ts.map +0 -1
- package/dist/multi-grep-fallback.js +0 -205
- package/dist/multi-grep-fallback.js.map +0 -1
- package/dist/tools/multi-grep.d.ts +0 -7
- package/dist/tools/multi-grep.d.ts.map +0 -1
- package/dist/tools/multi-grep.js +0 -298
- package/dist/tools/multi-grep.js.map +0 -1
- package/src/multi-grep-fallback.ts +0 -248
- package/src/tools/multi-grep.ts +0 -339
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.6.18] - 2026-07-17
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- Upgraded `@ff-labs/fff-node` from 0.9.6 to 0.10.0.
|
|
8
|
+
- Standardized pi-tui `Text` resolution on static imports through Pi's extension loader.
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Tool calls and results no longer render blank when Pi supplies `@earendil-works/pi-tui` through a jiti alias ([#3](https://github.com/heyhuynhgiabuu/pi-pretty/issues/3), [#4](https://github.com/heyhuynhgiabuu/pi-pretty/pull/4)).
|
|
13
|
+
- Removed the silent `StubText` fallback while preserving explicit constructor injection for tests and custom renderers.
|
|
14
|
+
|
|
15
|
+
## [0.6.17] - 2026-07-11
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- Simplified tool headers: icon-prefixed `find`, `grep`, and `read` labels; cleaner bash result metadata and spacing.
|
|
20
|
+
- Disabled `ls` by default; removed the `multi_grep` custom tool.
|
|
21
|
+
- Added `customToolTitle()` for future pi-pretty custom tools (`⚙ <name>`).
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- `find` renders matching paths instead of `(no matches)` when results exist.
|
|
26
|
+
- `read` uses native Pi TUI image rendering, with terminal fallback and success/error backgrounds.
|
|
27
|
+
- Failed `find`, `grep`, and `read` call headers use the error theme color.
|
|
28
|
+
|
|
3
29
|
## [0.6.16] - 2026-07-01
|
|
4
30
|
|
|
5
31
|
### Changed
|
package/README.md
CHANGED
|
@@ -100,20 +100,7 @@ read path="src/index.ts"
|
|
|
100
100
|
ls path="src"
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
-
### 4.
|
|
104
|
-
|
|
105
|
-
`multi_grep` is bundled on top of FFF and is useful when you want any of several patterns:
|
|
106
|
-
|
|
107
|
-
```text
|
|
108
|
-
multi_grep patterns=["handleRequest","handle_request","HandleRequest"] constraints="*.ts"
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
Good uses:
|
|
112
|
-
- find several naming variants at once
|
|
113
|
-
- search related symbols in one pass
|
|
114
|
-
- replace slow regex alternation with literal OR matching
|
|
115
|
-
|
|
116
|
-
### 5. Check FFF status or force a rescan
|
|
103
|
+
### 4. Check FFF status or force a rescan
|
|
117
104
|
|
|
118
105
|
pi-pretty also provides two maintenance commands:
|
|
119
106
|
|
|
@@ -130,7 +117,7 @@ Use them when:
|
|
|
130
117
|
### Notes
|
|
131
118
|
|
|
132
119
|
- `find` results are frecency-aware, so files you touch more often can bubble up earlier.
|
|
133
|
-
- `grep`
|
|
120
|
+
- `grep` can show a cursor notice when more results are available.
|
|
134
121
|
- If you see a partial index warning, let the session settle or run `/fff-rescan`.
|
|
135
122
|
|
|
136
123
|
## Configuration
|
|
@@ -163,10 +150,13 @@ Optional environment variables:
|
|
|
163
150
|
- `PRETTY_MAX_PREVIEW_LINES` (default: `80`)
|
|
164
151
|
- `PRETTY_CACHE_LIMIT` (default: `128`)
|
|
165
152
|
- `PRETTY_ICONS` (`nerd` by default, set to `none` to disable icons)
|
|
166
|
-
- `PRETTY_DISABLE_TOOLS` — comma-separated list of tool names to skip during registration (e.g. `read,grep`).
|
|
153
|
+
- `PRETTY_DISABLE_TOOLS` — comma-separated list of tool names to skip during registration (e.g. `read,grep`). Explicit disables take precedence over enabled defaults.
|
|
154
|
+
- `PRETTY_ENABLE_TOOLS` — comma-separated list of opt-in tools. `ls` is disabled by default; set `PRETTY_ENABLE_TOOLS=ls` to register it.
|
|
167
155
|
|
|
168
156
|
## Development
|
|
169
157
|
|
|
158
|
+
Future pi-pretty custom-tool renderers should use `customToolTitle(name)` from `src/tools/labels.ts`; it returns `⚙ <name>`. Built-in tool replacements keep their own labels.
|
|
159
|
+
|
|
170
160
|
```bash
|
|
171
161
|
npm install
|
|
172
162
|
npm run typecheck
|
package/dist/config.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export declare let BG_BASE: string;
|
|
|
16
16
|
export declare let BG_ERROR: string;
|
|
17
17
|
type BgThemeLike = {
|
|
18
18
|
getBgAnsi?: (key: string) => string;
|
|
19
|
+
bg?: (key: string, text: string) => string;
|
|
19
20
|
};
|
|
20
21
|
export declare function resolveBaseBackground(theme: BgThemeLike | null | undefined): void;
|
|
21
22
|
export declare function termWidth(): number;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,mGAAmG;AACnG,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,eAAO,IAAI,GAAG,QAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,mGAAmG;AACnG,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,eAAO,IAAI,GAAG,QAAY,CAAC;AAE3B,eAAO,MAAM,OAAO,6BAA2B,CAAC;AAChD,eAAO,MAAM,MAAM,0BAAwB,CAAC;AAC5C,eAAO,MAAM,OAAO,0BAAwB,CAAC;AAC7C,eAAO,MAAM,QAAQ,6BAA2B,CAAC;AACjD,eAAO,MAAM,MAAM,6BAA2B,CAAC;AAC/C,eAAO,MAAM,SAAS,4BAA0B,CAAC;AACjD,eAAO,MAAM,OAAO,6BAA2B,CAAC;AAChD,eAAO,MAAM,QAAQ,6BAA2B,CAAC;AAGjD,eAAO,IAAI,OAAO,QAAa,CAAC;AAChC,eAAO,IAAI,QAAQ,QAAa,CAAC;AAMjC,KAAK,WAAW,GAAG;IAClB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C,CAAC;AAyEF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAYjF;AAMD,wBAAgB,SAAS,IAAI,MAAM,CAOlC;AAOD,eAAO,MAAM,SAAS,SAAgD,CAAC;AAEvE,eAAO,MAAM,MAAM,QAA2B,CAAC;AAC/C,eAAO,MAAM,UAAU,QAA0B,CAAC;AA4DlD,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAM3C;AAED,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAMD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAkD7C,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAKlE;AAMD,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED,eAAO,MAAM,YAAY,QAAwC,CAAC;AAClE,eAAO,MAAM,iBAAiB,QAAyC,CAAC;AACxE,eAAO,MAAM,WAAW,QAAoC,CAAC;AAM7D,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAGvD"}
|
package/dist/config.js
CHANGED
|
@@ -19,7 +19,6 @@ const node_path_1 = require("node:path");
|
|
|
19
19
|
/** Left indent for rendered tool result lines (was two spaces; one matches tighter TUI layout). */
|
|
20
20
|
exports.TOOL_RESULT_INDENT = " ";
|
|
21
21
|
exports.RST = "\x1b[0m";
|
|
22
|
-
const BOLD = "\x1b[1m";
|
|
23
22
|
exports.FG_LNUM = "\x1b[38;2;100;100;100m";
|
|
24
23
|
exports.FG_DIM = "\x1b[38;2;80;80;80m";
|
|
25
24
|
exports.FG_RULE = "\x1b[38;2;50;50;50m";
|
|
@@ -38,8 +37,14 @@ function parseAnsiRgb(ansi) {
|
|
|
38
37
|
}
|
|
39
38
|
function getThemeBgAnsi(theme, key) {
|
|
40
39
|
try {
|
|
41
|
-
const
|
|
42
|
-
|
|
40
|
+
const direct = theme.getBgAnsi?.(key);
|
|
41
|
+
if (direct && parseAnsiRgb(direct))
|
|
42
|
+
return direct;
|
|
43
|
+
const marker = "\0";
|
|
44
|
+
const styled = theme.bg?.(key, marker);
|
|
45
|
+
const markerIndex = styled?.indexOf(marker) ?? -1;
|
|
46
|
+
const ansi = markerIndex > 0 ? styled?.slice(0, markerIndex) : null;
|
|
47
|
+
return ansi && parseAnsiRgb(ansi) ? ansi : null;
|
|
43
48
|
}
|
|
44
49
|
catch {
|
|
45
50
|
return null;
|
|
@@ -94,9 +99,13 @@ function resolveBaseBackground(theme) {
|
|
|
94
99
|
const configDir = process.env.PRETTY_CONFIG_DIR ?? (home ? (0, node_path_1.join)(home, ".pi/agent") : undefined);
|
|
95
100
|
if (applyPrettyConfigBg(configDir))
|
|
96
101
|
return;
|
|
97
|
-
if (!theme?.getBgAnsi)
|
|
102
|
+
if (!theme?.getBgAnsi && !theme?.bg)
|
|
98
103
|
return;
|
|
99
|
-
exports.BG_BASE =
|
|
104
|
+
exports.BG_BASE =
|
|
105
|
+
getThemeBgAnsi(theme, "toolSuccessBg") ??
|
|
106
|
+
getThemeBgAnsi(theme, "toolBg") ??
|
|
107
|
+
getThemeBgAnsi(theme, "background") ??
|
|
108
|
+
BG_DEFAULT;
|
|
100
109
|
exports.BG_ERROR = getThemeBgAnsi(theme, "toolErrorBg") ?? exports.BG_BASE;
|
|
101
110
|
exports.RST = "\x1b[0m";
|
|
102
111
|
}
|
|
@@ -107,7 +116,8 @@ function termWidth() {
|
|
|
107
116
|
if (process.stdout.columns)
|
|
108
117
|
return Math.max(1, Math.min(process.stdout.columns, 210));
|
|
109
118
|
const raw = process.stderr.columns ||
|
|
110
|
-
Number.parseInt(process.env.COLUMNS ?? "", 10) ||
|
|
119
|
+
Number.parseInt(process.env.COLUMNS ?? "", 10) ||
|
|
120
|
+
200;
|
|
111
121
|
return Math.max(1, Math.min(raw - 4, 210));
|
|
112
122
|
}
|
|
113
123
|
// ---------------------------------------------------------------------------
|
|
@@ -186,18 +196,51 @@ function dirIcon() {
|
|
|
186
196
|
return exports.USE_ICONS ? `${exports.NF_DIR} ` : "";
|
|
187
197
|
}
|
|
188
198
|
const EXT_LANG = {
|
|
189
|
-
ts: "typescript",
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
199
|
+
ts: "typescript",
|
|
200
|
+
tsx: "tsx",
|
|
201
|
+
js: "javascript",
|
|
202
|
+
jsx: "jsx",
|
|
203
|
+
mjs: "javascript",
|
|
204
|
+
cjs: "javascript",
|
|
205
|
+
py: "python",
|
|
206
|
+
rb: "ruby",
|
|
207
|
+
rs: "rust",
|
|
208
|
+
go: "go",
|
|
209
|
+
java: "java",
|
|
210
|
+
c: "c",
|
|
211
|
+
cpp: "cpp",
|
|
212
|
+
h: "c",
|
|
213
|
+
hpp: "cpp",
|
|
214
|
+
cs: "csharp",
|
|
215
|
+
swift: "swift",
|
|
216
|
+
kt: "kotlin",
|
|
217
|
+
html: "html",
|
|
218
|
+
css: "css",
|
|
219
|
+
scss: "scss",
|
|
220
|
+
less: "css",
|
|
221
|
+
json: "json",
|
|
222
|
+
jsonc: "jsonc",
|
|
223
|
+
yaml: "yaml",
|
|
224
|
+
yml: "yaml",
|
|
225
|
+
toml: "toml",
|
|
226
|
+
md: "markdown",
|
|
227
|
+
mdx: "mdx",
|
|
228
|
+
sql: "sql",
|
|
229
|
+
sh: "bash",
|
|
230
|
+
bash: "bash",
|
|
231
|
+
zsh: "bash",
|
|
232
|
+
lua: "lua",
|
|
233
|
+
php: "php",
|
|
234
|
+
dart: "dart",
|
|
235
|
+
xml: "xml",
|
|
236
|
+
graphql: "graphql",
|
|
237
|
+
svelte: "svelte",
|
|
238
|
+
vue: "vue",
|
|
239
|
+
dockerfile: "dockerfile",
|
|
240
|
+
makefile: "make",
|
|
241
|
+
zig: "zig",
|
|
242
|
+
nim: "nim",
|
|
243
|
+
elixir: "elixir",
|
|
201
244
|
};
|
|
202
245
|
function detectLang(fp) {
|
|
203
246
|
const base = (0, node_path_1.basename)(fp).toLowerCase();
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/expand.d.ts
CHANGED
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
2
1
|
/** Render context from pi tool UI (Ctrl+O toggles `expanded` per tool block). */
|
|
3
2
|
export type ToolRenderCtx = {
|
|
4
3
|
expanded?: boolean;
|
|
5
4
|
};
|
|
6
5
|
/** Lines to show in tool result body when collapsed vs expanded. */
|
|
7
6
|
export declare function previewLineCount(ctx: ToolRenderCtx, totalLines: number): number;
|
|
8
|
-
/**
|
|
9
|
-
* Default tool output to collapsed so body content is hidden until Ctrl+O (app.tools.expand).
|
|
10
|
-
* Matches Pi keybinding `app.tools.expand` / `app.tools.expandAll` (see pi.dev/docs keybindings).
|
|
11
|
-
*/
|
|
12
|
-
export declare function registerDefaultCollapsedToolOutput(pi: ExtensionAPI): void;
|
|
13
7
|
//# sourceMappingURL=expand.d.ts.map
|
package/dist/expand.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expand.d.ts","sourceRoot":"","sources":["../src/expand.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"expand.d.ts","sourceRoot":"","sources":["../src/expand.ts"],"names":[],"mappings":"AAEA,iFAAiF;AACjF,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEnD,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAG/E"}
|
package/dist/expand.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.previewLineCount = previewLineCount;
|
|
4
|
-
exports.registerDefaultCollapsedToolOutput = registerDefaultCollapsedToolOutput;
|
|
5
4
|
const config_js_1 = require("./config.js");
|
|
6
5
|
/** Lines to show in tool result body when collapsed vs expanded. */
|
|
7
6
|
function previewLineCount(ctx, totalLines) {
|
|
@@ -9,16 +8,4 @@ function previewLineCount(ctx, totalLines) {
|
|
|
9
8
|
return totalLines;
|
|
10
9
|
return Math.min(totalLines, config_js_1.MAX_PREVIEW_LINES);
|
|
11
10
|
}
|
|
12
|
-
/**
|
|
13
|
-
* Default tool output to collapsed so body content is hidden until Ctrl+O (app.tools.expand).
|
|
14
|
-
* Matches Pi keybinding `app.tools.expand` / `app.tools.expandAll` (see pi.dev/docs keybindings).
|
|
15
|
-
*/
|
|
16
|
-
function registerDefaultCollapsedToolOutput(pi) {
|
|
17
|
-
pi.on("session_start", (_event, ctx) => {
|
|
18
|
-
// Pi interactive mode: default new tool blocks collapsed (Ctrl+O toggles per block).
|
|
19
|
-
ctx.setConfig?.({
|
|
20
|
-
toolOutputExpanded: false,
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
11
|
//# sourceMappingURL=expand.js.map
|
package/dist/expand.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expand.js","sourceRoot":"","sources":["../src/expand.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"expand.js","sourceRoot":"","sources":["../src/expand.ts"],"names":[],"mappings":";;AAMA,4CAGC;AATD,2CAAgD;AAKhD,oEAAoE;AACpE,SAAgB,gBAAgB,CAAC,GAAkB,EAAE,UAAkB;IACtE,IAAI,GAAG,CAAC,QAAQ;QAAE,OAAO,UAAU,CAAC;IACpC,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,6BAAiB,CAAC,CAAC;AAChD,CAAC"}
|
package/dist/image.js
CHANGED
|
@@ -111,7 +111,7 @@ function getTmuxPassthroughWarning(protocol) {
|
|
|
111
111
|
if (!isTmuxSession() || protocol === "none")
|
|
112
112
|
return null;
|
|
113
113
|
if (tmuxAllowsPassthrough() === false) {
|
|
114
|
-
return
|
|
114
|
+
return "tmux allow-passthrough is off. Run: tmux set -g allow-passthrough on";
|
|
115
115
|
}
|
|
116
116
|
return null;
|
|
117
117
|
}
|
package/dist/index.d.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
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAA6C,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,KAAK,EAAE,YAAY,EAA6C,MAAM,iCAAiC,CAAC;AAS/G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAqB/C,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,wBAA8B,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA+MpG"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* pi-pretty — Pretty terminal output for pi built-in tools.
|
|
4
4
|
*
|
|
5
|
-
* Enhances read, bash, ls, find, grep
|
|
5
|
+
* Enhances read, bash, ls, find, and grep with:
|
|
6
6
|
* • Syntax-highlighted file content (Shiki)
|
|
7
7
|
* • Colored bash exit status + output
|
|
8
8
|
* • Tree-view directory listings with file-type icons
|
|
@@ -15,30 +15,32 @@ exports.default = piPrettyExtension;
|
|
|
15
15
|
// Re-export for tests
|
|
16
16
|
var image_js_1 = require("./image.js");
|
|
17
17
|
Object.defineProperty(exports, "__imageInternals", { enumerable: true, get: function () { return image_js_1.__imageInternals; } });
|
|
18
|
+
const autocomplete_js_1 = require("./autocomplete.js");
|
|
19
|
+
const config_js_1 = require("./config.js");
|
|
18
20
|
const fff_js_1 = require("./fff.js");
|
|
19
|
-
const read_js_1 = require("./tools/read.js");
|
|
20
21
|
const bash_js_1 = require("./tools/bash.js");
|
|
21
|
-
const ls_js_1 = require("./tools/ls.js");
|
|
22
22
|
const find_js_1 = require("./tools/find.js");
|
|
23
23
|
const grep_js_1 = require("./tools/grep.js");
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const config_js_1 = require("./config.js");
|
|
27
|
-
const autocomplete_js_1 = require("./autocomplete.js");
|
|
28
|
-
const expand_js_1 = require("./expand.js");
|
|
24
|
+
const ls_js_1 = require("./tools/ls.js");
|
|
25
|
+
const read_js_1 = require("./tools/read.js");
|
|
29
26
|
// ---------------------------------------------------------------------------
|
|
30
27
|
// Config
|
|
31
28
|
// ---------------------------------------------------------------------------
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
const DEFAULT_DISABLED_TOOLS = new Set(["ls"]);
|
|
30
|
+
function envTools(name) {
|
|
31
|
+
return new Set((process.env[name] ?? "")
|
|
34
32
|
.split(",")
|
|
35
|
-
.map((
|
|
33
|
+
.map((tool) => tool.trim().toLowerCase())
|
|
36
34
|
.filter(Boolean));
|
|
37
35
|
}
|
|
38
36
|
async function piPrettyExtension(pi, deps) {
|
|
39
|
-
const disabledTools =
|
|
40
|
-
const
|
|
41
|
-
|
|
37
|
+
const disabledTools = envTools("PRETTY_DISABLE_TOOLS");
|
|
38
|
+
const enabledTools = envTools("PRETTY_ENABLE_TOOLS");
|
|
39
|
+
const isToolEnabled = (name) => {
|
|
40
|
+
const normalizedName = name.toLowerCase();
|
|
41
|
+
return (!disabledTools.has(normalizedName) &&
|
|
42
|
+
(!DEFAULT_DISABLED_TOOLS.has(normalizedName) || enabledTools.has(normalizedName)));
|
|
43
|
+
};
|
|
42
44
|
const cwd = process.cwd();
|
|
43
45
|
// ------------------------------------------------------------------
|
|
44
46
|
// FFF service init
|
|
@@ -49,9 +51,7 @@ async function piPrettyExtension(pi, deps) {
|
|
|
49
51
|
// should still work even when SDK tool factories are unavailable.
|
|
50
52
|
const maybeGetAgentDir = deps?.sdk?.getAgentDir;
|
|
51
53
|
const agentDir = typeof maybeGetAgentDir === "function" ? maybeGetAgentDir() : (0, config_js_1.getDefaultAgentDir)();
|
|
52
|
-
|
|
53
|
-
// Ripgrep fallback for multi_grep
|
|
54
|
-
const multiGrepFallback = deps?.multiGrepRipgrepFallback ?? multi_grep_fallback_js_1.runMultiGrepRipgrepFallback;
|
|
54
|
+
const fffService = (0, fff_js_1.getSharedFffService)(deps?.fffModule, agentDir);
|
|
55
55
|
// Text component for custom rendering (DI-friendly)
|
|
56
56
|
const TextComp = deps?.TextComponent;
|
|
57
57
|
// ------------------------------------------------------------------
|
|
@@ -62,7 +62,7 @@ async function piPrettyExtension(pi, deps) {
|
|
|
62
62
|
description: "Show FFF file finder health and indexer status",
|
|
63
63
|
handler: async (_args, ctx) => {
|
|
64
64
|
const fff = fffService;
|
|
65
|
-
if (!fff.isAvailable) {
|
|
65
|
+
if (!fff || !fff.isAvailable) {
|
|
66
66
|
ctx.ui.notify("FFF not initialized", "warning");
|
|
67
67
|
return;
|
|
68
68
|
}
|
|
@@ -201,9 +201,6 @@ async function piPrettyExtension(pi, deps) {
|
|
|
201
201
|
if (isToolEnabled("grep") && createGrepTool) {
|
|
202
202
|
(0, grep_js_1.registerGrepTool)(pi, cwd, fffService, createGrepTool(cwd), TextComp);
|
|
203
203
|
}
|
|
204
|
-
if (isToolEnabled("multi_grep") && (fffService || createGrepTool)) {
|
|
205
|
-
(0, multi_grep_js_1.registerMultiGrepTool)(pi, cwd, fffService, createGrepTool ? createGrepTool(cwd) : undefined, multiGrepFallback, TextComp);
|
|
206
|
-
}
|
|
207
204
|
// Fallback padding for SDK-rendered tool bodies. The SDK reads
|
|
208
205
|
// result.content[0].text and slices collapsed output to roughly the first
|
|
209
206
|
// 10 lines, so insert bottom padding inside that visible slice.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/render.d.ts
CHANGED
|
@@ -5,21 +5,19 @@
|
|
|
5
5
|
* They are async only when Shiki syntax highlighting is involved.
|
|
6
6
|
*/
|
|
7
7
|
import type { AgentToolResult } from "@earendil-works/pi-coding-agent";
|
|
8
|
-
import type {
|
|
8
|
+
import type { RenderCtxLike as RenderContext, ThemeLike } from "./types.js";
|
|
9
9
|
export declare function isLowContrastShikiFg(params: string): boolean;
|
|
10
10
|
export declare const RESET_WITHOUT_BG = "\u001B[22;23;24;25;27;28;29;39m";
|
|
11
11
|
export declare function preserveBoxBackground(ansi: string): string;
|
|
12
12
|
export declare function fillToolBackground(text: string, bg?: string, width?: number): string;
|
|
13
13
|
export declare function renderToolMetrics(result: AgentToolResult<Record<string, unknown>>): string;
|
|
14
|
+
export declare function renderToolDuration(result: AgentToolResult<Record<string, unknown>>): string;
|
|
14
15
|
export declare function renderToolError(error: string, theme: ThemeLike): string;
|
|
15
16
|
export declare function renderFileContent(content: string, filePath: string, offset?: number, maxLines?: number, width?: number): Promise<string>;
|
|
16
|
-
export declare function renderBashOutput(text: string
|
|
17
|
-
summary: string;
|
|
18
|
-
body: string;
|
|
19
|
-
};
|
|
17
|
+
export declare function renderBashOutput(text: string): string;
|
|
20
18
|
export declare function renderTree(text: string, _basePath: string): string;
|
|
21
19
|
export declare function renderFindResults(text: string, theme?: ThemeLike): string;
|
|
22
20
|
export declare function renderGrepResults(text: string, pattern: string): Promise<string>;
|
|
23
|
-
export declare function makeRenderCall(toolName: string): (args: Record<string, unknown>, theme: ThemeLike, ctx: RenderContext) =>
|
|
24
|
-
export declare function makeRenderResult(): (result: AgentToolResult<Record<string, unknown>>, _opt: unknown, theme: ThemeLike, ctx: RenderContext) =>
|
|
21
|
+
export declare function makeRenderCall(toolName: string): (args: Record<string, unknown>, theme: ThemeLike, ctx: RenderContext) => import("./types.js").ComponentLike;
|
|
22
|
+
export declare function makeRenderResult(): (result: AgentToolResult<Record<string, unknown>>, _opt: unknown, theme: ThemeLike, ctx: RenderContext) => import("./types.js").ComponentLike;
|
|
25
23
|
//# sourceMappingURL=render.d.ts.map
|
package/dist/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAmCvE,OAAO,KAAK,EAAE,aAAa,IAAI,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAiE5E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAS5D;AAUD,eAAO,MAAM,gBAAgB,oCAAkC,CAAC;AAEhE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkC1D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAU,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAerF;AAeD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAO1F;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAG3F;AAMD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAKvE;AAMD,wBAAsB,iBAAiB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,SAAI,EACV,QAAQ,SAAoB,EAC5B,KAAK,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAcjB;AAMD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUrD;AAMD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAwBlE;AAMD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAmCzE;AAMD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0CtF;AAMD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,IACtC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,SAAS,EAAE,KAAK,aAAa,wCAO3E;AAED,wBAAgB,gBAAgB,KACvB,QAAQ,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,OAAO,EAAE,OAAO,SAAS,EAAE,KAAK,aAAa,wCA2B7G"}
|
package/dist/render.js
CHANGED
|
@@ -11,6 +11,7 @@ exports.isLowContrastShikiFg = isLowContrastShikiFg;
|
|
|
11
11
|
exports.preserveBoxBackground = preserveBoxBackground;
|
|
12
12
|
exports.fillToolBackground = fillToolBackground;
|
|
13
13
|
exports.renderToolMetrics = renderToolMetrics;
|
|
14
|
+
exports.renderToolDuration = renderToolDuration;
|
|
14
15
|
exports.renderToolError = renderToolError;
|
|
15
16
|
exports.renderFileContent = renderFileContent;
|
|
16
17
|
exports.renderBashOutput = renderBashOutput;
|
|
@@ -19,16 +20,16 @@ exports.renderFindResults = renderFindResults;
|
|
|
19
20
|
exports.renderGrepResults = renderGrepResults;
|
|
20
21
|
exports.makeRenderCall = makeRenderCall;
|
|
21
22
|
exports.makeRenderResult = makeRenderResult;
|
|
22
|
-
const cli_1 = require("@shikijs/cli");
|
|
23
23
|
const node_path_1 = require("node:path");
|
|
24
|
+
// Top-level value import so jiti's pi-tui alias applies (it only rewrites
|
|
25
|
+
// 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");
|
|
24
28
|
const config_js_1 = require("./config.js");
|
|
25
29
|
const helpers_js_1 = require("./helpers.js");
|
|
26
|
-
|
|
27
|
-
// Lazy imports — avoid top-level require() that blocks module loading
|
|
28
|
-
// ---------------------------------------------------------------------------
|
|
29
|
-
/** Lazy accessor to pi-tui's truncateToWidth */
|
|
30
|
+
/** Thin wrapper over pi-tui's truncateToWidth (imported at top level above). */
|
|
30
31
|
function _truncateToWidth(text, maxWidth, ellipsis, pad) {
|
|
31
|
-
return
|
|
32
|
+
return (0, pi_tui_1.truncateToWidth)(text, maxWidth, ellipsis, pad);
|
|
32
33
|
}
|
|
33
34
|
const DEFAULT_THEME = "github-dark";
|
|
34
35
|
function resolveTheme() {
|
|
@@ -46,7 +47,7 @@ function resolveTheme() {
|
|
|
46
47
|
return DEFAULT_THEME;
|
|
47
48
|
}
|
|
48
49
|
}
|
|
49
|
-
|
|
50
|
+
const THEME = resolveTheme();
|
|
50
51
|
const _cache = new Map();
|
|
51
52
|
function _touch(k, v) {
|
|
52
53
|
_cache.delete(k);
|
|
@@ -181,6 +182,10 @@ function renderToolMetrics(result) {
|
|
|
181
182
|
return "";
|
|
182
183
|
return `${config_js_1.FG_DIM}· ${[elapsed, chars].filter(Boolean).join(" · ")}${config_js_1.RST}`;
|
|
183
184
|
}
|
|
185
|
+
function renderToolDuration(result) {
|
|
186
|
+
const details = result.details;
|
|
187
|
+
return (0, helpers_js_1.formatElapsedMs)(details?.[helpers_js_1.ELAPSED_KEY]);
|
|
188
|
+
}
|
|
184
189
|
// ---------------------------------------------------------------------------
|
|
185
190
|
// Error renderer
|
|
186
191
|
// ---------------------------------------------------------------------------
|
|
@@ -209,12 +214,7 @@ async function renderFileContent(content, filePath, offset = 0, maxLines = confi
|
|
|
209
214
|
// ---------------------------------------------------------------------------
|
|
210
215
|
// Bash — colored exit status
|
|
211
216
|
// ---------------------------------------------------------------------------
|
|
212
|
-
function renderBashOutput(text
|
|
213
|
-
const isOk = exitCode === 0;
|
|
214
|
-
const statusIcon = isOk ? "✓" : "✗";
|
|
215
|
-
const codeStr = exitCode !== null
|
|
216
|
-
? `${isOk ? config_js_1.FG_GREEN : config_js_1.FG_RED}${statusIcon} exit ${exitCode}${config_js_1.RST}`
|
|
217
|
-
: `${config_js_1.FG_YELLOW}⚡ killed${config_js_1.RST}`;
|
|
217
|
+
function renderBashOutput(text) {
|
|
218
218
|
const lines = text.split("\n");
|
|
219
219
|
const maxShow = config_js_1.MAX_PREVIEW_LINES;
|
|
220
220
|
const show = lines.slice(0, maxShow);
|
|
@@ -222,7 +222,7 @@ function renderBashOutput(text, exitCode) {
|
|
|
222
222
|
let body = show.join("\n");
|
|
223
223
|
if (remaining > 0)
|
|
224
224
|
body += `\n${config_js_1.TOOL_RESULT_INDENT}${config_js_1.FG_DIM}… ${remaining} more lines${config_js_1.RST}`;
|
|
225
|
-
return
|
|
225
|
+
return body;
|
|
226
226
|
}
|
|
227
227
|
// ---------------------------------------------------------------------------
|
|
228
228
|
// Ls — tree view with icons
|
|
@@ -342,7 +342,7 @@ async function renderGrepResults(text, pattern) {
|
|
|
342
342
|
function makeRenderCall(toolName) {
|
|
343
343
|
return (args, theme, ctx) => {
|
|
344
344
|
(0, config_js_1.resolveBaseBackground)(theme);
|
|
345
|
-
const text = ctx.lastComponent ?? new
|
|
345
|
+
const text = ctx.lastComponent ?? new pi_tui_1.Text("", 0, 0);
|
|
346
346
|
const bg = ctx.isError ? config_js_1.BG_ERROR : undefined;
|
|
347
347
|
text.setText(fillToolBackground(`${theme.fg("toolTitle", theme.bold(toolName))}`, bg));
|
|
348
348
|
return text;
|
|
@@ -351,7 +351,7 @@ function makeRenderCall(toolName) {
|
|
|
351
351
|
function makeRenderResult() {
|
|
352
352
|
return (result, _opt, theme, ctx) => {
|
|
353
353
|
(0, config_js_1.resolveBaseBackground)(theme);
|
|
354
|
-
const text = ctx.lastComponent ?? new
|
|
354
|
+
const text = ctx.lastComponent ?? new pi_tui_1.Text("", 0, 0);
|
|
355
355
|
if (ctx.isError) {
|
|
356
356
|
text.setText(renderToolError(getTextContent(result) || "Error", theme));
|
|
357
357
|
return text;
|