@masuidrive/procman 0.1.1 → 0.2.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/dist/src/cli/commands/help.d.ts.map +1 -1
- package/dist/src/cli/commands/help.js +3 -1
- package/dist/src/cli/commands/help.js.map +1 -1
- package/dist/src/cli/index.js +6 -2
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/parser.d.ts.map +1 -1
- package/dist/src/cli/parser.js +20 -0
- package/dist/src/cli/parser.js.map +1 -1
- package/dist/src/cli/utils/find-package-json.d.ts +4 -0
- package/dist/src/cli/utils/find-package-json.d.ts.map +1 -0
- package/dist/src/cli/utils/find-package-json.js +15 -0
- package/dist/src/cli/utils/find-package-json.js.map +1 -0
- package/dist/src/config/config-loader.d.ts +1 -0
- package/dist/src/config/config-loader.d.ts.map +1 -1
- package/dist/src/config/config-loader.js +16 -6
- package/dist/src/config/config-loader.js.map +1 -1
- package/dist/src/config/config-validator.d.ts +18 -49
- package/dist/src/config/config-validator.d.ts.map +1 -1
- package/dist/src/config/config-validator.js +64 -172
- package/dist/src/config/config-validator.js.map +1 -1
- package/dist/src/config/path-security-validator.d.ts +39 -0
- package/dist/src/config/path-security-validator.d.ts.map +1 -0
- package/dist/src/config/path-security-validator.js +134 -0
- package/dist/src/config/path-security-validator.js.map +1 -0
- package/dist/src/config/secure-config-loader.d.ts.map +1 -1
- package/dist/src/config/secure-config-loader.js +10 -2
- package/dist/src/config/secure-config-loader.js.map +1 -1
- package/dist/src/config/validation-suggestions.d.ts +13 -0
- package/dist/src/config/validation-suggestions.d.ts.map +1 -0
- package/dist/src/config/validation-suggestions.js +40 -0
- package/dist/src/config/validation-suggestions.js.map +1 -0
- package/dist/src/config/validation-types.d.ts +38 -0
- package/dist/src/config/validation-types.d.ts.map +1 -0
- package/dist/src/config/validation-types.js +7 -0
- package/dist/src/config/validation-types.js.map +1 -0
- package/dist/src/daemon/component-command-wiring.d.ts +19 -0
- package/dist/src/daemon/component-command-wiring.d.ts.map +1 -0
- package/dist/src/daemon/component-command-wiring.js +27 -0
- package/dist/src/daemon/component-command-wiring.js.map +1 -0
- package/dist/src/daemon/component-daemon-interface.d.ts +38 -0
- package/dist/src/daemon/component-daemon-interface.d.ts.map +1 -0
- package/dist/src/daemon/component-daemon-interface.js +72 -0
- package/dist/src/daemon/component-daemon-interface.js.map +1 -0
- package/dist/src/daemon/component-health.d.ts +38 -0
- package/dist/src/daemon/component-health.d.ts.map +1 -0
- package/dist/src/daemon/component-health.js +146 -0
- package/dist/src/daemon/component-health.js.map +1 -0
- package/dist/src/daemon/component-manager-errors.d.ts +20 -0
- package/dist/src/daemon/component-manager-errors.d.ts.map +1 -0
- package/dist/src/daemon/component-manager-errors.js +30 -0
- package/dist/src/daemon/component-manager-errors.js.map +1 -0
- package/dist/src/daemon/component-manager-types.d.ts +23 -0
- package/dist/src/daemon/component-manager-types.d.ts.map +1 -0
- package/dist/src/daemon/component-manager-types.js +5 -0
- package/dist/src/daemon/component-manager-types.js.map +1 -0
- package/dist/src/daemon/component-manager.d.ts +16 -64
- package/dist/src/daemon/component-manager.d.ts.map +1 -1
- package/dist/src/daemon/component-manager.js +72 -509
- package/dist/src/daemon/component-manager.js.map +1 -1
- package/dist/src/daemon/component-registration.d.ts +14 -0
- package/dist/src/daemon/component-registration.d.ts.map +1 -0
- package/dist/src/daemon/component-registration.js +92 -0
- package/dist/src/daemon/component-registration.js.map +1 -0
- package/dist/src/daemon/component-streaming.d.ts +36 -0
- package/dist/src/daemon/component-streaming.d.ts.map +1 -0
- package/dist/src/daemon/component-streaming.js +112 -0
- package/dist/src/daemon/component-streaming.js.map +1 -0
- package/dist/src/daemon/daemon-lifecycle.d.ts +37 -0
- package/dist/src/daemon/daemon-lifecycle.d.ts.map +1 -0
- package/dist/src/daemon/daemon-lifecycle.js +362 -0
- package/dist/src/daemon/daemon-lifecycle.js.map +1 -0
- package/dist/src/daemon/daemon-queries.d.ts +53 -0
- package/dist/src/daemon/daemon-queries.d.ts.map +1 -0
- package/dist/src/daemon/daemon-queries.js +113 -0
- package/dist/src/daemon/daemon-queries.js.map +1 -0
- package/dist/src/daemon/daemon-types.d.ts +30 -0
- package/dist/src/daemon/daemon-types.d.ts.map +1 -0
- package/dist/src/daemon/daemon-types.js +8 -0
- package/dist/src/daemon/daemon-types.js.map +1 -0
- package/dist/src/daemon/disposable-base.d.ts +49 -0
- package/dist/src/daemon/disposable-base.d.ts.map +1 -0
- package/dist/src/daemon/disposable-base.js +70 -0
- package/dist/src/daemon/disposable-base.js.map +1 -0
- package/dist/src/daemon/disposal-guard.d.ts +27 -0
- package/dist/src/daemon/disposal-guard.d.ts.map +1 -0
- package/dist/src/daemon/disposal-guard.js +58 -0
- package/dist/src/daemon/disposal-guard.js.map +1 -0
- package/dist/src/daemon/ipc-command-handler.d.ts +8 -34
- package/dist/src/daemon/ipc-command-handler.d.ts.map +1 -1
- package/dist/src/daemon/ipc-command-handler.js +14 -362
- package/dist/src/daemon/ipc-command-handler.js.map +1 -1
- package/dist/src/daemon/log-command-handlers.d.ts +19 -0
- package/dist/src/daemon/log-command-handlers.d.ts.map +1 -0
- package/dist/src/daemon/log-command-handlers.js +114 -0
- package/dist/src/daemon/log-command-handlers.js.map +1 -0
- package/dist/src/daemon/process-command-handlers.d.ts +32 -0
- package/dist/src/daemon/process-command-handlers.d.ts.map +1 -0
- package/dist/src/daemon/process-command-handlers.js +223 -0
- package/dist/src/daemon/process-command-handlers.js.map +1 -0
- package/dist/src/daemon/procman-daemon.d.ts +22 -98
- package/dist/src/daemon/procman-daemon.d.ts.map +1 -1
- package/dist/src/daemon/procman-daemon.js +107 -604
- package/dist/src/daemon/procman-daemon.js.map +1 -1
- package/dist/src/daemon/resource-manager.d.ts +6 -124
- package/dist/src/daemon/resource-manager.d.ts.map +1 -1
- package/dist/src/daemon/resource-manager.js +5 -231
- package/dist/src/daemon/resource-manager.js.map +1 -1
- package/dist/src/daemon/resource-types.d.ts +23 -0
- package/dist/src/daemon/resource-types.d.ts.map +1 -0
- package/dist/src/daemon/resource-types.js +7 -0
- package/dist/src/daemon/resource-types.js.map +1 -0
- package/dist/src/daemon/shutdown-orchestrator.d.ts +32 -0
- package/dist/src/daemon/shutdown-orchestrator.d.ts.map +1 -0
- package/dist/src/daemon/shutdown-orchestrator.js +123 -0
- package/dist/src/daemon/shutdown-orchestrator.js.map +1 -0
- package/dist/src/daemon/tracked-resources.d.ts +60 -0
- package/dist/src/daemon/tracked-resources.d.ts.map +1 -0
- package/dist/src/daemon/tracked-resources.js +124 -0
- package/dist/src/daemon/tracked-resources.js.map +1 -0
- package/dist/src/process-manager/index.d.ts +5 -1
- package/dist/src/process-manager/index.d.ts.map +1 -1
- package/dist/src/process-manager/index.js +3 -0
- package/dist/src/process-manager/index.js.map +1 -1
- package/dist/src/process-manager/interfaces/process-group.d.ts +6 -0
- package/dist/src/process-manager/interfaces/process-group.d.ts.map +1 -1
- package/dist/src/process-manager/managed-process-events.d.ts +22 -0
- package/dist/src/process-manager/managed-process-events.d.ts.map +1 -0
- package/dist/src/process-manager/managed-process-events.js +5 -0
- package/dist/src/process-manager/managed-process-events.js.map +1 -0
- package/dist/src/process-manager/managed-process-info.d.ts +11 -53
- package/dist/src/process-manager/managed-process-info.d.ts.map +1 -1
- package/dist/src/process-manager/managed-process-info.js +46 -133
- package/dist/src/process-manager/managed-process-info.js.map +1 -1
- package/dist/src/process-manager/process-batch-operations.d.ts +62 -0
- package/dist/src/process-manager/process-batch-operations.d.ts.map +1 -0
- package/dist/src/process-manager/process-batch-operations.js +80 -0
- package/dist/src/process-manager/process-batch-operations.js.map +1 -0
- package/dist/src/process-manager/process-config.d.ts +49 -0
- package/dist/src/process-manager/process-config.d.ts.map +1 -0
- package/dist/src/process-manager/process-config.js +68 -0
- package/dist/src/process-manager/process-config.js.map +1 -0
- package/dist/src/process-manager/process-event-forwarding.d.ts +18 -0
- package/dist/src/process-manager/process-event-forwarding.d.ts.map +1 -0
- package/dist/src/process-manager/process-event-forwarding.js +105 -0
- package/dist/src/process-manager/process-event-forwarding.js.map +1 -0
- package/dist/src/process-manager/process-group-manager.d.ts.map +1 -1
- package/dist/src/process-manager/process-group-manager.js +0 -1
- package/dist/src/process-manager/process-group-manager.js.map +1 -1
- package/dist/src/process-manager/process-info-queries.d.ts +48 -0
- package/dist/src/process-manager/process-info-queries.d.ts.map +1 -0
- package/dist/src/process-manager/process-info-queries.js +92 -0
- package/dist/src/process-manager/process-info-queries.js.map +1 -0
- package/dist/src/process-manager/process-manager.d.ts +5 -174
- package/dist/src/process-manager/process-manager.d.ts.map +1 -1
- package/dist/src/process-manager/process-manager.js +58 -398
- package/dist/src/process-manager/process-manager.js.map +1 -1
- package/dist/src/process-manager/process-monitoring.d.ts +80 -0
- package/dist/src/process-manager/process-monitoring.d.ts.map +1 -0
- package/dist/src/process-manager/process-monitoring.js +142 -0
- package/dist/src/process-manager/process-monitoring.js.map +1 -0
- package/dist/src/process-manager/process-statistics.d.ts +37 -0
- package/dist/src/process-manager/process-statistics.d.ts.map +1 -0
- package/dist/src/process-manager/process-statistics.js +24 -0
- package/dist/src/process-manager/process-statistics.js.map +1 -0
- package/dist/src/process-manager/restart-manager.d.ts +82 -0
- package/dist/src/process-manager/restart-manager.d.ts.map +1 -0
- package/dist/src/process-manager/restart-manager.js +150 -0
- package/dist/src/process-manager/restart-manager.js.map +1 -0
- package/dist/src/services/app-logger.d.ts +144 -0
- package/dist/src/services/app-logger.d.ts.map +1 -0
- package/dist/src/services/app-logger.js +489 -0
- package/dist/src/services/app-logger.js.map +1 -0
- package/dist/src/services/log-buffer.d.ts +35 -0
- package/dist/src/services/log-buffer.d.ts.map +1 -0
- package/dist/src/services/log-buffer.js +87 -0
- package/dist/src/services/log-buffer.js.map +1 -0
- package/dist/src/services/log-event-manager.d.ts +32 -0
- package/dist/src/services/log-event-manager.d.ts.map +1 -0
- package/dist/src/services/log-event-manager.js +31 -0
- package/dist/src/services/log-event-manager.js.map +1 -0
- package/dist/src/services/log-file-manager.d.ts +46 -0
- package/dist/src/services/log-file-manager.d.ts.map +1 -0
- package/dist/src/services/log-file-manager.js +156 -0
- package/dist/src/services/log-file-manager.js.map +1 -0
- package/dist/src/services/log-level-strategy.d.ts +19 -0
- package/dist/src/services/log-level-strategy.d.ts.map +1 -0
- package/dist/src/services/log-level-strategy.js +40 -0
- package/dist/src/services/log-level-strategy.js.map +1 -0
- package/dist/src/services/log-manager-types.d.ts +117 -0
- package/dist/src/services/log-manager-types.d.ts.map +1 -0
- package/dist/src/services/log-manager-types.js +12 -0
- package/dist/src/services/log-manager-types.js.map +1 -0
- package/dist/src/services/log-manager.d.ts +8 -35
- package/dist/src/services/log-manager.d.ts.map +1 -1
- package/dist/src/services/log-manager.js +10 -870
- package/dist/src/services/log-manager.js.map +1 -1
- package/dist/src/services/log-preprocessor.d.ts +30 -0
- package/dist/src/services/log-preprocessor.d.ts.map +1 -0
- package/dist/src/services/log-preprocessor.js +65 -0
- package/dist/src/services/log-preprocessor.js.map +1 -0
- package/dist/src/services/process-log-integration.d.ts +7 -2
- package/dist/src/services/process-log-integration.d.ts.map +1 -1
- package/dist/src/services/process-log-integration.js.map +1 -1
- package/package.json +5 -7
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graceful shutdown orchestration helpers
|
|
3
|
+
*
|
|
4
|
+
* Provides standalone functions for shutdown phases:
|
|
5
|
+
* connection draining, process termination, state preservation, and timeout handling.
|
|
6
|
+
* These are called from ProcmanDaemon's private methods.
|
|
7
|
+
*/
|
|
8
|
+
import path from 'path';
|
|
9
|
+
/**
|
|
10
|
+
* Save shutdown state to disk for recovery/analysis
|
|
11
|
+
*/
|
|
12
|
+
export async function saveShutdownState(dataDirectory, reason, processManager, getAllProcessStatusesFn, activeConnectionCount) {
|
|
13
|
+
try {
|
|
14
|
+
const state = {
|
|
15
|
+
timestamp: new Date().toISOString(),
|
|
16
|
+
reason,
|
|
17
|
+
processId: process.pid,
|
|
18
|
+
memoryUsage: process.memoryUsage(),
|
|
19
|
+
processes: processManager ? await getAllProcessStatusesFn() : [],
|
|
20
|
+
activeConnections: activeConnectionCount,
|
|
21
|
+
uptime: process.uptime(),
|
|
22
|
+
version: process.version,
|
|
23
|
+
platform: process.platform,
|
|
24
|
+
arch: process.arch,
|
|
25
|
+
};
|
|
26
|
+
const statePath = path.join(dataDirectory.getDataDir(), 'shutdown-state.json');
|
|
27
|
+
const fs = await import('fs');
|
|
28
|
+
// Ensure directory exists before writing
|
|
29
|
+
const dir = path.dirname(statePath);
|
|
30
|
+
await fs.promises.mkdir(dir, { recursive: true });
|
|
31
|
+
await fs.promises.writeFile(statePath, JSON.stringify(state, null, 2), 'utf-8');
|
|
32
|
+
console.log(`[ProcmanDaemon] Shutdown state saved to: ${statePath}`);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
// Non-critical error - log but don't fail shutdown
|
|
36
|
+
console.error('[ProcmanDaemon] Failed to save shutdown state:', error);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get count of active IPC connections
|
|
41
|
+
*/
|
|
42
|
+
export function getActiveConnectionCount(ipcServer) {
|
|
43
|
+
if (!ipcServer) {
|
|
44
|
+
return 0;
|
|
45
|
+
}
|
|
46
|
+
return ipcServer.getConnections().length;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Drain active IPC connections gracefully
|
|
50
|
+
*/
|
|
51
|
+
export async function drainActiveConnections(ipcServer) {
|
|
52
|
+
if (!ipcServer) {
|
|
53
|
+
console.log('[ProcmanDaemon] No IPC server to drain connections from');
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const connections = ipcServer.getConnections();
|
|
57
|
+
if (connections.length === 0) {
|
|
58
|
+
console.log('[ProcmanDaemon] No active connections to drain');
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
console.log(`[ProcmanDaemon] Draining ${connections.length} active connections...`);
|
|
62
|
+
// Send shutdown notice to all connections
|
|
63
|
+
ipcServer.broadcast({
|
|
64
|
+
id: `shutdown-notice-${Date.now()}`,
|
|
65
|
+
type: 'ping', // Use existing command type for compatibility
|
|
66
|
+
payload: {
|
|
67
|
+
shutdownNotice: true,
|
|
68
|
+
reason: 'graceful-shutdown',
|
|
69
|
+
gracePeriodMs: 8000, // Give clients 8 seconds to cleanup
|
|
70
|
+
},
|
|
71
|
+
timestamp: Date.now(),
|
|
72
|
+
});
|
|
73
|
+
// Wait for connections to close gracefully
|
|
74
|
+
const drainStartTime = Date.now();
|
|
75
|
+
const maxDrainTime = 8000; // 8 seconds for clients to disconnect
|
|
76
|
+
while (ipcServer.getConnections().length > 0 &&
|
|
77
|
+
Date.now() - drainStartTime < maxDrainTime) {
|
|
78
|
+
await new Promise((resolve) => setTimeout(resolve, 100)); // Check every 100ms
|
|
79
|
+
}
|
|
80
|
+
const remainingConnections = ipcServer.getConnections().length;
|
|
81
|
+
if (remainingConnections > 0) {
|
|
82
|
+
console.warn(`[ProcmanDaemon] ${remainingConnections} connections did not close gracefully, will force close`);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
console.log('[ProcmanDaemon] All connections drained successfully');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Stop all managed processes gracefully
|
|
90
|
+
*/
|
|
91
|
+
export async function stopManagedProcesses(processManager) {
|
|
92
|
+
if (!processManager) {
|
|
93
|
+
console.log('[ProcmanDaemon] No process manager to stop processes from');
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const allProcesses = processManager.getAllProcessInfo();
|
|
97
|
+
if (allProcesses.length === 0) {
|
|
98
|
+
console.log('[ProcmanDaemon] No managed processes to stop');
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
console.log(`[ProcmanDaemon] Stopping ${allProcesses.length} managed processes gracefully...`);
|
|
102
|
+
const processNames = allProcesses.map((p) => p.name);
|
|
103
|
+
await processManager.stopProcesses(processNames);
|
|
104
|
+
console.log('[ProcmanDaemon] All managed processes stopped');
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Execute a function with timeout
|
|
108
|
+
*/
|
|
109
|
+
export async function executeWithTimeout(fn, timeoutMs, phaseName) {
|
|
110
|
+
let timer;
|
|
111
|
+
try {
|
|
112
|
+
return await Promise.race([
|
|
113
|
+
fn(),
|
|
114
|
+
new Promise((_, reject) => {
|
|
115
|
+
timer = setTimeout(() => reject(new Error(`${phaseName} timed out after ${timeoutMs}ms`)), timeoutMs);
|
|
116
|
+
}),
|
|
117
|
+
]);
|
|
118
|
+
}
|
|
119
|
+
finally {
|
|
120
|
+
clearTimeout(timer);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=shutdown-orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shutdown-orchestrator.js","sourceRoot":"","sources":["../../../src/daemon/shutdown-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracked Resource Implementations
|
|
3
|
+
*
|
|
4
|
+
* Provides concrete tracked resource wrappers for timeouts, intervals,
|
|
5
|
+
* and event listeners.
|
|
6
|
+
*/
|
|
7
|
+
import { setTimeout, setInterval } from 'timers';
|
|
8
|
+
import { EventEmitter } from 'events';
|
|
9
|
+
import type { TrackedResource } from './resource-types.js';
|
|
10
|
+
import type { ResourceManager } from './resource-manager.js';
|
|
11
|
+
/**
|
|
12
|
+
* Timer resource wrapper for timeout tracking
|
|
13
|
+
*/
|
|
14
|
+
export declare class TrackedTimeout implements TrackedResource {
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly type = "timeout";
|
|
17
|
+
readonly createdAt: number;
|
|
18
|
+
readonly metadata?: Record<string, unknown>;
|
|
19
|
+
private timeoutHandle;
|
|
20
|
+
private disposed;
|
|
21
|
+
private manager?;
|
|
22
|
+
constructor(id: string, timeoutHandle: ReturnType<typeof setTimeout>, metadata?: Record<string, unknown>, manager?: ResourceManager);
|
|
23
|
+
dispose(): Promise<void>;
|
|
24
|
+
isDisposed(): boolean;
|
|
25
|
+
getHandle(): ReturnType<typeof setTimeout> | null;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Interval resource wrapper for interval tracking
|
|
29
|
+
*/
|
|
30
|
+
export declare class TrackedInterval implements TrackedResource {
|
|
31
|
+
readonly id: string;
|
|
32
|
+
readonly type = "interval";
|
|
33
|
+
readonly createdAt: number;
|
|
34
|
+
readonly metadata?: Record<string, unknown>;
|
|
35
|
+
private intervalHandle;
|
|
36
|
+
private disposed;
|
|
37
|
+
private manager?;
|
|
38
|
+
constructor(id: string, intervalHandle: ReturnType<typeof setInterval>, metadata?: Record<string, unknown>, manager?: ResourceManager);
|
|
39
|
+
dispose(): Promise<void>;
|
|
40
|
+
isDisposed(): boolean;
|
|
41
|
+
getHandle(): ReturnType<typeof setInterval> | null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Event listener resource wrapper
|
|
45
|
+
*/
|
|
46
|
+
export declare class TrackedEventListener implements TrackedResource {
|
|
47
|
+
private emitter;
|
|
48
|
+
private event;
|
|
49
|
+
private listener;
|
|
50
|
+
readonly id: string;
|
|
51
|
+
readonly type = "eventListener";
|
|
52
|
+
readonly createdAt: number;
|
|
53
|
+
readonly metadata?: Record<string, unknown>;
|
|
54
|
+
private disposed;
|
|
55
|
+
private manager?;
|
|
56
|
+
constructor(id: string, emitter: EventEmitter, event: string, listener: (...args: any[]) => void, metadata?: Record<string, unknown>, manager?: ResourceManager);
|
|
57
|
+
dispose(): Promise<void>;
|
|
58
|
+
isDisposed(): boolean;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=tracked-resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracked-resources.d.ts","sourceRoot":"","sources":["../../../src/daemon/tracked-resources.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAgB,WAAW,EAAiB,MAAM,QAAQ,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;GAEG;AACH,qBAAa,cAAe,YAAW,eAAe;IACpD,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,IAAI,aAAa;IACjC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAC,CAAkB;gBAGhC,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,EAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE,eAAe;IASrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAe9B,UAAU,IAAI,OAAO;IAIrB,SAAS,IAAI,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI;CAGlD;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,eAAe;IACrD,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,IAAI,cAAc;IAClC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAC,CAAkB;gBAGhC,EAAE,EAAE,MAAM,EACV,cAAc,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,EAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE,eAAe;IASrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAe9B,UAAU,IAAI,OAAO;IAIrB,SAAS,IAAI,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI;CAGnD;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,eAAe;IAWxD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,QAAQ;IAZlB,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,IAAI,mBAAmB;IACvC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAC,CAAkB;gBAGhC,EAAE,EAAE,MAAM,EACF,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,EAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,OAAO,CAAC,EAAE,eAAe;IAQrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB9B,UAAU,IAAI,OAAO;CAGtB"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tracked Resource Implementations
|
|
3
|
+
*
|
|
4
|
+
* Provides concrete tracked resource wrappers for timeouts, intervals,
|
|
5
|
+
* and event listeners.
|
|
6
|
+
*/
|
|
7
|
+
import { clearTimeout, clearInterval } from 'timers';
|
|
8
|
+
/**
|
|
9
|
+
* Timer resource wrapper for timeout tracking
|
|
10
|
+
*/
|
|
11
|
+
export class TrackedTimeout {
|
|
12
|
+
id;
|
|
13
|
+
type = 'timeout';
|
|
14
|
+
createdAt;
|
|
15
|
+
metadata;
|
|
16
|
+
timeoutHandle;
|
|
17
|
+
disposed = false;
|
|
18
|
+
manager;
|
|
19
|
+
constructor(id, timeoutHandle, metadata, manager) {
|
|
20
|
+
this.id = id;
|
|
21
|
+
this.timeoutHandle = timeoutHandle;
|
|
22
|
+
this.createdAt = Date.now();
|
|
23
|
+
this.metadata = metadata;
|
|
24
|
+
this.manager = manager;
|
|
25
|
+
}
|
|
26
|
+
async dispose() {
|
|
27
|
+
if (this.disposed || !this.timeoutHandle) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
clearTimeout(this.timeoutHandle);
|
|
31
|
+
this.timeoutHandle = null;
|
|
32
|
+
this.disposed = true;
|
|
33
|
+
// Auto-remove from manager
|
|
34
|
+
if (this.manager) {
|
|
35
|
+
this.manager.untrackResource(this.id);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
isDisposed() {
|
|
39
|
+
return this.disposed;
|
|
40
|
+
}
|
|
41
|
+
getHandle() {
|
|
42
|
+
return this.timeoutHandle;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Interval resource wrapper for interval tracking
|
|
47
|
+
*/
|
|
48
|
+
export class TrackedInterval {
|
|
49
|
+
id;
|
|
50
|
+
type = 'interval';
|
|
51
|
+
createdAt;
|
|
52
|
+
metadata;
|
|
53
|
+
intervalHandle;
|
|
54
|
+
disposed = false;
|
|
55
|
+
manager;
|
|
56
|
+
constructor(id, intervalHandle, metadata, manager) {
|
|
57
|
+
this.id = id;
|
|
58
|
+
this.intervalHandle = intervalHandle;
|
|
59
|
+
this.createdAt = Date.now();
|
|
60
|
+
this.metadata = metadata;
|
|
61
|
+
this.manager = manager;
|
|
62
|
+
}
|
|
63
|
+
async dispose() {
|
|
64
|
+
if (this.disposed || !this.intervalHandle) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
clearInterval(this.intervalHandle);
|
|
68
|
+
this.intervalHandle = null;
|
|
69
|
+
this.disposed = true;
|
|
70
|
+
// Auto-remove from manager
|
|
71
|
+
if (this.manager) {
|
|
72
|
+
this.manager.untrackResource(this.id);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
isDisposed() {
|
|
76
|
+
return this.disposed;
|
|
77
|
+
}
|
|
78
|
+
getHandle() {
|
|
79
|
+
return this.intervalHandle;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Event listener resource wrapper
|
|
84
|
+
*/
|
|
85
|
+
export class TrackedEventListener {
|
|
86
|
+
emitter;
|
|
87
|
+
event;
|
|
88
|
+
listener;
|
|
89
|
+
id;
|
|
90
|
+
type = 'eventListener';
|
|
91
|
+
createdAt;
|
|
92
|
+
metadata;
|
|
93
|
+
disposed = false;
|
|
94
|
+
manager;
|
|
95
|
+
constructor(id, emitter, event, listener, metadata, manager) {
|
|
96
|
+
this.emitter = emitter;
|
|
97
|
+
this.event = event;
|
|
98
|
+
this.listener = listener;
|
|
99
|
+
this.id = id;
|
|
100
|
+
this.createdAt = Date.now();
|
|
101
|
+
this.metadata = { event, ...metadata };
|
|
102
|
+
this.manager = manager;
|
|
103
|
+
}
|
|
104
|
+
async dispose() {
|
|
105
|
+
if (this.disposed) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
this.emitter.removeListener(this.event, this.listener);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// Ignore errors during cleanup
|
|
113
|
+
}
|
|
114
|
+
this.disposed = true;
|
|
115
|
+
// Auto-remove from manager
|
|
116
|
+
if (this.manager) {
|
|
117
|
+
this.manager.untrackResource(this.id);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
isDisposed() {
|
|
121
|
+
return this.disposed;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=tracked-resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracked-resources.js","sourceRoot":"","sources":["../../../src/daemon/tracked-resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,11 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export { ProcessManager } from './process-manager.js';
|
|
9
9
|
export { ManagedProcessInfo } from './managed-process-info.js';
|
|
10
|
+
export { RestartManager } from './restart-manager.js';
|
|
11
|
+
export { ProcessMonitoringData } from './process-monitoring.js';
|
|
10
12
|
export type { ProcessConfig } from './process-manager.js';
|
|
11
|
-
export type { ProcessStatistics
|
|
13
|
+
export type { ProcessStatistics } from './process-statistics.js';
|
|
14
|
+
export type { ManagedProcessEvents } from './managed-process-events.js';
|
|
15
|
+
export { createDefaultStatistics } from './process-statistics.js';
|
|
12
16
|
export type { ProcessInfo, ProcessStatus } from '../shared/process.js';
|
|
13
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/process-manager/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/process-manager/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,YAAY,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -8,4 +8,7 @@
|
|
|
8
8
|
// Main exports
|
|
9
9
|
export { ProcessManager } from './process-manager.js';
|
|
10
10
|
export { ManagedProcessInfo } from './managed-process-info.js';
|
|
11
|
+
export { RestartManager } from './restart-manager.js';
|
|
12
|
+
export { ProcessMonitoringData } from './process-monitoring.js';
|
|
13
|
+
export { createDefaultStatistics } from './process-statistics.js';
|
|
11
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/process-manager/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/process-manager/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAe;AACf,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAShE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -65,6 +65,12 @@ export interface DependencyResolutionResult {
|
|
|
65
65
|
dependent: string[][];
|
|
66
66
|
/** Processes with circular dependencies */
|
|
67
67
|
circular: string[];
|
|
68
|
+
/** Ordered startup groups (independent + dependent combined) */
|
|
69
|
+
startupOrder: string[][];
|
|
70
|
+
/** Alias for circular (for backward compatibility) */
|
|
71
|
+
circularDependencies: string[];
|
|
72
|
+
/** Processes that could not be resolved */
|
|
73
|
+
unresolvedProcesses: string[];
|
|
68
74
|
}
|
|
69
75
|
/**
|
|
70
76
|
* Interface for process group management
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-group.d.ts","sourceRoot":"","sources":["../../../../src/process-manager/interfaces/process-group.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,OAAO,EAAE,KAAK,CAAC;QACb,mBAAmB;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,gDAAgD;QAChD,OAAO,EAAE,OAAO,CAAC;QACjB,6CAA6C;QAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,kEAAkE;IAClE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iEAAiE;IACjE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"process-group.d.ts","sourceRoot":"","sources":["../../../../src/process-manager/interfaces/process-group.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ManagedProcessEvents - Events emitted by ManagedProcessInfo
|
|
3
|
+
*/
|
|
4
|
+
import { ProcessStatus } from '../shared/process.js';
|
|
5
|
+
/**
|
|
6
|
+
* Events emitted by ManagedProcessInfo
|
|
7
|
+
*/
|
|
8
|
+
export interface ManagedProcessEvents {
|
|
9
|
+
/** Process status changed */
|
|
10
|
+
'status-change': (newStatus: ProcessStatus, oldStatus: ProcessStatus) => void;
|
|
11
|
+
/** Process started */
|
|
12
|
+
start: (pid: number) => void;
|
|
13
|
+
/** Process stopped */
|
|
14
|
+
stop: (exitCode: number | null) => void;
|
|
15
|
+
/** Process restarted */
|
|
16
|
+
restart: (restartCount: number) => void;
|
|
17
|
+
/** Process memory limit exceeded */
|
|
18
|
+
'memory-limit': (memoryUsage: number, limit: number) => void;
|
|
19
|
+
/** Process error occurred */
|
|
20
|
+
error: (error: Error) => void;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=managed-process-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed-process-events.d.ts","sourceRoot":"","sources":["../../../src/process-manager/managed-process-events.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,6BAA6B;IAC7B,eAAe,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9E,sBAAsB;IACtB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,sBAAsB;IACtB,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACxC,wBAAwB;IACxB,OAAO,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,oCAAoC;IACpC,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,6BAA6B;IAC7B,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed-process-events.js","sourceRoot":"","sources":["../../../src/process-manager/managed-process-events.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -3,56 +3,18 @@
|
|
|
3
3
|
*
|
|
4
4
|
* This class manages the information and statistics for a single process,
|
|
5
5
|
* including uptime tracking, restart counting, and state change recording.
|
|
6
|
+
*
|
|
7
|
+
* Restart logic is delegated to RestartManager.
|
|
8
|
+
* Monitoring data is delegated to ProcessMonitoringData.
|
|
6
9
|
*/
|
|
7
10
|
import { EventEmitter } from 'events';
|
|
8
11
|
import { ProcessInfo, ProcessStatus, ProcessStateChange, MemorySample, CPUSample, PersistedManagedProcessInfo } from '../shared/process.js';
|
|
9
|
-
import { ProcessConfig } from './process-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
startedAt: number | null;
|
|
16
|
-
/** Last status change timestamp */
|
|
17
|
-
lastStatusChange: number;
|
|
18
|
-
/** Total restart count */
|
|
19
|
-
restarts: number;
|
|
20
|
-
/** Last restart timestamp */
|
|
21
|
-
lastRestart: number | null;
|
|
22
|
-
/** Memory usage history (last 10 measurements) - DEPRECATED: use memoryHistory instead */
|
|
23
|
-
memoryHistory: number[];
|
|
24
|
-
/** CPU usage history (last 10 measurements) - DEPRECATED: use cpuHistory instead */
|
|
25
|
-
cpuHistory: number[];
|
|
26
|
-
/** Current memory usage in bytes */
|
|
27
|
-
currentMemory: number;
|
|
28
|
-
/** Current CPU usage percentage */
|
|
29
|
-
currentCpu: number;
|
|
30
|
-
/** Consecutive failure count for restart control */
|
|
31
|
-
consecutiveFailures: number;
|
|
32
|
-
/** Timestamp of first failure in current window */
|
|
33
|
-
firstFailureTime: number | null;
|
|
34
|
-
/** Flag to indicate auto-restart is enabled */
|
|
35
|
-
autoRestartEnabled: boolean;
|
|
36
|
-
/** Next restart delay in milliseconds */
|
|
37
|
-
nextRestartDelay: number;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Events emitted by ManagedProcessInfo
|
|
41
|
-
*/
|
|
42
|
-
export interface ManagedProcessEvents {
|
|
43
|
-
/** Process status changed */
|
|
44
|
-
'status-change': (newStatus: ProcessStatus, oldStatus: ProcessStatus) => void;
|
|
45
|
-
/** Process started */
|
|
46
|
-
start: (pid: number) => void;
|
|
47
|
-
/** Process stopped */
|
|
48
|
-
stop: (exitCode: number | null) => void;
|
|
49
|
-
/** Process restarted */
|
|
50
|
-
restart: (restartCount: number) => void;
|
|
51
|
-
/** Process memory limit exceeded */
|
|
52
|
-
'memory-limit': (memoryUsage: number, limit: number) => void;
|
|
53
|
-
/** Process error occurred */
|
|
54
|
-
error: (error: Error) => void;
|
|
55
|
-
}
|
|
12
|
+
import { ProcessConfig } from './process-config.js';
|
|
13
|
+
export { ProcessStatistics, createDefaultStatistics, } from './process-statistics.js';
|
|
14
|
+
export { ManagedProcessEvents } from './managed-process-events.js';
|
|
15
|
+
export { RestartManager } from './restart-manager.js';
|
|
16
|
+
export { ProcessMonitoringData } from './process-monitoring.js';
|
|
17
|
+
import { ProcessStatistics } from './process-statistics.js';
|
|
56
18
|
/**
|
|
57
19
|
* Manages information and statistics for a single process
|
|
58
20
|
*/
|
|
@@ -61,9 +23,9 @@ export declare class ManagedProcessInfo extends EventEmitter {
|
|
|
61
23
|
private status;
|
|
62
24
|
private pid;
|
|
63
25
|
private statistics;
|
|
26
|
+
private readonly restartManager;
|
|
27
|
+
private readonly monitoringData;
|
|
64
28
|
private stateHistory;
|
|
65
|
-
private memoryHistoryDetailed;
|
|
66
|
-
private cpuHistoryDetailed;
|
|
67
29
|
private lastCrashTime;
|
|
68
30
|
constructor(config: ProcessConfig);
|
|
69
31
|
/**
|
|
@@ -242,10 +204,6 @@ export declare class ManagedProcessInfo extends EventEmitter {
|
|
|
242
204
|
* @returns Next restart delay in milliseconds
|
|
243
205
|
*/
|
|
244
206
|
getNextRestartDelay(): number;
|
|
245
|
-
/**
|
|
246
|
-
* Calculate next restart delay using exponential backoff
|
|
247
|
-
*/
|
|
248
|
-
private calculateNextRestartDelay;
|
|
249
207
|
/**
|
|
250
208
|
* Check if restart should be attempted based on failure count
|
|
251
209
|
* @returns True if restart should be attempted
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managed-process-info.d.ts","sourceRoot":"","sources":["../../../src/process-manager/managed-process-info.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"managed-process-info.d.ts","sourceRoot":"","sources":["../../../src/process-manager/managed-process-info.ts"],"names":[],"mappings":"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"}
|