@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
@@ -0,0 +1,458 @@
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.labelMigration = exports.LabelMigration = void 0;
40
+ const path = __importStar(require("path"));
41
+ const fs = __importStar(require("fs/promises"));
42
+ const chalk_1 = __importDefault(require("chalk"));
43
+ const state_manager_1 = require("./state-manager");
44
+ const router_manager_1 = require("./router-manager");
45
+ const admin_manager_1 = require("./admin-manager");
46
+ const launchctl_manager_1 = require("./launchctl-manager");
47
+ const file_utils_1 = require("../utils/file-utils");
48
+ const OLD_LABEL_PREFIX = 'com.llama.';
49
+ const NEW_LABEL_PREFIX = 'studio.appkit.llamacpp-cli.';
50
+ const MIGRATION_MARKER = '.label-migration-done';
51
+ const BACKUP_FILE = '.migration-backup.json';
52
+ class LabelMigration {
53
+ constructor() {
54
+ this.configDir = (0, file_utils_1.getConfigDir)();
55
+ this.launchAgentsDir = (0, file_utils_1.getLaunchAgentsDir)();
56
+ this.markerPath = path.join(this.configDir, MIGRATION_MARKER);
57
+ this.backupPath = path.join(this.configDir, BACKUP_FILE);
58
+ }
59
+ /**
60
+ * Check if migration is needed
61
+ */
62
+ async needsMigration() {
63
+ // If marker exists, migration already done
64
+ if (await (0, file_utils_1.fileExists)(this.markerPath)) {
65
+ return false;
66
+ }
67
+ // Check if any configs have old labels
68
+ const oldLabels = await this.detectOldLabels();
69
+ return oldLabels.length > 0;
70
+ }
71
+ /**
72
+ * Detect services with old labels
73
+ */
74
+ async detectOldLabels() {
75
+ const oldLabels = [];
76
+ // Check server configs
77
+ const servers = await state_manager_1.stateManager.getAllServers();
78
+ for (const server of servers) {
79
+ if (server.label.startsWith(OLD_LABEL_PREFIX)) {
80
+ oldLabels.push(server.label);
81
+ }
82
+ }
83
+ // Check router config
84
+ const routerStatus = await router_manager_1.routerManager.getStatus();
85
+ if (routerStatus?.config.label.startsWith(OLD_LABEL_PREFIX)) {
86
+ oldLabels.push(routerStatus.config.label);
87
+ }
88
+ // Check admin config
89
+ const adminStatus = await admin_manager_1.adminManager.getStatus();
90
+ if (adminStatus?.config.label.startsWith(OLD_LABEL_PREFIX)) {
91
+ oldLabels.push(adminStatus.config.label);
92
+ }
93
+ return oldLabels;
94
+ }
95
+ /**
96
+ * Create backup of current state
97
+ */
98
+ async createBackup() {
99
+ const servers = await state_manager_1.stateManager.getAllServers();
100
+ const routerStatus = await router_manager_1.routerManager.getStatus();
101
+ const adminStatus = await admin_manager_1.adminManager.getStatus();
102
+ // Detect running services
103
+ const runningServices = [];
104
+ for (const server of servers) {
105
+ const status = await launchctl_manager_1.launchctlManager.getServiceStatus(server.label);
106
+ if (status.isRunning) {
107
+ runningServices.push(server.label);
108
+ }
109
+ }
110
+ if (routerStatus?.status.isRunning) {
111
+ runningServices.push(routerStatus.config.label);
112
+ }
113
+ if (adminStatus?.status.isRunning) {
114
+ runningServices.push(adminStatus.config.label);
115
+ }
116
+ const backup = {
117
+ timestamp: new Date().toISOString(),
118
+ servers,
119
+ router: routerStatus?.config || null,
120
+ admin: adminStatus?.config || null,
121
+ runningServices,
122
+ };
123
+ await (0, file_utils_1.writeJsonAtomic)(this.backupPath, backup);
124
+ }
125
+ /**
126
+ * Migrate a single server
127
+ */
128
+ async migrateServer(server, wasRunning) {
129
+ // Stop if running
130
+ if (wasRunning) {
131
+ try {
132
+ await launchctl_manager_1.launchctlManager.unloadService(server.plistPath);
133
+ await launchctl_manager_1.launchctlManager.waitForServiceStop(server.label, 5000);
134
+ }
135
+ catch (error) {
136
+ // Service might already be stopped
137
+ }
138
+ }
139
+ // Delete old plist
140
+ try {
141
+ await fs.unlink(server.plistPath);
142
+ }
143
+ catch (error) {
144
+ // File might not exist
145
+ }
146
+ // Update config with new label
147
+ const newLabel = server.label.replace(OLD_LABEL_PREFIX, NEW_LABEL_PREFIX);
148
+ const newPlistPath = path.join(this.launchAgentsDir, `${newLabel}.plist`);
149
+ const updatedConfig = {
150
+ ...server,
151
+ label: newLabel,
152
+ plistPath: newPlistPath,
153
+ };
154
+ // Save updated config
155
+ await state_manager_1.stateManager.saveServerConfig(updatedConfig);
156
+ // Generate new plist
157
+ await launchctl_manager_1.launchctlManager.createPlist(updatedConfig);
158
+ // Restart if was running
159
+ if (wasRunning) {
160
+ await launchctl_manager_1.launchctlManager.loadService(newPlistPath);
161
+ await launchctl_manager_1.launchctlManager.startService(newLabel);
162
+ // Model servers need more time to load models into memory (15s vs 5s for router/admin)
163
+ const started = await launchctl_manager_1.launchctlManager.waitForServiceStart(newLabel, 15000);
164
+ if (!started) {
165
+ throw new Error(`Failed to start server ${server.id} after migration`);
166
+ }
167
+ // Update status in config
168
+ const status = await launchctl_manager_1.launchctlManager.getServiceStatus(newLabel);
169
+ await state_manager_1.stateManager.updateServerConfig(server.id, {
170
+ status: 'running',
171
+ pid: status.pid || undefined,
172
+ });
173
+ }
174
+ }
175
+ /**
176
+ * Migrate router service
177
+ */
178
+ async migrateRouter(wasRunning) {
179
+ const routerStatus = await router_manager_1.routerManager.getStatus();
180
+ if (!routerStatus)
181
+ return;
182
+ const router = routerStatus.config;
183
+ // Stop if running
184
+ if (wasRunning) {
185
+ try {
186
+ await router_manager_1.routerManager.unloadService(router.plistPath);
187
+ await router_manager_1.routerManager.waitForServiceStop(router.label, 5000);
188
+ }
189
+ catch (error) {
190
+ // Service might already be stopped
191
+ }
192
+ }
193
+ // Delete old plist
194
+ try {
195
+ await fs.unlink(router.plistPath);
196
+ }
197
+ catch (error) {
198
+ // File might not exist
199
+ }
200
+ // Update config with new label
201
+ const newLabel = 'studio.appkit.llamacpp-cli.router';
202
+ const newPlistPath = path.join(this.launchAgentsDir, `${newLabel}.plist`);
203
+ const updatedConfig = {
204
+ ...router,
205
+ label: newLabel,
206
+ plistPath: newPlistPath,
207
+ };
208
+ // Save updated config
209
+ await router_manager_1.routerManager.saveConfig(updatedConfig);
210
+ // Generate new plist
211
+ await router_manager_1.routerManager.createPlist(updatedConfig);
212
+ // Restart if was running
213
+ if (wasRunning) {
214
+ await router_manager_1.routerManager.loadService(newPlistPath);
215
+ await router_manager_1.routerManager.startService(newLabel);
216
+ const started = await router_manager_1.routerManager.waitForServiceStart(newLabel, 5000);
217
+ if (!started) {
218
+ throw new Error('Failed to start router after migration');
219
+ }
220
+ // Update status in config
221
+ const status = await router_manager_1.routerManager.getServiceStatus(newLabel);
222
+ await router_manager_1.routerManager.updateConfig({
223
+ status: 'running',
224
+ pid: status.pid || undefined,
225
+ });
226
+ }
227
+ }
228
+ /**
229
+ * Migrate admin service
230
+ */
231
+ async migrateAdmin(wasRunning) {
232
+ const adminStatus = await admin_manager_1.adminManager.getStatus();
233
+ if (!adminStatus)
234
+ return;
235
+ const admin = adminStatus.config;
236
+ // Stop if running
237
+ if (wasRunning) {
238
+ try {
239
+ await admin_manager_1.adminManager.unloadService(admin.plistPath);
240
+ await admin_manager_1.adminManager.waitForServiceStop(admin.label, 5000);
241
+ }
242
+ catch (error) {
243
+ // Service might already be stopped
244
+ }
245
+ }
246
+ // Delete old plist
247
+ try {
248
+ await fs.unlink(admin.plistPath);
249
+ }
250
+ catch (error) {
251
+ // File might not exist
252
+ }
253
+ // Update config with new label
254
+ const newLabel = 'studio.appkit.llamacpp-cli.admin';
255
+ const newPlistPath = path.join(this.launchAgentsDir, `${newLabel}.plist`);
256
+ const updatedConfig = {
257
+ ...admin,
258
+ label: newLabel,
259
+ plistPath: newPlistPath,
260
+ };
261
+ // Save updated config
262
+ await admin_manager_1.adminManager.saveConfig(updatedConfig);
263
+ // Generate new plist
264
+ await admin_manager_1.adminManager.createPlist(updatedConfig);
265
+ // Restart if was running
266
+ if (wasRunning) {
267
+ await admin_manager_1.adminManager.loadService(newPlistPath);
268
+ await admin_manager_1.adminManager.startService(newLabel);
269
+ const started = await admin_manager_1.adminManager.waitForServiceStart(newLabel, 5000);
270
+ if (!started) {
271
+ throw new Error('Failed to start admin service after migration');
272
+ }
273
+ // Update status in config
274
+ const status = await admin_manager_1.adminManager.getServiceStatus(newLabel);
275
+ await admin_manager_1.adminManager.updateConfig({
276
+ status: 'running',
277
+ pid: status.pid || undefined,
278
+ });
279
+ }
280
+ }
281
+ /**
282
+ * Migrate all services
283
+ */
284
+ async migrateAll(onProgress) {
285
+ const failedServices = [];
286
+ try {
287
+ // Create backup
288
+ onProgress?.('Creating backup...', 0, 1);
289
+ await this.createBackup();
290
+ // Load backup to get running services
291
+ const backup = await (0, file_utils_1.readJson)(this.backupPath);
292
+ // Count total services to migrate
293
+ const totalServices = backup.servers.length +
294
+ (backup.router ? 1 : 0) +
295
+ (backup.admin ? 1 : 0);
296
+ let current = 0;
297
+ // Migrate servers
298
+ for (const server of backup.servers) {
299
+ try {
300
+ const wasRunning = backup.runningServices.includes(server.label);
301
+ onProgress?.(`Migrating server: ${server.id}`, ++current, totalServices);
302
+ await this.migrateServer(server, wasRunning);
303
+ }
304
+ catch (error) {
305
+ failedServices.push(server.label);
306
+ console.error(chalk_1.default.red(`Failed to migrate server ${server.id}:`), error);
307
+ }
308
+ }
309
+ // Migrate router
310
+ if (backup.router) {
311
+ try {
312
+ const wasRunning = backup.runningServices.includes(backup.router.label);
313
+ onProgress?.('Migrating router', ++current, totalServices);
314
+ await this.migrateRouter(wasRunning);
315
+ }
316
+ catch (error) {
317
+ failedServices.push(backup.router.label);
318
+ console.error(chalk_1.default.red('Failed to migrate router:'), error);
319
+ }
320
+ }
321
+ // Migrate admin
322
+ if (backup.admin) {
323
+ try {
324
+ const wasRunning = backup.runningServices.includes(backup.admin.label);
325
+ onProgress?.('Migrating admin', ++current, totalServices);
326
+ await this.migrateAdmin(wasRunning);
327
+ }
328
+ catch (error) {
329
+ failedServices.push(backup.admin.label);
330
+ console.error(chalk_1.default.red('Failed to migrate admin:'), error);
331
+ }
332
+ }
333
+ // If any service failed, rollback
334
+ if (failedServices.length > 0) {
335
+ onProgress?.('Migration failed, rolling back...', 0, 1);
336
+ await this.rollback();
337
+ return {
338
+ success: false,
339
+ migratedCount: totalServices - failedServices.length,
340
+ failedServices,
341
+ error: `Failed to migrate ${failedServices.length} service(s)`,
342
+ };
343
+ }
344
+ // Mark migration complete
345
+ await fs.writeFile(this.markerPath, new Date().toISOString());
346
+ return {
347
+ success: true,
348
+ migratedCount: totalServices,
349
+ failedServices: [],
350
+ };
351
+ }
352
+ catch (error) {
353
+ return {
354
+ success: false,
355
+ migratedCount: 0,
356
+ failedServices,
357
+ error: error.message,
358
+ };
359
+ }
360
+ }
361
+ /**
362
+ * Rollback migration
363
+ */
364
+ async rollback() {
365
+ if (!(await (0, file_utils_1.fileExists)(this.backupPath))) {
366
+ throw new Error('No backup found to rollback');
367
+ }
368
+ const backup = await (0, file_utils_1.readJson)(this.backupPath);
369
+ // Restore server configs
370
+ for (const server of backup.servers) {
371
+ const newLabel = server.label.replace(OLD_LABEL_PREFIX, NEW_LABEL_PREFIX);
372
+ const newPlistPath = path.join(this.launchAgentsDir, `${newLabel}.plist`);
373
+ // Stop new service
374
+ try {
375
+ await launchctl_manager_1.launchctlManager.unloadService(newPlistPath);
376
+ await fs.unlink(newPlistPath);
377
+ }
378
+ catch (error) {
379
+ // Ignore errors
380
+ }
381
+ // Restore old config
382
+ await state_manager_1.stateManager.saveServerConfig(server);
383
+ // Recreate old plist
384
+ await launchctl_manager_1.launchctlManager.createPlist(server);
385
+ // Restart if was running
386
+ if (backup.runningServices.includes(server.label)) {
387
+ await launchctl_manager_1.launchctlManager.loadService(server.plistPath);
388
+ await launchctl_manager_1.launchctlManager.startService(server.label);
389
+ }
390
+ }
391
+ // Restore router
392
+ if (backup.router) {
393
+ const newLabel = 'studio.appkit.llamacpp-cli.router';
394
+ const newPlistPath = path.join(this.launchAgentsDir, `${newLabel}.plist`);
395
+ // Stop new service
396
+ try {
397
+ await router_manager_1.routerManager.unloadService(newPlistPath);
398
+ await fs.unlink(newPlistPath);
399
+ }
400
+ catch (error) {
401
+ // Ignore errors
402
+ }
403
+ // Restore old config
404
+ await router_manager_1.routerManager.saveConfig(backup.router);
405
+ // Recreate old plist
406
+ await router_manager_1.routerManager.createPlist(backup.router);
407
+ // Restart if was running
408
+ if (backup.runningServices.includes(backup.router.label)) {
409
+ await router_manager_1.routerManager.loadService(backup.router.plistPath);
410
+ await router_manager_1.routerManager.startService(backup.router.label);
411
+ }
412
+ }
413
+ // Restore admin
414
+ if (backup.admin) {
415
+ const newLabel = 'studio.appkit.llamacpp-cli.admin';
416
+ const newPlistPath = path.join(this.launchAgentsDir, `${newLabel}.plist`);
417
+ // Stop new service
418
+ try {
419
+ await admin_manager_1.adminManager.unloadService(newPlistPath);
420
+ await fs.unlink(newPlistPath);
421
+ }
422
+ catch (error) {
423
+ // Ignore errors
424
+ }
425
+ // Restore old config
426
+ await admin_manager_1.adminManager.saveConfig(backup.admin);
427
+ // Recreate old plist
428
+ await admin_manager_1.adminManager.createPlist(backup.admin);
429
+ // Restart if was running
430
+ if (backup.runningServices.includes(backup.admin.label)) {
431
+ await admin_manager_1.adminManager.loadService(backup.admin.plistPath);
432
+ await admin_manager_1.adminManager.startService(backup.admin.label);
433
+ }
434
+ }
435
+ console.log(chalk_1.default.green('✓ Rollback complete'));
436
+ }
437
+ /**
438
+ * Get backup info if exists
439
+ */
440
+ async getBackupInfo() {
441
+ if (!(await (0, file_utils_1.fileExists)(this.backupPath))) {
442
+ return null;
443
+ }
444
+ return await (0, file_utils_1.readJson)(this.backupPath);
445
+ }
446
+ /**
447
+ * Delete backup file
448
+ */
449
+ async deleteBackup() {
450
+ if (await (0, file_utils_1.fileExists)(this.backupPath)) {
451
+ await fs.unlink(this.backupPath);
452
+ }
453
+ }
454
+ }
455
+ exports.LabelMigration = LabelMigration;
456
+ // Export singleton instance
457
+ exports.labelMigration = new LabelMigration();
458
+ //# sourceMappingURL=label-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label-migration.js","sourceRoot":"","sources":["../../src/lib/label-migration.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,15 @@ export interface ServiceStatus {
6
6
  lastExitReason?: string;
