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,80 @@
1
+ import type Docker from "dockerode";
2
+ import type { ContainerExecResult, ContainerInfo, ContainerProcessList, ContainerStats, DockerDiskUsage, DockerNetworkInfo, DockerRawContainerInfo, DockerRawContainerInspectInfo, DockerSystemInfo, DockerVolumeInfo, HostConfig, HostStatus, ImageInfo, ListImagesOptions, LogEntry, PruneResult } from "../../types.js";
3
+ import type { ContainerHostMapCache } from "../container-host-map-cache.js";
4
+ import type { IContainerOperations, IDockerClientProvider, IDockerSystemInfo, IImageOperations, IResourceOperations } from "../interfaces.js";
5
+ import type { IDockerClientFactory } from "./utils/client-factory.js";
6
+ /**
7
+ * Docker service facade that delegates operations to specialized services.
8
+ * Composes focused Docker operation interfaces.
9
+ */
10
+ export declare class DockerService implements IContainerOperations, IImageOperations, IResourceOperations, IDockerSystemInfo, IDockerClientProvider {
11
+ private containerService;
12
+ private imageService;
13
+ private systemService;
14
+ private networkService;
15
+ private volumeService;
16
+ private clientManager;
17
+ constructor(clientFactory?: IDockerClientFactory);
18
+ getDockerClient(config: HostConfig): Promise<Docker>;
19
+ clearClients(): void;
20
+ listContainers(hosts: HostConfig[], options?: {
21
+ state?: "all" | "running" | "stopped" | "paused";
22
+ nameFilter?: string;
23
+ imageFilter?: string;
24
+ labelFilter?: string;
25
+ limit?: number;
26
+ offset?: number;
27
+ }): Promise<ContainerInfo[]>;
28
+ findContainerHost(containerId: string, hosts: HostConfig[], cache?: ContainerHostMapCache): Promise<{
29
+ host: HostConfig;
30
+ container: DockerRawContainerInfo;
31
+ } | null>;
32
+ containerAction(containerId: string, action: "start" | "stop" | "restart" | "pause" | "unpause", host: HostConfig): Promise<void>;
33
+ getContainerLogs(containerId: string, host: HostConfig, options?: {
34
+ lines?: number;
35
+ since?: string;
36
+ until?: string;
37
+ stream?: "all" | "stdout" | "stderr";
38
+ }): Promise<LogEntry[]>;
39
+ getContainerStats(containerId: string, host: HostConfig): Promise<ContainerStats>;
40
+ execContainer(containerId: string, host: HostConfig, options: {
41
+ command: string;
42
+ user?: string;
43
+ workdir?: string;
44
+ timeout?: number;
45
+ }): Promise<ContainerExecResult>;
46
+ getContainerProcesses(containerId: string, host: HostConfig): Promise<ContainerProcessList>;
47
+ inspectContainer(containerId: string, host: HostConfig): Promise<DockerRawContainerInspectInfo>;
48
+ listImages(hosts: HostConfig[], options?: ListImagesOptions): Promise<ImageInfo[]>;
49
+ pullImage(imageName: string, host: HostConfig): Promise<{
50
+ status: string;
51
+ }>;
52
+ removeImage(imageId: string, host: HostConfig, options?: {
53
+ force?: boolean;
54
+ }): Promise<{
55
+ status: string;
56
+ }>;
57
+ buildImage(host: HostConfig, options: {
58
+ context: string;
59
+ tag: string;
60
+ dockerfile?: string;
61
+ noCache?: boolean;
62
+ }): Promise<{
63
+ status: string;
64
+ }>;
65
+ recreateContainer(containerId: string, host: HostConfig, options?: {
66
+ pull?: boolean;
67
+ }): Promise<{
68
+ status: string;
69
+ containerId: string;
70
+ }>;
71
+ getHostStatus(hosts: HostConfig[]): Promise<HostStatus[]>;
72
+ getDockerInfo(host: HostConfig): Promise<DockerSystemInfo>;
73
+ getDockerDiskUsage(host: HostConfig): Promise<DockerDiskUsage>;
74
+ pruneDocker(host: HostConfig, target: "containers" | "images" | "volumes" | "networks" | "buildcache" | "all", options?: {
75
+ force?: boolean;
76
+ }): Promise<PruneResult[]>;
77
+ listNetworks(hosts: HostConfig[]): Promise<DockerNetworkInfo[]>;
78
+ listVolumes(hosts: HostConfig[]): Promise<DockerVolumeInfo[]>;
79
+ }
80
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/docker/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ import { ContainerService } from "./container-service.js";
2
+ import { ImageService } from "./image-service.js";
3
+ import { NetworkService } from "./network-service.js";
4
+ import { SystemService } from "./system-service.js";
5
+ import { DefaultDockerClientFactory } from "./utils/client-factory.js";
6
+ import { ClientManager } from "./utils/client-manager.js";
7
+ import { VolumeService } from "./volume-service.js";
8
+ /**
9
+ * Docker service facade that delegates operations to specialized services.
10
+ * Composes focused Docker operation interfaces.
11
+ */
12
+ export class DockerService {
13
+ containerService;
14
+ imageService;
15
+ systemService;
16
+ networkService;
17
+ volumeService;
18
+ clientManager;
19
+ constructor(clientFactory) {
20
+ const factory = clientFactory || new DefaultDockerClientFactory();
21
+ this.clientManager = new ClientManager(factory);
22
+ this.containerService = new ContainerService(this.clientManager);
23
+ this.imageService = new ImageService(this.clientManager);
24
+ this.systemService = new SystemService(this.clientManager);
25
+ this.networkService = new NetworkService(this.clientManager);
26
+ this.volumeService = new VolumeService(this.clientManager);
27
+ }
28
+ // ========== Client Management ==========
29
+ async getDockerClient(config) {
30
+ return this.clientManager.getClient(config);
31
+ }
32
+ clearClients() {
33
+ this.clientManager.clearClients();
34
+ }
35
+ // ========== Container Operations ==========
36
+ async listContainers(hosts, options = {}) {
37
+ return this.containerService.listContainers(hosts, options);
38
+ }
39
+ async findContainerHost(containerId, hosts, cache) {
40
+ // Handle cache at facade level (requires client-provider capability)
41
+ if (cache) {
42
+ return await cache.findContainerHost(containerId, hosts, this);
43
+ }
44
+ // Delegate to service for non-cached lookup
45
+ return this.containerService.findContainerHost(containerId, hosts);
46
+ }
47
+ async containerAction(containerId, action, host) {
48
+ return this.containerService.containerAction(containerId, action, host);
49
+ }
50
+ async getContainerLogs(containerId, host, options = {}) {
51
+ return this.containerService.getContainerLogs(containerId, host, options);
52
+ }
53
+ async getContainerStats(containerId, host) {
54
+ return this.containerService.getContainerStats(containerId, host);
55
+ }
56
+ async execContainer(containerId, host, options) {
57
+ return this.containerService.execContainer(containerId, host, options);
58
+ }
59
+ async getContainerProcesses(containerId, host) {
60
+ return this.containerService.getContainerProcesses(containerId, host);
61
+ }
62
+ async inspectContainer(containerId, host) {
63
+ return this.containerService.inspectContainer(containerId, host);
64
+ }
65
+ // ========== Image Operations ==========
66
+ async listImages(hosts, options = {}) {
67
+ return this.imageService.listImages(hosts, options);
68
+ }
69
+ async pullImage(imageName, host) {
70
+ return this.imageService.pullImage(imageName, host);
71
+ }
72
+ async removeImage(imageId, host, options = {}) {
73
+ return this.imageService.removeImage(imageId, host, options);
74
+ }
75
+ async buildImage(host, options) {
76
+ return this.imageService.buildImage(host, options);
77
+ }
78
+ async recreateContainer(containerId, host, options = {}) {
79
+ return this.imageService.recreateContainer(containerId, host, options);
80
+ }
81
+ // ========== System Operations ==========
82
+ async getHostStatus(hosts) {
83
+ return this.systemService.getHostStatus(hosts);
84
+ }
85
+ async getDockerInfo(host) {
86
+ return this.systemService.getDockerInfo(host);
87
+ }
88
+ async getDockerDiskUsage(host) {
89
+ return this.systemService.getDockerDiskUsage(host);
90
+ }
91
+ async pruneDocker(host, target, options = {}) {
92
+ return this.systemService.pruneDocker(host, target, options);
93
+ }
94
+ // ========== Network Operations ==========
95
+ async listNetworks(hosts) {
96
+ return this.networkService.listNetworks(hosts);
97
+ }
98
+ // ========== Volume Operations ==========
99
+ async listVolumes(hosts) {
100
+ return this.volumeService.listVolumes(hosts);
101
+ }
102
+ }
103
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/docker/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { DockerNetworkInfo, HostConfig } from "../../types.js";
2
+ import type { ClientManager } from "./utils/client-manager.js";
3
+ /**
4
+ * Service for Docker network operations.
5
+ * Handles network listing and management.
6
+ */
7
+ export declare class NetworkService {
8
+ private clientManager;
9
+ constructor(clientManager: ClientManager);
10
+ /**
11
+ * List Docker networks across multiple hosts in parallel.
12
+ *
13
+ * @param hosts - List of Docker hosts to query
14
+ * @returns Promise resolving to array of network information
15
+ */
16
+ listNetworks(hosts: HostConfig[]): Promise<DockerNetworkInfo[]>;
17
+ /**
18
+ * List Docker networks from a single host (internal helper).
19
+ */
20
+ private listNetworksOnHost;
21
+ }
22
+ //# sourceMappingURL=network-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-service.d.ts","sourceRoot":"","sources":["../../../src/services/docker/network-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;GAGG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAEhD;;;;;OAKG;IACG,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAWrE;;OAEG;YACW,kBAAkB;CAgBjC"}
@@ -0,0 +1,43 @@
1
+ import { narrowToDefaultHost } from "../../utils/host-utils.js";
2
+ /**
3
+ * Service for Docker network operations.
4
+ * Handles network listing and management.
5
+ */
6
+ export class NetworkService {
7
+ clientManager;
8
+ constructor(clientManager) {
9
+ this.clientManager = clientManager;
10
+ }
11
+ /**
12
+ * List Docker networks across multiple hosts in parallel.
13
+ *
14
+ * @param hosts - List of Docker hosts to query
15
+ * @returns Promise resolving to array of network information
16
+ */
17
+ async listNetworks(hosts) {
18
+ const targetHosts = narrowToDefaultHost(hosts);
19
+ const results = await Promise.allSettled(targetHosts.map((host) => this.listNetworksOnHost(host)));
20
+ return results
21
+ .filter((r) => r.status === "fulfilled")
22
+ .flatMap((r) => r.value);
23
+ }
24
+ /**
25
+ * List Docker networks from a single host (internal helper).
26
+ */
27
+ async listNetworksOnHost(host) {
28
+ const docker = await this.clientManager.getClient(host);
29
+ const networks = await docker.listNetworks();
30
+ return networks.map((network) => ({
31
+ id: network.Id,
32
+ name: network.Name,
33
+ driver: network.Driver,
34
+ scope: network.Scope,
35
+ created: network.Created,
36
+ internal: network.Internal,
37
+ attachable: network.Attachable,
38
+ ingress: network.Ingress,
39
+ hostName: host.name,
40
+ }));
41
+ }
42
+ }
43
+ //# sourceMappingURL=network-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-service.js","sourceRoot":"","sources":["../../../src/services/docker/network-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE;;;GAGG;AACH,MAAM,OAAO,cAAc;IACL;IAApB,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAEpD;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,KAAmB;QACpC,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CACzD,CAAC;QAEF,OAAO,OAAO;aACX,MAAM,CAAC,CAAC,CAAC,EAAoD,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC;aACzF,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAC,IAAgB;QAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;QAE7C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAChC,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,IAAI,CAAC,IAAI;SACpB,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
@@ -0,0 +1,49 @@
1
+ import type { DockerDiskUsage, DockerSystemInfo, HostConfig, HostStatus, PruneResult } from "../../types.js";
2
+ import type { ClientManager } from "./utils/client-manager.js";
3
+ /**
4
+ * Service for Docker system operations.
5
+ * Handles system info, disk usage, resource pruning, and host status.
6
+ */
7
+ export declare class SystemService {
8
+ private clientManager;
9
+ constructor(clientManager: ClientManager);
10
+ /**
11
+ * Get status overview for multiple hosts in parallel.
12
+ *
13
+ * @param hosts - List of Docker hosts to query
14
+ * @returns Promise resolving to array of host status information
15
+ */
16
+ getHostStatus(hosts: HostConfig[]): Promise<HostStatus[]>;
17
+ /**
18
+ * Get status for a single host (internal helper).
19
+ */
20
+ private getHostStatusSingle;
21
+ /**
22
+ * Get Docker system information for a host.
23
+ *
24
+ * @param host - Host configuration
25
+ * @returns Promise resolving to Docker system information
26
+ */
27
+ getDockerInfo(host: HostConfig): Promise<DockerSystemInfo>;
28
+ /**
29
+ * Get Docker disk usage statistics (system df).
30
+ *
31
+ * @param host - Host configuration
32
+ * @returns Promise resolving to disk usage statistics
33
+ */
34
+ getDockerDiskUsage(host: HostConfig): Promise<DockerDiskUsage>;
35
+ /**
36
+ * Prune Docker resources (cleanup unused items).
37
+ * This is a destructive operation — callers must pass `force: true` to confirm.
38
+ *
39
+ * @param host - Host configuration
40
+ * @param target - Resource type to prune or "all" for everything
41
+ * @param options - Options including force confirmation
42
+ * @returns Promise resolving to array of prune results per resource type
43
+ * @throws Error if force is not true
44
+ */
45
+ pruneDocker(host: HostConfig, target: "containers" | "images" | "volumes" | "networks" | "buildcache" | "all", options?: {
46
+ force?: boolean;
47
+ }): Promise<PruneResult[]>;
48
+ }
49
+ //# sourceMappingURL=system-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-service.d.ts","sourceRoot":"","sources":["../../../src/services/docker/system-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAQ/D;;;GAGG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAEhD;;;;;OAKG;IACG,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAK/D;;OAEG;YACW,mBAAmB;IA4BjC;;;;;OAKG;IACG,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuBhE;;;;;OAKG;IACG,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC;IA+CpE;;;;;;;;;OASG;IACG,WAAW,CACf,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,KAAK,EAC/E,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAChC,OAAO,CAAC,WAAW,EAAE,CAAC;CAwF1B"}
@@ -0,0 +1,215 @@
1
+ import { HostOperationError, logError } from "../../utils/errors.js";
2
+ import { calculateBuildCacheStats, calculateContainerStats, calculateImageStats, calculateVolumeStats, } from "./utils/stats-calculator.js";
3
+ /**
4
+ * Service for Docker system operations.
5
+ * Handles system info, disk usage, resource pruning, and host status.
6
+ */
7
+ export class SystemService {
8
+ clientManager;
9
+ constructor(clientManager) {
10
+ this.clientManager = clientManager;
11
+ }
12
+ /**
13
+ * Get status overview for multiple hosts in parallel.
14
+ *
15
+ * @param hosts - List of Docker hosts to query
16
+ * @returns Promise resolving to array of host status information
17
+ */
18
+ async getHostStatus(hosts) {
19
+ // Query all hosts in parallel - errors are handled in getHostStatusSingle
20
+ return Promise.all(hosts.map((host) => this.getHostStatusSingle(host)));
21
+ }
22
+ /**
23
+ * Get status for a single host (internal helper).
24
+ */
25
+ async getHostStatusSingle(host) {
26
+ try {
27
+ const docker = await this.clientManager.getClient(host);
28
+ const containers = await docker.listContainers({ all: true });
29
+ const running = containers.filter((c) => c.State === "running").length;
30
+ return {
31
+ name: host.name,
32
+ host: host.host,
33
+ connected: true,
34
+ containerCount: containers.length,
35
+ runningCount: running,
36
+ };
37
+ }
38
+ catch (error) {
39
+ logError(new HostOperationError("Failed to get host info", host.name, "getHostInfo", error), {
40
+ metadata: { host: host.host },
41
+ });
42
+ return {
43
+ name: host.name,
44
+ host: host.host,
45
+ connected: false,
46
+ containerCount: 0,
47
+ runningCount: 0,
48
+ error: error instanceof Error ? error.message : "Connection failed",
49
+ };
50
+ }
51
+ }
52
+ /**
53
+ * Get Docker system information for a host.
54
+ *
55
+ * @param host - Host configuration
56
+ * @returns Promise resolving to Docker system information
57
+ */
58
+ async getDockerInfo(host) {
59
+ const docker = await this.clientManager.getClient(host);
60
+ const info = await docker.info();
61
+ const version = await docker.version();
62
+ return {
63
+ dockerVersion: version.Version || "unknown",
64
+ apiVersion: version.ApiVersion || "unknown",
65
+ os: info.OperatingSystem || info.OSType || "unknown",
66
+ arch: info.Architecture || "unknown",
67
+ kernelVersion: info.KernelVersion || "unknown",
68
+ cpus: info.NCPU || 0,
69
+ memoryBytes: info.MemTotal || 0,
70
+ storageDriver: info.Driver || "unknown",
71
+ rootDir: info.DockerRootDir || "/var/lib/docker",
72
+ containersTotal: info.Containers || 0,
73
+ containersRunning: info.ContainersRunning || 0,
74
+ containersPaused: info.ContainersPaused || 0,
75
+ containersStopped: info.ContainersStopped || 0,
76
+ images: info.Images || 0,
77
+ };
78
+ }
79
+ /**
80
+ * Get Docker disk usage statistics (system df).
81
+ *
82
+ * @param host - Host configuration
83
+ * @returns Promise resolving to disk usage statistics
84
+ */
85
+ async getDockerDiskUsage(host) {
86
+ const docker = await this.clientManager.getClient(host);
87
+ const df = await docker.df();
88
+ // Calculate stats using helper functions
89
+ const imageStats = calculateImageStats(df.Images || []);
90
+ const containerStats = calculateContainerStats(df.Containers || []);
91
+ const volumeStats = calculateVolumeStats(df.Volumes || []);
92
+ const buildCacheStats = calculateBuildCacheStats(df.BuildCache || []);
93
+ const totalSize = imageStats.size + containerStats.size + volumeStats.size + buildCacheStats.size;
94
+ const totalReclaimable = imageStats.reclaimable +
95
+ containerStats.size +
96
+ volumeStats.reclaimable +
97
+ buildCacheStats.reclaimable;
98
+ return {
99
+ images: {
100
+ total: imageStats.total,
101
+ active: imageStats.active,
102
+ size: imageStats.size,
103
+ reclaimable: imageStats.reclaimable,
104
+ },
105
+ containers: {
106
+ total: containerStats.total,
107
+ running: containerStats.running,
108
+ size: containerStats.size + containerStats.rootfsSize,
109
+ reclaimable: containerStats.size,
110
+ },
111
+ volumes: {
112
+ total: volumeStats.total,
113
+ active: volumeStats.active,
114
+ size: volumeStats.size,
115
+ reclaimable: volumeStats.reclaimable,
116
+ },
117
+ buildCache: {
118
+ total: buildCacheStats.total,
119
+ size: buildCacheStats.size,
120
+ reclaimable: buildCacheStats.reclaimable,
121
+ },
122
+ totalSize,
123
+ totalReclaimable,
124
+ };
125
+ }
126
+ /**
127
+ * Prune Docker resources (cleanup unused items).
128
+ * This is a destructive operation — callers must pass `force: true` to confirm.
129
+ *
130
+ * @param host - Host configuration
131
+ * @param target - Resource type to prune or "all" for everything
132
+ * @param options - Options including force confirmation
133
+ * @returns Promise resolving to array of prune results per resource type
134
+ * @throws Error if force is not true
135
+ */
136
+ async pruneDocker(host, target, options = {}) {
137
+ if (!options.force) {
138
+ throw new Error("pruneDocker requires { force: true } to confirm destructive operation");
139
+ }
140
+ const docker = await this.clientManager.getClient(host);
141
+ const results = [];
142
+ const targets = target === "all"
143
+ ? ["containers", "images", "volumes", "networks", "buildcache"]
144
+ : [target];
145
+ for (const t of targets) {
146
+ try {
147
+ switch (t) {
148
+ case "containers": {
149
+ const res = await docker.pruneContainers();
150
+ results.push({
151
+ type: "containers",
152
+ spaceReclaimed: res.SpaceReclaimed || 0,
153
+ itemsDeleted: res.ContainersDeleted?.length || 0,
154
+ details: res.ContainersDeleted,
155
+ });
156
+ break;
157
+ }
158
+ case "images": {
159
+ const res = await docker.pruneImages();
160
+ results.push({
161
+ type: "images",
162
+ spaceReclaimed: res.SpaceReclaimed || 0,
163
+ itemsDeleted: res.ImagesDeleted?.length || 0,
164
+ details: res.ImagesDeleted?.map((i) => i.Deleted || i.Untagged || ""),
165
+ });
166
+ break;
167
+ }
168
+ case "volumes": {
169
+ const res = await docker.pruneVolumes();
170
+ results.push({
171
+ type: "volumes",
172
+ spaceReclaimed: res.SpaceReclaimed || 0,
173
+ itemsDeleted: res.VolumesDeleted?.length || 0,
174
+ details: res.VolumesDeleted,
175
+ });
176
+ break;
177
+ }
178
+ case "networks": {
179
+ const res = await docker.pruneNetworks();
180
+ results.push({
181
+ type: "networks",
182
+ spaceReclaimed: 0,
183
+ itemsDeleted: res.NetworksDeleted?.length || 0,
184
+ details: res.NetworksDeleted,
185
+ });
186
+ break;
187
+ }
188
+ case "buildcache": {
189
+ const res = (await docker.pruneBuilder());
190
+ results.push({
191
+ type: "buildcache",
192
+ spaceReclaimed: res.SpaceReclaimed || 0,
193
+ itemsDeleted: res.CachesDeleted?.length || 0,
194
+ details: res.CachesDeleted,
195
+ });
196
+ break;
197
+ }
198
+ }
199
+ }
200
+ catch (error) {
201
+ logError(new HostOperationError("Docker cleanup failed", host.name, "dockerCleanup", error), {
202
+ metadata: { type: t },
203
+ });
204
+ results.push({
205
+ type: t,
206
+ spaceReclaimed: 0,
207
+ itemsDeleted: 0,
208
+ details: [`Error: ${error instanceof Error ? error.message : "Unknown error"}`],
209
+ });
210
+ }
211
+ }
212
+ return results;
213
+ }
214
+ }
215
+ //# sourceMappingURL=system-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-service.js","sourceRoot":"","sources":["../../../src/services/docker/system-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import Docker from "dockerode";
2
+ import type { HostConfig } from "../../../types.js";
3
+ /**
4
+ * Interface for Docker client factory.
5
+ * Allows dependency injection of custom Docker client creation logic.
6
+ */
7
+ export interface IDockerClientFactory {
8
+ createClient(config: HostConfig): Promise<Docker>;
9
+ }
10
+ /**
11
+ * Check if a string looks like a Unix socket path
12
+ */
13
+ export declare function isSocketPath(value: string): boolean;
14
+ /**
15
+ * Default Docker client factory implementation.
16
+ * Creates Docker clients based on host configuration (socket, SSH, HTTP/HTTPS).
17
+ *
18
+ * Architecture Note: Dual SSH Connection Strategy
19
+ * ------------------------------------------------
20
+ * This system uses TWO separate SSH connection mechanisms:
21
+ *
22
+ * 1. Docker API SSH (via dockerode/ssh2):
23
+ * - Used for Docker API calls (listContainers, stats, etc.)
24
+ * - Managed by dockerode library with native SSH tunnel support
25
+ * - Connections created per Docker client instance
26
+ * - Cached at the client level by ClientManager
27
+ *
28
+ * 2. SSH Command Execution (via node-ssh/SSHConnectionPool):
29
+ * - Used for shell commands (compose, find, scan, exec)
30
+ * - Managed by SSHConnectionPool with health checks and pooling
31
+ * - Connections pooled and reused across operations
32
+ *
33
+ * This separation is intentional and provides:
34
+ * - API operations isolated from command execution failures
35
+ * - Different retry/timeout strategies for different operation types
36
+ * - No dependency between Docker API and shell command availability
37
+ *
38
+ * Future optimization: Consider SSH multiplexing (ControlMaster) at the OS level
39
+ * to share TCP connections between both mechanisms.
40
+ */
41
+ export declare class DefaultDockerClientFactory implements IDockerClientFactory {
42
+ private keyCache;
43
+ /**
44
+ * Get private key content with caching.
45
+ * Caching eliminates redundant file I/O for repeated client creation.
46
+ * Matches SSHConnectionPool pattern for consistency.
47
+ */
48
+ private getPrivateKey;
49
+ /**
50
+ * Clear cached SSH private keys.
51
+ * Call during shutdown to release sensitive key material from memory.
52
+ */
53
+ clearKeyCache(): void;
54
+ createClient(config: HostConfig): Promise<Docker>;
55
+ }
56
+ //# sourceMappingURL=client-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-factory.d.ts","sourceRoot":"","sources":["../../../../src/services/docker/utils/client-factory.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAwBpD;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,0BAA2B,YAAW,oBAAoB;IACrE,OAAO,CAAC,QAAQ,CAA6B;IAE7C;;;;OAIG;IACH,OAAO,CAAC,aAAa;IASrB;;;OAGG;IACH,aAAa,IAAI,IAAI;IAIf,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;CAwExD"}