@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":"component-manager.js","sourceRoot":"","sources":["../../../src/daemon/component-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * CrashRecovery - Handles recovery after daemon crash
3
+ *
4
+ * This class is responsible for:
5
+ * - Detecting previous daemon crashes
6
+ * - Cleaning up stale PID and socket files
7
+ * - Recovering orphaned processes
8
+ * - Restoring process state
9
+ *
10
+ * Following SOLID principles:
11
+ * - Single Responsibility: Only handles crash recovery
12
+ * - Open/Closed: Extensible for new recovery strategies
13
+ * - Dependency Inversion: Depends on abstractions
14
+ */
15
+ import { IOrphanDetector, ProcessInfo } from './orphan-detector';
16
+ import { EventEmitter } from 'events';
17
+ export interface RecoveryResult {
18
+ crashDetected: boolean;
19
+ recoveredProcesses: ProcessInfo[];
20
+ cleanedResources: string[];
21
+ errors: string[];
22
+ }
23
+ export interface ICrashRecovery {
24
+ detectAndRecover(): Promise<RecoveryResult>;
25
+ cleanupStaleResources(): Promise<string[]>;
26
+ recoverOrphanedProcesses(): Promise<ProcessInfo[]>;
27
+ }
28
+ export declare class CrashRecovery extends EventEmitter implements ICrashRecovery {
29
+ private readonly dataDir;
30
+ private readonly socketPath;
31
+ private readonly pidFile;
32
+ private readonly orphanDetector;
33
+ constructor(dataDir?: string, socketPath?: string, orphanDetector?: IOrphanDetector);
34
+ /**
35
+ * Main recovery entry point - detects crash and performs recovery
36
+ */
37
+ detectAndRecover(): Promise<RecoveryResult>;
38
+ /**
39
+ * Detect if there was a previous daemon crash
40
+ */
41
+ private detectPreviousCrash;
42
+ /**
43
+ * Clean up stale resources from previous daemon
44
+ */
45
+ cleanupStaleResources(): Promise<string[]>;
46
+ /**
47
+ * Recover orphaned processes from crashed daemon
48
+ */
49
+ recoverOrphanedProcesses(): Promise<ProcessInfo[]>;
50
+ /**
51
+ * Load saved process metadata
52
+ */
53
+ private loadProcessMetadata;
54
+ /**
55
+ * Save current daemon PID for future crash detection
56
+ */
57
+ saveDaemonPid(pid?: number): Promise<void>;
58
+ /**
59
+ * Check if a file exists
60
+ */
61
+ private fileExists;
62
+ /**
63
+ * Restore process state from saved data
64
+ */
65
+ restoreProcessState(): Promise<void>;
66
+ /**
67
+ * Save current process state for recovery
68
+ */
69
+ saveProcessState(state: any): Promise<void>;
70
+ }
71
+ //# sourceMappingURL=crash-recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crash-recovery.d.ts","sourceRoot":"","sources":["../../../src/daemon/crash-recovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAEL,eAAe,EACf,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,WAAW,EAAE,CAAC;IAClC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,gBAAgB,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5C,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,wBAAwB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CACpD;AAED,qBAAa,aAAc,SAAQ,YAAa,YAAW,cAAc;IACvE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkB;gBAG/C,OAAO,GAAE,MAAiE,EAC1E,UAAU,CAAC,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,eAAe;IASlC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,cAAc,CAAC;IAyDjD;;OAEG;YACW,mBAAmB;IAgDjC;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA0DhD;;OAEG;IACG,wBAAwB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAiCxD;;OAEG;YAEW,mBAAmB;IAgBjC;;OAEG;IACG,aAAa,CAAC,GAAG,GAAE,MAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7D;;OAEG;YACW,UAAU;IASxB;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB1C;;OAEG;IAEG,gBAAgB,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CASlD"}
@@ -0,0 +1,282 @@
1
+ /**
2
+ * CrashRecovery - Handles recovery after daemon crash
3
+ *
4
+ * This class is responsible for:
5
+ * - Detecting previous daemon crashes
6
+ * - Cleaning up stale PID and socket files
7
+ * - Recovering orphaned processes
8
+ * - Restoring process state
9
+ *
10
+ * Following SOLID principles:
11
+ * - Single Responsibility: Only handles crash recovery
12
+ * - Open/Closed: Extensible for new recovery strategies
13
+ * - Dependency Inversion: Depends on abstractions
14
+ */
15
+ import * as fs from 'fs/promises';
16
+ import * as path from 'path';
17
+ import { OrphanProcessDetector, } from './orphan-detector';
18
+ import { EventEmitter } from 'events';
19
+ export class CrashRecovery extends EventEmitter {
20
+ dataDir;
21
+ socketPath;
22
+ pidFile;
23
+ orphanDetector;
24
+ constructor(dataDir = path.join(process.env.HOME || '', '.masuidrive-procman'), socketPath, orphanDetector) {
25
+ super();
26
+ this.dataDir = dataDir;
27
+ this.socketPath = socketPath || path.join(dataDir, 'procman.sock');
28
+ this.pidFile = path.join(dataDir, 'daemon.pid');
29
+ this.orphanDetector = orphanDetector || new OrphanProcessDetector(dataDir);
30
+ }
31
+ /**
32
+ * Main recovery entry point - detects crash and performs recovery
33
+ */
34
+ async detectAndRecover() {
35
+ const result = {
36
+ crashDetected: false,
37
+ recoveredProcesses: [],
38
+ cleanedResources: [],
39
+ errors: [],
40
+ };
41
+ try {
42
+ // Check if there was a previous crash
43
+ result.crashDetected = await this.detectPreviousCrash();
44
+ if (result.crashDetected) {
45
+ this.emit('crash-detected');
46
+ console.log('[CrashRecovery] Previous daemon crash detected, initiating recovery...');
47
+ // Clean up stale resources
48
+ try {
49
+ result.cleanedResources = await this.cleanupStaleResources();
50
+ console.log(`[CrashRecovery] Cleaned ${result.cleanedResources.length} stale resources`);
51
+ }
52
+ catch (error) {
53
+ const errMsg = `Failed to cleanup resources: ${error}`;
54
+ result.errors.push(errMsg);
55
+ console.error(`[CrashRecovery] ${errMsg}`);
56
+ }
57
+ // Recover orphaned processes
58
+ try {
59
+ result.recoveredProcesses = await this.recoverOrphanedProcesses();
60
+ console.log(`[CrashRecovery] Recovered ${result.recoveredProcesses.length} orphaned processes`);
61
+ }
62
+ catch (error) {
63
+ const errMsg = `Failed to recover processes: ${error}`;
64
+ result.errors.push(errMsg);
65
+ console.error(`[CrashRecovery] ${errMsg}`);
66
+ }
67
+ this.emit('recovery-complete', result);
68
+ }
69
+ else {
70
+ console.log('[CrashRecovery] No previous crash detected, normal startup');
71
+ }
72
+ }
73
+ catch (error) {
74
+ const errMsg = `Recovery process failed: ${error}`;
75
+ result.errors.push(errMsg);
76
+ console.error(`[CrashRecovery] ${errMsg}`);
77
+ }
78
+ return result;
79
+ }
80
+ /**
81
+ * Detect if there was a previous daemon crash
82
+ */
83
+ async detectPreviousCrash() {
84
+ try {
85
+ // Check if PID file exists
86
+ const pidFileExists = await this.fileExists(this.pidFile);
87
+ if (!pidFileExists) {
88
+ return false;
89
+ }
90
+ // Read the PID from file
91
+ const pidContent = await fs.readFile(this.pidFile, 'utf-8');
92
+ const previousPid = parseInt(pidContent.trim(), 10);
93
+ if (isNaN(previousPid)) {
94
+ // Invalid PID file, consider it a crash
95
+ return true;
96
+ }
97
+ // Check if the process is still running
98
+ try {
99
+ process.kill(previousPid, 0);
100
+ // Process exists, check if it's our daemon
101
+ const { execSync } = await import('child_process');
102
+ const psOutput = execSync(`ps -p ${previousPid} -o command=`, { timeout: 5000 } // Add 5 second timeout
103
+ ).toString();
104
+ if (psOutput.includes('daemon-main') ||
105
+ psOutput.includes('procman-daemon')) {
106
+ // Daemon is still running, no crash
107
+ return false;
108
+ }
109
+ else {
110
+ // PID exists but it's not our daemon, previous daemon crashed
111
+ return true;
112
+ }
113
+ }
114
+ catch {
115
+ // Process doesn't exist, daemon crashed
116
+ return true;
117
+ }
118
+ }
119
+ catch (error) {
120
+ // Error checking, assume no crash
121
+ console.error('[CrashRecovery] Error detecting crash:', error);
122
+ return false;
123
+ }
124
+ }
125
+ /**
126
+ * Clean up stale resources from previous daemon
127
+ */
128
+ async cleanupStaleResources() {
129
+ const cleaned = [];
130
+ // Clean up PID file
131
+ if (await this.fileExists(this.pidFile)) {
132
+ try {
133
+ await fs.unlink(this.pidFile);
134
+ cleaned.push(`PID file: ${this.pidFile}`);
135
+ console.log('[CrashRecovery] Cleaned up stale PID file');
136
+ }
137
+ catch (error) {
138
+ console.error('[CrashRecovery] Failed to clean PID file:', error);
139
+ }
140
+ }
141
+ // Clean up socket file
142
+ if (await this.fileExists(this.socketPath)) {
143
+ try {
144
+ await fs.unlink(this.socketPath);
145
+ cleaned.push(`Socket file: ${this.socketPath}`);
146
+ console.log('[CrashRecovery] Cleaned up stale socket file');
147
+ }
148
+ catch (error) {
149
+ console.error('[CrashRecovery] Failed to clean socket file:', error);
150
+ }
151
+ }
152
+ // Clean up lock files
153
+ try {
154
+ const lockDir = path.join(this.dataDir, 'locks');
155
+ if (await this.fileExists(lockDir)) {
156
+ const lockFiles = await fs.readdir(lockDir);
157
+ for (const lockFile of lockFiles) {
158
+ const lockPath = path.join(lockDir, lockFile);
159
+ await fs.unlink(lockPath);
160
+ cleaned.push(`Lock file: ${lockPath}`);
161
+ }
162
+ console.log(`[CrashRecovery] Cleaned up ${lockFiles.length} lock files`);
163
+ }
164
+ }
165
+ catch (error) {
166
+ console.error('[CrashRecovery] Failed to clean lock files:', error);
167
+ }
168
+ // Clean up temporary files
169
+ try {
170
+ const tempDir = path.join(this.dataDir, 'tmp');
171
+ if (await this.fileExists(tempDir)) {
172
+ await fs.rm(tempDir, { recursive: true, force: true });
173
+ cleaned.push(`Temp directory: ${tempDir}`);
174
+ console.log('[CrashRecovery] Cleaned up temp directory');
175
+ }
176
+ }
177
+ catch (error) {
178
+ console.error('[CrashRecovery] Failed to clean temp directory:', error);
179
+ }
180
+ return cleaned;
181
+ }
182
+ /**
183
+ * Recover orphaned processes from crashed daemon
184
+ */
185
+ async recoverOrphanedProcesses() {
186
+ const orphanedProcesses = await this.orphanDetector.detectOrphanedProcesses();
187
+ const recovered = [];
188
+ for (const proc of orphanedProcesses) {
189
+ try {
190
+ // Try to recover process metadata
191
+ const metadata = await this.loadProcessMetadata(proc.pid);
192
+ if (metadata) {
193
+ proc.name = metadata.name || proc.name;
194
+ proc.namespace = metadata.namespace;
195
+ }
196
+ // Emit event for each recovered process
197
+ this.emit('process-recovered', proc);
198
+ recovered.push(proc);
199
+ console.log(`[CrashRecovery] Recovered process: ${proc.name} (PID: ${proc.pid})`);
200
+ }
201
+ catch (error) {
202
+ console.error(`[CrashRecovery] Failed to recover process ${proc.pid}:`, error);
203
+ }
204
+ }
205
+ return recovered;
206
+ }
207
+ /**
208
+ * Load saved process metadata
209
+ */
210
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
211
+ async loadProcessMetadata(pid) {
212
+ try {
213
+ const metadataFile = path.join(this.dataDir, 'processes', `${pid}.json`);
214
+ if (await this.fileExists(metadataFile)) {
215
+ const content = await fs.readFile(metadataFile, 'utf-8');
216
+ return JSON.parse(content);
217
+ }
218
+ }
219
+ catch (error) {
220
+ console.error(`[CrashRecovery] Failed to load metadata for PID ${pid}:`, error);
221
+ }
222
+ return null;
223
+ }
224
+ /**
225
+ * Save current daemon PID for future crash detection
226
+ */
227
+ async saveDaemonPid(pid = process.pid) {
228
+ try {
229
+ await fs.mkdir(path.dirname(this.pidFile), { recursive: true });
230
+ await fs.writeFile(this.pidFile, pid.toString(), 'utf-8');
231
+ console.log(`[CrashRecovery] Saved daemon PID: ${pid}`);
232
+ }
233
+ catch (error) {
234
+ console.error('[CrashRecovery] Failed to save daemon PID:', error);
235
+ throw error;
236
+ }
237
+ }
238
+ /**
239
+ * Check if a file exists
240
+ */
241
+ async fileExists(filePath) {
242
+ try {
243
+ await fs.access(filePath);
244
+ return true;
245
+ }
246
+ catch {
247
+ return false;
248
+ }
249
+ }
250
+ /**
251
+ * Restore process state from saved data
252
+ */
253
+ async restoreProcessState() {
254
+ try {
255
+ const stateFile = path.join(this.dataDir, 'daemon-state.json');
256
+ if (await this.fileExists(stateFile)) {
257
+ const stateData = await fs.readFile(stateFile, 'utf-8');
258
+ const state = JSON.parse(stateData);
259
+ this.emit('state-restored', state);
260
+ console.log('[CrashRecovery] Process state restored from previous session');
261
+ }
262
+ }
263
+ catch (error) {
264
+ console.error('[CrashRecovery] Failed to restore process state:', error);
265
+ }
266
+ }
267
+ /**
268
+ * Save current process state for recovery
269
+ */
270
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
271
+ async saveProcessState(state) {
272
+ try {
273
+ const stateFile = path.join(this.dataDir, 'daemon-state.json');
274
+ await fs.mkdir(path.dirname(stateFile), { recursive: true });
275
+ await fs.writeFile(stateFile, JSON.stringify(state, null, 2), 'utf-8');
276
+ }
277
+ catch (error) {
278
+ console.error('[CrashRecovery] Failed to save process state:', error);
279
+ }
280
+ }
281
+ }
282
+ //# sourceMappingURL=crash-recovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crash-recovery.js","sourceRoot":"","sources":["../../../src/daemon/crash-recovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Daemon entry point for procman
3
+ *
4
+ * Handles daemon process creation, detachment, and main loop.
5
+ * Can be used both as a module (for starting daemon from CLI) and
6
+ * as a direct entry point (when running as daemon process).
7
+ */
8
+ /**
9
+ * Check if daemon is currently running
10
+ */
11
+ export declare function isDaemonRunning(): Promise<boolean>;
12
+ /**
13
+ * Start daemon as a detached child process
14
+ * @param args Additional arguments to pass to daemon
15
+ * @returns PID of started daemon process
16
+ */
17
+ export declare function startDaemon(args?: string[]): Promise<number>;
18
+ //# sourceMappingURL=daemon-main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-main.d.ts","sourceRoot":"","sources":["../../../src/daemon/daemon-main.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAUxD;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBtE"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Daemon entry point for procman
3
+ *
4
+ * Handles daemon process creation, detachment, and main loop.
5
+ * Can be used both as a module (for starting daemon from CLI) and
6
+ * as a direct entry point (when running as daemon process).
7
+ */
8
+ import { spawn } from 'child_process';
9
+ import { fileURLToPath } from 'url';
10
+ import { ProcmanDaemon } from './procman-daemon.js';
11
+ import { DataDirectory } from './data-directory.js';
12
+ import { PIDManager } from './pid-manager.js';
13
+ // Get current file path for ES modules
14
+ const __filename = fileURLToPath(import.meta.url);
15
+ /**
16
+ * Check if daemon is currently running
17
+ */
18
+ export async function isDaemonRunning() {
19
+ try {
20
+ const dataDirectory = new DataDirectory(process.env.PROCMAN_SOCKET_PATH);
21
+ await dataDirectory.ensureDataDirectory();
22
+ const pidManager = new PIDManager(dataDirectory);
23
+ return await pidManager.isDaemonRunning();
24
+ }
25
+ catch {
26
+ return false;
27
+ }
28
+ }
29
+ /**
30
+ * Start daemon as a detached child process
31
+ * @param args Additional arguments to pass to daemon
32
+ * @returns PID of started daemon process
33
+ */
34
+ export async function startDaemon(args = []) {
35
+ // Check if daemon is already running
36
+ if (await isDaemonRunning()) {
37
+ throw new Error('Daemon is already running');
38
+ }
39
+ // Prepare arguments for daemon process
40
+ const daemonArgs = [__filename, '--daemon', ...args];
41
+ // Spawn detached daemon process
42
+ const child = spawn(process.execPath, daemonArgs, {
43
+ detached: true,
44
+ stdio: 'ignore',
45
+ });
46
+ // Ensure child process started successfully
47
+ if (!child.pid) {
48
+ throw new Error('Failed to start daemon process');
49
+ }
50
+ // Unref the child so parent process can exit
51
+ child.unref();
52
+ return child.pid;
53
+ }
54
+ /**
55
+ * Main daemon process function
56
+ * This runs in the actual daemon process (detached child)
57
+ */
58
+ async function runDaemonProcess(args) {
59
+ const daemonStartTime = Date.now();
60
+ console.error('[DEBUG-DAEMON-MAIN] Starting procman daemon...');
61
+ console.error('[DEBUG-DAEMON-MAIN] Daemon process info:', JSON.stringify({
62
+ processId: process.pid,
63
+ parentPid: process.ppid,
64
+ arguments: args,
65
+ startTime: new Date().toISOString(),
66
+ workingDirectory: process.cwd(),
67
+ environment: {
68
+ HOME: process.env.HOME,
69
+ PROCMAN_SOCKET_PATH: process.env.PROCMAN_SOCKET_PATH,
70
+ USER: process.env.USER,
71
+ NODE_ENV: process.env.NODE_ENV,
72
+ },
73
+ }, null, 2));
74
+ try {
75
+ console.error('[DEBUG-DAEMON-MAIN] Creating ProcmanDaemon instance...');
76
+ const daemon = new ProcmanDaemon();
77
+ console.error('[DEBUG-DAEMON-MAIN] Setting up daemon event handlers...');
78
+ // Setup logging for daemon events
79
+ daemon.on('stateChange', (state) => {
80
+ console.error(`[DEBUG-DAEMON-MAIN] Daemon state changed to: ${state}`);
81
+ });
82
+ daemon.on('error', (error) => {
83
+ console.error('[DEBUG-DAEMON-MAIN] Daemon error:', error);
84
+ });
85
+ daemon.on('componentStarted', (componentName) => {
86
+ console.error(`[DEBUG-DAEMON-MAIN] Component started: ${componentName}`);
87
+ });
88
+ daemon.on('componentStopped', (componentName) => {
89
+ console.error(`[DEBUG-DAEMON-MAIN] Component stopped: ${componentName}`);
90
+ });
91
+ console.error('[DEBUG-DAEMON-MAIN] Starting daemon core services...');
92
+ // Start the daemon
93
+ await daemon.start();
94
+ const startupTime = Date.now() - daemonStartTime;
95
+ console.error('[DEBUG-DAEMON-MAIN] ✓ Procman daemon started successfully');
96
+ console.error('[DEBUG-DAEMON-MAIN] Startup stats:', JSON.stringify({
97
+ startupTimeMs: startupTime,
98
+ daemonPid: process.pid,
99
+ timestamp: new Date().toISOString(),
100
+ }, null, 2));
101
+ // Load configuration if provided
102
+ const configIndex = args.indexOf('--config');
103
+ if (configIndex !== -1 && args[configIndex + 1]) {
104
+ const configPath = args[configIndex + 1];
105
+ console.error(`[DEBUG-DAEMON-MAIN] Loading configuration from: ${configPath}`);
106
+ try {
107
+ await daemon.loadConfig(configPath);
108
+ console.error('[DEBUG-DAEMON-MAIN] ✓ Configuration loaded successfully');
109
+ }
110
+ catch (configError) {
111
+ console.error('[DEBUG-DAEMON-MAIN] ❌ Failed to load configuration:', configError);
112
+ }
113
+ }
114
+ else {
115
+ console.error('[DEBUG-DAEMON-MAIN] No configuration file specified');
116
+ }
117
+ console.error('[DEBUG-DAEMON-MAIN] Daemon is now ready to accept connections');
118
+ // Keep process alive - the daemon will handle shutdown via signals
119
+ // The ProcmanDaemon class sets up signal handlers that will call daemon.stop()
120
+ }
121
+ catch (error) {
122
+ const startupTime = Date.now() - daemonStartTime;
123
+ console.error('[DEBUG-DAEMON-MAIN] ❌ Failed to start daemon');
124
+ console.error('[DEBUG-DAEMON-MAIN] Failure stats:', JSON.stringify({
125
+ startupTimeMs: startupTime,
126
+ processId: process.pid,
127
+ errorMessage: error instanceof Error ? error.message : String(error),
128
+ errorStack: error instanceof Error ? error.stack : undefined,
129
+ }, null, 2));
130
+ console.error('Failed to start daemon:', error);
131
+ process.exit(1);
132
+ }
133
+ }
134
+ /**
135
+ * Entry point when this file is executed directly
136
+ */
137
+ if (import.meta.url === `file://${process.argv[1]}`) {
138
+ // Check if this should run as daemon process
139
+ const isDaemonMode = process.argv.includes('--daemon');
140
+ if (isDaemonMode) {
141
+ // Running as daemon process
142
+ runDaemonProcess(process.argv.slice(2)).catch((error) => {
143
+ console.error('Daemon process failed:', error);
144
+ process.exit(1);
145
+ });
146
+ }
147
+ else {
148
+ // Running as CLI command to start daemon
149
+ startDaemon(process.argv.slice(2))
150
+ .then((pid) => {
151
+ console.log(`Daemon started with PID: ${pid}`);
152
+ process.exit(0);
153
+ })
154
+ .catch((error) => {
155
+ console.error('Failed to start daemon:', error);
156
+ process.exit(1);
157
+ });
158
+ }
159
+ }
160
+ //# sourceMappingURL=daemon-main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-main.js","sourceRoot":"","sources":["../../../src/daemon/daemon-main.ts"],"names":[],"mappings":"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"}