@appkit/llamacpp-cli 1.9.0 → 1.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/README.md +171 -42
- package/dist/cli.js +75 -10
- package/dist/cli.js.map +1 -1
- package/dist/commands/completion.d.ts +9 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +83 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/monitor.js +1 -1
- package/dist/commands/monitor.js.map +1 -1
- package/dist/commands/ps.d.ts +1 -3
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +36 -115
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/router/config.d.ts +1 -0
- package/dist/commands/router/config.d.ts.map +1 -1
- package/dist/commands/router/config.js +7 -2
- package/dist/commands/router/config.js.map +1 -1
- package/dist/commands/router/logs.d.ts +12 -0
- package/dist/commands/router/logs.d.ts.map +1 -0
- package/dist/commands/router/logs.js +238 -0
- package/dist/commands/router/logs.js.map +1 -0
- package/dist/commands/tui.d.ts +2 -0
- package/dist/commands/tui.d.ts.map +1 -0
- package/dist/commands/tui.js +27 -0
- package/dist/commands/tui.js.map +1 -0
- package/dist/lib/completion.d.ts +5 -0
- package/dist/lib/completion.d.ts.map +1 -0
- package/dist/lib/completion.js +195 -0
- package/dist/lib/completion.js.map +1 -0
- package/dist/lib/model-downloader.d.ts +5 -1
- package/dist/lib/model-downloader.d.ts.map +1 -1
- package/dist/lib/model-downloader.js +53 -20
- package/dist/lib/model-downloader.js.map +1 -1
- package/dist/lib/router-logger.d.ts +61 -0
- package/dist/lib/router-logger.d.ts.map +1 -0
- package/dist/lib/router-logger.js +200 -0
- package/dist/lib/router-logger.js.map +1 -0
- package/dist/lib/router-manager.d.ts.map +1 -1
- package/dist/lib/router-manager.js +1 -0
- package/dist/lib/router-manager.js.map +1 -1
- package/dist/lib/router-server.d.ts +9 -0
- package/dist/lib/router-server.d.ts.map +1 -1
- package/dist/lib/router-server.js +169 -57
- package/dist/lib/router-server.js.map +1 -1
- package/dist/tui/ConfigApp.d.ts +7 -0
- package/dist/tui/ConfigApp.d.ts.map +1 -0
- package/dist/tui/ConfigApp.js +1002 -0
- package/dist/tui/ConfigApp.js.map +1 -0
- package/dist/tui/HistoricalMonitorApp.d.ts.map +1 -1
- package/dist/tui/HistoricalMonitorApp.js +85 -49
- package/dist/tui/HistoricalMonitorApp.js.map +1 -1
- package/dist/tui/ModelsApp.d.ts +7 -0
- package/dist/tui/ModelsApp.d.ts.map +1 -0
- package/dist/tui/ModelsApp.js +362 -0
- package/dist/tui/ModelsApp.js.map +1 -0
- package/dist/tui/MultiServerMonitorApp.d.ts +6 -1
- package/dist/tui/MultiServerMonitorApp.d.ts.map +1 -1
- package/dist/tui/MultiServerMonitorApp.js +1038 -122
- package/dist/tui/MultiServerMonitorApp.js.map +1 -1
- package/dist/tui/RootNavigator.d.ts +7 -0
- package/dist/tui/RootNavigator.d.ts.map +1 -0
- package/dist/tui/RootNavigator.js +55 -0
- package/dist/tui/RootNavigator.js.map +1 -0
- package/dist/tui/SearchApp.d.ts +6 -0
- package/dist/tui/SearchApp.d.ts.map +1 -0
- package/dist/tui/SearchApp.js +451 -0
- package/dist/tui/SearchApp.js.map +1 -0
- package/dist/tui/SplashScreen.d.ts +16 -0
- package/dist/tui/SplashScreen.d.ts.map +1 -0
- package/dist/tui/SplashScreen.js +129 -0
- package/dist/tui/SplashScreen.js.map +1 -0
- package/dist/types/router-config.d.ts +1 -0
- package/dist/types/router-config.d.ts.map +1 -1
- package/dist/utils/log-parser.d.ts +14 -1
- package/dist/utils/log-parser.d.ts.map +1 -1
- package/dist/utils/log-parser.js +57 -26
- package/dist/utils/log-parser.js.map +1 -1
- package/package.json +1 -1
- package/src/cli.ts +41 -10
- package/src/commands/monitor.ts +1 -1
- package/src/commands/ps.ts +44 -133
- package/src/commands/router/config.ts +9 -2
- package/src/commands/router/logs.ts +256 -0
- package/src/commands/tui.ts +25 -0
- package/src/lib/model-downloader.ts +57 -20
- package/src/lib/router-logger.ts +201 -0
- package/src/lib/router-manager.ts +1 -0
- package/src/lib/router-server.ts +193 -62
- package/src/tui/ConfigApp.ts +1085 -0
- package/src/tui/HistoricalMonitorApp.ts +88 -49
- package/src/tui/ModelsApp.ts +368 -0
- package/src/tui/MultiServerMonitorApp.ts +1163 -122
- package/src/tui/RootNavigator.ts +74 -0
- package/src/tui/SearchApp.ts +511 -0
- package/src/tui/SplashScreen.ts +149 -0
- package/src/types/router-config.ts +1 -0
- package/src/utils/log-parser.ts +61 -25
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.createModelsUI = createModelsUI;
|
|
40
|
+
const blessed_1 = __importDefault(require("blessed"));
|
|
41
|
+
const model_scanner_js_1 = require("../lib/model-scanner.js");
|
|
42
|
+
const state_manager_js_1 = require("../lib/state-manager.js");
|
|
43
|
+
const launchctl_manager_js_1 = require("../lib/launchctl-manager.js");
|
|
44
|
+
const format_utils_js_1 = require("../utils/format-utils.js");
|
|
45
|
+
const fs = __importStar(require("fs/promises"));
|
|
46
|
+
const SearchApp_js_1 = require("./SearchApp.js");
|
|
47
|
+
/**
|
|
48
|
+
* Models management TUI
|
|
49
|
+
* Display installed models and allow deletion
|
|
50
|
+
*/
|
|
51
|
+
async function createModelsUI(screen, onBack, onSearch) {
|
|
52
|
+
let models = [];
|
|
53
|
+
let selectedIndex = 0;
|
|
54
|
+
let isLoading = false;
|
|
55
|
+
// Create content box
|
|
56
|
+
const contentBox = blessed_1.default.box({
|
|
57
|
+
top: 0,
|
|
58
|
+
left: 0,
|
|
59
|
+
width: '100%',
|
|
60
|
+
height: '100%',
|
|
61
|
+
tags: true,
|
|
62
|
+
scrollable: true,
|
|
63
|
+
alwaysScroll: true,
|
|
64
|
+
keys: true,
|
|
65
|
+
vi: true,
|
|
66
|
+
mouse: true,
|
|
67
|
+
scrollbar: {
|
|
68
|
+
ch: '█',
|
|
69
|
+
style: {
|
|
70
|
+
fg: 'blue',
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
screen.append(contentBox);
|
|
75
|
+
// Render models view
|
|
76
|
+
async function render() {
|
|
77
|
+
const termWidth = screen.width || 80;
|
|
78
|
+
const divider = '─'.repeat(termWidth - 2);
|
|
79
|
+
let content = '';
|
|
80
|
+
// Header
|
|
81
|
+
content += '{bold}{blue-fg}═══ Models Management{/blue-fg}{/bold}\n\n';
|
|
82
|
+
if (isLoading) {
|
|
83
|
+
content += '{cyan-fg}⏳ Loading models...{/cyan-fg}\n';
|
|
84
|
+
contentBox.setContent(content);
|
|
85
|
+
screen.render();
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (models.length === 0) {
|
|
89
|
+
content += '{yellow-fg}No models found{/yellow-fg}\n\n';
|
|
90
|
+
content += '{dim}Models directory: ' + await state_manager_js_1.stateManager.getModelsDirectory() + '{/dim}\n';
|
|
91
|
+
content += '{dim}Download models: Press [S] to search HuggingFace{/dim}\n';
|
|
92
|
+
content += '\n' + divider + '\n';
|
|
93
|
+
content += `{gray-fg}[S]earch [ESC] Back [Q]uit{/gray-fg}`;
|
|
94
|
+
contentBox.setContent(content);
|
|
95
|
+
screen.render();
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
// System info
|
|
99
|
+
const totalSize = models.reduce((sum, m) => sum + m.size, 0);
|
|
100
|
+
content += `{bold}Total: ${models.length} models{/bold} - ${(0, format_utils_js_1.formatBytes)(totalSize)}\n`;
|
|
101
|
+
content += divider + '\n';
|
|
102
|
+
// Get all servers to check dependencies
|
|
103
|
+
const allServers = await state_manager_js_1.stateManager.getAllServers();
|
|
104
|
+
// Table header
|
|
105
|
+
content += '{bold} │ Model File │ Size │ Modified │ Servers{/bold}\n';
|
|
106
|
+
content += divider + '\n';
|
|
107
|
+
// Model rows
|
|
108
|
+
for (let i = 0; i < models.length; i++) {
|
|
109
|
+
const model = models[i];
|
|
110
|
+
const isSelected = i === selectedIndex;
|
|
111
|
+
// Count servers using this model
|
|
112
|
+
const serversUsingModel = allServers.filter(s => s.modelPath === model.path);
|
|
113
|
+
const serverCount = serversUsingModel.length;
|
|
114
|
+
// Selection indicator
|
|
115
|
+
const indicator = isSelected ? '►' : ' ';
|
|
116
|
+
// Model filename (truncate if too long)
|
|
117
|
+
const maxFilenameLen = 46;
|
|
118
|
+
let filename = model.filename;
|
|
119
|
+
if (filename.length > maxFilenameLen) {
|
|
120
|
+
filename = filename.substring(0, maxFilenameLen - 3) + '...';
|
|
121
|
+
}
|
|
122
|
+
filename = filename.padEnd(maxFilenameLen);
|
|
123
|
+
// Size
|
|
124
|
+
const size = model.sizeFormatted.padStart(11);
|
|
125
|
+
// Modified date
|
|
126
|
+
const modified = (0, format_utils_js_1.formatDateShort)(model.modified).padStart(11);
|
|
127
|
+
// Servers count with color coding
|
|
128
|
+
let serversText = '';
|
|
129
|
+
let serversTextPlain = '';
|
|
130
|
+
if (serverCount === 0) {
|
|
131
|
+
serversText = '{green-fg}0 servers{/green-fg}';
|
|
132
|
+
serversTextPlain = '0 servers';
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
const runningCount = serversUsingModel.filter(s => s.status === 'running').length;
|
|
136
|
+
if (runningCount > 0) {
|
|
137
|
+
serversText = `{yellow-fg}${serverCount} (${runningCount} running){/yellow-fg}`;
|
|
138
|
+
serversTextPlain = `${serverCount} (${runningCount} running)`;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
serversText = `{gray-fg}${serverCount} stopped{/gray-fg}`;
|
|
142
|
+
serversTextPlain = `${serverCount} stopped`;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Build row content
|
|
146
|
+
let rowContent = '';
|
|
147
|
+
if (isSelected) {
|
|
148
|
+
// Selected row: cyan background with bright white text
|
|
149
|
+
rowContent = `{cyan-bg}{15-fg}${indicator} │ ${filename} │ ${size} │ ${modified} │ ${serversTextPlain}{/15-fg}{/cyan-bg}`;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
// Normal row: with colored server text
|
|
153
|
+
rowContent = `${indicator} │ ${filename} │ ${size} │ ${modified} │ ${serversText}`;
|
|
154
|
+
}
|
|
155
|
+
content += rowContent + '\n';
|
|
156
|
+
}
|
|
157
|
+
// Footer
|
|
158
|
+
content += '\n' + divider + '\n';
|
|
159
|
+
content += '{gray-fg}[↑/↓] Navigate [D]elete [S]earch [R]efresh [ESC] Back [Q]uit{/gray-fg}';
|
|
160
|
+
contentBox.setContent(content);
|
|
161
|
+
screen.render();
|
|
162
|
+
}
|
|
163
|
+
// Load models
|
|
164
|
+
async function loadModels() {
|
|
165
|
+
isLoading = true;
|
|
166
|
+
await render();
|
|
167
|
+
models = await model_scanner_js_1.modelScanner.scanModels();
|
|
168
|
+
selectedIndex = Math.min(selectedIndex, Math.max(0, models.length - 1));
|
|
169
|
+
isLoading = false;
|
|
170
|
+
await render();
|
|
171
|
+
}
|
|
172
|
+
// Delete selected model
|
|
173
|
+
async function deleteModel() {
|
|
174
|
+
if (models.length === 0)
|
|
175
|
+
return;
|
|
176
|
+
const model = models[selectedIndex];
|
|
177
|
+
const allServers = await state_manager_js_1.stateManager.getAllServers();
|
|
178
|
+
const serversUsingModel = allServers.filter(s => s.modelPath === model.path);
|
|
179
|
+
// Show confirmation dialog
|
|
180
|
+
const confirmBox = blessed_1.default.message({
|
|
181
|
+
parent: screen,
|
|
182
|
+
top: 'center',
|
|
183
|
+
left: 'center',
|
|
184
|
+
width: '60%',
|
|
185
|
+
height: 'shrink',
|
|
186
|
+
border: { type: 'line' },
|
|
187
|
+
style: {
|
|
188
|
+
border: { fg: 'red' },
|
|
189
|
+
fg: 'white',
|
|
190
|
+
},
|
|
191
|
+
tags: true,
|
|
192
|
+
});
|
|
193
|
+
let confirmText = `{bold}Delete model: ${model.filename}?{/bold}\n\n`;
|
|
194
|
+
confirmText += `Size: ${model.sizeFormatted}\n\n`;
|
|
195
|
+
if (serversUsingModel.length > 0) {
|
|
196
|
+
confirmText += `{yellow-fg}⚠️ This model has ${serversUsingModel.length} server(s) configured:{/yellow-fg}\n`;
|
|
197
|
+
for (const server of serversUsingModel) {
|
|
198
|
+
const statusColor = server.status === 'running' ? 'green-fg' : 'gray-fg';
|
|
199
|
+
confirmText += ` - ${server.id} ({${statusColor}}${server.status}{/${statusColor}})\n`;
|
|
200
|
+
}
|
|
201
|
+
confirmText += `\n{yellow-fg}These servers will be deleted before removing the model.{/yellow-fg}\n\n`;
|
|
202
|
+
}
|
|
203
|
+
confirmText += `Type 'yes' to confirm:\n\n\n\n`; // Extra lines for input box space
|
|
204
|
+
// Create input box for confirmation
|
|
205
|
+
const inputBox = blessed_1.default.textbox({
|
|
206
|
+
parent: confirmBox,
|
|
207
|
+
bottom: 1,
|
|
208
|
+
left: 2,
|
|
209
|
+
right: 2,
|
|
210
|
+
height: 3,
|
|
211
|
+
inputOnFocus: true,
|
|
212
|
+
border: { type: 'line' },
|
|
213
|
+
style: {
|
|
214
|
+
border: { fg: 'cyan' },
|
|
215
|
+
focus: { border: { fg: 'green' } },
|
|
216
|
+
},
|
|
217
|
+
});
|
|
218
|
+
confirmBox.setContent(confirmText);
|
|
219
|
+
screen.append(confirmBox);
|
|
220
|
+
confirmBox.focus();
|
|
221
|
+
inputBox.focus();
|
|
222
|
+
screen.render();
|
|
223
|
+
inputBox.on('submit', async (value) => {
|
|
224
|
+
screen.remove(confirmBox);
|
|
225
|
+
if (value.toLowerCase() !== 'yes') {
|
|
226
|
+
await render();
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
// Show deleting message
|
|
230
|
+
isLoading = true;
|
|
231
|
+
contentBox.setContent('{cyan-fg}⏳ Deleting model...{/cyan-fg}');
|
|
232
|
+
screen.render();
|
|
233
|
+
try {
|
|
234
|
+
// Delete all servers using this model
|
|
235
|
+
for (const server of serversUsingModel) {
|
|
236
|
+
// Unload service (stops and removes from launchd)
|
|
237
|
+
try {
|
|
238
|
+
await launchctl_manager_js_1.launchctlManager.unloadService(server.plistPath);
|
|
239
|
+
if (server.status === 'running') {
|
|
240
|
+
await launchctl_manager_js_1.launchctlManager.waitForServiceStop(server.label, 5000);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
// Continue even if unload fails
|
|
245
|
+
}
|
|
246
|
+
// Delete plist
|
|
247
|
+
await launchctl_manager_js_1.launchctlManager.deletePlist(server.plistPath);
|
|
248
|
+
// Delete server config
|
|
249
|
+
await state_manager_js_1.stateManager.deleteServerConfig(server.id);
|
|
250
|
+
}
|
|
251
|
+
// Delete model file
|
|
252
|
+
await fs.unlink(model.path);
|
|
253
|
+
// Reload models
|
|
254
|
+
await loadModels();
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
// Show error
|
|
258
|
+
const errorBox = blessed_1.default.message({
|
|
259
|
+
parent: screen,
|
|
260
|
+
top: 'center',
|
|
261
|
+
left: 'center',
|
|
262
|
+
width: '60%',
|
|
263
|
+
height: 'shrink',
|
|
264
|
+
border: { type: 'line' },
|
|
265
|
+
style: {
|
|
266
|
+
border: { fg: 'red' },
|
|
267
|
+
fg: 'red',
|
|
268
|
+
},
|
|
269
|
+
tags: true,
|
|
270
|
+
});
|
|
271
|
+
const errorMsg = error instanceof Error ? error.message : 'Unknown error';
|
|
272
|
+
errorBox.display(`{bold}Delete failed{/bold}\n\n${errorMsg}\n\nPress any key to continue`, () => {
|
|
273
|
+
screen.remove(errorBox);
|
|
274
|
+
isLoading = false;
|
|
275
|
+
render();
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
inputBox.on('cancel', () => {
|
|
280
|
+
screen.remove(confirmBox);
|
|
281
|
+
render();
|
|
282
|
+
});
|
|
283
|
+
inputBox.key(['escape'], () => {
|
|
284
|
+
screen.remove(confirmBox);
|
|
285
|
+
render();
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
// Store key handler references for cleanup
|
|
289
|
+
const keyHandlers = {
|
|
290
|
+
up: () => {
|
|
291
|
+
if (models.length === 0)
|
|
292
|
+
return;
|
|
293
|
+
selectedIndex = Math.max(0, selectedIndex - 1);
|
|
294
|
+
render();
|
|
295
|
+
},
|
|
296
|
+
down: () => {
|
|
297
|
+
if (models.length === 0)
|
|
298
|
+
return;
|
|
299
|
+
selectedIndex = Math.min(models.length - 1, selectedIndex + 1);
|
|
300
|
+
render();
|
|
301
|
+
},
|
|
302
|
+
delete: () => {
|
|
303
|
+
deleteModel();
|
|
304
|
+
},
|
|
305
|
+
search: async () => {
|
|
306
|
+
// Cleanup current handlers before switching views
|
|
307
|
+
cleanup();
|
|
308
|
+
// Open search view
|
|
309
|
+
await (0, SearchApp_js_1.createSearchUI)(screen, async () => {
|
|
310
|
+
// onBack callback - return to models view
|
|
311
|
+
// Re-register handlers
|
|
312
|
+
registerHandlers();
|
|
313
|
+
screen.append(contentBox);
|
|
314
|
+
await loadModels();
|
|
315
|
+
});
|
|
316
|
+
},
|
|
317
|
+
refresh: () => {
|
|
318
|
+
loadModels();
|
|
319
|
+
},
|
|
320
|
+
escape: async () => {
|
|
321
|
+
cleanup();
|
|
322
|
+
await onBack();
|
|
323
|
+
},
|
|
324
|
+
quit: () => {
|
|
325
|
+
screen.destroy();
|
|
326
|
+
process.exit(0);
|
|
327
|
+
},
|
|
328
|
+
};
|
|
329
|
+
// Cleanup function to unregister all handlers
|
|
330
|
+
function cleanup() {
|
|
331
|
+
screen.unkey('up', keyHandlers.up);
|
|
332
|
+
screen.unkey('k', keyHandlers.up);
|
|
333
|
+
screen.unkey('down', keyHandlers.down);
|
|
334
|
+
screen.unkey('j', keyHandlers.down);
|
|
335
|
+
screen.unkey('d', keyHandlers.delete);
|
|
336
|
+
screen.unkey('D', keyHandlers.delete);
|
|
337
|
+
screen.unkey('s', keyHandlers.search);
|
|
338
|
+
screen.unkey('S', keyHandlers.search);
|
|
339
|
+
screen.unkey('r', keyHandlers.refresh);
|
|
340
|
+
screen.unkey('R', keyHandlers.refresh);
|
|
341
|
+
screen.unkey('escape', keyHandlers.escape);
|
|
342
|
+
screen.unkey('q', keyHandlers.quit);
|
|
343
|
+
screen.unkey('Q', keyHandlers.quit);
|
|
344
|
+
screen.unkey('C-c', keyHandlers.quit);
|
|
345
|
+
screen.remove(contentBox);
|
|
346
|
+
}
|
|
347
|
+
// Register key handlers
|
|
348
|
+
function registerHandlers() {
|
|
349
|
+
screen.key(['up', 'k'], keyHandlers.up);
|
|
350
|
+
screen.key(['down', 'j'], keyHandlers.down);
|
|
351
|
+
screen.key(['d', 'D'], keyHandlers.delete);
|
|
352
|
+
screen.key(['s', 'S'], keyHandlers.search);
|
|
353
|
+
screen.key(['r', 'R'], keyHandlers.refresh);
|
|
354
|
+
screen.key(['escape'], keyHandlers.escape);
|
|
355
|
+
screen.key(['q', 'Q', 'C-c'], keyHandlers.quit);
|
|
356
|
+
}
|
|
357
|
+
// Register initial handlers
|
|
358
|
+
registerHandlers();
|
|
359
|
+
// Initial load
|
|
360
|
+
await loadModels();
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=ModelsApp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelsApp.js","sourceRoot":"","sources":["../../src/tui/ModelsApp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import blessed from 'blessed';
|
|
2
2
|
import { ServerConfig } from '../types/server-config.js';
|
|
3
|
-
export
|
|
3
|
+
export interface MonitorUIControls {
|
|
4
|
+
pause: () => void;
|
|
5
|
+
resume: () => void;
|
|
6
|
+
getServers: () => ServerConfig[];
|
|
7
|
+
}
|
|
8
|
+
export declare function createMultiServerMonitorUI(screen: blessed.Widgets.Screen, servers: ServerConfig[], skipConnectingMessage?: boolean, directJumpIndex?: number, onModels?: (controls: MonitorUIControls) => void, onFirstRender?: () => void): Promise<MonitorUIControls>;
|
|
4
9
|
//# sourceMappingURL=MultiServerMonitorApp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiServerMonitorApp.d.ts","sourceRoot":"","sources":["../../src/tui/MultiServerMonitorApp.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"MultiServerMonitorApp.d.ts","sourceRoot":"","sources":["../../src/tui/MultiServerMonitorApp.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAqB,MAAM,2BAA2B,CAAC;AA0B5E,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,YAAY,EAAE,CAAC;CAClC;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAC9B,OAAO,EAAE,YAAY,EAAE,EACvB,qBAAqB,GAAE,OAAe,EACtC,eAAe,CAAC,EAAE,MAAM,EACxB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,EAChD,aAAa,CAAC,EAAE,MAAM,IAAI,GACzB,OAAO,CAAC,iBAAiB,CAAC,CA8vD5B"}
|