@heyhuynhgiabuu/pi-pretty 0.6.18 → 0.6.20
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 +22 -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 +52 -34
- package/dist/index.js.map +1 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +4 -4
- package/dist/render.js.map +1 -1
- package/dist/tools/bash.js +1 -1
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/find.d.ts.map +1 -1
- package/dist/tools/find.js +1 -10
- package/dist/tools/find.js.map +1 -1
- package/dist/tools/grep.js +1 -1
- package/dist/tools/grep.js.map +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.map +1 -1
- package/dist/tools/read.js +48 -14
- package/dist/tools/read.js.map +1 -1
- package/dist/types.d.ts +5 -8
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/helpers.ts +0 -49
- package/src/index.ts +21 -35
- package/src/render.ts +2 -11
- package/src/tools/bash.ts +2 -2
- package/src/tools/find.ts +1 -9
- package/src/tools/grep.ts +2 -2
- package/src/tools/ls.ts +3 -12
- package/src/tools/read.ts +51 -21
- package/src/types.ts +6 -12
- package/src/collapsed-hint.ts +0 -14
- package/src/expand.ts +0 -10
- package/src/image.ts +0 -129
package/dist/tools/ls.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../src/tools/ls.ts"],"names":[],"mappings":";AAAA,iEAAiE;;
|
|
1
|
+
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../src/tools/ls.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/read.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAmB,YAAY,EAAoC,MAAM,iCAAiC,CAAC;AAevH,OAAO,KAAK,EAA8B,UAAU,EAA0B,MAAM,aAAa,CAAC;AAgClG,wBAAgB,gBAAgB,CAC/B,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,OAAO,EACpB,OAAO,EAAE,UAAU,EACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK;IAAE,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACjF,IAAI,CAuJN"}
|
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
|
}
|
|
@@ -49,7 +72,7 @@ function registerReadTool(pi, cwd, _fffService, sdkTool, TextComp) {
|
|
|
49
72
|
}
|
|
50
73
|
const path = String(args.path ?? "");
|
|
51
74
|
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));
|
|
75
|
+
text.setText((0, render_js_1.fillToolBackground)(`\n${config_js_1.TOOL_RESULT_INDENT}${label} ${theme.fg("toolTitle", path)}\n`, config_js_1.BG_ERROR));
|
|
53
76
|
return text;
|
|
54
77
|
},
|
|
55
78
|
renderResult(result, _opt, theme, ctx) {
|
|
@@ -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/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;
|
|
@@ -104,10 +102,15 @@ export interface SdkToolDef {
|
|
|
104
102
|
}
|
|
105
103
|
export interface SdkTools {
|
|
106
104
|
createReadTool?: (cwd: string) => SdkToolDef;
|
|
105
|
+
createReadToolDefinition?: (cwd: string) => SdkToolDef;
|
|
107
106
|
createBashTool?: (cwd: string) => SdkToolDef;
|
|
107
|
+
createBashToolDefinition?: (cwd: string) => SdkToolDef;
|
|
108
108
|
createLsTool?: (cwd: string) => SdkToolDef;
|
|
109
|
+
createLsToolDefinition?: (cwd: string) => SdkToolDef;
|
|
109
110
|
createFindTool?: (cwd: string) => SdkToolDef;
|
|
111
|
+
createFindToolDefinition?: (cwd: string) => SdkToolDef;
|
|
110
112
|
createGrepTool?: (cwd: string) => SdkToolDef;
|
|
113
|
+
createGrepToolDefinition?: (cwd: string) => SdkToolDef;
|
|
111
114
|
getAgentDir?: () => string;
|
|
112
115
|
}
|
|
113
116
|
/** Minimal FFF service shape for tools that only need fileSearch. */
|
|
@@ -131,12 +134,6 @@ export interface CursorStore {
|
|
|
131
134
|
store(cursor: unknown): string;
|
|
132
135
|
get(id: string): unknown | undefined;
|
|
133
136
|
}
|
|
134
|
-
export interface ConstraintParseResult {
|
|
135
|
-
ok: boolean;
|
|
136
|
-
globs: string[];
|
|
137
|
-
tokens: string[];
|
|
138
|
-
error?: string;
|
|
139
|
-
}
|
|
140
137
|
export interface PiPrettyDeps {
|
|
141
138
|
sdk?: SdkTools;
|
|
142
139
|
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.20",
|
|
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",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
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,10 +9,8 @@
|
|
|
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";
|
|
13
|
+
import * as hostSdk from "@earendil-works/pi-coding-agent";
|
|
16
14
|
import { createFffAutocompleteProvider } from "./autocomplete.js";
|
|
17
15
|
import { getDefaultAgentDir } from "./config.js";
|
|
18
16
|
import { type FffService, getSharedFffService } from "./fff.js";
|
|
@@ -21,7 +19,7 @@ import { registerFindTool } from "./tools/find.js";
|
|
|
21
19
|
import { registerGrepTool } from "./tools/grep.js";
|
|
22
20
|
import { registerLsTool } from "./tools/ls.js";
|
|
23
21
|
import { registerReadTool } from "./tools/read.js";
|
|
24
|
-
import type { PiPrettyDeps } from "./types.js";
|
|
22
|
+
import type { PiPrettyDeps, SdkTools } from "./types.js";
|
|
25
23
|
|
|
26
24
|
// ---------------------------------------------------------------------------
|
|
27
25
|
// Config
|
|
@@ -142,6 +140,8 @@ export default async function piPrettyExtension(pi: ExtensionAPI, deps?: PiPrett
|
|
|
142
140
|
// ------------------------------------------------------------------
|
|
143
141
|
|
|
144
142
|
pi.on("session_start", async (_event: unknown, ctx: ExtensionContext) => {
|
|
143
|
+
if (ctx.mode === "tui") ctx.ui.setToolsExpanded(false);
|
|
144
|
+
|
|
145
145
|
if (!fffService) return;
|
|
146
146
|
|
|
147
147
|
try {
|
|
@@ -178,38 +178,24 @@ export default async function piPrettyExtension(pi: ExtensionAPI, deps?: PiPrett
|
|
|
178
178
|
});
|
|
179
179
|
|
|
180
180
|
// ------------------------------------------------------------------
|
|
181
|
-
// Resolve SDK tools
|
|
181
|
+
// Resolve SDK tools
|
|
182
182
|
// ------------------------------------------------------------------
|
|
183
|
-
//
|
|
184
|
-
//
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
sdk = mod;
|
|
200
|
-
createReadTool = sdk.createReadToolDefinition ?? sdk.createReadTool;
|
|
201
|
-
createBashTool = sdk.createBashToolDefinition ?? sdk.createBashTool;
|
|
202
|
-
createLsTool = sdk.createLsToolDefinition ?? sdk.createLsTool;
|
|
203
|
-
createFindTool = sdk.createFindToolDefinition ?? sdk.createFindTool;
|
|
204
|
-
createGrepTool = sdk.createGrepToolDefinition ?? sdk.createGrepTool;
|
|
205
|
-
} catch {
|
|
206
|
-
createReadTool = undefined;
|
|
207
|
-
createBashTool = undefined;
|
|
208
|
-
createLsTool = undefined;
|
|
209
|
-
createFindTool = undefined;
|
|
210
|
-
createGrepTool = undefined;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
183
|
+
// Pi aliases static SDK imports to its host package for managed extensions.
|
|
184
|
+
// Native dynamic imports bypass that alias because the managed npm root omits
|
|
185
|
+
// Pi peer dependencies.
|
|
186
|
+
|
|
187
|
+
const sdk: SdkTools = deps?.sdk ?? {
|
|
188
|
+
createReadToolDefinition: hostSdk.createReadToolDefinition,
|
|
189
|
+
createBashToolDefinition: hostSdk.createBashToolDefinition,
|
|
190
|
+
createLsToolDefinition: hostSdk.createLsToolDefinition,
|
|
191
|
+
createFindToolDefinition: hostSdk.createFindToolDefinition,
|
|
192
|
+
createGrepToolDefinition: hostSdk.createGrepToolDefinition,
|
|
193
|
+
};
|
|
194
|
+
const createReadTool = sdk.createReadToolDefinition ?? sdk.createReadTool;
|
|
195
|
+
const createBashTool = sdk.createBashToolDefinition ?? sdk.createBashTool;
|
|
196
|
+
const createLsTool = sdk.createLsToolDefinition ?? sdk.createLsTool;
|
|
197
|
+
const createFindTool = sdk.createFindToolDefinition ?? sdk.createFindTool;
|
|
198
|
+
const createGrepTool = sdk.createGrepToolDefinition ?? sdk.createGrepTool;
|
|
213
199
|
|
|
214
200
|
// ------------------------------------------------------------------
|
|
215
201
|
// Tool registration
|
package/src/render.ts
CHANGED
|
@@ -11,7 +11,7 @@ import type { AgentToolResult } from "@earendil-works/pi-coding-agent";
|
|
|
11
11
|
// static top-level import/require, not function-body require — see tui-text.ts).
|
|
12
12
|
import { Text as TuiText, truncateToWidth } from "@earendil-works/pi-tui";
|
|
13
13
|
import { codeToANSI } from "@shikijs/cli";
|
|
14
|
-
import type { BundledLanguage } from "shiki";
|
|
14
|
+
import type { BundledLanguage, BundledTheme } from "shiki";
|
|
15
15
|
import {
|
|
16
16
|
BG_BASE,
|
|
17
17
|
BG_ERROR,
|
|
@@ -20,9 +20,7 @@ import {
|
|
|
20
20
|
dirIcon,
|
|
21
21
|
FG_BLUE,
|
|
22
22
|
FG_DIM,
|
|
23
|
-
FG_GREEN,
|
|
24
23
|
FG_LNUM,
|
|
25
|
-
FG_RED,
|
|
26
24
|
FG_RULE,
|
|
27
25
|
FG_YELLOW,
|
|
28
26
|
MAX_HL_CHARS,
|
|
@@ -38,7 +36,6 @@ import {
|
|
|
38
36
|
ELAPSED_KEY,
|
|
39
37
|
formatCharCount,
|
|
40
38
|
formatElapsedMs,
|
|
41
|
-
humanSize,
|
|
42
39
|
normalizeLineEndings,
|
|
43
40
|
} from "./helpers.js";
|
|
44
41
|
import type { RenderCtxLike as RenderContext, ThemeLike } from "./types.js";
|
|
@@ -52,8 +49,6 @@ function _truncateToWidth(text: string, maxWidth: number, ellipsis?: string, pad
|
|
|
52
49
|
// Shiki ANSI cache
|
|
53
50
|
// ---------------------------------------------------------------------------
|
|
54
51
|
|
|
55
|
-
import type { BundledTheme } from "shiki";
|
|
56
|
-
|
|
57
52
|
const DEFAULT_THEME: BundledTheme = "github-dark";
|
|
58
53
|
|
|
59
54
|
function resolveTheme(): BundledTheme {
|
|
@@ -171,7 +166,7 @@ export function fillToolBackground(text: string, bg = BG_BASE, width?: number):
|
|
|
171
166
|
const stripped = preserveBoxBackground(line);
|
|
172
167
|
return bg ? bg + stripped : stripped;
|
|
173
168
|
}
|
|
174
|
-
const plainLead = line.replace(
|
|
169
|
+
const plainLead = line.replace(ANSI_CAPTURE_RE, "");
|
|
175
170
|
const skipPad = line.startsWith(TOOL_RESULT_INDENT) || plainLead.startsWith(TOOL_RESULT_INDENT);
|
|
176
171
|
const fitted = _truncateToWidth(line, width, "", !skipPad);
|
|
177
172
|
const stripped = preserveBoxBackground(fitted);
|
|
@@ -180,10 +175,6 @@ export function fillToolBackground(text: string, bg = BG_BASE, width?: number):
|
|
|
180
175
|
.join("\n");
|
|
181
176
|
}
|
|
182
177
|
|
|
183
|
-
function rule(w: number): string {
|
|
184
|
-
return `${FG_RULE}${"─".repeat(w)}${RST}`;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
178
|
function lnum(n: number, w: number): string {
|
|
188
179
|
const v = String(n);
|
|
189
180
|
return `${FG_LNUM}${" ".repeat(Math.max(0, w - v.length))}${v}${RST}`;
|
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";
|
|
@@ -66,7 +66,7 @@ export function registerBashTool(
|
|
|
66
66
|
: rawCmd;
|
|
67
67
|
const commandLabel = theme.fg(ctx.isError ? "error" : "toolTitle", theme.bold(`$ ${cmd}`));
|
|
68
68
|
text.setText(
|
|
69
|
-
fillToolBackground(`\n${TOOL_RESULT_INDENT}${commandLabel}${t}`, undefined, ctx.expanded ? undefined : tw),
|
|
69
|
+
fillToolBackground(`\n${TOOL_RESULT_INDENT}${commandLabel}${t}\n`, undefined, ctx.expanded ? undefined : tw),
|
|
70
70
|
);
|
|
71
71
|
return text;
|
|
72
72
|
},
|
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,
|
|
@@ -158,7 +150,7 @@ export function registerFindTool(
|
|
|
158
150
|
const pathPart = theme.fg("toolOutput", pathArg);
|
|
159
151
|
const limitPart = limit !== undefined && limit !== null ? theme.fg("dim", ` limit ${limit}`) : "";
|
|
160
152
|
const out = `${findLabel} ${patternPart}${inPart}${pathPart}${limitPart}`;
|
|
161
|
-
text.setText(fillToolBackground(`\n${TOOL_RESULT_INDENT}${out}`, ctx.isError ? BG_ERROR : undefined));
|
|
153
|
+
text.setText(fillToolBackground(`\n${TOOL_RESULT_INDENT}${out}\n`, ctx.isError ? BG_ERROR : undefined));
|
|
162
154
|
return text;
|
|
163
155
|
},
|
|
164
156
|
|
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";
|
|
@@ -111,7 +111,7 @@ export function registerGrepTool(
|
|
|
111
111
|
if (limit !== undefined && limit !== null) out += theme.fg("dim", ` limit ${limit}`);
|
|
112
112
|
if (literal) out += theme.fg("dim", ` (literal)`);
|
|
113
113
|
if (caseInsensitive) out += theme.fg("dim", ` (case-insensitive)`);
|
|
114
|
-
text.setText(fillToolBackground(`\n${TOOL_RESULT_INDENT}${out}`, ctx.isError ? BG_ERROR : undefined));
|
|
114
|
+
text.setText(fillToolBackground(`\n${TOOL_RESULT_INDENT}${out}\n`, ctx.isError ? BG_ERROR : undefined));
|
|
115
115
|
return text;
|
|
116
116
|
},
|
|
117
117
|
|
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>>;
|
|
@@ -60,7 +51,7 @@ export function registerLsTool(
|
|
|
60
51
|
let out = theme.fg("toolTitle", theme.bold("ls"));
|
|
61
52
|
if (path) out += ` ${theme.fg("accent", path)}`;
|
|
62
53
|
if (limit !== undefined && limit !== null) out += theme.fg("toolOutput", ` (limit ${limit})`);
|
|
63
|
-
text.setText(fillToolBackground(`\n${TOOL_RESULT_INDENT}${out}`, ctx.isError ? BG_ERROR : undefined));
|
|
54
|
+
text.setText(fillToolBackground(`\n${TOOL_RESULT_INDENT}${out}\n`, ctx.isError ? BG_ERROR : undefined));
|
|
64
55
|
return text;
|
|
65
56
|
},
|
|
66
57
|
|