@appkit/llamacpp-cli 2.0.0 → 2.1.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 (229) hide show
  1. package/README.md +271 -277
  2. package/dist/cli.js +133 -23
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/admin/config.d.ts +1 -1
  5. package/dist/commands/admin/config.js +5 -5
  6. package/dist/commands/admin/config.js.map +1 -1
  7. package/dist/commands/admin/log-config.d.ts +11 -0
  8. package/dist/commands/admin/log-config.d.ts.map +1 -0
  9. package/dist/commands/admin/log-config.js +159 -0
  10. package/dist/commands/admin/log-config.js.map +1 -0
  11. package/dist/commands/admin/logs.d.ts +2 -3
  12. package/dist/commands/admin/logs.d.ts.map +1 -1
  13. package/dist/commands/admin/logs.js +6 -48
  14. package/dist/commands/admin/logs.js.map +1 -1
  15. package/dist/commands/admin/status.d.ts.map +1 -1
  16. package/dist/commands/admin/status.js +1 -0
  17. package/dist/commands/admin/status.js.map +1 -1
  18. package/dist/commands/config.d.ts +1 -0
  19. package/dist/commands/config.d.ts.map +1 -1
  20. package/dist/commands/config.js +63 -196
  21. package/dist/commands/config.js.map +1 -1
  22. package/dist/commands/create.d.ts +3 -2
  23. package/dist/commands/create.d.ts.map +1 -1
  24. package/dist/commands/create.js +24 -97
  25. package/dist/commands/create.js.map +1 -1
  26. package/dist/commands/delete.d.ts.map +1 -1
  27. package/dist/commands/delete.js +7 -24
  28. package/dist/commands/delete.js.map +1 -1
  29. package/dist/commands/internal/server-wrapper.d.ts +15 -0
  30. package/dist/commands/internal/server-wrapper.d.ts.map +1 -0
  31. package/dist/commands/internal/server-wrapper.js +126 -0
  32. package/dist/commands/internal/server-wrapper.js.map +1 -0
  33. package/dist/commands/logs-all.d.ts +0 -2
  34. package/dist/commands/logs-all.d.ts.map +1 -1
  35. package/dist/commands/logs-all.js +1 -61
  36. package/dist/commands/logs-all.js.map +1 -1
  37. package/dist/commands/logs.d.ts +2 -5
  38. package/dist/commands/logs.d.ts.map +1 -1
  39. package/dist/commands/logs.js +104 -120
  40. package/dist/commands/logs.js.map +1 -1
  41. package/dist/commands/migrate-labels.d.ts +12 -0
  42. package/dist/commands/migrate-labels.d.ts.map +1 -0
  43. package/dist/commands/migrate-labels.js +160 -0
  44. package/dist/commands/migrate-labels.js.map +1 -0
  45. package/dist/commands/ps.d.ts.map +1 -1
  46. package/dist/commands/ps.js +2 -1
  47. package/dist/commands/ps.js.map +1 -1
  48. package/dist/commands/rm.d.ts.map +1 -1
  49. package/dist/commands/rm.js +22 -48
  50. package/dist/commands/rm.js.map +1 -1
  51. package/dist/commands/router/config.d.ts +1 -1
  52. package/dist/commands/router/config.js +6 -6
  53. package/dist/commands/router/config.js.map +1 -1
  54. package/dist/commands/router/logs.d.ts +2 -4
  55. package/dist/commands/router/logs.d.ts.map +1 -1
  56. package/dist/commands/router/logs.js +34 -189
  57. package/dist/commands/router/logs.js.map +1 -1
  58. package/dist/commands/router/status.d.ts.map +1 -1
  59. package/dist/commands/router/status.js +1 -0
  60. package/dist/commands/router/status.js.map +1 -1
  61. package/dist/commands/server-show.d.ts.map +1 -1
  62. package/dist/commands/server-show.js +3 -0
  63. package/dist/commands/server-show.js.map +1 -1
  64. package/dist/commands/start.d.ts.map +1 -1
  65. package/dist/commands/start.js +21 -72
  66. package/dist/commands/start.js.map +1 -1
  67. package/dist/commands/stop.d.ts.map +1 -1
  68. package/dist/commands/stop.js +10 -26
  69. package/dist/commands/stop.js.map +1 -1
  70. package/dist/launchers/llamacpp-admin +8 -0
  71. package/dist/launchers/llamacpp-router +8 -0
  72. package/dist/launchers/llamacpp-server +8 -0
  73. package/dist/lib/admin-manager.d.ts +4 -0
  74. package/dist/lib/admin-manager.d.ts.map +1 -1
  75. package/dist/lib/admin-manager.js +42 -18
  76. package/dist/lib/admin-manager.js.map +1 -1
  77. package/dist/lib/admin-server.d.ts +48 -1
  78. package/dist/lib/admin-server.d.ts.map +1 -1
  79. package/dist/lib/admin-server.js +632 -238
  80. package/dist/lib/admin-server.js.map +1 -1
  81. package/dist/lib/config-generator.d.ts +1 -0
  82. package/dist/lib/config-generator.d.ts.map +1 -1
  83. package/dist/lib/config-generator.js +12 -5
  84. package/dist/lib/config-generator.js.map +1 -1
  85. package/dist/lib/keyboard-manager.d.ts +162 -0
  86. package/dist/lib/keyboard-manager.d.ts.map +1 -0
  87. package/dist/lib/keyboard-manager.js +247 -0
  88. package/dist/lib/keyboard-manager.js.map +1 -0
  89. package/dist/lib/label-migration.d.ts +65 -0
  90. package/dist/lib/label-migration.d.ts.map +1 -0
  91. package/dist/lib/label-migration.js +458 -0
  92. package/dist/lib/label-migration.js.map +1 -0
  93. package/dist/lib/launchctl-manager.d.ts +9 -0
  94. package/dist/lib/launchctl-manager.d.ts.map +1 -1
  95. package/dist/lib/launchctl-manager.js +65 -19
  96. package/dist/lib/launchctl-manager.js.map +1 -1
  97. package/dist/lib/log-management-service.d.ts +51 -0
  98. package/dist/lib/log-management-service.d.ts.map +1 -0
  99. package/dist/lib/log-management-service.js +124 -0
  100. package/dist/lib/log-management-service.js.map +1 -0
  101. package/dist/lib/log-workers.d.ts +70 -0
  102. package/dist/lib/log-workers.d.ts.map +1 -0
  103. package/dist/lib/log-workers.js +217 -0
  104. package/dist/lib/log-workers.js.map +1 -0
  105. package/dist/lib/model-downloader.d.ts +9 -1
  106. package/dist/lib/model-downloader.d.ts.map +1 -1
  107. package/dist/lib/model-downloader.js +98 -1
  108. package/dist/lib/model-downloader.js.map +1 -1
  109. package/dist/lib/model-management-service.d.ts +60 -0
  110. package/dist/lib/model-management-service.d.ts.map +1 -0
  111. package/dist/lib/model-management-service.js +246 -0
  112. package/dist/lib/model-management-service.js.map +1 -0
  113. package/dist/lib/model-management-service.test.d.ts +2 -0
  114. package/dist/lib/model-management-service.test.d.ts.map +1 -0
  115. package/dist/lib/model-management-service.test.js.map +1 -0
  116. package/dist/lib/model-scanner.d.ts +15 -3
  117. package/dist/lib/model-scanner.d.ts.map +1 -1
  118. package/dist/lib/model-scanner.js +174 -17
  119. package/dist/lib/model-scanner.js.map +1 -1
  120. package/dist/lib/openapi-spec.d.ts +1335 -0
  121. package/dist/lib/openapi-spec.d.ts.map +1 -0
  122. package/dist/lib/openapi-spec.js +1017 -0
  123. package/dist/lib/openapi-spec.js.map +1 -0
  124. package/dist/lib/router-logger.d.ts +1 -1
  125. package/dist/lib/router-logger.d.ts.map +1 -1
  126. package/dist/lib/router-logger.js +13 -11
  127. package/dist/lib/router-logger.js.map +1 -1
  128. package/dist/lib/router-manager.d.ts +4 -0
  129. package/dist/lib/router-manager.d.ts.map +1 -1
  130. package/dist/lib/router-manager.js +30 -18
  131. package/dist/lib/router-manager.js.map +1 -1
  132. package/dist/lib/router-server.d.ts.map +1 -1
  133. package/dist/lib/router-server.js +22 -12
  134. package/dist/lib/router-server.js.map +1 -1
  135. package/dist/lib/server-config-service.d.ts +51 -0
  136. package/dist/lib/server-config-service.d.ts.map +1 -0
  137. package/dist/lib/server-config-service.js +310 -0
  138. package/dist/lib/server-config-service.js.map +1 -0
  139. package/dist/lib/server-config-service.test.d.ts +2 -0
  140. package/dist/lib/server-config-service.test.d.ts.map +1 -0
  141. package/dist/lib/server-config-service.test.js.map +1 -0
  142. package/dist/lib/server-lifecycle-service.d.ts +172 -0
  143. package/dist/lib/server-lifecycle-service.d.ts.map +1 -0
  144. package/dist/lib/server-lifecycle-service.js +619 -0
  145. package/dist/lib/server-lifecycle-service.js.map +1 -0
  146. package/dist/lib/state-manager.d.ts +18 -1
  147. package/dist/lib/state-manager.d.ts.map +1 -1
  148. package/dist/lib/state-manager.js +51 -2
  149. package/dist/lib/state-manager.js.map +1 -1
  150. package/dist/lib/status-checker.d.ts +11 -4
  151. package/dist/lib/status-checker.d.ts.map +1 -1
  152. package/dist/lib/status-checker.js +34 -1
  153. package/dist/lib/status-checker.js.map +1 -1
  154. package/dist/lib/validation-service.d.ts +43 -0
  155. package/dist/lib/validation-service.d.ts.map +1 -0
  156. package/dist/lib/validation-service.js +112 -0
  157. package/dist/lib/validation-service.js.map +1 -0
  158. package/dist/lib/validation-service.test.d.ts +2 -0
  159. package/dist/lib/validation-service.test.d.ts.map +1 -0
  160. package/dist/lib/validation-service.test.js.map +1 -0
  161. package/dist/scripts/http-log-filter.sh +8 -0
  162. package/dist/tui/ConfigApp.d.ts.map +1 -1
  163. package/dist/tui/ConfigApp.js +222 -184
  164. package/dist/tui/ConfigApp.js.map +1 -1
  165. package/dist/tui/HistoricalMonitorApp.d.ts.map +1 -1
  166. package/dist/tui/HistoricalMonitorApp.js +12 -0
  167. package/dist/tui/HistoricalMonitorApp.js.map +1 -1
  168. package/dist/tui/ModelsApp.d.ts.map +1 -1
  169. package/dist/tui/ModelsApp.js +93 -17
  170. package/dist/tui/ModelsApp.js.map +1 -1
  171. package/dist/tui/MonitorApp.d.ts.map +1 -1
  172. package/dist/tui/MonitorApp.js +1 -3
  173. package/dist/tui/MonitorApp.js.map +1 -1
  174. package/dist/tui/MultiServerMonitorApp.d.ts +3 -3
  175. package/dist/tui/MultiServerMonitorApp.d.ts.map +1 -1
  176. package/dist/tui/MultiServerMonitorApp.js +724 -508
  177. package/dist/tui/MultiServerMonitorApp.js.map +1 -1
  178. package/dist/tui/RootNavigator.d.ts.map +1 -1
  179. package/dist/tui/RootNavigator.js +17 -1
  180. package/dist/tui/RootNavigator.js.map +1 -1
  181. package/dist/tui/RouterApp.d.ts +6 -0
  182. package/dist/tui/RouterApp.d.ts.map +1 -0
  183. package/dist/tui/RouterApp.js +928 -0
  184. package/dist/tui/RouterApp.js.map +1 -0
  185. package/dist/tui/SearchApp.d.ts.map +1 -1
  186. package/dist/tui/SearchApp.js +27 -6
  187. package/dist/tui/SearchApp.js.map +1 -1
  188. package/dist/tui/shared/modal-controller.d.ts +65 -0
  189. package/dist/tui/shared/modal-controller.d.ts.map +1 -0
  190. package/dist/tui/shared/modal-controller.js +625 -0
  191. package/dist/tui/shared/modal-controller.js.map +1 -0
  192. package/dist/tui/shared/overlay-utils.d.ts +7 -0
  193. package/dist/tui/shared/overlay-utils.d.ts.map +1 -0
  194. package/dist/tui/shared/overlay-utils.js +54 -0
  195. package/dist/tui/shared/overlay-utils.js.map +1 -0
  196. package/dist/types/admin-config.d.ts +15 -2
  197. package/dist/types/admin-config.d.ts.map +1 -1
  198. package/dist/types/model-info.d.ts +5 -0
  199. package/dist/types/model-info.d.ts.map +1 -1
  200. package/dist/types/router-config.d.ts +2 -2
  201. package/dist/types/router-config.d.ts.map +1 -1
  202. package/dist/types/server-config.d.ts +8 -0
  203. package/dist/types/server-config.d.ts.map +1 -1
  204. package/dist/types/server-config.js +25 -0
  205. package/dist/types/server-config.js.map +1 -1
  206. package/dist/utils/http-log-filter.d.ts +10 -0
  207. package/dist/utils/http-log-filter.d.ts.map +1 -0
  208. package/dist/utils/http-log-filter.js +84 -0
  209. package/dist/utils/http-log-filter.js.map +1 -0
  210. package/dist/utils/log-parser.d.ts.map +1 -1
  211. package/dist/utils/log-parser.js +7 -4
  212. package/dist/utils/log-parser.js.map +1 -1
  213. package/dist/utils/log-utils.d.ts +59 -4
  214. package/dist/utils/log-utils.d.ts.map +1 -1
  215. package/dist/utils/log-utils.js +150 -11
  216. package/dist/utils/log-utils.js.map +1 -1
  217. package/dist/utils/shard-utils.d.ts +72 -0
  218. package/dist/utils/shard-utils.d.ts.map +1 -0
  219. package/dist/utils/shard-utils.js +168 -0
  220. package/dist/utils/shard-utils.js.map +1 -0
  221. package/package.json +18 -4
  222. package/src/launchers/llamacpp-admin +8 -0
  223. package/src/launchers/llamacpp-router +8 -0
  224. package/src/launchers/llamacpp-server +8 -0
  225. package/web/dist/assets/index-Byhoy86V.css +1 -0
  226. package/web/dist/assets/index-HSrgvray.js +50 -0
  227. package/web/dist/index.html +2 -2
  228. package/web/dist/assets/index-Bin89Lwr.css +0 -1
  229. package/web/dist/assets/index-CVmonw3T.js +0 -17
