@appkit/llamacpp-cli 1.8.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 (116) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/README.md +249 -40
  3. package/dist/cli.js +154 -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 +11 -0
  16. package/dist/commands/router/config.d.ts.map +1 -0
  17. package/dist/commands/router/config.js +100 -0
  18. package/dist/commands/router/config.js.map +1 -0
  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/router/restart.d.ts +2 -0
  24. package/dist/commands/router/restart.d.ts.map +1 -0
  25. package/dist/commands/router/restart.js +39 -0
  26. package/dist/commands/router/restart.js.map +1 -0
  27. package/dist/commands/router/start.d.ts +2 -0
  28. package/dist/commands/router/start.d.ts.map +1 -0
  29. package/dist/commands/router/start.js +60 -0
  30. package/dist/commands/router/start.js.map +1 -0
  31. package/dist/commands/router/status.d.ts +2 -0
  32. package/dist/commands/router/status.d.ts.map +1 -0
  33. package/dist/commands/router/status.js +116 -0
  34. package/dist/commands/router/status.js.map +1 -0
  35. package/dist/commands/router/stop.d.ts +2 -0
  36. package/dist/commands/router/stop.d.ts.map +1 -0
  37. package/dist/commands/router/stop.js +36 -0
  38. package/dist/commands/router/stop.js.map +1 -0
  39. package/dist/commands/tui.d.ts +2 -0
  40. package/dist/commands/tui.d.ts.map +1 -0
  41. package/dist/commands/tui.js +27 -0
  42. package/dist/commands/tui.js.map +1 -0
  43. package/dist/lib/completion.d.ts +5 -0
  44. package/dist/lib/completion.d.ts.map +1 -0
  45. package/dist/lib/completion.js +195 -0
  46. package/dist/lib/completion.js.map +1 -0
  47. package/dist/lib/model-downloader.d.ts +5 -1
  48. package/dist/lib/model-downloader.d.ts.map +1 -1
  49. package/dist/lib/model-downloader.js +53 -20
  50. package/dist/lib/model-downloader.js.map +1 -1
  51. package/dist/lib/router-logger.d.ts +61 -0
  52. package/dist/lib/router-logger.d.ts.map +1 -0
  53. package/dist/lib/router-logger.js +200 -0
  54. package/dist/lib/router-logger.js.map +1 -0
  55. package/dist/lib/router-manager.d.ts +103 -0
  56. package/dist/lib/router-manager.d.ts.map +1 -0
  57. package/dist/lib/router-manager.js +394 -0
  58. package/dist/lib/router-manager.js.map +1 -0
  59. package/dist/lib/router-server.d.ts +61 -0
  60. package/dist/lib/router-server.d.ts.map +1 -0
  61. package/dist/lib/router-server.js +485 -0
  62. package/dist/lib/router-server.js.map +1 -0
  63. package/dist/tui/ConfigApp.d.ts +7 -0
  64. package/dist/tui/ConfigApp.d.ts.map +1 -0
  65. package/dist/tui/ConfigApp.js +1002 -0
  66. package/dist/tui/ConfigApp.js.map +1 -0
  67. package/dist/tui/HistoricalMonitorApp.d.ts.map +1 -1
  68. package/dist/tui/HistoricalMonitorApp.js +85 -49
  69. package/dist/tui/HistoricalMonitorApp.js.map +1 -1
  70. package/dist/tui/ModelsApp.d.ts +7 -0
  71. package/dist/tui/ModelsApp.d.ts.map +1 -0
  72. package/dist/tui/ModelsApp.js +362 -0
  73. package/dist/tui/ModelsApp.js.map +1 -0
  74. package/dist/tui/MultiServerMonitorApp.d.ts +6 -1
  75. package/dist/tui/MultiServerMonitorApp.d.ts.map +1 -1
  76. package/dist/tui/MultiServerMonitorApp.js +1038 -122
  77. package/dist/tui/MultiServerMonitorApp.js.map +1 -1
  78. package/dist/tui/RootNavigator.d.ts +7 -0
  79. package/dist/tui/RootNavigator.d.ts.map +1 -0
  80. package/dist/tui/RootNavigator.js +55 -0
  81. package/dist/tui/RootNavigator.js.map +1 -0
  82. package/dist/tui/SearchApp.d.ts +6 -0
  83. package/dist/tui/SearchApp.d.ts.map +1 -0
  84. package/dist/tui/SearchApp.js +451 -0
  85. package/dist/tui/SearchApp.js.map +1 -0
  86. package/dist/tui/SplashScreen.d.ts +16 -0
  87. package/dist/tui/SplashScreen.d.ts.map +1 -0
  88. package/dist/tui/SplashScreen.js +129 -0
  89. package/dist/tui/SplashScreen.js.map +1 -0
  90. package/dist/types/router-config.d.ts +19 -0
  91. package/dist/types/router-config.d.ts.map +1 -0
  92. package/dist/types/router-config.js +3 -0
  93. package/dist/types/router-config.js.map +1 -0
  94. package/package.json +1 -1
  95. package/src/cli.ts +121 -10
  96. package/src/commands/monitor.ts +1 -1
  97. package/src/commands/ps.ts +44 -133
  98. package/src/commands/router/config.ts +116 -0
  99. package/src/commands/router/logs.ts +256 -0
  100. package/src/commands/router/restart.ts +36 -0
  101. package/src/commands/router/start.ts +60 -0
  102. package/src/commands/router/status.ts +119 -0
  103. package/src/commands/router/stop.ts +33 -0
  104. package/src/commands/tui.ts +25 -0
  105. package/src/lib/model-downloader.ts +57 -20
  106. package/src/lib/router-logger.ts +201 -0
  107. package/src/lib/router-manager.ts +414 -0
  108. package/src/lib/router-server.ts +538 -0
  109. package/src/tui/ConfigApp.ts +1085 -0
  110. package/src/tui/HistoricalMonitorApp.ts +88 -49
  111. package/src/tui/ModelsApp.ts +368 -0
  112. package/src/tui/MultiServerMonitorApp.ts +1163 -122
  113. package/src/tui/RootNavigator.ts +74 -0
  114. package/src/tui/SearchApp.ts +511 -0
  115. package/src/tui/SplashScreen.ts +149 -0
  116. package/src/types/router-config.ts +25 -0
