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 @@
1
+ {"version":3,"file":"ssh-config-loader.d.ts","sourceRoot":"","sources":["../../src/services/ssh-config-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA4F9C;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,GAAE,MAA0C,GACrD,OAAO,CAAC,UAAU,EAAE,CAAC,CAuGvB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,UAAU,EAAE,EAC5B,WAAW,EAAE,UAAU,EAAE,GACxB,UAAU,EAAE,CAkBd"}
@@ -0,0 +1,218 @@
1
+ import { existsSync } from "node:fs";
2
+ import { readFile } from "node:fs/promises";
3
+ import { homedir } from "node:os";
4
+ import { join } from "node:path";
5
+ import SSHConfig, { LineType } from "ssh-config";
6
+ /**
7
+ * Expand tilde (~) in paths to user's home directory
8
+ */
9
+ function expandTildePath(path) {
10
+ if (path.startsWith("~/")) {
11
+ return join(homedir(), path.slice(2));
12
+ }
13
+ if (path === "~") {
14
+ return homedir();
15
+ }
16
+ return path;
17
+ }
18
+ /**
19
+ * Check if a host pattern contains wildcards or special characters
20
+ * Skip hosts like *, *.example.com, etc.
21
+ */
22
+ function isPatternHost(hostName) {
23
+ return hostName.includes("*") || hostName.includes("?");
24
+ }
25
+ /**
26
+ * Hosts to skip - these are not Docker hosts
27
+ * (git hosting services, backup servers, etc.)
28
+ */
29
+ const SKIP_HOSTS = new Set([
30
+ "github.com",
31
+ "gitlab.com",
32
+ "bitbucket.org",
33
+ "ssh.github.com",
34
+ "backup.unraid.net",
35
+ ]);
36
+ /**
37
+ * Helper to get string value from SSH config value
38
+ */
39
+ function getStringValue(value) {
40
+ if (typeof value === "string") {
41
+ return value;
42
+ }
43
+ if (Array.isArray(value) && value.length > 0) {
44
+ return value[0].val;
45
+ }
46
+ return "";
47
+ }
48
+ /**
49
+ * Extract defaults from `Host *` block so individual hosts inherit global settings.
50
+ */
51
+ function getGlobalDefaults(config) {
52
+ const defaults = {};
53
+ const globalSection = config.find({ Host: "*" });
54
+ if (!globalSection || !("config" in globalSection)) {
55
+ return defaults;
56
+ }
57
+ const user = globalSection.config.find((line) => {
58
+ return line.type === LineType.DIRECTIVE && line.param === "User";
59
+ });
60
+ if (user?.value) {
61
+ defaults.user = getStringValue(user.value);
62
+ }
63
+ const port = globalSection.config.find((line) => {
64
+ return line.type === LineType.DIRECTIVE && line.param === "Port";
65
+ });
66
+ if (port?.value) {
67
+ const portNum = Number.parseInt(getStringValue(port.value), 10);
68
+ if (!Number.isNaN(portNum)) {
69
+ defaults.port = portNum;
70
+ }
71
+ }
72
+ const identityFile = globalSection.config.find((line) => {
73
+ return line.type === LineType.DIRECTIVE && line.param === "IdentityFile";
74
+ });
75
+ if (identityFile?.value) {
76
+ defaults.identityFile = expandTildePath(getStringValue(identityFile.value));
77
+ }
78
+ return defaults;
79
+ }
80
+ /**
81
+ * Load host configurations from SSH config file
82
+ *
83
+ * @param configPath - Path to SSH config file (defaults to ~/.ssh/config)
84
+ * @returns Promise resolving to array of HostConfig objects parsed from SSH config
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * const hosts = await loadFromSSHConfig("~/.ssh/config");
89
+ * // Returns: [{ name: "server1", host: "192.168.1.100", protocol: "ssh", ... }]
90
+ * ```
91
+ */
92
+ export async function loadFromSSHConfig(configPath = join(homedir(), ".ssh", "config")) {
93
+ const _debug = Boolean(process.env.SYNAPSE_DEBUG);
94
+ // Return empty array if config doesn't exist
95
+ if (!existsSync(configPath)) {
96
+ return [];
97
+ }
98
+ try {
99
+ const configContent = await readFile(configPath, "utf-8");
100
+ const config = SSHConfig.parse(configContent);
101
+ const globalDefaults = getGlobalDefaults(config);
102
+ const hosts = [];
103
+ for (const section of config) {
104
+ // Only process Host sections (not Match or other directives)
105
+ if (section.type !== LineType.DIRECTIVE) {
106
+ continue;
107
+ }
108
+ const directive = section;
109
+ if (directive.param !== "Host") {
110
+ continue;
111
+ }
112
+ const hostValue = getStringValue(directive.value);
113
+ // Skip wildcard hosts, pattern hosts, and known non-Docker hosts
114
+ if (!hostValue ||
115
+ hostValue === "*" ||
116
+ isPatternHost(hostValue) ||
117
+ SKIP_HOSTS.has(hostValue)) {
118
+ continue;
119
+ }
120
+ // Find the config section for this host
121
+ const hostSection = config.find({ Host: hostValue });
122
+ if (!hostSection || !("config" in hostSection)) {
123
+ continue;
124
+ }
125
+ // Extract hostname - required field
126
+ const hostname = hostSection.config.find((line) => {
127
+ return line.type === LineType.DIRECTIVE && line.param === "HostName";
128
+ });
129
+ // Skip hosts without HostName (they're just aliases)
130
+ if (!hostname || !hostname.value) {
131
+ continue;
132
+ }
133
+ // Build HostConfig object
134
+ const hostConfig = {
135
+ name: hostValue,
136
+ host: getStringValue(hostname.value),
137
+ protocol: "ssh",
138
+ };
139
+ // Extract optional User
140
+ const user = hostSection.config.find((line) => {
141
+ return line.type === LineType.DIRECTIVE && line.param === "User";
142
+ });
143
+ if (user?.value) {
144
+ hostConfig.sshUser = getStringValue(user.value);
145
+ }
146
+ else if (globalDefaults.user) {
147
+ hostConfig.sshUser = globalDefaults.user;
148
+ }
149
+ // Extract optional Port
150
+ const port = hostSection.config.find((line) => {
151
+ return line.type === LineType.DIRECTIVE && line.param === "Port";
152
+ });
153
+ if (port?.value) {
154
+ const portNum = Number.parseInt(getStringValue(port.value), 10);
155
+ if (!Number.isNaN(portNum)) {
156
+ hostConfig.port = portNum;
157
+ }
158
+ }
159
+ else if (globalDefaults.port) {
160
+ hostConfig.port = globalDefaults.port;
161
+ }
162
+ // Extract optional IdentityFile
163
+ const identityFile = hostSection.config.find((line) => {
164
+ return line.type === LineType.DIRECTIVE && line.param === "IdentityFile";
165
+ });
166
+ if (identityFile?.value) {
167
+ const rawPath = getStringValue(identityFile.value);
168
+ const expandedPath = expandTildePath(rawPath);
169
+ hostConfig.sshKeyPath = expandedPath;
170
+ }
171
+ else if (globalDefaults.identityFile) {
172
+ hostConfig.sshKeyPath = globalDefaults.identityFile;
173
+ }
174
+ hosts.push(hostConfig);
175
+ }
176
+ return hosts;
177
+ }
178
+ catch (_error) {
179
+ // Log error but don't crash - return empty array on parse errors
180
+ return [];
181
+ }
182
+ }
183
+ /**
184
+ * Merge host configurations with manual config taking precedence
185
+ *
186
+ * Manual hosts completely replace SSH config hosts with the same name.
187
+ * No property merging - manual config is used as-is.
188
+ *
189
+ * @param sshConfigHosts - Hosts loaded from SSH config
190
+ * @param manualHosts - Hosts from manual configuration (config file or env var)
191
+ * @returns Merged array with manual hosts taking precedence
192
+ *
193
+ * @example
194
+ * ```typescript
195
+ * const sshHosts = [{ name: "server1", host: "192.168.1.100", protocol: "ssh" }];
196
+ * const manualHosts = [{ name: "server1", host: "10.0.0.100", protocol: "http" }];
197
+ * const merged = mergeHostConfigs(sshHosts, manualHosts);
198
+ * // Result: [{ name: "server1", host: "10.0.0.100", protocol: "http" }]
199
+ * // Manual config completely replaces SSH config
200
+ * ```
201
+ */
202
+ export function mergeHostConfigs(sshConfigHosts, manualHosts) {
203
+ // Create a map of manual hosts by name for fast lookup
204
+ const manualHostMap = new Map();
205
+ for (const host of manualHosts) {
206
+ manualHostMap.set(host.name, host);
207
+ }
208
+ // Start with all manual hosts
209
+ const merged = [...manualHosts];
210
+ // Add SSH hosts that don't conflict with manual hosts
211
+ for (const sshHost of sshConfigHosts) {
212
+ if (!manualHostMap.has(sshHost.name)) {
213
+ merged.push(sshHost);
214
+ }
215
+ }
216
+ return merged;
217
+ }
218
+ //# sourceMappingURL=ssh-config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssh-config-loader.js","sourceRoot":"","sources":["../../src/services/ssh-config-loader.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { HostConfig } from "../types.js";
2
1
  import { NodeSSH } from "node-ssh";
2
+ import type { HostConfig } from "../types.js";
3
3
  /**
4
4
  * SSH connection pool configuration
5
5
  */
@@ -47,14 +47,39 @@ export declare function generatePoolKey(host: HostConfig): string;
47
47
  export declare class SSHConnectionPoolImpl implements SSHConnectionPool {
48
48
  private config;
49
49
  private pool;
50
+ private waitQueues;
50
51
  private stats;
51
52
  private healthCheckTimer?;
53
+ private isShuttingDown;
52
54
  constructor(config?: Partial<SSHPoolConfig>);
53
55
  getStats(): PoolStats;
56
+ getHealth(): {
57
+ healthy: boolean;
58
+ };
54
59
  private startHealthChecks;
60
+ private scheduleNextHealthCheck;
61
+ /**
62
+ * Perform health checks on idle connections with staggered timing.
63
+ * Instead of firing all checks simultaneously (causing burst SSH traffic),
64
+ * checks are spread across the health check interval window with a small
65
+ * delay between each to reduce network pressure.
66
+ */
55
67
  private performHealthChecks;
56
68
  private checkConnectionHealth;
57
69
  getConnection(host: HostConfig): Promise<NodeSSH>;
70
+ private keyCache;
71
+ private static readonly KEY_CACHE_TTL_MS;
72
+ /**
73
+ * Get private key content with secure caching
74
+ * PERF-C7: Cache key content to eliminate 5-20ms sync I/O per connection
75
+ * SECURITY (CWE-316): Uses Buffer with TTL for defense-in-depth
76
+ */
77
+ private getPrivateKey;
78
+ /**
79
+ * Securely clear all cached SSH private keys by zeroing buffer memory
80
+ * SECURITY (CWE-316): Prevents keys from persisting in memory after cleanup
81
+ */
82
+ private clearKeyCache;
58
83
  private createConnection;
59
84
  private updateConnectionStats;
60
85
  releaseConnection(host: HostConfig, connection: NodeSSH): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ssh-pool.d.ts","sourceRoot":"","sources":["../../src/services/ssh-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAMjC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAeD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,IAAI,SAAS,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAGxD;AAED;;GAEG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IAC7D,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,IAAI,CAAoC;IAChD,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,gBAAgB,CAAC,CAAiB;gBAE9B,MAAM,GAAE,OAAO,CAAC,aAAa,CAAM;IAkB/C,QAAQ,IAAI,SAAS;IAIrB,OAAO,CAAC,iBAAiB;YAMX,mBAAmB;YAenB,qBAAqB;IAkC7B,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;YA6CzC,gBAAgB;IA8B9B,OAAO,CAAC,qBAAqB;IAqBvB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB7E,OAAO,CAAC,mBAAmB;YAYb,gBAAgB;IA8BxB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAmChC"}
1
+ {"version":3,"file":"ssh-pool.d.ts","sourceRoot":"","sources":["../../src/services/ssh-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAMjC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAyBD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,IAAI,SAAS,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAGxD;AAED;;GAEG;AACH,qBAAa,qBAAsB,YAAW,iBAAiB;IAC7D,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,IAAI,CAAoC;IAChD,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAE1C,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,GAAE,OAAO,CAAC,aAAa,CAAM;IAmB/C,QAAQ,IAAI,SAAS;IAIrB,SAAS,IAAI;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;IAYjC,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,uBAAuB;IAY/B;;;;;OAKG;YACW,mBAAmB;YAiCnB,qBAAqB;IAkC7B,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IA+DvD,OAAO,CAAC,QAAQ,CAAwD;IAExE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAEzD;;;;OAIG;YACW,aAAa;IAoB3B;;;OAGG;IACH,OAAO,CAAC,aAAa;YAOP,gBAAgB;IAgE9B,OAAO,CAAC,qBAAqB;IAqBvB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC7E,OAAO,CAAC,mBAAmB;YAiBb,gBAAgB;IA8BxB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BhD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CA0ChC"}
@@ -1,4 +1,5 @@
1
1
  import { NodeSSH } from "node-ssh";
2
+ import { sanitizeErrorMessage } from "../utils/error-sanitization.js";
2
3
  import { HostOperationError, logError } from "../utils/errors.js";
3
4
  /**
4
5
  * Default pool configuration
@@ -8,7 +9,7 @@ export const DEFAULT_POOL_CONFIG = {
8
9
  idleTimeoutMs: 60000,
9
10
  connectionTimeoutMs: 5000,
10
11
  enableHealthChecks: true,
11
- healthCheckIntervalMs: 30000
12
+ healthCheckIntervalMs: 30000,
12
13
  };
13
14
  /**
14
15
  * Generate unique pool key for host
@@ -24,11 +25,15 @@ export function generatePoolKey(host) {
24
25
  export class SSHConnectionPoolImpl {
25
26
  config;
26
27
  pool;
28
+ waitQueues;
27
29
  stats;
28
30
  healthCheckTimer;
31
+ // SECURITY (CWE-404): Flag to prevent in-flight health checks from accessing disposed connections
32
+ isShuttingDown = false;
29
33
  constructor(config = {}) {
30
34
  this.config = { ...DEFAULT_POOL_CONFIG, ...config };
31
35
  this.pool = new Map();
36
+ this.waitQueues = new Map();
32
37
  this.stats = {
33
38
  poolHits: 0,
34
39
  poolMisses: 0,
@@ -36,7 +41,7 @@ export class SSHConnectionPoolImpl {
36
41
  idleConnections: 0,
37
42
  totalConnections: 0,
38
43
  healthChecksPassed: 0,
39
- healthCheckFailures: 0
44
+ healthCheckFailures: 0,
40
45
  };
41
46
  if (this.config.enableHealthChecks) {
42
47
  this.startHealthChecks();
@@ -45,22 +50,60 @@ export class SSHConnectionPoolImpl {
45
50
  getStats() {
46
51
  return { ...this.stats };
47
52
  }
53
+ getHealth() {
54
+ // Pool is healthy if there are no active connections with failures,
55
+ // or if health checks are passing more than failing
56
+ const hasFailures = this.stats.healthCheckFailures > 0;
57
+ const hasMorePassesThanFailures = this.stats.healthChecksPassed >= this.stats.healthCheckFailures;
58
+ return {
59
+ healthy: !hasFailures || hasMorePassesThanFailures,
60
+ };
61
+ }
48
62
  startHealthChecks() {
49
- this.healthCheckTimer = setInterval(() => {
50
- void this.performHealthChecks();
63
+ this.scheduleNextHealthCheck();
64
+ }
65
+ scheduleNextHealthCheck() {
66
+ this.healthCheckTimer = setTimeout(async () => {
67
+ // SECURITY (CWE-404): Don't run health checks during shutdown
68
+ if (this.isShuttingDown)
69
+ return;
70
+ await this.performHealthChecks();
71
+ // Only reschedule after completion (prevents overlap)
72
+ if (!this.isShuttingDown) {
73
+ this.scheduleNextHealthCheck();
74
+ }
51
75
  }, this.config.healthCheckIntervalMs);
52
76
  }
77
+ /**
78
+ * Perform health checks on idle connections with staggered timing.
79
+ * Instead of firing all checks simultaneously (causing burst SSH traffic),
80
+ * checks are spread across the health check interval window with a small
81
+ * delay between each to reduce network pressure.
82
+ */
53
83
  async performHealthChecks() {
54
- const healthCheckPromises = [];
84
+ const checks = [];
55
85
  for (const [poolKey, connections] of this.pool.entries()) {
56
86
  for (const metadata of connections) {
57
- // Only check idle connections
58
- if (!metadata.isActive) {
59
- healthCheckPromises.push(this.checkConnectionHealth(poolKey, metadata));
87
+ if (!metadata.isActive && !this.isShuttingDown) {
88
+ checks.push({ poolKey, metadata });
60
89
  }
61
90
  }
62
91
  }
63
- await Promise.allSettled(healthCheckPromises);
92
+ if (checks.length === 0)
93
+ return;
94
+ // Stagger checks: spread across 80% of the interval to leave headroom
95
+ // Minimum 100ms between checks to avoid micro-bursts
96
+ const staggerMs = Math.max(100, Math.floor((this.config.healthCheckIntervalMs * 0.8) / checks.length));
97
+ for (let i = 0; i < checks.length; i++) {
98
+ if (this.isShuttingDown)
99
+ break;
100
+ const { poolKey, metadata } = checks[i];
101
+ await this.checkConnectionHealth(poolKey, metadata);
102
+ // Stagger delay between checks (skip delay after last check)
103
+ if (i < checks.length - 1 && !this.isShuttingDown) {
104
+ await new Promise((resolve) => setTimeout(resolve, staggerMs));
105
+ }
106
+ }
64
107
  }
65
108
  async checkConnectionHealth(poolKey, metadata) {
66
109
  try {
@@ -81,8 +124,8 @@ export class SSHConnectionPoolImpl {
81
124
  metadata: {
82
125
  poolKey,
83
126
  failureCount: metadata.healthChecksFailed + 1,
84
- lastUsed: new Date(metadata.lastUsed).toISOString()
85
- }
127
+ lastUsed: new Date(metadata.lastUsed).toISOString(),
128
+ },
86
129
  });
87
130
  metadata.healthChecksFailed++;
88
131
  this.stats.healthCheckFailures++;
@@ -104,7 +147,21 @@ export class SSHConnectionPoolImpl {
104
147
  }
105
148
  // Check if we can create new connection
106
149
  if (connections.length >= this.config.maxConnections) {
107
- throw new Error(`Connection pool exhausted for ${poolKey} (max: ${this.config.maxConnections})`);
150
+ // Queue the request instead of throwing immediately
151
+ return new Promise((resolve, reject) => {
152
+ const timer = setTimeout(() => {
153
+ // Remove from queue on timeout
154
+ const queue = this.waitQueues.get(poolKey) || [];
155
+ const index = queue.findIndex((item) => item.timer === timer);
156
+ if (index !== -1) {
157
+ queue.splice(index, 1);
158
+ }
159
+ reject(new Error(`Connection pool wait timeout for ${poolKey} (waited ${this.config.connectionTimeoutMs}ms)`));
160
+ }, this.config.connectionTimeoutMs);
161
+ const queue = this.waitQueues.get(poolKey) || [];
162
+ queue.push({ resolve, reject, timer });
163
+ this.waitQueues.set(poolKey, queue);
164
+ });
108
165
  }
109
166
  // Create new connection (pool miss)
110
167
  const connection = await this.createConnection(host);
@@ -115,7 +172,7 @@ export class SSHConnectionPoolImpl {
115
172
  created: Date.now(),
116
173
  healthChecksPassed: 0,
117
174
  healthChecksFailed: 0,
118
- isActive: true
175
+ isActive: true,
119
176
  };
120
177
  connections.push(metadata);
121
178
  this.pool.set(poolKey, connections);
@@ -123,27 +180,87 @@ export class SSHConnectionPoolImpl {
123
180
  this.updateConnectionStats();
124
181
  return connection;
125
182
  }
183
+ // SECURITY (CWE-316): Store private keys as Buffers for explicit zeroing on cleanup
184
+ keyCache = new Map();
185
+ // TTL for cached keys: 5 minutes (prevents indefinite memory retention)
186
+ static KEY_CACHE_TTL_MS = 5 * 60 * 1000;
187
+ /**
188
+ * Get private key content with secure caching
189
+ * PERF-C7: Cache key content to eliminate 5-20ms sync I/O per connection
190
+ * SECURITY (CWE-316): Uses Buffer with TTL for defense-in-depth
191
+ */
192
+ async getPrivateKey(keyPath) {
193
+ // Check cache first (with TTL enforcement)
194
+ const cached = this.keyCache.get(keyPath);
195
+ if (cached) {
196
+ const age = Date.now() - cached.cachedAt;
197
+ if (age < SSHConnectionPoolImpl.KEY_CACHE_TTL_MS) {
198
+ return cached.key.toString("utf-8");
199
+ }
200
+ // TTL expired: zero and remove
201
+ cached.key.fill(0);
202
+ this.keyCache.delete(keyPath);
203
+ }
204
+ // Read once and cache as Buffer (async I/O)
205
+ const { promises: fs } = await import("node:fs");
206
+ const keyContent = await fs.readFile(keyPath);
207
+ this.keyCache.set(keyPath, { key: keyContent, cachedAt: Date.now() });
208
+ return keyContent.toString("utf-8");
209
+ }
210
+ /**
211
+ * Securely clear all cached SSH private keys by zeroing buffer memory
212
+ * SECURITY (CWE-316): Prevents keys from persisting in memory after cleanup
213
+ */
214
+ clearKeyCache() {
215
+ for (const entry of this.keyCache.values()) {
216
+ entry.key.fill(0);
217
+ }
218
+ this.keyCache.clear();
219
+ }
126
220
  async createConnection(host) {
127
221
  const ssh = new NodeSSH();
222
+ // SECURITY (S-M3, CWE-250): Validate username FIRST - fail fast before file I/O
223
+ // Require explicit SSH username - no root fallback to prevent unnecessary privileges
224
+ const username = host.sshUser || process.env.USER;
225
+ if (!username) {
226
+ throw new HostOperationError(`No SSH username configured for host ${host.name}. Set sshUser in config or USER env var.`, host.name, "createConnection");
227
+ }
228
+ // SECURITY (CWE-250): Reject root to enforce principle of least privilege
229
+ // Exception: Allow root for systems like Unraid that only support root SSH
230
+ if (username === "root" && !host.allowRoot) {
231
+ throw new HostOperationError(`SSH as root is not allowed for host ${host.name}. Use a non-root user with appropriate sudo permissions, or set allowRoot: true in host config for systems like Unraid.`, host.name, "createConnection");
232
+ }
233
+ // Read private key content if path is provided
234
+ // Using privateKey (content) instead of privateKeyPath is more reliable
235
+ // PERF-C7: Use async cached read instead of sync readFileSync
236
+ let privateKey;
237
+ if (host.sshKeyPath) {
238
+ try {
239
+ privateKey = await this.getPrivateKey(host.sshKeyPath);
240
+ }
241
+ catch (error) {
242
+ // SECURITY (S-H3): Sanitize error message to avoid leaking key path
243
+ const detailedMsg = `Failed to read SSH private key at ${host.sshKeyPath}`;
244
+ const genericMsg = "Failed to read SSH private key";
245
+ throw new HostOperationError(sanitizeErrorMessage(detailedMsg, genericMsg), host.name, "createConnection", error);
246
+ }
247
+ }
248
+ // Use SSH agent if available (matches OpenSSH CLI behavior)
249
+ const agent = process.env.SSH_AUTH_SOCK || undefined;
128
250
  const connectionConfig = {
129
251
  host: host.host,
130
252
  port: host.port || 22,
131
- username: host.sshUser || process.env.USER || "root",
132
- privateKeyPath: host.sshKeyPath,
133
- readyTimeout: this.config.connectionTimeoutMs
253
+ username,
254
+ privateKey,
255
+ agent,
256
+ readyTimeout: this.config.connectionTimeoutMs,
134
257
  };
135
- console.error(`[SSH Pool] Attempting connection to ${host.name} (${connectionConfig.host}:${connectionConfig.port})`);
136
- console.error(`[SSH Pool] - Username: ${connectionConfig.username}`);
137
- console.error(`[SSH Pool] - Private key: ${connectionConfig.privateKeyPath}`);
138
- console.error(`[SSH Pool] - Ready timeout: ${connectionConfig.readyTimeout}ms`);
139
258
  try {
140
259
  await ssh.connect(connectionConfig);
141
- console.error(`[SSH Pool] Successfully connected to ${host.name}`);
142
260
  return ssh;
143
261
  }
144
262
  catch (error) {
145
- console.error(`[SSH Pool] Connection failed to ${host.name}: ${error instanceof Error ? error.message : String(error)}`);
146
- throw error;
263
+ throw new HostOperationError("SSH connection failed", host.name, "createConnection", error);
147
264
  }
148
265
  }
149
266
  updateConnectionStats() {
@@ -173,6 +290,21 @@ export class SSHConnectionPoolImpl {
173
290
  }
174
291
  const metadata = connections.find((c) => c.connection === connection);
175
292
  if (metadata) {
293
+ // Check if there are queued requests waiting for a connection
294
+ const queue = this.waitQueues.get(poolKey);
295
+ if (queue && queue.length > 0) {
296
+ // Give connection directly to next waiting request
297
+ const queueItem = queue.shift();
298
+ if (queueItem) {
299
+ clearTimeout(queueItem.timer);
300
+ metadata.isActive = true;
301
+ metadata.lastUsed = Date.now();
302
+ this.updateConnectionStats();
303
+ queueItem.resolve(connection);
304
+ return;
305
+ }
306
+ }
307
+ // No waiting requests, mark as idle
176
308
  metadata.isActive = false;
177
309
  metadata.lastUsed = Date.now();
178
310
  this.updateConnectionStats();
@@ -181,7 +313,11 @@ export class SSHConnectionPoolImpl {
181
313
  }
182
314
  }
183
315
  scheduleIdleCleanup(poolKey, metadata) {
184
- setTimeout(async () => {
316
+ // Cancel previous timer if exists (prevents timer accumulation)
317
+ if (metadata.idleTimer) {
318
+ clearTimeout(metadata.idleTimer);
319
+ }
320
+ metadata.idleTimer = setTimeout(async () => {
185
321
  const now = Date.now();
186
322
  const idleTime = now - metadata.lastUsed;
187
323
  // Only close if still idle and exceeded timeout
@@ -228,10 +364,15 @@ export class SSHConnectionPoolImpl {
228
364
  this.updateConnectionStats();
229
365
  }
230
366
  async closeAll() {
367
+ // SECURITY (CWE-404): Set shutdown flag before clearing timers to prevent
368
+ // in-flight health checks from accessing disposed connections
369
+ this.isShuttingDown = true;
231
370
  if (this.healthCheckTimer) {
232
- clearInterval(this.healthCheckTimer);
371
+ clearTimeout(this.healthCheckTimer);
233
372
  this.healthCheckTimer = undefined;
234
373
  }
374
+ // SECURITY (CWE-316): Securely zero and clear cached SSH private keys
375
+ this.clearKeyCache();
235
376
  const closePromises = [];
236
377
  for (const connections of this.pool.values()) {
237
378
  for (const metadata of connections) {
@@ -1 +1 @@
1
- {"version":3,"file":"ssh-pool.js","sourceRoot":"","sources":["../../src/services/ssh-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ssh-pool.js","sourceRoot":"","sources":["../../src/services/ssh-pool.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,9 @@ export declare class SSHService implements ISSHService {
31
31
  /**
32
32
  * Get host resource usage via SSH using connection pool
33
33
  *
34
+ * Security (S-H4): Uses hardcoded HOST_RESOURCES_SCRIPT constant for safety.
35
+ * See constant definition for security documentation.
36
+ *
34
37
  * @param host - Host configuration to query
35
38
  * @returns Resource information including CPU, memory, disk, and uptime
36
39
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ssh-service.d.ts","sourceRoot":"","sources":["../../src/services/ssh-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,UAAW,YAAW,WAAW;IAChC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,kBAAkB;IAErD;;;;;;;;;;;;OAYG;IACG,iBAAiB,CACrB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC;IAiElB;;;;;OAKG;IACG,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;CAoFjE"}
1
+ {"version":3,"file":"ssh-service.d.ts","sourceRoot":"","sources":["../../src/services/ssh-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAgC9C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,UAAW,YAAW,WAAW;IAChC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,kBAAkB;IAErD;;;;;;;;;;;;OAYG;IACG,iBAAiB,CACrB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC;IAuElB;;;;;;;;OAQG;IACG,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;CAmEjE"}