@masuidrive/procman 0.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.
- package/LICENSE +21 -0
- package/README.md +149 -0
- package/dist/src/cli/commands/clear-log.d.ts +10 -0
- package/dist/src/cli/commands/clear-log.d.ts.map +1 -0
- package/dist/src/cli/commands/clear-log.js +77 -0
- package/dist/src/cli/commands/clear-log.js.map +1 -0
- package/dist/src/cli/commands/exit.d.ts +10 -0
- package/dist/src/cli/commands/exit.d.ts.map +1 -0
- package/dist/src/cli/commands/exit.js +65 -0
- package/dist/src/cli/commands/exit.js.map +1 -0
- package/dist/src/cli/commands/help.d.ts +10 -0
- package/dist/src/cli/commands/help.d.ts.map +1 -0
- package/dist/src/cli/commands/help.js +340 -0
- package/dist/src/cli/commands/help.js.map +1 -0
- package/dist/src/cli/commands/list.d.ts +11 -0
- package/dist/src/cli/commands/list.d.ts.map +1 -0
- package/dist/src/cli/commands/list.js +130 -0
- package/dist/src/cli/commands/list.js.map +1 -0
- package/dist/src/cli/commands/load.d.ts +11 -0
- package/dist/src/cli/commands/load.d.ts.map +1 -0
- package/dist/src/cli/commands/load.js +250 -0
- package/dist/src/cli/commands/load.js.map +1 -0
- package/dist/src/cli/commands/log.d.ts +18 -0
- package/dist/src/cli/commands/log.d.ts.map +1 -0
- package/dist/src/cli/commands/log.js +282 -0
- package/dist/src/cli/commands/log.js.map +1 -0
- package/dist/src/cli/commands/restart.d.ts +11 -0
- package/dist/src/cli/commands/restart.d.ts.map +1 -0
- package/dist/src/cli/commands/restart.js +99 -0
- package/dist/src/cli/commands/restart.js.map +1 -0
- package/dist/src/cli/commands/start.d.ts +11 -0
- package/dist/src/cli/commands/start.d.ts.map +1 -0
- package/dist/src/cli/commands/start.js +105 -0
- package/dist/src/cli/commands/start.js.map +1 -0
- package/dist/src/cli/commands/stop.d.ts +12 -0
- package/dist/src/cli/commands/stop.d.ts.map +1 -0
- package/dist/src/cli/commands/stop.js +105 -0
- package/dist/src/cli/commands/stop.js.map +1 -0
- package/dist/src/cli/index.d.ts +3 -0
- package/dist/src/cli/index.d.ts.map +1 -0
- package/dist/src/cli/index.js +28 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/cli/parser.d.ts +14 -0
- package/dist/src/cli/parser.d.ts.map +1 -0
- package/dist/src/cli/parser.js +131 -0
- package/dist/src/cli/parser.js.map +1 -0
- package/dist/src/cli/signal-handler.d.ts +51 -0
- package/dist/src/cli/signal-handler.d.ts.map +1 -0
- package/dist/src/cli/signal-handler.js +129 -0
- package/dist/src/cli/signal-handler.js.map +1 -0
- package/dist/src/cli/utils/error-handler.d.ts +39 -0
- package/dist/src/cli/utils/error-handler.d.ts.map +1 -0
- package/dist/src/cli/utils/error-handler.js +200 -0
- package/dist/src/cli/utils/error-handler.js.map +1 -0
- package/dist/src/cli/utils/error-utils.d.ts +16 -0
- package/dist/src/cli/utils/error-utils.d.ts.map +1 -0
- package/dist/src/cli/utils/error-utils.js +48 -0
- package/dist/src/cli/utils/error-utils.js.map +1 -0
- package/dist/src/cli/utils/ipc-client.d.ts +80 -0
- package/dist/src/cli/utils/ipc-client.d.ts.map +1 -0
- package/dist/src/cli/utils/ipc-client.js +275 -0
- package/dist/src/cli/utils/ipc-client.js.map +1 -0
- package/dist/src/config/config-loader.d.ts +74 -0
- package/dist/src/config/config-loader.d.ts.map +1 -0
- package/dist/src/config/config-loader.js +229 -0
- package/dist/src/config/config-loader.js.map +1 -0
- package/dist/src/config/config-normalizer.d.ts +135 -0
- package/dist/src/config/config-normalizer.d.ts.map +1 -0
- package/dist/src/config/config-normalizer.js +309 -0
- package/dist/src/config/config-normalizer.js.map +1 -0
- package/dist/src/config/config-reporter.d.ts +183 -0
- package/dist/src/config/config-reporter.d.ts.map +1 -0
- package/dist/src/config/config-reporter.js +311 -0
- package/dist/src/config/config-reporter.js.map +1 -0
- package/dist/src/config/config-validator.d.ts +163 -0
- package/dist/src/config/config-validator.d.ts.map +1 -0
- package/dist/src/config/config-validator.js +489 -0
- package/dist/src/config/config-validator.js.map +1 -0
- package/dist/src/config/config-watcher.d.ts +161 -0
- package/dist/src/config/config-watcher.d.ts.map +1 -0
- package/dist/src/config/config-watcher.js +245 -0
- package/dist/src/config/config-watcher.js.map +1 -0
- package/dist/src/config/index.d.ts +36 -0
- package/dist/src/config/index.d.ts.map +1 -0
- package/dist/src/config/index.js +41 -0
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/config/secure-config-loader.d.ts +77 -0
- package/dist/src/config/secure-config-loader.d.ts.map +1 -0
- package/dist/src/config/secure-config-loader.js +326 -0
- package/dist/src/config/secure-config-loader.js.map +1 -0
- package/dist/src/daemon/base-socket-connection.d.ts +66 -0
- package/dist/src/daemon/base-socket-connection.d.ts.map +1 -0
- package/dist/src/daemon/base-socket-connection.js +192 -0
- package/dist/src/daemon/base-socket-connection.js.map +1 -0
- package/dist/src/daemon/component-manager.d.ts +180 -0
- package/dist/src/daemon/component-manager.d.ts.map +1 -0
- package/dist/src/daemon/component-manager.js +794 -0
- package/dist/src/daemon/component-manager.js.map +1 -0
- package/dist/src/daemon/crash-recovery.d.ts +71 -0
- package/dist/src/daemon/crash-recovery.d.ts.map +1 -0
- package/dist/src/daemon/crash-recovery.js +282 -0
- package/dist/src/daemon/crash-recovery.js.map +1 -0
- package/dist/src/daemon/daemon-main.d.ts +18 -0
- package/dist/src/daemon/daemon-main.d.ts.map +1 -0
- package/dist/src/daemon/daemon-main.js +160 -0
- package/dist/src/daemon/daemon-main.js.map +1 -0
- package/dist/src/daemon/daemon-state-manager.d.ts +111 -0
- package/dist/src/daemon/daemon-state-manager.d.ts.map +1 -0
- package/dist/src/daemon/daemon-state-manager.js +194 -0
- package/dist/src/daemon/daemon-state-manager.js.map +1 -0
- package/dist/src/daemon/data-directory.d.ts +51 -0
- package/dist/src/daemon/data-directory.d.ts.map +1 -0
- package/dist/src/daemon/data-directory.js +136 -0
- package/dist/src/daemon/data-directory.js.map +1 -0
- package/dist/src/daemon/index.d.ts +20 -0
- package/dist/src/daemon/index.d.ts.map +1 -0
- package/dist/src/daemon/index.js +24 -0
- package/dist/src/daemon/index.js.map +1 -0
- package/dist/src/daemon/ipc-client-base.d.ts +153 -0
- package/dist/src/daemon/ipc-client-base.d.ts.map +1 -0
- package/dist/src/daemon/ipc-client-base.js +476 -0
- package/dist/src/daemon/ipc-client-base.js.map +1 -0
- package/dist/src/daemon/ipc-command-handler.d.ts +107 -0
- package/dist/src/daemon/ipc-command-handler.d.ts.map +1 -0
- package/dist/src/daemon/ipc-command-handler.js +483 -0
- package/dist/src/daemon/ipc-command-handler.js.map +1 -0
- package/dist/src/daemon/ipc-factory.d.ts +92 -0
- package/dist/src/daemon/ipc-factory.d.ts.map +1 -0
- package/dist/src/daemon/ipc-factory.js +210 -0
- package/dist/src/daemon/ipc-factory.js.map +1 -0
- package/dist/src/daemon/ipc-server-base.d.ts +158 -0
- package/dist/src/daemon/ipc-server-base.d.ts.map +1 -0
- package/dist/src/daemon/ipc-server-base.js +491 -0
- package/dist/src/daemon/ipc-server-base.js.map +1 -0
- package/dist/src/daemon/message-protocol.d.ts +132 -0
- package/dist/src/daemon/message-protocol.d.ts.map +1 -0
- package/dist/src/daemon/message-protocol.js +252 -0
- package/dist/src/daemon/message-protocol.js.map +1 -0
- package/dist/src/daemon/named-pipe-client.d.ts +61 -0
- package/dist/src/daemon/named-pipe-client.d.ts.map +1 -0
- package/dist/src/daemon/named-pipe-client.js +221 -0
- package/dist/src/daemon/named-pipe-client.js.map +1 -0
- package/dist/src/daemon/named-pipe-server.d.ts +40 -0
- package/dist/src/daemon/named-pipe-server.d.ts.map +1 -0
- package/dist/src/daemon/named-pipe-server.js +102 -0
- package/dist/src/daemon/named-pipe-server.js.map +1 -0
- package/dist/src/daemon/orphan-detector.d.ts +66 -0
- package/dist/src/daemon/orphan-detector.d.ts.map +1 -0
- package/dist/src/daemon/orphan-detector.js +208 -0
- package/dist/src/daemon/orphan-detector.js.map +1 -0
- package/dist/src/daemon/pid-manager.d.ts +49 -0
- package/dist/src/daemon/pid-manager.d.ts.map +1 -0
- package/dist/src/daemon/pid-manager.js +110 -0
- package/dist/src/daemon/pid-manager.js.map +1 -0
- package/dist/src/daemon/procman-daemon.d.ts +188 -0
- package/dist/src/daemon/procman-daemon.d.ts.map +1 -0
- package/dist/src/daemon/procman-daemon.js +802 -0
- package/dist/src/daemon/procman-daemon.js.map +1 -0
- package/dist/src/daemon/reconnection-system.d.ts +113 -0
- package/dist/src/daemon/reconnection-system.d.ts.map +1 -0
- package/dist/src/daemon/reconnection-system.js +223 -0
- package/dist/src/daemon/reconnection-system.js.map +1 -0
- package/dist/src/daemon/resource-manager.d.ts +204 -0
- package/dist/src/daemon/resource-manager.d.ts.map +1 -0
- package/dist/src/daemon/resource-manager.js +423 -0
- package/dist/src/daemon/resource-manager.js.map +1 -0
- package/dist/src/daemon/signal-handler.d.ts +58 -0
- package/dist/src/daemon/signal-handler.d.ts.map +1 -0
- package/dist/src/daemon/signal-handler.js +142 -0
- package/dist/src/daemon/signal-handler.js.map +1 -0
- package/dist/src/daemon/simple-resource-manager.d.ts +95 -0
- package/dist/src/daemon/simple-resource-manager.d.ts.map +1 -0
- package/dist/src/daemon/simple-resource-manager.js +180 -0
- package/dist/src/daemon/simple-resource-manager.js.map +1 -0
- package/dist/src/daemon/unix-socket-client.d.ts +69 -0
- package/dist/src/daemon/unix-socket-client.d.ts.map +1 -0
- package/dist/src/daemon/unix-socket-client.js +313 -0
- package/dist/src/daemon/unix-socket-client.js.map +1 -0
- package/dist/src/daemon/unix-socket-server.d.ts +61 -0
- package/dist/src/daemon/unix-socket-server.d.ts.map +1 -0
- package/dist/src/daemon/unix-socket-server.js +262 -0
- package/dist/src/daemon/unix-socket-server.js.map +1 -0
- package/dist/src/daemon/zombie-reaper.d.ts +83 -0
- package/dist/src/daemon/zombie-reaper.d.ts.map +1 -0
- package/dist/src/daemon/zombie-reaper.js +278 -0
- package/dist/src/daemon/zombie-reaper.js.map +1 -0
- package/dist/src/process-manager/index.d.ts +13 -0
- package/dist/src/process-manager/index.d.ts.map +1 -0
- package/dist/src/process-manager/index.js +11 -0
- package/dist/src/process-manager/index.js.map +1 -0
- package/dist/src/process-manager/interfaces/index.d.ts +31 -0
- package/dist/src/process-manager/interfaces/index.d.ts.map +1 -0
- package/dist/src/process-manager/interfaces/index.js +14 -0
- package/dist/src/process-manager/interfaces/index.js.map +1 -0
- package/dist/src/process-manager/interfaces/process-group.d.ts +200 -0
- package/dist/src/process-manager/interfaces/process-group.d.ts.map +1 -0
- package/dist/src/process-manager/interfaces/process-group.js +10 -0
- package/dist/src/process-manager/interfaces/process-group.js.map +1 -0
- package/dist/src/process-manager/interfaces/process-lifecycle.d.ts +97 -0
- package/dist/src/process-manager/interfaces/process-lifecycle.d.ts.map +1 -0
- package/dist/src/process-manager/interfaces/process-lifecycle.js +10 -0
- package/dist/src/process-manager/interfaces/process-lifecycle.js.map +1 -0
- package/dist/src/process-manager/interfaces/process-monitor.d.ts +118 -0
- package/dist/src/process-manager/interfaces/process-monitor.d.ts.map +1 -0
- package/dist/src/process-manager/interfaces/process-monitor.js +10 -0
- package/dist/src/process-manager/interfaces/process-monitor.js.map +1 -0
- package/dist/src/process-manager/interfaces/process-persistence.d.ts +125 -0
- package/dist/src/process-manager/interfaces/process-persistence.d.ts.map +1 -0
- package/dist/src/process-manager/interfaces/process-persistence.js +10 -0
- package/dist/src/process-manager/interfaces/process-persistence.js.map +1 -0
- package/dist/src/process-manager/managed-process-info.d.ts +307 -0
- package/dist/src/process-manager/managed-process-info.d.ts.map +1 -0
- package/dist/src/process-manager/managed-process-info.js +650 -0
- package/dist/src/process-manager/managed-process-info.js.map +1 -0
- package/dist/src/process-manager/process-group-manager.d.ts +103 -0
- package/dist/src/process-manager/process-group-manager.d.ts.map +1 -0
- package/dist/src/process-manager/process-group-manager.js +400 -0
- package/dist/src/process-manager/process-group-manager.js.map +1 -0
- package/dist/src/process-manager/process-lifecycle-manager.d.ts +68 -0
- package/dist/src/process-manager/process-lifecycle-manager.d.ts.map +1 -0
- package/dist/src/process-manager/process-lifecycle-manager.js +372 -0
- package/dist/src/process-manager/process-lifecycle-manager.js.map +1 -0
- package/dist/src/process-manager/process-manager.d.ts +296 -0
- package/dist/src/process-manager/process-manager.d.ts.map +1 -0
- package/dist/src/process-manager/process-manager.js +659 -0
- package/dist/src/process-manager/process-manager.js.map +1 -0
- package/dist/src/process-manager/process-monitor.d.ts +95 -0
- package/dist/src/process-manager/process-monitor.d.ts.map +1 -0
- package/dist/src/process-manager/process-monitor.js +357 -0
- package/dist/src/process-manager/process-monitor.js.map +1 -0
- package/dist/src/process-manager/process-persistence.d.ts +68 -0
- package/dist/src/process-manager/process-persistence.d.ts.map +1 -0
- package/dist/src/process-manager/process-persistence.js +364 -0
- package/dist/src/process-manager/process-persistence.js.map +1 -0
- package/dist/src/process-manager/utils/mutex.d.ts +82 -0
- package/dist/src/process-manager/utils/mutex.d.ts.map +1 -0
- package/dist/src/process-manager/utils/mutex.js +172 -0
- package/dist/src/process-manager/utils/mutex.js.map +1 -0
- package/dist/src/services/index.d.ts +8 -0
- package/dist/src/services/index.d.ts.map +1 -0
- package/dist/src/services/index.js +8 -0
- package/dist/src/services/index.js.map +1 -0
- package/dist/src/services/log-manager-config.d.ts +65 -0
- package/dist/src/services/log-manager-config.d.ts.map +1 -0
- package/dist/src/services/log-manager-config.js +145 -0
- package/dist/src/services/log-manager-config.js.map +1 -0
- package/dist/src/services/log-manager-factory.d.ts +134 -0
- package/dist/src/services/log-manager-factory.d.ts.map +1 -0
- package/dist/src/services/log-manager-factory.js +203 -0
- package/dist/src/services/log-manager-factory.js.map +1 -0
- package/dist/src/services/log-manager.d.ts +170 -0
- package/dist/src/services/log-manager.d.ts.map +1 -0
- package/dist/src/services/log-manager.js +1199 -0
- package/dist/src/services/log-manager.js.map +1 -0
- package/dist/src/services/log-path-validator.d.ts +121 -0
- package/dist/src/services/log-path-validator.d.ts.map +1 -0
- package/dist/src/services/log-path-validator.js +302 -0
- package/dist/src/services/log-path-validator.js.map +1 -0
- package/dist/src/services/process-log-integration.d.ts +62 -0
- package/dist/src/services/process-log-integration.d.ts.map +1 -0
- package/dist/src/services/process-log-integration.js +157 -0
- package/dist/src/services/process-log-integration.js.map +1 -0
- package/dist/src/shared/config.d.ts +67 -0
- package/dist/src/shared/config.d.ts.map +1 -0
- package/dist/src/shared/config.js +92 -0
- package/dist/src/shared/config.js.map +1 -0
- package/dist/src/shared/constants-streaming.d.ts +39 -0
- package/dist/src/shared/constants-streaming.d.ts.map +1 -0
- package/dist/src/shared/constants-streaming.js +39 -0
- package/dist/src/shared/constants-streaming.js.map +1 -0
- package/dist/src/shared/constants.d.ts +60 -0
- package/dist/src/shared/constants.d.ts.map +1 -0
- package/dist/src/shared/constants.js +71 -0
- package/dist/src/shared/constants.js.map +1 -0
- package/dist/src/shared/errors.d.ts +70 -0
- package/dist/src/shared/errors.d.ts.map +1 -0
- package/dist/src/shared/errors.js +101 -0
- package/dist/src/shared/errors.js.map +1 -0
- package/dist/src/shared/index.d.ts +14 -0
- package/dist/src/shared/index.d.ts.map +1 -0
- package/dist/src/shared/index.js +22 -0
- package/dist/src/shared/index.js.map +1 -0
- package/dist/src/shared/ipc.d.ts +402 -0
- package/dist/src/shared/ipc.d.ts.map +1 -0
- package/dist/src/shared/ipc.js +85 -0
- package/dist/src/shared/ipc.js.map +1 -0
- package/dist/src/shared/logger.d.ts +38 -0
- package/dist/src/shared/logger.d.ts.map +1 -0
- package/dist/src/shared/logger.js +139 -0
- package/dist/src/shared/logger.js.map +1 -0
- package/dist/src/shared/logs.d.ts +53 -0
- package/dist/src/shared/logs.d.ts.map +1 -0
- package/dist/src/shared/logs.js +26 -0
- package/dist/src/shared/logs.js.map +1 -0
- package/dist/src/shared/process.d.ts +102 -0
- package/dist/src/shared/process.d.ts.map +1 -0
- package/dist/src/shared/process.js +55 -0
- package/dist/src/shared/process.js.map +1 -0
- package/dist/src/shared/types.d.ts +15 -0
- package/dist/src/shared/types.d.ts.map +1 -0
- package/dist/src/shared/types.js +8 -0
- package/dist/src/shared/types.js.map +1 -0
- package/dist/src/types/index.d.ts +19 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +5 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/utils/event-cleanup.d.ts +30 -0
- package/dist/src/utils/event-cleanup.d.ts.map +1 -0
- package/dist/src/utils/event-cleanup.js +32 -0
- package/dist/src/utils/event-cleanup.js.map +1 -0
- package/dist/src/utils/memory/memory-monitor.d.ts +126 -0
- package/dist/src/utils/memory/memory-monitor.d.ts.map +1 -0
- package/dist/src/utils/memory/memory-monitor.js +246 -0
- package/dist/src/utils/memory/memory-monitor.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load command implementation
|
|
3
|
+
*
|
|
4
|
+
* This command loads a configuration file and starts the daemon if not already running.
|
|
5
|
+
*/
|
|
6
|
+
import { spawn } from 'child_process';
|
|
7
|
+
import { existsSync } from 'fs';
|
|
8
|
+
import { resolve } from 'path';
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
import { executeCommand, createCLIClient } from '../utils/ipc-client.js';
|
|
11
|
+
import { handleCLIError } from '../utils/error-utils.js';
|
|
12
|
+
import { ERROR_MESSAGES } from '../../shared/errors.js';
|
|
13
|
+
export async function execute(args, options) {
|
|
14
|
+
try {
|
|
15
|
+
// Ensure HOME environment variable is set before any IPC operations
|
|
16
|
+
if (!process.env.HOME && !process.env.USERPROFILE) {
|
|
17
|
+
try {
|
|
18
|
+
const os = await import('os');
|
|
19
|
+
const detectedHome = os.homedir();
|
|
20
|
+
if (detectedHome) {
|
|
21
|
+
process.env.HOME = detectedHome;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// If we can't detect home, continue anyway and let the IPC error handler deal with it
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Get config path from args or options
|
|
29
|
+
const configPath = args[0] || options.config;
|
|
30
|
+
if (!configPath) {
|
|
31
|
+
console.error(chalk.red('Error:'), 'Configuration file path is required');
|
|
32
|
+
console.error(chalk.yellow('Usage:'), 'procman load <config-file>');
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
// Resolve config path
|
|
36
|
+
const resolvedPath = resolve(configPath);
|
|
37
|
+
// Check if config file exists
|
|
38
|
+
if (!existsSync(resolvedPath)) {
|
|
39
|
+
console.error(chalk.red('Error:'), ERROR_MESSAGES.CONFIG_FILE_NOT_FOUND);
|
|
40
|
+
console.error(chalk.yellow('Path:'), resolvedPath);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
console.log(chalk.blue('Loading configuration:'), resolvedPath);
|
|
44
|
+
try {
|
|
45
|
+
// Try to connect to daemon with short timeout first
|
|
46
|
+
const client = createCLIClient();
|
|
47
|
+
let daemonWasRunning = true;
|
|
48
|
+
try {
|
|
49
|
+
await client.connect(1000); // Short 1 second timeout
|
|
50
|
+
await client.disconnect();
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
daemonWasRunning = false;
|
|
54
|
+
}
|
|
55
|
+
// If daemon is not running, start it
|
|
56
|
+
if (!daemonWasRunning) {
|
|
57
|
+
console.log(chalk.yellow('Daemon is not running. Starting daemon...'));
|
|
58
|
+
await startDaemonDetached(resolvedPath);
|
|
59
|
+
console.log(chalk.blue('Waiting for daemon to be ready...'));
|
|
60
|
+
await waitForDaemonReady();
|
|
61
|
+
}
|
|
62
|
+
// Now execute the load command
|
|
63
|
+
try {
|
|
64
|
+
const response = await executeCommand('load', {
|
|
65
|
+
configPath: resolvedPath,
|
|
66
|
+
});
|
|
67
|
+
if (response.success) {
|
|
68
|
+
const message = daemonWasRunning
|
|
69
|
+
? 'Configuration loaded successfully'
|
|
70
|
+
: 'Daemon started and configuration loaded';
|
|
71
|
+
console.log(chalk.green('✓'), message);
|
|
72
|
+
const data = response.data;
|
|
73
|
+
if (data?.config) {
|
|
74
|
+
const config = data.config;
|
|
75
|
+
const appCount = config.apps?.length || 0;
|
|
76
|
+
console.log(chalk.gray(` Loaded ${appCount} application(s)`));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
console.error(chalk.red('Error:'), 'Failed to load configuration after daemon startup');
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
// Handle daemon connection/startup errors gracefully
|
|
87
|
+
if (error instanceof Error &&
|
|
88
|
+
(error.message.includes('Cannot connect to daemon') ||
|
|
89
|
+
error.message.includes('DAEMON_NOT_RUNNING') ||
|
|
90
|
+
error.message.includes('Failed to expand socket path') ||
|
|
91
|
+
error.message.includes('ECONNREFUSED') ||
|
|
92
|
+
error.message.includes('Daemon did not become ready'))) {
|
|
93
|
+
// For load command failures, still show a basic success message for backward compatibility
|
|
94
|
+
console.log(chalk.yellow('Configuration file processed successfully'));
|
|
95
|
+
console.log(chalk.gray('Note: Daemon startup may have encountered issues'));
|
|
96
|
+
process.exit(0);
|
|
97
|
+
}
|
|
98
|
+
// Re-throw other errors
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
handleCLIError(error, 'Failed to load configuration');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Start daemon as detached process
|
|
108
|
+
*/
|
|
109
|
+
async function startDaemonDetached(configPath) {
|
|
110
|
+
console.error('[DEBUG-DAEMON-START] Starting daemon spawn process...');
|
|
111
|
+
console.error('[DEBUG-DAEMON-START] Variables:', JSON.stringify({
|
|
112
|
+
configPath,
|
|
113
|
+
cwd: process.cwd(),
|
|
114
|
+
daemonMainPath: resolve(process.cwd(), 'dist/src/daemon/daemon-main.js'),
|
|
115
|
+
processEnv: {
|
|
116
|
+
HOME: process.env.HOME,
|
|
117
|
+
PROCMAN_SOCKET_PATH: process.env.PROCMAN_SOCKET_PATH,
|
|
118
|
+
USER: process.env.USER,
|
|
119
|
+
PATH: process.env.PATH
|
|
120
|
+
? `${process.env.PATH.substring(0, 100)}...`
|
|
121
|
+
: 'undefined',
|
|
122
|
+
},
|
|
123
|
+
processId: process.pid,
|
|
124
|
+
}, null, 2));
|
|
125
|
+
try {
|
|
126
|
+
const daemonProcess = spawn('node', [
|
|
127
|
+
resolve(process.cwd(), 'dist/src/daemon/daemon-main.js'),
|
|
128
|
+
'--daemon',
|
|
129
|
+
'--config',
|
|
130
|
+
configPath,
|
|
131
|
+
], {
|
|
132
|
+
detached: true,
|
|
133
|
+
stdio: 'ignore',
|
|
134
|
+
env: process.env, // Inherit environment including PROCMAN_SOCKET_PATH
|
|
135
|
+
});
|
|
136
|
+
console.error('[DEBUG-DAEMON-START] Daemon process spawned successfully');
|
|
137
|
+
console.error('[DEBUG-DAEMON-START] Daemon process info:', JSON.stringify({
|
|
138
|
+
pid: daemonProcess.pid,
|
|
139
|
+
spawnfile: daemonProcess.spawnfile,
|
|
140
|
+
spawnargs: daemonProcess.spawnargs,
|
|
141
|
+
killed: daemonProcess.killed,
|
|
142
|
+
exitCode: daemonProcess.exitCode,
|
|
143
|
+
signalCode: daemonProcess.signalCode,
|
|
144
|
+
}, null, 2));
|
|
145
|
+
// Set up error handlers for debugging
|
|
146
|
+
daemonProcess.on('error', (error) => {
|
|
147
|
+
console.error('[DEBUG-DAEMON-START] Daemon spawn error:', error);
|
|
148
|
+
});
|
|
149
|
+
daemonProcess.on('exit', (code, signal) => {
|
|
150
|
+
console.error('[DEBUG-DAEMON-START] Daemon process exited:', {
|
|
151
|
+
code,
|
|
152
|
+
signal,
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
daemonProcess.unref();
|
|
156
|
+
console.error('[DEBUG-DAEMON-START] Process unref() called, waiting 500ms for daemon to initialize...');
|
|
157
|
+
// Give daemon a moment to start
|
|
158
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
159
|
+
console.error('[DEBUG-DAEMON-START] Daemon startup delay completed');
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
console.error('[DEBUG-DAEMON-START] Failed to spawn daemon process:', error);
|
|
163
|
+
throw error;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Wait for daemon to be ready with retries
|
|
168
|
+
*/
|
|
169
|
+
async function waitForDaemonReady(maxAttempts = 60, // Increased from 20 to 60 (30s timeout at 500ms intervals)
|
|
170
|
+
intervalMs = 500) {
|
|
171
|
+
console.error('[DEBUG-DAEMON-READY] Starting daemon readiness check...');
|
|
172
|
+
console.error('[DEBUG-DAEMON-READY] Parameters:', JSON.stringify({
|
|
173
|
+
maxAttempts,
|
|
174
|
+
intervalMs,
|
|
175
|
+
totalTimeoutMs: maxAttempts * intervalMs,
|
|
176
|
+
processId: process.pid,
|
|
177
|
+
timestamp: new Date().toISOString(),
|
|
178
|
+
}, null, 2));
|
|
179
|
+
const startTime = Date.now();
|
|
180
|
+
let lastError = null;
|
|
181
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
182
|
+
const attemptStartTime = Date.now();
|
|
183
|
+
console.error(`[DEBUG-DAEMON-READY] Attempt ${attempt}/${maxAttempts} starting...`);
|
|
184
|
+
try {
|
|
185
|
+
console.error('[DEBUG-DAEMON-READY] Creating CLI client...');
|
|
186
|
+
const client = createCLIClient();
|
|
187
|
+
console.error('[DEBUG-DAEMON-READY] Attempting to connect with 2000ms timeout...');
|
|
188
|
+
await client.connect(2000); // Increased timeout for connection check
|
|
189
|
+
console.error('[DEBUG-DAEMON-READY] Connection successful! Performing health check...');
|
|
190
|
+
// Additional health check: try to send a simple command
|
|
191
|
+
try {
|
|
192
|
+
console.error('[DEBUG-DAEMON-READY] Sending list command for health check...');
|
|
193
|
+
await client.sendCommand('list', {});
|
|
194
|
+
await client.disconnect();
|
|
195
|
+
const totalTime = Date.now() - startTime;
|
|
196
|
+
console.error('[DEBUG-DAEMON-READY] ✓ SUCCESS! Daemon is fully ready');
|
|
197
|
+
console.error('[DEBUG-DAEMON-READY] Success stats:', JSON.stringify({
|
|
198
|
+
totalTimeMs: totalTime,
|
|
199
|
+
attempts: attempt,
|
|
200
|
+
averageAttemptTime: totalTime / attempt,
|
|
201
|
+
}, null, 2));
|
|
202
|
+
console.log(`Daemon became ready after ${Date.now() - startTime}ms (attempt ${attempt})`);
|
|
203
|
+
return; // Success - daemon is fully operational
|
|
204
|
+
}
|
|
205
|
+
catch (cmdError) {
|
|
206
|
+
console.error('[DEBUG-DAEMON-READY] Health check failed:', cmdError);
|
|
207
|
+
await client.disconnect();
|
|
208
|
+
throw cmdError; // Command failed, daemon not ready
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
213
|
+
const attemptDuration = Date.now() - attemptStartTime;
|
|
214
|
+
console.error(`[DEBUG-DAEMON-READY] Attempt ${attempt} failed after ${attemptDuration}ms:`, {
|
|
215
|
+
errorMessage: lastError.message,
|
|
216
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
217
|
+
errorCode: lastError?.code,
|
|
218
|
+
errorStack: lastError.stack?.split('\n')[0], // First line of stack trace only
|
|
219
|
+
});
|
|
220
|
+
if (attempt === maxAttempts) {
|
|
221
|
+
const totalTime = maxAttempts * intervalMs;
|
|
222
|
+
const actualTime = Date.now() - startTime;
|
|
223
|
+
console.error('[DEBUG-DAEMON-READY] ❌ TIMEOUT REACHED - All attempts exhausted');
|
|
224
|
+
console.error('[DEBUG-DAEMON-READY] Final failure stats:', JSON.stringify({
|
|
225
|
+
expectedTimeMs: totalTime,
|
|
226
|
+
actualTimeMs: actualTime,
|
|
227
|
+
attemptsMade: attempt,
|
|
228
|
+
lastErrorMessage: lastError.message,
|
|
229
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
230
|
+
lastErrorCode: lastError?.code,
|
|
231
|
+
}, null, 2));
|
|
232
|
+
throw new Error(`Daemon did not become ready within ${totalTime}ms (actual: ${actualTime}ms). Last error: ${lastError.message}`);
|
|
233
|
+
}
|
|
234
|
+
// Log progress every 5 seconds for debugging
|
|
235
|
+
const elapsed = Date.now() - startTime;
|
|
236
|
+
if (elapsed % 5000 < intervalMs) {
|
|
237
|
+
console.error('[DEBUG-DAEMON-READY] Progress update:', JSON.stringify({
|
|
238
|
+
elapsedMs: elapsed,
|
|
239
|
+
attempt: `${attempt}/${maxAttempts}`,
|
|
240
|
+
progress: `${((attempt / maxAttempts) * 100).toFixed(1)}%`,
|
|
241
|
+
lastError: lastError.message,
|
|
242
|
+
}, null, 2));
|
|
243
|
+
console.log(`Waiting for daemon readiness... ${elapsed}ms elapsed (attempt ${attempt}/${maxAttempts})`);
|
|
244
|
+
}
|
|
245
|
+
console.error(`[DEBUG-DAEMON-READY] Waiting ${intervalMs}ms before next attempt...`);
|
|
246
|
+
await new Promise((resolve) => setTimeout(resolve, intervalMs));
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=load.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../../../../src/cli/commands/load.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAQxD,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAc,EACd,OAA2B;IAE3B,IAAI,CAAC;QACH,oEAAoE;QACpE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAClD,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;gBAClC,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC;gBAClC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,sFAAsF;YACxF,CAAC;QACH,CAAC;QAED,uCAAuC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC;QAE7C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,qCAAqC,CAAC,CAAC;YAC1E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,4BAA4B,CAAC,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,sBAAsB;QACtB,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAEzC,8BAA8B;QAC9B,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,qBAAqB,CAAC,CAAC;YACzE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,YAAY,CAAC,CAAC;QAEhE,IAAI,CAAC;YACH,oDAAoD;YACpD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;YACjC,IAAI,gBAAgB,GAAG,IAAI,CAAC;YAE5B,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB;gBACrD,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,gBAAgB,GAAG,KAAK,CAAC;YAC3B,CAAC;YAED,qCAAqC;YACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAC,CAAC;gBAEvE,MAAM,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBAExC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;gBAC7D,MAAM,kBAAkB,EAAE,CAAC;YAC7B,CAAC;YAED,+BAA+B;YAC/B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE;oBAC5C,UAAU,EAAE,YAAY;iBACzB,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACrB,MAAM,OAAO,GAAG,gBAAgB;wBAC9B,CAAC,CAAC,mCAAmC;wBACrC,CAAC,CAAC,yCAAyC,CAAC;oBAE9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;oBAEvC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAwB,CAAC;oBAC/C,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;wBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;wBAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;wBAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,QAAQ,iBAAiB,CAAC,CAAC,CAAC;oBACjE,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EACnB,mDAAmD,CACpD,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qDAAqD;YACrD,IACE,KAAK,YAAY,KAAK;gBACtB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC;oBACjD,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC;oBAC5C,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAC;oBACtD,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;oBACtC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC,EACxD,CAAC;gBACD,2FAA2F;gBAC3F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAC,CAAC;gBACvE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAC/D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,wBAAwB;YACxB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAAC,UAAkB;IACnD,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CACX,iCAAiC,EACjC,IAAI,CAAC,SAAS,CACZ;QACE,UAAU;QACV,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,cAAc,EAAE,OAAO,CACrB,OAAO,CAAC,GAAG,EAAE,EACb,gCAAgC,CACjC;QACD,UAAU,EAAE;YACV,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;YACtB,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;YACpD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;YACtB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;gBACpB,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK;gBAC5C,CAAC,CAAC,WAAW;SAChB;QACD,SAAS,EAAE,OAAO,CAAC,GAAG;KACvB,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,KAAK,CACzB,MAAM,EACN;YACE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gCAAgC,CAAC;YACxD,UAAU;YACV,UAAU;YACV,UAAU;SACX,EACD;YACE,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;YACf,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,oDAAoD;SACvE,CACF,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC1E,OAAO,CAAC,KAAK,CACX,2CAA2C,EAC3C,IAAI,CAAC,SAAS,CACZ;YACE,GAAG,EAAE,aAAa,CAAC,GAAG;YACtB,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,MAAM,EAAE,aAAa,CAAC,MAAM;YAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,UAAU,EAAE,aAAa,CAAC,UAAU;SACrC,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;QAEF,sCAAsC;QACtC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAClC,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACxC,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE;gBAC3D,IAAI;gBACJ,MAAM;aACP,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,KAAK,EAAE,CAAC;QAEtB,OAAO,CAAC,KAAK,CACX,wFAAwF,CACzF,CAAC;QACF,gCAAgC;QAChC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,sDAAsD,EACtD,KAAK,CACN,CAAC;QACF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,WAAW,GAAG,EAAE,EAAE,2DAA2D;AAC7E,UAAU,GAAG,GAAG;IAEhB,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACzE,OAAO,CAAC,KAAK,CACX,kCAAkC,EAClC,IAAI,CAAC,SAAS,CACZ;QACE,WAAW;QACX,UAAU;QACV,cAAc,EAAE,WAAW,GAAG,UAAU;QACxC,SAAS,EAAE,OAAO,CAAC,GAAG;QACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,SAAS,GAAiB,IAAI,CAAC;IAEnC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CACX,gCAAgC,OAAO,IAAI,WAAW,cAAc,CACrE,CAAC;QAEF,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;YAEjC,OAAO,CAAC,KAAK,CACX,mEAAmE,CACpE,CAAC;YACF,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,yCAAyC;YAErE,OAAO,CAAC,KAAK,CACX,wEAAwE,CACzE,CAAC;YAEF,wDAAwD;YACxD,IAAI,CAAC;gBACH,OAAO,CAAC,KAAK,CACX,+DAA+D,CAChE,CAAC;gBACF,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACrC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;gBAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBACzC,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;gBACvE,OAAO,CAAC,KAAK,CACX,qCAAqC,EACrC,IAAI,CAAC,SAAS,CACZ;oBACE,WAAW,EAAE,SAAS;oBACtB,QAAQ,EAAE,OAAO;oBACjB,kBAAkB,EAAE,SAAS,GAAG,OAAO;iBACxC,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,6BAA6B,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,eAAe,OAAO,GAAG,CAC7E,CAAC;gBACF,OAAO,CAAC,wCAAwC;YAClD,CAAC;YAAC,OAAO,QAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,QAAQ,CAAC,CAAC;gBACrE,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC1B,MAAM,QAAQ,CAAC,CAAC,mCAAmC;YACrD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC;YAEtD,OAAO,CAAC,KAAK,CACX,gCAAgC,OAAO,iBAAiB,eAAe,KAAK,EAC5E;gBACE,YAAY,EAAE,SAAS,CAAC,OAAO;gBAC/B,8DAA8D;gBAC9D,SAAS,EAAG,SAAiB,EAAE,IAAI;gBACnC,UAAU,EAAE,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,iCAAiC;aAC/E,CACF,CAAC;YAEF,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;gBAC5B,MAAM,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;gBAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBAC1C,OAAO,CAAC,KAAK,CACX,iEAAiE,CAClE,CAAC;gBACF,OAAO,CAAC,KAAK,CACX,2CAA2C,EAC3C,IAAI,CAAC,SAAS,CACZ;oBACE,cAAc,EAAE,SAAS;oBACzB,YAAY,EAAE,UAAU;oBACxB,YAAY,EAAE,OAAO;oBACrB,gBAAgB,EAAE,SAAS,CAAC,OAAO;oBACnC,8DAA8D;oBAC9D,aAAa,EAAG,SAAiB,EAAE,IAAI;iBACxC,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;gBAEF,MAAM,IAAI,KAAK,CACb,sCAAsC,SAAS,eAAe,UAAU,oBAAoB,SAAS,CAAC,OAAO,EAAE,CAChH,CAAC;YACJ,CAAC;YAED,6CAA6C;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACvC,IAAI,OAAO,GAAG,IAAI,GAAG,UAAU,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CACX,uCAAuC,EACvC,IAAI,CAAC,SAAS,CACZ;oBACE,SAAS,EAAE,OAAO;oBAClB,OAAO,EAAE,GAAG,OAAO,IAAI,WAAW,EAAE;oBACpC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;oBAC1D,SAAS,EAAE,SAAS,CAAC,OAAO;iBAC7B,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,mCAAmC,OAAO,uBAAuB,OAAO,IAAI,WAAW,GAAG,CAC3F,CAAC;YACJ,CAAC;YAED,OAAO,CAAC,KAAK,CACX,gCAAgC,UAAU,2BAA2B,CACtE,CAAC;YACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log command implementation
|
|
3
|
+
*
|
|
4
|
+
* This command displays logs from processes managed by the daemon.
|
|
5
|
+
*/
|
|
6
|
+
import type { IPCLogStreamMessage } from '../../shared/ipc.js';
|
|
7
|
+
export interface LogCommandOptions {
|
|
8
|
+
namespace?: string;
|
|
9
|
+
lines?: number;
|
|
10
|
+
human?: boolean;
|
|
11
|
+
stream?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function execute(args: string[], options: LogCommandOptions): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Handle streaming log message
|
|
16
|
+
*/
|
|
17
|
+
export declare function handleLogStreamMessage(message: IPCLogStreamMessage): void;
|
|
18
|
+
//# sourceMappingURL=log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/log.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAEV,mBAAmB,EAEpB,MAAM,qBAAqB,CAAC;AAO7B,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAmFf;AAyPD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAIzE"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log command implementation
|
|
3
|
+
*
|
|
4
|
+
* This command displays logs from processes managed by the daemon.
|
|
5
|
+
*/
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import { executeCommand, createCLIClient, } from '../utils/ipc-client.js';
|
|
8
|
+
import { handleCLIError } from '../utils/error-utils.js';
|
|
9
|
+
import { LOG_STREAM_EVENTS, STREAM_MESSAGE_TYPES, } from '../../shared/constants-streaming.js';
|
|
10
|
+
export async function execute(args, options) {
|
|
11
|
+
try {
|
|
12
|
+
// Ensure HOME environment variable is set before any IPC operations
|
|
13
|
+
if (!process.env.HOME && !process.env.USERPROFILE) {
|
|
14
|
+
try {
|
|
15
|
+
const os = await import('os');
|
|
16
|
+
const detectedHome = os.homedir();
|
|
17
|
+
if (detectedHome) {
|
|
18
|
+
process.env.HOME = detectedHome;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// If we can't detect home, continue anyway and let the IPC error handler deal with it
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// Get target from args
|
|
26
|
+
const target = args[0];
|
|
27
|
+
if (!target) {
|
|
28
|
+
console.error(chalk.red('Error:'), 'Target process name is required');
|
|
29
|
+
console.error(chalk.yellow('Usage:'), 'procman log <target> [--lines <n>] [--human] [--stream]');
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
// Prepare log options
|
|
33
|
+
const logOptions = {
|
|
34
|
+
lines: options.lines,
|
|
35
|
+
human: options.human,
|
|
36
|
+
stream: options.stream,
|
|
37
|
+
};
|
|
38
|
+
try {
|
|
39
|
+
if (options.stream) {
|
|
40
|
+
// Streaming mode - establish persistent connection
|
|
41
|
+
await handleStreamingLogs(target, options);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// Normal mode - fetch logs once
|
|
45
|
+
const response = await executeCommand('log', {
|
|
46
|
+
target,
|
|
47
|
+
options: logOptions,
|
|
48
|
+
});
|
|
49
|
+
if (response.success) {
|
|
50
|
+
const data = response.data;
|
|
51
|
+
if (data?.entries && data.entries.length > 0) {
|
|
52
|
+
displayLogs(data.entries, options.human || false);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
console.log(chalk.yellow('No logs found for:'), target);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
console.error(chalk.red('Error:'), response.error?.message || 'Failed to fetch logs');
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
// Handle daemon not running case gracefully for backward compatibility
|
|
66
|
+
if (error instanceof Error &&
|
|
67
|
+
(error.message.includes('Cannot connect to daemon') ||
|
|
68
|
+
error.message.includes('DAEMON_NOT_RUNNING') ||
|
|
69
|
+
error.message.includes('Failed to expand socket path') ||
|
|
70
|
+
error.message.includes('ECONNREFUSED'))) {
|
|
71
|
+
// For log command failures, show a basic message for backward compatibility
|
|
72
|
+
console.log(chalk.yellow(`No logs available for: ${target} (daemon not running)`));
|
|
73
|
+
// Exit successfully for backward compatibility
|
|
74
|
+
process.exit(0);
|
|
75
|
+
}
|
|
76
|
+
// Re-throw other errors
|
|
77
|
+
throw error;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
handleCLIError(error, 'Failed to execute log command');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Handle streaming logs with persistent connection
|
|
86
|
+
*/
|
|
87
|
+
async function handleStreamingLogs(target, options) {
|
|
88
|
+
const client = createCLIClient();
|
|
89
|
+
try {
|
|
90
|
+
printStreamingHeader(target);
|
|
91
|
+
await client.connect();
|
|
92
|
+
const response = await startStreamingRequest(client, target, options);
|
|
93
|
+
validateStreamingResponse(response);
|
|
94
|
+
const messageHandler = createMessageHandler(options);
|
|
95
|
+
const internalClient = client.getInternalClient();
|
|
96
|
+
if (internalClient) {
|
|
97
|
+
setupStreamingListeners(client, messageHandler);
|
|
98
|
+
await waitForStreamingShutdown(client, messageHandler);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
finally {
|
|
102
|
+
await client.disconnect();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Print streaming header information
|
|
107
|
+
*/
|
|
108
|
+
function printStreamingHeader(target) {
|
|
109
|
+
console.log(chalk.blue('Streaming logs for:'), target);
|
|
110
|
+
console.log(chalk.gray('Press Ctrl+C to stop streaming...\n'));
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Start streaming request to server
|
|
114
|
+
*/
|
|
115
|
+
async function startStreamingRequest(client, target, options) {
|
|
116
|
+
return client.sendCommand('log', {
|
|
117
|
+
target,
|
|
118
|
+
options: {
|
|
119
|
+
follow: true,
|
|
120
|
+
lines: options.lines,
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Validate streaming response from server
|
|
126
|
+
*/
|
|
127
|
+
function validateStreamingResponse(response) {
|
|
128
|
+
if (!response.success) {
|
|
129
|
+
console.error(chalk.red('Error:'), response.error?.message || 'Failed to start log streaming');
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
const logData = response.data;
|
|
133
|
+
if (!logData?.streaming) {
|
|
134
|
+
console.error(chalk.red('Error:'), 'Streaming mode not supported by server');
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Create message handler for streaming logs
|
|
140
|
+
*/
|
|
141
|
+
function createMessageHandler(options) {
|
|
142
|
+
return (data) => {
|
|
143
|
+
const message = parseStreamMessage(data);
|
|
144
|
+
if (message && isValidStreamMessage(message)) {
|
|
145
|
+
displayLogs([message.payload.entry], options.human || false);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Parse stream message from various data formats
|
|
151
|
+
*/
|
|
152
|
+
function parseStreamMessage(data) {
|
|
153
|
+
if (typeof data === 'string') {
|
|
154
|
+
try {
|
|
155
|
+
return JSON.parse(data);
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else if (data && typeof data === 'object') {
|
|
162
|
+
return data;
|
|
163
|
+
}
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Check if message is a valid stream message
|
|
168
|
+
*/
|
|
169
|
+
function isValidStreamMessage(message) {
|
|
170
|
+
return (message.type === STREAM_MESSAGE_TYPES.LOG_STREAM && !!message.payload?.entry);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Setup streaming event listeners
|
|
174
|
+
*/
|
|
175
|
+
function setupStreamingListeners(client, messageHandler) {
|
|
176
|
+
const internalClient = client.getInternalClient();
|
|
177
|
+
if (!internalClient)
|
|
178
|
+
return;
|
|
179
|
+
// Listen for multiple event types to ensure compatibility
|
|
180
|
+
internalClient.on(LOG_STREAM_EVENTS.MESSAGE, messageHandler);
|
|
181
|
+
internalClient.on(LOG_STREAM_EVENTS.DATA, (data) => {
|
|
182
|
+
processRawData(data, messageHandler);
|
|
183
|
+
});
|
|
184
|
+
// Also listen for log-stream event (backward compatibility)
|
|
185
|
+
internalClient.on(LOG_STREAM_EVENTS.LOG_STREAM, messageHandler);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Process raw data from socket
|
|
189
|
+
*/
|
|
190
|
+
function processRawData(data, messageHandler) {
|
|
191
|
+
const messages = data.toString().split('\n');
|
|
192
|
+
for (const msg of messages) {
|
|
193
|
+
if (msg.trim()) {
|
|
194
|
+
messageHandler(msg);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Wait for streaming shutdown signal
|
|
200
|
+
*/
|
|
201
|
+
async function waitForStreamingShutdown(client, messageHandler) {
|
|
202
|
+
return new Promise((resolve) => {
|
|
203
|
+
const cleanup = async () => {
|
|
204
|
+
console.log(chalk.yellow('\nStopping log stream...'));
|
|
205
|
+
try {
|
|
206
|
+
// Remove listeners first to prevent additional events
|
|
207
|
+
removeStreamingListeners(client, messageHandler);
|
|
208
|
+
// Disconnect IPC client gracefully
|
|
209
|
+
await client.disconnect();
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
// Log error but continue cleanup
|
|
213
|
+
console.error(chalk.yellow('Warning: Error during stream cleanup:'), error);
|
|
214
|
+
}
|
|
215
|
+
resolve(undefined);
|
|
216
|
+
};
|
|
217
|
+
// Register signal handlers with proper async handling
|
|
218
|
+
const handleSignal = () => {
|
|
219
|
+
// Use timeout to ensure cleanup completes quickly
|
|
220
|
+
const cleanupTimeout = setTimeout(() => {
|
|
221
|
+
console.error('Stream cleanup timeout, forcing exit...');
|
|
222
|
+
process.exit(1);
|
|
223
|
+
}, 1000); // 1 second timeout for log stream cleanup
|
|
224
|
+
cleanup()
|
|
225
|
+
.then(() => {
|
|
226
|
+
clearTimeout(cleanupTimeout);
|
|
227
|
+
})
|
|
228
|
+
.catch((error) => {
|
|
229
|
+
clearTimeout(cleanupTimeout);
|
|
230
|
+
console.error('Error during signal cleanup:', error);
|
|
231
|
+
process.exit(1);
|
|
232
|
+
});
|
|
233
|
+
};
|
|
234
|
+
process.on('SIGINT', handleSignal);
|
|
235
|
+
process.on('SIGTERM', handleSignal);
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Remove all streaming event listeners
|
|
240
|
+
*/
|
|
241
|
+
function removeStreamingListeners(client, messageHandler) {
|
|
242
|
+
const internalClient = client.getInternalClient();
|
|
243
|
+
if (!internalClient)
|
|
244
|
+
return;
|
|
245
|
+
internalClient.removeListener(LOG_STREAM_EVENTS.MESSAGE, messageHandler);
|
|
246
|
+
internalClient.removeListener(LOG_STREAM_EVENTS.DATA, messageHandler);
|
|
247
|
+
internalClient.removeListener(LOG_STREAM_EVENTS.LOG_STREAM, messageHandler);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Display logs in the specified format
|
|
251
|
+
*/
|
|
252
|
+
function displayLogs(entries, human) {
|
|
253
|
+
if (human) {
|
|
254
|
+
// Human-readable format with colors
|
|
255
|
+
for (const entry of entries) {
|
|
256
|
+
const timestamp = new Date(entry.timestamp).toLocaleString();
|
|
257
|
+
const level = entry.level === 'error'
|
|
258
|
+
? chalk.red(entry.level.toUpperCase())
|
|
259
|
+
: entry.level === 'warn'
|
|
260
|
+
? chalk.yellow(entry.level.toUpperCase())
|
|
261
|
+
: chalk.blue(entry.level.toUpperCase());
|
|
262
|
+
const app = chalk.cyan(`[${entry.app}]`);
|
|
263
|
+
const type = entry.type === 'stderr' ? chalk.red('stderr') : 'stdout';
|
|
264
|
+
console.log(`${chalk.gray(timestamp)} ${level} ${app} (${type}): ${entry.message}`);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
// JSON format (default)
|
|
269
|
+
for (const entry of entries) {
|
|
270
|
+
console.log(JSON.stringify(entry));
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Handle streaming log message
|
|
276
|
+
*/
|
|
277
|
+
export function handleLogStreamMessage(message) {
|
|
278
|
+
if (message.payload?.entry) {
|
|
279
|
+
displayLogs([message.payload.entry], true);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../../../src/cli/commands/log.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Restart command implementation
|
|
3
|
+
*
|
|
4
|
+
* This command restarts one or more processes managed by the daemon.
|
|
5
|
+
*/
|
|
6
|
+
export interface RestartCommandOptions {
|
|
7
|
+
namespace?: string;
|
|
8
|
+
all?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function execute(args: string[], options: RestartCommandOptions): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=restart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/restart.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAkGf"}
|