@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,38 @@
1
+ /**
2
+ * Structured Logging System using Winston
3
+ *
4
+ * This module provides a centralized logging system with structured JSON output,
5
+ * log rotation, and configurable log levels for the procman system.
6
+ */
7
+ import * as winston from 'winston';
8
+ /**
9
+ * Create a logger instance for a specific module
10
+ * @param moduleName The name of the module using the logger
11
+ * @returns Winston logger instance
12
+ */
13
+ export declare function createLogger(moduleName: string): winston.Logger;
14
+ /**
15
+ * Default logger for shared utilities
16
+ */
17
+ export declare const logger: winston.Logger;
18
+ /**
19
+ * Log level type is exported from types.ts to avoid conflicts
20
+ */
21
+ /**
22
+ * Helper function to log process lifecycle events
23
+ */
24
+ export declare function logProcessEvent(logger: winston.Logger, event: string, processName: string, metadata?: Record<string, unknown>): void;
25
+ /**
26
+ * Helper function to log process errors
27
+ */
28
+ export declare function logProcessError(logger: winston.Logger, error: Error | unknown, processName: string, context?: string): void;
29
+ /**
30
+ * Helper function to log performance metrics
31
+ */
32
+ export declare function logPerformanceMetrics(logger: winston.Logger, processName: string, metrics: {
33
+ memory?: number;
34
+ cpu?: number;
35
+ uptime?: number;
36
+ restarts?: number;
37
+ }): void;
38
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/shared/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAqCnC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAkF/D;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,gBAAyB,CAAC;AAE7C;;GAEG;AAEH;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,IAAI,CAON;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,KAAK,EAAE,KAAK,GAAG,OAAO,EACtB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAUN;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,IAAI,CAMN"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Structured Logging System using Winston
3
+ *
4
+ * This module provides a centralized logging system with structured JSON output,
5
+ * log rotation, and configurable log levels for the procman system.
6
+ */
7
+ import * as winston from 'winston';
8
+ import * as path from 'path';
9
+ import * as os from 'os';
10
+ // Log levels
11
+ const LOG_LEVELS = {
12
+ error: 0,
13
+ warn: 1,
14
+ info: 2,
15
+ debug: 3,
16
+ };
17
+ // Check if running in test environment
18
+ const isTestEnvironment = process.env.NODE_ENV === 'test' || process.env.VITEST === 'true';
19
+ // Get log level from environment or default
20
+ const getLogLevel = () => {
21
+ const envLevel = process.env.LOG_LEVEL?.toLowerCase();
22
+ if (envLevel && envLevel in LOG_LEVELS) {
23
+ return envLevel;
24
+ }
25
+ // In test environment, suppress logs unless explicitly set
26
+ return isTestEnvironment ? 'error' : 'info';
27
+ };
28
+ // Log directory
29
+ const getLogDirectory = () => {
30
+ // Enhanced HOME detection: process.env.HOME || os.homedir()
31
+ const homeDir = process.env.HOME || os.homedir();
32
+ if (!homeDir) {
33
+ throw new Error('Unable to determine home directory for log path');
34
+ }
35
+ return path.join(homeDir, '.masuidrive-procman', 'logs');
36
+ };
37
+ /**
38
+ * Create a logger instance for a specific module
39
+ * @param moduleName The name of the module using the logger
40
+ * @returns Winston logger instance
41
+ */
42
+ export function createLogger(moduleName) {
43
+ const logDir = getLogDirectory();
44
+ // Define log format
45
+ const logFormat = winston.format.combine(winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss.SSS' }), winston.format.errors({ stack: true }), winston.format.json());
46
+ // Console format for development
47
+ const consoleFormat = winston.format.combine(winston.format.colorize(), winston.format.timestamp({ format: 'HH:mm:ss.SSS' }), winston.format.printf(({ timestamp, level, message, module, ...metadata }) => {
48
+ let log = `${timestamp} [${module || moduleName}] ${level}: ${message}`;
49
+ // Add metadata if present
50
+ const metaKeys = Object.keys(metadata).filter((key) => key !== 'stack');
51
+ if (metaKeys.length > 0) {
52
+ const metaString = metaKeys
53
+ .map((key) => `${key}=${JSON.stringify(metadata[key])}`)
54
+ .join(' ');
55
+ log += ` ${metaString}`;
56
+ }
57
+ // Add stack trace if present
58
+ if (metadata.stack) {
59
+ log += `\n${metadata.stack}`;
60
+ }
61
+ return log;
62
+ }));
63
+ // Create transports array
64
+ const transports = [];
65
+ // Console transport (except in test environment)
66
+ if (!isTestEnvironment) {
67
+ transports.push(new winston.transports.Console({
68
+ format: consoleFormat,
69
+ }));
70
+ }
71
+ // File transports (only if not in test environment)
72
+ if (!isTestEnvironment && process.env.LOG_TO_FILE !== 'false') {
73
+ // Combined log file
74
+ transports.push(new winston.transports.File({
75
+ filename: path.join(logDir, 'procman.log'),
76
+ format: logFormat,
77
+ maxsize: 10 * 1024 * 1024, // 10MB
78
+ maxFiles: 5,
79
+ }));
80
+ // Error log file
81
+ transports.push(new winston.transports.File({
82
+ filename: path.join(logDir, 'procman-error.log'),
83
+ level: 'error',
84
+ format: logFormat,
85
+ maxsize: 10 * 1024 * 1024, // 10MB
86
+ maxFiles: 5,
87
+ }));
88
+ }
89
+ // Create logger instance
90
+ const logger = winston.createLogger({
91
+ level: getLogLevel(),
92
+ levels: LOG_LEVELS,
93
+ defaultMeta: { module: moduleName },
94
+ transports,
95
+ });
96
+ return logger;
97
+ }
98
+ /**
99
+ * Default logger for shared utilities
100
+ */
101
+ export const logger = createLogger('shared');
102
+ /**
103
+ * Log level type is exported from types.ts to avoid conflicts
104
+ */
105
+ /**
106
+ * Helper function to log process lifecycle events
107
+ */
108
+ export function logProcessEvent(logger, event, processName, metadata) {
109
+ logger.info(`Process ${event}`, {
110
+ event,
111
+ processName,
112
+ timestamp: Date.now(),
113
+ ...metadata,
114
+ });
115
+ }
116
+ /**
117
+ * Helper function to log process errors
118
+ */
119
+ export function logProcessError(logger, error, processName, context) {
120
+ const errorObj = error instanceof Error ? error : new Error(String(error));
121
+ logger.error(`Process error${context ? ` in ${context}` : ''}`, {
122
+ processName,
123
+ error: errorObj.message,
124
+ stack: errorObj.stack,
125
+ context,
126
+ timestamp: Date.now(),
127
+ });
128
+ }
129
+ /**
130
+ * Helper function to log performance metrics
131
+ */
132
+ export function logPerformanceMetrics(logger, processName, metrics) {
133
+ logger.debug('Process performance metrics', {
134
+ processName,
135
+ metrics,
136
+ timestamp: Date.now(),
137
+ });
138
+ }
139
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/shared/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Log Management Type Definitions
3
+ *
4
+ * This module defines basic types for log management in the procman system.
5
+ */
6
+ /**
7
+ * Basic log entry structure
8
+ */
9
+ export interface LogEntry {
10
+ /** Timestamp when the log was created */
11
+ timestamp: number;
12
+ /** Log level */
13
+ level: 'info' | 'warn' | 'error';
14
+ /** Log message */
15
+ message: string;
16
+ /** Application name */
17
+ app: string;
18
+ /** Namespace */
19
+ namespace: string;
20
+ /** Log type (stdout or stderr) */
21
+ type: 'stdout' | 'stderr';
22
+ }
23
+ /**
24
+ * Options for log retrieval and display
25
+ */
26
+ export interface LogOptions {
27
+ /** Number of lines to retrieve */
28
+ lines?: number;
29
+ /** Use human-readable format */
30
+ human?: boolean;
31
+ /** Enable streaming mode */
32
+ stream?: boolean;
33
+ /** Enable follow mode (for streaming) */
34
+ follow?: boolean;
35
+ /** Filter by log level */
36
+ level?: Array<'info' | 'warn' | 'error'>;
37
+ /** Filter by log type */
38
+ type?: Array<'stdout' | 'stderr'>;
39
+ /** Show logs since timestamp */
40
+ since?: number;
41
+ /** Show logs until timestamp */
42
+ until?: number;
43
+ }
44
+ /**
45
+ * Supported log output formats
46
+ */
47
+ export type LogFormat = 'basic' | 'json' | 'csv' | 'pretty' | 'raw' | 'compact';
48
+ /**
49
+ * Type guard to check if an object is a LogEntry
50
+ * Note: This performs complete validation of all required fields.
51
+ */
52
+ export declare function isLogEntry(obj: unknown): obj is LogEntry;
53
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/shared/logs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB;IAChB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACjC,kBAAkB;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC3B;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yCAAyC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACzC,yBAAyB;IACzB,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAClC,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAMhF;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,QAAQ,CAexD"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Log Management Type Definitions
3
+ *
4
+ * This module defines basic types for log management in the procman system.
5
+ */
6
+ // =============================================================================
7
+ // Type Guards
8
+ // =============================================================================
9
+ /**
10
+ * Type guard to check if an object is a LogEntry
11
+ * Note: This performs complete validation of all required fields.
12
+ */
13
+ export function isLogEntry(obj) {
14
+ if (typeof obj !== 'object' || obj === null)
15
+ return false;
16
+ const entry = obj;
17
+ return (typeof entry.timestamp === 'number' &&
18
+ (entry.level === 'info' ||
19
+ entry.level === 'warn' ||
20
+ entry.level === 'error') &&
21
+ typeof entry.message === 'string' &&
22
+ typeof entry.app === 'string' &&
23
+ typeof entry.namespace === 'string' &&
24
+ (entry.type === 'stdout' || entry.type === 'stderr'));
25
+ }
26
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/shared/logs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA2DH,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAE1D,MAAM,KAAK,GAAG,GAA8B,CAAC;IAE7C,OAAO,CACL,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM;YACrB,KAAK,CAAC,KAAK,KAAK,MAAM;YACtB,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC;QAC1B,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QACjC,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;QAC7B,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CACrD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Process Management Type Definitions
3
+ *
4
+ * This module defines basic types for process management in the procman system.
5
+ */
6
+ /**
7
+ * Possible states of a managed process
8
+ */
9
+ export type ProcessStatus = 'stopped' | 'starting' | 'online' | 'stopping' | 'errored' | 'max-memory';
10
+ /**
11
+ * Information about a managed process
12
+ */
13
+ export interface ProcessInfo {
14
+ /** Process name */
15
+ name: string;
16
+ /** Process namespace */
17
+ namespace: string;
18
+ /** Current process status */
19
+ status: ProcessStatus;
20
+ /** Process ID (null if not running) */
21
+ pid: number | null;
22
+ /** Process uptime in milliseconds */
23
+ uptime: number;
24
+ /** Memory usage in bytes */
25
+ memory: number;
26
+ /** CPU usage percentage */
27
+ cpu: number;
28
+ /** Number of restarts */
29
+ restarts: number;
30
+ /** Optional note */
31
+ note?: string;
32
+ }
33
+ /**
34
+ * Type guard to check if a string is a valid ProcessStatus
35
+ */
36
+ export declare function isValidProcessStatus(status: string): status is ProcessStatus;
37
+ /**
38
+ * Type guard to check if an object is a ProcessInfo
39
+ * Note: This performs complete validation of all required fields.
40
+ */
41
+ export declare function isProcessInfo(obj: unknown): obj is ProcessInfo;
42
+ /**
43
+ * Process state change record for history tracking
44
+ */
45
+ export interface ProcessStateChange {
46
+ /** Timestamp of the state change */
47
+ timestamp: number;
48
+ /** Previous status */
49
+ from: ProcessStatus;
50
+ /** New status */
51
+ to: ProcessStatus;
52
+ /** Optional reason for the change */
53
+ reason?: string;
54
+ }
55
+ /**
56
+ * Memory usage sample for history tracking
57
+ */
58
+ export interface MemorySample {
59
+ /** Timestamp of the measurement */
60
+ timestamp: number;
61
+ /** Memory usage in bytes */
62
+ usage: number;
63
+ }
64
+ /**
65
+ * CPU usage sample for history tracking
66
+ */
67
+ export interface CPUSample {
68
+ /** Timestamp of the measurement */
69
+ timestamp: number;
70
+ /** CPU usage percentage */
71
+ usage: number;
72
+ }
73
+ /**
74
+ * Persisted process information for state restoration
75
+ */
76
+ export interface PersistedManagedProcessInfo {
77
+ /** Process name */
78
+ name: string;
79
+ /** Process status */
80
+ status: ProcessStatus;
81
+ /** Process ID (null after manager restart) */
82
+ pid: number | null;
83
+ /** Restart count */
84
+ restartCount: number;
85
+ /** Auto-restart enabled flag */
86
+ autoRestartEnabled: boolean;
87
+ /** Last start time timestamp */
88
+ lastStartTime: number | null;
89
+ /** State change history */
90
+ stateHistory: ProcessStateChange[];
91
+ /** Memory usage history */
92
+ memoryHistory: MemorySample[];
93
+ /** CPU usage history */
94
+ cpuHistory: CPUSample[];
95
+ /** Consecutive restart failures */
96
+ consecutiveRestarts: number;
97
+ /** Last restart time timestamp */
98
+ lastRestartTime: number | null;
99
+ /** Last crash time timestamp */
100
+ lastCrashTime: number | null;
101
+ }
102
+ //# sourceMappingURL=process.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/shared/process.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,GACT,YAAY,CAAC;AAMjB;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,uCAAuC;IACvC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,aAAa,CAU5E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,WAAW,CAwB9D;AAMD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,IAAI,EAAE,aAAa,CAAC;IACpB,iBAAiB;IACjB,EAAE,EAAE,aAAa,CAAC;IAClB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AAMD;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,8CAA8C;IAC9C,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gCAAgC;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,2BAA2B;IAC3B,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACnC,2BAA2B;IAC3B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,wBAAwB;IACxB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,mCAAmC;IACnC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kCAAkC;IAClC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gCAAgC;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Process Management Type Definitions
3
+ *
4
+ * This module defines basic types for process management in the procman system.
5
+ */
6
+ // =============================================================================
7
+ // Type Guards
8
+ // =============================================================================
9
+ /**
10
+ * Type guard to check if a string is a valid ProcessStatus
11
+ */
12
+ export function isValidProcessStatus(status) {
13
+ const validStatuses = [
14
+ 'stopped',
15
+ 'starting',
16
+ 'online',
17
+ 'stopping',
18
+ 'errored',
19
+ 'max-memory',
20
+ ];
21
+ return validStatuses.includes(status);
22
+ }
23
+ /**
24
+ * Type guard to check if an object is a ProcessInfo
25
+ * Note: This performs complete validation of all required fields.
26
+ */
27
+ export function isProcessInfo(obj) {
28
+ if (typeof obj !== 'object' || obj === null)
29
+ return false;
30
+ const info = obj;
31
+ // Check required fields
32
+ if (typeof info.name !== 'string' || !info.name.trim())
33
+ return false;
34
+ if (typeof info.namespace !== 'string')
35
+ return false;
36
+ if (!isValidProcessStatus(String(info.status)))
37
+ return false;
38
+ if (typeof info.pid !== 'number' && info.pid !== null)
39
+ return false;
40
+ if (typeof info.uptime !== 'number' || info.uptime < 0)
41
+ return false;
42
+ if (typeof info.memory !== 'number' || info.memory < 0)
43
+ return false;
44
+ if (typeof info.cpu !== 'number' || info.cpu < 0)
45
+ return false;
46
+ if (typeof info.restarts !== 'number' ||
47
+ info.restarts < 0 ||
48
+ !Number.isInteger(info.restarts))
49
+ return false;
50
+ // Check optional fields
51
+ if (info.note !== undefined && typeof info.note !== 'string')
52
+ return false;
53
+ return true;
54
+ }
55
+ //# sourceMappingURL=process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/shared/process.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6CH,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,MAAM,aAAa,GAAoB;QACrC,SAAS;QACT,UAAU;QACV,QAAQ;QACR,UAAU;QACV,SAAS;QACT,YAAY;KACb,CAAC;IACF,OAAO,aAAa,CAAC,QAAQ,CAAC,MAAuB,CAAC,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAE1D,MAAM,IAAI,GAAG,GAA8B,CAAC;IAE5C,wBAAwB;IACxB,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IACrE,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACpE,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACrE,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACrE,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/D,IACE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;QACjC,IAAI,CAAC,QAAQ,GAAG,CAAC;QACjB,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;QAEhC,OAAO,KAAK,CAAC;IAEf,wBAAwB;IACxB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE3E,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Utility types for procman constants
3
+ *
4
+ * This file contains utility types that work with the system constants,
5
+ * providing type safety and better developer experience.
6
+ */
7
+ import { MEMORY_UNITS, LOG_LEVELS, LOG_TYPES } from './constants.js';
8
+ export type MemoryUnit = (typeof MEMORY_UNITS)[number];
9
+ export type LogLevel = (typeof LOG_LEVELS)[number];
10
+ export type LogType = (typeof LOG_TYPES)[number];
11
+ export type Platform = 'WINDOWS' | 'UNIX';
12
+ export type MemorySize = `${number}${MemoryUnit}`;
13
+ export type FilePath = string;
14
+ export type ProcessSignal = 'SIGTERM' | 'SIGKILL' | number;
15
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGrE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAGvD,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAGnD,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAGjD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAG1C,MAAM,MAAM,UAAU,GAAG,GAAG,MAAM,GAAG,UAAU,EAAE,CAAC;AAGlD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAG9B,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Utility types for procman constants
3
+ *
4
+ * This file contains utility types that work with the system constants,
5
+ * providing type safety and better developer experience.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Basic type definitions for procman
3
+ */
4
+ export interface ProcessInfo {
5
+ pid: number;
6
+ name: string;
7
+ status: 'running' | 'stopped' | 'crashed';
8
+ }
9
+ export interface ServiceConfig {
10
+ name: string;
11
+ command: string;
12
+ cwd?: string;
13
+ env?: Record<string, string>;
14
+ }
15
+ export interface CliOptions {
16
+ verbose?: boolean;
17
+ config?: string;
18
+ }
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Basic type definitions for procman
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,30 @@
1
+ import { EventEmitter } from 'events';
2
+ /**
3
+ * Interface for disposable resources
4
+ */
5
+ interface Disposable {
6
+ dispose(): Promise<void>;
7
+ }
8
+ /**
9
+ * Simple helper for tracking and cleaning up EventEmitter listeners
10
+ *
11
+ * This is a lightweight alternative to complex listener management systems.
12
+ * Based on Uncle Bob's recommendation for explicit, simple resource cleanup.
13
+ */
14
+ export declare class EventCleanupHelper implements Disposable {
15
+ private listeners;
16
+ /**
17
+ * Track a listener for later cleanup
18
+ */
19
+ track(emitter: EventEmitter, event: string | symbol, listener: (...args: any[]) => void): void;
20
+ /**
21
+ * Clean up all tracked listeners
22
+ */
23
+ dispose(): Promise<void>;
24
+ /**
25
+ * Get count of tracked listeners (for debugging)
26
+ */
27
+ getListenerCount(): number;
28
+ }
29
+ export {};
30
+ //# sourceMappingURL=event-cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-cleanup.d.ts","sourceRoot":"","sources":["../../../src/utils/event-cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC;;GAEG;AACH,UAAU,UAAU;IAClB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,UAAU;IACnD,OAAO,CAAC,SAAS,CAIT;IAER;;OAEG;IACH,KAAK,CACH,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GACjC,IAAI;IAKP;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;OAEG;IACH,gBAAgB,IAAI,MAAM;CAG3B"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Simple helper for tracking and cleaning up EventEmitter listeners
3
+ *
4
+ * This is a lightweight alternative to complex listener management systems.
5
+ * Based on Uncle Bob's recommendation for explicit, simple resource cleanup.
6
+ */
7
+ export class EventCleanupHelper {
8
+ listeners = [];
9
+ /**
10
+ * Track a listener for later cleanup
11
+ */
12
+ track(emitter, event, listener) {
13
+ emitter.on(event, listener);
14
+ this.listeners.push({ emitter, event, listener });
15
+ }
16
+ /**
17
+ * Clean up all tracked listeners
18
+ */
19
+ async dispose() {
20
+ for (const { emitter, event, listener } of this.listeners) {
21
+ emitter.removeListener(event, listener);
22
+ }
23
+ this.listeners.length = 0;
24
+ }
25
+ /**
26
+ * Get count of tracked listeners (for debugging)
27
+ */
28
+ getListenerCount() {
29
+ return this.listeners.length;
30
+ }
31
+ }
32
+ //# sourceMappingURL=event-cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-cleanup.js","sourceRoot":"","sources":["../../../src/utils/event-cleanup.ts"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IACrB,SAAS,GAIZ,EAAE,CAAC;IAER;;OAEG;IACH,KAAK,CACH,OAAqB,EACrB,KAAsB,EACtB,QAAkC;QAElC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1D,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;IAC/B,CAAC;CACF"}