synapse-mcp 1.0.0 → 1.0.2

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 (413) hide show
  1. package/README.md +1820 -147
  2. package/dist/constants.d.ts +10 -4
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +18 -8
  5. package/dist/constants.js.map +1 -1
  6. package/dist/events/emitter.d.ts +63 -0
  7. package/dist/events/emitter.d.ts.map +1 -0
  8. package/dist/events/emitter.js +112 -0
  9. package/dist/events/emitter.js.map +1 -0
  10. package/dist/events/index.d.ts +3 -0
  11. package/dist/events/index.d.ts.map +1 -0
  12. package/dist/events/index.js +3 -0
  13. package/dist/events/index.js.map +1 -0
  14. package/dist/events/types.d.ts +51 -0
  15. package/dist/events/types.d.ts.map +1 -0
  16. package/dist/events/types.js +3 -0
  17. package/dist/events/types.js.map +1 -0
  18. package/dist/formatters/compose.d.ts +185 -0
  19. package/dist/formatters/compose.d.ts.map +1 -0
  20. package/dist/formatters/compose.js +397 -0
  21. package/dist/formatters/compose.js.map +1 -0
  22. package/dist/formatters/container.d.ts +84 -0
  23. package/dist/formatters/container.d.ts.map +1 -0
  24. package/dist/formatters/container.js +323 -0
  25. package/dist/formatters/container.js.map +1 -0
  26. package/dist/formatters/diagnostics.d.ts +20 -0
  27. package/dist/formatters/diagnostics.d.ts.map +1 -0
  28. package/dist/formatters/diagnostics.js +73 -0
  29. package/dist/formatters/diagnostics.js.map +1 -0
  30. package/dist/formatters/docker.d.ts +139 -0
  31. package/dist/formatters/docker.d.ts.map +1 -0
  32. package/dist/formatters/docker.js +216 -0
  33. package/dist/formatters/docker.js.map +1 -0
  34. package/dist/formatters/host.d.ts +137 -0
  35. package/dist/formatters/host.d.ts.map +1 -0
  36. package/dist/formatters/host.js +198 -0
  37. package/dist/formatters/host.js.map +1 -0
  38. package/dist/formatters/index.d.ts +17 -270
  39. package/dist/formatters/index.d.ts.map +1 -1
  40. package/dist/formatters/index.js +21 -456
  41. package/dist/formatters/index.js.map +1 -1
  42. package/dist/formatters/scout.d.ts +424 -0
  43. package/dist/formatters/scout.d.ts.map +1 -0
  44. package/dist/formatters/scout.js +687 -0
  45. package/dist/formatters/scout.js.map +1 -0
  46. package/dist/formatters/strategy.d.ts +105 -0
  47. package/dist/formatters/strategy.d.ts.map +1 -0
  48. package/dist/formatters/strategy.js +120 -0
  49. package/dist/formatters/strategy.js.map +1 -0
  50. package/dist/formatters/utils.d.ts +84 -0
  51. package/dist/formatters/utils.d.ts.map +1 -0
  52. package/dist/formatters/utils.js +129 -0
  53. package/dist/formatters/utils.js.map +1 -0
  54. package/dist/health-rate-limiter.d.ts +59 -0
  55. package/dist/health-rate-limiter.d.ts.map +1 -0
  56. package/dist/health-rate-limiter.js +159 -0
  57. package/dist/health-rate-limiter.js.map +1 -0
  58. package/dist/index.js +61 -100
  59. package/dist/index.js.map +1 -1
  60. package/dist/middleware/async-handler.d.ts +62 -0
  61. package/dist/middleware/async-handler.d.ts.map +1 -0
  62. package/dist/middleware/async-handler.js +58 -0
  63. package/dist/middleware/async-handler.js.map +1 -0
  64. package/dist/middleware/auth.d.ts +32 -0
  65. package/dist/middleware/auth.d.ts.map +1 -0
  66. package/dist/middleware/auth.js +63 -0
  67. package/dist/middleware/auth.js.map +1 -0
  68. package/dist/middleware/csrf-protection.d.ts +58 -0
  69. package/dist/middleware/csrf-protection.d.ts.map +1 -0
  70. package/dist/middleware/csrf-protection.js +123 -0
  71. package/dist/middleware/csrf-protection.js.map +1 -0
  72. package/dist/middleware/error-handler.d.ts +49 -0
  73. package/dist/middleware/error-handler.d.ts.map +1 -0
  74. package/dist/middleware/error-handler.js +90 -0
  75. package/dist/middleware/error-handler.js.map +1 -0
  76. package/dist/middleware/error-mapper.d.ts +44 -0
  77. package/dist/middleware/error-mapper.d.ts.map +1 -0
  78. package/dist/middleware/error-mapper.js +127 -0
  79. package/dist/middleware/error-mapper.js.map +1 -0
  80. package/dist/middleware/index.d.ts +13 -0
  81. package/dist/middleware/index.d.ts.map +1 -0
  82. package/dist/middleware/index.js +13 -0
  83. package/dist/middleware/index.js.map +1 -0
  84. package/dist/middleware/request-id.d.ts +22 -0
  85. package/dist/middleware/request-id.d.ts.map +1 -0
  86. package/dist/middleware/request-id.js +31 -0
  87. package/dist/middleware/request-id.js.map +1 -0
  88. package/dist/middleware/types.d.ts +33 -0
  89. package/dist/middleware/types.d.ts.map +1 -0
  90. package/dist/middleware/types.js +2 -0
  91. package/dist/middleware/types.js.map +1 -0
  92. package/dist/schemas/common.d.ts +205 -8
  93. package/dist/schemas/common.d.ts.map +1 -1
  94. package/dist/schemas/common.js +290 -17
  95. package/dist/schemas/common.js.map +1 -1
  96. package/dist/schemas/flux/compose.d.ts +307 -44
  97. package/dist/schemas/flux/compose.d.ts.map +1 -1
  98. package/dist/schemas/flux/compose.js +74 -48
  99. package/dist/schemas/flux/compose.js.map +1 -1
  100. package/dist/schemas/flux/container.d.ts +423 -56
  101. package/dist/schemas/flux/container.d.ts.map +1 -1
  102. package/dist/schemas/flux/container.js +83 -61
  103. package/dist/schemas/flux/container.js.map +1 -1
  104. package/dist/schemas/flux/docker.d.ts +254 -37
  105. package/dist/schemas/flux/docker.d.ts.map +1 -1
  106. package/dist/schemas/flux/docker.js +69 -39
  107. package/dist/schemas/flux/docker.js.map +1 -1
  108. package/dist/schemas/flux/host.d.ts +312 -29
  109. package/dist/schemas/flux/host.d.ts.map +1 -1
  110. package/dist/schemas/flux/host.js +74 -31
  111. package/dist/schemas/flux/host.js.map +1 -1
  112. package/dist/schemas/flux/index.d.ts +503 -11
  113. package/dist/schemas/flux/index.d.ts.map +1 -1
  114. package/dist/schemas/flux/index.js +34 -70
  115. package/dist/schemas/flux/index.js.map +1 -1
  116. package/dist/schemas/host-config.d.ts +76 -0
  117. package/dist/schemas/host-config.d.ts.map +1 -0
  118. package/dist/schemas/host-config.js +105 -0
  119. package/dist/schemas/host-config.js.map +1 -0
  120. package/dist/schemas/scout/index.d.ts +80 -23
  121. package/dist/schemas/scout/index.d.ts.map +1 -1
  122. package/dist/schemas/scout/index.js +26 -11
  123. package/dist/schemas/scout/index.js.map +1 -1
  124. package/dist/schemas/scout/logs.d.ts +17 -5
  125. package/dist/schemas/scout/logs.d.ts.map +1 -1
  126. package/dist/schemas/scout/logs.js +41 -31
  127. package/dist/schemas/scout/logs.js.map +1 -1
  128. package/dist/schemas/scout/simple.d.ts +126 -11
  129. package/dist/schemas/scout/simple.d.ts.map +1 -1
  130. package/dist/schemas/scout/simple.js +112 -57
  131. package/dist/schemas/scout/simple.js.map +1 -1
  132. package/dist/schemas/scout/zfs.d.ts +17 -5
  133. package/dist/schemas/scout/zfs.d.ts.map +1 -1
  134. package/dist/schemas/scout/zfs.js +34 -25
  135. package/dist/schemas/scout/zfs.js.map +1 -1
  136. package/dist/services/cache-layer.d.ts +160 -0
  137. package/dist/services/cache-layer.d.ts.map +1 -0
  138. package/dist/services/cache-layer.js +138 -0
  139. package/dist/services/cache-layer.js.map +1 -0
  140. package/dist/services/compose-cache.d.ts +75 -0
  141. package/dist/services/compose-cache.d.ts.map +1 -0
  142. package/dist/services/compose-cache.js +178 -0
  143. package/dist/services/compose-cache.js.map +1 -0
  144. package/dist/services/compose-discovery.d.ts +46 -0
  145. package/dist/services/compose-discovery.d.ts.map +1 -0
  146. package/dist/services/compose-discovery.js +219 -0
  147. package/dist/services/compose-discovery.js.map +1 -0
  148. package/dist/services/compose-project-lister.d.ts +27 -0
  149. package/dist/services/compose-project-lister.d.ts.map +1 -0
  150. package/dist/services/compose-project-lister.js +71 -0
  151. package/dist/services/compose-project-lister.js.map +1 -0
  152. package/dist/services/compose-scanner.d.ts +63 -0
  153. package/dist/services/compose-scanner.d.ts.map +1 -0
  154. package/dist/services/compose-scanner.js +253 -0
  155. package/dist/services/compose-scanner.js.map +1 -0
  156. package/dist/services/compose.d.ts +64 -28
  157. package/dist/services/compose.d.ts.map +1 -1
  158. package/dist/services/compose.js +220 -98
  159. package/dist/services/compose.js.map +1 -1
  160. package/dist/services/config-loader.d.ts +23 -0
  161. package/dist/services/config-loader.d.ts.map +1 -0
  162. package/dist/services/config-loader.js +124 -0
  163. package/dist/services/config-loader.js.map +1 -0
  164. package/dist/services/config-service.d.ts +38 -0
  165. package/dist/services/config-service.d.ts.map +1 -0
  166. package/dist/services/config-service.js +225 -0
  167. package/dist/services/config-service.js.map +1 -0
  168. package/dist/services/container-host-map-cache.d.ts +121 -0
  169. package/dist/services/container-host-map-cache.d.ts.map +1 -0
  170. package/dist/services/container-host-map-cache.js +188 -0
  171. package/dist/services/container-host-map-cache.js.map +1 -0
  172. package/dist/services/container.d.ts +194 -6
  173. package/dist/services/container.d.ts.map +1 -1
  174. package/dist/services/container.js +386 -11
  175. package/dist/services/container.js.map +1 -1
  176. package/dist/services/diagnostics.d.ts +57 -0
  177. package/dist/services/diagnostics.d.ts.map +1 -0
  178. package/dist/services/diagnostics.js +271 -0
  179. package/dist/services/diagnostics.js.map +1 -0
  180. package/dist/services/docker/container-service.d.ts +123 -0
  181. package/dist/services/docker/container-service.d.ts.map +1 -0
  182. package/dist/services/docker/container-service.js +347 -0
  183. package/dist/services/docker/container-service.js.map +1 -0
  184. package/dist/services/docker/image-service.d.ts +82 -0
  185. package/dist/services/docker/image-service.d.ts.map +1 -0
  186. package/dist/services/docker/image-service.js +193 -0
  187. package/dist/services/docker/image-service.js.map +1 -0
  188. package/dist/services/docker/index.d.ts +80 -0
  189. package/dist/services/docker/index.d.ts.map +1 -0
  190. package/dist/services/docker/index.js +103 -0
  191. package/dist/services/docker/index.js.map +1 -0
  192. package/dist/services/docker/network-service.d.ts +22 -0
  193. package/dist/services/docker/network-service.d.ts.map +1 -0
  194. package/dist/services/docker/network-service.js +43 -0
  195. package/dist/services/docker/network-service.js.map +1 -0
  196. package/dist/services/docker/system-service.d.ts +49 -0
  197. package/dist/services/docker/system-service.d.ts.map +1 -0
  198. package/dist/services/docker/system-service.js +215 -0
  199. package/dist/services/docker/system-service.js.map +1 -0
  200. package/dist/services/docker/utils/client-factory.d.ts +56 -0
  201. package/dist/services/docker/utils/client-factory.d.ts.map +1 -0
  202. package/dist/services/docker/utils/client-factory.js +139 -0
  203. package/dist/services/docker/utils/client-factory.js.map +1 -0
  204. package/dist/services/docker/utils/client-manager.d.ts +88 -0
  205. package/dist/services/docker/utils/client-manager.d.ts.map +1 -0
  206. package/dist/services/docker/utils/client-manager.js +124 -0
  207. package/dist/services/docker/utils/client-manager.js.map +1 -0
  208. package/dist/services/docker/utils/exec-handler.d.ts +94 -0
  209. package/dist/services/docker/utils/exec-handler.d.ts.map +1 -0
  210. package/dist/services/docker/utils/exec-handler.js +197 -0
  211. package/dist/services/docker/utils/exec-handler.js.map +1 -0
  212. package/dist/services/docker/utils/formatters.d.ts +13 -0
  213. package/dist/services/docker/utils/formatters.d.ts.map +1 -0
  214. package/dist/services/docker/utils/formatters.js +33 -0
  215. package/dist/services/docker/utils/formatters.js.map +1 -0
  216. package/dist/services/docker/utils/log-parser.d.ts +10 -0
  217. package/dist/services/docker/utils/log-parser.d.ts.map +1 -0
  218. package/dist/services/docker/utils/log-parser.js +48 -0
  219. package/dist/services/docker/utils/log-parser.js.map +1 -0
  220. package/dist/services/docker/utils/stats-calculator.d.ts +68 -0
  221. package/dist/services/docker/utils/stats-calculator.d.ts.map +1 -0
  222. package/dist/services/docker/utils/stats-calculator.js +61 -0
  223. package/dist/services/docker/utils/stats-calculator.js.map +1 -0
  224. package/dist/services/docker/volume-service.d.ts +22 -0
  225. package/dist/services/docker/volume-service.d.ts.map +1 -0
  226. package/dist/services/docker/volume-service.js +48 -0
  227. package/dist/services/docker/volume-service.js.map +1 -0
  228. package/dist/services/docker-interfaces.d.ts +283 -0
  229. package/dist/services/docker-interfaces.d.ts.map +1 -0
  230. package/dist/services/docker-interfaces.js +13 -0
  231. package/dist/services/docker-interfaces.js.map +1 -0
  232. package/dist/services/docker.d.ts +42 -5
  233. package/dist/services/docker.d.ts.map +1 -1
  234. package/dist/services/docker.js +335 -127
  235. package/dist/services/docker.js.map +1 -1
  236. package/dist/services/file-service.d.ts +6 -2
  237. package/dist/services/file-service.d.ts.map +1 -1
  238. package/dist/services/file-service.js +156 -52
  239. package/dist/services/file-service.js.map +1 -1
  240. package/dist/services/host-config-repository.d.ts +133 -0
  241. package/dist/services/host-config-repository.d.ts.map +1 -0
  242. package/dist/services/host-config-repository.js +323 -0
  243. package/dist/services/host-config-repository.js.map +1 -0
  244. package/dist/services/host-resolver.d.ts +49 -0
  245. package/dist/services/host-resolver.d.ts.map +1 -0
  246. package/dist/services/host-resolver.js +176 -0
  247. package/dist/services/host-resolver.js.map +1 -0
  248. package/dist/services/interfaces.d.ts +61 -194
  249. package/dist/services/interfaces.d.ts.map +1 -1
  250. package/dist/services/local-executor.d.ts +31 -0
  251. package/dist/services/local-executor.d.ts.map +1 -0
  252. package/dist/services/local-executor.js +71 -0
  253. package/dist/services/local-executor.js.map +1 -0
  254. package/dist/services/ssh-config-loader.d.ts +35 -0
  255. package/dist/services/ssh-config-loader.d.ts.map +1 -0
  256. package/dist/services/ssh-config-loader.js +218 -0
  257. package/dist/services/ssh-config-loader.js.map +1 -0
  258. package/dist/services/ssh-pool.d.ts +26 -1
  259. package/dist/services/ssh-pool.d.ts.map +1 -1
  260. package/dist/services/ssh-pool.js +166 -25
  261. package/dist/services/ssh-pool.js.map +1 -1
  262. package/dist/services/ssh-service.d.ts +3 -0
  263. package/dist/services/ssh-service.d.ts.map +1 -1
  264. package/dist/services/ssh-service.js +53 -31
  265. package/dist/services/ssh-service.js.map +1 -1
  266. package/dist/services/ssh.d.ts +2 -6
  267. package/dist/services/ssh.d.ts.map +1 -1
  268. package/dist/services/ssh.js +9 -40
  269. package/dist/services/ssh.js.map +1 -1
  270. package/dist/tools/definitions/flux.d.ts +13 -0
  271. package/dist/tools/definitions/flux.d.ts.map +1 -0
  272. package/dist/tools/definitions/flux.js +101 -0
  273. package/dist/tools/definitions/flux.js.map +1 -0
  274. package/dist/tools/definitions/index.d.ts +8 -0
  275. package/dist/tools/definitions/index.d.ts.map +1 -0
  276. package/dist/tools/definitions/index.js +8 -0
  277. package/dist/tools/definitions/index.js.map +1 -0
  278. package/dist/tools/definitions/scout.d.ts +13 -0
  279. package/dist/tools/definitions/scout.d.ts.map +1 -0
  280. package/dist/tools/definitions/scout.js +78 -0
  281. package/dist/tools/definitions/scout.js.map +1 -0
  282. package/dist/tools/flux.d.ts +16 -8
  283. package/dist/tools/flux.d.ts.map +1 -1
  284. package/dist/tools/flux.js +27 -66
  285. package/dist/tools/flux.js.map +1 -1
  286. package/dist/tools/handlers/base-handler.d.ts +172 -0
  287. package/dist/tools/handlers/base-handler.d.ts.map +1 -0
  288. package/dist/tools/handlers/base-handler.js +234 -0
  289. package/dist/tools/handlers/base-handler.js.map +1 -0
  290. package/dist/tools/handlers/compose-handlers.d.ts +108 -0
  291. package/dist/tools/handlers/compose-handlers.d.ts.map +1 -0
  292. package/dist/tools/handlers/compose-handlers.js +293 -0
  293. package/dist/tools/handlers/compose-handlers.js.map +1 -0
  294. package/dist/tools/handlers/compose-utils.d.ts +35 -0
  295. package/dist/tools/handlers/compose-utils.d.ts.map +1 -0
  296. package/dist/tools/handlers/compose-utils.js +76 -0
  297. package/dist/tools/handlers/compose-utils.js.map +1 -0
  298. package/dist/tools/handlers/compose.d.ts +23 -0
  299. package/dist/tools/handlers/compose.d.ts.map +1 -0
  300. package/dist/tools/handlers/compose.js +125 -0
  301. package/dist/tools/handlers/compose.js.map +1 -0
  302. package/dist/tools/handlers/container.d.ts +23 -0
  303. package/dist/tools/handlers/container.d.ts.map +1 -0
  304. package/dist/tools/handlers/container.js +333 -0
  305. package/dist/tools/handlers/container.js.map +1 -0
  306. package/dist/tools/handlers/docker.d.ts +24 -0
  307. package/dist/tools/handlers/docker.d.ts.map +1 -0
  308. package/dist/tools/handlers/docker.js +155 -0
  309. package/dist/tools/handlers/docker.js.map +1 -0
  310. package/dist/tools/handlers/host.d.ts +23 -0
  311. package/dist/tools/handlers/host.d.ts.map +1 -0
  312. package/dist/tools/handlers/host.js +196 -0
  313. package/dist/tools/handlers/host.js.map +1 -0
  314. package/dist/tools/handlers/scout-logs.d.ts +24 -0
  315. package/dist/tools/handlers/scout-logs.d.ts.map +1 -0
  316. package/dist/tools/handlers/scout-logs.js +119 -0
  317. package/dist/tools/handlers/scout-logs.js.map +1 -0
  318. package/dist/tools/handlers/scout-simple.d.ts +23 -0
  319. package/dist/tools/handlers/scout-simple.d.ts.map +1 -0
  320. package/dist/tools/handlers/scout-simple.js +286 -0
  321. package/dist/tools/handlers/scout-simple.js.map +1 -0
  322. package/dist/tools/handlers/scout-zfs.d.ts +23 -0
  323. package/dist/tools/handlers/scout-zfs.d.ts.map +1 -0
  324. package/dist/tools/handlers/scout-zfs.js +82 -0
  325. package/dist/tools/handlers/scout-zfs.js.map +1 -0
  326. package/dist/tools/index.d.ts +32 -2
  327. package/dist/tools/index.d.ts.map +1 -1
  328. package/dist/tools/index.js +41 -35
  329. package/dist/tools/index.js.map +1 -1
  330. package/dist/tools/registry.d.ts +135 -0
  331. package/dist/tools/registry.d.ts.map +1 -0
  332. package/dist/tools/registry.js +151 -0
  333. package/dist/tools/registry.js.map +1 -0
  334. package/dist/tools/scout.d.ts +16 -8
  335. package/dist/tools/scout.d.ts.map +1 -1
  336. package/dist/tools/scout.js +36 -78
  337. package/dist/tools/scout.js.map +1 -1
  338. package/dist/types.d.ts +629 -1
  339. package/dist/types.d.ts.map +1 -1
  340. package/dist/types.js.map +1 -1
  341. package/dist/utils/command-security.d.ts +82 -0
  342. package/dist/utils/command-security.d.ts.map +1 -0
  343. package/dist/utils/command-security.js +122 -0
  344. package/dist/utils/command-security.js.map +1 -0
  345. package/dist/utils/error-sanitization.d.ts +77 -0
  346. package/dist/utils/error-sanitization.d.ts.map +1 -0
  347. package/dist/utils/error-sanitization.js +107 -0
  348. package/dist/utils/error-sanitization.js.map +1 -0
  349. package/dist/utils/errors.d.ts +30 -6
  350. package/dist/utils/errors.d.ts.map +1 -1
  351. package/dist/utils/errors.js +91 -12
  352. package/dist/utils/errors.js.map +1 -1
  353. package/dist/utils/help-handler.d.ts +23 -0
  354. package/dist/utils/help-handler.d.ts.map +1 -0
  355. package/dist/utils/help-handler.js +21 -0
  356. package/dist/utils/help-handler.js.map +1 -0
  357. package/dist/utils/help.d.ts +1 -1
  358. package/dist/utils/help.d.ts.map +1 -1
  359. package/dist/utils/help.js +57 -16
  360. package/dist/utils/help.js.map +1 -1
  361. package/dist/utils/host-utils.d.ts +31 -0
  362. package/dist/utils/host-utils.d.ts.map +1 -0
  363. package/dist/utils/host-utils.js +80 -0
  364. package/dist/utils/host-utils.js.map +1 -0
  365. package/dist/utils/index.d.ts +8 -2
  366. package/dist/utils/index.d.ts.map +1 -1
  367. package/dist/utils/index.js +8 -2
  368. package/dist/utils/index.js.map +1 -1
  369. package/dist/utils/init-detection.d.ts +36 -0
  370. package/dist/utils/init-detection.d.ts.map +1 -0
  371. package/dist/utils/init-detection.js +79 -0
  372. package/dist/utils/init-detection.js.map +1 -0
  373. package/dist/utils/logger.d.ts +11 -0
  374. package/dist/utils/logger.d.ts.map +1 -0
  375. package/dist/utils/logger.js +32 -0
  376. package/dist/utils/logger.js.map +1 -0
  377. package/dist/utils/pagination.d.ts +20 -0
  378. package/dist/utils/pagination.d.ts.map +1 -0
  379. package/dist/utils/pagination.js +29 -0
  380. package/dist/utils/pagination.js.map +1 -0
  381. package/dist/utils/path-security.d.ts +132 -18
  382. package/dist/utils/path-security.d.ts.map +1 -1
  383. package/dist/utils/path-security.js +164 -35
  384. package/dist/utils/path-security.js.map +1 -1
  385. package/dist/utils/sorting.d.ts +33 -0
  386. package/dist/utils/sorting.d.ts.map +1 -0
  387. package/dist/utils/sorting.js +57 -0
  388. package/dist/utils/sorting.js.map +1 -0
  389. package/dist/utils/text-filters.d.ts +13 -0
  390. package/dist/utils/text-filters.d.ts.map +1 -0
  391. package/dist/utils/text-filters.js +18 -0
  392. package/dist/utils/text-filters.js.map +1 -0
  393. package/dist/utils/time.d.ts +11 -0
  394. package/dist/utils/time.d.ts.map +1 -0
  395. package/dist/utils/time.js +13 -0
  396. package/dist/utils/time.js.map +1 -0
  397. package/dist/utils/validation.d.ts +25 -0
  398. package/dist/utils/validation.d.ts.map +1 -0
  399. package/dist/utils/validation.js +56 -0
  400. package/dist/utils/validation.js.map +1 -0
  401. package/package.json +45 -19
  402. package/dist/schemas/discriminator.d.ts +0 -20
  403. package/dist/schemas/discriminator.d.ts.map +0 -1
  404. package/dist/schemas/discriminator.js +0 -25
  405. package/dist/schemas/discriminator.js.map +0 -1
  406. package/dist/schemas/unified.d.ts +0 -674
  407. package/dist/schemas/unified.d.ts.map +0 -1
  408. package/dist/schemas/unified.js +0 -453
  409. package/dist/schemas/unified.js.map +0 -1
  410. package/dist/tools/unified.d.ts +0 -7
  411. package/dist/tools/unified.d.ts.map +0 -1
  412. package/dist/tools/unified.js +0 -827
  413. package/dist/tools/unified.js.map +0 -1
