@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,247 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KeyboardManager = void 0;
4
+ /**
5
+ * KeyboardManager provides centralized keyboard event handling with a context stack.
6
+ *
7
+ * This solves several problems with blessed.js's event model:
8
+ * 1. No built-in event.stopPropagation() mechanism
9
+ * 2. Multiple handlers can fire for the same key
10
+ * 3. Modal focus doesn't prevent screen handlers from executing
11
+ * 4. Handler re-registration in render() causes races and state loss
12
+ *
13
+ * Usage pattern:
14
+ * ```typescript
15
+ * const keyboardManager = new KeyboardManager(screen);
16
+ *
17
+ * // Push main app context
18
+ * keyboardManager.pushContext('main', {
19
+ * 'escape': () => process.exit(0),
20
+ * 'up': () => scrollUp(),
21
+ * 'down': () => scrollDown(),
22
+ * });
23
+ *
24
+ * // When opening a modal, push a blocking context
25
+ * keyboardManager.pushContext('confirm-modal', {
26
+ * 'enter': () => confirmAction(),
27
+ * 'escape': () => closeModal(),
28
+ * }, true); // blocking=true prevents main context from receiving keys
29
+ *
30
+ * // When closing the modal, pop the context
31
+ * keyboardManager.popContext();
32
+ *
33
+ * // Now main context receives keys again
34
+ * ```
35
+ *
36
+ * Context Stack Example:
37
+ * ```
38
+ * [top] modal-context (blocking) <- Keys go here first
39
+ * main-context <- Only receives keys if modal doesn't handle and is non-blocking
40
+ * ```
41
+ */
42
+ class KeyboardManager {
43
+ /**
44
+ * Create a new KeyboardManager.
45
+ *
46
+ * @param screen - blessed screen instance to intercept keys from
47
+ * @param debugMode - If true, log key handling to stderr for debugging
48
+ */
49
+ constructor(screen, debugMode = false) {
50
+ this.contextStack = [];
51
+ this.debugMode = false;
52
+ this.screen = screen;
53
+ this.debugMode = debugMode;
54
+ this.interceptKeys();
55
+ }
56
+ /**
57
+ * Intercept all keypresses at the screen level.
58
+ * This is called BEFORE blessed's screen.key() handlers.
59
+ */
60
+ interceptKeys() {
61
+ this.screen.on('keypress', (ch, key) => {
62
+ this.handleKeypress(ch, key);
63
+ });
64
+ }
65
+ /**
66
+ * Route keypress to the top-most context.
67
+ * If context doesn't handle it and is non-blocking, pass to lower contexts.
68
+ */
69
+ handleKeypress(ch, key) {
70
+ if (this.debugMode) {
71
+ const contextNames = this.contextStack.map(c => c.name).join(' -> ');
72
+ console.error(`[KeyboardManager] Key: ${key.full || key.name} | Contexts: ${contextNames || '(none)'}`);
73
+ }
74
+ if (this.contextStack.length === 0) {
75
+ if (this.debugMode) {
76
+ console.error('[KeyboardManager] No contexts registered, key not handled');
77
+ }
78
+ return;
79
+ }
80
+ // Iterate from top of stack (most recent context) to bottom
81
+ for (let i = this.contextStack.length - 1; i >= 0; i--) {
82
+ const context = this.contextStack[i];
83
+ const handled = this.tryContext(context, ch, key);
84
+ if (handled) {
85
+ // Event consumed by this context
86
+ if (this.debugMode) {
87
+ console.error(`[KeyboardManager] ✓ Handled by context: ${context.name}`);
88
+ }
89
+ return;
90
+ }
91
+ if (context.blocking) {
92
+ // Context is blocking, don't pass to lower contexts
93
+ if (this.debugMode) {
94
+ console.error(`[KeyboardManager] ✗ Not handled, but blocked by: ${context.name}`);
95
+ }
96
+ return;
97
+ }
98
+ // Not handled and not blocking, continue to next context
99
+ if (this.debugMode) {
100
+ console.error(`[KeyboardManager] ↓ Not handled by ${context.name}, trying next context`);
101
+ }
102
+ }
103
+ if (this.debugMode) {
104
+ console.error('[KeyboardManager] Key not handled by any context');
105
+ }
106
+ }
107
+ /**
108
+ * Try to handle key in the given context.
109
+ * Returns true if handled, false otherwise.
110
+ */
111
+ tryContext(context, ch, key) {
112
+ // Try full key name first (e.g., "C-c", "escape", "M-x")
113
+ const fullKey = key.full || key.name;
114
+ let handler = context.handlers[fullKey];
115
+ if (!handler && key.name) {
116
+ // Try just the key name (e.g., "c" instead of "C-c")
117
+ handler = context.handlers[key.name];
118
+ }
119
+ if (!handler && ch) {
120
+ // Try the character itself (e.g., "a", "1")
121
+ handler = context.handlers[ch];
122
+ }
123
+ if (handler) {
124
+ const result = handler(ch, key);
125
+ // Handler can return false to indicate "not handled"
126
+ return result !== false;
127
+ }
128
+ return false;
129
+ }
130
+ /**
131
+ * Push a new keyboard context onto the stack.
132
+ * This context will receive keys before lower contexts.
133
+ *
134
+ * @param name - Human-readable name for debugging
135
+ * @param handlers - Map of key names to handler functions
136
+ * @param blocking - If true, prevent keys from reaching lower contexts (default: true)
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * // Push a blocking modal context
141
+ * keyboardManager.pushContext('error-modal', {
142
+ * 'enter': () => closeModal(),
143
+ * 'escape': () => closeModal(),
144
+ * }, true);
145
+ * ```
146
+ */
147
+ pushContext(name, handlers, blocking = true) {
148
+ if (this.debugMode) {
149
+ console.error(`[KeyboardManager] ⬆ Push context: ${name} (blocking: ${blocking})`);
150
+ }
151
+ this.contextStack.push({
152
+ name,
153
+ handlers,
154
+ blocking,
155
+ });
156
+ }
157
+ /**
158
+ * Pop the top keyboard context from the stack.
159
+ * Previous context (if any) will now receive keys.
160
+ *
161
+ * @example
162
+ * ```typescript
163
+ * // Close modal and restore previous context
164
+ * keyboardManager.popContext();
165
+ * ```
166
+ */
167
+ popContext() {
168
+ const context = this.contextStack.pop();
169
+ if (this.debugMode && context) {
170
+ console.error(`[KeyboardManager] ⬇ Pop context: ${context.name}`);
171
+ }
172
+ }
173
+ /**
174
+ * Update handlers for the current (top) context.
175
+ * Useful for view mode changes without push/pop.
176
+ *
177
+ * @param handlers - New handler map for the current context
178
+ *
179
+ * @example
180
+ * ```typescript
181
+ * // Switch from list mode to detail mode handlers
182
+ * keyboardManager.updateCurrentContext({
183
+ * 'escape': () => backToList(),
184
+ * 'h': () => showHistory(),
185
+ * 'l': () => showLogs(),
186
+ * });
187
+ * ```
188
+ */
189
+ updateCurrentContext(handlers) {
190
+ if (this.contextStack.length === 0) {
191
+ throw new Error('No context to update');
192
+ }
193
+ const current = this.contextStack[this.contextStack.length - 1];
194
+ current.handlers = handlers;
195
+ if (this.debugMode) {
196
+ console.error(`[KeyboardManager] ↻ Updated context: ${current.name}`);
197
+ }
198
+ }
199
+ /**
200
+ * Get the current context name (for debugging).
201
+ *
202
+ * @returns Current context name, or null if no contexts
203
+ */
204
+ getCurrentContextName() {
205
+ return this.contextStack.length > 0
206
+ ? this.contextStack[this.contextStack.length - 1].name
207
+ : null;
208
+ }
209
+ /**
210
+ * Get the full context stack (for debugging).
211
+ *
212
+ * @returns Array of context names from bottom to top
213
+ */
214
+ getContextStack() {
215
+ return this.contextStack.map(c => c.name);
216
+ }
217
+ /**
218
+ * Clear all contexts (useful for cleanup).
219
+ *
220
+ * @example
221
+ * ```typescript
222
+ * // Cleanup on exit
223
+ * keyboardManager.clearAll();
224
+ * screen.destroy();
225
+ * ```
226
+ */
227
+ clearAll() {
228
+ if (this.debugMode) {
229
+ console.error('[KeyboardManager] Clear all contexts');
230
+ }
231
+ this.contextStack = [];
232
+ }
233
+ /**
234
+ * Enable or disable debug mode.
235
+ * When enabled, logs key handling to stderr.
236
+ *
237
+ * @param enabled - True to enable debug logging
238
+ */
239
+ setDebugMode(enabled) {
240
+ this.debugMode = enabled;
241
+ if (enabled) {
242
+ console.error('[KeyboardManager] Debug mode enabled');
243
+ }
244
+ }
245
+ }
246
+ exports.KeyboardManager = KeyboardManager;
247
+ //# sourceMappingURL=keyboard-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard-manager.js","sourceRoot":"","sources":["../../src/lib/keyboard-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { ServerConfig } from '../types/server-config';
2
+ import { RouterConfig } from '../types/router-config';
3
+ import { AdminConfig } from '../types/admin-config';
4
+ export interface MigrationBackup {
5
+ timestamp: string;
6
+ servers: ServerConfig[];
7
+ router: RouterConfig | null;
8
+ admin: AdminConfig | null;
9
+ runningServices: string[];
10
+ }
11
+ export interface MigrationResult {
12
+ success: boolean;
13
+ migratedCount: number;
14
+ failedServices: string[];
15
+ error?: string;
16
+ }
17
+ export declare class LabelMigration {
18
+ private configDir;
19
+ private launchAgentsDir;
20
+ private markerPath;
21
+ private backupPath;
22
+ constructor();
23
+ /**
24
+ * Check if migration is needed
25
+ */
26
+ needsMigration(): Promise<boolean>;
27
+ /**
28
+ * Detect services with old labels
29
+ */
30
+ detectOldLabels(): Promise<string[]>;
31
+ /**
32
+ * Create backup of current state
33
+ */
34
+ createBackup(): Promise<void>;
35
+ /**
36
+ * Migrate a single server
37
+ */
38
+ migrateServer(server: ServerConfig, wasRunning: boolean): Promise<void>;
39
+ /**
40
+ * Migrate router service
41
+ */
42
+ migrateRouter(wasRunning: boolean): Promise<void>;
43
+ /**
44
+ * Migrate admin service
45
+ */
46
+ migrateAdmin(wasRunning: boolean): Promise<void>;
47
+ /**
48
+ * Migrate all services
49
+ */
50
+ migrateAll(onProgress?: (message: string, current: number, total: number) => void): Promise<MigrationResult>;
51
+ /**
52
+ * Rollback migration
53
+ */
54
+ rollback(): Promise<void>;
55
+ /**
56
+ * Get backup info if exists
57
+ */
58
+ getBackupInfo(): Promise<MigrationBackup | null>;
59
+ /**
60
+ * Delete backup file
61
+ */
62
+ deleteBackup(): Promise<void>;
63
+ }
64
+ export declare const labelMigration: LabelMigration;
65
+ //# sourceMappingURL=label-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label-migration.d.ts","sourceRoot":"","sources":["../../src/lib/label-migration.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAepD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;;IAS3B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAWxC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA0B1C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BnC;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,IAAI,CAAC;IAwDhB;;OAEG;IACG,aAAa,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA4DvD;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA4DtD;;OAEG;IACG,UAAU,CACd,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACrE,OAAO,CAAC,eAAe,CAAC;IAgG3B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAoG/B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAOtD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAKpC;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}