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
@@ -1,4 +1,34 @@
1
1
  import { SSHCommandError } from "../utils/errors.js";
2
+ import { escapeShellArg } from "../utils/path-security.js";
3
+ /**
4
+ * Hardcoded shell script for collecting host resource information.
5
+ *
6
+ * Security (S-H4): This multi-command script is SAFE because it is fully hardcoded
7
+ * with no user input. The script pattern (joining with semicolons) is only safe
8
+ * for hardcoded commands.
9
+ *
10
+ * WARNING: Do NOT copy this pattern for user-influenced commands. User input
11
+ * must be validated and escaped per command using escapeShellArg().
12
+ *
13
+ * @see https://cwe.mitre.org/data/definitions/78.html
14
+ */
15
+ const HOST_RESOURCES_SCRIPT = `
16
+ hostname
17
+ echo "---"
18
+ uptime -p 2>/dev/null || uptime | sed 's/.*up/up/'
19
+ echo "---"
20
+ cat /proc/loadavg | awk '{print $1,$2,$3}'
21
+ echo "---"
22
+ nproc
23
+ echo "---"
24
+ top -bn1 | grep "Cpu(s)" | awk '{print 100-$8}' 2>/dev/null || echo "0"
25
+ echo "---"
26
+ free -m | awk '/^Mem:/ {print $2,$3,$4}'
27
+ echo "---"
28
+ df -BG --output=source,target,size,used,avail,pcent 2>/dev/null | grep -E '^/dev' || df -h | grep -E '^/dev'
29
+ `
30
+ .trim()
31
+ .replace(/\n/g, "; ");
2
32
  /**
3
33
  * SSH service implementation using connection pool for command execution.
4
34
  * Provides secure command execution and resource monitoring via SSH connections.
@@ -25,12 +55,13 @@ export class SSHService {
25
55
  const timeoutMs = options.timeoutMs || 30000;
26
56
  // Get connection from pool
27
57
  const connection = await this.pool.getConnection(host);
28
- // Build full command
29
- const fullCommand = args.length > 0 ? `${command} ${args.join(" ")}` : command;
58
+ // Build full command with escaped arguments to prevent shell injection
59
+ const fullCommand = args.length > 0 ? `${command} ${args.map((a) => escapeShellArg(a)).join(" ")}` : command;
60
+ let timeoutId = null;
30
61
  try {
31
62
  // Execute with timeout
32
63
  const timeoutPromise = new Promise((_, reject) => {
33
- setTimeout(() => {
64
+ timeoutId = setTimeout(() => {
34
65
  reject(new Error(`SSH command timeout after ${timeoutMs}ms: ${command}`));
35
66
  }, timeoutMs);
36
67
  });
@@ -53,6 +84,10 @@ export class SSHService {
53
84
  throw new SSHCommandError("SSH command execution failed", host.name, fullCommand, undefined, undefined, undefined, error);
54
85
  }
55
86
  finally {
87
+ // Clear timeout to prevent resource leak
88
+ if (timeoutId !== null) {
89
+ clearTimeout(timeoutId);
90
+ }
56
91
  // Always release connection back to pool
57
92
  await this.pool.releaseConnection(host, connection);
58
93
  }
@@ -60,29 +95,16 @@ export class SSHService {
60
95
  /**
61
96
  * Get host resource usage via SSH using connection pool
62
97
  *
98
+ * Security (S-H4): Uses hardcoded HOST_RESOURCES_SCRIPT constant for safety.
99
+ * See constant definition for security documentation.
100
+ *
63
101
  * @param host - Host configuration to query
64
102
  * @returns Resource information including CPU, memory, disk, and uptime
65
103
  */