@@ -0,0 +1,271 @@
1
+ // src/services/diagnostics.ts
2
+ /**
3
+ * Diagnostic checks for host health monitoring
4
+ *
5
+ * Provides actionable health checks for Docker hosts:
6
+ * - Resources: CPU/memory/disk thresholds
7
+ * - Containers: Exited/unhealthy container detection
8
+ * - Logs: Recent error pattern scanning
9
+ * - Processes: Zombie/defunct process detection
10
+ * - Docker: Daemon health verification
11
+ * - Network: Connectivity testing
12
+ */
13
+ import { logError } from "../utils/errors.js";
14
+ const RESOURCE_THRESHOLD = 80; // Warn if CPU/memory/disk > 80%
15
+ const HIGH_LATENCY_MS = 1000; // Warn if ping > 1000ms
16
+ /**
17
+ * Check host resources (CPU, memory, disk)
18
+ * Warns if any resource exceeds 80% usage
19
+ */
20
+ export async function checkResources(host, sshService) {
21
+ try {
22
+ const resources = await sshService.getHostResources(host);
23
+ const issues = [];
24
+ const recommendations = [];
25
+ // Check CPU usage
26
+ if (resources.cpu.usagePercent > RESOURCE_THRESHOLD) {
27
+ issues.push(`CPU usage high: ${resources.cpu.usagePercent}%`);
28
+ recommendations.push("Identify CPU-intensive processes with `top` or `htop`");
29
+ }
30
+ // Check memory usage
31
+ if (resources.memory.usagePercent > RESOURCE_THRESHOLD) {
32
+ issues.push(`Memory usage high: ${resources.memory.usagePercent}%`);
33
+ recommendations.push("Check for memory leaks or reduce container memory limits");
34
+ }
35
+ // Check disk usage
36
+ for (const disk of resources.disk) {
37
+ if (disk.usagePercent > RESOURCE_THRESHOLD) {
38
+ issues.push(`Disk usage high on ${disk.mount}: ${disk.usagePercent}%`);
39
+ recommendations.push("Free up disk space or expand storage capacity");
40
+ }
41
+ }
42
+ if (issues.length === 0) {
43
+ return {
44
+ status: "pass",
45
+ message: "Resources within normal thresholds",
46
+ details: `CPU: ${resources.cpu.usagePercent}%, Memory: ${resources.memory.usagePercent}%, Disk: ${resources.disk.map((d) => `${d.mount} ${d.usagePercent}%`).join(", ")}`
47
+ };
48
+ }
49
+ return {
50
+ status: "warn",
51
+ message: issues.join("; "),
52
+ details: `Load: ${resources.loadAverage.join(", ")} | CPU: ${resources.cpu.cores} cores @ ${resources.cpu.usagePercent}% | Memory: ${resources.memory.usedMB}MB / ${resources.memory.totalMB}MB`,
53
+ recommendations: recommendations.join("\n")
54
+ };
55
+ }
56
+ catch (error) {
57
+ logError(error, {
58
+ operation: "checkResources",
59
+ metadata: { host: host.name }
60
+ });
61
+ return {
62
+ status: "fail",
63
+ message: "Failed to check resources",
64
+ details: error instanceof Error ? error.message : "Unknown error",
65
+ recommendations: "Verify SSH connectivity and host availability"
66
+ };
67
+ }
68
+ }
69
+ /**
70
+ * Check container health
71
+ * Finds exited or unhealthy containers
72
+ */
73
+ export async function checkContainers(host, dockerService) {
74
+ try {
75
+ const containers = await dockerService.listContainers([host]);
76
+ const exited = containers.filter((c) => c.state === "exited");
77
+ const unhealthy = containers.filter((c) => c.status?.toLowerCase().includes("unhealthy"));
78
+ const issues = [];
79
+ const recommendations = [];
80
+ if (exited.length > 0) {
81
+ issues.push(`Found ${exited.length} exited containers: ${exited.map((c) => c.name).join(", ")}`);
82
+ recommendations.push("Check container logs with `docker logs <container>`");
83
+ recommendations.push("Restart containers with `docker start <container>`");
84
+ }
85
+ if (unhealthy.length > 0) {
86
+ issues.push(`Found ${unhealthy.length} unhealthy containers: ${unhealthy.map((c) => c.name).join(", ")}`);
87
+ recommendations.push("Review health check configuration in docker-compose.yml");
88
+ recommendations.push("Inspect container health with `docker inspect <container>`");
89
+ }
90
+ if (issues.length === 0) {
91
+ return {
92
+ status: "pass",
93
+ message: "All containers healthy",
94
+ details: `${containers.length} total containers, ${containers.filter((c) => c.state === "running").length} running`
95
+ };
96
+ }
97
+ return {
98
+ status: "warn",
99
+ message: issues.join("; "),
100
+ details: exited.map((c) => `${c.name}: ${c.status}`).join("\n") +
101
+ "\n" +
102
+ unhealthy.map((c) => `${c.name}: ${c.status}`).join("\n"),
103
+ recommendations: recommendations.join("\n")
104
+ };
105
+ }
106
+ catch (error) {
107
+ logError(error, {
108
+ operation: "checkContainers",
109
+ metadata: { host: host.name }
110
+ });
111
+ return {
112
+ status: "fail",
113
+ message: "Failed to check containers",
114
+ details: error instanceof Error ? error.message : "Unknown error",
115
+ recommendations: "Verify Docker daemon is running and accessible"
116
+ };
117
+ }
118
+ }
119
+ /**
120
+ * Check system logs for error patterns
121
+ * Scans journalctl for recent errors/warnings
122
+ */
123
+ export async function checkLogs(host, sshService) {
124
+ try {
125
+ // Get last 100 lines from journalctl (last 1 hour)
126
+ const logs = await sshService.executeSSHCommand(host, "journalctl", [
127
+ "--since",
128
+ "1 hour ago",
129
+ "--no-pager",
130
+ "-n",
131
+ "100"
132
+ ]);
133
+ // Count error patterns (case-insensitive)
134
+ const errorPattern = /error|failed|fatal|critical/gi;
135
+ const warningPattern = /warn|warning/gi;
136
+ const errorMatches = logs.match(errorPattern) || [];
137
+ const warningMatches = logs.match(warningPattern) || [];
138
+ if (errorMatches.length === 0 && warningMatches.length === 0) {
139
+ return {
140
+ status: "pass",
141
+ message: "No critical errors in recent logs",
142
+ details: "Scanned last 100 log entries from past hour"
143
+ };
144
+ }
145
+ return {
146
+ status: "warn",
147
+ message: "Found error patterns in logs",
148
+ details: `${errorMatches.length} error mentions, ${warningMatches.length} warning mentions in last hour`,
149
+ recommendations: "Review application logs with `journalctl -xe` or `docker logs <container>`"
150
+ };
151
+ }
152
+ catch (error) {
153
+ logError(error, {
154
+ operation: "checkLogs",
155
+ metadata: { host: host.name }
156
+ });
157
+ return {
158
+ status: "fail",
159
+ message: "Failed to check logs",
160
+ details: error instanceof Error ? error.message : "Unknown error",
161
+ recommendations: "Verify journalctl is available or check permissions"
162
+ };
163
+ }
164
+ }
165
+ /**
166
+ * Check for zombie or defunct processes
167
+ * Detects processes that failed to clean up properly
168
+ */
169
+ export async function checkProcesses(host, sshService) {
170
+ try {
171
+ // Find zombie/defunct processes
172
+ const output = await sshService.executeSSHCommand(host, "ps", ["aux"]);
173
+ // Parse for defunct/zombie processes - split on newlines
174
+ const lines = output.split("\n").filter((line) => line.trim().length > 0);
175
+ const zombies = lines.filter((line) => line.includes("defunct") ||
176
+ line.includes("zombie") ||
177
+ line.includes("Z+") ||
178
+ line.includes("<defunct>"));
179
+ if (zombies.length === 0) {
180
+ return {
181
+ status: "pass",
182
+ message: "No zombie or defunct processes",
183
+ details: "All processes in healthy state"
184
+ };
185
+ }
186
+ return {
187
+ status: "warn",
188
+ message: `Found ${zombies.length} zombie/defunct processes`,
189
+ details: zombies.slice(0, 10).join("\n"),
190
+ recommendations: "Investigate parent processes with `ps -ef` and consider restarting affected services"
191
+ };
192
+ }
193
+ catch (error) {
194
+ logError(error, {
195
+ operation: "checkProcesses",
196
+ metadata: { host: host.name }
197
+ });
198
+ return {
199
+ status: "fail",
200
+ message: "Failed to check processes",
201
+ details: error instanceof Error ? error.message : "Unknown error",
202
+ recommendations: "Verify SSH access and ps command availability"
203
+ };
204
+ }
205
+ }
206
+ /**
207
+ * Check Docker daemon health
208
+ * Verifies Docker API connectivity and version
209
+ */
210
+ export async function checkDocker(host, dockerService) {
211
+ try {
212
+ const info = await dockerService.getDockerInfo(host);
213
+ return {
214
+ status: "pass",
215
+ message: "Docker daemon healthy",
216
+ details: `Version: ${info.dockerVersion}, API: ${info.apiVersion}, ${info.containersRunning}/${info.containersTotal} containers running`,
217
+ recommendations: undefined
218
+ };
219
+ }
220
+ catch (error) {
221
+ logError(error, {
222
+ operation: "checkDocker",
223
+ metadata: { host: host.name }
224
+ });
225
+ return {
226
+ status: "fail",
227
+ message: "Docker daemon unreachable",
228
+ details: error instanceof Error ? error.message : "Unknown error",
229
+ recommendations: "Check Docker service status with `systemctl status docker`\nRestart Docker with `systemctl restart docker`"
230
+ };
231
+ }
232
+ }
233
+ /**
234
+ * Check network connectivity
235
+ * Tests external connectivity and measures latency
236
+ */
237
+ export async function checkNetwork(host, sshService) {
238
+ try {
239
+ // Ping google.com with 1 packet
240
+ const output = await sshService.executeSSHCommand(host, "ping", ["-c", "1", "google.com"]);
241
+ // Extract latency from ping output
242
+ const timeMatch = output.match(/time=(\d+\.?\d*)\s*ms/);
243
+ const latency = timeMatch ? parseFloat(timeMatch[1]) : 0;
244
+ if (latency > HIGH_LATENCY_MS) {
245
+ return {
246
+ status: "warn",
247
+ message: "Network latency high",
248
+ details: `Ping latency: ${latency.toFixed(1)}ms (threshold: ${HIGH_LATENCY_MS}ms)`,
249
+ recommendations: "Check network configuration and routing\nVerify DNS resolution with `dig google.com`"
250
+ };
251
+ }
252
+ return {
253
+ status: "pass",
254
+ message: "Network connectivity OK",
255
+ details: `Ping latency: ${latency.toFixed(1)}ms`
256
+ };
257
+ }
258
+ catch (error) {
259
+ logError(error, {
260
+ operation: "checkNetwork",
261
+ metadata: { host: host.name }
262
+ });
263
+ return {
264
+ status: "fail",
265
+ message: "Network check failed",
266
+ details: error instanceof Error ? error.message : "Unknown error",
267
+ recommendations: "Verify network connectivity and DNS resolution\nCheck firewall rules with `iptables -L`"
268
+ };
269
+ }
270
+ }
271
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/services/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ import type { ContainerExecResult, ContainerInfo, ContainerProcessList, ContainerStats, DockerRawContainerInfo, DockerRawContainerInspectInfo, HostConfig, LogEntry } from "../../types.js";
2
+ import type { ClientManager } from "./utils/client-manager.js";
3
+ /**
4
+ * Service for Docker container operations.
5
+ * Handles container lifecycle, monitoring, and execution.
6
+ */
7
+ export declare class ContainerService {
8
+ private clientManager;
9
+ constructor(clientManager: ClientManager);
10
+ private matchesContainerIdentifier;
11
+ /**
12
+ * List containers across multiple hosts with filtering and pagination.
13
+ *
14
+ * @param hosts - List of Docker hosts to query
15
+ * @param options - Filtering and pagination options
16
+ * @param options.state - Filter by container state
17
+ * @param options.nameFilter - Filter by container name (partial match)
18
+ * @param options.imageFilter - Filter by image name (partial match)
19
+ * @param options.labelFilter - Filter by label (format: "key=value")
20
+ * @param options.limit - Maximum number of containers to return
21
+ * @param options.offset - Number of containers to skip before returning results
22
+ * @returns Promise resolving to array of container information
23
+ */
24
+ listContainers(hosts: HostConfig[], options?: {
25
+ state?: "all" | "running" | "stopped" | "paused";
26
+ nameFilter?: string;
27
+ imageFilter?: string;
28
+ labelFilter?: string;
29
+ limit?: number;
30
+ offset?: number;
31
+ }): Promise<ContainerInfo[]>;
32
+ /**
33
+ * List containers on a single host (internal helper).
34
+ */
35
+ private listContainersOnHost;
36
+ /**
37
+ * Find which host a container is on.
38
+ * Performs parallel scan across hosts for optimal performance.
39
+ *
40
+ * Note: For cache-optimized lookups, use DockerService.findContainerHost() with
41
+ * ContainerHostMapCache instead. The cache requires client-provider capability
42
+ * and is integrated at the facade level.
43
+ *
44
+ * @param containerId - Container ID, name, or ID prefix
45
+ * @param hosts - List of hosts to search
46
+ * @returns Host and container info if found, null otherwise
47
+ */
48
+ findContainerHost(containerId: string, hosts: HostConfig[]): Promise<{
49
+ host: HostConfig;
50
+ container: DockerRawContainerInfo;
51
+ } | null>;
52
+ /**
53
+ * Perform action on container.
54
+ *
55
+ * @param containerId - Container ID or name
56
+ * @param action - Action to perform
57
+ * @param host - Host configuration
58
+ */
59
+ containerAction(containerId: string, action: "start" | "stop" | "restart" | "pause" | "unpause", host: HostConfig): Promise<void>;
60
+ /**
61
+ * Get container by ID or name.
62
+ */
63
+ private getContainer;
64
+ /**
65
+ * Get container logs.
66
+ *
67
+ * @param containerId - Container ID or name
68
+ * @param host - Host configuration
69
+ * @param options - Log filtering options
70
+ * @returns Promise resolving to array of log entries
71
+ */
72
+ getContainerLogs(containerId: string, host: HostConfig, options?: {
73
+ lines?: number;
74
+ since?: string;
75
+ until?: string;
76
+ stream?: "all" | "stdout" | "stderr";
77
+ }): Promise<LogEntry[]>;
78
+ /**
79
+ * Get container stats.
80
+ *
81
+ * @param containerId - Container ID or name
82
+ * @param host - Host configuration
83
+ * @param containerName - Optional container name (avoids redundant inspect() call)
84
+ * @returns Promise resolving to container resource usage stats
85
+ */
86
+ getContainerStats(containerId: string, host: HostConfig, containerName?: string): Promise<ContainerStats>;
87
+ /**
88
+ * Execute a command inside a container.
89
+ *
90
+ * @param containerId - Container ID or name
91
+ * @param host - Host configuration
92
+ * @param options - Execution options
93
+ * @param options.command - Shell command to execute
94
+ * @param options.user - Optional user to run as
95
+ * @param options.workdir - Optional working directory
96
+ * @param options.timeout - Optional timeout in ms (default 30s, max 5min)
97
+ * @returns Promise resolving to stdout, stderr, and exit code
98
+ * @throws Error if timeout exceeded or buffer limit exceeded
99
+ */
100
+ execContainer(containerId: string, host: HostConfig, options: {
101
+ command: string;
102
+ user?: string;
103
+ workdir?: string;
104
+ timeout?: number;
105
+ }): Promise<ContainerExecResult>;
106
+ /**
107
+ * List running processes inside a container.
108
+ *
109
+ * @param containerId - Container ID or name
110
+ * @param host - Host configuration
111
+ * @returns Promise resolving to process list with titles and data
112
+ */
113
+ getContainerProcesses(containerId: string, host: HostConfig): Promise<ContainerProcessList>;
114
+ /**
115
+ * Inspect a container to get detailed information.
116
+ *
117
+ * @param containerId - Container ID or name
118
+ * @param host - Host configuration
119
+ * @returns Promise resolving to Docker container inspection data
120
+ */
121
+ inspectContainer(containerId: string, host: HostConfig): Promise<DockerRawContainerInspectInfo>;
122
+ }
123
+ //# sourceMappingURL=container-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-service.d.ts","sourceRoot":"","sources":["../../../src/services/docker/container-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,6BAA6B,EAC7B,UAAU,EACV,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAIxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAQ/D;;;GAGG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAEhD,OAAO,CAAC,0BAA0B;IAalC;;;;;;;;;;;;OAYG;IACG,cAAc,CAClB,KAAK,EAAE,UAAU,EAAE,EACnB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;QACjD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACZ,GACL,OAAO,CAAC,aAAa,EAAE,CAAC;IA0B3B;;OAEG;YACW,oBAAoB;IAqElC;;;;;;;;;;;OAWG;IACG,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,UAAU,EAAE,GAClB,OAAO,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,sBAAsB,CAAA;KAAE,GAAG,IAAI,CAAC;IA8C1E;;;;;;OAMG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EAC1D,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,IAAI,CAAC;IAsBhB;;OAEG;YACW,YAAY;IAK1B;;;;;;;OAOG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;KACjC,GACL,OAAO,CAAC,QAAQ,EAAE,CAAC;IA8BtB;;;;;;;OAOG;IACG,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,EAChB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,cAAc,CAAC;IA4D1B;;;;;;;;;;;;OAYG;IACG,aAAa,CACjB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9E,OAAO,CAAC,mBAAmB,CAAC;IAyB/B;;;;;;OAMG;IACG,qBAAqB,CACzB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,oBAAoB,CAAC;IAUhC;;;;;;OAMG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,6BAA6B,CAAC;CAI1C"}