@@ -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 routerRestartCommand(): Promise<void>;
2
+ //# sourceMappingURL=restart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restart.d.ts","sourceRoot":"","sources":["../../../src/commands/router/restart.ts"],"names":[],"mappings":"AAGA,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgC1D"}
@@ -0,0 +1,39 @@
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.routerRestartCommand = routerRestartCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const router_manager_1 = require("../../lib/router-manager");
9
+ async function routerRestartCommand() {
10
+ console.log(chalk_1.default.blue('🔄 Restarting router...'));
11
+ try {
12
+ // Check if router exists
13
+ const config = await router_manager_1.routerManager.loadConfig();
14
+ if (!config) {
15
+ throw new Error('Router configuration not found. Use "llamacpp router start" to create it.');
16
+ }
17
+ // Restart router
18
+ await router_manager_1.routerManager.restart();
19
+ // Get updated config
20
+ const updatedConfig = await router_manager_1.routerManager.loadConfig();
21
+ if (!updatedConfig) {
22
+ throw new Error('Failed to load router configuration after restart');
23
+ }
24
+ // Display success
25
+ console.log();
26
+ console.log(chalk_1.default.green('✅ Router restarted successfully!'));
27
+ console.log();
28
+ console.log(chalk_1.default.dim(`Endpoint: http://${updatedConfig.host}:${updatedConfig.port}`));
29
+ console.log();
30
+ console.log(chalk_1.default.dim('Quick commands:'));
31
+ console.log(chalk_1.default.dim(' Status: llamacpp router status'));
32
+ console.log(chalk_1.default.dim(' Stop: llamacpp router stop'));
33
+ console.log(chalk_1.default.dim(` Logs: tail -f ${updatedConfig.stderrPath}`));
34
+ }
35
+ catch (error) {
36
+ throw new Error(`Failed to restart router: ${error.message}`);
37
+ }
38
+ }
39
+ //# sourceMappingURL=restart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../../src/commands/router/restart.ts"],"names":[],"mappings":";;;;;AAGA,oDAgCC;AAnCD,kDAA0B;AAC1B,6DAAyD;AAElD,KAAK,UAAU,oBAAoB;IACxC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,yBAAyB;QACzB,MAAM,MAAM,GAAG,MAAM,8BAAa,CAAC,UAAU,EAAE,CAAC;QAChD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;QAC/F,CAAC;QAED,iBAAiB;QACjB,MAAM,8BAAa,CAAC,OAAO,EAAE,CAAC;QAE9B,qBAAqB;QACrB,MAAM,aAAa,GAAG,MAAM,8BAAa,CAAC,UAAU,EAAE,CAAC;QACvD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QAED,kBAAkB;QAClB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,qBAAqB,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,6BAA8B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function routerStartCommand(): Promise<void>;
2
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/router/start.ts"],"names":[],"mappings":"AAIA,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuDxD"}
@@ -0,0 +1,60 @@
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.routerStartCommand = routerStartCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const router_manager_1 = require("../../lib/router-manager");
9
+ const state_manager_1 = require("../../lib/state-manager");
10
+ async function routerStartCommand() {
11
+ console.log(chalk_1.default.blue('▶️ Starting router...'));
12
+ try {
13
+ // Initialize
14
+ await router_manager_1.routerManager.initialize();
15
+ await state_manager_1.stateManager.initialize();
16
+ // Check if router already exists
17
+ const existingConfig = await router_manager_1.routerManager.loadConfig();
18
+ if (existingConfig && existingConfig.status === 'running') {
19
+ console.log(chalk_1.default.yellow(`⚠️ Router is already running on port ${existingConfig.port}`));
20
+ return;
21
+ }
22
+ // Start router
23
+ await router_manager_1.routerManager.start();
24
+ // Get updated config
25
+ const config = await router_manager_1.routerManager.loadConfig();
26
+ if (!config) {
27
+ throw new Error('Failed to load router configuration after start');
28
+ }
29
+ // Get running servers to show available models
30
+ const servers = await state_manager_1.stateManager.getAllServers();
31
+ const runningServers = servers.filter(s => s.status === 'running');
32
+ // Display success
33
+ console.log();
34
+ console.log(chalk_1.default.green('✅ Router started successfully!'));
35
+ console.log();
36
+ console.log(chalk_1.default.dim(`Endpoint: http://${config.host}:${config.port}`));
37
+ console.log(chalk_1.default.dim(`Available models: ${runningServers.length}`));
38
+ if (runningServers.length > 0) {
39
+ console.log();
40
+ console.log(chalk_1.default.dim('Models:'));
41
+ runningServers.forEach(server => {
42
+ console.log(chalk_1.default.dim(` • ${server.modelName} (port ${server.port})`));
43
+ });
44
+ }
45
+ else {
46
+ console.log();
47
+ console.log(chalk_1.default.yellow('⚠️ No running servers found. Start a server first:'));
48
+ console.log(chalk_1.default.dim(' llamacpp server create <model>'));
49
+ }
50
+ console.log();
51
+ console.log(chalk_1.default.dim('Quick commands:'));
52
+ console.log(chalk_1.default.dim(` Status: llamacpp router status`));
53
+ console.log(chalk_1.default.dim(` Stop: llamacpp router stop`));
54
+ console.log(chalk_1.default.dim(` Logs: tail -f ${config.stderrPath}`));
55
+ }
56
+ catch (error) {
57
+ throw new Error(`Failed to start router: ${error.message}`);
58
+ }
59
+ }
60
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/router/start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function routerStatusCommand(): Promise<void>;
2
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/router/status.ts"],"names":[],"mappings":"AAIA,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkHzD"}
@@ -0,0 +1,116 @@
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.routerStatusCommand = routerStatusCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const router_manager_1 = require("../../lib/router-manager");
9
+ const state_manager_1 = require("../../lib/state-manager");
10
+ async function routerStatusCommand() {
11
+ try {
12
+ // Get router status
13
+ const result = await router_manager_1.routerManager.getStatus();
14
+ if (!result) {
15
+ console.log(chalk_1.default.yellow('Router not configured'));
16
+ console.log();
17
+ console.log(chalk_1.default.dim('Create and start router:'));
18
+ console.log(chalk_1.default.dim(' llamacpp router start'));
19
+ return;
20
+ }
21
+ const { config, status } = result;
22
+ // Calculate uptime if running
23
+ let uptime = 'N/A';
24
+ if (status.isRunning && config.lastStarted) {
25
+ const startTime = new Date(config.lastStarted).getTime();
26
+ const now = Date.now();
27
+ const uptimeSeconds = Math.floor((now - startTime) / 1000);
28
+ const hours = Math.floor(uptimeSeconds / 3600);
29
+ const minutes = Math.floor((uptimeSeconds % 3600) / 60);
30
+ const seconds = uptimeSeconds % 60;
31
+ if (hours > 0) {
32
+ uptime = `${hours}h ${minutes}m`;
33
+ }
34
+ else if (minutes > 0) {
35
+ uptime = `${minutes}m ${seconds}s`;
36
+ }
37
+ else {
38
+ uptime = `${seconds}s`;
39
+ }
40
+ }
41
+ // Get running servers
42
+ const servers = await state_manager_1.stateManager.getAllServers();
43
+ const runningServers = servers.filter(s => s.status === 'running');
44
+ // Display status
45
+ console.log();
46
+ console.log(chalk_1.default.bold('Router Status'));
47
+ console.log(chalk_1.default.dim('─'.repeat(50)));
48
+ console.log();
49
+ // Status badge
50
+ const statusColor = status.isRunning ? chalk_1.default.green : chalk_1.default.gray;
51
+ const statusBadge = status.isRunning ? '● RUN' : '○ OFF';
52
+ console.log(`Status: ${statusColor(statusBadge)}`);
53
+ if (status.isRunning) {
54
+ console.log(`PID: ${status.pid || 'N/A'}`);
55
+ console.log(`Uptime: ${uptime}`);
56
+ }
57
+ console.log(`Port: ${config.port}`);
58
+ console.log(`Host: ${config.host}`);
59
+ console.log(`Endpoint: http://${config.host}:${config.port}`);
60
+ console.log();
61
+ // Available models
62
+ console.log(chalk_1.default.bold('Available Models'));
63
+ console.log(chalk_1.default.dim('─'.repeat(50)));
64
+ console.log();
65
+ if (runningServers.length === 0) {
66
+ console.log(chalk_1.default.dim('No running servers found'));
67
+ console.log();
68
+ console.log(chalk_1.default.yellow('⚠️ Start a server first:'));
69
+ console.log(chalk_1.default.dim(' llamacpp server create <model>'));
70
+ }
71
+ else {
72
+ runningServers.forEach(server => {
73
+ console.log(` ${chalk_1.default.green('●')} ${server.modelName}`);
74
+ console.log(chalk_1.default.dim(` Port: ${server.port}`));
75
+ console.log(chalk_1.default.dim(` Backend: http://${server.host}:${server.port}`));
76
+ console.log();
77
+ });
78
+ }
79
+ // Configuration
80
+ console.log(chalk_1.default.bold('Configuration'));
81
+ console.log(chalk_1.default.dim('─'.repeat(50)));
82
+ console.log();
83
+ console.log(`Health Check Interval: ${config.healthCheckInterval}ms`);
84
+ console.log(`Request Timeout: ${config.requestTimeout}ms`);
85
+ console.log();
86
+ // System paths
87
+ console.log(chalk_1.default.bold('System Paths'));
88
+ console.log(chalk_1.default.dim('─'.repeat(50)));
89
+ console.log();
90
+ console.log(chalk_1.default.dim(`Config: ${config.plistPath.replace(config.label + '.plist', 'router.json').replace('LaunchAgents', '.llamacpp')}`));
91
+ console.log(chalk_1.default.dim(`Plist: ${config.plistPath}`));
92
+ console.log(chalk_1.default.dim(`Stdout: ${config.stdoutPath}`));
93
+ console.log(chalk_1.default.dim(`Stderr: ${config.stderrPath}`));
94
+ console.log();
95
+ // Quick commands
96
+ console.log(chalk_1.default.bold('Quick Commands'));
97
+ console.log(chalk_1.default.dim('─'.repeat(50)));
98
+ console.log();
99
+ if (status.isRunning) {
100
+ console.log(chalk_1.default.dim(' Stop: llamacpp router stop'));
101
+ console.log(chalk_1.default.dim(' Restart: llamacpp router restart'));
102
+ console.log(chalk_1.default.dim(` Logs: tail -f ${config.stderrPath}`));
103
+ console.log(chalk_1.default.dim(' Config: llamacpp router config --port <port> --restart'));
104
+ }
105
+ else {
106
+ console.log(chalk_1.default.dim(' Start: llamacpp router start'));
107
+ console.log(chalk_1.default.dim(' Config: llamacpp router config --port <port>'));
108
+ console.log(chalk_1.default.dim(` Logs: cat ${config.stderrPath}`));
109
+ }
110
+ console.log();
111
+ }
112
+ catch (error) {
113
+ throw new Error(`Failed to get router status: ${error.message}`);
114
+ }
115
+ }
116
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/router/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function routerStopCommand(): Promise<void>;
2
+ //# sourceMappingURL=stop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../src/commands/router/stop.ts"],"names":[],"mappings":"AAGA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6BvD"}
@@ -0,0 +1,36 @@
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.routerStopCommand = routerStopCommand;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const router_manager_1 = require("../../lib/router-manager");
9
+ async function routerStopCommand() {
10
+ console.log(chalk_1.default.blue('⏹️ Stopping router...'));
11
+ try {
12
+ // Check if router exists
13
+ const config = await router_manager_1.routerManager.loadConfig();
14
+ if (!config) {
15
+ throw new Error('Router configuration not found. Use "llamacpp router start" to create it.');
16
+ }
17
+ // Check if already stopped
18
+ if (config.status !== 'running') {
19
+ console.log(chalk_1.default.yellow('⚠️ Router is not running'));
20
+ return;
21
+ }
22
+ // Stop router
23
+ await router_manager_1.routerManager.stop();
24
+ // Display success
25
+ console.log();
26
+ console.log(chalk_1.default.green('✅ Router stopped successfully'));
27
+ console.log();
28
+ console.log(chalk_1.default.dim('Quick commands:'));
29
+ console.log(chalk_1.default.dim(' Start: llamacpp router start'));
30
+ console.log(chalk_1.default.dim(' Status: llamacpp router status'));
31
+ }
32
+ catch (error) {
33
+ throw new Error(`Failed to stop router: ${error.message}`);
34
+ }
35
+ }
36
+ //# sourceMappingURL=stop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/commands/router/stop.ts"],"names":[],"mappings":";;;;;AAGA,8CA6BC;AAhCD,kDAA0B;AAC1B,6DAAyD;AAElD,KAAK,UAAU,iBAAiB;IACrC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAElD,IAAI,CAAC;QACH,yBAAyB;QACzB,MAAM,MAAM,GAAG,MAAM,8BAAa,CAAC,UAAU,EAAE,CAAC;QAChD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;QAC/F,CAAC;QAED,2BAA2B;QAC3B,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,cAAc;QACd,MAAM,8BAAa,CAAC,IAAI,EAAE,CAAC;QAE3B,kBAAkB;QAClB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,0BAA2B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC"}
@@ -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"}