66
104
  async getHostResources(host) {
67
105
  // Run all commands in one SSH session for efficiency
68
- const script = `
69
- hostname
70
- echo "---"
71
- uptime -p 2>/dev/null || uptime | sed 's/.*up/up/'
72
- echo "---"
73
- cat /proc/loadavg | awk '{print $1,$2,$3}'
74
- echo "---"
75
- nproc
76
- echo "---"
77
- top -bn1 | grep "Cpu(s)" | awk '{print 100-$8}' 2>/dev/null || echo "0"
78
- echo "---"
79
- free -m | awk '/^Mem:/ {print $2,$3,$4}'
80
- echo "---"
81
- df -BG --output=source,target,size,used,avail,pcent 2>/dev/null | grep -E '^/dev' || df -h | grep -E '^/dev'
82
- `
83
- .trim()
84
- .replace(/\n/g, "; ");
85
- const output = await this.executeSSHCommand(host, script);
106
+ // SECURITY (S-H4): Script is hardcoded constant - safe for semicolon joining
107
+ const output = await this.executeSSHCommand(host, HOST_RESOURCES_SCRIPT);
86
108
  const sections = output.split("---").map((s) => s.trim());
87
109
  // Parse hostname
88
110
  const hostname = sections[0] || host.name;
@@ -93,11 +115,11 @@ export class SSHService {
93
115
  const loadAverage = [
94
116
  loadParts[0] || 0,
95
117
  loadParts[1] || 0,
96
- loadParts[2] || 0
118
+ loadParts[2] || 0,
97
119
  ];
98
120
  // Parse CPU
99
- const cores = parseInt(sections[3] || "1", 10);
100
- const cpuUsage = parseFloat(sections[4] || "0");
121
+ const cores = Number.parseInt(sections[3] || "1", 10);
122
+ const cpuUsage = Number.parseFloat(sections[4] || "0");
101
123
  // Parse memory
102
124
  const memParts = (sections[5] || "0 0 0").split(" ").map(Number);
103
125
  const totalMB = memParts[0] || 0;
@@ -113,10 +135,10 @@ export class SSHService {
113
135
  return {
114
136
  filesystem: parts[0],
115
137
  mount: parts[1],
116
- totalGB: parseFloat(parts[2].replace("G", "")) || 0,
117
- usedGB: parseFloat(parts[3].replace("G", "")) || 0,
118
- availGB: parseFloat(parts[4].replace("G", "")) || 0,
119
- usagePercent: parseFloat(parts[5].replace("%", "")) || 0
138
+ totalGB: Number.parseFloat(parts[2].replace("G", "")) || 0,
139
+ usedGB: Number.parseFloat(parts[3].replace("G", "")) || 0,
140
+ availGB: Number.parseFloat(parts[4].replace("G", "")) || 0,
141
+ usagePercent: Number.parseFloat(parts[5].replace("%", "")) || 0,
120
142
  };
121
143
  }
122
144
  return null;
@@ -128,15 +150,15 @@ export class SSHService {
128
150
  loadAverage,
129
151
  cpu: {
130
152
  cores,
131
- usagePercent: Math.round(cpuUsage * 10) / 10
153
+ usagePercent: Math.round(cpuUsage * 10) / 10,
132
154
  },
133
155
  memory: {
134
156
  totalMB,
135
157
  usedMB,
136
158
  freeMB,
137
- usagePercent: Math.round(memUsagePercent * 10) / 10
159
+ usagePercent: Math.round(memUsagePercent * 10) / 10,
138
160
  },
139
- disk
161
+ disk,
140
162
  };
141
163
  }
142
164
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ssh-service.js","sourceRoot":"","sources":["../../src/services/ssh-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AASrD;;;GAGG;AACH,MAAM,OAAO,UAAU;IACQ;IAA7B,YAA6B,IAAwB;QAAxB,SAAI,GAAJ,IAAI,CAAoB;IAAG,CAAC;IAEzD;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,iBAAiB,CACrB,IAAgB,EAChB,OAAe,EACf,OAAiB,EAAE,EACnB,UAA6B,EAAE;QAE/B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAE7C,2BAA2B;QAC3B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAEvD,qBAAqB;QACrB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAE/E,IAAI,CAAC;YACH,uBAAuB;YACvB,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBACtD,UAAU,CAAC,GAAG,EAAE;oBACd,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,SAAS,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC5E,CAAC,EAAE,SAAS,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAExD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;YAEjE,kBAAkB;YAClB,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,eAAe,CACvB,4CAA4C,EAC5C,IAAI,CAAC,IAAI,EACT,WAAW,EACX,MAAM,CAAC,IAAI,IAAI,SAAS,EACxB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,MAAM,CACd,CAAC;YACJ,CAAC;YAED,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;oBACrC,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,IAAI,8BAA8B,CAAC;gBACpE,MAAM,IAAI,eAAe,CACvB,WAAW,EACX,IAAI,CAAC,IAAI,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,KAAK,CACN,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,eAAe,CACvB,8BAA8B,EAC9B,IAAI,CAAC,IAAI,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,KAAK,CACN,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,yCAAyC;YACzC,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAAgB;QACrC,qDAAqD;QACrD,MAAM,MAAM,GAAG;;;;;;;;;;;;;;GAchB;aACI,IAAI,EAAE;aACN,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAExB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAE1D,iBAAiB;QACjB,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;QAE1C,eAAe;QACf,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;QAExC,qBAAqB;QACrB,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,WAAW,GAA6B;YAC5C,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;YACjB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;YACjB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,CAAC;QAEF,YAAY;QACZ,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAEhD,eAAe;QACf,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,eAAe,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnE,aAAa;QACb,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,SAAS;aACnB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACtB,OAAO;oBACL,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;oBACpB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;oBACf,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;oBACnD,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;oBAClD,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;oBACnD,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;iBACzD,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAA8B,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAEzD,OAAO;YACL,QAAQ;YACR,MAAM;YACN,WAAW;YACX,GAAG,EAAE;gBACH,KAAK;gBACL,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE;aAC7C;YACD,MAAM,EAAE;gBACN,OAAO;gBACP,MAAM;gBACN,MAAM;gBACN,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,GAAG,EAAE;aACpD;YACD,IAAI;SACL,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"ssh-service.js","sourceRoot":"","sources":["../../src/services/ssh-service.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,7 @@
1
- import { HostConfig } from "../types.js";
2
- /**
3
- * Sanitize string for safe shell usage
4
- * Rejects any potentially dangerous characters
5
- */
6
- export declare function sanitizeForShell(input: string): string;
1
+ import type { HostConfig } from "../types.js";
7
2
  /**
8
3
  * Validate host configuration for SSH
4
+ * SECURITY: Validates host before shell interpolation to prevent command injection
9
5
  */
10
6
  export declare function validateHostForSsh(host: HostConfig): void;
11
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../../src/services/ssh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA4BzC;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMtD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAezD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,GAAG,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,IAAI,EAAE,KAAK,CAAC;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;CACJ"}
1
+ {"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../../src/services/ssh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAazD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,GAAG,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,IAAI,EAAE,KAAK,CAAC;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;CACJ"}
@@ -1,50 +1,19 @@
1
- import { SSHService } from "./ssh-service.js";
2
- import { SSHConnectionPoolImpl } from "./ssh-pool.js";
3
- /**
4
- * Temporary global SSH service for backward compatibility
5
- * @deprecated Use ServiceContainer.getSSHService() instead
6
- */
7
- let globalSSHService = null;
8
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
9
- function getGlobalSSHService() {
10
- if (!globalSSHService) {
11
- const pool = new SSHConnectionPoolImpl({
12
- maxConnections: parseInt(process.env.HOMELAB_SSH_MAX_CONNECTIONS || "5", 10),
13
- idleTimeoutMs: parseInt(process.env.HOMELAB_SSH_IDLE_TIMEOUT_MS || "60000", 10),
14
- connectionTimeoutMs: parseInt(process.env.HOMELAB_SSH_CONNECTION_TIMEOUT_MS || "5000", 10),
15
- enableHealthChecks: process.env.HOMELAB_SSH_ENABLE_HEALTH_CHECKS !== "false",
16
- healthCheckIntervalMs: parseInt(process.env.HOMELAB_SSH_HEALTH_CHECK_INTERVAL_MS || "30000", 10)
17
- });
18
- globalSSHService = new SSHService(pool);
19
- }
20
- return globalSSHService;
21
- }
22
- /**
23
- * Sanitize string for safe shell usage
24
- * Rejects any potentially dangerous characters
25
- */
26
- export function sanitizeForShell(input) {
27
- // Only allow alphanumeric, dots, hyphens, underscores, and forward slashes (for paths)
28
- if (!/^[a-zA-Z0-9._\-/]+$/.test(input)) {
29
- throw new Error(`Invalid characters in input: ${input}`);
30
- }
31
- return input;
32
- }
1
+ import { validateHostname } from "../utils/path-security.js";
2
+ import { validateAlphanumeric } from "../utils/validation.js";
33
3
  /**
34
4
  * Validate host configuration for SSH
5
+ * SECURITY: Validates host before shell interpolation to prevent command injection
35
6
  */
36
7
  export function validateHostForSsh(host) {
37
- // Validate hostname/IP - allow alphanumeric, dots, hyphens, colons (IPv6), and brackets
38
- if (host.host && !/^[a-zA-Z0-9.\-:[\]/]+$/.test(host.host)) {
39
- throw new Error(`Invalid host format: ${host.host}`);
40
- }
8
+ // Validate hostname using centralized validation
9
+ validateHostname(host.host);
41
10
  // Validate SSH user if provided
42
- if (host.sshUser && !/^[a-zA-Z0-9_-]+$/.test(host.sshUser)) {
43
- throw new Error(`Invalid SSH user: ${host.sshUser}`);
11
+ if (host.sshUser) {
12
+ validateAlphanumeric(host.sshUser, "SSH user");
44
13
  }
45
14
  // Validate key path if provided
46
- if (host.sshKeyPath && !/^[a-zA-Z0-9._\-/~]+$/.test(host.sshKeyPath)) {
47
- throw new Error(`Invalid SSH key path: ${host.sshKeyPath}`);
15
+ if (host.sshKeyPath) {
16
+ validateAlphanumeric(host.sshKeyPath, "SSH key path", { allowSlash: true, allowTilde: true });
48
17
  }
49
18
  }
50
19
  //# sourceMappingURL=ssh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../src/services/ssh.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD;;;GAGG;AACH,IAAI,gBAAgB,GAAsB,IAAI,CAAC;AAE/C,6DAA6D;AAC7D,SAAS,mBAAmB;IAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,qBAAqB,CAAC;YACrC,cAAc,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,GAAG,EAAE,EAAE,CAAC;YAC5E,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,OAAO,EAAE,EAAE,CAAC;YAC/E,mBAAmB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,MAAM,EAAE,EAAE,CAAC;YAC1F,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,KAAK,OAAO;YAC5E,qBAAqB,EAAE,QAAQ,CAC7B,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,OAAO,EAC3D,EAAE,CACH;SACF,CAAC,CAAC;QACH,gBAAgB,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,uFAAuF;IACvF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,wFAAwF;IACxF,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,gCAAgC;IAChC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,gCAAgC;IAChC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../src/services/ssh.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,iDAAiD;IACjD,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5B,gCAAgC;IAChC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,gCAAgC;IAChC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAChG,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Flux tool definition
3
+ *
4
+ * Docker infrastructure management tool for containers, compose, images, and hosts.
5
+ */
6
+ import type { ToolDefinition } from "../registry.js";
7
+ /**
8
+ * Flux tool - Docker infrastructure management
9
+ *
10
+ * Supports: container, compose, docker, and host operations
11
+ */
12
+ export declare const FluxTool: ToolDefinition;
13
+ //# sourceMappingURL=flux.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flux.d.ts","sourceRoot":"","sources":["../../../src/tools/definitions/flux.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,cAuFtB,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Flux tool definition
3
+ *
4
+ * Docker infrastructure management tool for containers, compose, images, and hosts.
5
+ */
6
+ import { FluxSchema } from "../../schemas/flux/index.js";
7
+ import { handleFluxTool } from "../flux.js";
8
+ /**
9
+ * Flux tool - Docker infrastructure management
10
+ *
11
+ * Supports: container, compose, docker, and host operations
12
+ */
13
+ export const FluxTool = {
14
+ name: "flux",
15
+ title: "Flux Tool",
16
+ description: `Docker infrastructure management - container, compose, docker, and host operations
17
+
18
+ HOW TO USE:
19
+ {
20
+ "action": "container", // Required: action family
21
+ "subaction": "list", // Required: operation within action
22
+ "host": "hostname", // Optional: target specific host
23
+ "response_format": "markdown", // Optional: markdown (default) or json
24
+ "force": true // Required for destructive operations (⚠️)
25
+ }
26
+
27
+ Examples:
28
+ • List containers: {"action": "container", "subaction": "list"}
29
+ • Stop container: {"action": "container", "subaction": "stop", "container_id": "container-id"}
30
+ • Docker info: {"action": "docker", "subaction": "info", "host": "myhost"}
31
+ • Help: {"action": "help"}
32
+
33
+ FLUX OPERATIONS:
34
+
35
+ Container (14 operations)
36
+ ● exec - Execute command in running container
37
+ ● inspect - Detailed container information
38
+ ● list - List containers across all hosts
39
+ ● logs - Container logs with streaming
40
+ ● pause - Pause container execution
41
+ ● pull - Pull latest image for a container
42
+ ⚠️ recreate - Recreate a container
43
+ ● restart - Restart one or more containers
44
+ ● resume - Resume paused container
45
+ ● search - Search containers across hosts
46
+ ● start - Start stopped containers
47
+ ● stats - Container resource usage statistics
48
+ ● stop - Stop running containers
49
+ ● top - Display running processes in container
50
+
51
+ Compose (10 operations)
52
+ ● build - Build compose project images
53
+ ⚠️ down - Stop compose project
54
+ ● list - List compose projects across all hosts
55
+ ● logs - View compose project logs
56
+ ● pull - Pull compose project images
57
+ ● refresh - Refresh compose project discovery cache
58
+ ⚠️ recreate - Recreate compose containers
59
+ ● restart - Restart compose services
60
+ ● status - Show compose project status
61
+ ● up - Create and start compose services
62
+
63
+ Docker (9 operations)
64
+ ⚠️ build - Build image from Dockerfile
65
+ ● df - Show docker disk usage
66
+ ● images - List images across all hosts
67
+ ● info - Display system-wide information
68
+ ● networks - List networks across all hosts
69
+ ● pull - Pull a Docker image
70
+ ⚠️ prune - Remove unused Docker objects
71
+ ⚠️ rmi - Remove one or more images
72
+ ● volumes - List volumes across all hosts
73
+
74
+ Host (9 operations)
75
+ ✓ doctor - Run diagnostic checks
76
+ ✓ info - Host system information
77
+ ● mounts - List filesystem mounts
78
+ ● network - Network interface details
79
+ ● ports - List and filter host/container port mappings
80
+ ● resources - CPU, memory, and disk usage
81
+ ● services - List systemd services
82
+ ✓ status - Quick host health check
83
+ ● uptime - System uptime and load
84
+
85
+ Help (1 operation)
86
+ ● help - Show available operations
87
+
88
+ Legend:
89
+ ● State-changing operation
90
+ ⚠️ Destructive operation (requires force: true)
91
+ ✓ Diagnostic/health check`,
92
+ inputSchema: FluxSchema,
93
+ annotations: {
94
+ readOnlyHint: false,
95
+ destructiveHint: true, // Can prune containers, remove images, recreate containers
96
+ idempotentHint: false,
97
+ openWorldHint: true,
98
+ },
99
+ handler: handleFluxTool,
100
+ };
101
+ //# sourceMappingURL=flux.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flux.js","sourceRoot":"","sources":["../../../src/tools/definitions/flux.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAmB;IACtC,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,WAAW;IAClB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA2Ea;IAC1B,WAAW,EAAE,UAAU;IACvB,WAAW,EAAE;QACX,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,IAAI,EAAE,2DAA2D;QAClF,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,IAAI;KACpB;IACD,OAAO,EAAE,cAAc;CACxB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Built-in tool definitions
3
+ *
4
+ * Exports all built-in tool definitions for registration with ToolRegistry.
5
+ */
6
+ export { FluxTool } from "./flux.js";
7
+ export { ScoutTool } from "./scout.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Built-in tool definitions
3
+ *
4
+ * Exports all built-in tool definitions for registration with ToolRegistry.
5
+ */
6
+ export { FluxTool } from "./flux.js";
7
+ export { ScoutTool } from "./scout.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/definitions/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Scout tool definition
3
+ *
4
+ * SSH remote operations tool for file, process, and system inspection.
5
+ */
6
+ import type { ToolDefinition } from "../registry.js";
7
+ /**
8
+ * Scout tool - SSH remote operations
9
+ *
10
+ * Supports: file operations, process inspection, system information
11
+ */
12
+ export declare const ScoutTool: ToolDefinition;
13
+ //# sourceMappingURL=scout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scout.d.ts","sourceRoot":"","sources":["../../../src/tools/definitions/scout.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,cAgEvB,CAAC"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Scout tool definition
3
+ *
4
+ * SSH remote operations tool for file, process, and system inspection.
5
+ */
6
+ import { ScoutSchema } from "../../schemas/scout/index.js";
7
+ import { handleScoutTool } from "../scout.js";
8
+ /**
9
+ * Scout tool - SSH remote operations
10
+ *
11
+ * Supports: file operations, process inspection, system information
12
+ */
13
+ export const ScoutTool = {
14
+ name: "scout",
15
+ title: "Scout Tool",
16
+ description: `SSH remote operations - file, process, and system inspection
17
+
18
+ HOW TO USE:
19
+ {
20
+ "action": "peek", // Simple actions
21
+ "host": "hostname", // Required for most operations
22
+ "path": "/path/to/file" // Operation-specific parameters
23
+ }
24
+ {
25
+ "action": "zfs", // ZFS operations
26
+ "subaction": "pools", // Subaction: pools, datasets, snapshots
27
+ "host": "hostname"
28
+ }
29
+ {
30
+ "action": "logs", // Log operations
31
+ "subaction": "journal", // Subaction: syslog, journal, dmesg, auth
32
+ "host": "hostname",
33
+ "lines": 50 // Optional: number of lines
34
+ }
35
+
36
+ Examples:
37
+ • List hosts: {"action": "nodes"}
38
+ • Read file: {"action": "peek", "host": "myhost", "path": "/etc/hostname"}
39
+ • ZFS pools: {"action": "zfs", "subaction": "pools", "host": "myhost"}
40
+ • System logs: {"action": "logs", "subaction": "journal", "host": "myhost"}
41
+
42
+ SCOUT OPERATIONS:
43
+
44
+ Simple Actions (9 operations)
45
+ ● beam - File transfer between local and remote hosts
46
+ ● delta - Compare files or content between locations
47
+ ● df - Disk usage information for a remote host
48
+ ● emit - Multi-host operations
49
+ ● exec - Execute command on a remote host
50
+ ● find - Find files by glob pattern on a remote host
51
+ ● nodes - List all configured SSH hosts
52
+ ● peek - Read file or directory contents on a remote host
53
+ ● ps - List and search processes on a remote host
54
+
55
+ ZFS (3 operations)
56
+ ● pools - List ZFS storage pools
57
+ ● datasets - List ZFS datasets
58
+ ● snapshots - List ZFS snapshots
59
+
60
+ Logs (4 operations)
61
+ ● syslog - Access system log files (/var/log)
62
+ ● journal - Access systemd journal logs
63
+ ● dmesg - Access kernel ring buffer logs
64
+ ● auth - Access authentication logs
65
+
66
+ Legend:
67
+ ● State-changing operation
68
+ ✓ Diagnostic/health check`,
69
+ inputSchema: ScoutSchema,
70
+ annotations: {
71
+ readOnlyHint: false, // Can write files, execute commands
72
+ destructiveHint: true, // exec and emit can run arbitrary commands
73
+ idempotentHint: false,
74
+ openWorldHint: true,
75
+ },
76
+ handler: handleScoutTool,
77
+ };
78
+ //# sourceMappingURL=scout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scout.js","sourceRoot":"","sources":["../../../src/tools/definitions/scout.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAmB;IACvC,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAoDa;IAC1B,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE;QACX,YAAY,EAAE,KAAK,EAAE,oCAAoC;QACzD,eAAe,EAAE,IAAI,EAAE,2CAA2C;QAClE,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,IAAI;KACpB;IACD,OAAO,EAAE,eAAe;CACzB,CAAC"}
@@ -1,14 +1,22 @@
1
- import type { ServiceContainer } from '../services/container.js';
1
+ import type { ServiceContainer } from "../services/container.js";
2
2
  /**
3
- * Flux tool handler - Docker infrastructure management
3
+ * Handle all Flux tool requests - Docker infrastructure management.
4
4
  *
5
- * Handles 4 action categories with 39 total subactions:
6
- * - container: 14 subactions (list, start, stop, restart, pause, resume, logs, stats, inspect, search, pull, recreate, exec, top)
7
- * - compose: 9 subactions (list, status, up, down, restart, logs, build, pull, recreate)
8
- * - docker: 9 subactions (info, df, prune, images, pull, build, rmi, networks, volumes)
9
- * - host: 7 subactions (status, resources, info, uptime, services, network, mounts)
5
+ * Routes incoming requests to specialized handlers based on action type.
6
+ * Validates input against Flux schema before dispatching.
10
7
  *
11
- * Plus 'help' pseudo-action for auto-generated documentation.
8
+ * @param input - Unvalidated user input to process
9
+ * @param container - Service container with dependencies
10
+ * @returns Formatted response string (markdown or JSON)
11
+ * @throws {Error} When validation fails or action is unknown
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const result = await handleFluxTool(
16
+ * { action: 'container', subaction: 'list', state: 'running' },
17
+ * container
18
+ * );
19
+ * ```
12
20
  */
13
21
  export declare function handleFluxTool(input: unknown, container: ServiceContainer): Promise<string>;
14
22
  //# sourceMappingURL=flux.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flux.d.ts","sourceRoot":"","sources":["../../src/tools/flux.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAQjE;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CA6BjB"}
1
+ {"version":3,"file":"flux.d.ts","sourceRoot":"","sources":["../../src/tools/flux.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAOjE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBjG"}