anantham-v2 2.0.2 → 2.0.4

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 (67) hide show
  1. package/dist/bin/anantham.js +10 -1
  2. package/dist/bin/anantham.js.map +1 -1
  3. package/dist/cli/command-registry.d.ts +8 -0
  4. package/dist/cli/command-registry.d.ts.map +1 -1
  5. package/dist/cli/command-registry.js +363 -89
  6. package/dist/cli/command-registry.js.map +1 -1
  7. package/dist/domain/tui.d.ts +1 -1
  8. package/dist/domain/tui.d.ts.map +1 -1
  9. package/dist/domain/tui.js +1 -0
  10. package/dist/domain/tui.js.map +1 -1
  11. package/dist/models/adapters/openai-compatible-adapter.d.ts.map +1 -1
  12. package/dist/models/adapters/openai-compatible-adapter.js +2 -1
  13. package/dist/models/adapters/openai-compatible-adapter.js.map +1 -1
  14. package/dist/models/provider-registry.d.ts +2 -2
  15. package/dist/persistence/index.d.ts +2 -0
  16. package/dist/persistence/index.d.ts.map +1 -1
  17. package/dist/persistence/index.js +2 -0
  18. package/dist/persistence/index.js.map +1 -1
  19. package/dist/persistence/model-catalog-cache.d.ts +86 -0
  20. package/dist/persistence/model-catalog-cache.d.ts.map +1 -0
  21. package/dist/persistence/model-catalog-cache.js +398 -0
  22. package/dist/persistence/model-catalog-cache.js.map +1 -0
  23. package/dist/persistence/token-metrics-manager.d.ts +88 -0
  24. package/dist/persistence/token-metrics-manager.d.ts.map +1 -0
  25. package/dist/persistence/token-metrics-manager.js +272 -0
  26. package/dist/persistence/token-metrics-manager.js.map +1 -0
  27. package/dist/persistence/user-config-manager.d.ts +8 -0
  28. package/dist/persistence/user-config-manager.d.ts.map +1 -1
  29. package/dist/persistence/user-config-manager.js +50 -1
  30. package/dist/persistence/user-config-manager.js.map +1 -1
  31. package/dist/tui/ansi-gradient.d.ts +43 -0
  32. package/dist/tui/ansi-gradient.d.ts.map +1 -0
  33. package/dist/tui/ansi-gradient.js +131 -0
  34. package/dist/tui/ansi-gradient.js.map +1 -0
  35. package/dist/tui/command-palette.d.ts +20 -0
  36. package/dist/tui/command-palette.d.ts.map +1 -0
  37. package/dist/tui/command-palette.js +241 -0
  38. package/dist/tui/command-palette.js.map +1 -0
  39. package/dist/tui/model-accordion-browser.d.ts +80 -0
  40. package/dist/tui/model-accordion-browser.d.ts.map +1 -0
  41. package/dist/tui/model-accordion-browser.js +487 -0
  42. package/dist/tui/model-accordion-browser.js.map +1 -0
  43. package/dist/tui/terminal-layout.d.ts +4 -0
  44. package/dist/tui/terminal-layout.d.ts.map +1 -1
  45. package/dist/tui/terminal-layout.js +30 -0
  46. package/dist/tui/terminal-layout.js.map +1 -1
  47. package/dist/tui/terminal-logo-renderer.d.ts +63 -0
  48. package/dist/tui/terminal-logo-renderer.d.ts.map +1 -0
  49. package/dist/tui/terminal-logo-renderer.js +300 -0
  50. package/dist/tui/terminal-logo-renderer.js.map +1 -0
  51. package/dist/tui/token-dashboard-renderer.d.ts +6 -0
  52. package/dist/tui/token-dashboard-renderer.d.ts.map +1 -0
  53. package/dist/tui/token-dashboard-renderer.js +115 -0
  54. package/dist/tui/token-dashboard-renderer.js.map +1 -0
  55. package/dist/tui/tui-controller.d.ts +14 -0
  56. package/dist/tui/tui-controller.d.ts.map +1 -1
  57. package/dist/tui/tui-controller.js +192 -7
  58. package/dist/tui/tui-controller.js.map +1 -1
  59. package/dist/tui/tui-renderer.d.ts +7 -1
  60. package/dist/tui/tui-renderer.d.ts.map +1 -1
  61. package/dist/tui/tui-renderer.js +52 -10
  62. package/dist/tui/tui-renderer.js.map +1 -1
  63. package/dist/tui/tui-sanitizer.d.ts +4 -0
  64. package/dist/tui/tui-sanitizer.d.ts.map +1 -1
  65. package/dist/tui/tui-sanitizer.js +6 -0
  66. package/dist/tui/tui-sanitizer.js.map +1 -1
  67. package/package.json +1 -1
