@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.
Files changed (124) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/MONITORING-ACCURACY-FIX.md +199 -0
  3. package/PER-PROCESS-METRICS.md +190 -0
  4. package/README.md +124 -9
  5. package/dist/cli.js +32 -7
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/config.d.ts.map +1 -1
  8. package/dist/commands/config.js +15 -1
  9. package/dist/commands/config.js.map +1 -1
  10. package/dist/commands/create.d.ts.map +1 -1
  11. package/dist/commands/create.js +12 -4
  12. package/dist/commands/create.js.map +1 -1
  13. package/dist/commands/delete.js +12 -10
  14. package/dist/commands/delete.js.map +1 -1
  15. package/dist/commands/logs-all.d.ts +9 -0
  16. package/dist/commands/logs-all.d.ts.map +1 -0
  17. package/dist/commands/logs-all.js +209 -0
  18. package/dist/commands/logs-all.js.map +1 -0
  19. package/dist/commands/logs.d.ts +4 -0
  20. package/dist/commands/logs.d.ts.map +1 -1
  21. package/dist/commands/logs.js +108 -2
  22. package/dist/commands/logs.js.map +1 -1
  23. package/dist/commands/monitor.d.ts.map +1 -1
  24. package/dist/commands/monitor.js +51 -1
  25. package/dist/commands/monitor.js.map +1 -1
  26. package/dist/commands/ps.d.ts +3 -1
  27. package/dist/commands/ps.d.ts.map +1 -1
  28. package/dist/commands/ps.js +75 -5
  29. package/dist/commands/ps.js.map +1 -1
  30. package/dist/commands/rm.d.ts.map +1 -1
  31. package/dist/commands/rm.js +5 -12
  32. package/dist/commands/rm.js.map +1 -1
  33. package/dist/commands/server-show.d.ts.map +1 -1
  34. package/dist/commands/server-show.js +30 -3
  35. package/dist/commands/server-show.js.map +1 -1
  36. package/dist/commands/start.d.ts.map +1 -1
  37. package/dist/commands/start.js +34 -7
  38. package/dist/commands/start.js.map +1 -1
  39. package/dist/commands/stop.js +3 -3
  40. package/dist/commands/stop.js.map +1 -1
  41. package/dist/lib/history-manager.d.ts +46 -0
  42. package/dist/lib/history-manager.d.ts.map +1 -0
  43. package/dist/lib/history-manager.js +157 -0
  44. package/dist/lib/history-manager.js.map +1 -0
  45. package/dist/lib/metrics-aggregator.d.ts +2 -1
  46. package/dist/lib/metrics-aggregator.d.ts.map +1 -1
  47. package/dist/lib/metrics-aggregator.js +15 -4
  48. package/dist/lib/metrics-aggregator.js.map +1 -1
  49. package/dist/lib/system-collector.d.ts +9 -4
  50. package/dist/lib/system-collector.d.ts.map +1 -1
  51. package/dist/lib/system-collector.js +29 -28
  52. package/dist/lib/system-collector.js.map +1 -1
  53. package/dist/tui/HistoricalMonitorApp.d.ts +5 -0
  54. package/dist/tui/HistoricalMonitorApp.d.ts.map +1 -0
  55. package/dist/tui/HistoricalMonitorApp.js +490 -0
  56. package/dist/tui/HistoricalMonitorApp.js.map +1 -0
  57. package/dist/tui/MonitorApp.d.ts.map +1 -1
  58. package/dist/tui/MonitorApp.js +84 -62
  59. package/dist/tui/MonitorApp.js.map +1 -1
  60. package/dist/tui/MultiServerMonitorApp.d.ts +1 -1
  61. package/dist/tui/MultiServerMonitorApp.d.ts.map +1 -1
  62. package/dist/tui/MultiServerMonitorApp.js +293 -77
  63. package/dist/tui/MultiServerMonitorApp.js.map +1 -1
  64. package/dist/types/history-types.d.ts +30 -0
  65. package/dist/types/history-types.d.ts.map +1 -0
  66. package/dist/types/history-types.js +11 -0
  67. package/dist/types/history-types.js.map +1 -0
  68. package/dist/types/monitor-types.d.ts +1 -0
  69. package/dist/types/monitor-types.d.ts.map +1 -1
  70. package/dist/types/server-config.d.ts +1 -0
  71. package/dist/types/server-config.d.ts.map +1 -1
  72. package/dist/types/server-config.js.map +1 -1
  73. package/dist/utils/downsample-utils.d.ts +35 -0
  74. package/dist/utils/downsample-utils.d.ts.map +1 -0
  75. package/dist/utils/downsample-utils.js +107 -0
  76. package/dist/utils/downsample-utils.js.map +1 -0
  77. package/dist/utils/file-utils.d.ts +6 -0
  78. package/dist/utils/file-utils.d.ts.map +1 -1
  79. package/dist/utils/file-utils.js +38 -0
  80. package/dist/utils/file-utils.js.map +1 -1
  81. package/dist/utils/log-utils.d.ts +43 -0
  82. package/dist/utils/log-utils.d.ts.map +1 -0
  83. package/dist/utils/log-utils.js +190 -0
  84. package/dist/utils/log-utils.js.map +1 -0
  85. package/dist/utils/process-utils.d.ts +19 -1
  86. package/dist/utils/process-utils.d.ts.map +1 -1
  87. package/dist/utils/process-utils.js +79 -1
  88. package/dist/utils/process-utils.js.map +1 -1
  89. package/docs/images/.gitkeep +1 -0
  90. package/package.json +3 -1
  91. package/src/cli.ts +32 -7
  92. package/src/commands/config.ts +15 -1
  93. package/src/commands/create.ts +14 -5
  94. package/src/commands/delete.ts +10 -10
  95. package/src/commands/logs-all.ts +251 -0
  96. package/src/commands/logs.ts +138 -2
  97. package/src/commands/monitor.ts +21 -1
  98. package/src/commands/ps.ts +88 -5
  99. package/src/commands/rm.ts +5 -12
  100. package/src/commands/server-show.ts +35 -3
  101. package/src/commands/start.ts +35 -7
  102. package/src/commands/stop.ts +3 -3
  103. package/src/lib/history-manager.ts +172 -0
  104. package/src/lib/metrics-aggregator.ts +18 -5
  105. package/src/lib/system-collector.ts +31 -28
  106. package/src/tui/HistoricalMonitorApp.ts +548 -0
  107. package/src/tui/MonitorApp.ts +89 -64
  108. package/src/tui/MultiServerMonitorApp.ts +348 -103
  109. package/src/types/history-types.ts +39 -0
  110. package/src/types/monitor-types.ts +1 -0
  111. package/src/types/server-config.ts +1 -0
  112. package/src/utils/downsample-utils.ts +128 -0
  113. package/src/utils/file-utils.ts +40 -0
  114. package/src/utils/log-utils.ts +178 -0
  115. package/src/utils/process-utils.ts +85 -1
  116. package/test-load.sh +100 -0
  117. package/dist/tui/components/ErrorState.d.ts +0 -8
  118. package/dist/tui/components/ErrorState.d.ts.map +0 -1
  119. package/dist/tui/components/ErrorState.js +0 -22
  120. package/dist/tui/components/ErrorState.js.map +0 -1
  121. package/dist/tui/components/LoadingState.d.ts +0 -8
  122. package/dist/tui/components/LoadingState.d.ts.map +0 -1
  123. package/dist/tui/components/LoadingState.js +0 -21
  124. 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
