@heyhuynhgiabuu/pi-pretty 0.6.23 → 0.6.25

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 (54) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +51 -1
  3. package/dist/autocomplete.js +1 -4
  4. package/dist/autocomplete.js.map +1 -1
  5. package/dist/config.d.ts +19 -0
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +141 -118
  8. package/dist/config.js.map +1 -1
  9. package/dist/fff-helpers.js +2 -7
  10. package/dist/fff-helpers.js.map +1 -1
  11. package/dist/fff.js +16 -23
  12. package/dist/fff.js.map +1 -1
  13. package/dist/find-glob.js +2 -6
  14. package/dist/find-glob.js.map +1 -1
  15. package/dist/helpers.js +11 -21
  16. package/dist/helpers.js.map +1 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +182 -59
  19. package/dist/index.js.map +1 -1
  20. package/dist/notices.js +1 -4
  21. package/dist/notices.js.map +1 -1
  22. package/dist/render.js +78 -96
  23. package/dist/render.js.map +1 -1
  24. package/dist/session-color.d.ts +30 -0
  25. package/dist/session-color.d.ts.map +1 -0
  26. package/dist/session-color.js +170 -0
  27. package/dist/session-color.js.map +1 -0
  28. package/dist/tools/bash.js +26 -29
  29. package/dist/tools/bash.js.map +1 -1
  30. package/dist/tools/find.js +31 -34
  31. package/dist/tools/find.js.map +1 -1
  32. package/dist/tools/grep.js +22 -25
  33. package/dist/tools/grep.js.map +1 -1
  34. package/dist/tools/labels.js +1 -4
  35. package/dist/tools/labels.js.map +1 -1
  36. package/dist/tools/ls.js +18 -21
  37. package/dist/tools/ls.js.map +1 -1
  38. package/dist/tools/metrics.js +4 -7
  39. package/dist/tools/metrics.js.map +1 -1
  40. package/dist/tools/read.js +35 -38
  41. package/dist/tools/read.js.map +1 -1
  42. package/dist/tui-text.js +5 -9
  43. package/dist/tui-text.js.map +1 -1
  44. package/dist/types.js +1 -2
  45. package/dist/types.js.map +1 -1
  46. package/dist/working-indicator.d.ts +184 -0
  47. package/dist/working-indicator.d.ts.map +1 -0
  48. package/dist/working-indicator.js +524 -0
  49. package/dist/working-indicator.js.map +1 -0
  50. package/package.json +7 -6
  51. package/src/config.ts +48 -0
  52. package/src/index.ts +177 -2
  53. package/src/session-color.ts +172 -0
  54. package/src/working-indicator.ts +691 -0
@@ -1,12 +1,8 @@
1
- "use strict";
2
1
  /**
3
2
  * FFF helper functions — extracted for testability.
4
3
  *
5
4
  * Pure functions and classes used by the FFF integration in index.ts.
6
5
  */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.CursorStore = void 0;