@@ -0,0 +1,63 @@
1
+ export type GraphicProtocol = "kitty" | "sixel" | "iterm2" | "halfblock";
2
+ export type RGB = [number, number, number];
3
+ export interface HeaderLogoOptions {
4
+ protocol?: GraphicProtocol;
5
+ logoPath?: string;
6
+ width?: number;
7
+ }
8
+ export declare const ANTIGRAVITY_PALETTE: {
9
+ darkOnyx: RGB;
10
+ neonCyan: RGB;
11
+ electricBlue: RGB;
12
+ neonViolet: RGB;
13
+ magenta: RGB;
14
+ neonEmerald: RGB;
15
+ purpleGlow: RGB;
16
+ };
17
+ /**
18
+ * TerminalLogoRenderer provides high-performance terminal logo rendering
19
+ * across Kitty, iTerm2, Sixel graphics protocols with graceful fallback
20
+ * to 24-bit TrueColor ANSI half-blocks (\u2580).
21
+ */
22
+ export declare class TerminalLogoRenderer {
23
+ /**
24
+ * Detects the graphical capability of the current terminal session.
25
+ */
26
+ static detectProtocol(): GraphicProtocol;
27
+ /**
28
+ * Resolves the custom logo path based on authoritative precedence:
29
+ * 1. cliPath
30
+ * 2. process.env.ANANTHAM_LOGO_PATH
31
+ * 3. UserConfigManager.getInstance().getLogoPath()
32
+ * 4. ./assets/logo.png (if exists)
33
+ * 5. null
34
+ */
35
+ static resolveLogoPath(cliPath?: string): string | null;
36
+ /**
37
+ * Renders a 2D pixel matrix of RGB tuples into 24-bit TrueColor half-block lines.
38
+ * Uses '\u2580' ('▀') where top pixel is foreground color and bottom pixel is background color.
39
+ */
40
+ static renderMatrixToHalfBlocks(matrix: RGB[][]): string[];
41
+ /**
42
+ * Renders procedural cybernetic Anantham infinite emblem in 24-bit TrueColor half-blocks.
43
+ * If width is specified, formats or crops/pads the emblem to fit.
44
+ */
45
+ static renderHalfBlockLogo(width?: number): string[];
46
+ /**
47
+ * Emits terminal graphics protocol escape sequences for Kitty, iTerm2, or Sixel.
48
+ */
49
+ static renderGraphicProtocol(protocol: "kitty" | "iterm2" | "sixel", filePath: string): string;
50
+ /**
51
+ * Orchestrates logo rendering across graphics protocols and TrueColor half-blocks.
52
+ * Supports both overload styles:
53
+ * - renderHeaderLogo(protocol?: GraphicProtocol, cliPath?: string)
54
+ * - renderHeaderLogo(options?: HeaderLogoOptions)
55
+ */
56
+ static renderHeaderLogo(optionsOrProtocol?: GraphicProtocol | HeaderLogoOptions, cliPath?: string): string[];
57
+ detectProtocol(): GraphicProtocol;
58
+ resolveLogoPath(cliPath?: string): string | null;
59
+ renderHalfBlockLogo(width?: number): string[];
60
+ renderGraphicProtocol(protocol: "kitty" | "iterm2" | "sixel", filePath: string): string;
61
+ renderHeaderLogo(optionsOrProtocol?: GraphicProtocol | HeaderLogoOptions, cliPath?: string): string[];
62
+ }
63
+ //# sourceMappingURL=terminal-logo-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-logo-renderer.d.ts","sourceRoot":"","sources":["../../src/tui/terminal-logo-renderer.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEzE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,mBAAmB;cACJ,GAAG;cACF,GAAG;kBACC,GAAG;gBACL,GAAG;aACL,GAAG;iBACA,GAAG;gBACH,GAAG;CAClC,CAAC;AAiFF;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B;;OAEG;WACW,cAAc,IAAI,eAAe;IAoB/C;;;;;;;OAOG;WACW,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAqC9D;;;OAGG;WACW,wBAAwB,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE;IA4BjE;;;OAGG;WACW,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAsB3D;;OAEG;WACW,qBAAqB,CACjC,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,EACtC,QAAQ,EAAE,MAAM,GACf,MAAM;IA8CT;;;;;OAKG;WACW,gBAAgB,CAC5B,iBAAiB,CAAC,EAAE,eAAe,GAAG,iBAAiB,EACvD,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,EAAE;IAuCJ,cAAc,IAAI,eAAe;IAIjC,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIhD,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAI7C,qBAAqB,CAC1B,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,EACtC,QAAQ,EAAE,MAAM,GACf,MAAM;IAIF,gBAAgB,CACrB,iBAAiB,CAAC,EAAE,eAAe,GAAG,iBAAiB,EACvD,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,EAAE;CAGZ"}
@@ -0,0 +1,300 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { UserConfigManager } from "../persistence/user-config-manager.js";
4
+ export const ANTIGRAVITY_PALETTE = {
5
+ darkOnyx: [10, 10, 12], // #0A0A0C
6
+ neonCyan: [0, 242, 254], // #00F2FE
7
+ electricBlue: [67, 97, 238], // #4361EE
8
+ neonViolet: [114, 9, 183], // #7209B7
9
+ magenta: [247, 37, 133], // #F72585
10
+ neonEmerald: [0, 242, 152], // #00F298
11
+ purpleGlow: [142, 45, 226], // #8E2DE2
12
+ };
13
+ /**
14
+ * Procedural 16x8 pixel matrix representing the Anantham infinite gateway / Möbius emblem.
15
+ * Rendered using 24-bit TrueColor half-blocks (16x4 character grid).
16
+ */
17
+ const DEFAULT_EMBLEM_MATRIX = [
18
+ // Row 0: Top loop arcs
19
+ [
20
+ ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx,
21
+ ANTIGRAVITY_PALETTE.neonCyan, ANTIGRAVITY_PALETTE.neonCyan, ANTIGRAVITY_PALETTE.neonCyan,
22
+ ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx,
23
+ ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.magenta, ANTIGRAVITY_PALETTE.magenta,
24
+ ANTIGRAVITY_PALETTE.magenta, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx,
25
+ ANTIGRAVITY_PALETTE.darkOnyx,
26
+ ],
27
+ // Row 1: Outer curves & initial crossover angle
28
+ [
29
+ ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.neonCyan, ANTIGRAVITY_PALETTE.neonCyan,
30
+ ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.electricBlue,
31
+ ANTIGRAVITY_PALETTE.electricBlue, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx,
32
+ ANTIGRAVITY_PALETTE.purpleGlow, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx,
33
+ ANTIGRAVITY_PALETTE.magenta, ANTIGRAVITY_PALETTE.magenta, ANTIGRAVITY_PALETTE.darkOnyx,
34
+ ANTIGRAVITY_PALETTE.darkOnyx,
35
+ ],
36
+ // Row 2: Nexus center crossover
37
+ [
38
+ ANTIGRAVITY_PALETTE.neonCyan, ANTIGRAVITY_PALETTE.neonCyan, ANTIGRAVITY_PALETTE.darkOnyx,
39
+ ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.electricBlue, ANTIGRAVITY_PALETTE.electricBlue,
40
+ ANTIGRAVITY_PALETTE.neonViolet, ANTIGRAVITY_PALETTE.neonViolet, ANTIGRAVITY_PALETTE.purpleGlow,
41
+ ANTIGRAVITY_PALETTE.purpleGlow, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx,
42
+ ANTIGRAVITY_PALETTE.magenta, ANTIGRAVITY_PALETTE.magenta, ANTIGRAVITY_PALETTE.darkOnyx,
43
+ ANTIGRAVITY_PALETTE.darkOnyx,
44
+ ],
45
+ // Row 3: Mid waist nexus
46
+ [
47
+ ANTIGRAVITY_PALETTE.neonCyan, ANTIGRAVITY_PALETTE.neonCyan, ANTIGRAVITY_PALETTE.darkOnyx,
48
+ ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.neonViolet,
49
+ ANTIGRAVITY_PALETTE.neonViolet, ANTIGRAVITY_PALETTE.neonViolet, ANTIGRAVITY_PALETTE.neonViolet,
50
+ ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx,
51
+ ANTIGRAVITY_PALETTE.magenta, ANTIGRAVITY_PALETTE.magenta, ANTIGRAVITY_PALETTE.darkOnyx,
52
+ ANTIGRAVITY_PALETTE.darkOnyx,
53
+ ],
54
+ // Row 4: Mid waist nexus reverse
55
+ [
56
+ ANTIGRAVITY_PALETTE.neonCyan, ANTIGRAVITY_PALETTE.neonCyan, ANTIGRAVITY_PALETTE.darkOnyx,
57
+ ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.neonViolet,
58
+ ANTIGRAVITY_PALETTE.neonViolet, ANTIGRAVITY_PALETTE.neonViolet, ANTIGRAVITY_PALETTE.neonViolet,
59
+ ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx,
60
+ ANTIGRAVITY_PALETTE.magenta, ANTIGRAVITY_PALETTE.magenta, ANTIGRAVITY_PALETTE.darkOnyx,
61
+ ANTIGRAVITY_PALETTE.darkOnyx,
62
+ ],
63
+ // Row 5: Lower crossover
64
+ [
65
+ ANTIGRAVITY_PALETTE.neonCyan, ANTIGRAVITY_PALETTE.neonCyan, ANTIGRAVITY_PALETTE.darkOnyx,
66
+ ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.electricBlue, ANTIGRAVITY_PALETTE.electricBlue,
67
+ ANTIGRAVITY_PALETTE.neonViolet, ANTIGRAVITY_PALETTE.neonViolet, ANTIGRAVITY_PALETTE.purpleGlow,
68
+ ANTIGRAVITY_PALETTE.purpleGlow, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx,
69
+ ANTIGRAVITY_PALETTE.magenta, ANTIGRAVITY_PALETTE.magenta, ANTIGRAVITY_PALETTE.darkOnyx,
70
+ ANTIGRAVITY_PALETTE.darkOnyx,
71
+ ],
72
+ // Row 6: Lower curves
73
+ [
74
+ ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.neonCyan, ANTIGRAVITY_PALETTE.neonCyan,
75
+ ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.electricBlue,
76
+ ANTIGRAVITY_PALETTE.electricBlue, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx,
77
+ ANTIGRAVITY_PALETTE.purpleGlow, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx,
78
+ ANTIGRAVITY_PALETTE.magenta, ANTIGRAVITY_PALETTE.magenta, ANTIGRAVITY_PALETTE.darkOnyx,
79
+ ANTIGRAVITY_PALETTE.darkOnyx,
80
+ ],
81
+ // Row 7: Bottom loop arcs
82
+ [
83
+ ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx,
84
+ ANTIGRAVITY_PALETTE.neonCyan, ANTIGRAVITY_PALETTE.neonCyan, ANTIGRAVITY_PALETTE.neonCyan,
85
+ ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx,
86
+ ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.magenta, ANTIGRAVITY_PALETTE.magenta,
87
+ ANTIGRAVITY_PALETTE.magenta, ANTIGRAVITY_PALETTE.darkOnyx, ANTIGRAVITY_PALETTE.darkOnyx,
88
+ ANTIGRAVITY_PALETTE.darkOnyx,
89
+ ],
90
+ ];
91
+ /**
92
+ * TerminalLogoRenderer provides high-performance terminal logo rendering
93
+ * across Kitty, iTerm2, Sixel graphics protocols with graceful fallback
94
+ * to 24-bit TrueColor ANSI half-blocks (\u2580).
95
+ */
96
+ export class TerminalLogoRenderer {
97
+ /**
98
+ * Detects the graphical capability of the current terminal session.
99
+ */
100
+ static detectProtocol() {
101
+ // 1. Kitty Graphics Protocol
102
+ if (process.env.KITTY_WINDOW_ID || process.env.TERM?.includes("kitty")) {
103
+ return "kitty";
104
+ }
105
+ // 2. iTerm2 Inline Images Protocol
106
+ if (process.env.TERM_PROGRAM === "iTerm.app" || process.env.LC_TERMINAL === "iTerm2") {
107
+ return "iterm2";
108
+ }
109
+ // 3. Sixel Protocol
110
+ if (process.env.TERM?.includes("sixel") || process.env.COLORTERM === "sixel") {
111
+ return "sixel";
112
+ }
113
+ // 4. Default fallback to 24-bit TrueColor half-blocks
114
+ return "halfblock";
115
+ }
116
+ /**
117
+ * Resolves the custom logo path based on authoritative precedence:
118
+ * 1. cliPath
119
+ * 2. process.env.ANANTHAM_LOGO_PATH
120
+ * 3. UserConfigManager.getInstance().getLogoPath()
121
+ * 4. ./assets/logo.png (if exists)
122
+ * 5. null
123
+ */
124
+ static resolveLogoPath(cliPath) {
125
+ if (cliPath && typeof cliPath === "string" && cliPath.trim().length > 0) {
126
+ return cliPath.trim();
127
+ }
128
+ if (process.env.ANANTHAM_LOGO_PATH && process.env.ANANTHAM_LOGO_PATH.trim().length > 0) {
129
+ return process.env.ANANTHAM_LOGO_PATH.trim();
130
+ }
131
+ try {
132
+ const configLogo = UserConfigManager.getInstance().getLogoPath();
133
+ if (configLogo && configLogo.trim().length > 0) {
134
+ return configLogo.trim();
135
+ }
136
+ }
137
+ catch {
138
+ // Ignore user config read errors
139
+ }
140
+ const defaultAssets = [
141
+ path.resolve(process.cwd(), "assets", "logo.png"),
142
+ path.join(process.cwd(), "assets", "logo.png"),
143
+ "./assets/logo.png",
144
+ ];
145
+ for (const assetPath of defaultAssets) {
146
+ try {
147
+ if (fs.existsSync(assetPath)) {
148
+ return assetPath;
149
+ }
150
+ }
151
+ catch {
152
+ // Continue fallback
153
+ }
154
+ }
155
+ return null;
156
+ }
157
+ /**
158
+ * Renders a 2D pixel matrix of RGB tuples into 24-bit TrueColor half-block lines.
159
+ * Uses '\u2580' ('▀') where top pixel is foreground color and bottom pixel is background color.
160
+ */
161
+ static renderMatrixToHalfBlocks(matrix) {
162
+ const lines = [];
163
+ const height = matrix.length;
164
+ if (height === 0)
165
+ return lines;
166
+ const width = matrix[0]?.length ?? 0;
167
+ for (let y = 0; y < height; y += 2) {
168
+ const topRow = matrix[y] ?? [];
169
+ const bottomRow = matrix[y + 1] ?? [];
170
+ let line = "";
171
+ for (let x = 0; x < width; x++) {
172
+ const topPixel = topRow[x] ?? ANTIGRAVITY_PALETTE.darkOnyx;
173
+ const bottomPixel = bottomRow[x] ?? ANTIGRAVITY_PALETTE.darkOnyx;
174
+ const fg = `\x1b[38;2;${topPixel[0]};${topPixel[1]};${topPixel[2]}m`;
175
+ const bg = `\x1b[48;2;${bottomPixel[0]};${bottomPixel[1]};${bottomPixel[2]}m`;
176
+ line += `${fg}${bg}\u2580`;
177
+ }
178
+ line += "\x1b[0m";
179
+ lines.push(line);
180
+ }
181
+ return lines;
182
+ }
183
+ /**
184
+ * Renders procedural cybernetic Anantham infinite emblem in 24-bit TrueColor half-blocks.
185
+ * If width is specified, formats or crops/pads the emblem to fit.
186
+ */
187
+ static renderHalfBlockLogo(width) {
188
+ let matrix = DEFAULT_EMBLEM_MATRIX;
189
+ if (width && width > 0 && width !== 16) {
190
+ if (width < 16) {
191
+ // Symmetrically crop horizontal columns
192
+ const startX = Math.max(0, Math.floor((16 - width) / 2));
193
+ matrix = DEFAULT_EMBLEM_MATRIX.map((row) => row.slice(startX, startX + width));
194
+ }
195
+ else {
196
+ // Pad with dark onyx
197
+ const padLeft = Math.floor((width - 16) / 2);
198
+ const padRight = width - 16 - padLeft;
199
+ const leftPadding = Array.from({ length: padLeft }, () => ANTIGRAVITY_PALETTE.darkOnyx);
200
+ const rightPadding = Array.from({ length: padRight }, () => ANTIGRAVITY_PALETTE.darkOnyx);
201
+ matrix = DEFAULT_EMBLEM_MATRIX.map((row) => [...leftPadding, ...row, ...rightPadding]);
202
+ }
203
+ }
204
+ return TerminalLogoRenderer.renderMatrixToHalfBlocks(matrix);
205
+ }
206
+ /**
207
+ * Emits terminal graphics protocol escape sequences for Kitty, iTerm2, or Sixel.
208
+ */
209
+ static renderGraphicProtocol(protocol, filePath) {
210
+ if (!fs.existsSync(filePath)) {
211
+ throw new Error(`Logo file does not exist: ${filePath}`);
212
+ }
213
+ const buffer = fs.readFileSync(filePath);
214
+ if (protocol === "kitty") {
215
+ let w = 64;
216
+ let h = 64;
217
+ // Read PNG dimension headers if available (offset 16: width, offset 20: height)
218
+ if (buffer.length >= 24 &&
219
+ buffer[0] === 0x89 &&
220
+ buffer[1] === 0x50 &&
221
+ buffer[2] === 0x4e &&
222
+ buffer[3] === 0x47) {
223
+ w = buffer.readUInt32BE(16);
224
+ h = buffer.readUInt32BE(20);
225
+ }
226
+ const base64 = buffer.toString("base64");
227
+ return `\x1b_Ga=T,f=100,t=d,s=${w},v=${h};${base64}\x1b\\`;
228
+ }
229
+ if (protocol === "iterm2") {
230
+ const base64 = buffer.toString("base64");
231
+ return `\x1b]1337;File=inline=1;width=auto;height=auto:${base64}\x07`;
232
+ }
233
+ if (protocol === "sixel") {
234
+ const rawString = buffer.toString("utf-8");
235
+ if (rawString.startsWith("\x1bP") && rawString.includes("\x1b\\")) {
236
+ return rawString;
237
+ }
238
+ // Emit valid Sixel DCS sequence representing the emblem
239
+ const sixelColorDef = "#0;2;4;4;5#1;2;0;95;100#2;2;26;38;93#3;2;45;4;72#4;2;97;15;52";
240
+ const sixelRaster = `"1;1;16;8`;
241
+ const sixelData = "#1~?~?#2??~~#3~~??#4~?~?";
242
+ return `\x1bPq${sixelRaster}${sixelColorDef}${sixelData}\x1b\\`;
243
+ }
244
+ throw new Error(`Unsupported graphic protocol: ${protocol}`);
245
+ }
246
+ /**
247
+ * Orchestrates logo rendering across graphics protocols and TrueColor half-blocks.
248
+ * Supports both overload styles:
249
+ * - renderHeaderLogo(protocol?: GraphicProtocol, cliPath?: string)
250
+ * - renderHeaderLogo(options?: HeaderLogoOptions)
251
+ */
252
+ static renderHeaderLogo(optionsOrProtocol, cliPath) {
253
+ let protocol;
254
+ let logoPath;
255
+ let width;
256
+ if (typeof optionsOrProtocol === "string") {
257
+ protocol = optionsOrProtocol;
258
+ logoPath = cliPath;
259
+ }
260
+ else if (optionsOrProtocol && typeof optionsOrProtocol === "object") {
261
+ protocol = optionsOrProtocol.protocol;
262
+ logoPath = optionsOrProtocol.logoPath;
263
+ width = optionsOrProtocol.width;
264
+ }
265
+ else {
266
+ logoPath = cliPath;
267
+ }
268
+ const effectiveProtocol = protocol ?? TerminalLogoRenderer.detectProtocol();
269
+ const resolvedPath = TerminalLogoRenderer.resolveLogoPath(logoPath);
270
+ if (effectiveProtocol !== "halfblock" &&
271
+ resolvedPath &&
272
+ fs.existsSync(resolvedPath)) {
273
+ try {
274
+ const graphicSequence = TerminalLogoRenderer.renderGraphicProtocol(effectiveProtocol, resolvedPath);
275
+ return [graphicSequence];
276
+ }
277
+ catch {
278
+ return TerminalLogoRenderer.renderHalfBlockLogo(width);
279
+ }
280
+ }
281
+ return TerminalLogoRenderer.renderHalfBlockLogo(width);
282
+ }
283
+ // Instance method delegates
284
+ detectProtocol() {
285
+ return TerminalLogoRenderer.detectProtocol();
286
+ }
287
+ resolveLogoPath(cliPath) {
288
+ return TerminalLogoRenderer.resolveLogoPath(cliPath);
289
+ }
290
+ renderHalfBlockLogo(width) {
291
+ return TerminalLogoRenderer.renderHalfBlockLogo(width);
292
+ }
293
+ renderGraphicProtocol(protocol, filePath) {
294
+ return TerminalLogoRenderer.renderGraphicProtocol(protocol, filePath);
295
+ }
296
+ renderHeaderLogo(optionsOrProtocol, cliPath) {
297
+ return TerminalLogoRenderer.renderHeaderLogo(optionsOrProtocol, cliPath);
298
+ }
299
+ }
300
+ //# sourceMappingURL=terminal-logo-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-logo-renderer.js","sourceRoot":"","sources":["../../src/tui/terminal-logo-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAY1E,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAQ,EAAE,UAAU;IACzC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAQ,EAAE,UAAU;IAC1C,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAQ,EAAE,UAAU;IAC9C,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAQ,EAAE,UAAU;IAC5C,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAQ,EAAE,UAAU;IAC1C,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAQ,EAAE,UAAU;IAC7C,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAQ,EAAE,UAAU;CAC9C,CAAC;AAEF;;;GAGG;AACH,MAAM,qBAAqB,GAAY;IACrC,uBAAuB;IACvB;QACE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACxF,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACxF,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACxF,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO;QACtF,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACvF,mBAAmB,CAAC,QAAQ;KAC7B;IACD,gDAAgD;IAChD;QACE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACxF,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,YAAY;QAC5F,mBAAmB,CAAC,YAAY,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QAC5F,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QAC1F,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,QAAQ;QACtF,mBAAmB,CAAC,QAAQ;KAC7B;IACD,gCAAgC;IAChC;QACE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACxF,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,YAAY,EAAE,mBAAmB,CAAC,YAAY;QAChG,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,UAAU;QAC9F,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QAC1F,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,QAAQ;QACtF,mBAAmB,CAAC,QAAQ;KAC7B;IACD,yBAAyB;IACzB;QACE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACxF,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,UAAU;QAC1F,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,UAAU;QAC9F,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACxF,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,QAAQ;QACtF,mBAAmB,CAAC,QAAQ;KAC7B;IACD,iCAAiC;IACjC;QACE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACxF,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,UAAU;QAC1F,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,UAAU;QAC9F,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACxF,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,QAAQ;QACtF,mBAAmB,CAAC,QAAQ;KAC7B;IACD,yBAAyB;IACzB;QACE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACxF,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,YAAY,EAAE,mBAAmB,CAAC,YAAY;QAChG,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,UAAU;QAC9F,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QAC1F,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,QAAQ;QACtF,mBAAmB,CAAC,QAAQ;KAC7B;IACD,sBAAsB;IACtB;QACE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACxF,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,YAAY;QAC5F,mBAAmB,CAAC,YAAY,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QAC5F,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QAC1F,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,QAAQ;QACtF,mBAAmB,CAAC,QAAQ;KAC7B;IACD,0BAA0B;IAC1B;QACE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACxF,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACxF,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACxF,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO;QACtF,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;QACvF,mBAAmB,CAAC,QAAQ;KAC7B;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAM,OAAO,oBAAoB;IAC/B;;OAEG;IACI,MAAM,CAAC,cAAc;QAC1B,6BAA6B;QAC7B,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACvE,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,mCAAmC;QACnC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YACrF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,oBAAoB;QACpB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;YAC7E,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,sDAAsD;QACtD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,eAAe,CAAC,OAAgB;QAC5C,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxE,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvF,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC;YACjE,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/C,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;QACnC,CAAC;QAED,MAAM,aAAa,GAAG;YACpB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC;YAC9C,mBAAmB;SACpB,CAAC;QAEF,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7B,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,oBAAoB;YACtB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,wBAAwB,CAAC,MAAe;QACpD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,IAAI,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAE/B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;QAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC;gBAC3D,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC;gBAEjE,MAAM,EAAE,GAAG,aAAa,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;gBACrE,MAAM,EAAE,GAAG,aAAa,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC9E,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC;YAC7B,CAAC;YAED,IAAI,IAAI,SAAS,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,mBAAmB,CAAC,KAAc;QAC9C,IAAI,MAAM,GAAG,qBAAqB,CAAC;QAEnC,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACvC,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;gBACf,wCAAwC;gBACxC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzD,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;YACjF,CAAC;iBAAM,CAAC;gBACN,qBAAqB;gBACrB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7C,MAAM,QAAQ,GAAG,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC;gBACtC,MAAM,WAAW,GAAU,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;gBAC/F,MAAM,YAAY,GAAU,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;gBAEjG,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QAED,OAAO,oBAAoB,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,qBAAqB,CACjC,QAAsC,EACtC,QAAgB;QAEhB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEzC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,gFAAgF;YAChF,IACE,MAAM,CAAC,MAAM,IAAI,EAAE;gBACnB,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;gBAClB,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;gBAClB,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;gBAClB,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAClB,CAAC;gBACD,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBAC5B,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzC,OAAO,yBAAyB,CAAC,MAAM,CAAC,IAAI,MAAM,QAAQ,CAAC;QAC7D,CAAC;QAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzC,OAAO,kDAAkD,MAAM,MAAM,CAAC;QACxE,CAAC;QAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,wDAAwD;YACxD,MAAM,aAAa,GACjB,+DAA+D,CAAC;YAClE,MAAM,WAAW,GAAG,WAAW,CAAC;YAChC,MAAM,SAAS,GAAG,0BAA0B,CAAC;YAC7C,OAAO,SAAS,WAAW,GAAG,aAAa,GAAG,SAAS,QAAQ,CAAC;QAClE,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,gBAAgB,CAC5B,iBAAuD,EACvD,OAAgB;QAEhB,IAAI,QAAqC,CAAC;QAC1C,IAAI,QAA4B,CAAC;QACjC,IAAI,KAAyB,CAAC;QAE9B,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;YAC1C,QAAQ,GAAG,iBAAiB,CAAC;YAC7B,QAAQ,GAAG,OAAO,CAAC;QACrB,CAAC;aAAM,IAAI,iBAAiB,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;YACtE,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC;YACtC,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC;YACtC,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,OAAO,CAAC;QACrB,CAAC;QAED,MAAM,iBAAiB,GAAG,QAAQ,IAAI,oBAAoB,CAAC,cAAc,EAAE,CAAC;QAC5E,MAAM,YAAY,GAAG,oBAAoB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAEpE,IACE,iBAAiB,KAAK,WAAW;YACjC,YAAY;YACZ,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAC3B,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,oBAAoB,CAAC,qBAAqB,CAChE,iBAAiB,EACjB,YAAY,CACb,CAAC;gBACF,OAAO,CAAC,eAAe,CAAC,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,4BAA4B;IACrB,cAAc;QACnB,OAAO,oBAAoB,CAAC,cAAc,EAAE,CAAC;IAC/C,CAAC;IAEM,eAAe,CAAC,OAAgB;QACrC,OAAO,oBAAoB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAEM,mBAAmB,CAAC,KAAc;QACvC,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAEM,qBAAqB,CAC1B,QAAsC,EACtC,QAAgB;QAEhB,OAAO,oBAAoB,CAAC,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxE,CAAC;IAEM,gBAAgB,CACrB,iBAAuD,EACvD,OAAgB;QAEhB,OAAO,oBAAoB,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export declare class TokenDashboardRenderer {
2
+ static formatTokens(count: number): string;
3
+ static formatUsd(usd: number): string;
4
+ static render(width?: number, _height?: number): string[];
5
+ }
6
+ //# sourceMappingURL=token-dashboard-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-dashboard-renderer.d.ts","sourceRoot":"","sources":["../../src/tui/token-dashboard-renderer.ts"],"names":[],"mappings":"AAGA,qBAAa,sBAAsB;WACnB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;WAUnC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;WAU9B,MAAM,CAAC,KAAK,GAAE,MAAW,EAAE,OAAO,GAAE,MAAW,GAAG,MAAM,EAAE;CA0IzE"}
@@ -0,0 +1,115 @@
1
+ import { AnsiGradient } from "./ansi-gradient.js";
2
+ import { TokenMetricsManager } from "../persistence/token-metrics-manager.js";
3
+ export class TokenDashboardRenderer {
4
+ static formatTokens(count) {
5
+ if (count >= 1_000_000) {
6
+ return `${(count / 1_000_000).toFixed(2)}M`;
7
+ }
8
+ if (count >= 1_000) {
9
+ return `${(count / 1_000).toFixed(1)}K`;
10
+ }
11
+ return count.toLocaleString();
12
+ }
13
+ static formatUsd(usd) {
14
+ if (usd >= 100) {
15
+ return `$${usd.toFixed(2)}`;
16
+ }
17
+ if (usd >= 1) {
18
+ return `$${usd.toFixed(3)}`;
19
+ }
20
+ return `$${usd.toFixed(4)}`;
21
+ }
22
+ static render(width = 80, _height = 24) {
23
+ const lines = [];
24
+ const metrics = TokenMetricsManager.getInstance();
25
+ const today = metrics.getDailySummary();
26
+ const mtd = metrics.getMtdSummary();
27
+ const budget = metrics.getMonthlyBudget();
28
+ const trend = metrics.getSevenDayTrend();
29
+ const topModels = metrics.getTopModels(4);
30
+ const borderCyan = "\x1b[38;2;0;242;254m";
31
+ const reset = "\x1b[0m";
32
+ const bold = "\x1b[1m";
33
+ const dim = "\x1b[90m";
34
+ const contentWidth = Math.max(76, width);
35
+ // 1. Dashboard Subheader
36
+ const title = " ❖ ANANTHAM TOKEN USAGE MATRIX & FINANCIAL DASHBOARD ";
37
+ const subTitle = " Real-Time Consumption Analytics & Model Cost Attribution ";
38
+ const titleGrad = AnsiGradient.linearGradient(title, AnsiGradient.PALETTES.cyanBlue[0], AnsiGradient.PALETTES.cyanBlue[1]);
39
+ const padTop = Math.max(0, contentWidth - title.length - 2);
40
+ lines.push(`${borderCyan}╭─${reset}${bold}${titleGrad}${borderCyan}${"─".repeat(padTop)}╮${reset}`);
41
+ const padSub = Math.max(0, contentWidth - subTitle.length - 2);
42
+ lines.push(`${borderCyan}│${reset}${dim}${subTitle}${" ".repeat(padSub)}${reset}${borderCyan}│${reset}`);
43
+ lines.push(`${borderCyan}├${"─".repeat(contentWidth - 2)}┤${reset}`);
44
+ // 2. Overview Metrics Grid
45
+ const colW = Math.floor((contentWidth - 6) / 3);
46
+ const card1Title = " [ TODAY'S TOKENS ]";
47
+ const card2Title = " [ MONTH-TO-DATE ]";
48
+ const card3Title = " [ ESTIMATED COST & BUDGET ]";
49
+ lines.push(`${borderCyan}│${reset} ${bold}\x1b[38;2;79;172;254m${card1Title.padEnd(colW)}${reset} │ ${bold}\x1b[38;2;247;37;133m${card2Title.padEnd(colW)}${reset} │ ${bold}\x1b[38;2;0;242;152m${card3Title.padEnd(colW)}${reset} ${borderCyan}│${reset}`);
50
+ // Row 1
51
+ const c1_1 = `Total: ${TokenDashboardRenderer.formatTokens(today.totalTokens)} (${today.requestCount} reqs)`;
52
+ const c2_1 = `Total: ${TokenDashboardRenderer.formatTokens(mtd.totalTokens)} (${mtd.requestCount} reqs)`;
53
+ const c3_1 = `Spent: ${TokenDashboardRenderer.formatUsd(mtd.totalCostUsd)} / $${budget.toFixed(0)}`;
54
+ lines.push(`${borderCyan}│${reset} ${c1_1.padEnd(colW)} │ ${c2_1.padEnd(colW)} │ ${c3_1.padEnd(colW)} ${borderCyan}│${reset}`);
55
+ // Row 2
56
+ const c1_2 = `In: ${TokenDashboardRenderer.formatTokens(today.totalInputTokens)} | Out: ${TokenDashboardRenderer.formatTokens(today.totalOutputTokens)}`;
57
+ const c2_2 = `In: ${TokenDashboardRenderer.formatTokens(mtd.totalInputTokens)} | Out: ${TokenDashboardRenderer.formatTokens(mtd.totalOutputTokens)}`;
58
+ const budgetPct = Math.min(100, Math.round((mtd.totalCostUsd / (budget || 1)) * 100));
59
+ const budgetBar = AnsiGradient.horizontalBar(mtd.totalCostUsd, budget, Math.max(10, colW - 8), "neonPinkViolet");
60
+ lines.push(`${borderCyan}│${reset} ${dim}${c1_2.padEnd(colW)}${reset} │ ${dim}${c2_2.padEnd(colW)}${reset} │ ${budgetBar} ${budgetPct}% ${borderCyan}│${reset}`);
61
+ // Row 3
62
+ const c1_3 = `Cached: ${TokenDashboardRenderer.formatTokens(today.totalCachedTokens)} | Cost: ${TokenDashboardRenderer.formatUsd(today.totalCostUsd)}`;
63
+ const c2_3 = `Cached: ${TokenDashboardRenderer.formatTokens(mtd.totalCachedTokens)} | Cost: ${TokenDashboardRenderer.formatUsd(mtd.totalCostUsd)}`;
64
+ const c3_3 = `Today: ${TokenDashboardRenderer.formatUsd(today.totalCostUsd)} (Burn Rate: Normal)`;
65
+ lines.push(`${borderCyan}│${reset} ${dim}${c1_3.padEnd(colW)}${reset} │ ${dim}${c2_3.padEnd(colW)}${reset} │ ${dim}${c3_3.padEnd(colW)}${reset} ${borderCyan}│${reset}`);
66
+ lines.push(`${borderCyan}├${"─".repeat(contentWidth - 2)}┤${reset}`);
67
+ // 3. Top Consuming Models Leaderboard
68
+ const modelHeader = " TOP CONSUMING MODELS (LEADERBOARD) ";
69
+ const modelHeaderGrad = AnsiGradient.linearGradient(modelHeader, AnsiGradient.PALETTES.amberCoral[0], AnsiGradient.PALETTES.amberCoral[1]);
70
+ const padModelHead = Math.max(0, contentWidth - modelHeader.length - 2);
71
+ lines.push(`${borderCyan}│${reset}${bold}${modelHeaderGrad}${dim}${"─".repeat(padModelHead)}${reset}${borderCyan}│${reset}`);
72
+ // Model Columns Header
73
+ const mCol1 = " MODEL";
74
+ const mCol2 = "TOKENS";
75
+ const mCol3 = "COST (USD)";
76
+ const mCol4 = "ALLOCATION SHARE";
77
+ const tableHeader = `${mCol1.padEnd(34)} ${mCol2.padStart(10)} ${mCol3.padStart(12)} ${mCol4}`;
78
+ lines.push(`${borderCyan}│${reset}${dim}${tableHeader.padEnd(contentWidth - 2)}${reset}${borderCyan}│${reset}`);
79
+ for (const m of topModels) {
80
+ const modelName = m.modelId.length > 30 ? `${m.modelId.slice(0, 27)}...` : m.modelId;
81
+ const tokensStr = TokenDashboardRenderer.formatTokens(m.totalTokens);
82
+ const costStr = TokenDashboardRenderer.formatUsd(m.costUsd);
83
+ const barWidth = Math.max(8, contentWidth - 66);
84
+ const bar = AnsiGradient.horizontalBar(m.percentage, 100, barWidth, "cyanBlue");
85
+ const rowText = ` \x1b[38;2;79;172;254m${modelName.padEnd(32)}${reset} \x1b[38;2;220;220;240m${tokensStr.padStart(10)}${reset} \x1b[38;2;0;242;152m${costStr.padStart(12)}${reset} ${bar} \x1b[1m${String(m.percentage).padStart(2)}%${reset}`;
86
+ const rawLen = 2 + 32 + 1 + 10 + 3 + 12 + 3 + barWidth + 1 + 3;
87
+ const padRow = Math.max(0, contentWidth - rawLen - 2);
88
+ lines.push(`${borderCyan}│${reset}${rowText}${" ".repeat(padRow)}${borderCyan}│${reset}`);
89
+ }
90
+ lines.push(`${borderCyan}├${"─".repeat(contentWidth - 2)}┤${reset}`);
91
+ // 4. 7-Day Trend & Volatility Sparkline
92
+ const trendValues = trend.map((t) => t.tokens);
93
+ const spark = AnsiGradient.sparkline(trendValues, "cyanBlue");
94
+ const trendTitle = " 7-DAY CONSUMPTION TREND & VOLATILITY SPARKLINE ";
95
+ const trendGrad = AnsiGradient.linearGradient(trendTitle, AnsiGradient.PALETTES.neonPinkViolet[0], AnsiGradient.PALETTES.neonPinkViolet[1]);
96
+ const padTrendHead = Math.max(0, contentWidth - trendTitle.length - 2);
97
+ lines.push(`${borderCyan}│${reset}${bold}${trendGrad}${dim}${"─".repeat(padTrendHead)}${reset}${borderCyan}│${reset}`);
98
+ const maxDayTokens = Math.max(...trendValues, 1);
99
+ const sparkRow = ` Trend Activity: [ ${spark} ] Peak: ${TokenDashboardRenderer.formatTokens(maxDayTokens)} tokens/day`;
100
+ lines.push(`${borderCyan}│${reset}${sparkRow}${" ".repeat(Math.max(0, contentWidth - 55))}${borderCyan}│${reset}`);
101
+ // Horizontal compact daily table
102
+ const dayCols = trend
103
+ .map((t) => `${t.date.slice(5)}: ${TokenDashboardRenderer.formatTokens(t.tokens)}`)
104
+ .join(" │ ");
105
+ const dayRow = ` ${dayCols}`;
106
+ const padDays = Math.max(0, contentWidth - dayRow.length - 2);
107
+ lines.push(`${borderCyan}│${reset}${dim}${dayRow}${" ".repeat(padDays)}${reset}${borderCyan}│${reset}`);
108
+ // Bottom Border & Navigation Hint
109
+ const navHints = " [ESC] Back to Dashboard [R] Refresh Stats [/] Command Palette ";
110
+ const padNav = Math.max(0, contentWidth - navHints.length - 2);
111
+ lines.push(`${borderCyan}╰─${reset}${bold}\x1b[38;2;0;242;254m${navHints}${reset}${borderCyan}${"─".repeat(padNav)}╯${reset}`);
112
+ return lines;
113
+ }
114
+ }
115
+ //# sourceMappingURL=token-dashboard-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-dashboard-renderer.js","sourceRoot":"","sources":["../../src/tui/token-dashboard-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAE9E,MAAM,OAAO,sBAAsB;IAC1B,MAAM,CAAC,YAAY,CAAC,KAAa;QACtC,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;YACvB,OAAO,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9C,CAAC;QACD,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;YACnB,OAAO,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1C,CAAC;QACD,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC;IAChC,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,GAAW;QACjC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;YACf,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,QAAgB,EAAE,EAAE,UAAkB,EAAE;QAC3D,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,mBAAmB,CAAC,WAAW,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAE1C,MAAM,UAAU,GAAG,sBAAsB,CAAC;QAC1C,MAAM,KAAK,GAAG,SAAS,CAAC;QACxB,MAAM,IAAI,GAAG,SAAS,CAAC;QACvB,MAAM,GAAG,GAAG,UAAU,CAAC;QAEvB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAEzC,yBAAyB;QACzB,MAAM,KAAK,GAAG,uDAAuD,CAAC;QACtE,MAAM,QAAQ,GAAG,4DAA4D,CAAC;QAC9E,MAAM,SAAS,GAAG,YAAY,CAAC,cAAc,CAC3C,KAAK,EACL,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EACjC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAClC,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5D,KAAK,CAAC,IAAI,CACR,GAAG,UAAU,KAAK,KAAK,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,CACxF,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,KAAK,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;QACzG,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QAErE,2BAA2B;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,qBAAqB,CAAC;QACzC,MAAM,UAAU,GAAG,oBAAoB,CAAC;QACxC,MAAM,UAAU,GAAG,8BAA8B,CAAC;QAElD,KAAK,CAAC,IAAI,CACR,GAAG,UAAU,IAAI,KAAK,IAAI,IAAI,wBAAwB,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,wBAAwB,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,uBAAuB,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,UAAU,IAAI,KAAK,EAAE,CAChP,CAAC;QAEF,QAAQ;QACR,MAAM,IAAI,GAAG,UAAU,sBAAsB,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,YAAY,QAAQ,CAAC;QAC7G,MAAM,IAAI,GAAG,UAAU,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,YAAY,QAAQ,CAAC;QACzG,MAAM,IAAI,GAAG,UAAU,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACpG,KAAK,CAAC,IAAI,CACR,GAAG,UAAU,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,IAAI,KAAK,EAAE,CACnH,CAAC;QAEF,QAAQ;QACR,MAAM,IAAI,GAAG,OAAO,sBAAsB,CAAC,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAW,sBAAsB,CAAC,YAAY,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACzJ,MAAM,IAAI,GAAG,OAAO,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,WAAW,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACrJ,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACtF,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;QACjH,KAAK,CAAC,IAAI,CACR,GAAG,UAAU,IAAI,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,SAAS,IAAI,SAAS,KAAK,UAAU,IAAI,KAAK,EAAE,CACrJ,CAAC;QAEF,QAAQ;QACR,MAAM,IAAI,GAAG,WAAW,sBAAsB,CAAC,YAAY,CAAC,KAAK,CAAC,iBAAiB,CAAC,YAAY,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QACvJ,MAAM,IAAI,GAAG,WAAW,sBAAsB,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,YAAY,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QACnJ,MAAM,IAAI,GAAG,UAAU,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,sBAAsB,CAAC;QAClG,KAAK,CAAC,IAAI,CACR,GAAG,UAAU,IAAI,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,UAAU,IAAI,KAAK,EAAE,CAC7J,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QAErE,sCAAsC;QACtC,MAAM,WAAW,GAAG,sCAAsC,CAAC;QAC3D,MAAM,eAAe,GAAG,YAAY,CAAC,cAAc,CACjD,WAAW,EACX,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EACnC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CACpC,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxE,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,KAAK,GAAG,IAAI,GAAG,eAAe,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,GAAG,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;QAE7H,uBAAuB;QACvB,MAAM,KAAK,GAAG,SAAS,CAAC;QACxB,MAAM,KAAK,GAAG,QAAQ,CAAC;QACvB,MAAM,KAAK,GAAG,YAAY,CAAC;QAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC;QACjC,MAAM,WAAW,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC;QACnG,KAAK,CAAC,IAAI,CACR,GAAG,UAAU,IAAI,KAAK,GAAG,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,UAAU,IAAI,KAAK,EAAE,CACpG,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACrF,MAAM,SAAS,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,EAAE,CAAC,CAAC;YAChD,MAAM,GAAG,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;YAEhF,MAAM,OAAO,GAAG,0BAA0B,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,0BAA0B,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,KAAK,0BAA0B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,KAAK,MAAM,GAAG,WAAW,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;YACpP,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,KAAK,GAAG,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QAErE,wCAAwC;QACxC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,kDAAkD,CAAC;QACtE,MAAM,SAAS,GAAG,YAAY,CAAC,cAAc,CAC3C,UAAU,EACV,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,EACvC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CACxC,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvE,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,KAAK,GAAG,IAAI,GAAG,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,GAAG,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;QAEvH,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,uBAAuB,KAAK,aAAa,sBAAsB,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,CAAC;QACzH,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,KAAK,GAAG,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,EAAE,CAAC,CAAC,GAAG,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;QAEnH,iCAAiC;QACjC,MAAM,OAAO,GAAG,KAAK;aAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;aAClF,IAAI,CAAC,KAAK,CAAC,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,OAAO,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,KAAK,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,GAAG,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC;QAExG,kCAAkC;QAClC,MAAM,QAAQ,GAAG,mEAAmE,CAAC;QACrF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/D,KAAK,CAAC,IAAI,CACR,GAAG,UAAU,KAAK,KAAK,GAAG,IAAI,uBAAuB,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,CACnH,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -5,6 +5,7 @@ import { type TuiRenderer } from "./tui-renderer.js";
5
5
  import { type CommandRegistry } from "../cli/command-registry.js";
