@xzzpig/pi-starline 0.5.0 → 0.7.1

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 (53) hide show
  1. package/FORK-CHANGELOG.md +28 -0
  2. package/README.md +91 -181
  3. package/dist/public.d.ts +5 -0
  4. package/extensions/starline/config.ts +156 -326
  5. package/extensions/starline/context-live.ts +33 -0
  6. package/extensions/starline/editor-cursor.ts +3 -0
  7. package/extensions/starline/extension-status.ts +9 -5
  8. package/extensions/starline/footer.ts +331 -528
  9. package/extensions/starline/fork-editor-cursor.ts +14 -0
  10. package/extensions/starline/format.ts +151 -20
  11. package/extensions/starline/git-live.ts +20 -0
  12. package/extensions/starline/git-probe.ts +40 -0
  13. package/extensions/starline/git-segments.ts +175 -0
  14. package/extensions/starline/git.ts +71 -0
  15. package/extensions/starline/icons.ts +17 -0
  16. package/extensions/starline/index.ts +188 -91
  17. package/extensions/starline/live-session.ts +164 -0
  18. package/extensions/starline/live-tps.ts +165 -0
  19. package/extensions/starline/mouse/bubble-dismiss.ts +82 -0
  20. package/extensions/starline/mouse/cursor-marker.ts +69 -0
  21. package/extensions/starline/mouse/editor-hit-test.ts +6 -3
  22. package/extensions/starline/mouse/explicit-expand-target.ts +89 -0
  23. package/extensions/starline/mouse/external-layer.ts +42 -0
  24. package/extensions/starline/mouse/fork-native-clipboard.ts +57 -0
  25. package/extensions/starline/mouse/fork-pill-mouse.ts +19 -0
  26. package/extensions/starline/mouse/fork-pointer-coordination.ts +10 -0
  27. package/extensions/starline/mouse/fork-transcript-copy.ts +54 -0
  28. package/extensions/starline/mouse/fork-wheel-compat.ts +22 -0
  29. package/extensions/starline/mouse/hint.ts +4 -4
  30. package/extensions/starline/mouse/index.ts +54 -24
  31. package/extensions/starline/mouse/pointer-events.ts +73 -0
  32. package/extensions/starline/mouse/pointer-shape.ts +138 -0
  33. package/extensions/starline/mouse/tool-box.ts +4 -0
  34. package/extensions/starline/mouse/transcript-copy.ts +76 -33
  35. package/extensions/starline/paste-collapse.ts +52 -13
  36. package/extensions/starline/pill-actions.ts +590 -0
  37. package/extensions/starline/pill-anchors.ts +26 -0
  38. package/extensions/starline/pill-api.ts +80 -0
  39. package/extensions/starline/pill-bubble.ts +607 -0
  40. package/extensions/starline/pill-config.ts +67 -9
  41. package/extensions/starline/pill.ts +102 -20
  42. package/extensions/starline/project-probe.ts +79 -0
  43. package/extensions/starline/prototype-patch-registry.ts +6 -1
  44. package/extensions/starline/queue-rows.ts +43 -0
  45. package/extensions/starline/settings-command.ts +124 -177
  46. package/extensions/starline/subagent-fleet.ts +246 -0
  47. package/extensions/starline/turn-clock.ts +81 -0
  48. package/extensions/starline/ui.ts +297 -156
  49. package/extensions/starline/working-indicator.ts +189 -0
  50. package/package.json +18 -12
  51. package/types/pill-api.d.ts +115 -0
  52. package/extensions/starline/editor-metadata-format.ts +0 -259
  53. package/extensions/starline/footer-format.ts +0 -279
