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.
- package/dist/bin/anantham.js +10 -1
- package/dist/bin/anantham.js.map +1 -1
- package/dist/cli/command-registry.d.ts +8 -0
- package/dist/cli/command-registry.d.ts.map +1 -1
- package/dist/cli/command-registry.js +363 -89
- package/dist/cli/command-registry.js.map +1 -1
- package/dist/domain/tui.d.ts +1 -1
- package/dist/domain/tui.d.ts.map +1 -1
- package/dist/domain/tui.js +1 -0
- package/dist/domain/tui.js.map +1 -1
- package/dist/models/adapters/openai-compatible-adapter.d.ts.map +1 -1
- package/dist/models/adapters/openai-compatible-adapter.js +2 -1
- package/dist/models/adapters/openai-compatible-adapter.js.map +1 -1
- package/dist/models/provider-registry.d.ts +2 -2
- package/dist/persistence/index.d.ts +2 -0
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +2 -0
- package/dist/persistence/index.js.map +1 -1
- package/dist/persistence/model-catalog-cache.d.ts +86 -0
- package/dist/persistence/model-catalog-cache.d.ts.map +1 -0
- package/dist/persistence/model-catalog-cache.js +398 -0
- package/dist/persistence/model-catalog-cache.js.map +1 -0
- package/dist/persistence/token-metrics-manager.d.ts +88 -0
- package/dist/persistence/token-metrics-manager.d.ts.map +1 -0
- package/dist/persistence/token-metrics-manager.js +272 -0
- package/dist/persistence/token-metrics-manager.js.map +1 -0
- package/dist/persistence/user-config-manager.d.ts +8 -0
- package/dist/persistence/user-config-manager.d.ts.map +1 -1
- package/dist/persistence/user-config-manager.js +50 -1
- package/dist/persistence/user-config-manager.js.map +1 -1
- package/dist/tui/ansi-gradient.d.ts +43 -0
- package/dist/tui/ansi-gradient.d.ts.map +1 -0
- package/dist/tui/ansi-gradient.js +131 -0
- package/dist/tui/ansi-gradient.js.map +1 -0
- package/dist/tui/command-palette.d.ts +20 -0
- package/dist/tui/command-palette.d.ts.map +1 -0
- package/dist/tui/command-palette.js +241 -0
- package/dist/tui/command-palette.js.map +1 -0
- package/dist/tui/model-accordion-browser.d.ts +80 -0
- package/dist/tui/model-accordion-browser.d.ts.map +1 -0
- package/dist/tui/model-accordion-browser.js +487 -0
- package/dist/tui/model-accordion-browser.js.map +1 -0
- package/dist/tui/terminal-layout.d.ts +4 -0
- package/dist/tui/terminal-layout.d.ts.map +1 -1
- package/dist/tui/terminal-layout.js +30 -0
- package/dist/tui/terminal-layout.js.map +1 -1
- package/dist/tui/terminal-logo-renderer.d.ts +63 -0
- package/dist/tui/terminal-logo-renderer.d.ts.map +1 -0
- package/dist/tui/terminal-logo-renderer.js +300 -0
- package/dist/tui/terminal-logo-renderer.js.map +1 -0
- package/dist/tui/token-dashboard-renderer.d.ts +6 -0
- package/dist/tui/token-dashboard-renderer.d.ts.map +1 -0
- package/dist/tui/token-dashboard-renderer.js +115 -0
- package/dist/tui/token-dashboard-renderer.js.map +1 -0
- package/dist/tui/tui-controller.d.ts +14 -0
- package/dist/tui/tui-controller.d.ts.map +1 -1
- package/dist/tui/tui-controller.js +192 -7
- package/dist/tui/tui-controller.js.map +1 -1
- package/dist/tui/tui-renderer.d.ts +7 -1
- package/dist/tui/tui-renderer.d.ts.map +1 -1
- package/dist/tui/tui-renderer.js +52 -10
- package/dist/tui/tui-renderer.js.map +1 -1
- package/dist/tui/tui-sanitizer.d.ts +4 -0
- package/dist/tui/tui-sanitizer.d.ts.map +1 -1
- package/dist/tui/tui-sanitizer.js +6 -0
- package/dist/tui/tui-sanitizer.js.map +1 -1
- 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":"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"}
|
|
@@ -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":"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"}
|
|
@@ -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":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"tui-controller.d.ts","sourceRoot":"","sources":["../../src/tui/tui-controller.ts"],"names":[],"mappings":"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"}
|