anantham-v2 2.0.3 → 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.map +1 -1
- package/dist/cli/command-registry.js +118 -84
- package/dist/cli/command-registry.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/user-config-manager.d.ts +4 -0
- package/dist/persistence/user-config-manager.d.ts.map +1 -1
- package/dist/persistence/user-config-manager.js +15 -0
- package/dist/persistence/user-config-manager.js.map +1 -1
- 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.js +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/tui-controller.d.ts +13 -0
- package/dist/tui/tui-controller.d.ts.map +1 -1
- package/dist/tui/tui-controller.js +101 -4
- package/dist/tui/tui-controller.js.map +1 -1
- package/dist/tui/tui-renderer.d.ts +3 -1
- package/dist/tui/tui-renderer.d.ts.map +1 -1
- package/dist/tui/tui-renderer.js +18 -3
- package/dist/tui/tui-renderer.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import * as os from "node:os";
|
|
4
|
+
import { UserConfigManager } from "./user-config-manager.js";
|
|
5
|
+
/**
|
|
6
|
+
* Normalizes an OpenRouter model ID into a standardized provider string.
|
|
7
|
+
*/
|
|
8
|
+
export function normalizeProvider(rawId) {
|
|
9
|
+
const cleanId = rawId.startsWith("openrouter/") ? rawId.slice("openrouter/".length) : rawId;
|
|
10
|
+
const parts = cleanId.split("/");
|
|
11
|
+
if (parts.length >= 2 && parts[0]) {
|
|
12
|
+
const p = parts[0].toLowerCase();
|
|
13
|
+
if (p === "openai")
|
|
14
|
+
return "openai";
|
|
15
|
+
if (p === "anthropic")
|
|
16
|
+
return "anthropic";
|
|
17
|
+
if (p === "google")
|
|
18
|
+
return "google";
|
|
19
|
+
if (p === "deepseek")
|
|
20
|
+
return "deepseek";
|
|
21
|
+
if (p === "meta-llama" || p === "meta" || p === "llama")
|
|
22
|
+
return "meta-llama";
|
|
23
|
+
if (p === "virtuals")
|
|
24
|
+
return "virtuals";
|
|
25
|
+
return p;
|
|
26
|
+
}
|
|
27
|
+
return "other";
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Parses per-token pricing to price per 1 Million tokens.
|
|
31
|
+
*/
|
|
32
|
+
export function parsePricePerM(rawPrice) {
|
|
33
|
+
if (rawPrice === undefined || rawPrice === null)
|
|
34
|
+
return 0;
|
|
35
|
+
const num = typeof rawPrice === "number" ? rawPrice : parseFloat(String(rawPrice));
|
|
36
|
+
if (isNaN(num) || num <= 0)
|
|
37
|
+
return 0;
|
|
38
|
+
const perM = num * 1_000_000;
|
|
39
|
+
return Number(perM.toFixed(4));
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Persistent cache manager for OpenRouter live catalog models.
|
|
43
|
+
* Saves to ~/.anantham/models_cache.json with 1-hour TTL and atomic writes.
|
|
44
|
+
*/
|
|
45
|
+
export class ModelCatalogCache {
|
|
46
|
+
static instance;
|
|
47
|
+
storageDir;
|
|
48
|
+
storagePath;
|
|
49
|
+
ttlMs;
|
|
50
|
+
memoryCache = null;
|
|
51
|
+
static DEFAULT_TTL_MS = 3_600_000; // 1 hour
|
|
52
|
+
/**
|
|
53
|
+
* Curated high-performance fallback models across the 6 major providers.
|
|
54
|
+
*/
|
|
55
|
+
static CURATED_MODELS = [
|
|
56
|
+
// Anthropic
|
|
57
|
+
{
|
|
58
|
+
id: "anthropic/claude-3.5-sonnet",
|
|
59
|
+
name: "Claude 3.5 Sonnet",
|
|
60
|
+
provider: "anthropic",
|
|
61
|
+
contextLength: 200_000,
|
|
62
|
+
promptPricePerM: 3.0,
|
|
63
|
+
completionPricePerM: 15.0,
|
|
64
|
+
description: "Anthropic's flagship intelligent and balanced reasoning model",
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: "anthropic/claude-3.7-sonnet",
|
|
68
|
+
name: "Claude 3.7 Sonnet",
|
|
69
|
+
provider: "anthropic",
|
|
70
|
+
contextLength: 200_000,
|
|
71
|
+
promptPricePerM: 3.0,
|
|
72
|
+
completionPricePerM: 15.0,
|
|
73
|
+
description: "Anthropic's premier hybrid reasoning and coding model",
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: "anthropic/claude-3.5-haiku",
|
|
77
|
+
name: "Claude 3.5 Haiku",
|
|
78
|
+
provider: "anthropic",
|
|
79
|
+
contextLength: 200_000,
|
|
80
|
+
promptPricePerM: 0.8,
|
|
81
|
+
completionPricePerM: 4.0,
|
|
82
|
+
description: "Ultra-fast lightweight model with near-Sonnet performance",
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: "anthropic/claude-3-opus",
|
|
86
|
+
name: "Claude 3 Opus",
|
|
87
|
+
provider: "anthropic",
|
|
88
|
+
contextLength: 200_000,
|
|
89
|
+
promptPricePerM: 15.0,
|
|
90
|
+
completionPricePerM: 75.0,
|
|
91
|
+
description: "Anthropic's highest-power model for complex creative and scientific work",
|
|
92
|
+
},
|
|
93
|
+
// OpenAI
|
|
94
|
+
{
|
|
95
|
+
id: "openai/gpt-4o",
|
|
96
|
+
name: "GPT-4o",
|
|
97
|
+
provider: "openai",
|
|
98
|
+
contextLength: 128_000,
|
|
99
|
+
promptPricePerM: 2.5,
|
|
100
|
+
completionPricePerM: 10.0,
|
|
101
|
+
description: "OpenAI versatile high-intelligence multimodal flagship",
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
id: "openai/gpt-4o-mini",
|
|
105
|
+
name: "GPT-4o Mini",
|
|
106
|
+
provider: "openai",
|
|
107
|
+
contextLength: 128_000,
|
|
108
|
+
promptPricePerM: 0.15,
|
|
109
|
+
completionPricePerM: 0.6,
|
|
110
|
+
description: "Affordable, fast, lightweight model for high-frequency tasks",
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
id: "openai/o1",
|
|
114
|
+
name: "o1 Reasoning",
|
|
115
|
+
provider: "openai",
|
|
116
|
+
contextLength: 200_000,
|
|
117
|
+
promptPricePerM: 15.0,
|
|
118
|
+
completionPricePerM: 60.0,
|
|
119
|
+
description: "Deep chain-of-thought model designed for math, coding, and science",
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
id: "openai/o3-mini",
|
|
123
|
+
name: "o3 Mini",
|
|
124
|
+
provider: "openai",
|
|
125
|
+
contextLength: 200_000,
|
|
126
|
+
promptPricePerM: 1.1,
|
|
127
|
+
completionPricePerM: 4.4,
|
|
128
|
+
description: "Fast reasoning model optimized for STEM and coding workflows",
|
|
129
|
+
},
|
|
130
|
+
// Google
|
|
131
|
+
{
|
|
132
|
+
id: "google/gemini-2.5-pro",
|
|
133
|
+
name: "Gemini 2.5 Pro",
|
|
134
|
+
provider: "google",
|
|
135
|
+
contextLength: 1_000_000,
|
|
136
|
+
promptPricePerM: 1.25,
|
|
137
|
+
completionPricePerM: 5.0,
|
|
138
|
+
description: "Google's ultra-long context reasoning and multimodal powerhouse",
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
id: "google/gemini-2.0-flash",
|
|
142
|
+
name: "Gemini 2.0 Flash",
|
|
143
|
+
provider: "google",
|
|
144
|
+
contextLength: 1_000_000,
|
|
145
|
+
promptPricePerM: 0.1,
|
|
146
|
+
completionPricePerM: 0.4,
|
|
147
|
+
description: "Low-latency multimodal model with 1M context window",
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
id: "google/gemini-1.5-pro",
|
|
151
|
+
name: "Gemini 1.5 Pro",
|
|
152
|
+
provider: "google",
|
|
153
|
+
contextLength: 2_000_000,
|
|
154
|
+
promptPricePerM: 1.25,
|
|
155
|
+
completionPricePerM: 5.0,
|
|
156
|
+
description: "2M token context window for massive codebase ingestion",
|
|
157
|
+
},
|
|
158
|
+
// DeepSeek
|
|
159
|
+
{
|
|
160
|
+
id: "deepseek/deepseek-r1",
|
|
161
|
+
name: "DeepSeek R1",
|
|
162
|
+
provider: "deepseek",
|
|
163
|
+
contextLength: 64_000,
|
|
164
|
+
promptPricePerM: 0.55,
|
|
165
|
+
completionPricePerM: 2.19,
|
|
166
|
+
description: "Open-weights reasoning model with exceptional STEM performance",
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
id: "deepseek/deepseek-chat",
|
|
170
|
+
name: "DeepSeek V3",
|
|
171
|
+
provider: "deepseek",
|
|
172
|
+
contextLength: 64_000,
|
|
173
|
+
promptPricePerM: 0.14,
|
|
174
|
+
completionPricePerM: 0.28,
|
|
175
|
+
description: "High-efficiency MoE language model with top benchmark scores",
|
|
176
|
+
},
|
|
177
|
+
// Meta / Llama
|
|
178
|
+
{
|
|
179
|
+
id: "meta-llama/llama-3.3-70b-instruct",
|
|
180
|
+
name: "Llama 3.3 70B Instruct",
|
|
181
|
+
provider: "meta-llama",
|
|
182
|
+
contextLength: 128_000,
|
|
183
|
+
promptPricePerM: 0.12,
|
|
184
|
+
completionPricePerM: 0.3,
|
|
185
|
+
description: "Industry-standard open model with state-of-the-art 70B weights",
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
id: "meta-llama/llama-3.1-405b-instruct",
|
|
189
|
+
name: "Llama 3.1 405B Instruct",
|
|
190
|
+
provider: "meta-llama",
|
|
191
|
+
contextLength: 128_000,
|
|
192
|
+
promptPricePerM: 0.8,
|
|
193
|
+
completionPricePerM: 0.8,
|
|
194
|
+
description: "Frontier open-weights 405B parameter instruction model",
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
id: "meta-llama/llama-3.1-8b-instruct",
|
|
198
|
+
name: "Llama 3.1 8B Instruct",
|
|
199
|
+
provider: "meta-llama",
|
|
200
|
+
contextLength: 128_000,
|
|
201
|
+
promptPricePerM: 0.05,
|
|
202
|
+
completionPricePerM: 0.05,
|
|
203
|
+
description: "Compact, extremely fast open model for low-latency agent loops",
|
|
204
|
+
},
|
|
205
|
+
// Virtuals
|
|
206
|
+
{
|
|
207
|
+
id: "virtuals/game-agent",
|
|
208
|
+
name: "Virtuals GAME Agent",
|
|
209
|
+
provider: "virtuals",
|
|
210
|
+
contextLength: 32_000,
|
|
211
|
+
promptPricePerM: 0.5,
|
|
212
|
+
completionPricePerM: 1.5,
|
|
213
|
+
description: "On-chain autonomous agent execution model",
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
id: "virtuals/sentient-ai",
|
|
217
|
+
name: "Virtuals Sentient AI",
|
|
218
|
+
provider: "virtuals",
|
|
219
|
+
contextLength: 32_000,
|
|
220
|
+
promptPricePerM: 1.0,
|
|
221
|
+
completionPricePerM: 3.0,
|
|
222
|
+
description: "Interactive autonomous agent persona and simulation model",
|
|
223
|
+
},
|
|
224
|
+
];
|
|
225
|
+
constructor(customStorageDir, ttlMs = ModelCatalogCache.DEFAULT_TTL_MS) {
|
|
226
|
+
this.storageDir = customStorageDir || path.join(os.homedir(), ".anantham");
|
|
227
|
+
this.storagePath = path.join(this.storageDir, "models_cache.json");
|
|
228
|
+
this.ttlMs = ttlMs;
|
|
229
|
+
this.loadFromDisk();
|
|
230
|
+
}
|
|
231
|
+
static getInstance(customStorageDir, ttlMs) {
|
|
232
|
+
if (!ModelCatalogCache.instance || customStorageDir !== undefined) {
|
|
233
|
+
ModelCatalogCache.instance = new ModelCatalogCache(customStorageDir, ttlMs);
|
|
234
|
+
}
|
|
235
|
+
return ModelCatalogCache.instance;
|
|
236
|
+
}
|
|
237
|
+
static resetInstance() {
|
|
238
|
+
ModelCatalogCache.instance = undefined;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Reads cached models from disk if present and valid.
|
|
242
|
+
*/
|
|
243
|
+
loadFromDisk() {
|
|
244
|
+
try {
|
|
245
|
+
if (fs.existsSync(this.storagePath)) {
|
|
246
|
+
const raw = fs.readFileSync(this.storagePath, "utf-8");
|
|
247
|
+
const parsed = JSON.parse(raw);
|
|
248
|
+
if (parsed &&
|
|
249
|
+
typeof parsed.fetchedAt === "number" &&
|
|
250
|
+
Array.isArray(parsed.models) &&
|
|
251
|
+
parsed.models.length > 0) {
|
|
252
|
+
this.memoryCache = parsed;
|
|
253
|
+
return parsed;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
catch {
|
|
258
|
+
// Fallback on read or JSON parse failure
|
|
259
|
+
}
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Synchronously returns cached models from memory or disk if available.
|
|
264
|
+
*/
|
|
265
|
+
getCachedModels() {
|
|
266
|
+
if (this.memoryCache && Array.isArray(this.memoryCache.models)) {
|
|
267
|
+
return this.memoryCache.models;
|
|
268
|
+
}
|
|
269
|
+
const loaded = this.loadFromDisk();
|
|
270
|
+
return loaded ? loaded.models : null;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Checks whether the current cache is within its valid TTL window.
|
|
274
|
+
*/
|
|
275
|
+
isCacheFresh() {
|
|
276
|
+
if (!this.memoryCache) {
|
|
277
|
+
this.loadFromDisk();
|
|
278
|
+
}
|
|
279
|
+
if (!this.memoryCache) {
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
const age = Date.now() - this.memoryCache.fetchedAt;
|
|
283
|
+
return age >= 0 && age < (this.memoryCache.ttlMs || this.ttlMs);
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Saves models atomically to memory and disk using a temporary file and atomic rename.
|
|
287
|
+
*/
|
|
288
|
+
saveModels(models) {
|
|
289
|
+
const data = {
|
|
290
|
+
fetchedAt: Date.now(),
|
|
291
|
+
ttlMs: this.ttlMs,
|
|
292
|
+
models,
|
|
293
|
+
};
|
|
294
|
+
this.memoryCache = data;
|
|
295
|
+
try {
|
|
296
|
+
if (!fs.existsSync(this.storageDir)) {
|
|
297
|
+
fs.mkdirSync(this.storageDir, { recursive: true });
|
|
298
|
+
}
|
|
299
|
+
const tmpPath = path.join(this.storageDir, `models_cache.json.tmp.${Date.now()}.${Math.random().toString(36).slice(2, 8)}`);
|
|
300
|
+
fs.writeFileSync(tmpPath, JSON.stringify(data, null, 2), "utf-8");
|
|
301
|
+
try {
|
|
302
|
+
fs.renameSync(tmpPath, this.storagePath);
|
|
303
|
+
}
|
|
304
|
+
catch {
|
|
305
|
+
// Windows fallback: if renameSync encounters locking, copy and unlink
|
|
306
|
+
fs.copyFileSync(tmpPath, this.storagePath);
|
|
307
|
+
try {
|
|
308
|
+
fs.unlinkSync(tmpPath);
|
|
309
|
+
}
|
|
310
|
+
catch {
|
|
311
|
+
// Ignore temp cleanup errors
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
catch {
|
|
316
|
+
// Non-critical cache write failure
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Clears in-memory and on-disk cache.
|
|
321
|
+
*/
|
|
322
|
+
clearCache() {
|
|
323
|
+
this.memoryCache = null;
|
|
324
|
+
try {
|
|
325
|
+
if (fs.existsSync(this.storagePath)) {
|
|
326
|
+
fs.unlinkSync(this.storagePath);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
catch {
|
|
330
|
+
// Ignore cleanup error
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Fetches the model catalog:
|
|
335
|
+
* 1. Returns fresh cache if not forceRefresh.
|
|
336
|
+
* 2. Tries live OpenRouter API fetch with configured key.
|
|
337
|
+
* 3. Falls back to disk cache if available.
|
|
338
|
+
* 4. Falls back to built-in curated models across all 6 providers.
|
|
339
|
+
*/
|
|
340
|
+
async getModels(forceRefresh = false) {
|
|
341
|
+
if (!forceRefresh && this.isCacheFresh()) {
|
|
342
|
+
const cached = this.getCachedModels();
|
|
343
|
+
if (cached && cached.length > 0) {
|
|
344
|
+
return cached;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
const apiKey = UserConfigManager.getInstance().getApiKey("openrouter") || process.env.OPENROUTER_API_KEY;
|
|
348
|
+
try {
|
|
349
|
+
const headers = {
|
|
350
|
+
"HTTP-Referer": "https://anantham.ai",
|
|
351
|
+
"X-Title": "Anantham V2",
|
|
352
|
+
};
|
|
353
|
+
if (apiKey) {
|
|
354
|
+
headers["Authorization"] = `Bearer ${apiKey}`;
|
|
355
|
+
}
|
|
356
|
+
const response = await fetch("https://openrouter.ai/api/v1/models", {
|
|
357
|
+
method: "GET",
|
|
358
|
+
headers,
|
|
359
|
+
signal: AbortSignal.timeout(8000),
|
|
360
|
+
});
|
|
361
|
+
if (!response.ok) {
|
|
362
|
+
throw new Error(`OpenRouter models API returned HTTP ${response.status}: ${response.statusText}`);
|
|
363
|
+
}
|
|
364
|
+
const json = (await response.json());
|
|
365
|
+
if (json && Array.isArray(json.data) && json.data.length > 0) {
|
|
366
|
+
const normalized = json.data.map((m) => {
|
|
367
|
+
const provider = normalizeProvider(m.id);
|
|
368
|
+
const promptPricePerM = parsePricePerM(m.pricing?.prompt);
|
|
369
|
+
const completionPricePerM = parsePricePerM(m.pricing?.completion);
|
|
370
|
+
const contextLength = typeof m.context_length === "number" ? m.context_length : 4096;
|
|
371
|
+
return {
|
|
372
|
+
id: m.id,
|
|
373
|
+
name: m.name && m.name.trim().length > 0 ? m.name : m.id,
|
|
374
|
+
provider,
|
|
375
|
+
contextLength,
|
|
376
|
+
promptPricePerM,
|
|
377
|
+
completionPricePerM,
|
|
378
|
+
description: m.description,
|
|
379
|
+
};
|
|
380
|
+
});
|
|
381
|
+
this.saveModels(normalized);
|
|
382
|
+
return normalized;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
catch {
|
|
386
|
+
// Network fetch failure or timeout: proceed to fallbacks
|
|
387
|
+
}
|
|
388
|
+
// Fallback 1: Disk or memory cache (even if expired)
|
|
389
|
+
const existing = this.getCachedModels();
|
|
390
|
+
if (existing && existing.length > 0) {
|
|
391
|
+
return existing;
|
|
392
|
+
}
|
|
393
|
+
// Fallback 2: Comprehensive curated models across all 6 providers
|
|
394
|
+
this.saveModels(ModelCatalogCache.CURATED_MODELS);
|
|
395
|
+
return ModelCatalogCache.CURATED_MODELS;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
//# sourceMappingURL=model-catalog-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-catalog-cache.js","sourceRoot":"","sources":["../../src/persistence/model-catalog-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,8 @@ export interface UserConfig {
|
|
|
4
4
|
theme?: string;
|
|
5
5
|
lastUpdated?: string;
|
|
6
6
|
customModels?: string[];
|
|
7
|
+
logoPath?: string;
|
|
8
|
+
logo_path?: string;
|
|
7
9
|
}
|
|
8
10
|
/**
|
|
9
11
|
* UserConfigManager handles persistent configuration for Anantham V2
|
|
@@ -32,6 +34,8 @@ export declare class UserConfigManager {
|
|
|
32
34
|
getCustomModels(): string[];
|
|
33
35
|
addCustomModel(modelId: string): void;
|
|
34
36
|
removeCustomModel(modelId: string): boolean;
|
|
37
|
+
getLogoPath(): string | undefined;
|
|
38
|
+
setLogoPath(logoPath: string): void;
|
|
35
39
|
syncAllToProcessEnv(): void;
|
|
36
40
|
private maskSecret;
|
|
37
41
|
private syncToWorkspaceDotenv;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-config-manager.d.ts","sourceRoot":"","sources":["../../src/persistence/user-config-manager.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"user-config-manager.d.ts","sourceRoot":"","sources":["../../src/persistence/user-config-manager.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,MAAM,CAAa;gBAEf,eAAe,CAAC,EAAE,MAAM;WAMtB,WAAW,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAOtE,OAAO,CAAC,YAAY;IAYb,IAAI,IAAI,IAAI;IAYZ,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAK/C,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IAaxE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO;IAc9D,QAAQ,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAY5E,eAAe,IAAI,MAAM;IAWzB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKtC,eAAe,IAAI,MAAM,EAAE;IAI3B,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAYrC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAY3C,WAAW,IAAI,MAAM,GAAG,SAAS;IAIjC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAYnC,mBAAmB,IAAI,IAAI;IASlC,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,yBAAyB;CAalC"}
|
|
@@ -124,6 +124,21 @@ export class UserConfigManager {
|
|
|
124
124
|
}
|
|
125
125
|
return false;
|
|
126
126
|
}
|
|
127
|
+
getLogoPath() {
|
|
128
|
+
return this.config.logoPath || this.config.logo_path;
|
|
129
|
+
}
|
|
130
|
+
setLogoPath(logoPath) {
|
|
131
|
+
const trimmed = logoPath.trim();
|
|
132
|
+
if (!trimmed) {
|
|
133
|
+
delete this.config.logoPath;
|
|
134
|
+
delete this.config.logo_path;
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
this.config.logoPath = trimmed;
|
|
138
|
+
this.config.logo_path = trimmed;
|
|
139
|
+
}
|
|
140
|
+
this.save();
|
|
141
|
+
}
|
|
127
142
|
syncAllToProcessEnv() {
|
|
128
143
|
for (const [provider, apiKey] of Object.entries(this.config.apiKeys)) {
|
|
129
144
|
const envVar = `${provider.toUpperCase().replace(/-/g, "_")}_API_KEY`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-config-manager.js","sourceRoot":"","sources":["../../src/persistence/user-config-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"user-config-manager.js","sourceRoot":"","sources":["../../src/persistence/user-config-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { type CachedModel } from "../persistence/model-catalog-cache.js";
|
|
2
|
+
export interface ProviderGroup {
|
|
3
|
+
provider: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
expanded: boolean;
|
|
6
|
+
models: CachedModel[];
|
|
7
|
+
}
|
|
8
|
+
export interface AccordionFolderRow {
|
|
9
|
+
type: "provider";
|
|
10
|
+
provider: string;
|
|
11
|
+
displayName: string;
|
|
12
|
+
count: number;
|
|
13
|
+
expanded: boolean;
|
|
14
|
+
groupIndex: number;
|
|
15
|
+
}
|
|
16
|
+
export interface AccordionModelRow {
|
|
17
|
+
type: "model";
|
|
18
|
+
model: CachedModel;
|
|
19
|
+
groupIndex: number;
|
|
20
|
+
modelIndex: number;
|
|
21
|
+
isLastInGroup: boolean;
|
|
22
|
+
}
|
|
23
|
+
export type AccordionRow = AccordionFolderRow | AccordionModelRow;
|
|
24
|
+
export interface KeyResult {
|
|
25
|
+
action: "none" | "select" | "close" | "render";
|
|
26
|
+
selectedModelId?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Format context length into readable badge (e.g. "128k ctx", "1M ctx").
|
|
30
|
+
*/
|
|
31
|
+
export declare function formatContextLength(ctx: number): string;
|
|
32
|
+
/**
|
|
33
|
+
* Format prompt/completion price into compact cost badge.
|
|
34
|
+
*/
|
|
35
|
+
export declare function formatPricing(promptPerM: number, completionPerM: number): string;
|
|
36
|
+
/**
|
|
37
|
+
* Interactive Accordion Model Browser for terminal agent harness.
|
|
38
|
+
* Styled in Antigravity palette (#0A0A0C, neon cyan #00F2FE, neon violet #7209B7).
|
|
39
|
+
*/
|
|
40
|
+
export declare class ModelAccordionBrowser {
|
|
41
|
+
private groups;
|
|
42
|
+
private activeModelId?;
|
|
43
|
+
private selectedIndex;
|
|
44
|
+
private scrollOffset;
|
|
45
|
+
private searchQuery;
|
|
46
|
+
private isSearching;
|
|
47
|
+
constructor(models: CachedModel[], activeModelId?: string);
|
|
48
|
+
/**
|
|
49
|
+
* Partitions models into ordered provider groups.
|
|
50
|
+
*/
|
|
51
|
+
private buildGroups;
|
|
52
|
+
/**
|
|
53
|
+
* Positions cursor on active model if present.
|
|
54
|
+
*/
|
|
55
|
+
private initializeSelection;
|
|
56
|
+
getActiveModel(): string | undefined;
|
|
57
|
+
setActiveModel(modelId: string): void;
|
|
58
|
+
getProviderGroups(): ProviderGroup[];
|
|
59
|
+
getSelectedIndex(): number;
|
|
60
|
+
setSelectedIndex(index: number): void;
|
|
61
|
+
getSearchFilter(): string;
|
|
62
|
+
setSearchFilter(query: string): void;
|
|
63
|
+
toggleExpand(provider: string): void;
|
|
64
|
+
expandAll(): void;
|
|
65
|
+
collapseAll(): void;
|
|
66
|
+
private clampSelection;
|
|
67
|
+
/**
|
|
68
|
+
* Flattens visible provider folders and model rows based on expansion state and filter.
|
|
69
|
+
*/
|
|
70
|
+
getVisibleRows(): AccordionRow[];
|
|
71
|
+
/**
|
|
72
|
+
* Processes keyboard events for navigation, expansion, selection, and search.
|
|
73
|
+
*/
|
|
74
|
+
handleKey(token: string): KeyResult;
|
|
75
|
+
/**
|
|
76
|
+
* Renders the accordion tree view inside an Antigravity neon frame.
|
|
77
|
+
*/
|
|
78
|
+
render(width?: number, maxHeight?: number): string[];
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=model-accordion-browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-accordion-browser.d.ts","sourceRoot":"","sources":["../../src/tui/model-accordion-browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAIzE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;AAElE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAiBD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUvD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAWhF;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,WAAW,CAAS;gBAET,MAAM,EAAE,WAAW,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM;IAMhE;;OAEG;IACH,OAAO,CAAC,WAAW;IAkDnB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAcpB,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrC,iBAAiB,IAAI,aAAa,EAAE;IAIpC,gBAAgB,IAAI,MAAM;IAI1B,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKrC,eAAe,IAAI,MAAM;IAIzB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKpC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQpC,SAAS,IAAI,IAAI;IAOjB,WAAW,IAAI,IAAI;IAO1B,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACI,cAAc,IAAI,YAAY,EAAE;IAoDvC;;OAEG;IACI,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IA8J1C;;OAEG;IACI,MAAM,CAAC,KAAK,GAAE,MAAW,EAAE,SAAS,GAAE,MAAW,GAAG,MAAM,EAAE;CAgJpE"}
|