@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.
Files changed (315) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +149 -0
  3. package/dist/src/cli/commands/clear-log.d.ts +10 -0
  4. package/dist/src/cli/commands/clear-log.d.ts.map +1 -0
  5. package/dist/src/cli/commands/clear-log.js +77 -0
  6. package/dist/src/cli/commands/clear-log.js.map +1 -0
  7. package/dist/src/cli/commands/exit.d.ts +10 -0
  8. package/dist/src/cli/commands/exit.d.ts.map +1 -0
  9. package/dist/src/cli/commands/exit.js +65 -0
  10. package/dist/src/cli/commands/exit.js.map +1 -0
  11. package/dist/src/cli/commands/help.d.ts +10 -0
  12. package/dist/src/cli/commands/help.d.ts.map +1 -0
  13. package/dist/src/cli/commands/help.js +340 -0
  14. package/dist/src/cli/commands/help.js.map +1 -0
  15. package/dist/src/cli/commands/list.d.ts +11 -0
  16. package/dist/src/cli/commands/list.d.ts.map +1 -0
  17. package/dist/src/cli/commands/list.js +130 -0
  18. package/dist/src/cli/commands/list.js.map +1 -0
  19. package/dist/src/cli/commands/load.d.ts +11 -0
  20. package/dist/src/cli/commands/load.d.ts.map +1 -0
  21. package/dist/src/cli/commands/load.js +250 -0
  22. package/dist/src/cli/commands/load.js.map +1 -0
  23. package/dist/src/cli/commands/log.d.ts +18 -0
  24. package/dist/src/cli/commands/log.d.ts.map +1 -0
  25. package/dist/src/cli/commands/log.js +282 -0
  26. package/dist/src/cli/commands/log.js.map +1 -0
  27. package/dist/src/cli/commands/restart.d.ts +11 -0
  28. package/dist/src/cli/commands/restart.d.ts.map +1 -0
  29. package/dist/src/cli/commands/restart.js +99 -0
  30. package/dist/src/cli/commands/restart.js.map +1 -0
  31. package/dist/src/cli/commands/start.d.ts +11 -0
  32. package/dist/src/cli/commands/start.d.ts.map +1 -0
  33. package/dist/src/cli/commands/start.js +105 -0
  34. package/dist/src/cli/commands/start.js.map +1 -0
  35. package/dist/src/cli/commands/stop.d.ts +12 -0
  36. package/dist/src/cli/commands/stop.d.ts.map +1 -0
  37. package/dist/src/cli/commands/stop.js +105 -0
  38. package/dist/src/cli/commands/stop.js.map +1 -0
  39. package/dist/src/cli/index.d.ts +3 -0
  40. package/dist/src/cli/index.d.ts.map +1 -0
  41. package/dist/src/cli/index.js +28 -0
  42. package/dist/src/cli/index.js.map +1 -0
  43. package/dist/src/cli/parser.d.ts +14 -0
  44. package/dist/src/cli/parser.d.ts.map +1 -0
  45. package/dist/src/cli/parser.js +131 -0
  46. package/dist/src/cli/parser.js.map +1 -0
  47. package/dist/src/cli/signal-handler.d.ts +51 -0
  48. package/dist/src/cli/signal-handler.d.ts.map +1 -0
  49. package/dist/src/cli/signal-handler.js +129 -0
  50. package/dist/src/cli/signal-handler.js.map +1 -0
  51. package/dist/src/cli/utils/error-handler.d.ts +39 -0
  52. package/dist/src/cli/utils/error-handler.d.ts.map +1 -0
  53. package/dist/src/cli/utils/error-handler.js +200 -0
  54. package/dist/src/cli/utils/error-handler.js.map +1 -0
  55. package/dist/src/cli/utils/error-utils.d.ts +16 -0
  56. package/dist/src/cli/utils/error-utils.d.ts.map +1 -0
  57. package/dist/src/cli/utils/error-utils.js +48 -0
  58. package/dist/src/cli/utils/error-utils.js.map +1 -0
  59. package/dist/src/cli/utils/ipc-client.d.ts +80 -0
  60. package/dist/src/cli/utils/ipc-client.d.ts.map +1 -0
  61. package/dist/src/cli/utils/ipc-client.js +275 -0
  62. package/dist/src/cli/utils/ipc-client.js.map +1 -0
  63. package/dist/src/config/config-loader.d.ts +74 -0
  64. package/dist/src/config/config-loader.d.ts.map +1 -0
  65. package/dist/src/config/config-loader.js +229 -0
  66. package/dist/src/config/config-loader.js.map +1 -0
  67. package/dist/src/config/config-normalizer.d.ts +135 -0
  68. package/dist/src/config/config-normalizer.d.ts.map +1 -0
  69. package/dist/src/config/config-normalizer.js +309 -0
  70. package/dist/src/config/config-normalizer.js.map +1 -0
  71. package/dist/src/config/config-reporter.d.ts +183 -0
  72. package/dist/src/config/config-reporter.d.ts.map +1 -0
  73. package/dist/src/config/config-reporter.js +311 -0
  74. package/dist/src/config/config-reporter.js.map +1 -0
  75. package/dist/src/config/config-validator.d.ts +163 -0
  76. package/dist/src/config/config-validator.d.ts.map +1 -0
  77. package/dist/src/config/config-validator.js +489 -0
  78. package/dist/src/config/config-validator.js.map +1 -0
  79. package/dist/src/config/config-watcher.d.ts +161 -0
  80. package/dist/src/config/config-watcher.d.ts.map +1 -0
  81. package/dist/src/config/config-watcher.js +245 -0
  82. package/dist/src/config/config-watcher.js.map +1 -0
  83. package/dist/src/config/index.d.ts +36 -0
  84. package/dist/src/config/index.d.ts.map +1 -0
  85. package/dist/src/config/index.js +41 -0
  86. package/dist/src/config/index.js.map +1 -0
  87. package/dist/src/config/secure-config-loader.d.ts +77 -0
  88. package/dist/src/config/secure-config-loader.d.ts.map +1 -0
  89. package/dist/src/config/secure-config-loader.js +326 -0
  90. package/dist/src/config/secure-config-loader.js.map +1 -0
  91. package/dist/src/daemon/base-socket-connection.d.ts +66 -0
  92. package/dist/src/daemon/base-socket-connection.d.ts.map +1 -0
  93. package/dist/src/daemon/base-socket-connection.js +192 -0
  94. package/dist/src/daemon/base-socket-connection.js.map +1 -0
  95. package/dist/src/daemon/component-manager.d.ts +180 -0
  96. package/dist/src/daemon/component-manager.d.ts.map +1 -0
  97. package/dist/src/daemon/component-manager.js +794 -0
  98. package/dist/src/daemon/component-manager.js.map +1 -0
  99. package/dist/src/daemon/crash-recovery.d.ts +71 -0
  100. package/dist/src/daemon/crash-recovery.d.ts.map +1 -0
  101. package/dist/src/daemon/crash-recovery.js +282 -0
  102. package/dist/src/daemon/crash-recovery.js.map +1 -0
  103. package/dist/src/daemon/daemon-main.d.ts +18 -0
  104. package/dist/src/daemon/daemon-main.d.ts.map +1 -0
  105. package/dist/src/daemon/daemon-main.js +160 -0
  106. package/dist/src/daemon/daemon-main.js.map +1 -0
  107. package/dist/src/daemon/daemon-state-manager.d.ts +111 -0
  108. package/dist/src/daemon/daemon-state-manager.d.ts.map +1 -0
  109. package/dist/src/daemon/daemon-state-manager.js +194 -0
  110. package/dist/src/daemon/daemon-state-manager.js.map +1 -0
  111. package/dist/src/daemon/data-directory.d.ts +51 -0
  112. package/dist/src/daemon/data-directory.d.ts.map +1 -0
  113. package/dist/src/daemon/data-directory.js +136 -0
  114. package/dist/src/daemon/data-directory.js.map +1 -0
  115. package/dist/src/daemon/index.d.ts +20 -0
  116. package/dist/src/daemon/index.d.ts.map +1 -0
  117. package/dist/src/daemon/index.js +24 -0
  118. package/dist/src/daemon/index.js.map +1 -0
  119. package/dist/src/daemon/ipc-client-base.d.ts +153 -0
  120. package/dist/src/daemon/ipc-client-base.d.ts.map +1 -0
  121. package/dist/src/daemon/ipc-client-base.js +476 -0
  122. package/dist/src/daemon/ipc-client-base.js.map +1 -0
  123. package/dist/src/daemon/ipc-command-handler.d.ts +107 -0
  124. package/dist/src/daemon/ipc-command-handler.d.ts.map +1 -0
  125. package/dist/src/daemon/ipc-command-handler.js +483 -0
  126. package/dist/src/daemon/ipc-command-handler.js.map +1 -0
  127. package/dist/src/daemon/ipc-factory.d.ts +92 -0
  128. package/dist/src/daemon/ipc-factory.d.ts.map +1 -0
  129. package/dist/src/daemon/ipc-factory.js +210 -0
  130. package/dist/src/daemon/ipc-factory.js.map +1 -0
  131. package/dist/src/daemon/ipc-server-base.d.ts +158 -0
  132. package/dist/src/daemon/ipc-server-base.d.ts.map +1 -0
  133. package/dist/src/daemon/ipc-server-base.js +491 -0
  134. package/dist/src/daemon/ipc-server-base.js.map +1 -0
  135. package/dist/src/daemon/message-protocol.d.ts +132 -0
  136. package/dist/src/daemon/message-protocol.d.ts.map +1 -0
  137. package/dist/src/daemon/message-protocol.js +252 -0
  138. package/dist/src/daemon/message-protocol.js.map +1 -0
  139. package/dist/src/daemon/named-pipe-client.d.ts +61 -0
  140. package/dist/src/daemon/named-pipe-client.d.ts.map +1 -0
  141. package/dist/src/daemon/named-pipe-client.js +221 -0
  142. package/dist/src/daemon/named-pipe-client.js.map +1 -0
  143. package/dist/src/daemon/named-pipe-server.d.ts +40 -0
  144. package/dist/src/daemon/named-pipe-server.d.ts.map +1 -0
  145. package/dist/src/daemon/named-pipe-server.js +102 -0
  146. package/dist/src/daemon/named-pipe-server.js.map +1 -0
  147. package/dist/src/daemon/orphan-detector.d.ts +66 -0
  148. package/dist/src/daemon/orphan-detector.d.ts.map +1 -0
  149. package/dist/src/daemon/orphan-detector.js +208 -0
  150. package/dist/src/daemon/orphan-detector.js.map +1 -0
  151. package/dist/src/daemon/pid-manager.d.ts +49 -0
  152. package/dist/src/daemon/pid-manager.d.ts.map +1 -0
  153. package/dist/src/daemon/pid-manager.js +110 -0
  154. package/dist/src/daemon/pid-manager.js.map +1 -0
  155. package/dist/src/daemon/procman-daemon.d.ts +188 -0
  156. package/dist/src/daemon/procman-daemon.d.ts.map +1 -0
  157. package/dist/src/daemon/procman-daemon.js +802 -0
  158. package/dist/src/daemon/procman-daemon.js.map +1 -0
  159. package/dist/src/daemon/reconnection-system.d.ts +113 -0
  160. package/dist/src/daemon/reconnection-system.d.ts.map +1 -0
  161. package/dist/src/daemon/reconnection-system.js +223 -0
  162. package/dist/src/daemon/reconnection-system.js.map +1 -0
  163. package/dist/src/daemon/resource-manager.d.ts +204 -0
  164. package/dist/src/daemon/resource-manager.d.ts.map +1 -0
  165. package/dist/src/daemon/resource-manager.js +423 -0
  166. package/dist/src/daemon/resource-manager.js.map +1 -0
  167. package/dist/src/daemon/signal-handler.d.ts +58 -0
  168. package/dist/src/daemon/signal-handler.d.ts.map +1 -0
  169. package/dist/src/daemon/signal-handler.js +142 -0
  170. package/dist/src/daemon/signal-handler.js.map +1 -0
  171. package/dist/src/daemon/simple-resource-manager.d.ts +95 -0
  172. package/dist/src/daemon/simple-resource-manager.d.ts.map +1 -0
  173. package/dist/src/daemon/simple-resource-manager.js +180 -0
  174. package/dist/src/daemon/simple-resource-manager.js.map +1 -0
  175. package/dist/src/daemon/unix-socket-client.d.ts +69 -0
  176. package/dist/src/daemon/unix-socket-client.d.ts.map +1 -0
  177. package/dist/src/daemon/unix-socket-client.js +313 -0
  178. package/dist/src/daemon/unix-socket-client.js.map +1 -0
  179. package/dist/src/daemon/unix-socket-server.d.ts +61 -0
  180. package/dist/src/daemon/unix-socket-server.d.ts.map +1 -0
  181. package/dist/src/daemon/unix-socket-server.js +262 -0
  182. package/dist/src/daemon/unix-socket-server.js.map +1 -0
  183. package/dist/src/daemon/zombie-reaper.d.ts +83 -0
  184. package/dist/src/daemon/zombie-reaper.d.ts.map +1 -0
  185. package/dist/src/daemon/zombie-reaper.js +278 -0
  186. package/dist/src/daemon/zombie-reaper.js.map +1 -0
  187. package/dist/src/process-manager/index.d.ts +13 -0
  188. package/dist/src/process-manager/index.d.ts.map +1 -0
  189. package/dist/src/process-manager/index.js +11 -0
  190. package/dist/src/process-manager/index.js.map +1 -0
  191. package/dist/src/process-manager/interfaces/index.d.ts +31 -0
  192. package/dist/src/process-manager/interfaces/index.d.ts.map +1 -0
  193. package/dist/src/process-manager/interfaces/index.js +14 -0
  194. package/dist/src/process-manager/interfaces/index.js.map +1 -0
  195. package/dist/src/process-manager/interfaces/process-group.d.ts +200 -0
  196. package/dist/src/process-manager/interfaces/process-group.d.ts.map +1 -0
  197. package/dist/src/process-manager/interfaces/process-group.js +10 -0
  198. package/dist/src/process-manager/interfaces/process-group.js.map +1 -0
  199. package/dist/src/process-manager/interfaces/process-lifecycle.d.ts +97 -0
  200. package/dist/src/process-manager/interfaces/process-lifecycle.d.ts.map +1 -0
  201. package/dist/src/process-manager/interfaces/process-lifecycle.js +10 -0
  202. package/dist/src/process-manager/interfaces/process-lifecycle.js.map +1 -0
  203. package/dist/src/process-manager/interfaces/process-monitor.d.ts +118 -0
  204. package/dist/src/process-manager/interfaces/process-monitor.d.ts.map +1 -0
  205. package/dist/src/process-manager/interfaces/process-monitor.js +10 -0
  206. package/dist/src/process-manager/interfaces/process-monitor.js.map +1 -0
  207. package/dist/src/process-manager/interfaces/process-persistence.d.ts +125 -0
  208. package/dist/src/process-manager/interfaces/process-persistence.d.ts.map +1 -0
  209. package/dist/src/process-manager/interfaces/process-persistence.js +10 -0
  210. package/dist/src/process-manager/interfaces/process-persistence.js.map +1 -0
  211. package/dist/src/process-manager/managed-process-info.d.ts +307 -0
  212. package/dist/src/process-manager/managed-process-info.d.ts.map +1 -0
  213. package/dist/src/process-manager/managed-process-info.js +650 -0
  214. package/dist/src/process-manager/managed-process-info.js.map +1 -0
  215. package/dist/src/process-manager/process-group-manager.d.ts +103 -0
  216. package/dist/src/process-manager/process-group-manager.d.ts.map +1 -0
  217. package/dist/src/process-manager/process-group-manager.js +400 -0
  218. package/dist/src/process-manager/process-group-manager.js.map +1 -0
  219. package/dist/src/process-manager/process-lifecycle-manager.d.ts +68 -0
  220. package/dist/src/process-manager/process-lifecycle-manager.d.ts.map +1 -0
  221. package/dist/src/process-manager/process-lifecycle-manager.js +372 -0
  222. package/dist/src/process-manager/process-lifecycle-manager.js.map +1 -0
  223. package/dist/src/process-manager/process-manager.d.ts +296 -0
  224. package/dist/src/process-manager/process-manager.d.ts.map +1 -0
  225. package/dist/src/process-manager/process-manager.js +659 -0
  226. package/dist/src/process-manager/process-manager.js.map +1 -0
  227. package/dist/src/process-manager/process-monitor.d.ts +95 -0
  228. package/dist/src/process-manager/process-monitor.d.ts.map +1 -0
  229. package/dist/src/process-manager/process-monitor.js +357 -0
  230. package/dist/src/process-manager/process-monitor.js.map +1 -0
  231. package/dist/src/process-manager/process-persistence.d.ts +68 -0
  232. package/dist/src/process-manager/process-persistence.d.ts.map +1 -0
  233. package/dist/src/process-manager/process-persistence.js +364 -0
  234. package/dist/src/process-manager/process-persistence.js.map +1 -0
  235. package/dist/src/process-manager/utils/mutex.d.ts +82 -0
  236. package/dist/src/process-manager/utils/mutex.d.ts.map +1 -0
  237. package/dist/src/process-manager/utils/mutex.js +172 -0
  238. package/dist/src/process-manager/utils/mutex.js.map +1 -0
  239. package/dist/src/services/index.d.ts +8 -0
  240. package/dist/src/services/index.d.ts.map +1 -0
  241. package/dist/src/services/index.js +8 -0
  242. package/dist/src/services/index.js.map +1 -0
  243. package/dist/src/services/log-manager-config.d.ts +65 -0
  244. package/dist/src/services/log-manager-config.d.ts.map +1 -0
  245. package/dist/src/services/log-manager-config.js +145 -0
  246. package/dist/src/services/log-manager-config.js.map +1 -0
  247. package/dist/src/services/log-manager-factory.d.ts +134 -0
  248. package/dist/src/services/log-manager-factory.d.ts.map +1 -0
  249. package/dist/src/services/log-manager-factory.js +203 -0
  250. package/dist/src/services/log-manager-factory.js.map +1 -0
  251. package/dist/src/services/log-manager.d.ts +170 -0
  252. package/dist/src/services/log-manager.d.ts.map +1 -0
  253. package/dist/src/services/log-manager.js +1199 -0
  254. package/dist/src/services/log-manager.js.map +1 -0
  255. package/dist/src/services/log-path-validator.d.ts +121 -0
  256. package/dist/src/services/log-path-validator.d.ts.map +1 -0
  257. package/dist/src/services/log-path-validator.js +302 -0
  258. package/dist/src/services/log-path-validator.js.map +1 -0
  259. package/dist/src/services/process-log-integration.d.ts +62 -0
  260. package/dist/src/services/process-log-integration.d.ts.map +1 -0
  261. package/dist/src/services/process-log-integration.js +157 -0
  262. package/dist/src/services/process-log-integration.js.map +1 -0
  263. package/dist/src/shared/config.d.ts +67 -0
  264. package/dist/src/shared/config.d.ts.map +1 -0
  265. package/dist/src/shared/config.js +92 -0
  266. package/dist/src/shared/config.js.map +1 -0
  267. package/dist/src/shared/constants-streaming.d.ts +39 -0
  268. package/dist/src/shared/constants-streaming.d.ts.map +1 -0
  269. package/dist/src/shared/constants-streaming.js +39 -0
  270. package/dist/src/shared/constants-streaming.js.map +1 -0
  271. package/dist/src/shared/constants.d.ts +60 -0
  272. package/dist/src/shared/constants.d.ts.map +1 -0
  273. package/dist/src/shared/constants.js +71 -0
  274. package/dist/src/shared/constants.js.map +1 -0
  275. package/dist/src/shared/errors.d.ts +70 -0
  276. package/dist/src/shared/errors.d.ts.map +1 -0
  277. package/dist/src/shared/errors.js +101 -0
  278. package/dist/src/shared/errors.js.map +1 -0
  279. package/dist/src/shared/index.d.ts +14 -0
  280. package/dist/src/shared/index.d.ts.map +1 -0
  281. package/dist/src/shared/index.js +22 -0
  282. package/dist/src/shared/index.js.map +1 -0
  283. package/dist/src/shared/ipc.d.ts +402 -0
  284. package/dist/src/shared/ipc.d.ts.map +1 -0
  285. package/dist/src/shared/ipc.js +85 -0
  286. package/dist/src/shared/ipc.js.map +1 -0
  287. package/dist/src/shared/logger.d.ts +38 -0
  288. package/dist/src/shared/logger.d.ts.map +1 -0
  289. package/dist/src/shared/logger.js +139 -0
  290. package/dist/src/shared/logger.js.map +1 -0
  291. package/dist/src/shared/logs.d.ts +53 -0
  292. package/dist/src/shared/logs.d.ts.map +1 -0
  293. package/dist/src/shared/logs.js +26 -0
  294. package/dist/src/shared/logs.js.map +1 -0
  295. package/dist/src/shared/process.d.ts +102 -0
  296. package/dist/src/shared/process.d.ts.map +1 -0
  297. package/dist/src/shared/process.js +55 -0
  298. package/dist/src/shared/process.js.map +1 -0
  299. package/dist/src/shared/types.d.ts +15 -0
  300. package/dist/src/shared/types.d.ts.map +1 -0
  301. package/dist/src/shared/types.js +8 -0
  302. package/dist/src/shared/types.js.map +1 -0
  303. package/dist/src/types/index.d.ts +19 -0
  304. package/dist/src/types/index.d.ts.map +1 -0
  305. package/dist/src/types/index.js +5 -0
  306. package/dist/src/types/index.js.map +1 -0
  307. package/dist/src/utils/event-cleanup.d.ts +30 -0
  308. package/dist/src/utils/event-cleanup.d.ts.map +1 -0
  309. package/dist/src/utils/event-cleanup.js +32 -0
  310. package/dist/src/utils/event-cleanup.js.map +1 -0
  311. package/dist/src/utils/memory/memory-monitor.d.ts +126 -0
  312. package/dist/src/utils/memory/memory-monitor.d.ts.map +1 -0
  313. package/dist/src/utils/memory/memory-monitor.js +246 -0
  314. package/dist/src/utils/memory/memory-monitor.js.map +1 -0
  315. package/package.json +74 -0
