@minecraft-docker/mcctl 1.6.0 → 1.6.2

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 (193) hide show
  1. package/dist/application/index.d.ts +2 -0
  2. package/dist/application/index.d.ts.map +1 -0
  3. package/dist/application/index.js +5 -0
  4. package/dist/application/index.js.map +1 -0
  5. package/dist/commands/backup.d.ts +16 -0
  6. package/dist/commands/backup.d.ts.map +1 -0
  7. package/dist/commands/backup.js +182 -0
  8. package/dist/commands/backup.js.map +1 -0
  9. package/dist/commands/ban.d.ts +14 -0
  10. package/dist/commands/ban.d.ts.map +1 -0
  11. package/dist/commands/ban.js +418 -0
  12. package/dist/commands/ban.js.map +1 -0
  13. package/dist/commands/config.d.ts +18 -0
  14. package/dist/commands/config.d.ts.map +1 -0
  15. package/dist/commands/config.js +106 -0
  16. package/dist/commands/config.js.map +1 -0
  17. package/dist/commands/console/api.d.ts +19 -0
  18. package/dist/commands/console/api.d.ts.map +1 -0
  19. package/dist/commands/console/api.js +399 -0
  20. package/dist/commands/console/api.js.map +1 -0
  21. package/dist/commands/console/index.d.ts +10 -0
  22. package/dist/commands/console/index.d.ts.map +1 -0
  23. package/dist/commands/console/index.js +12 -0
  24. package/dist/commands/console/index.js.map +1 -0
  25. package/dist/commands/console/init.d.ts +47 -0
  26. package/dist/commands/console/init.d.ts.map +1 -0
  27. package/dist/commands/console/init.js +491 -0
  28. package/dist/commands/console/init.js.map +1 -0
  29. package/dist/commands/console/remove.d.ts +25 -0
  30. package/dist/commands/console/remove.d.ts.map +1 -0
  31. package/dist/commands/console/remove.js +189 -0
  32. package/dist/commands/console/remove.js.map +1 -0
  33. package/dist/commands/console/service.d.ts +40 -0
  34. package/dist/commands/console/service.d.ts.map +1 -0
  35. package/dist/commands/console/service.js +321 -0
  36. package/dist/commands/console/service.js.map +1 -0
  37. package/dist/commands/console/user.d.ts +17 -0
  38. package/dist/commands/console/user.d.ts.map +1 -0
  39. package/dist/commands/console/user.js +431 -0
  40. package/dist/commands/console/user.js.map +1 -0
  41. package/dist/commands/create.d.ts +22 -0
  42. package/dist/commands/create.d.ts.map +1 -0
  43. package/dist/commands/create.js +86 -0
  44. package/dist/commands/create.js.map +1 -0
  45. package/dist/commands/delete.d.ts +17 -0
  46. package/dist/commands/delete.d.ts.map +1 -0
  47. package/dist/commands/delete.js +74 -0
  48. package/dist/commands/delete.js.map +1 -0
  49. package/dist/commands/exec.d.ts +10 -0
  50. package/dist/commands/exec.d.ts.map +1 -0
  51. package/dist/commands/exec.js +29 -0
  52. package/dist/commands/exec.js.map +1 -0
  53. package/dist/commands/index.d.ts +21 -0
  54. package/dist/commands/index.d.ts.map +1 -0
  55. package/dist/commands/index.js +23 -0
  56. package/dist/commands/index.js.map +1 -0
  57. package/dist/commands/init.d.ts +9 -0
  58. package/dist/commands/init.d.ts.map +1 -0
  59. package/dist/commands/init.js +218 -0
  60. package/dist/commands/init.js.map +1 -0
  61. package/dist/commands/kick.d.ts +12 -0
  62. package/dist/commands/kick.d.ts.map +1 -0
  63. package/dist/commands/kick.js +71 -0
  64. package/dist/commands/kick.js.map +1 -0
  65. package/dist/commands/migrate.d.ts +18 -0
  66. package/dist/commands/migrate.d.ts.map +1 -0
  67. package/dist/commands/migrate.js +470 -0
  68. package/dist/commands/migrate.js.map +1 -0
  69. package/dist/commands/mod.d.ts +19 -0
  70. package/dist/commands/mod.d.ts.map +1 -0
  71. package/dist/commands/mod.js +441 -0
  72. package/dist/commands/mod.js.map +1 -0
  73. package/dist/commands/msg.d.ts +12 -0
  74. package/dist/commands/msg.d.ts.map +1 -0
  75. package/dist/commands/msg.js +273 -0
  76. package/dist/commands/msg.js.map +1 -0
  77. package/dist/commands/op.d.ts +12 -0
  78. package/dist/commands/op.d.ts.map +1 -0
  79. package/dist/commands/op.js +220 -0
  80. package/dist/commands/op.js.map +1 -0
  81. package/dist/commands/player-online.d.ts +11 -0
  82. package/dist/commands/player-online.d.ts.map +1 -0
  83. package/dist/commands/player-online.js +153 -0
  84. package/dist/commands/player-online.js.map +1 -0
  85. package/dist/commands/player.d.ts +18 -0
  86. package/dist/commands/player.d.ts.map +1 -0
  87. package/dist/commands/player.js +352 -0
  88. package/dist/commands/player.js.map +1 -0
  89. package/dist/commands/server-backup.d.ts +36 -0
  90. package/dist/commands/server-backup.d.ts.map +1 -0
  91. package/dist/commands/server-backup.js +320 -0
  92. package/dist/commands/server-backup.js.map +1 -0
  93. package/dist/commands/server-restore.d.ts +13 -0
  94. package/dist/commands/server-restore.d.ts.map +1 -0
  95. package/dist/commands/server-restore.js +294 -0
  96. package/dist/commands/server-restore.js.map +1 -0
  97. package/dist/commands/status.d.ts +13 -0
  98. package/dist/commands/status.d.ts.map +1 -0
  99. package/dist/commands/status.js +325 -0
  100. package/dist/commands/status.js.map +1 -0
  101. package/dist/commands/whitelist.d.ts +12 -0
  102. package/dist/commands/whitelist.d.ts.map +1 -0
  103. package/dist/commands/whitelist.js +316 -0
  104. package/dist/commands/whitelist.js.map +1 -0
  105. package/dist/commands/world.d.ts +18 -0
  106. package/dist/commands/world.d.ts.map +1 -0
  107. package/dist/commands/world.js +238 -0
  108. package/dist/commands/world.js.map +1 -0
  109. package/dist/domain/index.d.ts +2 -0
  110. package/dist/domain/index.d.ts.map +1 -0
  111. package/dist/domain/index.js +7 -0
  112. package/dist/domain/index.js.map +1 -0
  113. package/dist/index.d.ts +3 -0
  114. package/dist/index.d.ts.map +1 -0
  115. package/dist/index.js +766 -0
  116. package/dist/index.js.map +1 -0
  117. package/dist/infrastructure/adapters/ClackPromptAdapter.d.ts +30 -0
  118. package/dist/infrastructure/adapters/ClackPromptAdapter.d.ts.map +1 -0
  119. package/dist/infrastructure/adapters/ClackPromptAdapter.js +430 -0
  120. package/dist/infrastructure/adapters/ClackPromptAdapter.js.map +1 -0
  121. package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.d.ts +78 -0
  122. package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.d.ts.map +1 -0
  123. package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.js +391 -0
  124. package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.js.map +1 -0
  125. package/dist/infrastructure/adapters/index.d.ts +4 -0
  126. package/dist/infrastructure/adapters/index.d.ts.map +1 -0
  127. package/dist/infrastructure/adapters/index.js +6 -0
  128. package/dist/infrastructure/adapters/index.js.map +1 -0
  129. package/dist/infrastructure/di/container.d.ts +47 -0
  130. package/dist/infrastructure/di/container.d.ts.map +1 -0
  131. package/dist/infrastructure/di/container.js +140 -0
  132. package/dist/infrastructure/di/container.js.map +1 -0
  133. package/dist/infrastructure/di/index.d.ts +2 -0
  134. package/dist/infrastructure/di/index.d.ts.map +1 -0
  135. package/dist/infrastructure/di/index.js +2 -0
  136. package/dist/infrastructure/di/index.js.map +1 -0
  137. package/dist/infrastructure/index.d.ts +5 -0
  138. package/dist/infrastructure/index.d.ts.map +1 -0
  139. package/dist/infrastructure/index.js +8 -0
  140. package/dist/infrastructure/index.js.map +1 -0
  141. package/dist/lib/admin-config.d.ts +66 -0
  142. package/dist/lib/admin-config.d.ts.map +1 -0
  143. package/dist/lib/admin-config.js +130 -0
  144. package/dist/lib/admin-config.js.map +1 -0
  145. package/dist/lib/mojang-api.d.ts +51 -0
  146. package/dist/lib/mojang-api.d.ts.map +1 -0
  147. package/dist/lib/mojang-api.js +136 -0
  148. package/dist/lib/mojang-api.js.map +1 -0
  149. package/dist/lib/player-cache.d.ts +79 -0
  150. package/dist/lib/player-cache.d.ts.map +1 -0
  151. package/dist/lib/player-cache.js +302 -0
  152. package/dist/lib/player-cache.js.map +1 -0
  153. package/dist/lib/player-json.d.ts +69 -0
  154. package/dist/lib/player-json.d.ts.map +1 -0
  155. package/dist/lib/player-json.js +96 -0
  156. package/dist/lib/player-json.js.map +1 -0
  157. package/dist/lib/pm2-utils.d.ts +71 -0
  158. package/dist/lib/pm2-utils.d.ts.map +1 -0
  159. package/dist/lib/pm2-utils.js +155 -0
  160. package/dist/lib/pm2-utils.js.map +1 -0
  161. package/dist/lib/prompts/action-select.d.ts +23 -0
  162. package/dist/lib/prompts/action-select.d.ts.map +1 -0
  163. package/dist/lib/prompts/action-select.js +124 -0
  164. package/dist/lib/prompts/action-select.js.map +1 -0
  165. package/dist/lib/prompts/index.d.ts +7 -0
  166. package/dist/lib/prompts/index.d.ts.map +1 -0
  167. package/dist/lib/prompts/index.js +7 -0
  168. package/dist/lib/prompts/index.js.map +1 -0
  169. package/dist/lib/prompts/ip-select.d.ts +25 -0
  170. package/dist/lib/prompts/ip-select.d.ts.map +1 -0
  171. package/dist/lib/prompts/ip-select.js +255 -0
  172. package/dist/lib/prompts/ip-select.js.map +1 -0
  173. package/dist/lib/prompts/player-select.d.ts +25 -0
  174. package/dist/lib/prompts/player-select.d.ts.map +1 -0
  175. package/dist/lib/prompts/player-select.js +122 -0
  176. package/dist/lib/prompts/player-select.js.map +1 -0
  177. package/dist/lib/prompts/server-select.d.ts +26 -0
  178. package/dist/lib/prompts/server-select.d.ts.map +1 -0
  179. package/dist/lib/prompts/server-select.js +99 -0
  180. package/dist/lib/prompts/server-select.js.map +1 -0
  181. package/dist/lib/rcon.d.ts +53 -0
  182. package/dist/lib/rcon.d.ts.map +1 -0
  183. package/dist/lib/rcon.js +131 -0
  184. package/dist/lib/rcon.js.map +1 -0
  185. package/dist/lib/shell.d.ts +111 -0
  186. package/dist/lib/shell.d.ts.map +1 -0
  187. package/dist/lib/shell.js +321 -0
  188. package/dist/lib/shell.js.map +1 -0
  189. package/dist/lib/sudo-utils.d.ts +14 -0
  190. package/dist/lib/sudo-utils.d.ts.map +1 -0
  191. package/dist/lib/sudo-utils.js +53 -0
  192. package/dist/lib/sudo-utils.js.map +1 -0
  193. package/package.json +8 -2
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Console Remove Command
3
+ *
4
+ * Completely removes Console Service:
5
+ * - Stop and remove PM2 processes
6
+ * - Delete configuration files (optional)
7
+ * - Delete ecosystem.config.cjs
8
+ */
9
+ import { join } from 'node:path';
10
+ import { existsSync, unlinkSync } from 'node:fs';
11
+ import { Paths, log, colors } from '@minecraft-docker/shared';
12
+ import { getContainer } from '../../infrastructure/index.js';
13
+ import { AdminConfigManager } from '../../lib/admin-config.js';
14
+ import { Pm2ServiceManagerAdapter } from '../../infrastructure/adapters/Pm2ServiceManagerAdapter.js';
15
+ import { checkPm2Installation, ECOSYSTEM_CONFIG_FILE, PM2_SERVICE_NAMES, } from '../../lib/pm2-utils.js';
16
+ /**
17
+ * Check if console service is initialized
18
+ */
19
+ function isConsoleInitialized(paths) {
20
+ const configManager = new AdminConfigManager(paths.root);
21
+ return configManager.isInitialized();
22
+ }
23
+ /**
24
+ * Stop and remove PM2 processes
25
+ */
26
+ async function stopAndRemoveProcesses(paths) {
27
+ const pm2Check = checkPm2Installation();
28
+ if (!pm2Check.installed) {
29
+ return { success: true, message: 'PM2 not installed', stopped: [] };
30
+ }
31
+ const pm2Adapter = new Pm2ServiceManagerAdapter(paths);
32
+ const stopped = [];
33
+ try {
34
+ for (const serviceName of [PM2_SERVICE_NAMES.API, PM2_SERVICE_NAMES.CONSOLE]) {
35
+ const exists = await pm2Adapter.exists(serviceName);
36
+ if (exists) {
37
+ await pm2Adapter.delete(serviceName);
38
+ stopped.push(serviceName);
39
+ }
40
+ }
41
+ // Save process list after removal
42
+ if (stopped.length > 0) {
43
+ await pm2Adapter.save();
44
+ }
45
+ return {
46
+ success: true,
47
+ message: stopped.length > 0
48
+ ? `Stopped and removed: ${stopped.join(', ')}`
49
+ : 'No PM2 processes running',
50
+ stopped,
51
+ };
52
+ }
53
+ catch (error) {
54
+ return {
55
+ success: false,
56
+ message: `Failed to stop processes: ${error instanceof Error ? error.message : String(error)}`,
57
+ stopped,
58
+ };
59
+ }
60
+ finally {
61
+ pm2Adapter.disconnect();
62
+ }
63
+ }
64
+ /**
65
+ * Delete configuration files
66
+ */
67
+ function deleteConfigFiles(paths) {
68
+ const configManager = new AdminConfigManager(paths.root);
69
+ const filesToDelete = [
70
+ configManager.path, // .mcctl-admin.yml
71
+ join(paths.root, 'users.yaml'),
72
+ join(paths.platform, ECOSYSTEM_CONFIG_FILE), // ecosystem.config.cjs
73
+ ];
74
+ const deleted = [];
75
+ const errors = [];
76
+ for (const file of filesToDelete) {
77
+ if (existsSync(file)) {
78
+ try {
79
+ unlinkSync(file);
80
+ deleted.push(file);
81
+ }
82
+ catch (err) {
83
+ errors.push(`Failed to delete ${file}: ${err instanceof Error ? err.message : String(err)}`);
84
+ }
85
+ }
86
+ }
87
+ return { deleted, errors };
88
+ }
89
+ /**
90
+ * Execute console remove command
91
+ *
92
+ * Removes all Console Service components:
93
+ * 1. Stop and remove PM2 processes
94
+ * 2. Delete configuration files (unless --keep-config)
95
+ */
96
+ export async function consoleRemoveCommand(options) {
97
+ const paths = new Paths(options.root);
98
+ // Check if platform is initialized
99
+ if (!paths.isInitialized()) {
100
+ log.error('Platform not initialized. Nothing to remove.');
101
+ return 1;
102
+ }
103
+ // Check if console service is initialized
104
+ if (!isConsoleInitialized(paths)) {
105
+ log.warn('Console Service is not initialized. Nothing to remove.');
106
+ return 0;
107
+ }
108
+ const container = getContainer({ rootDir: options.root });
109
+ const prompt = container.promptPort;
110
+ // Confirm removal unless --force
111
+ if (!options.force) {
112
+ try {
113
+ console.log('');
114
+ console.log(colors.yellow(' This will remove:'));
115
+ console.log(' - PM2 processes (mcctl-api, mcctl-console)');
116
+ if (!options.keepConfig) {
117
+ console.log(' - Configuration files (.mcctl-admin.yml, users.yaml)');
118
+ console.log(' - PM2 ecosystem config (ecosystem.config.cjs)');
119
+ }
120
+ console.log('');
121
+ const shouldRemove = await prompt.confirm({
122
+ message: 'Are you sure you want to remove Console Service?',
123
+ initialValue: false,
124
+ });
125
+ if (prompt.isCancel(shouldRemove) || !shouldRemove) {
126
+ log.info('Cancelled');
127
+ return 0;
128
+ }
129
+ }
130
+ catch (error) {
131
+ if (prompt.isCancel(error)) {
132
+ return 0;
133
+ }
134
+ throw error;
135
+ }
136
+ }
137
+ const spinner = prompt.spinner();
138
+ try {
139
+ // Step 1: Stop and remove PM2 processes
140
+ spinner.start('Stopping and removing PM2 processes...');
141
+ const processResult = await stopAndRemoveProcesses(paths);
142
+ spinner.stop(processResult.message);
143
+ if (!processResult.success) {
144
+ log.warn(processResult.message);
145
+ }
146
+ // Step 2: Delete configuration files (unless --keep-config)
147
+ if (!options.keepConfig) {
148
+ spinner.start('Removing configuration files...');
149
+ const configResult = deleteConfigFiles(paths);
150
+ if (configResult.deleted.length > 0) {
151
+ spinner.stop(`Removed ${configResult.deleted.length} configuration file(s)`);
152
+ }
153
+ else {
154
+ spinner.stop('No configuration files to remove');
155
+ }
156
+ if (configResult.errors.length > 0) {
157
+ for (const error of configResult.errors) {
158
+ log.warn(error);
159
+ }
160
+ }
161
+ }
162
+ else {
163
+ log.info('Keeping configuration files (--keep-config)');
164
+ }
165
+ // Summary
166
+ console.log('');
167
+ prompt.success('Console Service removed successfully');
168
+ console.log('');
169
+ if (options.keepConfig) {
170
+ console.log(colors.dim(' Note: Configuration files were kept as requested'));
171
+ console.log(colors.dim(' - .mcctl-admin.yml'));
172
+ console.log(colors.dim(' - users.yaml'));
173
+ console.log(colors.dim(' - ecosystem.config.cjs'));
174
+ console.log('');
175
+ }
176
+ console.log(colors.dim(' To reinstall, run: mcctl console init'));
177
+ console.log('');
178
+ return 0;
179
+ }
180
+ catch (error) {
181
+ if (prompt.isCancel(error)) {
182
+ return 0;
183
+ }
184
+ const message = error instanceof Error ? error.message : String(error);
185
+ log.error(message);
186
+ return 1;
187
+ }
188
+ }
189
+ //# sourceMappingURL=remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/console/remove.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Console Service Management Command
3
+ *
4
+ * Manages Console Service (mcctl-api + mcctl-console) lifecycle via PM2:
5
+ * - start: Start API + Console processes
6
+ * - stop: Stop services
7
+ * - restart: Restart services
8
+ * - status: Show status with health checks
9
+ * - logs: View logs with follow mode
10
+ */
11
+ /**
12
+ * Console service command options
13
+ */
14
+ export interface ConsoleServiceOptions {
15
+ root?: string;
16
+ subCommand?: 'start' | 'stop' | 'restart' | 'status' | 'logs';
17
+ apiOnly?: boolean;
18
+ consoleOnly?: boolean;
19
+ follow?: boolean;
20
+ json?: boolean;
21
+ apiPort?: number;
22
+ consolePort?: number;
23
+ build?: boolean;
24
+ noBuild?: boolean;
25
+ }
26
+ export type AdminServiceOptions = ConsoleServiceOptions;
27
+ /**
28
+ * Delete admin images (legacy, now removes PM2 processes)
29
+ */
30
+ export declare function deleteAdminImages(): {
31
+ success: boolean;
32
+ deleted: string[];
33
+ errors: string[];
34
+ };
35
+ /**
36
+ * Console service command
37
+ */
38
+ export declare function consoleServiceCommand(options: ConsoleServiceOptions): Promise<number>;
39
+ export declare const adminServiceCommand: typeof consoleServiceCommand;
40
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/commands/console/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAaH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAGD,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AA2TxD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAQ7F;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgD3F;AAGD,eAAO,MAAM,mBAAmB,8BAAwB,CAAC"}
@@ -0,0 +1,321 @@
1
+ /**
2
+ * Console Service Management Command
3
+ *
4
+ * Manages Console Service (mcctl-api + mcctl-console) lifecycle via PM2:
5
+ * - start: Start API + Console processes
6
+ * - stop: Stop services
7
+ * - restart: Restart services
8
+ * - status: Show status with health checks
9
+ * - logs: View logs with follow mode
10
+ */
11
+ import { Paths, colors, log, ServiceStatusEnum } from '@minecraft-docker/shared';
12
+ import { spawn } from 'node:child_process';
13
+ import { Pm2ServiceManagerAdapter } from '../../infrastructure/adapters/Pm2ServiceManagerAdapter.js';
14
+ import { checkPm2Installation, ecosystemConfigExists, PM2_SERVICE_NAMES, } from '../../lib/pm2-utils.js';
15
+ const API_PORT_DEFAULT = 3001;
16
+ const CONSOLE_PORT_DEFAULT = 3000;
17
+ /**
18
+ * Check PM2 is installed
19
+ */
20
+ function ensurePm2Installed() {
21
+ const pm2Check = checkPm2Installation();
22
+ if (!pm2Check.installed) {
23
+ log.error('PM2 is not installed.');
24
+ log.info('Install PM2 globally with: npm install -g pm2');
25
+ return false;
26
+ }
27
+ return true;
28
+ }
29
+ /**
30
+ * Get service names based on options
31
+ */
32
+ function getServiceNames(options) {
33
+ if (options.apiOnly) {
34
+ return [PM2_SERVICE_NAMES.API];
35
+ }
36
+ if (options.consoleOnly) {
37
+ return [PM2_SERVICE_NAMES.CONSOLE];
38
+ }
39
+ return [PM2_SERVICE_NAMES.API, PM2_SERVICE_NAMES.CONSOLE];
40
+ }
41
+ /**
42
+ * Convert ProcessInfo to ServiceInfo
43
+ */
44
+ function toServiceInfo(process, port) {
45
+ const info = {
46
+ name: process.name,
47
+ status: process.statusValue,
48
+ pid: process.pid,
49
+ cpu: process.cpu,
50
+ memory: process.memoryFormatted,
51
+ uptime: process.uptimeFormatted,
52
+ restarts: process.restarts,
53
+ };
54
+ if (process.name === PM2_SERVICE_NAMES.CONSOLE && process.isOnline && port) {
55
+ info.url = `http://localhost:${port}`;
56
+ }
57
+ return info;
58
+ }
59
+ /**
60
+ * Get console service status via PM2
61
+ */
62
+ async function getConsoleServiceStatus(pm2Adapter, apiPort, consolePort) {
63
+ try {
64
+ const processes = await pm2Adapter.status();
65
+ const apiProcess = processes.find((p) => p.name === PM2_SERVICE_NAMES.API);
66
+ const consoleProcess = processes.find((p) => p.name === PM2_SERVICE_NAMES.CONSOLE);
67
+ const api = apiProcess ? toServiceInfo(apiProcess, apiPort ?? API_PORT_DEFAULT) : null;
68
+ const consoleInfo = consoleProcess
69
+ ? toServiceInfo(consoleProcess, consolePort ?? CONSOLE_PORT_DEFAULT)
70
+ : null;
71
+ const healthy = api?.status === ServiceStatusEnum.ONLINE &&
72
+ consoleInfo?.status === ServiceStatusEnum.ONLINE;
73
+ return { api, console: consoleInfo, healthy };
74
+ }
75
+ catch {
76
+ return { api: null, console: null, healthy: false };
77
+ }
78
+ }
79
+ /**
80
+ * Format status output
81
+ */
82
+ function formatStatus(status, json) {
83
+ if (json) {
84
+ console.log(JSON.stringify(status, null, 2));
85
+ return;
86
+ }
87
+ console.log('');
88
+ console.log(colors.bold(' Console Service Status (PM2)'));
89
+ console.log('');
90
+ // API Status
91
+ if (status.api) {
92
+ const statusColor = status.api.status === ServiceStatusEnum.ONLINE ? colors.green : colors.red;
93
+ console.log(` ${colors.cyan('mcctl-api')}`);
94
+ console.log(` Status: ${statusColor(status.api.status)}`);
95
+ if (status.api.pid)
96
+ console.log(` PID: ${status.api.pid}`);
97
+ if (status.api.cpu !== undefined)
98
+ console.log(` CPU: ${status.api.cpu}%`);
99
+ if (status.api.memory)
100
+ console.log(` Memory: ${status.api.memory}`);
101
+ if (status.api.uptime)
102
+ console.log(` Uptime: ${status.api.uptime}`);
103
+ if (status.api.restarts !== undefined)
104
+ console.log(` Restarts: ${status.api.restarts}`);
105
+ }
106
+ else {
107
+ console.log(` ${colors.cyan('mcctl-api')}`);
108
+ console.log(` Status: ${colors.yellow('not running')}`);
109
+ }
110
+ console.log('');
111
+ // Console Status
112
+ if (status.console) {
113
+ const statusColor = status.console.status === ServiceStatusEnum.ONLINE ? colors.green : colors.red;
114
+ console.log(` ${colors.cyan('mcctl-console')}`);
115
+ console.log(` Status: ${statusColor(status.console.status)}`);
116
+ if (status.console.pid)
117
+ console.log(` PID: ${status.console.pid}`);
118
+ if (status.console.url && status.console.status === ServiceStatusEnum.ONLINE) {
119
+ console.log(` URL: ${colors.cyan(status.console.url)}`);
120
+ }
121
+ if (status.console.cpu !== undefined)
122
+ console.log(` CPU: ${status.console.cpu}%`);
123
+ if (status.console.memory)
124
+ console.log(` Memory: ${status.console.memory}`);
125
+ if (status.console.uptime)
126
+ console.log(` Uptime: ${status.console.uptime}`);
127
+ if (status.console.restarts !== undefined)
128
+ console.log(` Restarts: ${status.console.restarts}`);
129
+ }
130
+ else {
131
+ console.log(` ${colors.cyan('mcctl-console')}`);
132
+ console.log(` Status: ${colors.yellow('not running')}`);
133
+ }
134
+ console.log('');
135
+ // Summary
136
+ if (status.healthy) {
137
+ console.log(` ${colors.green('All services healthy')}`);
138
+ }
139
+ else if (!status.api && !status.console) {
140
+ console.log(` ${colors.yellow('Services not running')}`);
141
+ }
142
+ else {
143
+ console.log(` ${colors.yellow('Some services need attention')}`);
144
+ }
145
+ console.log('');
146
+ }
147
+ /**
148
+ * Start console services
149
+ */
150
+ async function startServices(paths, pm2Adapter, options) {
151
+ if (!ecosystemConfigExists(paths)) {
152
+ log.error('Ecosystem config not found.');
153
+ log.info("Please run 'mcctl console init' to initialize console services");
154
+ return 1;
155
+ }
156
+ const services = getServiceNames(options);
157
+ const apiPort = options.apiPort ?? API_PORT_DEFAULT;
158
+ const consolePort = options.consolePort ?? CONSOLE_PORT_DEFAULT;
159
+ log.info('Starting console services via PM2...');
160
+ if (options.apiPort || options.consolePort) {
161
+ log.info(` API port: ${apiPort}, Console port: ${consolePort}`);
162
+ }
163
+ try {
164
+ for (const service of services) {
165
+ await pm2Adapter.start(service, { wait: true, waitTimeout: 30000 });
166
+ log.info(` Started ${service}`);
167
+ }
168
+ // Save process list for resurrect on reboot
169
+ await pm2Adapter.save();
170
+ log.info('Console services started successfully');
171
+ // Show status after starting
172
+ await new Promise((resolve) => setTimeout(resolve, 1000));
173
+ const status = await getConsoleServiceStatus(pm2Adapter, apiPort, consolePort);
174
+ formatStatus(status, false);
175
+ return 0;
176
+ }
177
+ catch (error) {
178
+ log.error(`Failed to start services: ${error instanceof Error ? error.message : error}`);
179
+ return 1;
180
+ }
181
+ }
182
+ /**
183
+ * Stop console services
184
+ */
185
+ async function stopServices(paths, pm2Adapter, options) {
186
+ const services = getServiceNames(options);
187
+ log.info('Stopping console services...');
188
+ try {
189
+ for (const service of services) {
190
+ await pm2Adapter.stop(service);
191
+ log.info(` Stopped ${service}`);
192
+ }
193
+ log.info('Console services stopped');
194
+ return 0;
195
+ }
196
+ catch (error) {
197
+ log.error(`Failed to stop services: ${error instanceof Error ? error.message : error}`);
198
+ return 1;
199
+ }
200
+ }
201
+ /**
202
+ * Restart console services
203
+ */
204
+ async function restartServices(paths, pm2Adapter, options) {
205
+ const services = getServiceNames(options);
206
+ const apiPort = options.apiPort ?? API_PORT_DEFAULT;
207
+ const consolePort = options.consolePort ?? CONSOLE_PORT_DEFAULT;
208
+ log.info('Restarting console services...');
209
+ if (options.apiPort || options.consolePort) {
210
+ log.info(` API port: ${apiPort}, Console port: ${consolePort}`);
211
+ }
212
+ try {
213
+ for (const service of services) {
214
+ await pm2Adapter.restart(service, { wait: true, waitTimeout: 30000 });
215
+ log.info(` Restarted ${service}`);
216
+ }
217
+ log.info('Console services restarted');
218
+ // Show status after restarting
219
+ await new Promise((resolve) => setTimeout(resolve, 1000));
220
+ const status = await getConsoleServiceStatus(pm2Adapter, apiPort, consolePort);
221
+ formatStatus(status, false);
222
+ return 0;
223
+ }
224
+ catch (error) {
225
+ log.error(`Failed to restart services: ${error instanceof Error ? error.message : error}`);
226
+ return 1;
227
+ }
228
+ }
229
+ /**
230
+ * Show console service logs via PM2
231
+ */
232
+ async function showLogs(paths, pm2Adapter, options) {
233
+ const services = getServiceNames(options);
234
+ if (options.follow) {
235
+ // Use pm2 logs command for follow mode
236
+ return new Promise((resolve) => {
237
+ const args = ['logs', ...services];
238
+ const proc = spawn('pm2', args, {
239
+ stdio: 'inherit',
240
+ });
241
+ proc.on('close', (code) => {
242
+ resolve(code ?? 0);
243
+ });
244
+ // Handle Ctrl+C gracefully
245
+ process.on('SIGINT', () => {
246
+ proc.kill('SIGINT');
247
+ });
248
+ });
249
+ }
250
+ // Non-follow mode: read from adapter
251
+ try {
252
+ for (const service of services) {
253
+ console.log(colors.bold(`\n=== ${service} logs ===\n`));
254
+ const logContent = await pm2Adapter.logs(service, { lines: 100 });
255
+ console.log(logContent || 'No logs available');
256
+ }
257
+ return 0;
258
+ }
259
+ catch (error) {
260
+ log.error(`Failed to get logs: ${error instanceof Error ? error.message : error}`);
261
+ return 1;
262
+ }
263
+ }
264
+ /**
265
+ * Delete admin images (legacy, now removes PM2 processes)
266
+ */
267
+ export function deleteAdminImages() {
268
+ // This function is kept for backward compatibility
269
+ // In PM2 mode, we delete processes instead of images
270
+ return {
271
+ success: true,
272
+ deleted: [],
273
+ errors: [],
274
+ };
275
+ }
276
+ /**
277
+ * Console service command
278
+ */
279
+ export async function consoleServiceCommand(options) {
280
+ // Check PM2 is installed
281
+ if (!ensurePm2Installed()) {
282
+ return 1;
283
+ }
284
+ const paths = new Paths(options.root);
285
+ // Check if platform is initialized
286
+ if (!paths.isInitialized()) {
287
+ log.error('Platform not initialized. Run: mcctl init');
288
+ return 1;
289
+ }
290
+ const pm2Adapter = new Pm2ServiceManagerAdapter(paths);
291
+ try {
292
+ const apiPort = options.apiPort ?? API_PORT_DEFAULT;
293
+ const consolePort = options.consolePort ?? CONSOLE_PORT_DEFAULT;
294
+ switch (options.subCommand) {
295
+ case 'start':
296
+ return await startServices(paths, pm2Adapter, options);
297
+ case 'stop':
298
+ return await stopServices(paths, pm2Adapter, options);
299
+ case 'restart':
300
+ return await restartServices(paths, pm2Adapter, options);
301
+ case 'status': {
302
+ const status = await getConsoleServiceStatus(pm2Adapter, apiPort, consolePort);
303
+ formatStatus(status, options.json ?? false);
304
+ return status.healthy || (!status.api && !status.console) ? 0 : 1;
305
+ }
306
+ case 'logs':
307
+ return await showLogs(paths, pm2Adapter, options);
308
+ default:
309
+ // Default: show status
310
+ const status = await getConsoleServiceStatus(pm2Adapter, apiPort, consolePort);
311
+ formatStatus(status, options.json ?? false);
312
+ return 0;
313
+ }
314
+ }
315
+ finally {
316
+ pm2Adapter.disconnect();
317
+ }
318
+ }
319
+ // Backward compatibility alias
320
+ export const adminServiceCommand = consoleServiceCommand;
321
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/commands/console/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Console user command options
4
+ */
5
+ export interface ConsoleUserCommandOptions {
6
+ json?: boolean;
7
+ force?: boolean;
8
+ role?: string;
9
+ password?: string;
10
+ }
11
+ export type AdminUserCommandOptions = ConsoleUserCommandOptions;
12
+ /**
13
+ * Create console user command
14
+ */
15
+ export declare function consoleUserCommand(): Command;
16
+ export declare const adminUserCommand: typeof consoleUserCommand;
17
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/commands/console/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAoZhE;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CA6F5C;AAGD,eAAO,MAAM,gBAAgB,2BAAqB,CAAC"}