@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 @@
1
+ {"version":3,"file":"process-manager.d.ts","sourceRoot":"","sources":["../../../src/process-manager/process-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,659 @@
1
+ /**
2
+ * ProcessManager - Main process management facade
3
+ *
4
+ * This class provides a unified interface for process management,
5
+ * delegating operations to specialized components while maintaining
6
+ * backward compatibility with the existing API.
7
+ *
8
+ * ARCHITECTURE:
9
+ * - Uses composition pattern with specialized components
10
+ * - Maintains existing public interface for backward compatibility
11
+ * - Delegates operations to appropriate components
12
+ * - Acts as a facade for the underlying system
13
+ */
14
+ import { EventEmitter } from 'events';
15
+ import * as path from 'path';
16
+ import * as os from 'os';
17
+ import { ProcessLifecycleManagerImpl } from './process-lifecycle-manager.js';
18
+ import { ProcessMonitorImpl } from './process-monitor.js';
19
+ import { ProcessPersistenceImpl } from './process-persistence.js';
20
+ import { ProcessGroupManagerImpl } from './process-group-manager.js';
21
+ import { ManagedProcessInfo } from './managed-process-info.js';
22
+ import { parseMemorySize } from '../shared/config.js';
23
+ /**
24
+ * Type definition for batch operation results
25
+ */
26
+ /**
27
+ * ProcessManager - Main facade class for process management
28
+ *
29
+ * This class coordinates all process management operations by delegating
30
+ * to specialized components while maintaining the existing public API.
31
+ */
32
+ export class ProcessManager extends EventEmitter {
33
+ healthCheckInterval;
34
+ memoryCheckInterval;
35
+ // Core components
36
+ lifecycle;
37
+ monitor;
38
+ persistence;
39
+ groups;
40
+ // Process management state
41
+ processes = new Map();
42
+ processConfigs = new Map();
43
+ childProcesses = new Map();
44
+ isInitialized = false;
45
+ constructor(healthCheckInterval = 5000, memoryCheckInterval = 30000, persistenceFilePath) {
46
+ super();
47
+ this.healthCheckInterval = healthCheckInterval;
48
+ this.memoryCheckInterval = memoryCheckInterval;
49
+ // Initialize components with shared state
50
+ this.lifecycle = new ProcessLifecycleManagerImpl(this.processes, this.childProcesses);
51
+ this.monitor = new ProcessMonitorImpl(this.processes, this.childProcesses);
52
+ this.persistence = new ProcessPersistenceImpl(this.processes);
53
+ // Initialize persistence with default config
54
+ // Enhanced HOME detection: process.env.HOME || os.homedir()
55
+ const homeDir = process.env.HOME || os.homedir();
56
+ if (!homeDir && !persistenceFilePath) {
57
+ throw new Error('Unable to determine home directory for persistence path');
58
+ }
59
+ const defaultPersistencePath = persistenceFilePath ||
60
+ path.join(homeDir, '.masuidrive-procman', 'processes.json');
61
+ this.persistence.initialize({
62
+ filePath: defaultPersistencePath,
63
+ saveDelay: 1000,
64
+ enableBackup: true,
65
+ });
66
+ this.groups = new ProcessGroupManagerImpl(this.processes, {
67
+ startProcess: (name) => this.lifecycle.startProcess(name),
68
+ stopProcess: (name) => this.lifecycle.stopProcess(name),
69
+ restartProcess: (name) => this.lifecycle.restartProcess(name),
70
+ });
71
+ // Forward events from components
72
+ this.setupEventForwarding();
73
+ // Setup internal event handlers
74
+ this.setupInternalEventHandlers();
75
+ }
76
+ /**
77
+ * Set up event forwarding from components to maintain compatibility
78
+ */
79
+ setupEventForwarding() {
80
+ // Cast components to EventEmitter for event forwarding
81
+ const lifecycleEmitter = this.lifecycle;
82
+ const monitorEmitter = this.monitor;
83
+ const persistenceEmitter = this.persistence;
84
+ const groupsEmitter = this.groups;
85
+ // Forward lifecycle events
86
+ lifecycleEmitter.on('process:started', (name) => {
87
+ const processInfo = this.processes.get(name)?.getProcessInfo();
88
+ if (processInfo) {
89
+ this.emit('process:started', name, processInfo);
90
+ }
91
+ });
92
+ lifecycleEmitter.on('process:stopped', (name) => {
93
+ const processInfo = this.processes.get(name)?.getProcessInfo();
94
+ if (processInfo) {
95
+ this.emit('process:stopped', name, processInfo);
96
+ }
97
+ });
98
+ lifecycleEmitter.on('process:exit', (name, code, signal) => {
99
+ this.emit('process:exit', name, code, signal);
100
+ });
101
+ lifecycleEmitter.on('process:error', (name, error) => {
102
+ this.emit('process:error', name, error);
103
+ });
104
+ lifecycleEmitter.on('process:restart', (name) => {
105
+ this.emit('process:restart', name);
106
+ });
107
+ lifecycleEmitter.on('process:restarted', (name) => {
108
+ this.emit('process:restarted', name);
109
+ });
110
+ // Forward monitor events
111
+ monitorEmitter.on('process:memory-limit', (data) => {
112
+ this.emit('process:memory-limit', data.name, data.usage, data.limit);
113
+ });
114
+ monitorEmitter.on('process:unhealthy', (data) => {
115
+ this.emit('process:unhealthy', data.name, data.consecutiveFailures);
116
+ });
117
+ monitorEmitter.on('process:died', (data) => {
118
+ this.emit('process:died', data.name);
119
+ });
120
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
121
+ monitorEmitter.on('process:stats', (data) => {
122
+ this.emit('process:stats', data.name, data.stats);
123
+ });
124
+ // Forward persistence events
125
+ persistenceEmitter.on('persistence:saved', (filePath) => {
126
+ this.emit('persistence:saved', filePath);
127
+ });
128
+ persistenceEmitter.on('persistence:save-error', (error) => {
129
+ this.emit('persistence:save-error', error);
130
+ });
131
+ persistenceEmitter.on('persistence:loaded', (filePath, processCount) => {
132
+ this.emit('persistence:loaded', filePath, processCount);
133
+ });
134
+ persistenceEmitter.on('persistence:load-error', (error) => {
135
+ this.emit('persistence:load-error', error);
136
+ });
137
+ // Forward group events
138
+ groupsEmitter.on('namespace:operation-start', (namespace, operation) => {
139
+ this.emit('namespace:operation-start', namespace, operation);
140
+ });
141
+ groupsEmitter.on('namespace:operation-complete',
142
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
143
+ (namespace, operation, results) => {
144
+ this.emit('namespace:operation-complete', namespace, operation, results);
145
+ });
146
+ groupsEmitter.on('batch:operation-start', (processNames, operation) => {
147
+ this.emit('batch:operation-start', processNames, operation);
148
+ });
149
+ groupsEmitter.on('batch:operation-complete',
150
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
151
+ (operation, results) => {
152
+ this.emit('batch:operation-complete', operation, results);
153
+ });
154
+ }
155
+ /**
156
+ * Set up internal event handlers for process management
157
+ */
158
+ setupInternalEventHandlers() {
159
+ // Handle memory limit exceeded - trigger restart
160
+ this.on('process:memory-limit', async (name, usage, limit) => {
161
+ console.log(`Process '${name}' exceeded memory limit: ${Math.round(usage / 1024 / 1024)}MB > ${Math.round(limit / 1024 / 1024)}MB`);
162
+ const managedProcess = this.processes.get(name);
163
+ if (managedProcess && managedProcess.isAutoRestartEnabled()) {
164
+ console.log(`Auto-restarting process '${name}' due to memory limit`);
165
+ try {
166
+ await this.restartProcess(name);
167
+ }
168
+ catch (error) {
169
+ console.error(`Failed to restart process '${name}' after memory limit:`, error);
170
+ }
171
+ }
172
+ });
173
+ }
174
+ /**
175
+ * Static factory method to create ProcessManager with default components
176
+ */
177
+ static create(healthCheckInterval = 5000, memoryCheckInterval = 30000, persistenceFilePath) {
178
+ return new ProcessManager(healthCheckInterval, memoryCheckInterval, persistenceFilePath);
179
+ }
180
+ // ===== CONFIGURATION MANAGEMENT =====
181
+ /**
182
+ * Configure a process from app configuration
183
+ */
184
+ configureProcess(appConfig) {
185
+ // t_wada boundary principle: validate inputs at boundaries
186
+ if (appConfig == null) {
187
+ throw new Error('App configuration cannot be null or undefined');
188
+ }
189
+ if (typeof appConfig !== 'object') {
190
+ throw new Error('App configuration must be an object');
191
+ }
192
+ if (!appConfig.name || typeof appConfig.name !== 'string') {
193
+ throw new Error('App configuration must have a valid name');
194
+ }
195
+ // Validate process name contains only safe characters
196
+ const namePattern = /^[a-zA-Z0-9_-]+$/;
197
+ if (!namePattern.test(appConfig.name.trim())) {
198
+ throw new Error(`Invalid process name: "${appConfig.name}". Name must contain only alphanumeric characters, hyphens, and underscores`);
199
+ }
200
+ const processConfig = this.convertAppConfigToProcessConfig(appConfig);
201
+ this.processConfigs.set(appConfig.name, processConfig);
202
+ // Initialize process info if not exists
203
+ if (!this.processes.has(appConfig.name)) {
204
+ this.initializeProcess(appConfig.name);
205
+ }
206
+ }
207
+ /**
208
+ * Remove process configuration
209
+ */
210
+ removeProcessConfig(name) {
211
+ this.processConfigs.delete(name);
212
+ }
213
+ /**
214
+ * Get process configuration
215
+ */
216
+ getProcessConfig(name) {
217
+ return this.processConfigs.get(name);
218
+ }
219
+ // ===== PROCESS INFO ACCESS =====
220
+ /**
221
+ * Get process information
222
+ */
223
+ getProcessInfo(name) {
224
+ const processInfo = this.processes.get(name);
225
+ return processInfo?.getProcessInfo();
226
+ }
227
+ /**
228
+ * Get all process information
229
+ */
230
+ getAllProcessInfo() {
231
+ return Array.from(this.processes.values()).map((p) => p.getProcessInfo());
232
+ }
233
+ /**
234
+ * Get processes by namespace
235
+ */
236
+ getProcessesByNamespace(namespace) {
237
+ return Array.from(this.processes.values())
238
+ .filter((p) => p.getProcessInfo().namespace === namespace)
239
+ .map((p) => p.getProcessInfo());
240
+ }
241
+ /**
242
+ * Get process names by namespace
243
+ */
244
+ getProcessNamesByNamespace(namespace) {
245
+ return Array.from(this.processes.values())
246
+ .filter((p) => p.getProcessInfo().namespace === namespace)
247
+ .map((p) => p.getProcessInfo().name);
248
+ }
249
+ /**
250
+ * Get all namespaces
251
+ */
252
+ getNamespaces() {
253
+ const namespaces = new Set();
254
+ for (const processInfo of this.processes.values()) {
255
+ namespaces.add(processInfo.getProcessInfo().namespace || 'default');
256
+ }
257
+ return Array.from(namespaces).sort();
258
+ }
259
+ /**
260
+ * Get namespace status
261
+ */
262
+ getNamespaceStatus(namespace) {
263
+ const processes = this.getProcessesByNamespace(namespace);
264
+ const status = {
265
+ total: processes.length,
266
+ online: 0,
267
+ stopped: 0,
268
+ errored: 0,
269
+ starting: 0,
270
+ stopping: 0,
271
+ };
272
+ for (const process of processes) {
273
+ switch (process.status) {
274
+ case 'online':
275
+ status.online++;
276
+ break;
277
+ case 'stopped':
278
+ status.stopped++;
279
+ break;
280
+ case 'errored':
281
+ status.errored++;
282
+ break;
283
+ case 'starting':
284
+ status.starting++;
285
+ break;
286
+ case 'stopping':
287
+ status.stopping++;
288
+ break;
289
+ }
290
+ }
291
+ return status;
292
+ }
293
+ /**
294
+ * Get all process names
295
+ */
296
+ getProcessNames() {
297
+ return Array.from(this.processes.keys()).sort();
298
+ }
299
+ /**
300
+ * Check if process exists
301
+ */
302
+ hasProcess(name) {
303
+ return this.processes.has(name);
304
+ }
305
+ // ===== PROCESS LIFECYCLE MANAGEMENT =====
306
+ /**
307
+ * Initialize a process (create ManagedProcessInfo)
308
+ */
309
+ initializeProcess(name) {
310
+ if (this.processes.has(name)) {
311
+ return false;
312
+ }
313
+ const config = this.processConfigs.get(name);
314
+ if (!config) {
315
+ return false;
316
+ }
317
+ const processInfo = new ManagedProcessInfo(config);
318
+ this.processes.set(name, processInfo);
319
+ // Forward ManagedProcessInfo events
320
+ processInfo.on('start', () => {
321
+ this.emit('process:started', name, processInfo.getProcessInfo());
322
+ });
323
+ processInfo.on('stop', () => {
324
+ this.emit('process:stopped', name, processInfo.getProcessInfo());
325
+ });
326
+ processInfo.on('error', (error) => {
327
+ this.emit('process:error', name, error);
328
+ });
329
+ return true;
330
+ }
331
+ /**
332
+ * Remove a process
333
+ */
334
+ removeProcess(name) {
335
+ const processInfo = this.processes.get(name);
336
+ if (!processInfo) {
337
+ return false;
338
+ }
339
+ // Clean up and remove
340
+ processInfo.dispose();
341
+ this.processes.delete(name);
342
+ this.processConfigs.delete(name);
343
+ return true;
344
+ }
345
+ /**
346
+ * Start a process
347
+ */
348
+ async startProcess(name) {
349
+ // t_wada boundary principle: validate inputs at boundaries
350
+ if (name == null) {
351
+ throw new Error('Process name cannot be null or undefined');
352
+ }
353
+ if (typeof name !== 'string') {
354
+ throw new Error('Process name must be a string');
355
+ }
356
+ if (name.trim() === '') {
357
+ throw new Error('Process name cannot be empty');
358
+ }
359
+ const result = await this.lifecycle.startProcess(name);
360
+ if (!result.success) {
361
+ throw new Error(result.error || `Failed to start process: ${name}`);
362
+ }
363
+ }
364
+ /**
365
+ * Stop a process
366
+ */
367
+ async stopProcess(name) {
368
+ const result = await this.lifecycle.stopProcess(name);
369
+ if (!result.success) {
370
+ throw new Error(result.error || `Failed to stop process: ${name}`);
371
+ }
372
+ }
373
+ /**
374
+ * Restart a process
375
+ */
376
+ async restartProcess(name) {
377
+ const result = await this.lifecycle.restartProcess(name);
378
+ if (!result.success) {
379
+ throw new Error(result.error || `Failed to restart process: ${name}`);
380
+ }
381
+ }
382
+ // ===== BATCH OPERATIONS =====
383
+ /**
384
+ * Start multiple processes
385
+ */
386
+ async startProcesses(names) {
387
+ const result = await this.groups.startProcesses(names);
388
+ return result.results;
389
+ }
390
+ /**
391
+ * Stop multiple processes
392
+ */
393
+ async stopProcesses(names) {
394
+ const result = await this.groups.stopProcesses(names);
395
+ return result.results;
396
+ }
397
+ /**
398
+ * Restart multiple processes
399
+ */
400
+ async restartProcesses(names) {
401
+ const result = await this.groups.restartProcesses(names);
402
+ return result.results;
403
+ }
404
+ /**
405
+ * Start all processes in a namespace
406
+ */
407
+ async startNamespace(namespace) {
408
+ const result = await this.groups.startNamespace(namespace);
409
+ return result.results;
410
+ }
411
+ /**
412
+ * Stop all processes in a namespace
413
+ */
414
+ async stopNamespace(namespace) {
415
+ const result = await this.groups.stopNamespace(namespace);
416
+ return result.results;
417
+ }
418
+ /**
419
+ * Restart all processes in a namespace
420
+ */
421
+ async restartNamespace(namespace) {
422
+ const result = await this.groups.restartNamespace(namespace);
423
+ return result.results;
424
+ }
425
+ // ===== MONITORING MANAGEMENT =====
426
+ /**
427
+ * Start monitoring all processes
428
+ */
429
+ startMonitoring() {
430
+ this.monitor.startMonitoring({
431
+ healthCheckInterval: this.healthCheckInterval,
432
+ memoryCheckInterval: this.memoryCheckInterval,
433
+ });
434
+ }
435
+ /**
436
+ * Stop monitoring all processes
437
+ */
438
+ stopMonitoring() {
439
+ this.monitor.stopMonitoring();
440
+ }
441
+ // ===== AUTO-RESTART MANAGEMENT =====
442
+ /**
443
+ * Enable auto-restart for a process
444
+ */
445
+ enableAutoRestart(name) {
446
+ const processInfo = this.processes.get(name);
447
+ if (processInfo && 'enableAutoRestart' in processInfo) {
448
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
449
+ processInfo.enableAutoRestart();
450
+ }
451
+ }
452
+ /**
453
+ * Disable auto-restart for a process
454
+ */
455
+ disableAutoRestart(name) {
456
+ const processInfo = this.processes.get(name);
457
+ if (processInfo && 'disableAutoRestart' in processInfo) {
458
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
459
+ processInfo.disableAutoRestart();
460
+ }
461
+ }
462
+ /**
463
+ * Reset restart failures for a process
464
+ */
465
+ resetRestartFailures(name) {
466
+ const processInfo = this.processes.get(name);
467
+ if (processInfo && 'resetRestartFailures' in processInfo) {
468
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
469
+ processInfo.resetRestartFailures();
470
+ }
471
+ }
472
+ /**
473
+ * Get auto-restart status for a process
474
+ */
475
+ getAutoRestartStatus(name) {
476
+ const processInfo = this.processes.get(name);
477
+ if (!processInfo || !('getAutoRestartStatus' in processInfo)) {
478
+ return {
479
+ enabled: false,
480
+ consecutiveFailures: 0,
481
+ };
482
+ }
483
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
484
+ return processInfo.getAutoRestartStatus();
485
+ }
486
+ // ===== DEPENDENCY MANAGEMENT =====
487
+ /**
488
+ * Configure a process dependency
489
+ */
490
+ configureDependency(dependency) {
491
+ this.groups.configureDependency(dependency);
492
+ }
493
+ /**
494
+ * Remove a process dependency
495
+ */
496
+ removeDependency(name) {
497
+ this.groups.removeDependency(name);
498
+ }
499
+ /**
500
+ * Get process dependency
501
+ */
502
+ getDependency(name) {
503
+ return this.groups.getDependency(name);
504
+ }
505
+ /**
506
+ * Get all dependencies
507
+ */
508
+ getAllDependencies() {
509
+ return this.groups.getAllDependencies();
510
+ }
511
+ /**
512
+ * Resolve dependencies for a set of processes
513
+ */
514
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
515
+ resolveDependencies(names) {
516
+ return this.groups.resolveDependencies(names);
517
+ }
518
+ /**
519
+ * Start processes with dependencies
520
+ */
521
+ async startProcessesWithDependencies(processNames) {
522
+ // This is a placeholder for future implementation
523
+ // For now, just start processes in order
524
+ return this.startProcesses(processNames);
525
+ }
526
+ /**
527
+ * Start dependency monitoring
528
+ */
529
+ startDependencyMonitoring() {
530
+ // Placeholder for future implementation
531
+ }
532
+ /**
533
+ * Stop dependency monitoring
534
+ */
535
+ stopDependencyMonitoring() {
536
+ // Placeholder for future implementation
537
+ }
538
+ // ===== PERSISTENCE MANAGEMENT =====
539
+ /**
540
+ * Initialize the process manager
541
+ */
542
+ async initialize() {
543
+ if (this.isInitialized) {
544
+ return;
545
+ }
546
+ // Load persisted state
547
+ const persistedProcesses = await this.persistence.loadState();
548
+ // Restore process states
549
+ for (const persistedProcess of persistedProcesses) {
550
+ // Check if we have a configuration for this process
551
+ const processInfo = this.processes.get(persistedProcess.name);
552
+ if (processInfo) {
553
+ // Restore the state
554
+ processInfo.restoreState(persistedProcess);
555
+ }
556
+ }
557
+ this.isInitialized = true;
558
+ }
559
+ /**
560
+ * Save current state
561
+ */
562
+ async saveState() {
563
+ const processData = Array.from(this.processes.values()).map((p) => p.toJSON());
564
+ await this.persistence.saveState(processData);
565
+ }
566
+ /**
567
+ * Force save state immediately
568
+ */
569
+ async forceSaveState() {
570
+ const processData = Array.from(this.processes.values()).map((p) => p.toJSON());
571
+ await this.persistence.forceSaveState(processData);
572
+ }
573
+ /**
574
+ * Get persistence file path
575
+ */
576
+ getPersistenceFilePath() {
577
+ return this.persistence.getFilePath();
578
+ }
579
+ // ===== CLEANUP =====
580
+ /**
581
+ * Clean up all resources
582
+ */
583
+ async cleanup() {
584
+ // Stop monitoring
585
+ this.stopMonitoring();
586
+ // Save final state
587
+ await this.forceSaveState();
588
+ // Cleanup components
589
+ const cleanupPromises = [];
590
+ if ('cleanup' in this.lifecycle) {
591
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
592
+ cleanupPromises.push(this.lifecycle.cleanup());
593
+ }
594
+ if ('cleanup' in this.monitor) {
595
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
596
+ cleanupPromises.push(this.monitor.cleanup());
597
+ }
598
+ if ('cleanup' in this.persistence) {
599
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
600
+ cleanupPromises.push(this.persistence.cleanup());
601
+ }
602
+ if ('cleanup' in this.groups) {
603
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
604
+ cleanupPromises.push(this.groups.cleanup());
605
+ }
606
+ await Promise.all(cleanupPromises);
607
+ // Clean up processes
608
+ for (const processInfo of this.processes.values()) {
609
+ processInfo.dispose();
610
+ }
611
+ this.processes.clear();
612
+ this.processConfigs.clear();
613
+ this.isInitialized = false;
614
+ }
615
+ // ===== HELPER METHODS =====
616
+ /**
617
+ * Convert AppConfig to ProcessConfig
618
+ */
619
+ convertAppConfigToProcessConfig(appConfig) {
620
+ // Parse memory limit if specified
621
+ let max_memory_restart;
622
+ if (appConfig.max_memory_restart) {
623
+ const result = parseMemorySize(appConfig.max_memory_restart);
624
+ if (result.success && result.value) {
625
+ max_memory_restart = result.value;
626
+ }
627
+ }
628
+ const processConfig = {
629
+ name: appConfig.name,
630
+ script: appConfig.script,
631
+ cwd: appConfig.cwd || process.cwd(),
632
+ args: appConfig.args
633
+ ? appConfig.args.split(' ').filter((arg) => arg.length > 0)
634
+ : [],
635
+ namespace: appConfig.namespace || 'default',
636
+ instances: 1, // AppConfig doesn't have instances
637
+ autorestart: true, // Default to true for auto-restart
638
+ watch: false, // AppConfig doesn't have watch
639
+ max_memory_restart,
640
+ max_restarts: 10, // Default max restarts
641
+ min_uptime: 1000, // Default min uptime
642
+ restart_delay: 1000, // Default restart delay
643
+ note: appConfig.note,
644
+ env: {},
645
+ };
646
+ // Process environment variables (remove undefined values)
647
+ if (appConfig.env) {
648
+ for (const [key, value] of Object.entries(appConfig.env)) {
649
+ if (value !== undefined) {
650
+ processConfig.env[key] = value;
651
+ }
652
+ }
653
+ }
654
+ return processConfig;
655
+ }
656
+ }
657
+ // Re-export types for backward compatibility
658
+ export { ManagedProcessInfo, };
659
+ //# sourceMappingURL=process-manager.js.map