@appkit/llamacpp-cli 1.5.0 → 1.7.0
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 +20 -0
- package/MONITORING-ACCURACY-FIX.md +199 -0
- package/PER-PROCESS-METRICS.md +190 -0
- package/README.md +124 -9
- package/dist/cli.js +32 -7
- package/dist/cli.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +15 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +12 -4
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/delete.js +12 -10
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/logs-all.d.ts +9 -0
- package/dist/commands/logs-all.d.ts.map +1 -0
- package/dist/commands/logs-all.js +209 -0
- package/dist/commands/logs-all.js.map +1 -0
- package/dist/commands/logs.d.ts +4 -0
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +108 -2
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/monitor.d.ts.map +1 -1
- package/dist/commands/monitor.js +51 -1
- package/dist/commands/monitor.js.map +1 -1
- package/dist/commands/ps.d.ts +3 -1
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +75 -5
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/rm.d.ts.map +1 -1
- package/dist/commands/rm.js +5 -12
- package/dist/commands/rm.js.map +1 -1
- package/dist/commands/server-show.d.ts.map +1 -1
- package/dist/commands/server-show.js +30 -3
- package/dist/commands/server-show.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +34 -7
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/stop.js +3 -3
- package/dist/commands/stop.js.map +1 -1
- package/dist/lib/history-manager.d.ts +46 -0
- package/dist/lib/history-manager.d.ts.map +1 -0
- package/dist/lib/history-manager.js +157 -0
- package/dist/lib/history-manager.js.map +1 -0
- package/dist/lib/metrics-aggregator.d.ts +2 -1
- package/dist/lib/metrics-aggregator.d.ts.map +1 -1
- package/dist/lib/metrics-aggregator.js +15 -4
- package/dist/lib/metrics-aggregator.js.map +1 -1
- package/dist/lib/system-collector.d.ts +9 -4
- package/dist/lib/system-collector.d.ts.map +1 -1
- package/dist/lib/system-collector.js +29 -28
- package/dist/lib/system-collector.js.map +1 -1
- package/dist/tui/HistoricalMonitorApp.d.ts +5 -0
- package/dist/tui/HistoricalMonitorApp.d.ts.map +1 -0
- package/dist/tui/HistoricalMonitorApp.js +490 -0
- package/dist/tui/HistoricalMonitorApp.js.map +1 -0
- package/dist/tui/MonitorApp.d.ts.map +1 -1
- package/dist/tui/MonitorApp.js +84 -62
- package/dist/tui/MonitorApp.js.map +1 -1
- package/dist/tui/MultiServerMonitorApp.d.ts +1 -1
- package/dist/tui/MultiServerMonitorApp.d.ts.map +1 -1
- package/dist/tui/MultiServerMonitorApp.js +293 -77
- package/dist/tui/MultiServerMonitorApp.js.map +1 -1
- package/dist/types/history-types.d.ts +30 -0
- package/dist/types/history-types.d.ts.map +1 -0
- package/dist/types/history-types.js +11 -0
- package/dist/types/history-types.js.map +1 -0
- package/dist/types/monitor-types.d.ts +1 -0
- package/dist/types/monitor-types.d.ts.map +1 -1
- package/dist/types/server-config.d.ts +1 -0
- package/dist/types/server-config.d.ts.map +1 -1
- package/dist/types/server-config.js.map +1 -1
- package/dist/utils/downsample-utils.d.ts +35 -0
- package/dist/utils/downsample-utils.d.ts.map +1 -0
- package/dist/utils/downsample-utils.js +107 -0
- package/dist/utils/downsample-utils.js.map +1 -0
- package/dist/utils/file-utils.d.ts +6 -0
- package/dist/utils/file-utils.d.ts.map +1 -1
- package/dist/utils/file-utils.js +38 -0
- package/dist/utils/file-utils.js.map +1 -1
- package/dist/utils/log-utils.d.ts +43 -0
- package/dist/utils/log-utils.d.ts.map +1 -0
- package/dist/utils/log-utils.js +190 -0
- package/dist/utils/log-utils.js.map +1 -0
- package/dist/utils/process-utils.d.ts +19 -1
- package/dist/utils/process-utils.d.ts.map +1 -1
- package/dist/utils/process-utils.js +79 -1
- package/dist/utils/process-utils.js.map +1 -1
- package/docs/images/.gitkeep +1 -0
- package/package.json +3 -1
- package/src/cli.ts +32 -7
- package/src/commands/config.ts +15 -1
- package/src/commands/create.ts +14 -5
- package/src/commands/delete.ts +10 -10
- package/src/commands/logs-all.ts +251 -0
- package/src/commands/logs.ts +138 -2
- package/src/commands/monitor.ts +21 -1
- package/src/commands/ps.ts +88 -5
- package/src/commands/rm.ts +5 -12
- package/src/commands/server-show.ts +35 -3
- package/src/commands/start.ts +35 -7
- package/src/commands/stop.ts +3 -3
- package/src/lib/history-manager.ts +172 -0
- package/src/lib/metrics-aggregator.ts +18 -5
- package/src/lib/system-collector.ts +31 -28
- package/src/tui/HistoricalMonitorApp.ts +548 -0
- package/src/tui/MonitorApp.ts +89 -64
- package/src/tui/MultiServerMonitorApp.ts +348 -103
- package/src/types/history-types.ts +39 -0
- package/src/types/monitor-types.ts +1 -0
- package/src/types/server-config.ts +1 -0
- package/src/utils/downsample-utils.ts +128 -0
- package/src/utils/file-utils.ts +40 -0
- package/src/utils/log-utils.ts +178 -0
- package/src/utils/process-utils.ts +85 -1
- package/test-load.sh +100 -0
- package/dist/tui/components/ErrorState.d.ts +0 -8
- package/dist/tui/components/ErrorState.d.ts.map +0 -1
- package/dist/tui/components/ErrorState.js +0 -22
- package/dist/tui/components/ErrorState.js.map +0 -1
- package/dist/tui/components/LoadingState.d.ts +0 -8
- package/dist/tui/components/LoadingState.d.ts.map +0 -1
- package/dist/tui/components/LoadingState.js +0 -21
- package/dist/tui/components/LoadingState.js.map +0 -1
|
@@ -40,23 +40,30 @@ exports.createMultiServerMonitorUI = createMultiServerMonitorUI;
|
|
|
40
40
|
const blessed_1 = __importDefault(require("blessed"));
|
|
41
41
|
const metrics_aggregator_js_1 = require("../lib/metrics-aggregator.js");
|
|
42
42
|
const system_collector_js_1 = require("../lib/system-collector.js");
|
|
43
|
-
|
|
43
|
+
const history_manager_js_1 = require("../lib/history-manager.js");
|
|
44
|
+
const HistoricalMonitorApp_js_1 = require("./HistoricalMonitorApp.js");
|
|
45
|
+
async function createMultiServerMonitorUI(screen, servers, _fromPs = false, directJumpIndex) {
|
|
44
46
|
let updateInterval = 2000;
|
|
45
47
|
let intervalId = null;
|
|
46
|
-
let viewMode = 'list';
|
|
47
|
-
let selectedServerIndex = 0;
|
|
48
|
+
let viewMode = directJumpIndex !== undefined ? 'detail' : 'list';
|
|
49
|
+
let selectedServerIndex = directJumpIndex ?? 0;
|
|
50
|
+
let selectedRowIndex = directJumpIndex ?? 0; // Track which row is highlighted in list view
|
|
48
51
|
let isLoading = false;
|
|
49
52
|
let lastSystemMetrics = null;
|
|
53
|
+
let cameFromDirectJump = directJumpIndex !== undefined; // Track if we entered via ps <id>
|
|
54
|
+
let inHistoricalView = false; // Track whether we're in historical view to prevent key conflicts
|
|
50
55
|
// Spinner animation
|
|
51
56
|
const spinnerFrames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
52
57
|
let spinnerFrameIndex = 0;
|
|
53
58
|
let spinnerIntervalId = null;
|
|
54
59
|
const systemCollector = new system_collector_js_1.SystemCollector();
|
|
55
60
|
const aggregators = new Map();
|
|
61
|
+
const historyManagers = new Map();
|
|
56
62
|
const serverDataMap = new Map();
|
|
57
|
-
// Initialize aggregators for each server
|
|
63
|
+
// Initialize aggregators and history managers for each server
|
|
58
64
|
for (const server of servers) {
|
|
59
65
|
aggregators.set(server.id, new metrics_aggregator_js_1.MetricsAggregator(server));
|
|
66
|
+
historyManagers.set(server.id, new history_manager_js_1.HistoryManager(server.id));
|
|
60
67
|
serverDataMap.set(server.id, {
|
|
61
68
|
server,
|
|
62
69
|
data: null,
|
|
@@ -89,7 +96,7 @@ async function createMultiServerMonitorUI(screen, servers) {
|
|
|
89
96
|
const empty = width - filled;
|
|
90
97
|
return '[' + '█'.repeat(Math.max(0, filled)) + '░'.repeat(Math.max(0, empty)) + ']';
|
|
91
98
|
}
|
|
92
|
-
// Render system resources section
|
|
99
|
+
// Render system resources section (system-wide for list view)
|
|
93
100
|
function renderSystemResources(systemMetrics) {
|
|
94
101
|
let content = '';
|
|
95
102
|
content += '{bold}System Resources{/bold}\n';
|
|
@@ -130,6 +137,80 @@ async function createMultiServerMonitorUI(screen, servers) {
|
|
|
130
137
|
}
|
|
131
138
|
return content;
|
|
132
139
|
}
|
|
140
|
+
// Render aggregate model resources (all running servers in list view)
|
|
141
|
+
function renderAggregateModelResources() {
|
|
142
|
+
let content = '';
|
|
143
|
+
content += '{bold}Model Resources{/bold}\n';
|
|
144
|
+
const termWidth = screen.width || 80;
|
|
145
|
+
const divider = '─'.repeat(termWidth - 2);
|
|
146
|
+
content += divider + '\n';
|
|
147
|
+
// Aggregate CPU and memory across all running servers (skip stopped servers)
|
|
148
|
+
let totalCpu = 0;
|
|
149
|
+
let totalMemoryBytes = 0;
|
|
150
|
+
let serverCount = 0;
|
|
151
|
+
for (const serverData of serverDataMap.values()) {
|
|
152
|
+
// Only count running servers with valid data
|
|
153
|
+
if (serverData.server.status === 'running' && serverData.data?.server && !serverData.data.server.stale) {
|
|
154
|
+
if (serverData.data.server.processCpuUsage !== undefined) {
|
|
155
|
+
totalCpu += serverData.data.server.processCpuUsage;
|
|
156
|
+
serverCount++;
|
|
157
|
+
}
|
|
158
|
+
if (serverData.data.server.processMemory !== undefined) {
|
|
159
|
+
totalMemoryBytes += serverData.data.server.processMemory;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (serverCount === 0) {
|
|
164
|
+
content += '{gray-fg}No running servers{/gray-fg}\n';
|
|
165
|
+
return content;
|
|
166
|
+
}
|
|
167
|
+
// CPU: Sum of all process CPU percentages
|
|
168
|
+
const cpuBar = createProgressBar(Math.min(totalCpu, 100));
|
|
169
|
+
content += `CPU: {cyan-fg}${cpuBar}{/cyan-fg} ${Math.round(totalCpu)}%`;
|
|
170
|
+
content += ` {gray-fg}(${serverCount} ${serverCount === 1 ? 'server' : 'servers'}){/gray-fg}\n`;
|
|
171
|
+
// Memory: Sum of all process memory
|
|
172
|
+
const totalMemoryGB = totalMemoryBytes / (1024 ** 3);
|
|
173
|
+
const estimatedMaxGB = serverCount * 8; // Assume ~8GB per server max
|
|
174
|
+
const memoryPercentage = Math.min((totalMemoryGB / estimatedMaxGB) * 100, 100);
|
|
175
|
+
const memoryBar = createProgressBar(memoryPercentage);
|
|
176
|
+
content += `Memory: {cyan-fg}${memoryBar}{/cyan-fg} ${totalMemoryGB.toFixed(2)} GB`;
|
|
177
|
+
content += ` {gray-fg}(${serverCount} ${serverCount === 1 ? 'server' : 'servers'}){/gray-fg}\n`;
|
|
178
|
+
return content;
|
|
179
|
+
}
|
|
180
|
+
// Render model resources section (per-process for detail view)
|
|
181
|
+
function renderModelResources(data) {
|
|
182
|
+
let content = '';
|
|
183
|
+
content += '{bold}Model Resources{/bold}\n';
|
|
184
|
+
const termWidth = screen.width || 80;
|
|
185
|
+
const divider = '─'.repeat(termWidth - 2);
|
|
186
|
+
content += divider + '\n';
|
|
187
|
+
// GPU: System-wide (can't get per-process on macOS)
|
|
188
|
+
if (data.system && data.system.gpuUsage !== undefined) {
|
|
189
|
+
const bar = createProgressBar(data.system.gpuUsage);
|
|
190
|
+
content += `GPU: {cyan-fg}${bar}{/cyan-fg} ${Math.round(data.system.gpuUsage)}% {gray-fg}(system){/gray-fg}`;
|
|
191
|
+
if (data.system.temperature !== undefined) {
|
|
192
|
+
content += ` - ${Math.round(data.system.temperature)}°C`;
|
|
193
|
+
}
|
|
194
|
+
content += '\n';
|
|
195
|
+
}
|
|
196
|
+
// CPU: Per-process
|
|
197
|
+
if (data.server.processCpuUsage !== undefined) {
|
|
198
|
+
const bar = createProgressBar(data.server.processCpuUsage);
|
|
199
|
+
content += `CPU: {cyan-fg}${bar}{/cyan-fg} ${Math.round(data.server.processCpuUsage)}%\n`;
|
|
200
|
+
}
|
|
201
|
+
// Memory: Per-process
|
|
202
|
+
if (data.server.processMemory !== undefined) {
|
|
203
|
+
const memoryGB = data.server.processMemory / (1024 ** 3);
|
|
204
|
+
const estimatedMax = 8;
|
|
205
|
+
const memoryPercentage = Math.min((memoryGB / estimatedMax) * 100, 100);
|
|
206
|
+
const bar = createProgressBar(memoryPercentage);
|
|
207
|
+
content += `Memory: {cyan-fg}${bar}{/cyan-fg} ${memoryGB.toFixed(2)} GB\n`;
|
|
208
|
+
}
|
|
209
|
+
if (data.system && data.system.warnings && data.system.warnings.length > 0) {
|
|
210
|
+
content += `\n{yellow-fg}⚠ ${data.system.warnings.join(', ')}{/yellow-fg}\n`;
|
|
211
|
+
}
|
|
212
|
+
return content;
|
|
213
|
+
}
|
|
133
214
|
// Show loading spinner
|
|
134
215
|
function showLoading() {
|
|
135
216
|
if (isLoading)
|
|
@@ -175,47 +256,66 @@ async function createMultiServerMonitorUI(screen, servers) {
|
|
|
175
256
|
const divider = '─'.repeat(termWidth - 2);
|
|
176
257
|
let content = '';
|
|
177
258
|
// Header
|
|
178
|
-
content += '{bold}{blue-fg}═══ llama.cpp
|
|
179
|
-
// Status line with optional spinner
|
|
180
|
-
const statusPlainText = 'Press 1-9 for details | [F] Filter | [Q] Quit';
|
|
181
|
-
const spinnerChar = isLoading ? spinnerFrames[spinnerFrameIndex] : '';
|
|
182
|
-
const spinnerText = spinnerChar ? ` {cyan-fg}${spinnerChar}{/cyan-fg}` : '';
|
|
183
|
-
content += `{gray-fg}${statusPlainText}${spinnerText}{/gray-fg}\n\n`;
|
|
259
|
+
content += '{bold}{blue-fg}═══ llama.cpp{/blue-fg}{/bold}\n\n';
|
|
184
260
|
// System resources
|
|
185
261
|
content += renderSystemResources(systemMetrics);
|
|
186
262
|
content += '\n';
|
|
263
|
+
// Aggregate model resources (CPU + memory for all running servers)
|
|
264
|
+
content += renderAggregateModelResources();
|
|
265
|
+
content += '\n';
|
|
187
266
|
// Server list header
|
|
188
267
|
const runningCount = servers.filter(s => s.status === 'running').length;
|
|
189
268
|
const stoppedCount = servers.filter(s => s.status !== 'running').length;
|
|
190
269
|
content += `{bold}Servers (${runningCount} running, ${stoppedCount} stopped){/bold}\n`;
|
|
191
|
-
content += '{gray-fg}
|
|
270
|
+
content += '{gray-fg}Use arrow keys to navigate, Enter to view details{/gray-fg}\n';
|
|
192
271
|
content += divider + '\n';
|
|
193
|
-
//
|
|
194
|
-
|
|
272
|
+
// Calculate Server ID column width (variable based on screen width)
|
|
273
|
+
// Fixed columns breakdown:
|
|
274
|
+
// indicator(1) + " │ "(3) + " │ "(3) + port(4) + " │ "(3) + status(6) + "│ "(2) +
|
|
275
|
+
// slots(5) + " │ "(3) + tok/s(6) + " │ "(3) + memory(7) = 46
|
|
276
|
+
const fixedColumnsWidth = 48; // Add 2 extra for safety margin
|
|
277
|
+
const minServerIdWidth = 20;
|
|
278
|
+
const maxServerIdWidth = 60;
|
|
279
|
+
const serverIdWidth = Math.max(minServerIdWidth, Math.min(maxServerIdWidth, termWidth - fixedColumnsWidth));
|
|
280
|
+
// Table header with variable Server ID width
|
|
281
|
+
const serverIdHeader = 'Server ID'.padEnd(serverIdWidth);
|
|
282
|
+
content += `{bold} │ ${serverIdHeader}│ Port │ Status │ Slots │ tok/s │ Memory{/bold}\n`;
|
|
195
283
|
content += divider + '\n';
|
|
196
284
|
// Server rows
|
|
197
285
|
servers.forEach((server, index) => {
|
|
198
286
|
const serverData = serverDataMap.get(server.id);
|
|
199
|
-
const
|
|
200
|
-
//
|
|
201
|
-
|
|
287
|
+
const isSelected = index === selectedRowIndex;
|
|
288
|
+
// Selection indicator (arrow for selected row)
|
|
289
|
+
// Use plain arrow for selected (will be white), colored for unselected indicator
|
|
290
|
+
const indicator = isSelected ? '►' : ' ';
|
|
291
|
+
// Server ID (variable width, truncate if longer than available space)
|
|
292
|
+
const serverId = server.id.padEnd(serverIdWidth).substring(0, serverIdWidth);
|
|
202
293
|
// Port
|
|
203
294
|
const port = server.port.toString().padStart(4);
|
|
204
|
-
// Status
|
|
295
|
+
// Status - Check actual server status first, then health
|
|
296
|
+
// Build two versions: colored for normal, plain for selected
|
|
205
297
|
let status = '';
|
|
206
|
-
|
|
298
|
+
let statusPlain = '';
|
|
299
|
+
if (server.status !== 'running') {
|
|
300
|
+
// Server is stopped according to config
|
|
301
|
+
status = '{gray-fg}○ OFF{/gray-fg} ';
|
|
302
|
+
statusPlain = '○ OFF ';
|
|
303
|
+
}
|
|
304
|
+
else if (serverData?.data) {
|
|
305
|
+
// Server is running and we have data
|
|
207
306
|
if (serverData.data.server.healthy) {
|
|
208
307
|
status = '{green-fg}● RUN{/green-fg} ';
|
|
308
|
+
statusPlain = '● RUN ';
|
|
209
309
|
}
|
|
210
310
|
else {
|
|
211
311
|
status = '{red-fg}● ERR{/red-fg} ';
|
|
312
|
+
statusPlain = '● ERR ';
|
|
212
313
|
}
|
|
213
314
|
}
|
|
214
|
-
else if (server.status === 'running') {
|
|
215
|
-
status = '{yellow-fg}● ...{/yellow-fg} ';
|
|
216
|
-
}
|
|
217
315
|
else {
|
|
218
|
-
|
|
316
|
+
// Server is running but no data yet (still loading)
|
|
317
|
+
status = '{yellow-fg}● ...{/yellow-fg} ';
|
|
318
|
+
statusPlain = '● ... ';
|
|
219
319
|
}
|
|
220
320
|
// Slots
|
|
221
321
|
let slots = '- ';
|
|
@@ -244,12 +344,22 @@ async function createMultiServerMonitorUI(screen, servers) {
|
|
|
244
344
|
memory = `${mb} MB`.padStart(7);
|
|
245
345
|
}
|
|
246
346
|
}
|
|
247
|
-
|
|
347
|
+
// Build row content - use plain status for selected rows
|
|
348
|
+
let rowContent = '';
|
|
349
|
+
if (isSelected) {
|
|
350
|
+
// Use color code 15 (bright white) with cyan background
|
|
351
|
+
// When white-bg worked, it was probably auto-selecting bright white fg
|
|
352
|
+
rowContent = `{cyan-bg}{15-fg}${indicator} │ ${serverId} │ ${port} │ ${statusPlain}│ ${slots} │ ${tokensPerSec} │ ${memory}{/15-fg}{/cyan-bg}`;
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
// Use colored status for normal rows
|
|
356
|
+
rowContent = `${indicator} │ ${serverId} │ ${port} │ ${status}│ ${slots} │ ${tokensPerSec} │ ${memory}`;
|
|
357
|
+
}
|
|
358
|
+
content += rowContent + '\n';
|
|
248
359
|
});
|
|
249
360
|
// Footer
|
|
250
361
|
content += '\n' + divider + '\n';
|
|
251
|
-
content += `{gray-fg}Updated: ${new Date().toLocaleTimeString()} | `;
|
|
252
|
-
content += `Interval: ${updateInterval}ms | [R]efresh [+/-]Speed{/gray-fg}`;
|
|
362
|
+
content += `{gray-fg}Updated: ${new Date().toLocaleTimeString()} | [H]istory [Q]uit{/gray-fg}`;
|
|
253
363
|
return content;
|
|
254
364
|
}
|
|
255
365
|
// Render detail view for selected server
|
|
@@ -260,20 +370,53 @@ async function createMultiServerMonitorUI(screen, servers) {
|
|
|
260
370
|
const divider = '─'.repeat(termWidth - 2);
|
|
261
371
|
let content = '';
|
|
262
372
|
// Header
|
|
263
|
-
content += `{bold}{blue-fg}═══
|
|
264
|
-
//
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
373
|
+
content += `{bold}{blue-fg}═══ ${server.id} (${server.port}){/blue-fg}{/bold}\n\n`;
|
|
374
|
+
// Check if server is stopped
|
|
375
|
+
if (server.status !== 'running') {
|
|
376
|
+
// Show stopped server configuration (no metrics)
|
|
377
|
+
content += '{bold}Server Information{/bold}\n';
|
|
378
|
+
content += divider + '\n';
|
|
379
|
+
content += `Status: {gray-fg}○ STOPPED{/gray-fg}\n`;
|
|
380
|
+
content += `Model: ${server.modelName}\n`;
|
|
381
|
+
const displayHost = server.host || '127.0.0.1';
|
|
382
|
+
content += `Endpoint: http://${displayHost}:${server.port}\n`;
|
|
383
|
+
content += '\n';
|
|
384
|
+
content += '{bold}Configuration{/bold}\n';
|
|
385
|
+
content += divider + '\n';
|
|
386
|
+
content += `Threads: ${server.threads}\n`;
|
|
387
|
+
content += `Context: ${server.ctxSize} tokens\n`;
|
|
388
|
+
content += `GPU Layers: ${server.gpuLayers}\n`;
|
|
389
|
+
if (server.verbose) {
|
|
390
|
+
content += `Verbose: Enabled\n`;
|
|
391
|
+
}
|
|
392
|
+
if (server.customFlags && server.customFlags.length > 0) {
|
|
393
|
+
content += `Flags: ${server.customFlags.join(', ')}\n`;
|
|
394
|
+
}
|
|
395
|
+
content += '\n';
|
|
396
|
+
if (server.lastStarted) {
|
|
397
|
+
content += '{bold}Last Activity{/bold}\n';
|
|
398
|
+
content += divider + '\n';
|
|
399
|
+
content += `Started: ${new Date(server.lastStarted).toLocaleString()}\n`;
|
|
400
|
+
if (server.lastStopped) {
|
|
401
|
+
content += `Stopped: ${new Date(server.lastStopped).toLocaleString()}\n`;
|
|
402
|
+
}
|
|
403
|
+
content += '\n';
|
|
404
|
+
}
|
|
405
|
+
content += '{bold}Quick Actions{/bold}\n';
|
|
406
|
+
content += divider + '\n';
|
|
407
|
+
content += `{dim}Start server: llamacpp server start ${server.port}{/dim}\n`;
|
|
408
|
+
content += `{dim}Update config: llamacpp server config ${server.port} [options]{/dim}\n`;
|
|
409
|
+
content += `{dim}View logs: llamacpp server logs ${server.port}{/dim}\n`;
|
|
410
|
+
return content;
|
|
411
|
+
}
|
|
272
412
|
if (!serverData?.data) {
|
|
273
413
|
content += '{yellow-fg}Loading server data...{/yellow-fg}\n';
|
|
274
414
|
return content;
|
|
275
415
|
}
|
|
276
416
|
const data = serverData.data;
|
|
417
|
+
// Model resources (per-process)
|
|
418
|
+
content += renderModelResources(data);
|
|
419
|
+
content += '\n';
|
|
277
420
|
// Server Information
|
|
278
421
|
content += '{bold}Server Information{/bold}\n';
|
|
279
422
|
content += divider + '\n';
|
|
@@ -291,22 +434,7 @@ async function createMultiServerMonitorUI(screen, servers) {
|
|
|
291
434
|
content += '\n';
|
|
292
435
|
// Handle null host (legacy configs) by defaulting to 127.0.0.1
|
|
293
436
|
const displayHost = server.host || '127.0.0.1';
|
|
294
|
-
content += `Endpoint: http://${displayHost}:${server.port}`;
|
|
295
|
-
// Add actual process memory (if available)
|
|
296
|
-
if (data.server.processMemory) {
|
|
297
|
-
const bytes = data.server.processMemory;
|
|
298
|
-
let memStr;
|
|
299
|
-
if (bytes >= 1024 * 1024 * 1024) {
|
|
300
|
-
memStr = `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;
|
|
301
|
-
}
|
|
302
|
-
else {
|
|
303
|
-
memStr = `${Math.round(bytes / (1024 * 1024))} MB`;
|
|
304
|
-
}
|
|
305
|
-
content += ` Memory: ${memStr}\n`;
|
|
306
|
-
}
|
|
307
|
-
else {
|
|
308
|
-
content += '\n';
|
|
309
|
-
}
|
|
437
|
+
content += `Endpoint: http://${displayHost}:${server.port}\n`;
|
|
310
438
|
content += `Slots: ${data.server.activeSlots} active / ${data.server.totalSlots} total\n`;
|
|
311
439
|
content += '\n';
|
|
312
440
|
// Request Metrics
|
|
@@ -348,8 +476,7 @@ async function createMultiServerMonitorUI(screen, servers) {
|
|
|
348
476
|
}
|
|
349
477
|
// Footer
|
|
350
478
|
content += divider + '\n';
|
|
351
|
-
content += `{gray-fg}Updated: ${data.lastUpdated.toLocaleTimeString()} | `;
|
|
352
|
-
content += `Interval: ${updateInterval}ms | [R]efresh [+/-]Speed{/gray-fg}`;
|
|
479
|
+
content += `{gray-fg}Updated: ${data.lastUpdated.toLocaleTimeString()} | [H]istory [ESC] Back [Q]uit{/gray-fg}`;
|
|
353
480
|
return content;
|
|
354
481
|
}
|
|
355
482
|
// Fetch and update display
|
|
@@ -358,23 +485,28 @@ async function createMultiServerMonitorUI(screen, servers) {
|
|
|
358
485
|
// Collect system metrics ONCE for all servers (not per-server)
|
|
359
486
|
// This prevents spawning multiple macmon processes
|
|
360
487
|
const systemMetricsPromise = systemCollector.collectSystemMetrics();
|
|
361
|
-
// Batch collect process memory for ALL servers in
|
|
488
|
+
// Batch collect process memory and CPU for ALL servers in parallel
|
|
362
489
|
// This prevents spawning multiple top processes (5x speedup)
|
|
363
|
-
const { getBatchProcessMemory } = await Promise.resolve().then(() => __importStar(require('../utils/process-utils.js')));
|
|
490
|
+
const { getBatchProcessMemory, getBatchProcessCpu } = await Promise.resolve().then(() => __importStar(require('../utils/process-utils.js')));
|
|
364
491
|
const pids = servers.filter(s => s.pid).map(s => s.pid);
|
|
365
492
|
const memoryMapPromise = pids.length > 0
|
|
366
493
|
? getBatchProcessMemory(pids)
|
|
367
494
|
: Promise.resolve(new Map());
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
495
|
+
const cpuMapPromise = pids.length > 0
|
|
496
|
+
? getBatchProcessCpu(pids)
|
|
497
|
+
: Promise.resolve(new Map());
|
|
498
|
+
// Wait for both batches to complete
|
|
499
|
+
const [memoryMap, cpuMap] = await Promise.all([memoryMapPromise, cpuMapPromise]);
|
|
500
|
+
// Collect server metrics only for RUNNING servers (skip stopped servers)
|
|
501
|
+
const promises = servers
|
|
502
|
+
.filter(server => server.status === 'running')
|
|
503
|
+
.map(async (server) => {
|
|
372
504
|
const aggregator = aggregators.get(server.id);
|
|
373
505
|
try {
|
|
374
506
|
// Use collectServerMetrics instead of collectMonitorData
|
|
375
507
|
// to avoid spawning macmon per server
|
|
376
|
-
// Pass pre-fetched memory to avoid spawning top per server
|
|
377
|
-
const serverMetrics = await aggregator.collectServerMetrics(server, server.pid ? memoryMap.get(server.pid) ?? null : null);
|
|
508
|
+
// Pass pre-fetched memory and CPU to avoid spawning top per server
|
|
509
|
+
const serverMetrics = await aggregator.collectServerMetrics(server, server.pid ? memoryMap.get(server.pid) ?? null : null, server.pid ? cpuMap.get(server.pid) ?? null : null);
|
|
378
510
|
// Build MonitorData manually with shared system metrics
|
|
379
511
|
const data = {
|
|
380
512
|
server: serverMetrics,
|
|
@@ -397,6 +529,16 @@ async function createMultiServerMonitorUI(screen, servers) {
|
|
|
397
529
|
});
|
|
398
530
|
}
|
|
399
531
|
});
|
|
532
|
+
// Set null data for stopped servers (no metrics collection)
|
|
533
|
+
servers
|
|
534
|
+
.filter(server => server.status !== 'running')
|
|
535
|
+
.forEach(server => {
|
|
536
|
+
serverDataMap.set(server.id, {
|
|
537
|
+
server,
|
|
538
|
+
data: null,
|
|
539
|
+
error: null,
|
|
540
|
+
});
|
|
541
|
+
});
|
|
400
542
|
// Wait for both system metrics and server metrics to complete
|
|
401
543
|
const systemMetrics = await systemMetricsPromise;
|
|
402
544
|
await Promise.all(promises);
|
|
@@ -408,6 +550,18 @@ async function createMultiServerMonitorUI(screen, servers) {
|
|
|
408
550
|
serverData.data.system = systemMetrics;
|
|
409
551
|
}
|
|
410
552
|
}
|
|
553
|
+
// Append to history for each server (silent failure)
|
|
554
|
+
// Only save history for servers that are healthy and not stale
|
|
555
|
+
for (const [serverId, serverData] of serverDataMap) {
|
|
556
|
+
if (serverData.data && !serverData.data.server.stale && serverData.data.server.healthy) {
|
|
557
|
+
const manager = historyManagers.get(serverId);
|
|
558
|
+
manager?.appendSnapshot(serverData.data.server, serverData.data.system)
|
|
559
|
+
.catch(err => {
|
|
560
|
+
// Don't interrupt monitoring on history write failure
|
|
561
|
+
console.error(`Failed to save history for ${serverId}:`, err);
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
}
|
|
411
565
|
// Render once with complete data
|
|
412
566
|
let content = '';
|
|
413
567
|
if (viewMode === 'list') {
|
|
@@ -438,36 +592,98 @@ async function createMultiServerMonitorUI(screen, servers) {
|
|
|
438
592
|
fetchData();
|
|
439
593
|
intervalId = setInterval(fetchData, updateInterval);
|
|
440
594
|
}
|
|
441
|
-
// Keyboard shortcuts - List view
|
|
442
|
-
screen.key(['
|
|
443
|
-
|
|
444
|
-
|
|
595
|
+
// Keyboard shortcuts - List view navigation with arrow keys
|
|
596
|
+
screen.key(['up', 'k'], () => {
|
|
597
|
+
if (viewMode === 'list') {
|
|
598
|
+
selectedRowIndex = Math.max(0, selectedRowIndex - 1);
|
|
599
|
+
// Re-render immediately for responsive feel
|
|
600
|
+
const content = renderListView(lastSystemMetrics);
|
|
601
|
+
contentBox.setContent(content);
|
|
602
|
+
screen.render();
|
|
603
|
+
}
|
|
604
|
+
});
|
|
605
|
+
screen.key(['down', 'j'], () => {
|
|
606
|
+
if (viewMode === 'list') {
|
|
607
|
+
selectedRowIndex = Math.min(servers.length - 1, selectedRowIndex + 1);
|
|
608
|
+
// Re-render immediately for responsive feel
|
|
609
|
+
const content = renderListView(lastSystemMetrics);
|
|
610
|
+
contentBox.setContent(content);
|
|
611
|
+
screen.render();
|
|
612
|
+
}
|
|
613
|
+
});
|
|
614
|
+
// Enter key to view details for selected server
|
|
615
|
+
screen.key(['enter'], () => {
|
|
616
|
+
if (viewMode === 'list') {
|
|
445
617
|
showLoading();
|
|
446
|
-
selectedServerIndex =
|
|
618
|
+
selectedServerIndex = selectedRowIndex;
|
|
447
619
|
viewMode = 'detail';
|
|
448
620
|
fetchData();
|
|
449
621
|
}
|
|
450
622
|
});
|
|
451
623
|
// Keyboard shortcuts - Detail view
|
|
452
624
|
screen.key(['escape'], () => {
|
|
625
|
+
// Don't handle ESC if we're in historical view - let historical view handle it
|
|
626
|
+
if (inHistoricalView)
|
|
627
|
+
return;
|
|
453
628
|
if (viewMode === 'detail') {
|
|
454
629
|
showLoading();
|
|
455
630
|
viewMode = 'list';
|
|
631
|
+
cameFromDirectJump = false; // Clear direct jump flag when returning to list
|
|
456
632
|
fetchData();
|
|
457
633
|
}
|
|
634
|
+
else if (viewMode === 'list') {
|
|
635
|
+
// ESC in list view - exit
|
|
636
|
+
showLoading();
|
|
637
|
+
if (intervalId)
|
|
638
|
+
clearInterval(intervalId);
|
|
639
|
+
if (spinnerIntervalId)
|
|
640
|
+
clearInterval(spinnerIntervalId);
|
|
641
|
+
setTimeout(() => {
|
|
642
|
+
screen.destroy();
|
|
643
|
+
process.exit(0);
|
|
644
|
+
}, 100);
|
|
645
|
+
}
|
|
458
646
|
});
|
|
459
647
|
// Keyboard shortcuts - Common
|
|
460
|
-
screen.key(['
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
648
|
+
screen.key(['h', 'H'], async () => {
|
|
649
|
+
// Prevent entering historical view if already there
|
|
650
|
+
if (inHistoricalView)
|
|
651
|
+
return;
|
|
652
|
+
// Keep polling in background for live historical updates
|
|
653
|
+
// Stop spinner if running
|
|
654
|
+
if (spinnerIntervalId)
|
|
655
|
+
clearInterval(spinnerIntervalId);
|
|
656
|
+
// Remove current content box
|
|
657
|
+
screen.remove(contentBox);
|
|
658
|
+
// Mark that we're in historical view
|
|
659
|
+
inHistoricalView = true;
|
|
660
|
+
if (viewMode === 'list') {
|
|
661
|
+
// Show multi-server historical view
|
|
662
|
+
await (0, HistoricalMonitorApp_js_1.createMultiServerHistoricalUI)(screen, servers, selectedServerIndex, () => {
|
|
663
|
+
// Mark that we've left historical view
|
|
664
|
+
inHistoricalView = false;
|
|
665
|
+
// Re-attach content box when returning from history
|
|
666
|
+
screen.append(contentBox);
|
|
667
|
+
// Re-render the list view
|
|
668
|
+
const content = renderListView(lastSystemMetrics);
|
|
669
|
+
contentBox.setContent(content);
|
|
670
|
+
screen.render();
|
|
671
|
+
});
|
|
672
|
+
}
|
|
673
|
+
else {
|
|
674
|
+
// Show single-server historical view for selected server
|
|
675
|
+
const selectedServer = servers[selectedServerIndex];
|
|
676
|
+
await (0, HistoricalMonitorApp_js_1.createHistoricalUI)(screen, selectedServer, () => {
|
|
677
|
+
// Mark that we've left historical view
|
|
678
|
+
inHistoricalView = false;
|
|
679
|
+
// Re-attach content box when returning from history
|
|
680
|
+
screen.append(contentBox);
|
|
681
|
+
// Re-render the detail view
|
|
682
|
+
const content = renderDetailView(lastSystemMetrics);
|
|
683
|
+
contentBox.setContent(content);
|
|
684
|
+
screen.render();
|
|
685
|
+
});
|
|
686
|
+
}
|
|
471
687
|
});
|
|
472
688
|
screen.key(['q', 'Q', 'C-c'], () => {
|
|
473
689
|
showLoading();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiServerMonitorApp.js","sourceRoot":"","sources":["../../src/tui/MultiServerMonitorApp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MultiServerMonitorApp.js","sourceRoot":"","sources":["../../src/tui/MultiServerMonitorApp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface HistorySnapshot {
|
|
2
|
+
timestamp: number;
|
|
3
|
+
server: {
|
|
4
|
+
healthy: boolean;
|
|
5
|
+
uptime?: string;
|
|
6
|
+
activeSlots: number;
|
|
7
|
+
idleSlots: number;
|
|
8
|
+
totalSlots: number;
|
|
9
|
+
avgPromptSpeed?: number;
|
|
10
|
+
avgGenerateSpeed?: number;
|
|
11
|
+
processMemory?: number;
|
|
12
|
+
processCpuUsage?: number;
|
|
13
|
+
};
|
|
14
|
+
system?: {
|
|
15
|
+
gpuUsage?: number;
|
|
16
|
+
cpuUsage?: number;
|
|
17
|
+
aneUsage?: number;
|
|
18
|
+
temperature?: number;
|
|
19
|
+
memoryUsed: number;
|
|
20
|
+
memoryTotal: number;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export interface HistoryData {
|
|
24
|
+
serverId: string;
|
|
25
|
+
snapshots: HistorySnapshot[];
|
|
26
|
+
}
|
|
27
|
+
export type TimeWindow = '1h' | '6h' | '24h';
|
|
28
|
+
export declare const TIME_WINDOW_HOURS: Record<TimeWindow, number>;
|
|
29
|
+
export declare const TIME_WINDOWS: TimeWindow[];
|
|
30
|
+
//# sourceMappingURL=history-types.d.ts.map
|