6
6
  import { type CommandParser } from "../cli/command-parser.js";
7
7
  import { type CliErrorHandler } from "../cli/error-handler.js";
8
+ import { ModelAccordionBrowser } from "./model-accordion-browser.js";
8
9
  export interface TuiControllerOptions {
9
10
  stateAdapter: TuiStateAdapter;
10
11
  renderer: TuiRenderer;
@@ -42,10 +43,23 @@ export declare class TuiController {
42
43
  private commandOutput;
43
44
  private cursorPosition;
44
45
  private isBracketedPaste;
46
+ private paletteSelectedIndex;
47
+ private modelBrowserModal;
45
48
  constructor(options: TuiControllerOptions);
46
49
  private attachStateListener;
47
50
  getCurrentView(): TuiViewMode;
48
51
  setView(view: TuiViewMode): void;
52
+ getModelBrowserModal(): ModelAccordionBrowser | null;
53
+ setModelBrowserModal(modal: ModelAccordionBrowser | null): void;
54
+ getCommandOutput(): {
55
+ title: string;
56
+ lines: string[];
57
+ } | null;
58
+ setCommandOutput(output: {
59
+ title: string;
60
+ lines: string[];
61
+ } | null): void;
62
+ openModelBrowserModal(): Promise<void>;
49
63
  setDimensions(dims: TuiDimensions): void;
50
64
  getCursorPosition(): number;
51
65
  getSavedDraft(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"tui-controller.d.ts","sourceRoot":"","sources":["../../src/tui/tui-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tui-controller.d.ts","sourceRoot":"","sources":["../../src/tui/tui-controller.ts"],"names":[],"mappings":"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"}