9
- exports.fffFormatGrepText = fffFormatGrepText;
10
6
  function sanitizeGrepRecordContent(text) {
11
7
  let content = text;
12
8
  if (content.endsWith("\r\n"))
@@ -23,7 +19,7 @@ function truncateGrepRecordContent(text) {
23
19
  * Store for FFF grep pagination cursors.
24
20
  * Evicts oldest entry when exceeding maxSize.
25
21
  */
26
- class CursorStore {
22
+ export class CursorStore {
27
23
  cursors = new Map();
28
24
  counter = 0;
29
25
  maxSize;
@@ -47,12 +43,11 @@ class CursorStore {
47
43
  return this.cursors.size;
48
44
  }
49
45
  }
50
- exports.CursorStore = CursorStore;
51
46
  /**
52
47
  * Convert FFF GrepResult items to ripgrep-style "file:line:content" text.
53
48
  * This ensures pi-pretty's renderGrepResults works unchanged.
54
49
  */
55
- function fffFormatGrepText(items, limit) {
50
+ export function fffFormatGrepText(items, limit) {
56
51
  const capped = items.slice(0, limit);
57
52
  if (!capped.length)
58
53
  return "No matches found";
@@ -1 +1 @@
1
- {"version":3,"file":"fff-helpers.js","sourceRoot":"","sources":["../src/fff-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fff-helpers.js","sourceRoot":"","sources":["../src/fff-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,SAAS,yBAAyB,CAAC,IAAY;IAC9C,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACxD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE1F,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY;IAC9C,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,WAAW;IACf,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IACxC,OAAO,GAAG,CAAC,CAAC;IACZ,OAAO,CAAS;IAExB,YAAY,OAAO,GAAG,GAAG;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,MAAkB;QACvB,MAAM,EAAE,GAAG,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC/C,IAAI,KAAK;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,EAAE,CAAC;IACX,CAAC;IAED,GAAG,CAAC,EAAU;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1B,CAAC;CACD;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAkB,EAAE,KAAa;IAClE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,kBAAkB,CAAC;IAE9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,WAAW,GAAG,EAAE,CAAC;IAErB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;YACxC,IAAI,WAAW;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC;QAClC,CAAC;QACD,IAAI,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC;YAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrD,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,YAAY,IAAI,SAAS,GAAG,CAAC,IAAI,yBAAyB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YACjH,CAAC;QACF,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,UAAU,IAAI,yBAAyB,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACxG,IAAI,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpD,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,YAAY,IAAI,SAAS,GAAG,CAAC,IAAI,yBAAyB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAChH,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC"}
package/dist/fff.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * pi-pretty: FFF lifecycle management.
4
3
  *
@@ -6,16 +5,12 @@
6
5
  * Tools check `isAvailable` and use `finder` directly for search operations.
7
6
  * Graceful fallback: if FFF is not installed or fails, tools degrade to SDK.
8
7
  */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.FffService = exports.CursorStore = void 0;
11
- exports.getSharedFffService = getSharedFffService;
12
- exports.resetSharedFffServiceForTests = resetSharedFffServiceForTests;
13
- const node_fs_1 = require("node:fs");
14
- const node_path_1 = require("node:path");
8
+ import { mkdirSync } from "node:fs";
9
+ import { join } from "node:path";
15
10
  // ---------------------------------------------------------------------------
16
11
  // Cursor store — pagination cursors for grep
17
12
  // ---------------------------------------------------------------------------
18
- class CursorStore {
13
+ export class CursorStore {
19
14
  cursors = new Map();
20
15
  counter = 0;
21
16
  maxSize;
@@ -39,12 +34,11 @@ class CursorStore {
39
34
  return this.cursors.size;
40
35
  }
41
36
  }
42
- exports.CursorStore = CursorStore;
43
37
  // ---------------------------------------------------------------------------
44
38
  // FffService — wraps a single FileFinder instance
45
39
  // ---------------------------------------------------------------------------
46
40
  const SHARED_FFF_SERVICE_KEY = Symbol.for("pi-pretty.fff-service");
47
- function getSharedFffService(fffModule, agentDir) {
41
+ export function getSharedFffService(fffModule, agentDir) {
48
42
  const sharedGlobal = globalThis;
49
43
  const existing = sharedGlobal[SHARED_FFF_SERVICE_KEY];
50
44
  if (existing) {
@@ -55,12 +49,12 @@ function getSharedFffService(fffModule, agentDir) {
55
49
  sharedGlobal[SHARED_FFF_SERVICE_KEY] = { service };
56
50
  return service;
57
51
  }
58
- function resetSharedFffServiceForTests() {
52
+ export function resetSharedFffServiceForTests() {
59
53
  const sharedGlobal = globalThis;
60
54
  sharedGlobal[SHARED_FFF_SERVICE_KEY]?.service.destroy();
61
55
  delete sharedGlobal[SHARED_FFF_SERVICE_KEY];
62
56
  }
63
- class FffService {
57
+ export class FffService {
64
58
  finder = null;
65
59
  partialIndex = false;
66
60
  cursorStore = new CursorStore();
@@ -74,9 +68,9 @@ class FffService {
74
68
  if (fffModule)
75
69
  this.fffModule = fffModule;
76
70
  if (agentDir) {
77
- this.dbDir = (0, node_path_1.join)(agentDir, "pi-pretty", "fff");
71
+ this.dbDir = join(agentDir, "pi-pretty", "fff");
78
72
  try {
79
- (0, node_fs_1.mkdirSync)(this.dbDir, { recursive: true });
73
+ mkdirSync(this.dbDir, { recursive: true });
80
74
  }
81
75
  catch {
82
76
  // FFF can still run without persistent frecency/history paths.
@@ -98,9 +92,9 @@ class FffService {
98
92
  const mod = await import("@ff-labs/fff-node");
99
93
  this.fffModule = mod;
100
94
  if (!this.dbDir && process.env.HOME) {
101
- this.dbDir = (0, node_path_1.join)(process.env.HOME, ".pi/agent", "pi-pretty", "fff");
95
+ this.dbDir = join(process.env.HOME, ".pi/agent", "pi-pretty", "fff");
102
96
  try {
103
- (0, node_fs_1.mkdirSync)(this.dbDir, { recursive: true });
97
+ mkdirSync(this.dbDir, { recursive: true });
104
98
  }
105
99
  catch {
106
100
  /* ignore */
@@ -147,23 +141,23 @@ class FffService {
147
141
  throw new Error("FFF module is not loaded");
148
142
  const result = this.fffModule.FileFinder.create({
149
143
  basePath: cwd,
150
- frecencyDbPath: dbDir ? (0, node_path_1.join)(dbDir, "frecency.mdb") : "",
151
- historyDbPath: dbDir ? (0, node_path_1.join)(dbDir, "history.mdb") : "",
144
+ frecencyDbPath: dbDir ? join(dbDir, "frecency.mdb") : "",
145
+ historyDbPath: dbDir ? join(dbDir, "history.mdb") : "",
152
146
  aiMode: true,
153
147
  });
154
148
  if (result.ok || !isAlreadyOpenError(result.error) || !dbDir)
155
149
  return result;
156
- const isolatedDir = (0, node_path_1.join)(dbDir, `runtime-${process.pid}-${Date.now()}`);
150
+ const isolatedDir = join(dbDir, `runtime-${process.pid}-${Date.now()}`);
157
151
  try {
158
- (0, node_fs_1.mkdirSync)(isolatedDir, { recursive: true });
152
+ mkdirSync(isolatedDir, { recursive: true });
159
153
  }
160
154
  catch {
161
155
  return result;
162
156
  }
163
157
  return this.fffModule.FileFinder.create({
164
158
  basePath: cwd,
165
- frecencyDbPath: (0, node_path_1.join)(isolatedDir, "frecency.mdb"),
166
- historyDbPath: (0, node_path_1.join)(isolatedDir, "history.mdb"),
159
+ frecencyDbPath: join(isolatedDir, "frecency.mdb"),
160
+ historyDbPath: join(isolatedDir, "history.mdb"),
167
161
  aiMode: true,
168
162
  });
169
163
  }
@@ -182,7 +176,6 @@ class FffService {
182
176
  return this.cursorStore;
183
177
  }
184
178
  }
185
- exports.FffService = FffService;
186
179
  function isAlreadyOpenError(error) {
187
180
  return /environment already open/i.test(error);
188
181
  }
package/dist/fff.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fff.js","sourceRoot":"","sources":["../src/fff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fff.js","sourceRoot":"","sources":["../src/fff.ts"],"names":[],"mappings":"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"}
package/dist/find-glob.js CHANGED
@@ -1,13 +1,9 @@
1
- "use strict";
2
1
  /**
3
2
  * Glob normalization for FFF glob() (repo-relative paths).
4
3
  * Aligns with Pi SDK find: bare *.ts searches under cwd recursively.
5
4
  */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.normalizeFindGlobPattern = normalizeFindGlobPattern;
8
- exports.isLikelyGlobPattern = isLikelyGlobPattern;
9
5
  /** Do not collapse double-star-slash-star to single star. */
10
- function normalizeFindGlobPattern(pattern) {
6
+ export function normalizeFindGlobPattern(pattern) {
11
7
  const p = pattern.trim();
12
8
  if (!p)
13
9
  return p;
@@ -20,7 +16,7 @@ function normalizeFindGlobPattern(pattern) {
20
16
  return p;
21
17
  }
22
18
  /** Patterns where an empty FFF result is suspicious — try SDK find (fd). */
23
- function isLikelyGlobPattern(pattern) {
19
+ export function isLikelyGlobPattern(pattern) {
24
20
  const p = pattern.trim();
25
21
  if (!p)
26
22
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"find-glob.js","sourceRoot":"","sources":["../src/find-glob.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAGH,4DAOC;AAGD,kDAIC;AAfD,6DAA6D;AAC7D,SAAgB,wBAAwB,CAAC,OAAe;IACvD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAChC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACrD,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC;IACxC,OAAO,CAAC,CAAC;AACV,CAAC;AAED,4EAA4E;AAC5E,SAAgB,mBAAmB,CAAC,OAAe;IAClD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"find-glob.js","sourceRoot":"","sources":["../src/find-glob.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6DAA6D;AAC7D,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACvD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAChC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACrD,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC;IACxC,OAAO,CAAC,CAAC;AACV,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,mBAAmB,CAAC,OAAe;IAClD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC"}
package/dist/helpers.js CHANGED
@@ -1,32 +1,22 @@
1
- "use strict";
2
1
  /**
3
2
  * pi-pretty: utility helpers.
4
3
  */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CHARS_KEY = exports.ELAPSED_KEY = void 0;
7
- exports.normalizeLineEndings = normalizeLineEndings;
8
- exports.shortPath = shortPath;
9
- exports.stripBashExitStatusLine = stripBashExitStatusLine;
10
- exports.formatElapsedMs = formatElapsedMs;
11
- exports.formatCharCount = formatCharCount;
12
- exports.inferBashExitCode = inferBashExitCode;
13
- exports.compactErrorLines = compactErrorLines;
14
- const node_path_1 = require("node:path");
4
+ import { relative } from "node:path";
15
5
  // ---------------------------------------------------------------------------
16
6
  // String / normalization
17
7
  // ---------------------------------------------------------------------------
18
- function normalizeLineEndings(text) {
8
+ export function normalizeLineEndings(text) {
19
9
  return text.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
20
10
  }
21
- function shortPath(cwd, home, p) {
11
+ export function shortPath(cwd, home, p) {
22
12
  if (!p)
23
13
  return "";
24
- const r = (0, node_path_1.relative)(cwd, p);
14
+ const r = relative(cwd, p);
25
15
  if (!r.startsWith("..") && !r.startsWith("/"))
26
16
  return r;
27
17
  return p.replace(home, "~");
28
18
  }
29
- function stripBashExitStatusLine(text) {
19
+ export function stripBashExitStatusLine(text) {
30
20
  return normalizeLineEndings(text)
31
21
  .split("\n")
32
22
  .filter((line) => !/^Command exited with code \d+$/i.test(line.trim()))
@@ -35,7 +25,7 @@ function stripBashExitStatusLine(text) {
35
25
  // ---------------------------------------------------------------------------
36
26
  // Tool metrics
37
27
  // ---------------------------------------------------------------------------
38
- function formatElapsedMs(ms) {
28
+ export function formatElapsedMs(ms) {
39
29
  if (typeof ms !== "number" || !Number.isFinite(ms))
40
30
  return "";
41
31
  if (ms < 1000)
@@ -43,7 +33,7 @@ function formatElapsedMs(ms) {
43
33
  const s = ms / 1000;
44
34
  return s < 10 ? `${s.toFixed(1)}s` : `${Math.round(s)}s`;
45
35
  }
46
- function formatCharCount(chars) {
36
+ export function formatCharCount(chars) {
47
37
  if (typeof chars !== "number" || !Number.isFinite(chars) || chars <= 0)
48
38
  return "";
49
39
  if (chars < 1000)
@@ -52,12 +42,12 @@ function formatCharCount(chars) {
52
42
  return `${(chars / 1000).toFixed(1)}k chars`;
53
43
  return `${Math.round(chars / 1000)}k chars`;
54
44
  }
55
- exports.ELAPSED_KEY = "__prettyElapsedMs";
56
- exports.CHARS_KEY = "__prettyOutputChars";
45
+ export const ELAPSED_KEY = "__prettyElapsedMs";
46
+ export const CHARS_KEY = "__prettyOutputChars";
57
47
  // ---------------------------------------------------------------------------
58
48
  // Infer bash exit code
59
49
  // ---------------------------------------------------------------------------
60
- function inferBashExitCode(text, fallback) {
50
+ export function inferBashExitCode(text, fallback) {
61
51
  const exitMatch = text.match(/(?:exit code|exited with(?: code)?|exit status)[:\s]*(\d+)/i);
62
52
  if (exitMatch)
63
53
  return Number(exitMatch[1]);
@@ -68,7 +58,7 @@ function inferBashExitCode(text, fallback) {
68
58
  // ---------------------------------------------------------------------------
69
59
  // Compact error lines
70
60
  // ---------------------------------------------------------------------------
71
- function compactErrorLines(error) {
61
+ export function compactErrorLines(error) {
72
62
  const compactedLines = [];
73
63
  let previousBlank = false;
74
64
  for (const line of normalizeLineEndings(error).trim().split("\n")) {
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAA6C,MAAM,iCAAiC,CAAC;AAU/G,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,YAAY,CAAC;AAgBzD,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,wBAA8B,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmLpG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EACX,YAAY,EAKZ,MAAM,iCAAiC,CAAC;AAUzC,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,YAAY,CAAC;AA0BzD,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,wBAA8B,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgVpG"}
package/dist/index.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * pi-pretty — Pretty terminal output for pi built-in tools.
4
3
  *
@@ -9,61 +8,29 @@
9
8
  * • FFF-accelerated find/grep with SDK fallback
10
9
  * • Custom ANSI rendering for all tools
11
10
  */
12
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- var desc = Object.getOwnPropertyDescriptor(m, k);
15
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
- desc = { enumerable: true, get: function() { return m[k]; } };
17
- }
18
- Object.defineProperty(o, k2, desc);
19
- }) : (function(o, m, k, k2) {
20
- if (k2 === undefined) k2 = k;
21
- o[k2] = m[k];
22
- }));
23
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
- Object.defineProperty(o, "default", { enumerable: true, value: v });
25
- }) : function(o, v) {
26
- o["default"] = v;
27
- });
28
- var __importStar = (this && this.__importStar) || (function () {
29
- var ownKeys = function(o) {
30
- ownKeys = Object.getOwnPropertyNames || function (o) {
31
- var ar = [];
32
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
- return ar;
34
- };
35
- return ownKeys(o);
36
- };
37
- return function (mod) {
38
- if (mod && mod.__esModule) return mod;
39
- var result = {};
40
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
- __setModuleDefault(result, mod);
42
- return result;
43
- };
44
- })();
45
- Object.defineProperty(exports, "__esModule", { value: true });
46
- exports.default = piPrettyExtension;
47
- const hostSdk = __importStar(require("@earendil-works/pi-coding-agent"));
48
- const autocomplete_js_1 = require("./autocomplete.js");
49
- const config_js_1 = require("./config.js");
50
- const fff_js_1 = require("./fff.js");
51
- const bash_js_1 = require("./tools/bash.js");
52
- const find_js_1 = require("./tools/find.js");
53
- const grep_js_1 = require("./tools/grep.js");
54
- const ls_js_1 = require("./tools/ls.js");
55
- const read_js_1 = require("./tools/read.js");
11
+ import { readFileSync } from "node:fs";
12
+ import { join } from "node:path";
13
+ import * as hostSdk from "@earendil-works/pi-coding-agent";
14
+ import { createFffAutocompleteProvider } from "./autocomplete.js";
15
+ import { applyConfig, getDefaultAgentDir, loadConfig, normalizeToolList, resolveToolSets } from "./config.js";
16
+ import { getSharedFffService } from "./fff.js";
17
+ import { registerBashTool } from "./tools/bash.js";
18
+ import { registerFindTool } from "./tools/find.js";
19
+ import { registerGrepTool } from "./tools/grep.js";
20
+ import { registerLsTool } from "./tools/ls.js";
21
+ import { registerReadTool } from "./tools/read.js";
22
+ import { createThinkingLabelAnimator, installWorkingIndicator, resolveThinkingIndicatorSettings, resolveWorkingIndicatorSettings, thinkingBlockActive, WORKING_INTERVAL_MS, } from "./working-indicator.js";
56
23
  // ---------------------------------------------------------------------------
57
24
  // Config
58
25
  // ---------------------------------------------------------------------------
59
26
  const DEFAULT_DISABLED_TOOLS = new Set(["ls"]);
60
27
  function envTools(name) {
61
- return new Set((0, config_js_1.normalizeToolList)((process.env[name] ?? "").split(",")));
28
+ return new Set(normalizeToolList((process.env[name] ?? "").split(",")));
62
29
  }
63
- async function piPrettyExtension(pi, deps) {
64
- const config = (0, config_js_1.loadConfig)();
65
- (0, config_js_1.applyConfig)(config);
66
- const { disabledTools, enabledTools } = (0, config_js_1.resolveToolSets)(envTools("PRETTY_DISABLE_TOOLS"), envTools("PRETTY_ENABLE_TOOLS"), config);
30
+ export default async function piPrettyExtension(pi, deps) {
31
+ const config = loadConfig();
32
+ applyConfig(config);
33
+ const { disabledTools, enabledTools } = resolveToolSets(envTools("PRETTY_DISABLE_TOOLS"), envTools("PRETTY_ENABLE_TOOLS"), config);
67
34
  const isToolEnabled = (name) => {
68
35
  const normalizedName = name.toLowerCase();
69
36
  return (!disabledTools.has(normalizedName) &&
@@ -78,8 +45,8 @@ async function piPrettyExtension(pi, deps) {
78
45
  // has proven crash-prone across host Pi versions. FFF commands and indexing
79
46
  // should still work even when SDK tool factories are unavailable.
80
47
  const maybeGetAgentDir = deps?.sdk?.getAgentDir;
81
- const agentDir = typeof maybeGetAgentDir === "function" ? maybeGetAgentDir() : (0, config_js_1.getDefaultAgentDir)();
82
- const fffService = (0, fff_js_1.getSharedFffService)(deps?.fffModule, agentDir);
48
+ const agentDir = typeof maybeGetAgentDir === "function" ? maybeGetAgentDir() : getDefaultAgentDir();
49
+ const fffService = getSharedFffService(deps?.fffModule, agentDir);
83
50
  // Text component for custom rendering (DI-friendly)
84
51
  const TextComp = deps?.TextComponent;
85
52
  // ------------------------------------------------------------------
@@ -146,9 +113,68 @@ async function piPrettyExtension(pi, deps) {
146
113
  // ------------------------------------------------------------------
147
114
  // Session lifecycle
148
115
  // ------------------------------------------------------------------
116
+ const workingSettings = resolveWorkingIndicatorSettings(config.workingIndicator);
117
+ const thinkingSettings = resolveThinkingIndicatorSettings(config.thinkingIndicator);
118
+ let workingController;
119
+ let thinkingAnimator;
120
+ let thinkingInterval;
121
+ let thinkingLastMessage;
122
+ let thinkingHiddenCache = true;
123
+ let thinkingHiddenCheckedAt = 0;
124
+ let workingSessionName;
125
+ let workingStreaming = false;
126
+ /** pi persists the thinking-visibility toggle as a top-level settings key. */
127
+ const thinkingHidden = () => {
128
+ try {
129
+ const dir = getDefaultAgentDir();
130
+ if (!dir)
131
+ return false;
132
+ const parsed = JSON.parse(readFileSync(join(dir, "settings.json"), "utf8"));
133
+ return parsed.hideThinkingBlock === true;
134
+ }
135
+ catch {
136
+ return false;
137
+ }
138
+ };
139
+ const safeSessionName = (ctx) => {
140
+ try {
141
+ return ctx.sessionManager?.getSessionName?.() ?? undefined;
142
+ }
143
+ catch {
144
+ return undefined;
145
+ }
146
+ };
147
+ // (Re-)install the widget: new session, reload, or session rename (the
148
+ // accent tint tracks the name, omp-style). Preserves streaming state so a
149
+ // mid-stream rename does not drop the row.
150
+ const installIndicator = async (ctx) => {
151
+ workingController?.dispose();
152
+ workingController = undefined;
153
+ try {
154
+ const controller = await installWorkingIndicator(ctx.ui, workingSettings, undefined, workingSessionName);
155
+ workingController = controller;
156
+ if (workingStreaming)
157
+ controller.start();
158
+ // Noop install (disabled/blank) after a previous install → restore pi's loader.
159
+ if (controller.frames.length === 0)
160
+ ctx.ui.setWorkingVisible?.(true);
161
+ }
162
+ catch (error) {
163
+ try {
164
+ ctx.ui.setWorkingVisible?.(true);
165
+ }
166
+ catch {
167
+ // Host without the API — nothing to restore.
168
+ }
169
+ ctx.ui?.notify?.(`pi-pretty working indicator failed: ${error instanceof Error ? error.message : String(error)}`, "warning");
170
+ }
171
+ };
149
172
  pi.on("session_start", async (_event, ctx) => {
150
- if (ctx.mode === "tui")
173
+ if (ctx.mode === "tui") {
151
174
  ctx.ui.setToolsExpanded(false);
175
+ workingSessionName = safeSessionName(ctx);
176
+ await installIndicator(ctx);
177
+ }
152
178
  if (!fffService)
153
179
  return;
154
180
  try {
@@ -168,13 +194,110 @@ async function piPrettyExtension(pi, deps) {
168
194
  setTimeout(() => ui?.setStatus?.("fff", undefined), 3000);
169
195
  }
170
196
  // Register FFF-backed @-mention autocomplete only after a finder exists.
171
- ctx.ui?.addAutocompleteProvider?.((current) => (0, autocomplete_js_1.createFffAutocompleteProvider)(current, () => fffService?.getFinder() ?? null));
197
+ ctx.ui?.addAutocompleteProvider?.((current) => createFffAutocompleteProvider(current, () => fffService?.getFinder() ?? null));
172
198
  }
173
199
  catch (error) {
174
200
  ctx.ui?.notify?.(`FFF init failed: ${error instanceof Error ? error.message : String(error)}`, "error");
175
201
  }
176
202
  });
203
+ // Re-apply the indicator when the session is (re)named so the accent tint
204
+ // tracks the name; omp derives the accent the same way.
205
+ pi.on("session_info_changed", async (event, ctx) => {
206
+ if (ctx.mode !== "tui")
207
+ return;
208
+ if (event.name === workingSessionName)
209
+ return;
210
+ workingSessionName = event.name;
211
+ if (workingSettings.enabled)
212
+ await installIndicator(ctx);
213
+ });
214
+ // Drive the widget with the streaming lifecycle (host loader is hidden).
215
+ pi.on("agent_start", async (_event, ctx) => {
216
+ if (ctx.mode !== "tui")
217
+ return;
218
+ workingStreaming = true;
219
+ workingController?.start();
220
+ });
221
+ const stopStreaming = async (_event, ctx) => {
222
+ if (ctx.mode !== "tui")
223
+ return;
224
+ workingStreaming = false;
225
+ workingController?.stop();
226
+ stopThinkingShimmer();
227
+ };
228
+ pi.on("agent_end", stopStreaming);
229
+ pi.on("agent_settled", stopStreaming);
230
+ const stopThinkingShimmer = () => {
231
+ if (thinkingInterval) {
232
+ clearInterval(thinkingInterval);
233
+ thinkingInterval = undefined;
234
+ }
235
+ thinkingAnimator?.restore();
236
+ thinkingAnimator = undefined;
237
+ thinkingLastMessage = undefined;
238
+ };
239
+ // Same 30fps cadence as the working row — but the interval lives ONLY while
240
+ // the streaming message is actively emitting a thinking block (each label
241
+ // change rebuilds chat children, so the moment text or tool calls stream the
242
+ // shimmer stops and pi's default label is restored).
243
+ const startThinkingShimmer = (ctx) => {
244
+ if (thinkingInterval || !thinkingSettings.enabled)
245
+ return;
246
+ try {
247
+ thinkingAnimator = createThinkingLabelAnimator(ctx.ui, workingSettings, workingSessionName, thinkingSettings);
248
+ thinkingHiddenCache = thinkingHidden();
249
+ thinkingHiddenCheckedAt = Date.now();
250
+ if (!thinkingHiddenCache) {
251
+ stopThinkingShimmer();
252
+ return;
253
+ }
254
+ thinkingAnimator.tick();
255
+ thinkingInterval = setInterval(() => {
256
+ if (!workingStreaming) {
257
+ stopThinkingShimmer();
258
+ return;
259
+ }
260
+ const now = Date.now();
261
+ if (now - thinkingHiddenCheckedAt > 500) {
262
+ thinkingHiddenCache = thinkingHidden();
263
+ thinkingHiddenCheckedAt = now;
264
+ if (!thinkingHiddenCache) {
265
+ stopThinkingShimmer();
266
+ return;
267
+ }
268
+ }
269
+ if (!thinkingBlockActive(thinkingLastMessage)) {
270
+ // Thinking phase over: restore pi's default label and stop.
271
+ stopThinkingShimmer();
272
+ return;
273
+ }
274
+ thinkingAnimator?.tick();
275
+ }, WORKING_INTERVAL_MS);
276
+ }
277
+ catch (error) {
278
+ stopThinkingShimmer();
279
+ ctx.ui?.notify?.(`pi-pretty thinking indicator failed: ${error instanceof Error ? error.message : String(error)}`, "warning");
280
+ }
281
+ };
282
+ // Remember the streaming message; lazily start the shimmer on the first
283
+ // thinking delta (thinkingHidden() is re-checked at most every 500ms).
284
+ pi.on("message_update", async (event, ctx) => {
285
+ if (ctx.mode !== "tui" || !workingStreaming)
286
+ return;
287
+ thinkingLastMessage = event.message;
288
+ if (thinkingInterval)
289
+ return;
290
+ if (!thinkingBlockActive(event.message))
291
+ return;
292
+ startThinkingShimmer(ctx);
293
+ });
177
294
  pi.on("session_shutdown", async () => {
295
+ // Tear down the widget animation; pi re-runs session_start (and our
296
+ // install) after resume or session switching.
297
+ workingController?.dispose();
298
+ workingController = undefined;
299
+ stopThinkingShimmer();
300
+ workingStreaming = false;
178
301
  // Intentionally keep the native FFF finder on session shutdown.
179
302
  // Pi can emit shutdown/start during resume or session switching while the
180
303
  // process keeps running. Native teardown, or dropping the JS handle while the
@@ -203,19 +326,19 @@ async function piPrettyExtension(pi, deps) {
203
326
  // Tool registration
204
327
  // ------------------------------------------------------------------
205
328
  if (isToolEnabled("read") && createReadTool) {
206
- (0, read_js_1.registerReadTool)(pi, cwd, null, createReadTool(cwd), TextComp);
329
+ registerReadTool(pi, cwd, null, createReadTool(cwd), TextComp);
207
330
  }
208
331
  if (isToolEnabled("bash") && createBashTool) {
209
- (0, bash_js_1.registerBashTool)(pi, cwd, null, createBashTool(cwd), TextComp);
332
+ registerBashTool(pi, cwd, null, createBashTool(cwd), TextComp);
210
333
  }
211
334
  if (isToolEnabled("ls") && createLsTool) {
212
- (0, ls_js_1.registerLsTool)(pi, cwd, null, createLsTool(cwd), TextComp);
335
+ registerLsTool(pi, cwd, null, createLsTool(cwd), TextComp);
213
336
  }
214
337
  if (isToolEnabled("find") && createFindTool) {
215
- (0, find_js_1.registerFindTool)(pi, cwd, fffService, createFindTool(cwd), TextComp);
338
+ registerFindTool(pi, cwd, fffService, createFindTool(cwd), TextComp);
216
339
  }
217
340
  if (isToolEnabled("grep") && createGrepTool) {
218
- (0, grep_js_1.registerGrepTool)(pi, cwd, fffService, createGrepTool(cwd), TextComp);
341
+ registerGrepTool(pi, cwd, fffService, createGrepTool(cwd), TextComp);
219
342
  }
220
343
  }
221
344
  //# sourceMappingURL=index.js.map