@@ -0,0 +1,33 @@
1
+ /**
2
+ * The context numbers the bar last drew.
3
+ *
4
+ * The pill itself shows one figure; the rest — window size, tokens used, session
5
+ * totals, cache rate — is only on screen while the bubble is open. The footer
6
+ * already computes all of it every render (including the streaming estimate), so
7
+ * the bubble reads this instead of asking Pi again and disagreeing with the pill.
8
+ *
9
+ * Cleared on shutdown: a bubble opened after the session ended shows nothing
10
+ * rather than the previous session's tokens.
11
+ */
12
+
13
+ export type ContextSnapshot = {
14
+ /** Usage as a percentage of the window, when a window is known. */
15
+ percent?: number;
16
+ contextWindow?: number;
17
+ /** Tokens used, when known. */
18
+ tokens?: number;
19
+ /** Session totals, already formatted (`↑250k ↓193k`); "" when nothing ran. */
20
+ tokenLabel?: string;
21
+ /** Latest turn's cache hit rate, already formatted (`󰆼 99.9%`); "" when none. */
22
+ cacheLabel?: string;
23
+ };
24
+
25
+ let current: ContextSnapshot | undefined;
26
+
27
+ export function setActiveContextSnapshot(snapshot: ContextSnapshot | undefined): void {
28
+ current = snapshot;
29
+ }
30
+
31
+ export function activeContextSnapshot(): ContextSnapshot | undefined {
32
+ return current;
33
+ }
@@ -13,6 +13,8 @@
13
13
  * its shape and blink follow the terminal's own configuration
14
14
  */
15
15
 
16
+ import { applyMarkedCursorStyle } from "./fork-editor-cursor.ts";
17
+
16
18
  export type EditorCursorStyle = "block" | "underline" | "terminal";
17
19
 
18
20
  export function parseEditorCursorStyle(value: unknown): EditorCursorStyle {
@@ -41,6 +43,7 @@ function isSingleGrapheme(text: string): boolean {
41
43
 
42
44
  /** Restyle the software cursor in one rendered line. */
43
45
  export function applyEditorCursorStyle(line: string, style: EditorCursorStyle): string {
46
+ if (style !== "block") line = applyMarkedCursorStyle(line, style);
44
47
  if (style === "block" || !line.includes("\x1b[7m")) return line;
45
48
  return line.replace(REVERSE_RUN, (match, run: string) => {
46
49
  if (!isSingleGrapheme(run)) return match;
@@ -4,7 +4,12 @@ import type {
4
4
  ExtensionStatusPlacement,
5
5
  PolishedTuiConfig,
6
6
  } from "./config";
7
- import { getExtensionStatusColorMode, getExtensionStatusPlacement } from "./config";
7
+ import {
8
+ getExtensionStatusColorMode,
9
+ getExtensionStatusFormat,
10
+ getExtensionStatusPlacement,
11
+ } from "./config";
12
+ import { statusValueText } from "./format";
8
13
 
9
14
  export type ExtensionStatusSegment = {
10
15
  key: string;
@@ -17,7 +22,6 @@ export type ExtensionStatusSegmentsByPlacement = {
17
22
  left: ExtensionStatusSegment[];
18
23
  middle: ExtensionStatusSegment[];
19
24
  right: ExtensionStatusSegment[];
20
- editor: ExtensionStatusSegment[];
21
25
  };
22
26
 
23
27
  const safeSgrPattern = /\x1b\[[0-9;:]*m/g;
@@ -66,7 +70,6 @@ export function collectExtensionStatusSegments(
66
70
  left: [],
67
71
  middle: [],
68
72
  right: [],
69
- editor: [],
70
73
  };
71
74
 
72
75
  for (const [key, value] of statuses.entries()) {
@@ -74,10 +77,12 @@ export function collectExtensionStatusSegments(
74
77
  if (placement === "off") continue;
75
78
 
76
79
  const colorMode = getExtensionStatusColorMode(config, key);
77
- const text =
80
+ const published =
78
81
  colorMode === "original"
79
82
  ? sanitizeExtensionStatusOriginalText(value)
80
83
  : sanitizeExtensionStatusText(value);
84
+ const text =
85
+ getExtensionStatusFormat(config, key) === "value" ? statusValueText(published) : published;
81
86
  if (!text) continue;
82
87
 
83
88
  segments[placement].push({ key, text, placement, colorMode });
@@ -86,6 +91,5 @@ export function collectExtensionStatusSegments(
86
91
  segments.left.sort(compareKeys);
87
92
  segments.middle.sort(compareKeys);
88
93
  segments.right.sort(compareKeys);
89
- segments.editor.sort(compareKeys);
90
94
  return segments;
91
95
  }