@heyhuynhgiabuu/pi-pretty 0.6.17 → 0.6.19
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 +27 -0
- package/dist/helpers.d.ts +0 -8
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +0 -50
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -4
- package/dist/index.js.map +1 -1
- package/dist/render.d.ts +2 -2
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +11 -11
- package/dist/render.js.map +1 -1
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/find.d.ts.map +1 -1
- package/dist/tools/find.js +0 -9
- package/dist/tools/find.js.map +1 -1
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/ls.d.ts.map +1 -1
- package/dist/tools/ls.js.map +1 -1
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +47 -13
- 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 -42
- package/dist/tui-text.js.map +1 -1
- package/dist/types.d.ts +0 -8
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/helpers.ts +0 -49
- package/src/index.ts +2 -3
- package/src/render.ts +9 -19
- package/src/tools/bash.ts +1 -1
- package/src/tools/find.ts +0 -8
- package/src/tools/grep.ts +1 -1
- package/src/tools/ls.ts +2 -11
- package/src/tools/read.ts +50 -20
- package/src/tui-text.ts +10 -45
- package/src/types.ts +1 -12
- package/src/collapsed-hint.ts +0 -14
- package/src/expand.ts +0 -10
- package/src/image.ts +0 -129
package/dist/tools/read.js
CHANGED
|
@@ -2,12 +2,37 @@
|
|
|
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
|
|
5
|
+
const node_path_1 = require("node:path");
|
|
6
6
|
const config_js_1 = require("../config.js");
|
|
7
7
|
const helpers_js_1 = require("../helpers.js");
|
|
8
8
|
const render_js_1 = require("../render.js");
|
|
9
9
|
const tui_text_js_1 = require("../tui-text.js");
|
|
10
10
|
const metrics_js_1 = require("./metrics.js");
|
|
11
|
+
function getSkillName(filePath, content) {
|
|
12
|
+
if ((0, node_path_1.basename)(filePath) !== "SKILL.md")
|
|
13
|
+
return undefined;
|
|
14
|
+
const lines = content.split("\n");
|
|
15
|
+
if (lines[0]?.trim() === "---") {
|
|
16
|
+
const end = lines.findIndex((line, index) => index > 0 && line.trim() === "---");
|
|
17
|
+
for (const line of lines.slice(1, end < 0 ? 1 : end)) {
|
|
18
|
+
const match = /^name\s*:\s*(.+?)\s*$/.exec(line);
|
|
19
|
+
if (!match)
|
|
20
|
+
continue;
|
|
21
|
+
const value = match[1].trim();
|
|
22
|
+
if ((value.startsWith('"') && value.endsWith('"')) || (value.startsWith("'") && value.endsWith("'"))) {
|
|
23
|
+
return value.slice(1, -1).trim() || (0, node_path_1.basename)((0, node_path_1.dirname)(filePath));
|
|
24
|
+
}
|
|
25
|
+
return value || (0, node_path_1.basename)((0, node_path_1.dirname)(filePath));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return (0, node_path_1.basename)((0, node_path_1.dirname)(filePath));
|
|
29
|
+
}
|
|
30
|
+
function renderSkillHeader(skillName, expanded, theme) {
|
|
31
|
+
const label = theme.fg("accent", "[skill]");
|
|
32
|
+
const name = theme.fg("toolTitle", skillName);
|
|
33
|
+
const hint = theme.fg("dim", `ctrl+o to ${expanded ? "collapse" : "expand"}`);
|
|
34
|
+
return `${label} ${name} ${hint}`;
|
|
35
|
+
}
|
|
11
36
|
function registerReadTool(pi, cwd, _fffService, sdkTool, TextComp) {
|
|
12
37
|
const TC = (0, tui_text_js_1.resolveTextCtor)(TextComp);
|
|
13
38
|
const home = process.env.HOME ?? "";
|
|
@@ -25,8 +50,6 @@ function registerReadTool(pi, cwd, _fffService, sdkTool, TextComp) {
|
|
|
25
50
|
result.details = {
|
|
26
51
|
_type: "readImage",
|
|
27
52
|
filePath: String(p.path ?? ""),
|
|
28
|
-
data: imageBlock.data,
|
|
29
|
-
mimeType: imageBlock.mimeType ?? "image/png",
|
|
30
53
|
};
|
|
31
54
|
return result;
|
|
32
55
|
}
|
|
@@ -60,23 +83,29 @@ function registerReadTool(pi, cwd, _fffService, sdkTool, TextComp) {
|
|
|
60
83
|
return text;
|
|
61
84
|
}
|
|
62
85
|
const d = result.details;
|
|
63
|
-
// Image
|
|
86
|
+
// Image content is preserved for ToolExecution's host-generic image pass.
|
|
87
|
+
// Keep the SDK's text note visible as a fallback when host images are hidden
|
|
88
|
+
// or unsupported by the terminal.
|
|
64
89
|
if (d?._type === "readImage") {
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}, {
|
|
69
|
-
filename: d.filePath,
|
|
70
|
-
});
|
|
90
|
+
const note = getText(result);
|
|
91
|
+
text.setText(note ? (0, render_js_1.fillToolBackground)(note, config_js_1.BG_BASE) : "");
|
|
92
|
+
return text;
|
|
71
93
|
}
|
|
72
94
|
// File content — line-numbered display
|
|
73
95
|
if (d?._type === "readFile" && d.content) {
|
|
74
96
|
const tw = (0, config_js_1.termWidth)();
|
|
75
97
|
const lines = d.content.split("\n");
|
|
76
98
|
const total = lines.length;
|
|
77
|
-
const
|
|
99
|
+
const filePath = String(d.filePath ?? "");
|
|
100
|
+
const skillName = getSkillName(filePath, d.content);
|
|
101
|
+
const p2 = (0, helpers_js_1.shortPath)(cwd, home, filePath);
|
|
78
102
|
const off2 = typeof d.offset === "number" ? `:${d.offset}` : "";
|
|
79
103
|
if (!ctx.expanded) {
|
|
104
|
+
if (skillName) {
|
|
105
|
+
const header = renderSkillHeader(skillName, false, theme);
|
|
106
|
+
text.setText((0, render_js_1.fillToolBackground)(`\n${config_js_1.TOOL_RESULT_INDENT}${header}\n`, config_js_1.BG_BASE));
|
|
107
|
+
return text;
|
|
108
|
+
}
|
|
80
109
|
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
110
|
return text;
|
|
82
111
|
}
|
|
@@ -85,7 +114,9 @@ function registerReadTool(pi, cwd, _fffService, sdkTool, TextComp) {
|
|
|
85
114
|
const nw = Math.max(3, String(total).length);
|
|
86
115
|
const gw = nw + 3;
|
|
87
116
|
const cw = Math.max(1, tw - gw);
|
|
88
|
-
const header =
|
|
117
|
+
const header = skillName
|
|
118
|
+
? renderSkillHeader(skillName, true, theme)
|
|
119
|
+
: `${theme.fg("toolTitle", theme.bold("→ read"))} ${theme.fg("toolTitle", p2)}${theme.fg("dim", off2)}`;
|
|
89
120
|
const out = ["", `${config_js_1.TOOL_RESULT_INDENT}${header}`];
|
|
90
121
|
out.push(`${config_js_1.TOOL_RESULT_INDENT}${config_js_1.FG_RULE}${"─".repeat(tw - 1)}${config_js_1.RST}`);
|
|
91
122
|
for (let i = 0; i < show.length; i++) {
|
|
@@ -109,7 +140,10 @@ function registerReadTool(pi, cwd, _fffService, sdkTool, TextComp) {
|
|
|
109
140
|
.split("\n")
|
|
110
141
|
.map((l) => `${config_js_1.TOOL_RESULT_INDENT}${l}`)
|
|
111
142
|
.join("\n");
|
|
112
|
-
const
|
|
143
|
+
const divider = skillName
|
|
144
|
+
? `${config_js_1.TOOL_RESULT_INDENT}${config_js_1.FG_RULE}${"─".repeat(Math.max(1, tw - 1))}${config_js_1.RST}\n`
|
|
145
|
+
: "";
|
|
146
|
+
const rendered = `\n${config_js_1.TOOL_RESULT_INDENT}${header}\n${divider}${padded}\n`;
|
|
113
147
|
text.setText((0, render_js_1.fillToolBackground)(rendered, config_js_1.BG_BASE));
|
|
114
148
|
ctx.state._rt = rendered;
|
|
115
149
|
})
|
package/dist/tools/read.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":";AAAA,6FAA6F;;
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"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"}
|
package/dist/tui-text.d.ts
CHANGED
|
@@ -1,25 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* Returns the real Text class from @earendil-works/pi-tui, or a stub when
|
|
5
|
-
* pi-tui is unavailable (e.g. not in jiti's alias map). This avoids crashing
|
|
6
|
-
* during tool registration when pi-tui isn't aliased.
|
|
7
|
-
*
|
|
8
|
-
* The resolution is cached — the require() call happens at most once.
|
|
9
|
-
*/
|
|
10
|
-
type TextCtor = new (t?: string, x?: number, y?: number) => {
|
|
11
|
-
setText(v: string): void;
|
|
12
|
-
[k: string]: any;
|
|
1
|
+
type TextCtor = new (text?: string, paddingX?: number, paddingY?: number) => {
|
|
2
|
+
setText(value: string): void;
|
|
13
3
|
};
|
|
14
|
-
/**
|
|
15
|
-
* Returns a Text constructor, always valid. Falls back to StubText if
|
|
16
|
-
* @earendil-works/pi-tui is unavailable (caught and cached).
|
|
17
|
-
*/
|
|
18
4
|
export declare function getTextCtor(): TextCtor;
|
|
19
|
-
/**
|
|
20
|
-
* Returns TextComp if provided, otherwise the lazy-resolved Text constructor.
|
|
21
|
-
* Always returns a valid constructor (never undefined/null).
|
|
22
|
-
*/
|
|
23
5
|
export declare function resolveTextCtor(TextComp?: TextCtor): TextCtor;
|
|
24
6
|
export {};
|
|
25
7
|
//# sourceMappingURL=tui-text.d.ts.map
|
package/dist/tui-text.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-text.d.ts","sourceRoot":"","sources":["../src/tui-text.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tui-text.d.ts","sourceRoot":"","sources":["../src/tui-text.ts"],"names":[],"mappings":"AAEA,KAAK,QAAQ,GAAG,KACf,IAAI,CAAC,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,KACb;IACJ,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAE7D"}
|
package/dist/tui-text.js
CHANGED
|
@@ -1,51 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Lazy resolver for pi-tui Text constructor.
|
|
4
|
-
*
|
|
5
|
-
* Returns the real Text class from @earendil-works/pi-tui, or a stub when
|
|
6
|
-
* pi-tui is unavailable (e.g. not in jiti's alias map). This avoids crashing
|
|
7
|
-
* during tool registration when pi-tui isn't aliased.
|
|
8
|
-
*
|
|
9
|
-
* The resolution is cached — the require() call happens at most once.
|
|
10
|
-
*/
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.getTextCtor = getTextCtor;
|
|
13
4
|
exports.resolveTextCtor = resolveTextCtor;
|
|
14
|
-
|
|
15
|
-
class StubText {
|
|
16
|
-
setText(_v) {
|
|
17
|
-
// no-op — pi-tui not available
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
let _ctor = null;
|
|
21
|
-
let _resolved = false;
|
|
22
|
-
function resolve() {
|
|
23
|
-
if (_ctor)
|
|
24
|
-
return _ctor;
|
|
25
|
-
_resolved = true;
|
|
26
|
-
try {
|
|
27
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
28
|
-
const { Text } = require("@earendil-works/pi-tui");
|
|
29
|
-
_ctor = Text;
|
|
30
|
-
return _ctor;
|
|
31
|
-
}
|
|
32
|
-
catch {
|
|
33
|
-
_ctor = StubText;
|
|
34
|
-
return _ctor;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Returns a Text constructor, always valid. Falls back to StubText if
|
|
39
|
-
* @earendil-works/pi-tui is unavailable (caught and cached).
|
|
40
|
-
*/
|
|
5
|
+
const pi_tui_1 = require("@earendil-works/pi-tui");
|
|
41
6
|
function getTextCtor() {
|
|
42
|
-
return
|
|
7
|
+
return pi_tui_1.Text;
|
|
43
8
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Returns TextComp if provided, otherwise the lazy-resolved Text constructor.
|
|
46
|
-
* Always returns a valid constructor (never undefined/null).
|
|
47
|
-
*/
|
|
48
9
|
function resolveTextCtor(TextComp) {
|
|
49
|
-
return TextComp ??
|
|
10
|
+
return TextComp ?? pi_tui_1.Text;
|
|
50
11
|
}
|
|
51
12
|
//# sourceMappingURL=tui-text.js.map
|
package/dist/tui-text.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-text.js","sourceRoot":"","sources":["../src/tui-text.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tui-text.js","sourceRoot":"","sources":["../src/tui-text.ts"],"names":[],"mappings":";;AAUA,kCAEC;AAED,0CAEC;AAhBD,mDAA8C;AAU9C,SAAgB,WAAW;IAC1B,OAAO,aAAI,CAAC;AACb,CAAC;AAED,SAAgB,eAAe,CAAC,QAAmB;IAClD,OAAO,QAAQ,IAAI,aAAI,CAAC;AACzB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -30,8 +30,6 @@ export interface ComponentLike {
|
|
|
30
30
|
export type ReadDetails = {
|
|
31
31
|
_type: "readImage";
|
|
32
32
|
filePath: string;
|
|
33
|
-
data: string;
|
|
34
|
-
mimeType: string;
|
|
35
33
|
} | {
|
|
36
34
|
_type: "readFile";
|
|
37
35
|
filePath: string;
|
|
@@ -131,12 +129,6 @@ export interface CursorStore {
|
|
|
131
129
|
store(cursor: unknown): string;
|
|
132
130
|
get(id: string): unknown | undefined;
|
|
133
131
|
}
|
|
134
|
-
export interface ConstraintParseResult {
|
|
135
|
-
ok: boolean;
|
|
136
|
-
globs: string[];
|
|
137
|
-
tokens: string[];
|
|
138
|
-
error?: string;
|
|
139
|
-
}
|
|
140
132
|
export interface PiPrettyDeps {
|
|
141
133
|
sdk?: SdkTools;
|
|
142
134
|
TextComponent?: new (text?: string, x?: number, y?: number) => ComponentLike;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAMvE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAM/G,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AAK1C,MAAM,WAAW,SAAS;IACzB,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACxB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,IAAI,MAAM,CAAC;CACnB;AAED,+DAA+D;AAC/D,MAAM,WAAW,aAAa;IAC7B,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,UAAU,CAAC,IAAI,IAAI,CAAC;CACpB;AAMD,MAAM,MAAM,WAAW,GACpB;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,
|
|
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.
|
|
3
|
+
"version": "0.6.19",
|
|
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",
|
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
"test:watch": "vitest --passWithNoTests"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@ff-labs/fff-node": "^0.
|
|
39
|
+
"@ff-labs/fff-node": "^0.10.0",
|
|
40
40
|
"@shikijs/cli": "^4.0.2",
|
|
41
|
-
"
|
|
41
|
+
"shiki": "4.0.2"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@biomejs/biome": "^2.3.5",
|
package/src/helpers.ts
CHANGED
|
@@ -19,55 +19,6 @@ export function shortPath(cwd: string, home: string, p: string): string {
|
|
|
19
19
|
return p.replace(home, "~");
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
export function trimToUndefined(value: string | undefined): string | undefined {
|
|
23
|
-
const trimmed = value?.trim();
|
|
24
|
-
return trimmed ? trimmed : undefined;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export function escapeRegexLiteral(text: string): string {
|
|
28
|
-
return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export function buildLiteralAlternationPattern(patterns: string[]): string {
|
|
32
|
-
return patterns
|
|
33
|
-
.map(escapeRegexLiteral)
|
|
34
|
-
.sort((a, b) => b.length - a.length)
|
|
35
|
-
.join("|");
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export function shouldIgnoreCaseForPatterns(patterns: string[]): boolean {
|
|
39
|
-
return patterns.every((pattern) => pattern.toLowerCase() === pattern);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export function getConstraintBackedPath(constraints: string | undefined): string | undefined {
|
|
43
|
-
const trimmed = trimToUndefined(constraints);
|
|
44
|
-
if (!trimmed || /\s/.test(trimmed) || trimmed.includes("!") || trimmed.endsWith("/") || /[*?[{]/.test(trimmed)) {
|
|
45
|
-
return undefined;
|
|
46
|
-
}
|
|
47
|
-
return trimmed;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export function getErrorMessage(error: unknown): string {
|
|
51
|
-
return error instanceof Error ? error.message : String(error);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export function humanSize(bytes: number): string {
|
|
55
|
-
if (bytes < 1024) return `${bytes}B`;
|
|
56
|
-
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`;
|
|
57
|
-
return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// ---------------------------------------------------------------------------
|
|
61
|
-
// Ripgrep match detection
|
|
62
|
-
// ---------------------------------------------------------------------------
|
|
63
|
-
|
|
64
|
-
export function countRipgrepMatches(text: string): number {
|
|
65
|
-
return text
|
|
66
|
-
.trim()
|
|
67
|
-
.split("\n")
|
|
68
|
-
.filter((line) => /^.+?[:-]\d+[:-]/.test(line)).length;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
22
|
export function stripBashExitStatusLine(text: string): string {
|
|
72
23
|
return normalizeLineEndings(text)
|
|
73
24
|
.split("\n")
|
package/src/index.ts
CHANGED
|
@@ -9,9 +9,6 @@
|
|
|
9
9
|
* • Custom ANSI rendering for all tools
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
// Re-export for tests
|
|
13
|
-
export { __imageInternals } from "./image.js";
|
|
14
|
-
|
|
15
12
|
import type { ExtensionAPI, ExtensionCommandContext, ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
16
13
|
import { createFffAutocompleteProvider } from "./autocomplete.js";
|
|
17
14
|
import { getDefaultAgentDir } from "./config.js";
|
|
@@ -142,6 +139,8 @@ export default async function piPrettyExtension(pi: ExtensionAPI, deps?: PiPrett
|
|
|
142
139
|
// ------------------------------------------------------------------
|
|
143
140
|
|
|
144
141
|
pi.on("session_start", async (_event: unknown, ctx: ExtensionContext) => {
|
|
142
|
+
if (ctx.mode === "tui") ctx.ui.setToolsExpanded(false);
|
|
143
|
+
|
|
145
144
|
if (!fffService) return;
|
|
146
145
|
|
|
147
146
|
try {
|
package/src/render.ts
CHANGED
|
@@ -7,8 +7,11 @@
|
|
|
7
7
|
|
|
8
8
|
import { basename, dirname } from "node:path";
|
|
9
9
|
import type { AgentToolResult } from "@earendil-works/pi-coding-agent";
|
|
10
|
+
// Top-level value import so jiti's pi-tui alias applies (it only rewrites
|
|
11
|
+
// static top-level import/require, not function-body require — see tui-text.ts).
|
|
12
|
+
import { Text as TuiText, truncateToWidth } from "@earendil-works/pi-tui";
|
|
10
13
|
import { codeToANSI } from "@shikijs/cli";
|
|
11
|
-
import type { BundledLanguage } from "shiki";
|
|
14
|
+
import type { BundledLanguage, BundledTheme } from "shiki";
|
|
12
15
|
import {
|
|
13
16
|
BG_BASE,
|
|
14
17
|
BG_ERROR,
|
|
@@ -17,9 +20,7 @@ import {
|
|
|
17
20
|
dirIcon,
|
|
18
21
|
FG_BLUE,
|
|
19
22
|
FG_DIM,
|
|
20
|
-
FG_GREEN,
|
|
21
23
|
FG_LNUM,
|
|
22
|
-
FG_RED,
|
|
23
24
|
FG_RULE,
|
|
24
25
|
FG_YELLOW,
|
|
25
26
|
MAX_HL_CHARS,
|
|
@@ -35,26 +36,19 @@ import {
|
|
|
35
36
|
ELAPSED_KEY,
|
|
36
37
|
formatCharCount,
|
|
37
38
|
formatElapsedMs,
|
|
38
|
-
humanSize,
|
|
39
39
|
normalizeLineEndings,
|
|
40
40
|
} from "./helpers.js";
|
|
41
41
|
import type { RenderCtxLike as RenderContext, ThemeLike } from "./types.js";
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
// Lazy imports — avoid top-level require() that blocks module loading
|
|
45
|
-
// ---------------------------------------------------------------------------
|
|
46
|
-
|
|
47
|
-
/** Lazy accessor to pi-tui's truncateToWidth */
|
|
43
|
+
/** Thin wrapper over pi-tui's truncateToWidth (imported at top level above). */
|
|
48
44
|
function _truncateToWidth(text: string, maxWidth: number, ellipsis?: string, pad?: boolean): string {
|
|
49
|
-
return
|
|
45
|
+
return truncateToWidth(text, maxWidth, ellipsis, pad);
|
|
50
46
|
}
|
|
51
47
|
|
|
52
48
|
// ---------------------------------------------------------------------------
|
|
53
49
|
// Shiki ANSI cache
|
|
54
50
|
// ---------------------------------------------------------------------------
|
|
55
51
|
|
|
56
|
-
import type { BundledTheme } from "shiki";
|
|
57
|
-
|
|
58
52
|
const DEFAULT_THEME: BundledTheme = "github-dark";
|
|
59
53
|
|
|
60
54
|
function resolveTheme(): BundledTheme {
|
|
@@ -172,7 +166,7 @@ export function fillToolBackground(text: string, bg = BG_BASE, width?: number):
|
|
|
172
166
|
const stripped = preserveBoxBackground(line);
|
|
173
167
|
return bg ? bg + stripped : stripped;
|
|
174
168
|
}
|
|
175
|
-
const plainLead = line.replace(
|
|
169
|
+
const plainLead = line.replace(ANSI_CAPTURE_RE, "");
|
|
176
170
|
const skipPad = line.startsWith(TOOL_RESULT_INDENT) || plainLead.startsWith(TOOL_RESULT_INDENT);
|
|
177
171
|
const fitted = _truncateToWidth(line, width, "", !skipPad);
|
|
178
172
|
const stripped = preserveBoxBackground(fitted);
|
|
@@ -181,10 +175,6 @@ export function fillToolBackground(text: string, bg = BG_BASE, width?: number):
|
|
|
181
175
|
.join("\n");
|
|
182
176
|
}
|
|
183
177
|
|
|
184
|
-
function rule(w: number): string {
|
|
185
|
-
return `${FG_RULE}${"─".repeat(w)}${RST}`;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
178
|
function lnum(n: number, w: number): string {
|
|
189
179
|
const v = String(n);
|
|
190
180
|
return `${FG_LNUM}${" ".repeat(Math.max(0, w - v.length))}${v}${RST}`;
|
|
@@ -387,7 +377,7 @@ export async function renderGrepResults(text: string, pattern: string): Promise<
|
|
|
387
377
|
export function makeRenderCall(toolName: string) {
|
|
388
378
|
return (args: Record<string, unknown>, theme: ThemeLike, ctx: RenderContext) => {
|
|
389
379
|
resolveBaseBackground(theme);
|
|
390
|
-
const text = ctx.lastComponent ?? new (
|
|
380
|
+
const text = ctx.lastComponent ?? new TuiText("", 0, 0);
|
|
391
381
|
const bg = ctx.isError ? BG_ERROR : undefined;
|
|
392
382
|
text.setText(fillToolBackground(`${theme.fg("toolTitle", theme.bold(toolName))}`, bg));
|
|
393
383
|
return text;
|
|
@@ -397,7 +387,7 @@ export function makeRenderCall(toolName: string) {
|
|
|
397
387
|
export function makeRenderResult() {
|
|
398
388
|
return (result: AgentToolResult<Record<string, unknown>>, _opt: unknown, theme: ThemeLike, ctx: RenderContext) => {
|
|
399
389
|
resolveBaseBackground(theme);
|
|
400
|
-
const text = ctx.lastComponent ?? new (
|
|
390
|
+
const text = ctx.lastComponent ?? new TuiText("", 0, 0);
|
|
401
391
|
if (ctx.isError) {
|
|
402
392
|
text.setText(renderToolError(getTextContent(result) || "Error", theme));
|
|
403
393
|
return text;
|
package/src/tools/bash.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* pi-pretty: bash tool -- command execution with styled output. */
|
|
2
2
|
|
|
3
3
|
import type { AgentToolResult, ExtensionAPI, ExtensionContext, ToolDefinition } from "@earendil-works/pi-coding-agent";
|
|
4
|
-
import {
|
|
4
|
+
import { resolveBaseBackground, TOOL_RESULT_INDENT, termWidth } from "../config.js";
|
|
5
5
|
import { compactErrorLines, inferBashExitCode, stripBashExitStatusLine } from "../helpers.js";
|
|
6
6
|
import { fillToolBackground, renderToolDuration, renderToolError } from "../render.js";
|
|
7
7
|
import { resolveTextCtor } from "../tui-text.js";
|
package/src/tools/find.ts
CHANGED
|
@@ -40,14 +40,6 @@ function buildGlobPattern(pattern: string, path: string | undefined, basePath: s
|
|
|
40
40
|
return normalized.startsWith("**/") || normalized.includes("/") ? normalized : `**/${normalized}`;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
function appendFindNotices(result: Result, extra: string[]): Result {
|
|
44
|
-
if (extra.length === 0) return result;
|
|
45
|
-
const d = result.details;
|
|
46
|
-
if (!d || d._type !== "findResult") return result;
|
|
47
|
-
const prev = Array.isArray(d.notices) ? (d.notices as string[]) : [];
|
|
48
|
-
return { ...result, details: { ...d, notices: [...prev, ...extra] } };
|
|
49
|
-
}
|
|
50
|
-
|
|
51
43
|
async function sdkFindAsFindResult(
|
|
52
44
|
sdkTool: SdkToolDef,
|
|
53
45
|
tid: string,
|
package/src/tools/grep.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* pi-pretty: grep tool -- FFF-backed text search with SDK fallback. */
|
|
2
2
|
|
|
3
3
|
import type { AgentToolResult, ExtensionAPI, ExtensionContext, ToolDefinition } from "@earendil-works/pi-coding-agent";
|
|
4
|
-
import { BG_ERROR, FG_DIM,
|
|
4
|
+
import { BG_ERROR, FG_DIM, RST, resolveBaseBackground, TOOL_RESULT_INDENT } from "../config.js";
|
|
5
5
|
import { fffFormatGrepText } from "../fff-helpers.js";
|
|
6
6
|
import { normalizeLineEndings, shortPath } from "../helpers.js";
|
|
7
7
|
import { NOTICE_PARTIAL_FILE_INDEX } from "../notices.js";
|
package/src/tools/ls.ts
CHANGED
|
@@ -1,20 +1,11 @@
|
|
|
1
1
|
/* pi-pretty: ls tool -- directory listing with styled output. */
|
|
2
2
|
|
|
3
3
|
import type { AgentToolResult, ExtensionAPI, ExtensionContext, ToolDefinition } from "@earendil-works/pi-coding-agent";
|
|
4
|
-
import {
|
|
5
|
-
BG_BASE,
|
|
6
|
-
BG_ERROR,
|
|
7
|
-
FG_DIM,
|
|
8
|
-
MAX_PREVIEW_LINES,
|
|
9
|
-
RST,
|
|
10
|
-
resolveBaseBackground,
|
|
11
|
-
TOOL_RESULT_INDENT,
|
|
12
|
-
termWidth,
|
|
13
|
-
} from "../config.js";
|
|
4
|
+
import { BG_ERROR, FG_DIM, RST, resolveBaseBackground, TOOL_RESULT_INDENT } from "../config.js";
|
|
14
5
|
import { shortPath } from "../helpers.js";
|
|
15
6
|
import { fillToolBackground, renderToolError, renderToolMetrics, renderTree } from "../render.js";
|
|
16
7
|
import { resolveTextCtor } from "../tui-text.js";
|
|
17
|
-
import type {
|
|
8
|
+
import type { LsDetails, RenderCtxLike, SdkToolDef, TextContent, ThemeLike } from "../types.js";
|
|
18
9
|
import { wrapExecuteWithMetrics } from "./metrics.js";
|
|
19
10
|
|
|
20
11
|
type Result = AgentToolResult<Record<string, unknown>>;
|