@@ -42,18 +42,35 @@ export declare class StateManager {
42
42
  * Find a server by port
43
43
  */
44
44
  findServerByPort(port: number): Promise<ServerConfig | null>;
45
+ /**
46
+ * Find a server by alias (exact match, case-sensitive)
47
+ */
48
+ findServerByAlias(alias: string): Promise<ServerConfig | null>;
49
+ /**
50
+ * Check if an alias is available (case-insensitive uniqueness check)
51
+ * @param alias - The alias to check
52
+ * @param excludeServerId - Optional server ID to exclude from check (for updates)
53
+ * @returns null if available, or the conflicting server ID if taken
54
+ */
55
+ isAliasAvailable(alias: string, excludeServerId?: string): Promise<string | null>;
45
56
  /**
46
57
  * Find a server by model name (fuzzy match)
47
58
  */
48
59
  findServerByModelName(name: string): Promise<ServerConfig | null>;
49
60
  /**
50
- * Find a server by identifier (ID, model name, or port)
61
+ * Find a server by identifier (alias, port, ID, or model name)
62
+ * Priority: alias (exact) → port (if numeric) → ID/model name (fuzzy)
51
63
  */
52
64
  findServer(identifier: string): Promise<ServerConfig | null>;
53
65
  /**
54
66
  * Check if a server exists for a given model
55
67
  */
56
68
  serverExistsForModel(modelPath: string): Promise<boolean>;
69
+ /**
70
+ * Generate a unique server ID
71
+ * If the base ID is already taken, appends a counter (-2, -3, etc.)
72
+ */
73
+ generateUniqueServerId(baseId: string): Promise<string>;
57
74
  /**
58
75
  * Get all used ports
59
76
  */
@@ -1 +1 @@
1
- {"version":3,"file":"state-manager.d.ts","sourceRoot":"","sources":["../../src/lib/state-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAyB,MAAM,wBAAwB,CAAC;AAc7E,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAS;;IASjC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC;IAK/C;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D;;OAEG;IACG,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAQhE;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D;;OAEG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASnF;;OAEG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAmB9C;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAKlE;;OAEG;IACG,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAiBvE;;OAEG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAYlE;;OAEG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/D;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAK1C;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAK3C;;OAEG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
1
+ {"version":3,"file":"state-manager.d.ts","sourceRoot":"","sources":["../../src/lib/state-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAyB,MAAM,wBAAwB,CAAC;AAc7E,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAS;;IASjC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC;IAK/C;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D;;OAEG;IACG,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAiBhE;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D;;OAEG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASnF;;OAEG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAmB9C;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAKlE;;OAEG;IACG,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAKpE;;;;;OAKG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWvF;;OAEG;IACG,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAiBvE;;;OAGG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAgBlE;;OAEG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/D;;;OAGG;IACG,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkB7D;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAK1C;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAK3C;;OAEG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
@@ -83,7 +83,14 @@ class StateManager {
83
83
  if (!(await (0, file_utils_1.fileExists)(configPath))) {
84
84
  return null;
85
85
  }
86
- return await (0, file_utils_1.readJson)(configPath);
86
+ const config = await (0, file_utils_1.readJson)(configPath);
87
+ // Migration: Add httpLogPath if missing (for configs created before this feature)
88
+ if (!config.httpLogPath) {
89
+ config.httpLogPath = path.join(this.logsDir, `${config.id}.http`);
90
+ // Save the migrated config
91
+ await this.saveServerConfig(config);
92
+ }
93
+ return config;
87
94
  }
88
95
  /**
89
96
  * Save a server configuration
@@ -139,6 +146,25 @@ class StateManager {
139
146
  const servers = await this.getAllServers();
140
147
  return servers.find((s) => s.port === port) || null;
141
148
  }
149
+ /**
150
+ * Find a server by alias (exact match, case-sensitive)
151
+ */
152
+ async findServerByAlias(alias) {
153
+ const servers = await this.getAllServers();
154
+ return servers.find((s) => s.alias === alias) || null;
155
+ }
156
+ /**
157
+ * Check if an alias is available (case-insensitive uniqueness check)
158
+ * @param alias - The alias to check
159
+ * @param excludeServerId - Optional server ID to exclude from check (for updates)
160
+ * @returns null if available, or the conflicting server ID if taken
161
+ */
162
+ async isAliasAvailable(alias, excludeServerId) {
163
+ const servers = await this.getAllServers();
164
+ const aliasLower = alias.toLowerCase();
165
+ const conflict = servers.find((s) => s.alias && s.alias.toLowerCase() === aliasLower && s.id !== excludeServerId);
166
+ return conflict ? conflict.id : null;
167
+ }
142
168
  /**
143
169
  * Find a server by model name (fuzzy match)
144
170
  */
@@ -155,9 +181,14 @@ class StateManager {
155
181
  return partialMatch || null;
156
182
  }
157
183
  /**
158
- * Find a server by identifier (ID, model name, or port)
184
+ * Find a server by identifier (alias, port, ID, or model name)
185
+ * Priority: alias (exact) → port (if numeric) → ID/model name (fuzzy)
159
186
  */
160
187
  async findServer(identifier) {
188
+ // Try as alias first (exact match, case-sensitive)
189
+ const aliasMatch = await this.findServerByAlias(identifier);
190
+ if (aliasMatch)
191
+ return aliasMatch;
161
192
  // Try as port number
162
193
  const port = parseInt(identifier, 10);
163
194
  if (!isNaN(port)) {
@@ -175,6 +206,24 @@ class StateManager {
175
206
  const servers = await this.getAllServers();
176
207
  return servers.some((s) => s.modelPath === modelPath);
177
208
  }
209
+ /**
210
+ * Generate a unique server ID
211
+ * If the base ID is already taken, appends a counter (-2, -3, etc.)
212
+ */
213
+ async generateUniqueServerId(baseId) {
214
+ const servers = await this.getAllServers();
215
+ const existingIds = new Set(servers.map(s => s.id));
216
+ // If base ID is available, use it
217
+ if (!existingIds.has(baseId)) {
218
+ return baseId;
219
+ }
220
+ // Otherwise, find the next available counter
221
+ let counter = 2;
222
+ while (existingIds.has(`${baseId}-${counter}`)) {
223
+ counter++;
224
+ }
225
+ return `${baseId}-${counter}`;
226
+ }
178
227
  /**
179
228
  * Get all used ports
180
229
  */
@@ -1 +1 @@
1
- {"version":3,"file":"state-manager.js","sourceRoot":"","sources":["../../src/lib/state-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state-manager.js","sourceRoot":"","sources":["../../src/lib/state-manager.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,19 @@
1
1
  import { ServerConfig, ServerStatus } from '../types/server-config';
2
2
  import { ServiceStatus } from './launchctl-manager';
3
+ export interface ServerHealthCheck extends ServiceStatus {
4
+ portListening: boolean;
5
+ healthy: boolean;
6
+ }
3
7
  export declare class StatusChecker {
8
+ private timeout;
9
+ /**
10
+ * Check the /health endpoint of a server
11
+ */
12
+ private checkHealthEndpoint;
4
13
  /**
5
- * Check the real-time status of a server
14
+ * Check the real-time status of a server (including health endpoint)
6
15
  */
7
- checkServer(config: ServerConfig): Promise<ServiceStatus & {
8
- portListening: boolean;
9
- }>;
16
+ checkServer(config: ServerConfig): Promise<ServerHealthCheck>;
10
17
  /**
11
18
  * Determine server status based on checks
12
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"status-checker.d.ts","sourceRoot":"","sources":["../../src/lib/status-checker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAoB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAItE,qBAAa,aAAa;IACxB;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,GAAG;QAAE,aAAa,EAAE,OAAO,CAAA;KAAE,CAAC;IA0B5F;;OAEG;IACH,eAAe,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,GAAG,YAAY;IAYnF;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAuBrE;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAYxD;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;CAepD;AAGD,eAAO,MAAM,aAAa,eAAsB,CAAC"}
1
+ {"version":3,"file":"status-checker.d.ts","sourceRoot":"","sources":["../../src/lib/status-checker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAoB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAItE,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAgB;IAE/B;;OAEG;YACW,mBAAmB;IAwBjC;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkCnE;;OAEG;IACH,eAAe,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,GAAG,YAAY;IAYnF;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAuBrE;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAYxD;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;CAepD;AAGD,eAAO,MAAM,aAAa,eAAsB,CAAC"}
@@ -5,8 +5,34 @@ const launchctl_manager_1 = require("./launchctl-manager");
5
5
  const process_utils_1 = require("../utils/process-utils");
6
6
  const state_manager_1 = require("./state-manager");
7
7
  class StatusChecker {
8
+ constructor() {
9
+ this.timeout = 5000; // 5 second timeout for health checks
10
+ }
11
+ /**
12
+ * Check the /health endpoint of a server
13
+ */
14
+ async checkHealthEndpoint(config) {
15
+ try {
16
+ const controller = new AbortController();
17
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
18
+ const host = config.host || '127.0.0.1';
19
+ const response = await fetch(`http://${host}:${config.port}/health`, {
20
+ signal: controller.signal,
21
+ });
22
+ clearTimeout(timeoutId);
23
+ if (!response.ok) {
24
+ return false;
25
+ }
26
+ const data = await response.json();
27
+ return data !== null && data.status === 'ok';
28
+ }
29
+ catch (err) {
30
+ // Network error, timeout, or parse error
31
+ return false;
32
+ }
33
+ }
8
34
  /**
9
- * Check the real-time status of a server
35
+ * Check the real-time status of a server (including health endpoint)
10
36
  */
11
37
  async checkServer(config) {
12
38
  // Get launchctl status
@@ -22,12 +48,19 @@ class StatusChecker {
22
48
  ...launchStatus,
23
49
  isRunning: false,
24
50
  portListening,
51
+ healthy: false,
25
52
  };
26
53
  }
27
54
  }
55
+ // Check health endpoint if server is running and port is listening
56
+ let healthy = false;
57
+ if (launchStatus.isRunning && portListening) {
58
+ healthy = await this.checkHealthEndpoint(config);
59
+ }
28
60
  return {
29
61
  ...launchStatus,
30
62
  portListening,
63
+ healthy,
31
64
  };
32
65
  }
33
66
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"status-checker.js","sourceRoot":"","sources":["../../src/lib/status-checker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status-checker.js","sourceRoot":"","sources":["../../src/lib/status-checker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Centralized validation service for server configuration
3
+ * Eliminates 4x duplication across CLI, TUI, and Admin API
4
+ */
5
+ export declare class ValidationService {
6
+ /**
7
+ * Validate alias format and availability
8
+ * @param alias - Alias to validate (null/undefined/empty string = remove alias)
9
+ * @param currentServerId - Current server ID (for updates, to exclude self from uniqueness check)
10
+ * @throws Error if alias is invalid or already in use
11
+ */
12
+ validateAlias(alias: string | null | undefined, currentServerId?: string): Promise<void>;
13
+ /**
14
+ * Validate port number and availability
15
+ * @param port - Port number to validate
16
+ * @param currentServerPort - Current server's port (for updates, to allow keeping same port)
17
+ * @throws Error if port is invalid or already in use
18
+ */
19
+ validatePort(port: number, currentServerPort?: number): Promise<void>;
20
+ /**
21
+ * Validate host address format
22
+ * @param host - Host address (e.g., '127.0.0.1' or '0.0.0.0')
23
+ * @throws Error if host format is invalid
24
+ */
25
+ validateHost(host: string): void;
26
+ /**
27
+ * Validate thread count
28
+ * @throws Error if thread count is invalid
29
+ */
30
+ validateThreads(threads: number): void;
31
+ /**
32
+ * Validate context size
33
+ * @throws Error if context size is invalid
34
+ */
35
+ validateContextSize(ctxSize: number): void;
36
+ /**
37
+ * Validate GPU layers
38
+ * @throws Error if GPU layers value is invalid
39
+ */
40
+ validateGpuLayers(gpuLayers: number): void;
41
+ }
42
+ export declare const validationService: ValidationService;
43
+ //# sourceMappingURL=validation-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-service.d.ts","sourceRoot":"","sources":["../../src/lib/validation-service.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B;;;;;OAKG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC;IAmBhB;;;;;OAKG;IACG,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,IAAI,CAAC;IAgBhB;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAkBhC;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAUtC;;;OAGG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAU1C;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAS3C;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validationService = exports.ValidationService = void 0;
4
+ const server_config_1 = require("../types/server-config");
5
+ const state_manager_1 = require("./state-manager");
6
+ const port_manager_1 = require("./port-manager");
7
+ /**
8
+ * Centralized validation service for server configuration
9
+ * Eliminates 4x duplication across CLI, TUI, and Admin API
10
+ */
11
+ class ValidationService {
12
+ /**
13
+ * Validate alias format and availability
14
+ * @param alias - Alias to validate (null/undefined/empty string = remove alias)
15
+ * @param currentServerId - Current server ID (for updates, to exclude self from uniqueness check)
16
+ * @throws Error if alias is invalid or already in use
17
+ */
18
+ async validateAlias(alias, currentServerId) {
19
+ // null, undefined, or empty string means remove alias (valid)
20
+ if (alias === null || alias === undefined || alias === '') {
21
+ return;
22
+ }
23
+ // Validate format
24
+ const formatError = (0, server_config_1.validateAlias)(alias);
25
+ if (formatError) {
26
+ throw new Error(`Invalid alias: ${formatError}`);
27
+ }
28
+ // Check uniqueness (exclude current server)
29
+ const conflictingServerId = await state_manager_1.stateManager.isAliasAvailable(alias, currentServerId);
30
+ if (conflictingServerId) {
31
+ throw new Error(`Alias "${alias}" is already used by server: ${conflictingServerId}`);
32
+ }
33
+ }
34
+ /**
35
+ * Validate port number and availability
36
+ * @param port - Port number to validate
37
+ * @param currentServerPort - Current server's port (for updates, to allow keeping same port)
38
+ * @throws Error if port is invalid or already in use
39
+ */
40
+ async validatePort(port, currentServerPort) {
41
+ // Validate port range
42
+ port_manager_1.portManager.validatePort(port);
43
+ // Skip availability check if this is current server's port (for updates)
44
+ if (port === currentServerPort) {
45
+ return;
46
+ }
47
+ // Check availability
48
+ const available = await port_manager_1.portManager.isPortAvailable(port);
49
+ if (!available) {
50
+ throw new Error(`Port ${port} is already in use`);
51
+ }
52
+ }
53
+ /**
54
+ * Validate host address format
55
+ * @param host - Host address (e.g., '127.0.0.1' or '0.0.0.0')
56
+ * @throws Error if host format is invalid
57
+ */
58
+ validateHost(host) {
59
+ // Basic validation - must be valid IPv4 or hostname
60
+ const ipv4Regex = /^(\d{1,3}\.){3}\d{1,3}$/;
61
+ const hostnameRegex = /^[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*(\.[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]*)*$/;
62
+ if (!ipv4Regex.test(host) && !hostnameRegex.test(host)) {
63
+ throw new Error(`Invalid host format: ${host}. Must be a valid IPv4 address or hostname.`);
64
+ }
65
+ // Validate IPv4 octets are in range
66
+ if (ipv4Regex.test(host)) {
67
+ const octets = host.split('.').map(Number);
68
+ if (octets.some(octet => octet < 0 || octet > 255)) {
69
+ throw new Error(`Invalid IPv4 address: ${host}. Octets must be 0-255.`);
70
+ }
71
+ }
72
+ }
73
+ /**
74
+ * Validate thread count
75
+ * @throws Error if thread count is invalid
76
+ */
77
+ validateThreads(threads) {
78
+ if (!Number.isInteger(threads) || threads < 1) {
79
+ throw new Error(`Invalid thread count: ${threads}. Must be a positive integer.`);
80
+ }
81
+ if (threads > 256) {
82
+ throw new Error(`Invalid thread count: ${threads}. Maximum is 256 threads.`);
83
+ }
84
+ }
85
+ /**
86
+ * Validate context size
87
+ * @throws Error if context size is invalid
88
+ */
89
+ validateContextSize(ctxSize) {
90
+ if (!Number.isInteger(ctxSize) || ctxSize < 1) {
91
+ throw new Error(`Invalid context size: ${ctxSize}. Must be a positive integer.`);
92
+ }
93
+ if (ctxSize > 1048576) { // 1M tokens
94
+ throw new Error(`Invalid context size: ${ctxSize}. Maximum is 1,048,576 tokens.`);
95
+ }
96
+ }
97
+ /**
98
+ * Validate GPU layers
99
+ * @throws Error if GPU layers value is invalid
100
+ */
101
+ validateGpuLayers(gpuLayers) {
102
+ if (!Number.isInteger(gpuLayers) || gpuLayers < -1) {
103
+ throw new Error(`Invalid GPU layers: ${gpuLayers}. Must be -1 (auto) or a non-negative integer.`);
104
+ }
105
+ if (gpuLayers > 1000) {
106
+ throw new Error(`Invalid GPU layers: ${gpuLayers}. Maximum is 1000 layers.`);
107
+ }
108
+ }
109
+ }
110
+ exports.ValidationService = ValidationService;
111
+ exports.validationService = new ValidationService();
112
+ //# sourceMappingURL=validation-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-service.js","sourceRoot":"","sources":["../../src/lib/validation-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validation-service.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-service.test.d.ts","sourceRoot":"","sources":["../../src/lib/validation-service.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-service.test.js","sourceRoot":"","sources":["../../src/lib/validation-service.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ #!/bin/bash
2
+ # HTTP log filter wrapper
3
+ # Usage: ./http-log-filter.sh <node-path> <filter-script-path>
4
+
5
+ NODE_PATH="$1"
6
+ FILTER_SCRIPT="$2"
7
+
8
+ "${NODE_PATH}" "${FILTER_SCRIPT}"
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigApp.d.ts","sourceRoot":"","sources":["../../src/tui/ConfigApp.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAqB,MAAM,2BAA2B,CAAC;AA0B5E;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAC9B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE,YAAY,KAAK,IAAI,GAC7C,OAAO,CAAC,IAAI,CAAC,CAyhCf"}
1
+ {"version":3,"file":"ConfigApp.d.ts","sourceRoot":"","sources":["../../src/tui/ConfigApp.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAoC,MAAM,2BAA2B,CAAC;AA4B3F;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAC9B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE,YAAY,KAAK,IAAI,GAC7C,OAAO,CAAC,IAAI,CAAC,CAmjCf"}