@@ -0,0 +1,103 @@
1
+ /**
2
+ * ProcessGroupManager - Handles process group management and batch operations
3
+ *
4
+ * This class is responsible for:
5
+ * - Namespace-based process grouping
6
+ * - Batch operations on multiple processes
7
+ * - Dependency management foundation
8
+ */
9
+ import { EventEmitter } from 'events';
10
+ import { ProcessGroupManager as IProcessGroupManager, NamespaceStatus, BatchOperationResult, ProcessDependency, DependencyResolutionResult } from './interfaces/process-group.js';
11
+ import { ProcessInfo } from '../shared/process.js';
12
+ import { ManagedProcessInfo } from './managed-process-info.js';
13
+ /**
14
+ * ProcessGroupManager implementation (simplified for architecture demo)
15
+ */
16
+ export declare class ProcessGroupManagerImpl extends EventEmitter implements IProcessGroupManager {
17
+ private readonly processes;
18
+ private readonly dependencies;
19
+ private readonly processLifecycle;
20
+ constructor(processes: Map<string, ManagedProcessInfo>, processLifecycle: {
21
+ startProcess: (name: string) => Promise<{
22
+ success: boolean;
23
+ error?: string;
24
+ }>;
25
+ stopProcess: (name: string) => Promise<{
26
+ success: boolean;
27
+ error?: string;
28
+ }>;
29
+ restartProcess: (name: string) => Promise<{
30
+ success: boolean;
31
+ error?: string;
32
+ }>;
33
+ });
34
+ /**
35
+ * Get all available namespaces
36
+ */
37
+ getNamespaces(): string[];
38
+ /**
39
+ * Get status summary for a namespace
40
+ */
41
+ getNamespaceStatus(namespace: string): NamespaceStatus;
42
+ /**
43
+ * Get all processes in a namespace
44
+ */
45
+ getProcessesByNamespace(namespace: string): ProcessInfo[];
46
+ /**
47
+ * Get process names in a namespace
48
+ */
49
+ getProcessNamesByNamespace(namespace: string): string[];
50
+ /**
51
+ * Start all processes in a namespace
52
+ */
53
+ startNamespace(namespace: string): Promise<BatchOperationResult>;
54
+ /**
55
+ * Stop all processes in a namespace
56
+ */
57
+ stopNamespace(namespace: string): Promise<BatchOperationResult>;
58
+ /**
59
+ * Restart all processes in a namespace
60
+ */
61
+ restartNamespace(namespace: string): Promise<BatchOperationResult>;
62
+ /**
63
+ * Start multiple processes
64
+ */
65
+ startProcesses(names: string[]): Promise<BatchOperationResult>;
66
+ /**
67
+ * Stop multiple processes
68
+ */
69
+ stopProcesses(names: string[]): Promise<BatchOperationResult>;
70
+ /**
71
+ * Restart multiple processes
72
+ */
73
+ restartProcesses(names: string[]): Promise<BatchOperationResult>;
74
+ /**
75
+ * Configure a process dependency
76
+ */
77
+ configureDependency(dependency: ProcessDependency): void;
78
+ /**
79
+ * Remove a process dependency
80
+ */
81
+ removeDependency(name: string): void;
82
+ /**
83
+ * Get dependency configuration for a process
84
+ */
85
+ getDependency(name: string): ProcessDependency | undefined;
86
+ /**
87
+ * Get all dependency configurations
88
+ */
89
+ getAllDependencies(): ProcessDependency[];
90
+ /**
91
+ * Resolve dependencies for a set of processes
92
+ */
93
+ resolveDependencies(names: string[]): DependencyResolutionResult;
94
+ /**
95
+ * Start processes with dependency resolution
96
+ */
97
+ startProcessesWithDependencies(names: string[]): Promise<BatchOperationResult>;
98
+ /**
99
+ * Clean up resources
100
+ */
101
+ cleanup(): void;
102
+ }
103
+ //# sourceMappingURL=process-group-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-group-manager.d.ts","sourceRoot":"","sources":["../../../src/process-manager/process-group-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,mBAAmB,IAAI,oBAAoB,EAC3C,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,EAC3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;GAEG;AACH,qBAAa,uBACX,SAAQ,YACR,YAAW,oBAAoB;IAE/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAC9D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAU/B;gBAGA,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC1C,gBAAgB,EAAE;QAChB,YAAY,EAAE,CACZ,IAAI,EAAE,MAAM,KACT,OAAO,CAAC;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACnD,WAAW,EAAE,CACX,IAAI,EAAE,MAAM,KACT,OAAO,CAAC;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACnD,cAAc,EAAE,CACd,IAAI,EAAE,MAAM,KACT,OAAO,CAAC;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACpD;IAQH;;OAEG;IACI,aAAa,IAAI,MAAM,EAAE;IAQhC;;OAEG;IACI,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe;IAqC7D;;OAEG;IACI,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE;IAMhE;;OAEG;IACI,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAM9D;;OAEG;IACU,cAAc,CACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,CAAC;IAchC;;OAEG;IACU,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAc5E;;OAEG;IACU,gBAAgB,CAC3B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,CAAC;IAchC;;OAEG;IACU,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAgD3E;;OAEG;IACU,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAgD1E;;OAEG;IACU,gBAAgB,CAC3B,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,oBAAoB,CAAC;IAgDhC;;OAEG;IACI,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAmB/D;;OAEG;IACI,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3C;;OAEG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIjE;;OAEG;IACI,kBAAkB,IAAI,iBAAiB,EAAE;IAIhD;;OAEG;IACI,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,0BAA0B;IAmGvE;;OAEG;IACU,8BAA8B,CACzC,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,oBAAoB,CAAC;IAKhC;;OAEG;IACI,OAAO,IAAI,IAAI;CAIvB"}
@@ -0,0 +1,400 @@
1
+ /**
2
+ * ProcessGroupManager - Handles process group management and batch operations
3
+ *
4
+ * This class is responsible for:
5
+ * - Namespace-based process grouping
6
+ * - Batch operations on multiple processes
7
+ * - Dependency management foundation
8
+ */
9
+ import { EventEmitter } from 'events';
10
+ /**
11
+ * ProcessGroupManager implementation (simplified for architecture demo)
12
+ */
13
+ export class ProcessGroupManagerImpl extends EventEmitter {
14
+ processes;
15
+ dependencies;
16
+ processLifecycle;
17
+ constructor(processes, processLifecycle) {
18
+ super();
19
+ this.processes = processes;
20
+ this.dependencies = new Map();
21
+ this.processLifecycle = processLifecycle;
22
+ }
23
+ /**
24
+ * Get all available namespaces
25
+ */
26
+ getNamespaces() {
27
+ const namespaces = new Set();
28
+ for (const managedProcess of Array.from(this.processes.values())) {
29
+ namespaces.add(managedProcess.getNamespace());
30
+ }
31
+ return Array.from(namespaces).sort();
32
+ }
33
+ /**
34
+ * Get status summary for a namespace
35
+ */
36
+ getNamespaceStatus(namespace) {
37
+ const processes = this.getProcessesByNamespace(namespace);
38
+ let total = 0;
39
+ let online = 0;
40
+ let stopped = 0;
41
+ let errored = 0;
42
+ let other = 0;
43
+ for (const process of processes) {
44
+ total++;
45
+ switch (process.status) {
46
+ case 'online':
47
+ online++;
48
+ break;
49
+ case 'stopped':
50
+ stopped++;
51
+ break;
52
+ case 'errored':
53
+ errored++;
54
+ break;
55
+ default:
56
+ other++;
57
+ break;
58
+ }
59
+ }
60
+ return {
61
+ namespace,
62
+ total,
63
+ online,
64
+ stopped,
65
+ errored,
66
+ other,
67
+ };
68
+ }
69
+ /**
70
+ * Get all processes in a namespace
71
+ */
72
+ getProcessesByNamespace(namespace) {
73
+ return Array.from(this.processes.values())
74
+ .filter((managedProcess) => managedProcess.getNamespace() === namespace)
75
+ .map((managedProcess) => managedProcess.toProcessInfo());
76
+ }
77
+ /**
78
+ * Get process names in a namespace
79
+ */
80
+ getProcessNamesByNamespace(namespace) {
81
+ return Array.from(this.processes.values())
82
+ .filter((managedProcess) => managedProcess.getNamespace() === namespace)
83
+ .map((managedProcess) => managedProcess.getName());
84
+ }
85
+ /**
86
+ * Start all processes in a namespace
87
+ */
88
+ async startNamespace(namespace) {
89
+ const processNames = this.getProcessNamesByNamespace(namespace);
90
+ this.emit('namespace:operation-start', { namespace, operation: 'start' });
91
+ const result = await this.startProcesses(processNames);
92
+ this.emit('namespace:operation-complete', {
93
+ namespace,
94
+ operation: 'start',
95
+ result,
96
+ });
97
+ return result;
98
+ }
99
+ /**
100
+ * Stop all processes in a namespace
101
+ */
102
+ async stopNamespace(namespace) {
103
+ const processNames = this.getProcessNamesByNamespace(namespace);
104
+ this.emit('namespace:operation-start', { namespace, operation: 'stop' });
105
+ const result = await this.stopProcesses(processNames);
106
+ this.emit('namespace:operation-complete', {
107
+ namespace,
108
+ operation: 'stop',
109
+ result,
110
+ });
111
+ return result;
112
+ }
113
+ /**
114
+ * Restart all processes in a namespace
115
+ */
116
+ async restartNamespace(namespace) {
117
+ const processNames = this.getProcessNamesByNamespace(namespace);
118
+ this.emit('namespace:operation-start', { namespace, operation: 'restart' });
119
+ const result = await this.restartProcesses(processNames);
120
+ this.emit('namespace:operation-complete', {
121
+ namespace,
122
+ operation: 'restart',
123
+ result,
124
+ });
125
+ return result;
126
+ }
127
+ /**
128
+ * Start multiple processes
129
+ */
130
+ async startProcesses(names) {
131
+ this.emit('batch:operation-start', {
132
+ operation: 'start',
133
+ processCount: names.length,
134
+ });
135
+ const promises = names.map(async (name) => {
136
+ const result = await this.processLifecycle.startProcess(name);
137
+ return {
138
+ name,
139
+ success: result.success,
140
+ error: result.error,
141
+ };
142
+ });
143
+ const results = await Promise.allSettled(promises);
144
+ const finalResults = results.map((result, index) => {
145
+ if (result.status === 'fulfilled') {
146
+ return result.value;
147
+ }
148
+ else {
149
+ return {
150
+ name: names[index],
151
+ success: false,
152
+ error: result.reason instanceof Error
153
+ ? result.reason.message
154
+ : String(result.reason),
155
+ };
156
+ }
157
+ });
158
+ const successCount = finalResults.filter((r) => r.success).length;
159
+ const failureCount = finalResults.length - successCount;
160
+ const batchResult = {
161
+ success: failureCount === 0,
162
+ results: finalResults,
163
+ successCount,
164
+ failureCount,
165
+ };
166
+ this.emit('batch:operation-complete', {
167
+ operation: 'start',
168
+ result: batchResult,
169
+ });
170
+ return batchResult;
171
+ }
172
+ /**
173
+ * Stop multiple processes
174
+ */
175
+ async stopProcesses(names) {
176
+ this.emit('batch:operation-start', {
177
+ operation: 'stop',
178
+ processCount: names.length,
179
+ });
180
+ const promises = names.map(async (name) => {
181
+ const result = await this.processLifecycle.stopProcess(name);
182
+ return {
183
+ name,
184
+ success: result.success,
185
+ error: result.error,
186
+ };
187
+ });
188
+ const results = await Promise.allSettled(promises);
189
+ const finalResults = results.map((result, index) => {
190
+ if (result.status === 'fulfilled') {
191
+ return result.value;
192
+ }
193
+ else {
194
+ return {
195
+ name: names[index],
196
+ success: false,
197
+ error: result.reason instanceof Error
198
+ ? result.reason.message
199
+ : String(result.reason),
200
+ };
201
+ }
202
+ });
203
+ const successCount = finalResults.filter((r) => r.success).length;
204
+ const failureCount = finalResults.length - successCount;
205
+ const batchResult = {
206
+ success: failureCount === 0,
207
+ results: finalResults,
208
+ successCount,
209
+ failureCount,
210
+ };
211
+ this.emit('batch:operation-complete', {
212
+ operation: 'stop',
213
+ result: batchResult,
214
+ });
215
+ return batchResult;
216
+ }
217
+ /**
218
+ * Restart multiple processes
219
+ */
220
+ async restartProcesses(names) {
221
+ this.emit('batch:operation-start', {
222
+ operation: 'restart',
223
+ processCount: names.length,
224
+ });
225
+ const promises = names.map(async (name) => {
226
+ const result = await this.processLifecycle.restartProcess(name);
227
+ return {
228
+ name,
229
+ success: result.success,
230
+ error: result.error,
231
+ };
232
+ });
233
+ const results = await Promise.allSettled(promises);
234
+ const finalResults = results.map((result, index) => {
235
+ if (result.status === 'fulfilled') {
236
+ return result.value;
237
+ }
238
+ else {
239
+ return {
240
+ name: names[index],
241
+ success: false,
242
+ error: result.reason instanceof Error
243
+ ? result.reason.message
244
+ : String(result.reason),
245
+ };
246
+ }
247
+ });
248
+ const successCount = finalResults.filter((r) => r.success).length;
249
+ const failureCount = finalResults.length - successCount;
250
+ const batchResult = {
251
+ success: failureCount === 0,
252
+ results: finalResults,
253
+ successCount,
254
+ failureCount,
255
+ };
256
+ this.emit('batch:operation-complete', {
257
+ operation: 'restart',
258
+ result: batchResult,
259
+ });
260
+ return batchResult;
261
+ }
262
+ /**
263
+ * Configure a process dependency
264
+ */
265
+ configureDependency(dependency) {
266
+ // Validate that the process exists
267
+ if (!this.processes.has(dependency.name)) {
268
+ throw new Error(`Process '${dependency.name}' not found`);
269
+ }
270
+ // Validate that all dependent processes exist
271
+ if (dependency.dependsOn) {
272
+ for (const depName of dependency.dependsOn) {
273
+ if (!this.processes.has(depName)) {
274
+ throw new Error(`Dependent process '${depName}' not found`);
275
+ }
276
+ }
277
+ }
278
+ this.dependencies.set(dependency.name, dependency);
279
+ this.emit('dependency:configured', { dependency });
280
+ }
281
+ /**
282
+ * Remove a process dependency
283
+ */
284
+ removeDependency(name) {
285
+ this.dependencies.delete(name);
286
+ this.emit('dependency:removed', { name });
287
+ }
288
+ /**
289
+ * Get dependency configuration for a process
290
+ */
291
+ getDependency(name) {
292
+ return this.dependencies.get(name);
293
+ }
294
+ /**
295
+ * Get all dependency configurations
296
+ */
297
+ getAllDependencies() {
298
+ return Array.from(this.dependencies.values());
299
+ }
300
+ /**
301
+ * Resolve dependencies for a set of processes
302
+ */
303
+ resolveDependencies(names) {
304
+ // Build dependency graph
305
+ const dependencyGraph = new Map();
306
+ const inDegree = new Map();
307
+ // Initialize graph
308
+ for (const name of names) {
309
+ dependencyGraph.set(name, new Set());
310
+ inDegree.set(name, 0);
311
+ }
312
+ // Build edges based on dependencies
313
+ for (const name of names) {
314
+ const dependency = this.dependencies.get(name);
315
+ if (dependency && dependency.dependsOn) {
316
+ for (const dep of dependency.dependsOn) {
317
+ if (names.includes(dep)) {
318
+ dependencyGraph.get(dep)?.add(name);
319
+ inDegree.set(name, (inDegree.get(name) || 0) + 1);
320
+ }
321
+ }
322
+ }
323
+ }
324
+ // Topological sort to find startup order
325
+ const independent = [];
326
+ const dependent = [];
327
+ const visited = new Set();
328
+ const queue = [];
329
+ // Find nodes with no dependencies
330
+ for (const [name, degree] of inDegree) {
331
+ if (degree === 0) {
332
+ queue.push(name);
333
+ independent.push(name);
334
+ visited.add(name);
335
+ }
336
+ }
337
+ // Process dependencies level by level
338
+ while (queue.length > 0) {
339
+ const currentLevel = [];
340
+ const nextQueue = [];
341
+ // Process all nodes at current level
342
+ for (const current of queue) {
343
+ const neighbors = dependencyGraph.get(current) || new Set();
344
+ for (const neighbor of neighbors) {
345
+ if (!visited.has(neighbor)) {
346
+ const newDegree = (inDegree.get(neighbor) || 0) - 1;
347
+ inDegree.set(neighbor, newDegree);
348
+ if (newDegree === 0) {
349
+ nextQueue.push(neighbor);
350
+ currentLevel.push(neighbor);
351
+ visited.add(neighbor);
352
+ }
353
+ }
354
+ }
355
+ }
356
+ if (currentLevel.length > 0) {
357
+ dependent.push(currentLevel);
358
+ }
359
+ queue.length = 0;
360
+ queue.push(...nextQueue);
361
+ }
362
+ // Check for circular dependencies
363
+ const circular = [];
364
+ for (const name of names) {
365
+ if (!visited.has(name)) {
366
+ circular.push(name);
367
+ }
368
+ }
369
+ // Return result in expected format for tests
370
+ const startupOrder = [];
371
+ if (independent.length > 0) {
372
+ startupOrder.push(independent);
373
+ }
374
+ startupOrder.push(...dependent);
375
+ return {
376
+ independent,
377
+ dependent,
378
+ circular,
379
+ // Add properties expected by tests
380
+ startupOrder,
381
+ circularDependencies: circular,
382
+ unresolvedProcesses: [],
383
+ };
384
+ }
385
+ /**
386
+ * Start processes with dependency resolution
387
+ */
388
+ async startProcessesWithDependencies(names) {
389
+ // For now, just start them all without dependency resolution
390
+ return this.startProcesses(names);
391
+ }
392
+ /**
393
+ * Clean up resources
394
+ */
395
+ cleanup() {
396
+ // Clear all dependencies
397
+ this.dependencies.clear();
398
+ }
399
+ }
400
+ //# sourceMappingURL=process-group-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-group-manager.js","sourceRoot":"","sources":["../../../src/process-manager/process-group-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * ProcessLifecycleManager - Handles process lifecycle operations
3
+ *
4
+ * This class is responsible for:
5
+ * - Starting and stopping processes
6
+ * - Signal handling and graceful shutdown
7
+ * - Child process management
8
+ * - Process state transitions
9
+ * - Mutex-based concurrency control
10
+ */
11
+ import { EventEmitter } from 'events';
12
+ import { ChildProcess } from 'child_process';
13
+ import { ProcessLifecycleManager as IProcessLifecycleManager, ProcessLifecycleResult } from './interfaces/process-lifecycle.js';
14
+ import { ManagedProcessInfo } from './managed-process-info.js';
15
+ /**
16
+ * ProcessLifecycleManager implementation
17
+ */
18
+ export declare class ProcessLifecycleManagerImpl extends EventEmitter implements IProcessLifecycleManager {
19
+ private readonly processes;
20
+ private readonly childProcesses;
21
+ private readonly operationMutex;
22
+ constructor(processes: Map<string, ManagedProcessInfo>, childProcesses: Map<string, ChildProcess>);
23
+ /**
24
+ * Start a process with the given configuration
25
+ */
26
+ startProcess(name: string): Promise<ProcessLifecycleResult>;
27
+ /**
28
+ * Internal start process implementation (no mutex)
29
+ */
30
+ private startProcessInternal;
31
+ /**
32
+ * Stop a running process gracefully
33
+ */
34
+ stopProcess(name: string): Promise<ProcessLifecycleResult>;
35
+ /**
36
+ * Internal stop process implementation (no mutex)
37
+ */
38
+ private stopProcessInternal;
39
+ /**
40
+ * Restart a process (stop then start)
41
+ */
42
+ restartProcess(name: string): Promise<ProcessLifecycleResult>;
43
+ /**
44
+ * Send a signal to a process
45
+ */
46
+ sendSignalToProcess(name: string, signal: string): Promise<ProcessLifecycleResult>;
47
+ /**
48
+ * Get the child process instance
49
+ */
50
+ getChildProcess(name: string): ChildProcess | undefined;
51
+ /**
52
+ * Check if a process is running
53
+ */
54
+ isProcessRunning(name: string): boolean;
55
+ /**
56
+ * Check if any operations are currently locked
57
+ */
58
+ getLockedProcesses(): string[];
59
+ /**
60
+ * Clean up resources
61
+ */
62
+ cleanup(): Promise<void>;
63
+ /**
64
+ * Set up event handlers for child process
65
+ */
66
+ private setupChildProcessEventHandlers;
67
+ }
68
+ //# sourceMappingURL=process-lifecycle-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-lifecycle-manager.d.ts","sourceRoot":"","sources":["../../../src/process-manager/process-lifecycle-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAS,YAAY,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,uBAAuB,IAAI,wBAAwB,EACnD,sBAAsB,EACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAkB/D;;GAEG;AACH,qBAAa,2BACX,SAAQ,YACR,YAAW,wBAAwB;IAEnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAC5D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAC3D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;gBAGlD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC1C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAQ3C;;OAEG;IACU,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAMxE;;OAEG;YACW,oBAAoB;IAiHlC;;OAEG;IACU,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAMvE;;OAEG;YACW,mBAAmB;IAiGjC;;OAEG;IACU,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA0B1E;;OAEG;IACU,mBAAmB,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,sBAAsB,CAAC;IA4ClC;;OAEG;IACI,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI9D;;OAEG;IACI,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAU9C;;OAEG;IACI,kBAAkB,IAAI,MAAM,EAAE;IAIrC;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBrC;;OAEG;IACH,OAAO,CAAC,8BAA8B;CAkDvC"}