@appkit/llamacpp-cli 1.9.0 → 1.10.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 (93) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +171 -42
  3. package/dist/cli.js +75 -10
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/completion.d.ts +9 -0
  6. package/dist/commands/completion.d.ts.map +1 -0
  7. package/dist/commands/completion.js +83 -0
  8. package/dist/commands/completion.js.map +1 -0
  9. package/dist/commands/monitor.js +1 -1
  10. package/dist/commands/monitor.js.map +1 -1
  11. package/dist/commands/ps.d.ts +1 -3
  12. package/dist/commands/ps.d.ts.map +1 -1
  13. package/dist/commands/ps.js +36 -115
  14. package/dist/commands/ps.js.map +1 -1
  15. package/dist/commands/router/config.d.ts +1 -0
  16. package/dist/commands/router/config.d.ts.map +1 -1
  17. package/dist/commands/router/config.js +7 -2
  18. package/dist/commands/router/config.js.map +1 -1
  19. package/dist/commands/router/logs.d.ts +12 -0
  20. package/dist/commands/router/logs.d.ts.map +1 -0
  21. package/dist/commands/router/logs.js +238 -0
  22. package/dist/commands/router/logs.js.map +1 -0
  23. package/dist/commands/tui.d.ts +2 -0
  24. package/dist/commands/tui.d.ts.map +1 -0
  25. package/dist/commands/tui.js +27 -0
  26. package/dist/commands/tui.js.map +1 -0
  27. package/dist/lib/completion.d.ts +5 -0
  28. package/dist/lib/completion.d.ts.map +1 -0
  29. package/dist/lib/completion.js +195 -0
  30. package/dist/lib/completion.js.map +1 -0
  31. package/dist/lib/model-downloader.d.ts +5 -1
  32. package/dist/lib/model-downloader.d.ts.map +1 -1
  33. package/dist/lib/model-downloader.js +53 -20
  34. package/dist/lib/model-downloader.js.map +1 -1
  35. package/dist/lib/router-logger.d.ts +61 -0
  36. package/dist/lib/router-logger.d.ts.map +1 -0
  37. package/dist/lib/router-logger.js +200 -0
  38. package/dist/lib/router-logger.js.map +1 -0
  39. package/dist/lib/router-manager.d.ts.map +1 -1
  40. package/dist/lib/router-manager.js +1 -0
  41. package/dist/lib/router-manager.js.map +1 -1
  42. package/dist/lib/router-server.d.ts +9 -0
  43. package/dist/lib/router-server.d.ts.map +1 -1
  44. package/dist/lib/router-server.js +169 -57
  45. package/dist/lib/router-server.js.map +1 -1
  46. package/dist/tui/ConfigApp.d.ts +7 -0
  47. package/dist/tui/ConfigApp.d.ts.map +1 -0
  48. package/dist/tui/ConfigApp.js +1002 -0
  49. package/dist/tui/ConfigApp.js.map +1 -0
  50. package/dist/tui/HistoricalMonitorApp.d.ts.map +1 -1
  51. package/dist/tui/HistoricalMonitorApp.js +85 -49
  52. package/dist/tui/HistoricalMonitorApp.js.map +1 -1
  53. package/dist/tui/ModelsApp.d.ts +7 -0
  54. package/dist/tui/ModelsApp.d.ts.map +1 -0
  55. package/dist/tui/ModelsApp.js +362 -0
  56. package/dist/tui/ModelsApp.js.map +1 -0
  57. package/dist/tui/MultiServerMonitorApp.d.ts +6 -1
  58. package/dist/tui/MultiServerMonitorApp.d.ts.map +1 -1
  59. package/dist/tui/MultiServerMonitorApp.js +1038 -122
  60. package/dist/tui/MultiServerMonitorApp.js.map +1 -1
  61. package/dist/tui/RootNavigator.d.ts +7 -0
  62. package/dist/tui/RootNavigator.d.ts.map +1 -0
  63. package/dist/tui/RootNavigator.js +55 -0
  64. package/dist/tui/RootNavigator.js.map +1 -0
  65. package/dist/tui/SearchApp.d.ts +6 -0
  66. package/dist/tui/SearchApp.d.ts.map +1 -0
  67. package/dist/tui/SearchApp.js +451 -0
  68. package/dist/tui/SearchApp.js.map +1 -0
  69. package/dist/tui/SplashScreen.d.ts +16 -0
  70. package/dist/tui/SplashScreen.d.ts.map +1 -0
  71. package/dist/tui/SplashScreen.js +129 -0
  72. package/dist/tui/SplashScreen.js.map +1 -0
  73. package/dist/types/router-config.d.ts +1 -0
  74. package/dist/types/router-config.d.ts.map +1 -1
  75. package/package.json +1 -1
  76. package/src/cli.ts +41 -10
  77. package/src/commands/monitor.ts +1 -1
  78. package/src/commands/ps.ts +44 -133
  79. package/src/commands/router/config.ts +9 -2
  80. package/src/commands/router/logs.ts +256 -0
  81. package/src/commands/tui.ts +25 -0
  82. package/src/lib/model-downloader.ts +57 -20
  83. package/src/lib/router-logger.ts +201 -0
  84. package/src/lib/router-manager.ts +1 -0
  85. package/src/lib/router-server.ts +193 -62
  86. package/src/tui/ConfigApp.ts +1085 -0
  87. package/src/tui/HistoricalMonitorApp.ts +88 -49
  88. package/src/tui/ModelsApp.ts +368 -0
  89. package/src/tui/MultiServerMonitorApp.ts +1163 -122
  90. package/src/tui/RootNavigator.ts +74 -0
  91. package/src/tui/SearchApp.ts +511 -0
  92. package/src/tui/SplashScreen.ts +149 -0
  93. package/src/types/router-config.ts +1 -0