- async function createMultiServerMonitorUI(screen, servers) {
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 Multi-Server Monitor ═══{/blue-fg}{/bold}\n';
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}Press number for details{/gray-fg}\n';
270
+ content += '{gray-fg}Use arrow keys to navigate, Enter to view details{/gray-fg}\n';
192
271
  content += divider + '\n';
193
- // Table header
194
- content += '{bold}# │ Server ID │ Port │ Status │ Slots │ tok/s │ Memory{/bold}\n';
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 num = index + 1;
200
- // Server ID (truncate if needed)
201
- const serverId = server.id.padEnd(16).substring(0, 16);
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
- if (serverData?.data) {
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
- status = '{gray-fg}○ STOP{/gray-fg}';
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
- content += `${num} ${serverId} ${port} │ ${status} ${slots} │ ${tokensPerSec} │ ${memory}\n`;
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}═══ Server #${selectedServerIndex + 1}: ${server.id} (${server.port}) ═══{/blue-fg}{/bold}\n`;
264
- // Status line with optional spinner
265
- const statusPlainText = '[ESC] Back to list | [Q] Quit';
266
- const spinnerChar = isLoading ? spinnerFrames[spinnerFrameIndex] : '';
267
- const spinnerText = spinnerChar ? ` {cyan-fg}${spinnerChar}{/cyan-fg}` : '';
268
- content += `{gray-fg}${statusPlainText}${spinnerText}{/gray-fg}\n\n`;
269
- // System resources
270
- content += renderSystemResources(systemMetrics);
271
- content += '\n';
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 one top call
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
- // Wait for memory batch to complete
369
- const memoryMap = await memoryMapPromise;
370
- // Collect server metrics only (NOT system metrics) for each server
371
- const promises = servers.map(async (server) => {
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(['1', '2', '3', '4', '5', '6', '7', '8', '9'], (ch) => {
443
- const index = parseInt(ch, 10) - 1;
444
- if (index >= 0 && index < servers.length) {
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 = index;
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(['r', 'R'], () => {
461
- showLoading();
462
- fetchData();
463
- });
464
- screen.key(['+', '='], () => {
465
- updateInterval = Math.max(500, updateInterval - 500);
466
- startPolling();
467
- });
468
- screen.key(['-', '_'], () => {
469
- updateInterval = Math.min(10000, updateInterval + 500);
470
- startPolling();
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