7
7
  }
8
8
  export declare class LaunchctlManager {
9
+ /**
10
+ * Check if plist needs updating (old format without wrapper)
11
+ */
12
+ needsPlistUpdate(plistPath: string): Promise<boolean>;
13
+ /**
14
+ * Get the path to the wrapper script
15
+ * Handles both development (src/) and production (dist/) scenarios
16
+ */
17
+ private getWrapperPath;
9
18
  /**
10
19
  * Generate plist XML content for a server
11
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"launchctl-manager.d.ts","sourceRoot":"","sources":["../../src/lib/launchctl-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAItD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;IAqE3C;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrD;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA4C7D;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACG,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5E;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CAW5E;AAGD,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
1
+ {"version":3,"file":"launchctl-manager.d.ts","sourceRoot":"","sources":["../../src/lib/launchctl-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAItD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gBAAgB;IAC3B;;OAEG;IACG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB3D;;;OAGG;IACH,OAAO,CAAC,cAAc;IAiBtB;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;IA2F3C;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrD;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA4C7D;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACG,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5E;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CAW5E;AAGD,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
@@ -34,39 +34,82 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.launchctlManager = exports.LaunchctlManager = void 0;
37
+ const path = __importStar(require("path"));
37
38
  const fs = __importStar(require("fs/promises"));
38
39
  const process_utils_1 = require("../utils/process-utils");
39
40
  const file_utils_1 = require("../utils/file-utils");
40
41
  class LaunchctlManager {
42
+ /**
43
+ * Check if plist needs updating (old format without wrapper)
44
+ */
45
+ async needsPlistUpdate(plistPath) {
46
+ try {
47
+ const plistContent = await fs.readFile(plistPath, 'utf-8');
48
+ // Check if it uses the wrapper (new format) or node directly (old format)
49
+ const hasWrapper = plistContent.includes('/launchers/llamacpp-server');
50
+ const hasProcessType = plistContent.includes('<key>ProcessType</key>');
51
+ // Needs update if missing wrapper or ProcessType
52
+ return !hasWrapper || !hasProcessType;
53
+ }
54
+ catch (error) {
55
+ // If plist doesn't exist or can't be read, it needs to be created
56
+ return true;
57
+ }
58
+ }
59
+ /**
60
+ * Get the path to the wrapper script
61
+ * Handles both development (src/) and production (dist/) scenarios
62
+ */
63
+ getWrapperPath() {
64
+ // Try relative to current module location (works for both dev and prod)
65
+ let wrapperPath = path.join(__dirname, '..', 'launchers', 'llamacpp-server');
66
+ if (require('fs').existsSync(wrapperPath)) {
67
+ return wrapperPath;
68
+ }
69
+ // Try from the CLI binary location (global install)
70
+ const binPath = process.argv[1];
71
+ wrapperPath = path.join(path.dirname(binPath), '..', 'launchers', 'llamacpp-server');
72
+ if (require('fs').existsSync(wrapperPath)) {
73
+ return wrapperPath;
74
+ }
75
+ throw new Error('Could not locate llamacpp-server wrapper script');
76
+ }
41
77
  /**
42
78
  * Generate plist XML content for a server
43
79
  */
44
80
  generatePlist(config) {
45
- // Build program arguments array
46
- const args = [
47
- '/opt/homebrew/bin/llama-server',
48
- '--model', config.modelPath,
49
- '--host', config.host,
50
- '--port', config.port.toString(),
51
- '--threads', config.threads.toString(),
52
- '--ctx-size', config.ctxSize.toString(),
53
- '--gpu-layers', config.gpuLayers.toString(),
81
+ // Get path to wrapper script
82
+ const wrapperPath = this.getWrapperPath();
83
+ // Get node executable path (for wrapper to use)
84
+ const nodePath = process.execPath;
85
+ // Build arguments for llamacpp internal server-wrapper command
86
+ // First arg to wrapper is node path, then comes our CLI arguments
87
+ const wrapperArgs = [
88
+ wrapperPath,
89
+ nodePath, // Wrapper needs this to find node
90
+ 'internal',
91
+ 'server-wrapper',
92
+ '--http-log-path', config.httpLogPath,
54
93
  ];
94
+ // Add verbose flag if enabled
95
+ if (config.verbose) {
96
+ wrapperArgs.push('--verbose');
97
+ }
98
+ // Add llama-server arguments
99
+ wrapperArgs.push('--', '--model', config.modelPath, '--host', config.host, '--port', config.port.toString(), '--threads', config.threads.toString(), '--ctx-size', config.ctxSize.toString(), '--gpu-layers', config.gpuLayers === -1 ? 'all' : config.gpuLayers.toString());
55
100
  // Add flags
56
101
  if (config.embeddings)
57
- args.push('--embeddings');
102
+ wrapperArgs.push('--embeddings');
58
103
  if (config.jinja)
59
- args.push('--jinja');
60
- // Conditionally enable verbose HTTP logging for detailed request/response info
61
- if (config.verbose) {
62
- args.push('--log-verbose');
63
- }
104
+ wrapperArgs.push('--jinja');
105
+ // Always enable verbose logging (so HTTP logs are generated)
106
+ wrapperArgs.push('--log-verbose');
64
107
  // Add custom flags
65
108
  if (config.customFlags && config.customFlags.length > 0) {
66
- args.push(...config.customFlags);
109
+ wrapperArgs.push(...config.customFlags);
67
110
  }
68
- // Generate XML array elements
69
- const argsXml = args.map(arg => ` <string>${arg}</string>`).join('\n');
111
+ // Build ProgramArguments array for plist (wrapper handles node execution)
112
+ const programArguments = wrapperArgs.map(arg => ` <string>${arg}</string>`).join('\n');
70
113
  return `<?xml version="1.0" encoding="UTF-8"?>
71
114
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
72
115
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@@ -77,7 +120,7 @@ class LaunchctlManager {
77
120
 
78
121
  <key>ProgramArguments</key>
79
122
  <array>
80
- ${argsXml}
123
+ ${programArguments}
81
124
  </array>
82
125
 
83
126
  <key>RunAtLoad</key>
@@ -100,6 +143,9 @@ ${argsXml}
100
143
  <key>WorkingDirectory</key>
101
144
  <string>/tmp</string>
102
145
 
146
+ <key>ProcessType</key>
147
+ <string>Background</string>
148
+
103
149
  <key>ThrottleInterval</key>
104
150
  <integer>10</integer>
105
151
  </dict>
@@ -1 +1 @@
1
- {"version":3,"file":"launchctl-manager.js","sourceRoot":"","sources":["../../src/lib/launchctl-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,gDAAkC;AAElC,0DAAgE;AAChE,oDAAkE;AASlE,MAAa,gBAAgB;IAC3B;;OAEG;IACH,aAAa,CAAC,MAAoB;QAChC,gCAAgC;QAChC,MAAM,IAAI,GAAG;YACX,gCAAgC;YAChC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ,EAAE,MAAM,CAAC,IAAI;YACrB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;YACtC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;YACvC,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;SAC5C,CAAC;QAEF,YAAY;QACZ,IAAI,MAAM,CAAC,UAAU;YAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,MAAM,CAAC,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEvC,+EAA+E;QAC/E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7B,CAAC;QAED,mBAAmB;QACnB,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC;QAED,8BAA8B;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,iBAAiB,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5E,OAAO;;;;;;cAMG,MAAM,CAAC,KAAK;;;;EAIxB,OAAO;;;;;;;;;;;;;;;cAeK,MAAM,CAAC,UAAU;;;cAGjB,MAAM,CAAC,UAAU;;;;;;;;;CAS9B,CAAC;IACA,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,MAAoB;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,IAAA,4BAAe,EAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,IAAI,MAAM,IAAA,uBAAU,EAAC,SAAS,CAAC,EAAE,CAAC;YAChC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,MAAM,IAAA,2BAAW,EAAC,mBAAmB,SAAS,GAAG,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,IAAI,CAAC;YACH,MAAM,IAAA,2BAAW,EAAC,qBAAqB,SAAS,GAAG,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,yCAAyC;QAC3C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,MAAM,IAAA,2BAAW,EAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,MAAM,IAAA,2BAAW,EAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,KAAa;QAClC,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,yBAAS,EAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;YACrE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAChC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC/B,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACpC,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAErC,wBAAwB;oBACxB,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;wBAC3B,MAAM,GAAG,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBACzD,MAAM,QAAQ,GAAG,WAAW,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBACxE,MAAM,SAAS,GAAG,GAAG,KAAK,IAAI,CAAC;wBAE/B,OAAO;4BACL,SAAS;4BACT,GAAG;4BACH,QAAQ;4BACR,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;yBACjD,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,oBAAoB;YACpB,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,GAAG,EAAE,IAAI;gBACT,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kCAAkC;YAClC,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,GAAG,EAAE,IAAI;gBACT,QAAQ,EAAE,IAAI;aACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,IAAmB;QAC3C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAClD,IAAI,IAAI,KAAK,CAAC,CAAC;YAAE,OAAO,wBAAwB,CAAC;QACjD,IAAI,IAAI,KAAK,CAAC,EAAE;YAAE,OAAO,sBAAsB,CAAC;QAChD,OAAO,cAAc,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,KAAa,EAAE,SAAS,GAAG,IAAI;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAa,EAAE,SAAS,GAAG,IAAI;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAhND,4CAgNC;AAED,4BAA4B;AACf,QAAA,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"launchctl-manager.js","sourceRoot":"","sources":["../../src/lib/launchctl-manager.ts"],"names":[],"mappings":"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"}