@@ -1,4 +1,2 @@
1
- export declare function psCommand(identifier?: string, options?: {
2
- table?: boolean;
3
- }): Promise<void>;
1
+ export declare function psCommand(): Promise<void>;
4
2
  //# sourceMappingURL=ps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ps.d.ts","sourceRoot":"","sources":["../../src/commands/ps.ts"],"names":[],"mappings":"AAgGA,wBAAsB,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDjG"}
1
+ {"version":3,"file":"ps.d.ts","sourceRoot":"","sources":["../../src/commands/ps.ts"],"names":[],"mappings":"AA4BA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAuD/C"}
@@ -6,65 +6,52 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.psCommand = psCommand;
7
7
  const chalk_1 = __importDefault(require("chalk"));
8
8
  const cli_table3_1 = __importDefault(require("cli-table3"));
9
- const blessed_1 = __importDefault(require("blessed"));
10
- const state_manager_1 = require("../lib/state-manager");
11
- const status_checker_1 = require("../lib/status-checker");
12
- const format_utils_1 = require("../utils/format-utils");
13
- const process_utils_1 = require("../utils/process-utils");
14
- const MultiServerMonitorApp_js_1 = require("../tui/MultiServerMonitorApp.js");
15
- async function showStaticTable() {
16
- const servers = await state_manager_1.stateManager.getAllServers();
9
+ const state_manager_js_1 = require("../lib/state-manager.js");
10
+ const status_checker_js_1 = require("../lib/status-checker.js");
11
+ const format_utils_js_1 = require("../utils/format-utils.js");
12
+ const process_utils_js_1 = require("../utils/process-utils.js");
13
+ const STATUS_CONFIG = {
14
+ running: { text: '✅ RUNNING', color: chalk_1.default.green },
15
+ crashed: { text: '❌ CRASHED', color: chalk_1.default.red },
16
+ stopped: { text: '⚠️ STOPPED', color: chalk_1.default.yellow },
17
+ };
18
+ async function getServerMemory(server) {
19
+ if (server.status !== 'running' || !server.pid) {
20
+ return '-';
21
+ }
22
+ const cpuMemoryBytes = await (0, process_utils_js_1.getProcessMemory)(server.pid);
23
+ if (cpuMemoryBytes === null) {
24
+ return '-';
25
+ }
26
+ const metalMemoryBytes = server.metalMemoryMB ? server.metalMemoryMB * 1024 * 1024 : 0;
27
+ return (0, format_utils_js_1.formatBytes)(cpuMemoryBytes + metalMemoryBytes);
28
+ }
29
+ async function psCommand() {
30
+ const servers = await state_manager_js_1.stateManager.getAllServers();
17
31
  if (servers.length === 0) {
18
32
  console.log(chalk_1.default.yellow('No servers configured.'));
19
33
  console.log(chalk_1.default.dim('\nCreate a server: llamacpp server create <model-filename>'));
20
34
  return;
21
35
  }
22
- // Update all server statuses
23
36
  console.log(chalk_1.default.dim('Checking server statuses...\n'));
24
- const updated = await status_checker_1.statusChecker.updateAllServerStatuses();
37
+ const serversWithStatus = await status_checker_js_1.statusChecker.updateAllServerStatuses();
25
38
  const table = new cli_table3_1.default({
26
39
  head: ['SERVER ID', 'MODEL', 'PORT', 'STATUS', 'PID', 'MEMORY', 'UPTIME'],
27
40
  });
28
- let runningCount = 0;
29
- let stoppedCount = 0;
30
- let crashedCount = 0;
31
- for (const server of updated) {
32
- let statusText;
33
- let statusColor;
34
- switch (server.status) {
35
- case 'running':
36
- statusText = '✅ RUNNING';
37
- statusColor = chalk_1.default.green;
38
- runningCount++;
39
- break;
40
- case 'crashed':
41
- statusText = '❌ CRASHED';
42
- statusColor = chalk_1.default.red;
43
- crashedCount++;
44
- break;
45
- default:
46
- statusText = '⚠️ STOPPED';
47
- statusColor = chalk_1.default.yellow;
48
- stoppedCount++;
49
- }
41
+ const counts = { running: 0, stopped: 0, crashed: 0 };
42
+ for (const server of serversWithStatus) {
43
+ const status = server.status || 'stopped';
44
+ const config = STATUS_CONFIG[status] || STATUS_CONFIG.stopped;
45
+ counts[status]++;
50
46
  const uptime = server.status === 'running' && server.lastStarted
51
- ? (0, format_utils_1.formatUptime)(server.lastStarted)
47
+ ? (0, format_utils_js_1.formatUptime)(server.lastStarted)
52
48
  : '-';
53
- // Get memory usage for running servers (CPU + Metal GPU memory)
54
- let memoryText = '-';
55
- if (server.status === 'running' && server.pid) {
56
- const cpuMemoryBytes = await (0, process_utils_1.getProcessMemory)(server.pid);
57
- if (cpuMemoryBytes !== null) {
58
- const metalMemoryBytes = server.metalMemoryMB ? server.metalMemoryMB * 1024 * 1024 : 0;
59
- const totalMemoryBytes = cpuMemoryBytes + metalMemoryBytes;
60
- memoryText = (0, format_utils_1.formatBytes)(totalMemoryBytes);
61
- }
62
- }
49
+ const memoryText = await getServerMemory(server);
63
50
  table.push([
64
51
  server.id,
65
52
  server.modelName,
66
53
  server.port.toString(),
67
- statusColor(statusText),
54
+ config.color(config.text),
68
55
  server.pid?.toString() || '-',
69
56
  memoryText,
70
57
  uptime,
@@ -72,81 +59,15 @@ async function showStaticTable() {
72
59
  }
73
60
  console.log(table.toString());
74
61
  const summary = [
75
- chalk_1.default.green(`${runningCount} running`),
76
- chalk_1.default.yellow(`${stoppedCount} stopped`),
62
+ chalk_1.default.green(`${counts.running} running`),
63
+ chalk_1.default.yellow(`${counts.stopped} stopped`),
77
64
  ];
78
- if (crashedCount > 0) {
79
- summary.push(chalk_1.default.red(`${crashedCount} crashed`));
65
+ if (counts.crashed > 0) {
66
+ summary.push(chalk_1.default.red(`${counts.crashed} crashed`));
80
67
  }
81
68
  console.log(chalk_1.default.dim(`\nTotal: ${servers.length} servers (${summary.join(', ')})`));
82
- if (crashedCount > 0) {
69
+ if (counts.crashed > 0) {
83
70
  console.log(chalk_1.default.red('\n⚠️ Some servers have crashed. Check logs with: llamacpp server logs <id> --errors'));
84
71
  }
85
72
  }
86
- async function psCommand(identifier, options) {
87
- // If --table flag is set, show static table (backward compatibility)
88
- if (options?.table) {
89
- await showStaticTable();
90
- return;
91
- }
92
- // Get all servers and update their statuses
93
- const servers = await state_manager_1.stateManager.getAllServers();
94
- if (servers.length === 0) {
95
- console.log(chalk_1.default.yellow('No servers configured.'));
96
- console.log(chalk_1.default.dim('\nCreate a server: llamacpp server create <model-filename>'));
97
- return;
98
- }
99
- // Update all server statuses
100
- const updated = await status_checker_1.statusChecker.updateAllServerStatuses();
101
- // If identifier is provided, find the server and jump to detail view
102
- if (identifier) {
103
- const server = await findServer(identifier, updated);
104
- if (!server) {
105
- console.log(chalk_1.default.red(`❌ Server not found: ${identifier}`));
106
- console.log(chalk_1.default.dim('\nAvailable servers:'));
107
- updated.forEach((s) => {
108
- console.log(chalk_1.default.dim(` - ${s.id} (port ${s.port})`));
109
- });
110
- process.exit(1);
111
- }
112
- // Find the server index for direct jump
113
- const serverIndex = updated.findIndex(s => s.id === server.id);
114
- // Launch multi-server TUI with direct jump to detail view
115
- const screen = blessed_1.default.screen({
116
- smartCSR: true,
117
- title: 'llama.cpp Multi-Server Monitor',
118
- fullUnicode: true,
119
- });
120
- await (0, MultiServerMonitorApp_js_1.createMultiServerMonitorUI)(screen, updated, true, serverIndex); // fromPs = true, directJumpIndex
121
- return;
122
- }
123
- // No identifier - launch multi-server TUI
124
- const runningServers = updated.filter((s) => s.status === 'running');
125
- // Launch multi-server TUI (shows all servers, not just running ones)
126
- const screen = blessed_1.default.screen({
127
- smartCSR: true,
128
- title: 'llama.cpp Multi-Server Monitor',
129
- fullUnicode: true,
130
- });
131
- await (0, MultiServerMonitorApp_js_1.createMultiServerMonitorUI)(screen, updated, true); // fromPs = true
132
- }
133
- // Helper function to find server by identifier
134
- async function findServer(identifier, servers) {
135
- // Try by port
136
- const port = parseInt(identifier);
137
- if (!isNaN(port)) {
138
- const server = servers.find(s => s.port === port);
139
- if (server)
140
- return server;
141
- }
142
- // Try by exact ID
143
- const byId = servers.find(s => s.id === identifier);
144
- if (byId)
145
- return byId;
146
- // Try by partial model name
147
- const byModel = servers.find(s => s.modelName.toLowerCase().includes(identifier.toLowerCase()));
148
- if (byModel)
149
- return byModel;
150
- return null;
151
- }
152
73
  //# sourceMappingURL=ps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ps.js","sourceRoot":"","sources":["../../src/commands/ps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ps.js","sourceRoot":"","sources":["../../src/commands/ps.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ interface ConfigOptions {
3
3
  host?: string;
4
4
  timeout?: number;
5
5
  healthInterval?: number;
6
+ verbose?: boolean;
6
7
  restart?: boolean;
7
8
  }
8
9
  export declare function routerConfigCommand(options: ConfigOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/router/config.ts"],"names":[],"mappings":"AAGA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAiG/E"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/router/config.ts"],"names":[],"mappings":"AAGA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAuG/E"}
@@ -14,9 +14,9 @@ async function routerConfigCommand(options) {
14
14
  throw new Error('Router configuration not found. Use "llamacpp router start" to create it.');
15
15
  }
16
16
  // Check if any options were provided
17
- const hasOptions = options.port || options.host || options.timeout || options.healthInterval;
17
+ const hasOptions = options.port || options.host || options.timeout || options.healthInterval || options.verbose !== undefined;
18
18
  if (!hasOptions) {
19
- throw new Error('No configuration options provided. Use --port, --host, --timeout, or --health-interval');
19
+ throw new Error('No configuration options provided. Use --port, --host, --timeout, --health-interval, or --verbose');
20
20
  }
21
21
  const isRunning = config.status === 'running';
22
22
  // Warn if running and no restart flag
@@ -43,6 +43,11 @@ async function routerConfigCommand(options) {
43
43
  changes.push(`Health Check Interval: ${config.healthCheckInterval}ms → ${options.healthInterval}ms`);
44
44
  updates.healthCheckInterval = options.healthInterval;
45
45
  }
46
+ if (options.verbose !== undefined) {
47
+ const verboseStr = (val) => val ? 'enabled' : 'disabled';
48
+ changes.push(`Verbose Logging: ${verboseStr(config.verbose)} → ${verboseStr(options.verbose)}`);
49
+ updates.verbose = options.verbose;
50
+ }
46
51
  // Display changes
47
52
  console.log(chalk_1.default.blue('📝 Configuration changes:'));
48
53
  console.log();
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/router/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/router/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ interface RouterLogsOptions {
2
+ follow?: boolean;
3
+ lines?: number;
4
+ stderr?: boolean;
5
+ verbose?: boolean;
6
+ clear?: boolean;
7
+ rotate?: boolean;
8
+ clearAll?: boolean;
9
+ }
10
+ export declare function routerLogsCommand(options: RouterLogsOptions): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/commands/router/logs.ts"],"names":[],"mappings":"AAaA,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwOjF"}
@@ -0,0 +1,238 @@
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.routerLogsCommand = routerLogsCommand;
40
+ const chalk_1 = __importDefault(require("chalk"));
41
+ const child_process_1 = require("child_process");
42
+ const readline = __importStar(require("readline"));
43
+ const fs = __importStar(require("fs"));
44
+ const router_manager_1 = require("../../lib/router-manager");
45
+ const file_utils_1 = require("../../utils/file-utils");
46
+ const log_utils_1 = require("../../utils/log-utils");
47
+ async function routerLogsCommand(options) {
48
+ // Load router config
49
+ const config = await router_manager_1.routerManager.loadConfig();
50
+ if (!config) {
51
+ throw new Error('Router configuration not found. Use "llamacpp router start" to create it.');
52
+ }
53
+ // Determine log file (default to stdout for activity logs, stderr for system logs)
54
+ const logPath = options.stderr ? config.stderrPath : config.stdoutPath;
55
+ const logType = options.stderr ? 'system' : 'activity';
56
+ // Also check for verbose JSON log file if --verbose flag is used
57
+ const verboseLogPath = '/Users/dweaver/.llamacpp/logs/router.log';
58
+ const useVerboseLog = options.verbose && (await (0, file_utils_1.fileExists)(verboseLogPath));
59
+ // Handle --clear-all option (clears both stderr and stdout)
60
+ if (options.clearAll) {
61
+ let totalFreed = 0;
62
+ // Clear stderr
63
+ if (await (0, file_utils_1.fileExists)(config.stderrPath)) {
64
+ totalFreed += await (0, log_utils_1.getFileSize)(config.stderrPath);
65
+ await (0, log_utils_1.clearLogFile)(config.stderrPath);
66
+ }
67
+ // Clear stdout
68
+ if (await (0, file_utils_1.fileExists)(config.stdoutPath)) {
69
+ totalFreed += await (0, log_utils_1.getFileSize)(config.stdoutPath);
70
+ await (0, log_utils_1.clearLogFile)(config.stdoutPath);
71
+ }
72
+ // Clear verbose log file
73
+ if (await (0, file_utils_1.fileExists)(verboseLogPath)) {
74
+ totalFreed += await (0, log_utils_1.getFileSize)(verboseLogPath);
75
+ await (0, log_utils_1.clearLogFile)(verboseLogPath);
76
+ }
77
+ console.log(chalk_1.default.green('✅ Cleared all router logs'));
78
+ console.log(chalk_1.default.dim(` Total freed: ${(0, log_utils_1.formatFileSize)(totalFreed)}`));
79
+ return;
80
+ }
81
+ // Handle --clear option
82
+ if (options.clear) {
83
+ const targetPath = useVerboseLog ? verboseLogPath : logPath;
84
+ if (!(await (0, file_utils_1.fileExists)(targetPath))) {
85
+ console.log(chalk_1.default.yellow(`⚠️ No ${useVerboseLog ? 'verbose log' : logType} found for router`));
86
+ console.log(chalk_1.default.dim(` Log file does not exist: ${targetPath}`));
87
+ return;
88
+ }
89
+ const sizeBefore = await (0, log_utils_1.getFileSize)(targetPath);
90
+ await (0, log_utils_1.clearLogFile)(targetPath);
91
+ console.log(chalk_1.default.green(`✅ Cleared router ${useVerboseLog ? 'verbose log' : logType}`));
92
+ console.log(chalk_1.default.dim(` Freed: ${(0, log_utils_1.formatFileSize)(sizeBefore)}`));
93
+ console.log(chalk_1.default.dim(` ${targetPath}`));
94
+ return;
95
+ }
96
+ // Handle --rotate option
97
+ if (options.rotate) {
98
+ const targetPath = useVerboseLog ? verboseLogPath : logPath;
99
+ if (!(await (0, file_utils_1.fileExists)(targetPath))) {
100
+ console.log(chalk_1.default.yellow(`⚠️ No ${useVerboseLog ? 'verbose log' : logType} found for router`));
101
+ console.log(chalk_1.default.dim(` Log file does not exist: ${targetPath}`));
102
+ return;
103
+ }
104
+ try {
105
+ const archivedPath = await (0, log_utils_1.rotateLogFile)(targetPath);
106
+ const size = await (0, log_utils_1.getFileSize)(archivedPath);
107
+ console.log(chalk_1.default.green(`✅ Rotated router ${useVerboseLog ? 'verbose log' : logType}`));
108
+ console.log(chalk_1.default.dim(` Archived: ${(0, log_utils_1.formatFileSize)(size)}`));
109
+ console.log(chalk_1.default.dim(` → ${archivedPath}`));
110
+ }
111
+ catch (error) {
112
+ throw new Error(`Failed to rotate log: ${error.message}`);
113
+ }
114
+ return;
115
+ }
116
+ // Determine which log to display
117
+ const displayPath = useVerboseLog ? verboseLogPath : logPath;
118
+ const displayType = useVerboseLog ? 'verbose JSON log' : logType;
119
+ // Check if log file exists
120
+ if (!(await (0, file_utils_1.fileExists)(displayPath))) {
121
+ console.log(chalk_1.default.yellow(`⚠️ No ${displayType} found for router`));
122
+ console.log(chalk_1.default.dim(` Log file does not exist: ${displayPath}`));
123
+ if (useVerboseLog) {
124
+ console.log();
125
+ console.log(chalk_1.default.dim(' Verbose logging is disabled. Enable with:'));
126
+ console.log(chalk_1.default.dim(' llamacpp router config --verbose true --restart'));
127
+ }
128
+ return;
129
+ }
130
+ console.log(chalk_1.default.blue(`📋 Router logs (${displayType})`));
131
+ console.log(chalk_1.default.dim(` ${displayPath}`));
132
+ // Show log size information
133
+ const currentSize = await (0, log_utils_1.getFileSize)(displayPath);
134
+ console.log(chalk_1.default.dim(` Size: ${(0, log_utils_1.formatFileSize)(currentSize)}`));
135
+ if (!useVerboseLog && config.verbose) {
136
+ console.log(chalk_1.default.dim(` Verbose logging is enabled (use --verbose to view JSON log)`));
137
+ }
138
+ else if (!useVerboseLog && !config.verbose) {
139
+ console.log(chalk_1.default.dim(` Verbose logging is disabled`));
140
+ }
141
+ console.log();
142
+ if (options.follow) {
143
+ // Follow logs in real-time
144
+ if (useVerboseLog) {
145
+ // Pretty-print JSON logs
146
+ const tailProcess = (0, child_process_1.spawn)('tail', ['-f', displayPath]);
147
+ const rl = readline.createInterface({
148
+ input: tailProcess.stdout,
149
+ crlfDelay: Infinity,
150
+ });
151
+ rl.on('line', (line) => {
152
+ try {
153
+ const entry = JSON.parse(line);
154
+ // Format timestamp
155
+ const timestamp = new Date(entry.timestamp).toLocaleTimeString();
156
+ // Color code status
157
+ const statusColor = entry.status === 'success' ? chalk_1.default.green : chalk_1.default.red;
158
+ console.log(chalk_1.default.dim(`[${timestamp}]`), statusColor(entry.statusCode), entry.method, entry.endpoint, '→', chalk_1.default.cyan(entry.model), chalk_1.default.dim(`(${entry.backend || 'N/A'})`), chalk_1.default.yellow(`${entry.durationMs}ms`));
159
+ if (entry.prompt) {
160
+ console.log(chalk_1.default.dim(` Prompt: "${entry.prompt}"`));
161
+ }
162
+ if (entry.error) {
163
+ console.log(chalk_1.default.red(` Error: ${entry.error}`));
164
+ }
165
+ }
166
+ catch {
167
+ // Not JSON, just print raw line
168
+ console.log(line);
169
+ }
170
+ });
171
+ tailProcess.on('close', () => {
172
+ process.exit(0);
173
+ });
174
+ // Handle Ctrl+C gracefully
175
+ process.on('SIGINT', () => {
176
+ tailProcess.kill();
177
+ process.exit(0);
178
+ });
179
+ }
180
+ else {
181
+ // Standard tail for stderr/stdout
182
+ const tailProcess = (0, child_process_1.spawn)('tail', ['-f', displayPath]);
183
+ tailProcess.stdout.pipe(process.stdout);
184
+ tailProcess.stderr.pipe(process.stderr);
185
+ tailProcess.on('close', () => {
186
+ process.exit(0);
187
+ });
188
+ // Handle Ctrl+C gracefully
189
+ process.on('SIGINT', () => {
190
+ tailProcess.kill();
191
+ process.exit(0);
192
+ });
193
+ }
194
+ }
195
+ else {
196
+ // Show last N lines (default 50)
197
+ const linesToShow = options.lines || 50;
198
+ if (useVerboseLog) {
199
+ // Pretty-print JSON logs
200
+ const lines = fs.readFileSync(displayPath, 'utf-8')
201
+ .split('\n')
202
+ .filter(line => line.trim())
203
+ .slice(-linesToShow);
204
+ for (const line of lines) {
205
+ try {
206
+ const entry = JSON.parse(line);
207
+ // Format timestamp
208
+ const timestamp = new Date(entry.timestamp).toLocaleTimeString();
209
+ // Color code status
210
+ const statusColor = entry.status === 'success' ? chalk_1.default.green : chalk_1.default.red;
211
+ console.log(chalk_1.default.dim(`[${timestamp}]`), statusColor(entry.statusCode), entry.method, entry.endpoint, '→', chalk_1.default.cyan(entry.model), chalk_1.default.dim(`(${entry.backend || 'N/A'})`), chalk_1.default.yellow(`${entry.durationMs}ms`));
212
+ if (entry.prompt) {
213
+ console.log(chalk_1.default.dim(` Prompt: "${entry.prompt}"`));
214
+ }
215
+ if (entry.error) {
216
+ console.log(chalk_1.default.red(` Error: ${entry.error}`));
217
+ }
218
+ }
219
+ catch {
220
+ // Not JSON, just print raw line
221
+ console.log(line);
222
+ }
223
+ }
224
+ }
225
+ else {
226
+ // Standard tail for stderr/stdout
227
+ const { execSync } = require('child_process');
228
+ try {
229
+ const output = execSync(`tail -n ${linesToShow} "${displayPath}"`, { encoding: 'utf-8' });
230
+ process.stdout.write(output);
231
+ }
232
+ catch (error) {
233
+ throw new Error(`Failed to read log file: ${error.message}`);
234
+ }
235
+ }
236
+ }
237
+ }
238
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/commands/router/logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function tuiCommand(): Promise<void>;
2
+ //# sourceMappingURL=tui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../src/commands/tui.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAkBhD"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.tuiCommand = tuiCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const blessed_1 = __importDefault(require("blessed"));
9
+ const state_manager_js_1 = require("../lib/state-manager.js");
10
+ const status_checker_js_1 = require("../lib/status-checker.js");
11
+ const RootNavigator_js_1 = require("../tui/RootNavigator.js");
12
+ async function tuiCommand() {
13
+ const servers = await state_manager_js_1.stateManager.getAllServers();
14
+ if (servers.length === 0) {
15
+ console.log(chalk_1.default.yellow('No servers configured.'));
16
+ console.log(chalk_1.default.dim('\nCreate a server: llamacpp server create <model-filename>'));
17
+ return;
18
+ }
19
+ const serversWithStatus = await status_checker_js_1.statusChecker.updateAllServerStatuses();
20
+ const screen = blessed_1.default.screen({
21
+ smartCSR: true,
22
+ title: 'llama.cpp Server Monitor',
23
+ fullUnicode: true,
24
+ });
25
+ await (0, RootNavigator_js_1.createRootNavigator)(screen, serversWithStatus);
26
+ }
27
+ //# sourceMappingURL=tui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/commands/tui.ts"],"names":[],"mappings":";;;;;AAMA,gCAkBC;AAxBD,kDAA0B;AAC1B,sDAA8B;AAC9B,8DAAuD;AACvD,gEAAyD;AACzD,8DAA8D;AAEvD,KAAK,UAAU,UAAU;IAC9B,MAAM,OAAO,GAAG,MAAM,+BAAY,CAAC,aAAa,EAAE,CAAC;IAEnD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC,CAAC;QACrF,OAAO;IACT,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAM,iCAAa,CAAC,uBAAuB,EAAE,CAAC;IAExE,MAAM,MAAM,GAAG,iBAAO,CAAC,MAAM,CAAC;QAC5B,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,0BAA0B;QACjC,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,MAAM,IAAA,sCAAmB,EAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Setup completion handlers
3
+ */
4
+ export declare function setupCompletion(): void;
5
+ //# sourceMappingURL=completion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/lib/completion.ts"],"names":[],"mappings":"AAyDA;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CActC"}